PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9ICAgIEJlbnZlbnV0byAgYWxsYSAgIEcgdSBpIGQgYSAgICBhbGwnRWRpdG9yICAgViBJIE0gICAtICAgIFZlcnNpb25lIDEuNSAgICA9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAgVmltIOggdW4gRWRpdG9yIG1vbHRvIHBvdGVudGUgZWQgaGEgcGFyZWNjaGkgY29tYW5kaSwgdHJvcHBpIHBlcgogICAgIHNwaWVnYXJsaSB0dXR0aSBpbiB1bmEgZ3VpZGEgY29tZSBxdWVzdGEuICBRdWVzdGEgZ3VpZGEgc2VydmUgYQogICAgIGRlc2NyaXZlcmUgcXVlaSBjb21hbmRpIGNoZSB0aSBwZXJtZXR0b25vIGRpIHVzYXJlIGZhY2lsbWVudGUKICAgICBWaW0gY29tZSBFZGl0b3IgZGkgdXNvIGdlbmVyYWxlLgoKICAgICBJbCB0ZW1wbyBuZWNlc3NhcmlvIHBlciBjb21wbGV0YXJlIGxhIGd1aWRhIOggY2lyY2EgMjUtMzAgbWludXRpLAogICAgIGEgc2Vjb25kYSBkaSBxdWFudG8gdGVtcG8gZGVkaWNoaSBhbGxhIHNwZXJpbWVudGF6aW9uZS4KCiAgICAgSSBjb21hbmRpIG5lbGxlIGxlemlvbmkgbW9kaWZpY2FubyBxdWVzdG8gdGVzdG8uIEZhaSB1bmEgY29waWEgZGkgcXVlc3RvCiAgICAgZmlsZSBwZXIgZXNlcmNpdGFydGkgKHNlIGhhaSB1c2F0byAidmltdHV0b3IiLCBzdGFpIGdp4CB1c2FuZG8gdW5hIGNvcGlhKS4KCiAgICAgRScgaW1wb3J0YW50ZSBub24gc2NvcmRhcmUgY2hlIHF1ZXN0YSBndWlkYSB2dW9sZSBpbnNlZ25hcmUgdHJhbWl0ZQogICAgIGwndXNvLiBRdWVzdG8gdnVvbCBkaXJlIGNoZSBkZXZpIGVzZWd1aXJlIGkgY29tYW5kaSBwZXIgaW1wYXJhcmxpCiAgICAgZGF2dmVyby4gU2UgbGVnZ2kgaWwgdGVzdG8gZSBiYXN0YSwgZGltZW50aWNoZXJhaSBwcmVzdG8gaSBjb21hbmRpIQoKICAgICBBZGVzc28sIGFzc2ljdXJhdGkgY2hlIGlsIHRhc3RvIEJMT0NDQS1NQUlVU0NPTE8gbm9uIHNpYSBzY2hpYWNjaWF0bwogICAgIGUgcHJlbWkgaWwgdGFzdG8gICAgaiAgICB0YW50byBkYSBtdW92ZXJlIGlsIGN1cnNvcmUgZmlubyBhIGNoZSBsYQogICAgIExlemlvbmUgMS4xIHJpZW1waWEgY29tcGxldGFtZW50ZSBsbyBzY2hlcm1vLgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkJTGV6aW9uZSAxLjE6ICBNT1ZJTUVOVEkgREVMIENVUlNPUkUKCgogICAqKiBQZXIgbXVvdmVyZSBpbCBjdXJzb3JlLCBwcmVtaSBpIHRhc3RpIGgsaixrLGwgY29tZSBpbmRpY2F0by4gKioKCSAgICAgXgoJICAgICBrCQkgICAgTk9UQTogIElsIHRhc3RvIGgg6CBhIHNpbmlzdHJhIGUgbXVvdmUgYSBzaW5pc3RyYS4KICAgICAgIDwgaAkgbCA+CQkgICBJbCB0YXN0byBsIOggYSBkZXN0cmEgZSBtdW92ZSBhIGRlc3RyYS4KCSAgICAgagkJCSAgIElsIHRhc3RvIGogcmljb3JkYSB1bmEgZnJlY2NpYSBpbiBnafkuCgkgICAgIHYKICAxLiBNdW92aSBpbCBjdXJzb3JlIHN1bGxvIHNjaGVybW8gZmluY2jpIG5vbiB0aSBzZW50aSBhIHR1byBhZ2lvLgoKICAyLiBUaWVuaSBzY2hpYWNjaWF0byBpbCB0YXN0byAiZ2n5IiAoaikgZmluY2jpIG5vbiBzaSByaXBldGUgaWwgbW92aW1lbnRvLgotLS0+IEFkZXNzbyBzYWkgY29tZSBhcnJpdmFyZSBmaW5vIGFsbGEgbGV6aW9uZSBzdWNjZXNzaXZhLgoKICAzLiBVc2FuZG8gaWwgdGFzdG8gImdp+SIgc3Bvc3RhdGkgYWxsYSBMZXppb25lIDEuMi4KCk5PVEE6IFF1YW5kbyBub24gc2VpIHNpY3VybyBkZWwgdGFzdG8gY2hlIGhhaSBwcmVtdXRvLCBwcmVtaSA8RVNDPiBwZXIgYW5kYXJlCiAgICAgIGluIE1vZGFsaXTgIE5vcm1hbGUgW05vcm1hbCBNb2RlXS4gUG9pIHJpLWltbWV0dGkgaWwgY29tYW5kbyBjaGUgdm9sZXZpLgoKTk9UQTogSSB0YXN0aSBjb24gbGUgZnJlY2NlIGZhbm5vIGxvIHN0ZXNzbyBzZXJ2aXppby4gTWEgdXNhbmRvIGhqa2wgcmllc2NpCiAgICAgIGEgbXVvdmVydGkgbW9sdG8gcGn5IHJhcGlkYW1lbnRlLCB1bmEgdm9sdGEgcHJlc2EgbCdhYml0dWRpbmUuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkgICAgIExlemlvbmUgMS4yOiBFTlRSQVJFIEUgVVNDSVJFIERBIFZJTQoKCiAgISEgTk9UQTogUHJpbWEgZGkgZXNlZ3VpcmUgcXVhbnRvIHJpY2hpZXN0bywgbGVnZ2kgbGEgTGV6aW9uZSBwZXIgaW50ZXJvISEKCiAgMS4gUHJlbWkgaWwgdGFzdG8gPEVTQz4gKHBlciBhc3NpY3VyYXJ0aSBkaSBlc3NlcmUgaW4gTW9kYWxpdOAgTm9ybWFsZSkuCgogIDIuIEJhdHRpOgkJCTpxISA8SU5WSU8+LgoKLS0tPiBDb3PsIGVzY2kgZGFsbCdFZGl0b3IgU0VOWkEgU0FMVkFSRSBhbGN1bmEgbW9kaWZpY2EgZmF0dGEuCiAgICAgU2UgdnVvaSB1c2NpcmUgU0FMVkFORE8gbGUgbW9kaWZpY2hlIGJhdHRpOgoJCQkJOndxIDxJTlZJTz4KCiAgMy4gUXVhbmRvIHZlZGkgaWwgUFJPTVBUIGRlbGxhIFNoZWxsLCBiYXR0aSBpbCBjb21hbmRvIGNvbiBjdWkgc2VpIGFycml2YXRvCiAgICAgcXVpLiAgUG90cmViYmUgZXNzZXJlOgl2aW10dXRvciA8SU5WSU8+CiAgICAgTm9ybWFsbWVudGUgIHVzZXJlc3RpOgl2aW0gdHV0b3IgPElOVklPPgoKLS0tPiAndmltJyBpbmRpY2EgbCdFZGl0b3IgdmltLCAndHV0b3InIOggaWwgbm9tZSBkZWwgZmlsZSBjaGUgdHUgdnVvaSBhcHJpcmUuCgogIDQuIFNlIGhhaSBtZW1vcml6emF0byBxdWVzdGkgY29tYW5kaSBlIHRpIHNlbnRpIHByb250bywgZXNlZ3VpIGkgcGFzc2kKICAgICBkYSAxIGEgMyBwZXIgdXNjaXJlIGUgcmllbnRyYXJlIG5lbGwnRWRpdG9yLiAgUG9pIG11b3ZpIGlsIGN1cnNvcmUgaW4gZ2n5CiAgICAgZmlubyBhbGxhIExlemlvbmUgMS4zLgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkgICAgIExlemlvbmUgMS4zOiBFRElUSU5HIERJIFRFU1RJIC0gQ0FOQ0VMTEFaSU9ORQoKCioqIEluIE1vZGFsaXTgIE5vcm1hbGUgcHJlbWkgIHggIHBlciBjYW5jZWxsYXJlIGlsIGNhcmF0dGVyZSBzb3R0byBhbCBjdXJzb3JlICoqCgogIDEuIE11b3ZpIGlsIGN1cnNvcmUgYWxsYSBsaW5lYSBwafkgc290dG8sIGluZGljYXRhIGRhIC0tLT4KCiAgMi4gUGVyIGNvcnJlZ2dlcmUgZXJyb3JpLCBtdW92aSBpbCBjdXJzb3JlIGZpbm8gYSBwb3NpemlvbmFybG8gc29wcmEgaWwKICAgICBjYXJhdHRlcmUgZGEgY2FuY2VsbGFyZS4KCiAgMy4gUHJlbWkgaWwgdGFzdG8JeCAgICAgcGVyIGNhbmNlbGxhcmUgaWwgY2FyYXR0ZXJlIHNiYWdsaWF0by4KCiAgNC4gUmlwZXRpIGkgcGFzc2kgZGEgMiBhIDQgZmluY2jpIGxhIGZyYXNlIOggY29ycmV0dGEuCgotLS0+IExhIG1tdWNjYSBzYWx08vIgZmlubm9vIGFsbGFhIGx1bm5uYS4KCiAgNS4gT3JhIGNoZSBsYSBsaW5lYSDoIGNvcnJldHRhLCB2YWkgYWxsYSBMZXppb25lIDEuNAoKTk9UQTogTWVudHJlIHNlZ3VpIHF1ZXN0YSBndWlkYSwgbm9uIGNlcmNhcmUgZGkgaW1wYXJhcmUgYSBtZW1vcmlhLAoJCQkJIG1hIGltcGFyYSBmYWNlbmRvIHByYXRpY2EuCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICBMZXppb25lIDEuNDogRURJVElORyBESSBURVNUSSAtIElOU0VSSU1FTlRPCgoKICAgICAgICoqIFF1YW5kbyBzZWkgaW4gTW9kYWxpdOAgTm9ybWFsZSBwcmVtaSAgaSAgcGVyIGluc2VyaXJlIHRlc3RvLiAqKgoKICAxLiBNdW92aSBpbCBjdXJzb3JlIGFsbGEgcHJpbWEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+CgogIDIuIFBlciByZW5kZXJlIGxhIHByaW1hIGxpbmVhIHVndWFsZSBhbGxhIHNlY29uZGEsIG11b3ZpIGlsIGN1cnNvcmUgc29wcmEKICAgICBpbCBwcmltbyBjYXJhdHRlcmUgRE9QTyBsYSBwb3NpemlvbmUgaW4gY3VpIGlsIHRlc3RvIHZhIGluc2VyaXRvLgoKICAzLiBQcmVtaSAgaSAgZSBiYXR0aSBsZSBhZ2dpdW50ZSBvcHBvcnR1bmUuCgogIDQuIFF1YW5kbyB1biBlcnJvcmUg6CBjb3JyZXR0bywgcHJlbWkgPEVTQz4gcGVyIHRvcm5hcmUgaW4gTW9kYWxpdOAgTm9ybWFsZS4KICAgICBSaXBldGkgaSBwYXNzaSBkYSAyIGEgNCBmaW5vIGEgY29tcGxldGFyZSBsYSBjb3JyZXppb25lIGRlbGxhIGZyYXNlLgoKLS0tPiBDJ2VyYSBkZWwgdHN0byBtbmNudCBxdWVzdGEgLgotLS0+IEMnZXJhIGRlbCB0ZXN0byBtYW5jYW50ZSBkYSBxdWVzdGEgbGluZWEuCgogIDUuIFF1YW5kbyBzZWkgYSB0dW8gYWdpbyBuZWxsJ2luc2VyaW1lbnRvIGRpIHRlc3RvIHZhaSBhbCBzb21tYXJpbyBzb3R0by4KCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJCSAgICAgICBMZXppb25lIDEgU09NTUFSSU8KCgogIDEuIElsIGN1cnNvcmUgc2kgbXVvdmUgdXNhbmRvIGkgdGFzdGkgY29uIGxlIGZyZWNjZSBvIGkgdGFzdGkgaGprbC4KCSBoIChzaW5pc3RyYSkJaiAoZ2n5KSAgICAgICBrIChzdSkJICAgIGwgKGRlc3RyYSkKCiAgMi4gUGVyIGVzZWd1aXJlIFZpbSAoZGFsIHByb21wdCAlKSBiYXR0aTogIHZpbSBOT01FRklMRSA8SU5WSU8+CgogIDMuIFBlciB1c2NpcmUgZGEgVmltIGJhdHRpOiA8RVNDPiA6cSEgPElOVklPPiBwZXIgdXNjaXJlIHNlbnphIHNhbHZhcmUuCgkJb3BwdXJlIGJhdHRpOiA8RVNDPiA6d3EgPElOVklPPiBwZXIgdXNjaXJlIHNhbHZhbmRvIG1vZGlmaWNoZS4KCiAgNC4gUGVyIGNhbmNlbGxhcmUgaWwgY2FyYXR0ZXJlIHNvdHRvIGFsIGN1cnNvcmUgaW4gTW9kYWxpdOAgTm9ybWFsZSBiYXR0aTogeAoKICA1LiBQZXIgaW5zZXJpcmUgdGVzdG8gc3ViaXRvIHByaW1hIGRlbCBjdXJzb3JlIGluIE1vZGFsaXTgIE5vcm1hbGUgYmF0dGk6CgkgaSAgICAgYmF0dGkgZGVsIHRlc3RvCTxFU0M+CgpOT1RBOiBwcmVtZW5kbyA8RVNDPiByaXRvcm5lcmFpIGluIE1vZGFsaXTgIE5vcm1hbGUgbyBhbm51bGxlcmFpCiAgICAgIHVuIGNvbWFuZG8gZXJyYXRvIGNoZSBwdW9pIGF2ZXIgaW5zZXJpdG8gaW4gcGFydGUuCgpPcmEgY29udGludWEgY29uIGxhIExlemlvbmUgMi4KCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkJTGV6aW9uZSAyLjE6IENPTUFOREkgREkgQ0FOQ0VMTEFaSU9ORQoKCgkgICoqIEJhdHRpICBkdyAgcGVyIGNhbmNlbGxhcmUgZmlubyBhIGZpbmUgcGFyb2xhLiAqKgoKICAxLiBQcmVtaSAgPEVTQz4gIHBlciBhY2NlcnRhcnRpIGRpIGVzc2VyZSBpbiBNb2RhbGl04CBOb3JtYWxlLgoKICAyLiBNdW92aSBpbCBjdXJzb3JlIGZpbm8gYWxsYSBsaW5lYSBxdWkgc290dG8sIGluZGljYXRhIGRhIC0tLT4KCiAgMy4gTXVvdmkgaWwgY3Vyc29yZSBhbGwnaW5pemlvIGRpIHVuYSBwYXJvbGEgY2hlIHZ1b2kgY2FuY2VsbGFyZS4KCiAgNC4gQmF0dGkgICBkdyAgIHBlciBjYW5jZWxsYXJlIGxhIHBhcm9sYS4KCk5PVEE6IExlIGxldHRlcmUgIGR3ICBzYXJhbm5vIHZpc2liaWxpIHN1bGwndWx0aW1hIGxpbmVhIGRlbGxvIHNjaGVybW8gbWVudHJlIGxlCiAgICAgIGJhdHRpLiBTZSBoYWkgYmF0dHV0byBxdWFsY29zYSBkaSBzYmFnbGlhdG8sIHByZW1pICA8RVNDPiAgZSByaWNvbWluY2lhLgoKLS0tPiBDaSBzb25vIGxlIGFsY3VuZSBwYXJvbGUgZ2lvaWEgY2hlIG5vbiBjJ2VudHJhbm8gY2FydGEgaW4gcXVlc3RhIGZyYXNlLgoKICA1LiBSaXBldGkgaSBwYXNzaSAzIGUgNCBmaW5jaOkgbGEgZnJhc2Ug6CBjb3JyZXR0YSwgcG9pIHZhaSBhbGxhIExlemlvbmUgMi4yLgoKCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkgICAgICBMZXppb25lIDIuMjogQUxUUkkgQ09NQU5ESSBESSBDQU5DRUxMQVpJT05FCgoKCSAgICoqIEJhdHRpICBkJAlwZXIgY2FuY2VsbGFyZSBmaW5vIGEgZmluZSBsaW5lYS4gKioKCiAgMS4gUHJlbWkgIDxFU0M+ICBwZXIgYWNjZXJ0YXJ0aSBkaSBlc3NlcmUgaW4gTW9kYWxpdOAgTm9ybWFsZS4KCiAgMi4gTXVvdmkgaWwgY3Vyc29yZSBmaW5vIGFsbGEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+CgogIDMuIE11b3ZpIGlsIGN1cnNvcmUgYWxsYSBmaW5lIGRlbGxhIGxpbmVhIGNvcnJldHRhIChET1BPIGlsIHByaW1vIC4gKS4KCiAgNC4gQmF0dGkgICAgZCQgICAgcGVyIGNhbmNlbGxhcmUgZmlubyBhIGZpbmUgbGluZWEuCgotLS0+IFF1YWxjdW5vIGhhIGJhdHR1dG8gbGEgZmluZSBkaSBxdWVzdGEgbGluZWEgZHVlIHZvbHRlLiBsaW5lYSBkdWUgdm9sdGUuCgoKICA1LiBWYWkgYWxsYSBMZXppb25lIDIuMyBwZXIgY2FwaXJlIGlsIGZ1bnppb25hbWVudG8gZGkgcXVlc3RvIGNvbWFuZG8uCgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICBMZXppb25lIDIuMzogQ09NQU5ESSBFIE9HR0VUVEkKCgogIElsIGZvcm1hdG8gZGVsIGNvbWFuZG8gIGQgIFtkZWxldGVdIGNhbmNlbGxhIOggaWwgc2VndWVudGU6CgoJIFtudW1lcm9dICAgZAlvZ2dldHRvCSAgICBPUFBVUkUgICAgIGQgW251bWVyb10gICBvZ2dldHRvCiAgRG92ZToKICAgIG51bWVybyAtIGluZGljYSBxdWFudGUgdm9sdGUgdmEgZXNlZ3VpdG8gaWwgY29tYW5kbyAoc2Ugb21lc3NvLCB2YWxlIDEpLgogICAgZCAtIOggaWwgY29tYW5kbyBkaSBjYW5jZWxsYXppb25lLgogICAgb2dnZXR0byAtIGluZGljYSBkb3ZlIGlsIGNvbWFuZG8gdmEgYXBwbGljYXRvIChsaXN0YSBxdWkgc290dG8pLgoKICBCcmV2ZSBsaXN0YSBkaSBvZ2dldHRpOgogICAgdyAtIGRhbCBjdXJzb3JlIGFsbGEgZmluZSBkZWxsYSBwYXJvbGEsIGluY2x1c28gbG8gc3BhemlvLgogICAgZSAtIGRhbCBjdXJzb3JlIGFsbGEgZmluZSBkZWxsYSBwYXJvbGEsIEVTQ0xVU08gbG8gc3BhemlvLgogICAgJCAtIGRhbCBjdXJzb3JlIGZpbm8gYSBmaW5lIGxpbmVhLgoKTk9UQTogUGVyIGFtYW50aSBkZWxsJ2F2dmVudHVyYTogcHJlbWVuZG8gc29sbyBpbCB0YXN0byBjaGUgaW5kaWNhIGwnb2dnZXR0bwogICAgICBtZW50cmUgc2lldGUgaW4gTW9kYWxpdOAgTm9ybWFsZSwgc2VuemEgZGFyZSB1biBjb21hbmRvLCBzcG9zdGEKICAgICAgaWwgY3Vyc29yZSBjb21lIHNwZWNpZmljYXRvIG5lbGxhICJsaXN0YSBkaSBvZ2dldHRpIiBxdWkgc29wcmEuCgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCUxlemlvbmUgMi40OiBVTkEgRUNDRVpJT05FIEEgJ0NPTUFORE8tT0dHRVRUTycKCgkgICAgKiogQmF0dGkJIGRkICAgcGVyIGNhbmNlbGxhcmUgdW4naW50ZXJhIGxpbmVhLiAqKgoKICBQZXIgbGEgZnJlcXVlbnphIGNvbiBjdWkgY2FwaXRhIGRpIGNhbmNlbGxhcmUgbGluZWUgaW50ZXJlLCBjaGkKICBoYSBwcm9nZXR0YXRvIFZpIGhhIGRlY2lzbyBjaGUgc2FyZWJiZSBzdGF0byBwafkgc2VtcGxpY2UKICBiYXR0ZXJlIGR1ZSBkIGNvbnNlY3V0aXZlIHBlciBjYW5jZWxsYXJlIHVuYSBsaW5lYS4KCiAgMS4gTXVvdmkgaWwgY3Vyc29yZSBhbGxhIGxpbmVhIDIpIG5lbGxhIGZyYXNlIHF1aSBzb3R0by4KICAyLiBCYXR0aSAgZGQgIHBlciBjYW5jZWxsYXJlIGxhIGxpbmVhLgogIDMuIE9yYSBzcG9zdGF0aSBhbGxhIGxpbmVhIDQpLgogIDQuIEJhdHRpICAgMmRkICAgKHJpY29yZGE6ICBudW1lcm8tY29tYW5kby1vZ2dldHRvKSBwZXIgY2FuY2VsbGFyZSBkdWUgbGluZWUuCgogICAgICAxKSAgTGUgcm9zZSBzb25vIHJvc3NlLAogICAgICAyKSAgTmVsIGZhbmdvIGNpIHNpIGRpdmVydGUsCiAgICAgIDMpICBMZSB2aW9sZSBzb25vIGJsdSwKICAgICAgNCkgIElvIGhvIHVuJ2F1dG9tb2JpbGUsCiAgICAgIDUpICBHbGkgb3JvbG9naSBzZWduYW5vIGlsIHRlbXBvLAogICAgICA2KSAgSWwgbWllbGUg6CBkb2xjZSwKICAgICAgNykgIEUgbG8gc2VpIGFuY2hlIHR1LgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCQkgTGV6aW9uZSAyLjU6IElMIENPTUFORE8gVU5ETyBbQU5OVUxMQV0KCiAgICAqKiBQcmVtaSAgdQkJcGVyIGFubnVsbGFyZSBnbGkgdWx0aW1pIGNvbWFuZGkgZXNlZ3VpdGkuICAqKgogICAgKiogUHJlbWkgIFUJCXBlciBhbm51bGxhcmUgbGUgbW9kaWZpY2hlIGFsbCd1bHRpbWEgbGluZWEuICAgKioKCiAgMS4gTXVvdmkgaWwgY3Vyc29yZSBmaW5vIGFsbGEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+CiAgICAgZSBwb3NpemlvbmF0aSBzdWwgcHJpbW8gZXJyb3JlLgogIDIuIEJhdHRpICB4ICBwZXIgY2FuY2VsbGFyZSBpbCBwcmltbyBjYXJhdHRlcmUgc2JhZ2xpYXRvLgogIDMuIEFkZXNzbyBiYXR0aSAgdSAgcGVyIGFubnVsbGFyZSBsJ3VsdGltbyBjb21hbmRvIGVzZWd1aXRvLgogIDQuIE9yYSBpbnZlY2UsIGNvcnJlZ2dpIHR1dHRpIGdsaSBlcnJvcmkgc3VsbGEgbGluZWEgdXNhbmRvIGlsIGNvbWFuZG8gIHggLgogIDUuIEFkZXNzbyBiYXR0aSB1bmEgVSBNYWl1c2NvbGEgcGVyIHJpcG9ydGFyZSBsYSBsaW5lYSBhbCBzdW8gc3RhdG8gb3JpZ2luYWxlLgogIDYuIEFkZXNzbyBiYXR0aSAgdSAgcGn5IHZvbHRlIHBlciBhbm51bGxhcmUgbGEgIFUgIGUgaSBjb21hbmRpIHByZWNlZGVudGkuCiAgNy4gQWRlc3NvIGJhdHRpIHBp+SB2b2x0ZSBDVFJMLXIgKHRlbmVuZG8gaWwgdGFzdG8gQ1RSTCBzY2hpYWNjaWF0bwogICAgIG1lbnRyZSBiYXR0aSByKSBwZXIgcmlmYXJlIGkgY29tYW5kaSAoYW5udWxsYXJlIGwnYW5udWxsYW1lbnRvKS4KCi0tLT4gQ29ycmVlZ2dpIGdsaSBlcnJvcmkgc3N1IHF1dWVzdGEgbGluZWEgZSByaWltcGlhenphbGkgY29vbiAidW5kbyIuCgogIDguIFF1ZXN0aSBjb21hbmRpIHNvbm8gbW9sdG8gdXRpbGkuIE9yYSBzcG9zdGF0aSBhbCBTb21tYXJpbyBkZWxsYSBMZXppb25lIDIuCgoKCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkJICAgICAgIExlemlvbmUgMiBTT01NQVJJTwoKCiAgMS4gUGVyIGNhbmNlbGxhcmUgZGFsIGN1cnNvcmUgZmlubyBhbGxhIGZpbmUgZGkgdW5hIHBhcm9sYSBiYXR0aTogICAgZHcKCiAgMi4gUGVyIGNhbmNlbGxhcmUgZGFsIGN1cnNvcmUgZmlubyBhbGxhIGZpbmUgZGVsbGEgbGluZWEgICBiYXR0aTogICAgZCQKCiAgMy4gUGVyIGNhbmNlbGxhcmUgdW4naW50ZXJhIGxpbmVhIGJhdHRpOiAgICBkZAoKICA0LiBJbCBmb3JtYXRvIHBlciB1biBjb21hbmRvIGluIE1vZGFsaXTgIE5vcm1hbGUg6DoKCiAgICAgICBbbnVtZXJvXSAgY29tYW5kbyAgb2dnZXR0byAgIE9QUFVSRSAgIGNvbWFuZG8gIFtudW1lcm9dICBvZ2dldHRvCiAgICAgRG92ZToKICAgICAgIG51bWVybyAtIGluZGljYSBxdWFudGUgdm9sdGUgdmEgZXNlZ3VpdG8gaWwgY29tYW5kbyAoc2Ugb21lc3NvLCB2YWxlIDEpLgogICAgICAgY29tYW5kbyAtIOggaWwgY29tYW5kbyBkYSBlc2VndWlyZSwgYWQgZXMuICBkICBwZXIgW2RlbGV0ZV0gY2FuY2VsbGFyZS4KICAgICAgIG9nZ2V0dG8gLSBpbmRpY2EgZG92ZSBpbCBjb21hbmRvIHZhIGFwcGxpY2F0bywgYWQgZXMuICB3IFt3b3JkXSBwYXJvbGEsCgkJJCAoZmlubyBhbGxhIGZpbmUgZGVsbGEgbGluZWEpLCBldGMuCgogIDUuIFBlciBhbm51bGxhcmUgaSBjb21hbmRpIHByZWNlZGVudGksCSAgYmF0dGk6CSAgdSAodSBtaW51c2NvbGEpCiAgICAgUGVyIGFubnVsbGFyZSB0dXR0ZSBsZSBtb2RpZmljaGUgYSB1bmEgbGluZWEgYmF0dGk6ICAgIFUgKFUgTWFpdXNjb2xhKQogICAgIFBlciBhbm51bGxhcmUgbCdhbm51bGxhbWVudG8gW2dsaSAidW5kbyJdCSAgICAgIGJhdHRpOgkgIENUUkwtcgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJCSBMZXppb25lIDMuMTogSUwgQ09NQU5ETyBQVVQgW01FVFRJLCBQT05JXQoKCiAgICoqIEJhdHRpICBwICBwZXIgcG9ycmUgW3B1dF0gbCd1bHRpbWEgY2FuY2VsbGF6aW9uZSBkb3BvIGlsIGN1cnNvcmUuICoqCgogIDEuIE11b3ZpIGlsIGN1cnNvcmUgYWxsYSBwcmltYSBsaW5lYSBmcmEgcXVlbGxlIHF1aSBpbiBiYXNzby4KCiAgMi4gQmF0dGkgIGRkICBwZXIgY2FuY2VsbGFyZSBsYSBsaW5lYSBlIGRlcG9zaXRhcmxhIG5lbCBidWZmZXIgZGkgVmltLgoKICAzLiBNdW92aSBpbCBjdXJzb3JlIGZpbm8gYWxsYSBsaW5lYSBTT1BSQSBxdWVsbGEgZG92ZSBhbmRyZWJiZSBzcG9zdGF0YQogICAgIGxhIGxpbmVhIGNoZSBoYWkgYXBwZW5hIGNhbmNlbGxhdG8uCgogIDQuIE1lbnRyZSBzZWkgaW4gTW9kYWxpdOAgTm9ybWFsZSwgYmF0dGkgIHAgIHBlciByZWluc2VyaXJlIGxhIGxpbmVhLgoKICA1LiBSaXBldGkgaSBwYXNzaSBkYSAyIGEgNCBwZXIgbWV0dGVyZSB0dXR0ZSBsZSBsaW5lZSBuZWwgY29ycmV0dG8gb3JkaW5lLgoKICAgICBkKSAgUmllc2NpIGEgaW1wYXJhcmxhIHR1PwogICAgIGIpICBMZSB2aW9sZSBzb25vIGJsdSwKICAgICBjKSAgTGEgc2FnZ2V6emEgc2kgaW1wYXJhLAogICAgIGEpICBMZSByb3NlIHNvbm8gcm9zc2UsCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICBMZXppb25lIDMuMjogSUwgQ09NQU5ETyBSRVBMQUNFIFtSSU1QSUFaWkFdCgoKICAqKiBCYXR0aSAgciAgZSB1bmEgbGV0dGVyYSBwZXIgcmltcGlhenphcmUgaWwgY2FyYXR0ZXJlIHNvdHRvIGFsIGN1cnNvcmUuICoqCgogIDEuIE11b3ZpIGlsIGN1cnNvcmUgYWxsYSBwcmltYSBsaW5lYSBxdWkgc290dG8sIGluZGljYXRhIGRhIC0tLT4KCiAgMi4gTXVvdmkgaWwgY3Vyc29yZSBmaW5vIGEgcG9zaXppb25hcmxvIHNvcHJhIGlsIHByaW1vIGVycm9yZS4KCiAgMy4gQmF0dGkgICByCWUgcG9pIGlsIGNhcmF0dGVyZSBjaGUgZG92cmViYmUgcmltcGlhenphcmUgbCdlcnJvcmUuCgogIDQuIFJpcGV0aSBpIHBhc3NpIDIgZSAzIGZpbmNo6SBsYSBwcmltYSBsaW5lYSDoIGNvcnJldHRhLgoKLS0tPiAgSW1tYXR0ZW5kbyBxdWV0dGEgbGliZWEsIHF1YWxjdW5vIGhvIHByZWRhdG8gYWxjdW5pIHRvc3RpIHNiYWxsaWF0aSEKLS0tPiAgSW1tZXR0ZW5kbyBxdWVzdGEgbGluZWEsIHF1YWxjdW5vIGhhIHByZW11dG8gYWxjdW5pIHRhc3RpIHNiYWdsaWF0aSEKCiAgNS4gT3JhIHBhc3NhIGFsbGEgTGV6aW9uZSAzLjIuCgpOT1RBOiBSaWNvcmRhdGkgY2hlIGRvdnJlc3RpIGltcGFyYXJlIGNvbiBsYSBwcmF0aWNhLCBub24gc29sbyBsZWdnZW5kby4KCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJTGV6aW9uZSAzLjM6IElMIENPTUFORE8gQ0hBTkdFIFtDQU1CSUFdCgoKICAgICAqKiBQZXIgY2FtYmlhcmUgdW5hIHBhcm9sYSBpbiB0dXR0byBvIGluIHBhcnRlLCBiYXR0aSAgY3cgLiAqKgoKICAxLiBNdW92aSBpbCBjdXJzb3JlIGFsbGEgcHJpbWEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+CgogIDIuIFBvc2l6aW9uYSBpbCBjdXJzb3JlIGFsbGEgdSBpbiBsdWJ3LgoKICAzLiBCYXR0aSAgY3cgIGUgbGEgcGFyb2xhIGNvcnJldHRhIChpbiBxdWVzdG8gY2FzbywgYmF0dGkgIGluZWEgICAgKS4KCiAgNC4gUHJlbWkgPEVTQz4gZSB2YWkgc3VsbCdlcnJvcmUgc2VndWVudGUgKHN1bCBwcmltbyBjYXJhdHRlcmUgZGEgbW9kaWZpY2FyZSkuCgogIDUuIFJpcGV0aSBpIHBhc3NpIDMgZSA0IGZpbmNo6SBsYSBwcmltYSBmcmFzZSDoIHVndWFsZSBhbGxhIHNlY29uZGEuCgotLS0+IFF1ZXN0YSBsdWJ3IGhhIGFsY3VuZSBwcHRmZCBkYSBhc2RlcnQgdXNnZmsgaWwgY29tYW5kbyBDSEFOR0UuCi0tLT4gUXVlc3RhIGxpbmVhIGhhIGFsY3VuZSBwYXJvbGUgZGEgY2FtYmlhcmUgdXNhbmRvIGlsIGNvbWFuZG8gQ0hBTkdFLgoKTm90YSBjaGUgIGN3ICBub24gc29sbyByaW1waWF6emEgbGEgcGFyb2xhLCBtYSB0aSBtZXR0ZSBhbmNoZSBpbiBNb2RhbGl04ApJbnNlcmltZW50byBbSW5zZXJ0IE1vZGVdCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICAgIExlemlvbmUgMy40OiBBTFRSSSBDQU1CSUFNRU5USSBVU0FORE8gYwoKCioqIElsIGNvbWFuZG8gYyBbQ0hBTkdFXSBhZ2lzY2Ugc3VnbGkgc3Rlc3NpIG9nZ2V0dGkgZGVsIGNvbWFuZG8gZCBbREVMRVRFXSAqKgoKICAxLiBJbCBjb21hbmRvIENIQU5HRSBzaSBjb21wb3J0YSBjb21lIERFTEVURS4gIElsIGZvcm1hdG8g6DoKCiAgICAgICBbbnVtZXJvXSAgIGMgICBvZ2dldHRvCSBPUFBVUkUgICAgYwlbbnVtZXJvXSAgIG9nZ2V0dG8KCiAgMi4gR2xpIG9nZ2V0dGkgc29ubyBnbGkgc3Rlc3NpLCBhZCBlcy4gdyAod29yZCwgcGFyb2xhKSwgJCAoZmluZSBsaW5lYSksIGV0Yy4KCiAgMy4gTXVvdmkgaWwgY3Vyc29yZSBhbGxhIHByaW1hIGxpbmVhIHF1aSBzb3R0bywgaW5kaWNhdGEgZGEgLS0tPgoKICA0LiBQb3NpemlvbmEgaWwgY3Vyc29yZSBhbCBwcmltbyBlcnJvcmUuCgogIDUuIEJhdHRpICBjJCAgcGVyIG1vZGlmaWNhcmUgaWwgcmVzdG8gZGVsbGEgbGluZWEgc2Vjb25kbyBpbCBtb2RlbGxvIGRlbGxhCiAgICAgbGluZWEgc3VjY2Vzc2l2YSwgZSBxdWFuZG8gaGFpIGZpbml0byBwcmVtaSA8RVNDPgoKLS0tPiBMYSBmaW5lIGRpIHF1ZXN0YSBsaW5lYSBkZXZlIGVzc2VyZSBhaXV0YXRhIGEgZGl2ZW5pcmUgY29tZSBsYSBzZWd1ZW50ZS4KLS0tPiBMYSBmaW5lIGRpIHF1ZXN0YSBsaW5lYSBkZXZlIGVzc2VyZSBjb3JyZXR0YSB1c2FuZG8gaWwgY29tYW5kbyAgYyQgIC4KCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkJICAgICAgIExlemlvbmUgMyBTT01NQVJJTwoKCiAgMS4gUGVyIHJlaW5zZXJpcmUgdGVzdG8gY2hlIGhhaSBhcHBlbmEgY2FuY2VsbGF0bywgYmF0dGkgICBwICAgLiAgUXVlc3RvCiAgICAgaW5zZXJpc2NlIFtwb25lXSBpbCB0ZXN0byBjYW5jZWxsYXRvIERPUE8gaWwgY3Vyc29yZSAoc2UgZXJhIHN0YXRhIHRvbHRhCiAgICAgdW5hIGxpbmVhIGludGVyYSwgcXVlc3RhIHZlcnLgIG1lc3NhIG5lbGxhIGxpbmVhIFNPVFRPIGlsIGN1cnNvcmUpLgoKICAyLiBQZXIgcmltcGlhenphcmUgaWwgY2FyYXR0ZXJlIHNvdHRvIGlsIGN1cnNvcmUsIGJhdHRpICAgciAgIGUgcG9pIGlsCiAgICAgY2FyYXR0ZXJlIHNvc3RpdHV0aXZvLgoKICAzLiBJbCBjb21hbmRvIENIQU5HRSB0aSBwZXJtZXR0ZSBkaSBjYW1iaWFyZSBsJ29nZ2V0dG8gc3BlY2lmaWNhdG8gZGFsCiAgICAgY3Vyc29yZSBmaW5vIGFsbGEgZmluZSBkZWxsJ29nZ2V0dG8uIEFkIGVzLiBCYXR0aSAgY3cgIHBlciBjYW1iaWFyZSBkYWwKICAgICBjdXJzb3JlIGFsbGEgZmluZSBkZWxsYSBwYXJvbGEsICBjJCAgcGVyIGNhbWJpYXJlIGZpbm8gYSBmaW5lIGxpbmVhLgoKICA0LiBJbCBmb3JtYXRvIGRlbCBjb21hbmRvIENIQU5HRSDoOgoKCSBbbnVtZXJvXSAgIGMJb2dnZXR0bwkgICAgICBPUFBVUkUJYyAgIFtudW1lcm9dICAgb2dnZXR0bwoKT3JhIHZhaSBhbGxhIHByb3NzaW1hIExlemlvbmUuCgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCSAgICAgTGV6aW9uZSA0LjE6IFBPU0laSU9OQU1FTlRFIEUgU0lUVUFaSU9ORSBGSUxFCgoKICAqKiBCYXR0aSBDVFJMLWcgcGVyIHZlZGVyZSBhIGNoZSBwdW50byBzZWkgbmVsIGZpbGUgZSBsYSBzaXR1YXppb25lIGRlbCBmaWxlLgogICAgIEJhdHRpIFtudW1lcm9dIEcgIHBlciByYWdnaXVuZ2VyZSBpbCBudW1lcm8gZGVsbGEgbGluZWEgW251bWVyb10gbmVsIGZpbGUuCiAgICAgQmF0dGkgW251bWVyb10gJSAgcGVyIHBvc2l6aW9uYXJ0aSBhbGxhIHBlcmNlbnR1YWxlIFtudW1lcm9dIG5lbCBmaWxlICoqCgogIE5PVEE6IExlZ2dpIGwnaW50ZXJhIExlemlvbmUgcHJpbWEgZGkgZXNlZ3VpcmUgdW4gcXVhbHVucXVlIGNvbWFuZG8hIQoKICAxLiBUaWVuaSBwcmVtdXRvIGlsIHRhc3RvIENUUkwgZSBiYXR0aSAgZyAgLiAgVW5hIGxpbmVhIGRpIHNpdHVhemlvbmUKICAgICBzYXLgIHZpc2liaWxlIGluIGZvbmRvIGFsbGEgcGFnaW5hIGNvbiBpbCBOT01FIEZJTEUgZSBsYSBsaW5lYQogICAgIGluIGN1aSBzZWkgcG9zaXppb25hdG8uICBSaWNvcmRhdGkgaWwgbnVtZXJvIGRlbGxhIGxpbmVhIHBlciBpbCBQYXNzbyAzLgoKICAyLiBQcmVtaSAgRyAgW0cgTWFpdXNjb2xvXSBwZXIgcG9zaXppb25hcnRpIGFsbGEgZmluZSBkZWwgZmlsZS4KCiAgMy4gQmF0dGkgaWwgbnVtZXJvIGRlbGxhIGxpbmVhIGluIGN1aSB0aSB0cm92YXZpIGUgcG9pICBHICAuICBRdWVzdG8gdGkKICAgICByaXBvcnRlcuAgZmlubyBhbGxhIGxpbmVhIGluIGN1aSB0aSB0cm92YXZpIHF1YW5kbyBhdmV2aSBiYXR0dXRvIENUUkwtZy4KICAgICAoTWVudHJlIGJhdHRpIGkgbnVtZXJpLCBxdWVzdGkgTk9OIHNhcmFubm8gdmlzdWFsaXp6YXRpIHN1bGxvIHNjaGVybW8uKQoKICA0LiBTZSB0aSBzZW50aSBzaWN1cm8gbmVsIGZhcmxvLCBlc2VndWkgaSBwYXNzaSBkYSAxIGEgMy4KCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQlMZXppb25lIDQuMjogSUwgQ09NQU5ETyBTRUFSQ0ggW1JJQ0VSQ0FdCgoKICAgICAqKiBCYXR0aSAgLyAgc2VndWl0byBkYSB1bmEgZnJhc2UgcGVyIHJpY2VyY2FyZSBxdWVsbGEgZnJhc2UuICoqCgogIDEuIGluIE1vZGFsaXTgIE5vcm1hbGUgYmF0dGkgaWwgY2FyYXR0ZXJlICAvICAuIE5vdGEgY2hlIGxhICIvIiBlIGlsIGN1cnNvcmUKICAgICBzb25vIHZpc2liaWxpIGluIGZvbmRvIGRlbGxvIHNjaGVybW8gY29tZSBxdWFuZG8gc2kgdXNhIGlsIGNvbWFuZG8gIDogLgoKICAyLiBBZGVzc28gYmF0dGkgJ2VycnJvb3JlJyA8SU5WSU8+LiBRdWVzdGEg6CBsYSBwYXJvbGEgY2hlIHZ1b2kgcmljZXJjYXJlLgoKICAzLiBQZXIgcmljZXJjYXJlIGFuY29yYSBsYSBzdGVzc2EgZnJhc2UsIGJhdHRpIHNvbHRhbnRvICAgICAgIG4gIC4KICAgICBQZXIgcmljZXJjYXJlIGxhIHN0ZXNzYSBmcmFzZSBpbiBkaXJlemlvbmUgb3Bwb3N0YSwgYmF0dGkgIE4gIC4KCiAgNC4gU2UgdnVvaSByaWNlcmNhcmUgdW5hIGZyYXNlIGluIGRpcmV6aW9uZSBvcHBvc3RhIChpbiBzdSksIHVzYSBpbAogICAgIGNvbWFuZG8gICA/ICAgaW52ZWNlIGNoZSAgIC8gIC4KCi0tLT4gUXVhbmRvIGxhIHJpY2VyY2EgYXJyaXZhIGEgZmluZSBmaWxlLCByaWNvbWluY2lhIGRhbGwnaW5pemlvIGRlbCBmaWxlLgoKICAiZXJycm9vcmUiIG5vbiDoIGlsIG1vZG8gZ2l1c3RvIGRpIGRpZ2l0YXJlIGVycm9yZTsgZXJycm9vcmUg6CB1biBlcnJvcmUuCgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCSAgIExlemlvbmUgNC4zOiBSSUNFUkNBIERJIFBBUkVOVEVTSSBDT1JSSVNQT05ERU5USQoKCgkgKiogQmF0dGkgICUgIHBlciB0cm92YXJlIHVuYSAgKSxdLCBvIH0gIGNvcnJpcG9uZGVudGkuICoqCgogIDEuIFBvc2l6aW9uYSBpbCBjdXJzb3JlIHN1IHVuICgsIFssIG9yIHsgbmVsbGEgbGluZWEsIGluZGljYXRhIGRhIC0tLT4KCiAgMi4gQWRlc3NvIGJhdHRpIGlsIGNhcmF0dGVyZSAgICUgIC4KCiAgMy4gSWwgY3Vyc29yZSBkb3ZyZWJiZSBvcmEgdHJvdmFyc2kgc3VsbGEgcGFyZW50ZXNpIGNvcnJpc3BvbmRlbnRlLgoKICA0LiBCYXR0aSAgJSAgcGVyIG11b3ZlcmUgaWwgY3Vyc29yZSBhbGxhIHBhcmVudGVzaSBkaSBwcmltYSAoY29ycmlzcG9uZGVudGUpCgotLS0+IFF1ZXN0YSAoIOggdW5hIGxpbmVhIGRpIHRlc3QgY29uICgsIFsgXSBlIHsgfSBhbCBzdW8gaW50ZXJuby4gKSkKCk5PVEE6IFF1ZXN0byDoIG1vbHRvIHV0aWxlIG5lbCAiZGVidWciIGRpIHVuIHByb2dyYW1tYSBjb24gcGFyZW50ZXNpIGVycmF0ZSEKCgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICAgTGV6aW9uZSA0LjQ6IFVOIE1PRE8gUEVSIENPUlJFR0dFUkUgR0xJIEVSUk9SSQoKCiAgKiogQmF0dGkgIDpzL3ZlY2NoaW8vbnVvdm8vZyAgcGVyIHNvc3RpdHVpcmUgJ251b3ZvJyBhICd2ZWNjaGlvJy4gKioKCiAgMS4gTXVvdmkgaWwgY3Vyc29yZSBmaW5vIGFsbGEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+LgoKICAyLiBCYXR0aSAgOnMvbGxhL2xhIDxJTlZJTz4gLiAgTm90YSBjaGUgcXVlc3RvIGNvbWFuZG8gY2FtYmlhIHNvbG8KICAgICBMQSBQUklNQSBvY2NvcnJlbnphIGRpICJsbGEiIHN1bGxhIGxpbmVhLgoKICAzLiBBZGVzc28gYmF0dGkgIDpzL2xsYS9sYS9nICBkb3ZlICJnIiBzdGEgcGVyICJnbG9iYWxtZW50ZSIgc3VsbGEgbGluZWEuCiAgICAgUXVlc3RvIGNhbWJpYSBUVVRURSBsZSBvY2NvcnJlbnplIGRpICJsbGEiIHN1bGxhIGxpbmVhLgoKLS0tPiBsbGEgc3RhZ2lvbmUgbWlnbGlvcmUgcGVyIGxsYSBmaW9yaXR1cmEg6CBsbGEgcHJpbWF2ZXJhLgoKICA0LiBQZXIgY2FtYmlhcmUgb2duaSByaWNvcnJlbnphIGRpIHVuYSBzdHJpbmdhIGRpIGNhcmF0dGVyaSB0cmEgZHVlIGxpbmVlLAogICAgIGJhdHRpIDojLCNzL3ZlY2NoaW8vbnVvdm8vZyAgZG92ZSAjLCMgc29ubyBpIG51bWVyaSBkZWxsZSBkdWUgbGluZWUuCiAgICAgQmF0dGkgOiVzL3ZlY2NoaW8vbnVvdm8vZyAgICBwZXIgY2FtYmlhcmUgb2duaSBvY2NvcnJlbnphIG5lbGwnaW50ZXJvIGZpbGUuCgoKCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkJICAgICAgIExlemlvbmUgNCBTT01NQVJJTwoKCjEuIENUUkwtZyAgdmlzdWFsaXp6YSBhIGNoZSBwdW50byBzZWkgbmVsIGZpbGUgZSBsYSBzaXR1YXppb25lIGRlbCBmaWxlLgogICBHICAgICAgIFtHIE1haXVzY29sb10gdGkgcG9ydGEgYWxsYSBmaW5lIGRlbCBmaWxlLiBVbiBudW1lcm8gZGkgbGluZWEKICAgc2VndWl0byBkYSAgRyAgW0cgTWFpdXNjb2xvXSB0aSBwb3J0YSBhIHF1ZWwgbnVtZXJvIGRpIGxpbmVhIG5lbCBmaWxlLgoKMi4gQmF0dGVuZG8gIC8gIHNlZ3VpdG8gZGEgdW5hIGZyYXNlIHJpY2VyY2EgSU4gQVZBTlRJIHF1ZWxsYSBmcmFzZS4KICAgQmF0dGVuZG8gID8gIHNlZ3VpdG8gZGEgdW5hIGZyYXNlIHJpY2VyY2EgQUxMJ0lORElFVFJPIHF1ZWxsYSBmcmFzZS4KICAgRE9QTyB1bmEgcmljZXJjYSBiYXR0aSAgICBuICAgcGVyIHRyb3ZhcmUgbGEgcHJvc3NpbWEgb2Njb3JyZW56YSBuZWxsYQogICBzdGVzc2EgZGlyZXppb25lLCBvcHB1cmUgIE4gICBwZXIgY2VyY2FyZSBpbiBkaXJlemlvbmUgb3Bwb3N0YS4KCjMuIEJhdHRlbmRvICAlICBtZW50cmUgaWwgY3Vyc29yZSBzaSB0cm92YSBzdSAgKCwpLFssXSx7LCBvcHB1cmUgfQogICB0aSBwb3Npemlvbmkgc3VsbGEgY29ycmlzcG9uZGVudGUgcGFyZW50ZXNpLgoKNC4gUGVyIHNvc3RpdHVpcmUgIm51b3ZvIiBhbCBwcmltbyAidmVjY2hpbyIgaW4gMSBsaW5lYSBiYXR0aSA6cy92ZWNjaGlvL251b3ZvCiAgIFBlciBzb3N0aXR1aXJlICJudW92byIgYWQgb2duaSAgInZlY2NoaW8iIGluIDEgbGluZWEgYmF0dGkgOnMvdmVjY2hpby9udW92by9nCiAgIFBlciBzb3N0aXR1aXJlIGZyYXNpIHRyYSAyIG51bWVyaSBkaSBsaW5lYSBbI10gIGJhdHRpICAgOiMsI3MvdmVjY2hpby9udW92by9nCiAgIFBlciBzb3N0aXR1aXJlIHR1dHRlIGxlIG9jY29ycmVuemUgbmVsIGZpbGUgYmF0dGkJICAgICA6JXMvdmVjY2hpby9udW92by9nCiAgIFBlciBjaGllZGVyZSBjb25mZXJtYSBvZ25pIHZvbHRhIGFnZ2l1bmdpICdjJwkgICAgOiVzL3ZlY2NoaW8vbnVvdm8vZ2MKCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQlMZXppb25lIDUuMTogQ09NRSBFU0VHVUlSRSBVTiBDT01BTkRPIEVTVEVSTk8KCgogICAqKiBCYXR0aSAgOiEJc2VndWl0byBkYSB1biBjb21hbmRvIGVzdGVybm8gcGVyIGVzZWd1aXJlIGlsIGNvbWFuZG8uICoqCgogIDEuIEJhdHRpIGlsIGNvbWFuZG8gICA6ICAgUGVyIHBvc2l6aW9uYXJlIGlsIGN1cnNvcmUgaW4gZm9uZG8gYWxsbyBzY2hlcm1vLgogICAgIENp8iB0aSBwZXJtZXR0ZSBkaSBpbW1ldHRlcmUgdW4gY29tYW5kby4KCiAgMi4gQWRlc3NvIGJhdHRpIGlsIGNhcmF0dGVyZSAgISAgKHB1bnRvIGVzY2xhbWF0aXZvKS4gIENp8iB0aSBwZXJtZXR0ZSBkaQogICAgIGVzZWd1aXJlIHF1YWxzaWFzaSBjb21hbmRvIGVzdGVybm8gY2hlIHNpIHB18iBlc2VndWlyZSBuZWxsYSAic2hlbGwiLgoKICAzLiBBZCBlc2VtcGlvIGJhdHRpICAgbHMgICBkb3BvIGlsICEgZSBwb2kgcHJlbWkgPElOVklPPi4gIFF1ZXN0bwogICAgIHZpc3VhbGl6emEgdW5hIGxpc3RhIGRlbGxhIHR1YSBkaXJlY3RvcnksIHByb3ByaW8gY29tZSBzZSBmb3NzaSBpbiB1bmEKICAgICAic2hlbGwiLiBVc2EgICA6IWRpciAgc2UgIGxzICBub24gZnVuemlvbmEuICAgW1VuaXg6bHMgIE1TRE9TOmRpcl0KCi0tLT4gTk9UQTogIEUnIHBvc3NpYmlsZSBpbiBxdWVzdG8gbW9kbyBlc2VndWlyZSB1biBjb21hbmRvIGEgcGlhY2VyZS4KCi0tLT4gTk9UQTogIFR1dHRpIGkgY29tYW5kaSAgOiAgZGV2b25vIGVzc2VyZSB0ZXJtaW5hdGkgcHJlbWVuZG8gPElOVklPPgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJTGV6aW9uZSA1LjI6IEFOQ09SQSBTVUxMQSBTQ1JJVFRVUkEgREVJIEZJTEVTCgoKICAgICAqKiBQZXIgc2FsdmFyZSBsZSBtb2RpZmljaGUgYXBwb3J0YXRlIGEgdW4gZmlsZSBiYXR0aSA6dyBOT01FRklMRS4gKioKCiAgMS4gQmF0dGkgIDohZGlyICBvciAgOiFscyAgcGVyIHByb2N1cmFydGkgdW5hIGxpc3RhIGRlbGxhIHR1YSBkaXJlY3RvcnkuCiAgICAgR2ngIHNhaSBjaGUgZGV2aSBwcmVtZXJlIDxJTlZJTz4gZG9wbyBhdmVyIHNjcml0dG8gaWwgY29tYW5kby4KCiAgMi4gU2NlZ2xpIHVuIE5PTUVGSUxFIGNoZSBhbmNvcmEgbm9uIGVzaXN0YSwgYWQgZXMuIFRFU1QgICAuCgogIDMuIEFkZXNzbyBiYXR0aToJIDp3IFRFU1QgICAoZG92ZSBURVNUIOggaWwgTk9NRUZJTEUgY2hlIGhhaSBzY2VsdG8pLgoKICA0LiBRdWVzdG8gc2FsdmEgbCdpbnRlcm8gZmlsZSAoInR1dG9yLml0IikgIGNvbiBpbCBub21lIGRpIFRFU1QuCiAgICAgUGVyIHVuYSB2ZXJpZmljYSBiYXR0aSBhbmNvcmEgIDohZGlyICAgcGVyIGxpc3RhcmUgbGEgdHVhIGRpcmVjdG9yeS4KCi0tLT4gTm90YSBjaGUgc2UgZXNjaSBkYSBWaW0gZSByaWVzZWd1aSBWaW0gdXNhbmRvIGNvbWUgTk9NRUZJTEUgVEVTVCwKICAgICBpbCBmaWxlIHNhcuAgdW5hIGNvcGlhIGVzYXR0YSBkaSAidHV0b3IuaXQiIGFsIG1vbWVudG8gZGVsIHNhbHZhdGFnZ2lvLgoKICA1LiBPcmEgY2FuY2VsbGEgaWwgZmlsZSBiYXR0ZW5kbzogICA6IXJtICAgICAgVEVTVCAgICBbc290dG8gVW5peF0gb3BwdXJlCgkJCQkgICAgICA6IWRlbAlURVNUCVtzb3R0byBNU0RPU10KCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KCQkgICAgTGV6aW9uZSA1LjM6IFNDUklWRVJFIElOIE1BTklFUkEgU0VMRVRUSVZBCgoKICAgICAqKiBQZXIgc2FsdmFyZSB1bmEgcG9yemlvbmUgZGVsIGZpbGUsIGJhdHRpICAgOiMsIyB3IE5PTUVGSUxFICoqCgogIDEuIEJhdHRpIGFuY29yYSAgOiFkaXIgIG8gIDohbHMgIHBlciBwcm9jdXJhcnRpIHVuYSBsaXN0YSBkZWxsYSB0dWEgZGlyZWN0b3J5CiAgICAgZSBzY2VnbGkgdW4gTk9NRUZJTEUgYWRhdHRvLCBjb21lIGFkIGVzLiAgVEVTVCAgLgoKICAyLiBNdW92aSBpbCBjdXJzb3JlIGluIGNpbWEgYSBxdWVzdGEgcGFnaW5hIGUgYmF0dGkgIENUUkwtZyAgcGVyIHByb2N1cmFydGkKICAgICBpbCBudW1lcm8gZGkgbGluZWEuICBSSUNPUkRBVEkgUVVFU1RPIE5VTUVSTyEKCiAgMy4gT3JhIHNwb3N0YXRpIGluIGZvbmRvIGFsbGEgcGFnaW5hIGUgYmF0dGkgIENUUkwtZyBhZ2Fpbi4KICAgICBSSUNPUkRBVEkgQU5DSEUgUVVFU1RPIE5VTUVSTyEKCiAgNC4gUGVyIHNhbHZhcmUgU09MTyB1bmEgcGFydGUgaW4gdW4gZmlsZSwgYmF0dGkgICA6IywjIHcgVEVTVAogICAgIGRvdmUgICMsIyAgc29ubyBpIGR1ZSBudW1lcmkgY2hlIGhhaSBtZW1vcml6emF0byAoY2ltYSxmb25kbykgZSBURVNUCiAgICAg6CBpbCB0dW8gTk9NRUZJTEUuCgogIDUuIEFuY29yYSB1bmEgdm9sdGEsIGNvbnRyb2xsYSBjaGUgaWwgZmlsZSBlc2lzdGEgY29uIGlsIGNvbWFuZG8gOiFkaXIKICAgICBtYSBOT04gQ0FOQ0VMTEFSTE8uCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgTGV6aW9uZSA1LjQ6IElOU0VSSVJFIEUgUklVTklSRSBGSUxFCgoKICAgKiogUGVyIGluc2VyaXJlIGlsIGNvbnRlbnV0byBkaSB1biBmaWxlLCBiYXR0aSAgIDpyIE5PTUVGSUxFICoqCgogIDEuIEJhdHRpICA6IWRpciAgcGVyIGFjY2VydGFydGkgY2hlIGlsIHR1byBOT01FRklMRSBURVNUIHNpYSBhbmNvcmEgcHJlc2VudGUuCgogIDIuIFBvc2l6aW9uYSBpbCBjdXJzb3JlIGFsbCdpbml6aW8gZGkgcXVlc3RhIHBhZ2luYS4KCk5PVEE6IERPUE8gYXZlciBlc2VndWl0byBpbCBQYXNzbyAzIHZlZHJhaSBhbmNvcmEgbGEgTGV6aW9uZSA1LjMuCiAgICAgIFF1aW5kaSBzcG9zdGF0aSBJTiBHSVUnIHBlciB0b3JuYXJlIGFuY29yYSBhIHF1ZXN0YSBMZXppb25lLgoKICAzLiBPcmEgaW5zZXJpc2NpIGlsIHR1byBmaWxlIFRFU1QgY29uIGlsIGNvbWFuZG8gICA6ciBURVNUICAgZG92ZSBURVNUIOgKICAgICBpbCBub21lIGRlbCBmaWxlLgoKTk9UQTogSWwgZmlsZSBjaGUgdHUgcmljaGllZGkg6CBpbnNlcml0byBhIHBhcnRpcmUgZGEgZG92ZSBzaSB0cm92YSBpbCBjdXJzb3JlLgoKICA0LiBQZXIgdmVyaWZpY2FyZSBjaGUgdW4gZmlsZSDoIHN0YXRvIGluc2VyaXRvLCB0b3JuYSBpbmRpZXRybyBjb2wgY3Vyc29yZQogICAgIGUgbm90YSBjaGUgY2kgc29ubyBvcmEgMiBjb3BpZSBkZWxsYSBMZXppb25lIDUuMywgcXVlbGxhIG9yaWdpbmFsZSBlIHF1ZWxsYQogICAgIGRhIHRlIGluc2VyaXRhLgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCQkgICAgICAgTGV6aW9uZSA1IFNPTU1BUklPCgoKICAxLiAgOiFjb21hbmRvICBlc2VndWUgdW4gY29tYW5kbyBlc3Rlcm5vLgoKICAgICAgQWxjdW5pIGVzZW1waSB1dGlsaSBzb25vIFtpbiBNU0RPU106CgkgIDohZGlyCQkgICAgIC0JdmlzdWFsaXp6YSBsaXN0YSBkaXJlY3RvcnkKCSAgOiFkZWwgTk9NRUZJTEUgICAgIC0JY2FuY2VsbGEgZmlsZSBOT01FRklMRS4KCiAgMi4gIDp3IE5PTUVGSUxFICBzY3JpdmUgc3UgZGlzY28gaWwgZmlsZSBjaGUgc3RhaSBlZGl0YW5kbyBjb24gbm9tZSBOT01FRklMRS4KCiAgMy4gIDojLCN3IE5PTUVGSUxFICBzYWx2YSBsZSBsaW5lZSBkYSAjIGEgIyBuZWwgZmlsZSBOT01FRklMRS4KCiAgNC4gIDpyIE5PTUVGSUxFICBsZWdnZSBpbCBmaWxlIE5PTUVGSUxFIGRhIGRpc2NvIGUgbG8gaW5zZXJpc2NlIG5lbAogICAgICBmaWxlIGNoZSBzdGFpIGVkaXRhbmRvLCBkb3BvIGlsIHB1bnRvIGRvdmUg6CBwb3NpemlvbmF0byBpbCBjdXJzb3JlLgoKCgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJCSBMZXppb25lIDYuMTogSUwgQ09NQU5ETyBPUEVOIFtBUFJJXQoKCiAgKiogQmF0dGkgICBvICAgcGVyIGFwcmlyZSB1bmEgbGluZWEgc290dG8gaWwgY3Vyc29yZSBlIHBlciBwYXNzYXJlIGluCiAgICAgTW9kYWxpdOAgSW5zZXJpbWVudG8uICoqCgogIDEuIE11b3ZpIGlsIGN1cnNvcmUgZmlubyBhbGxhIGxpbmVhIHF1aSBzb3R0bywgaW5kaWNhdGEgZGEgLS0tPi4KCiAgMi4gQmF0dGkgICBvICAgKG1pbnVzY29sbykgcGVyIGFwcmlyZSB1bmEgbGluZWEgc290dG8gaWwgY3Vyc29yZSBlIHBlcgogICAgIHBhc3NhcmUgaW4gTW9kYWxpdOAgSW5zZXJpbWVudG8uCgogIDMuIEFkZXNzbyByaWNvcGlhIGxhIGxpbmVhIGluZGljYXRhIGRhIC0tLT4KICAgICBlIHByZW1pIDxFU0M+IHBlciB1c2NpcmUgZGFsbGEgTW9kYWxpdOAgSW5zZXJpbWVudG8uCgotLS0+IERvcG8gYmF0dHV0byAgbyAgaWwgY3Vyc29yZSDoIHN1bGxhIGxpbmVhIGFwZXJ0YSAoaW4gTW9kYWxpdOAgSW5zZXJpbWVudG8pCgogIDQuIFBlciBhcHJpcmUgdW5hIGxpbmVhIFNPUFJBIGlsIGN1cnNvcmUsIGJhdHRpICAgTyAgW01haXVzY29sYV0sIGludmVjZQogICAgIGNoZSB1bmEgICBvICAgbWludXNjb2xhLiBQcm92YSBzdWxsYSBsaW5lYSBzdWJpdG8gc290dG8uCkFwcmkgdW5hIGxpbmVhIFNPUFJBIHF1ZXN0YSBiYXR0ZW5kbyAgTyAgcXVhbmRvIGlsIGN1cnNvcmUg6CBzdSBxdWVzdGEgbGluZWEuCgoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCUxlemlvbmUgNi4yOiBJTCBDT01BTkRPIEFQUEVORCBbQUdHSVVOR0ldCgoKCSAgICAgKiogQmF0dGkgICBhICAgcGVyIGluc2VyaXJlIHRlc3RvIERPUE8gaWwgY3Vyc29yZS4gKioKCiAgMS4gTXVvdmkgaWwgY3Vyc29yZSBhbGxhIGZpbmUgZGVsbGEgcHJpbWEgbGluZWEgcXVpIHNvdHRvLCBpbmRpY2F0YSBkYSAtLS0+CiAgICAgYmF0dGVuZG8gICQgIG1lbnRyZSBzZWkgaW4gTW9kYWxpdOAgTm9ybWFsZS4KCiAgMi4gQmF0dGkgdW5hICBhICAobWludXNjb2xhKSBwZXIgYWdnaXVuZ2VyZSB0ZXN0byBET1BPIGlsIGNhcmF0dGVyZSBzb3R0bwogICAgIGlsIGN1cnNvcmUuICAgKEEgTWFpdXNjb2xhIGFnZ2l1bmdlIGFsbGEgZmluZSBkZWxsYSBsaW5lYSkuCgpOT1RBOiBFdml0aSBjb3PsIGRpIGJhdHRlcmUgICBpICAgLCBsJ3VsdGltbyBjYXJhdHRlcmUsIGlsIHRlc3RvIGRhIGFnZ2l1bmdlcmUsCiAgICAgIDxFU0M+LCBzcG9zdGFyZSBpbCBjdXJzb3JlIGEgc2luaXN0cmEgZSBiYXR0ZXJlICAgeCAgc29sbyBwZXIgYWdnaXVuZ2VyZQogICAgICBxdWFsY29zYSBhbGxhIGZpbmUgZGVsbGEgbGluZWEhCgogIDMuIEFkZXNzbyBjb21wbGV0YSBsYSBwcmltYSBsaW5lYS4gIE5vdGEgYW5jaGUgY2hlIGwnYWdnaXVudGEgZnVuemlvbmEgY29tZQogICAgIGxhIE1vZGFsaXTgIEluc2VyaW1lbnRvLCB0cmFubmUgY2hlIHBlciBpbCBsdW9nbyBkb3ZlIGlsIHRlc3RvIOggaW5zZXJpdG8uCgotLS0+IFF1ZXN0YSBsaW5lYSB0aSBwZXJtZXR0ZXLgIGRpIGVzZXJjaXRhcnRpCi0tLT4gUXVlc3RhIGxpbmVhIHRpIHBlcm1ldHRlcuAgZGkgZXNlcmNpdGFydGkgYWQgYWdnaXVuZ2VyZSB0ZXN0byBhIGZpbmUgbGluZWEuCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkgICBMZXppb25lIDYuMzogVU4nQUxUUkEgVkFSSUFOVEUgREkgUkVQTEFDRSBbUklNUElBWlpBXQoKCiAgICAgKiogQmF0dGkgdW5hICBSICBNYWl1c2NvbGEgcGVyIHJpbXBpYXp6YXJlIHBp+SBkaSB1biBjYXJhdHRlcmUuICoqCgogIDEuIE11b3ZpIGlsIGN1cnNvcmUgYWxsYSBwcmltYSBsaW5lYSBxdWkgc290dG8sIGluZGljYXRhIGRhIC0tLT4uCgogIDIuIFBvc2l6aW9uYSBpbCBjdXJzb3JlIGFsbCdpbml6aW8gZGVsbGEgcHJpbWEgcGFyb2xhIGRpZmZlcmVudGUKICAgICBkYWxsYSBzZWNvbmRhIGxpbmVhIGluZGljYXRhIGRhIC0tLT4gKGxhIHBhcm9sYSAiJ3VsdGltYSIpLgoKICAzLiBBZGVzc28gYmF0dGkgIFIgIGUgcmltcGlhenphIGlsIHJlc3RvIGRlbCB0ZXN0byBzdWxsYSBwcmltYSBsaW5lYSBiYXR0ZW5kbwogICAgIHNvcHJhIGlsIHRlc3RvIHByZWVzaXN0ZW50ZSBwZXIgcmVuZGVyZSBsYSBwcmltYSBsaW5lYSB1Z3VhbGUgYWxsYSBzZWNvbmRhLgoKLS0tPiBQZXIgcmVuZGVyZSBsYSBwcmltYSBsaW5lYSB1Z3VhbGUgYWxsYSB1bHRpbWEgc3UgcXVlc3RhIHBhZ2luYSB1c2EgaSB0YXN0aS4KLS0tPiBQZXIgcmVuZGVyZSBsYSBwcmltYSBsaW5lYSB1Z3VhbGUgYWxsYSBzZWNvbmRhLCBiYXR0aSBSIGUgaWwgbnVvdm8gdGVzdG8uCgogIDQuIE5vdGEgY2hlIHF1YW5kbyBwcmVtaSA8RVNDPiBwZXIgdXNjaXJlLCBvZ25pIHRlc3RvIG5vbiB0b2NjYXRvIHJlc3RhCiAgICAgdWd1YWxlLgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICBMZXppb25lIDYuNDogU0VUIFtJTVBPU1RBXSBVTidPUFpJT05FCgogICAgICAqKiBJbXBvc3RhIHVuJ29wemlvbmUgcGVyIGlnbm9yYXJlIG1haXVzY29sZS9taW51c2NvbGUKCSBkdXJhbnRlIGxhIHJpY2VyY2Evc29zdGl0dXppb25lICoqCgogMS4gUmljZXJjYSAnaWdub3JhJyBiYXR0ZW5kbzoKICAgIC9pZ25vcmEKICAgIFJpcGV0aSBsYSByaWNlcmNhIHBp+SB2b2x0ZSB1c2FuZG8gaWwgdGFzdG8gICBuCgogMi4gSW1wb3N0YSBsJ29wemlvbmUgJ2ljJyAoSWdub3JlIGNhc2UsIFtJZ25vcmEgTWFpdXNjb2xvL21pbnVzY29sb10pIGJhdHRlbmRvOgogICAgOnNldCBpYwoKIDMuIEFkZXNzbyByaWNlcmNhIGFuY29yYSAnaWdub3JhJyBwcmVtZW5kbyBpbCB0YXN0byAgICBuCiAgICBSaXBldGkgbGEgcmljZXJjYSBwafkgdm9sdGUgdXNhbmRvIGlsIHRhc3RvICAgbgoKIDQuIEltcG9zdGEgbGUgb3B6aW9uaSAnaGxzZWFyY2gnIGUgJ2luY3NlYXJjaCcgW2V2aWRlbnppYV9yaWNlcmNhIHN1Yml0b10KICAgIDpzZXQgaGxzIGlzCgogNS4gQWRlc3NvIHJpYmF0dGkgYW5jb3JhIGlsIGNvbWFuZG8gZGkgcmljZXJjYSwgZSBndWFyZGEgY29zYSBzdWNjZWRlOgogICAgL2lnbm9yZQoKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoJCQkgICAgICAgTGV6aW9uZSA2IFNPTU1BUklPCgoKICAxLiBCYXR0ZW5kbyAgbyAgYWdnaXVuZ2kgdW5hIGxpbmVhIFNPVFRPIGlsIGN1cnNvcmUgZWQgaWwgY3Vyc29yZQogICAgIHNpIHBvc2l6aW9uYSBzdWxsYSBsaW5lYSBhcHBlbmEgYXBlcnRhLCBpbiBNb2RhbGl04CBJbnNlcmltZW50by4KICAgICBCYXR0ZW5kbyAgTyAgW01haXVzY29sYV0gYXByaSBsYSBsaW5lYSBTT1BSQSBsYSBsaW5lYSBzdSBjdWkg6CBpbCBjdXJzb3JlLgoKICAyLiBCYXR0aSB1bmEgIGEgIHBlciBpbnNlcmlyZSB0ZXN0byBET1BPIGlsIGNhcmF0dGVyZSBzdSBjdWkg6CBpbCBjdXJzb3JlLgogICAgIEJhdHRlbmRvICAgQSAgW01haXVzY29sYV0gYWdnaXVuZ2kgdGVzdG8gYWxsYSBmaW5lIGRlbGxhIGxpbmVhLgoKICAzLiBCYXR0ZW5kbyAgIFIgIFtNYWl1c2NvbGFdIGVudHJpIGluIE1vZGFsaXTgIFJpbXBpYXp6byBbUmVwbGFjZSBtb2RlXQogICAgIGUgY2kgcmVzdGkgZmluY2jpIG5vbiBwcmVtaSA8RVNDPiBwZXIgdXNjaXJuZS4KCiAgNC4gQmF0dGVuZG8gIjpzZXQgeHh4IiBpbXBvc3RpIGwnb3B6aW9uZSAieHh4IgogICAgIEJhdHRlbmRvICI6aCAgIHh4eCIgdmVkaSBsYSBkb2N1bWVudGF6aW9uZSBbaW5nbGVzZV0gcGVyIGwnb3B6aW9uZSAieHh4IgoKCgoKCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICAgIExlemlvbmUgNzogQ09NQU5ESSBESSBBSVVUTyBPTi1MSU5FCgoKCQkgICAgICAqKiBVc2EgaWwgc2lzdGVtYSBkaSBoZWxwIG9uLWxpbmUgKioKCiAgVmltIGhhIHVuIGVzYXVyaWVudGUgc2lzdGVtYSBkaSBhaXV0byBvbi1saW5lLiAgUGVyIGNvbWluY2lhcmUsIHByb3ZhIHVuYSBkaQogIHF1ZXN0ZSBhbHRlcm5hdGl2ZToKCS0gcHJlbWkgaWwgdGFzdG8gPEFJVVRPPiAoc2UgY2UgbifoIHVubykKCS0gcHJlbWkgaWwgdGFzdG8gPEYxPiAgICAoc2UgY2UgbifoIHVubykKCS0gYmF0dGkgICA6aGVscCAgPElOVklPPiAgT1BQVVJFICAgOmggPElOVklPPgoKICBCYXR0aSAgIDpxIDxJTlZJTz4gICBwZXIgY2hpdWRlcmUgbGEgZmluZXN0cmEgZGkgaGVscC4KCiAgUHVvaSB0cm92YXJlIGFpdXRvIHN1IHF1YXNpIHR1dHRvLCBkYW5kbyB1biBhcmdvbWVudG8gYWwgY29tYW5kbyAiOmhlbHAiCiAgUHJvdmEgcXVlc3RpIChub24gZGltZW50aWNhcmUgZGkgcHJlbWVyZSA8SU5WSU8+KToKCgk6aGVscCB3Cgk6aGVscCBjXzxUCgk6aGVscCBpbnNlcnQtaW5kZXgKCTpoZWxwIHVzZXItbWFudWFsCgoKfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CgkJICAgICAgIExFWklPTkUgODogUFJFUEFSQSBVTk8gU0NSSVBUIElOSVpJQUxFCgoJCQkgICoqIEF0dGl2YSBsZSBvcHppb25pIFZpbSAqKgoKICBWaW0gaGEgbW9sdGUgcGn5IG9wemlvbmkgZGkgVmksIG1hIG1vbHRlIGRpIGVzc2Ugc29ubyBwcmVkZWZpbml0ZSBpbmF0dGl2ZS4KICBQZXIgY29taW5jaWFyZSBhIHVzYXJlIHBp+SBvcHppb25pLCBkZXZpIHByZXBhcmFyZSB1biBmaWxlICJ2aW1yYyIuCgogIDEuIENvbWluY2lhIGEgZWRpdGFyZSBpbCBmaWxlICJ2aW1yYyIsIGEgc2Vjb25kYSBkZWwgdHVvIHNpc3RlbWEgb3BlcmF0aXZvOgoJOmVkaXQgfi8udmltcmMJCQlwZXIgVW5peAoJOmVkaXQgJFZJTS9fdmltcmMJCXBlciBNUy1XaW5kb3dzCgogIDIuIE9yYSBpbnNlcmlzY2kgaWwgZmlsZSAidmltcmMiIGQnZXNlbXBpbzoKCgk6cmVhZCAkVklNUlVOVElNRS92aW1yY19leGFtcGxlLnZpbQoKICAzLiBTY3JpdmkgaWwgZmlsZSBjb246CgoJOndyaXRlCgogIExhIHByb3NzaW1hIHZvbHRhIGNoZSBhcHJpIFZpbSwgdmVkcmFpIGluIHVzbyBsYSBjb2xvcmF6aW9uZSBzaW50YXR0aWNhLgogIFB1b2kgYWdnaXVuZ2VyZSBhIHF1ZXN0byBmaWxlICJ2aW1yYyIgdHV0dGUgbGUgdHVlIGltcG9zdGF6aW9uaSBwcmVmZXJpdGUuCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KICBRdWkgZmluaXNjZSBsYSBHdWlkYSBhIFZpbS4gIElsIHN1byBpbnRlbnRvIOggZGkgZm9ybmlyZSB1bmEgYnJldmUgcGFub3JhbWljYQogIGRlbGwnRWRpdG9yIFZpbSwgY2hlIHRpIGNvbnNlbnRhIGRpIHVzYXJlIGwnRWRpdG9yIGFiYmFzdGFuemEgZmFjaWxtZW50ZS4KICBRdWVzdGEgZ3VpZGEg6CBsYXJnYW1lbnRlIGluY29tcGxldGEgcG9pY2jpIFZpbSBoYSBtb2x0aXNzaW1pIGFsdHJpIGNvbWFuZGkuCiAgUHVvaSBhbmNoZSBsZWdnZXJlIGlsIG1hbnVhbGUgdXRlbnRlOiAiOmhlbHAgdXNlci1tYW51YWwiLgoKICBQZXIgdWx0ZXJpb3JlIGxldHR1cmEgZSBzdHVkaW8sIHJhY2NvbWFuZGlhbW86CglWaW0gLSBWaSBJbXByb3ZlZCAtIGRpIFN0ZXZlIE91YWxsaW5lICAgICBFZGl0b3JlOiBOZXcgUmlkZXJzCiAgSWwgcHJpbW8gbGlicm8gY29tcGxldGFtZW50ZSBkZWRpY2F0byBhIFZpbS4gVXRpbGUgc3BlY2llIHBlciBwcmluY2lwaWFudGkuCiAgQ29udGllbmUgbW9sdGkgZXNlbXBpIGUgZmlndXJlLgogIFZlZGkgaHR0cDovL2ljY2YtaG9sbGFuZC5vcmcvY2xpY2s1Lmh0bWwKCiAgUXVlc3QnYWx0cm8gbGlicm8g6CBwafkgc3UgVmkgY2hlIHN1IFZpbSwgbWEg6CBwdXJlIGNvbnNpZ2xpYXRvOgoJTGVhcm5pbmcgdGhlIFZpIEVkaXRvciAtIGRpIExpbmRhIExhbWIgZSBBcm5vbGQgUm9iYmlucwoJRWRpdG9yZTogTydSZWlsbHkgJiBBc3NvY2lhdGVzIEluYy4KICBFJyB1biBidW9uIGxpYnJvIHBlciBpbXBhcmFyZSBxdWFzaSB0dXR0byBjafIgY2hlIHB1b2kgdm9sZXIgZmFyZSBjb24gVmkuCiAgTmUgZXNpc3RlIHVuYSB0cmFkdXppb25lIGl0YWxpYW5hLCBiYXNhdGEgc3UgdW5hIHZlY2NoaWEgZWRpemlvbmUuCgogIFF1ZXN0YSBndWlkYSDoIHN0YXRhIHNjcml0dGEgZGEgTWljaGFlbCBDLiBQaWVyY2UgZSBSb2JlcnQgSy4gV2FyZSwKICBDb2xvcmFkbyBTY2hvb2wgb2YgTWluZXMsIHVzYW5kbyBpZGVlIGZvcm5pdGUgZGEgQ2hhcmxlcyBTbWl0aCwKICBDb2xvcmFkbyBTdGF0ZSBVbml2ZXJzaXR5IC0gRS1tYWlsOiBid2FyZUBtaW5lcy5jb2xvcmFkby5lZHUKICBNb2RpZmljYXRvIHBlciBWaW0gZGEgQnJhbSBNb29sZW5hYXIuCiAgU2VnbmFsYXJlIHJlZnVzaSBhZCBBbnRvbmlvIENvbG9tYm8gLSBFLW1haWw6IGF6YzEwQHlhaG9vLmNvbQp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K