ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQgYi9ydW50aW1lL2RvYy91c3JfMjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2Mjc0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2RvYy91c3JfMjQudHh0CkBAIC0wLDAgKzEsNTczIEBACisqdXNyXzI0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDMgQXVnIDE4CisKKwkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgorCisJCQkgICAgIEluc2VydGluZyBxdWlja2x5CisKKworV2hlbiBlbnRlcmluZyB0ZXh0LCBWaW0gb2ZmZXJzIHZhcmlvdXMgd2F5cyB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBrZXlzdHJva2VzCithbmQgYXZvaWQgdHlwaW5nIG1pc3Rha2VzLiAgVXNlIEluc2VydCBtb2RlIGNvbXBsZXRpb24gdG8gcmVwZWF0IHByZXZpb3VzbHkKK3R5cGVkIHdvcmRzLiAgQWJicmV2aWF0ZSBsb25nIHdvcmRzIHRvIHNob3J0IG9uZXMuICBUeXBlIGNoYXJhY3RlcnMgdGhhdAorYXJlbid0IG9uIHlvdXIga2V5Ym9hcmQuCisKK3wyNC4xfAlNYWtpbmcgY29ycmVjdGlvbnMKK3wyNC4yfAlTaG93aW5nIG1hdGNoZXMKK3wyNC4zfAlDb21wbGV0aW9uCit8MjQuNHwJUmVwZWF0aW5nIGFuIGluc2VydAorfDI0LjV8CUNvcHlpbmcgZnJvbSBhbm90aGVyIGxpbmUKK3wyNC42fAlJbnNlcnRpbmcgYSByZWdpc3RlcgorfDI0Ljd8CUFiYnJldmlhdGlvbnMKK3wyNC44fAlFbnRlcmluZyBzcGVjaWFsIGNoYXJhY3RlcnMKK3wyNC45fAlEaWdyYXBocworfDI0LjEwfAlOb3JtYWwgbW9kZSBjb21tYW5kcworCisgICAgIE5leHQgY2hhcHRlcjogfHVzcl8yNS50eHR8ICBFZGl0aW5nIGZvcm1hdHRlZCB0ZXh0CisgUHJldmlvdXMgY2hhcHRlcjogfHVzcl8yMy50eHR8ICBFZGl0aW5nIG90aGVyIGZpbGVzCitUYWJsZSBvZiBjb250ZW50czogfHVzcl90b2MudHh0fAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyoyNC4xKglNYWtpbmcgY29ycmVjdGlvbnMKKworVGhlIDxCUz4ga2V5IHdhcyBhbHJlYWR5IG1lbnRpb25lZC4gIEl0IGRlbGV0ZXMgdGhlIGNoYXJhY3RlciBqdXN0IGJlZm9yZSB0aGUKK2N1cnNvci4gIFRoZSA8RGVsPiBrZXkgZG9lcyB0aGUgc2FtZSBmb3IgdGhlIGNoYXJhY3RlciB1bmRlciAoYWZ0ZXIpIHRoZQorY3Vyc29yLgorICAgV2hlbiB5b3UgdHlwZWQgYSB3aG9sZSB3b3JkIHdyb25nLCB1c2UgQ1RSTC1XOgorCisJVGhlIGhvcnNlIGhhZCBmYWxsZW4gdG8gdGhlIHNreSB+CisJCQkJICAgICAgIENUUkwtVworCVRoZSBob3JzZSBoYWQgZmFsbGVuIHRvIHRoZSB+CisKK0lmIHlvdSByZWFsbHkgbWVzc2VkIHVwIGEgbGluZSBhbmQgd2FudCB0byBzdGFydCBvdmVyLCB1c2UgQ1RSTC1VIHRvIGRlbGV0ZQoraXQuICBUaGlzIGtlZXBzIHRoZSB0ZXh0IGFmdGVyIHRoZSBjdXJzb3IgYW5kIHRoZSBpbmRlbnQuICBPbmx5IHRoZSB0ZXh0IGZyb20KK3RoZSBmaXJzdCBub24tYmxhbmsgdG8gdGhlIGN1cnNvciBpcyBkZWxldGVkLiAgV2l0aCB0aGUgY3Vyc29yIG9uIHRoZSAiZiIgb2YKKyJmYWxsZW4iIGluIHRoZSBuZXh0IGxpbmUgcHJlc3NpbmcgQ1RSTC1VIGRvZXMgdGhpczoKKworCVRoZSBob3JzZSBoYWQgZmFsbGVuIHRvIHRoZSB+CisJCSAgICAgIENUUkwtVQorCWZhbGxlbiB0byB0aGUgfgorCitXaGVuIHlvdSBzcG90IGEgbWlzdGFrZSBhIGZldyB3b3JkcyBiYWNrLCB5b3UgbmVlZCB0byBtb3ZlIHRoZSBjdXJzb3IgdGhlcmUgdG8KK2NvcnJlY3QgaXQuICBGb3IgZXhhbXBsZSwgeW91IHR5cGVkIHRoaXM6CisKKwlUaGUgaG9yc2UgaGFkIGZvbGxlbiB0byB0aGUgZ3JvdW5kIH4KKworWW91IG5lZWQgdG8gY2hhbmdlICJmb2xsZW4iIHRvICJmYWxsZW4iLiAgV2l0aCB0aGUgY3Vyc29yIGF0IHRoZSBlbmQsIHlvdQord291bGQgdHlwZSB0aGlzIHRvIGNvcnJlY3QgaXQ6ID4KKworCQkJCQk8RXNjPjRibHJhQQorCis8CWdldCBvdXQgb2YgSW5zZXJ0IG1vZGUJCTxFc2M+CisJZm91ciB3b3JkcyBiYWNrCQkJICAgICA0YgorCW1vdmUgb24gdG9wIG9mIHRoZSAibyIJCSAgICAgICBsCisJcmVwbGFjZSB3aXRoICJhIgkJCXJhCisJcmVzdGFydCBJbnNlcnQgbW9kZQkJCSAgQQorCitBbm90aGVyIHdheSB0byBkbyB0aGlzOiA+CisKKwkJPEMtTGVmdD48Qy1MZWZ0PjxDLUxlZnQ+PEMtTGVmdD48UmlnaHQ+PERlbD5hPEVuZD4KKworPAlmb3VyIHdvcmRzIGJhY2sJCSAgICAgPEMtTGVmdD48Qy1MZWZ0PjxDLUxlZnQ+PEMtTGVmdD4KKwltb3ZlIG9uIHRvcCBvZiB0aGUgIm8iCQkJPFJpZ2h0PgorCWRlbGV0ZSB0aGUgIm8iCQkJCSAgICAgICA8RGVsPgorCWluc2VydCBhbiAiYSIJCQkJCSAgICBhCisJZ28gdG8gZW5kIG9mIHRoZSBsaW5lCQkJCSAgICAgPEVuZD4KKworVGhpcyB1c2VzIHNwZWNpYWwga2V5cyB0byBtb3ZlIGFyb3VuZCwgd2hpbGUgcmVtYWluaW5nIGluIEluc2VydCBtb2RlLiAgVGhpcworcmVzZW1ibGVzIHdoYXQgeW91IHdvdWxkIGRvIGluIGEgbW9kZWxlc3MgZWRpdG9yLiAgSXQncyBlYXNpZXIgdG8gcmVtZW1iZXIsCitidXQgdGFrZXMgbW9yZSB0aW1lICh5b3UgaGF2ZSB0byBtb3ZlIHlvdXIgaGFuZCBmcm9tIHRoZSBsZXR0ZXJzIHRvIHRoZSBjdXJzb3IKK2tleXMsIGFuZCB0aGUgPEVuZD4ga2V5IGlzIGhhcmQgdG8gcHJlc3Mgd2l0aG91dCBsb29raW5nIGF0IHRoZSBrZXlib2FyZCkuCisgICBUaGVzZSBzcGVjaWFsIGtleXMgYXJlIG1vc3QgdXNlZnVsIHdoZW4gd3JpdGluZyBhIG1hcHBpbmcgdGhhdCBkb2Vzbid0CitsZWF2ZSBJbnNlcnQgbW9kZS4gIFRoZSBleHRyYSB0eXBpbmcgZG9lc24ndCBtYXR0ZXIgdGhlbi4KKyAgIEFuIG92ZXJ2aWV3IG9mIHRoZSBrZXlzIHlvdSBjYW4gdXNlIGluIEluc2VydCBtb2RlOgorCisJPEMtSG9tZT4JdG8gc3RhcnQgb2YgdGhlIGZpbGUKKwk8UGFnZVVwPglhIHdob2xlIHNjcmVlbmZ1bCB1cAorCTxIb21lPgkJdG8gc3RhcnQgb2YgbGluZQorCTxTLUxlZnQ+CW9uZSB3b3JkIGxlZnQKKwk8Qy1MZWZ0PglvbmUgd29yZCBsZWZ0CisJPFMtUmlnaHQ+CW9uZSB3b3JkIHJpZ2h0CisJPEMtUmlnaHQ+CW9uZSB3b3JkIHJpZ2h0CisJPEVuZD4JCXRvIGVuZCBvZiB0aGUgbGluZQorCTxQYWdlRG93bj4JYSB3aG9sZSBzY3JlZW5mdWwgZG93bgorCTxDLUVuZD4JCXRvIGVuZCBvZiB0aGUgZmlsZQorCitUaGVyZSBhcmUgYSBmZXcgbW9yZSwgc2VlIHxpbnMtc3BlY2lhbC1zcGVjaWFsfC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqMjQuMioJU2hvd2luZyBtYXRjaGVzCisKK1doZW4geW91IHR5cGUgYSApIGl0IHdvdWxkIGJlIG5pY2UgdG8gc2VlIHdpdGggd2hpY2ggKCBpdCBtYXRjaGVzLiAgVG8gbWFrZQorVmltIGRvIHRoYXQgdXNlIHRoaXMgY29tbWFuZDogPgorCisJOnNldCBzaG93bWF0Y2gKKworV2hlbiB5b3Ugbm93IHR5cGUgYSB0ZXh0IGxpa2UgIihleGFtcGxlKSIsIGFzIHNvb24gYXMgeW91IHR5cGUgdGhlICkgVmltIHdpbGwKK2JyaWVmbHkgbW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBtYXRjaGluZyAoLCBrZWVwIGl0IHRoZXJlIGZvciBoYWxmIGEgc2Vjb25kLAorYW5kIG1vdmUgYmFjayB0byB3aGVyZSB5b3Ugd2VyZSB0eXBpbmcuCisgICBJbiBjYXNlIHRoZXJlIGlzIG5vdCBtYXRjaGluZyAoLCBWaW0gd2lsbCBiZWVwLiAgVGhlbiB5b3Uga25vdyB0aGF0IHlvdQorbWlnaHQgaGF2ZSBmb3Jnb3R0ZW4gdGhlICggc29tZXdoZXJlLCBvciB0eXBlZCBhICkgdG9vIG1hbnkuCisgICBUaGUgbWF0Y2ggd2lsbCBhbHNvIGJlIHNob3duIGZvciBbXSBhbmQge30gcGFpcnMuICBZb3UgZG9uJ3QgaGF2ZSB0byB3YWl0Cit3aXRoIHR5cGluZyB0aGUgbmV4dCBjaGFyYWN0ZXIsIGFzIHNvb24gYXMgVmltIHNlZXMgaXQgdGhlIGN1cnNvciB3aWxsIG1vdmUKK2JhY2sgYW5kIGluc2VydGluZyBjb250aW51ZXMgYXMgYmVmb3JlLgorICAgWW91IGNhbiBjaGFuZ2UgdGhlIHRpbWUgVmltIHdhaXRzIHdpdGggdGhlICdtYXRjaHRpbWUnIG9wdGlvbi4gIEZvcgorZXhhbXBsZSwgdG8gbWFrZSBWaW0gd2FpdCBvbmUgYW5kIGEgaGFsZiBzZWNvbmQ6ID4KKworCTpzZXQgbWF0Y2h0aW1lPTE1CisKK1RoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiB0ZW50aHMgb2YgYSBzZWNvbmQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKjI0LjMqCUNvbXBsZXRpb24KKworVmltIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHdvcmRzIG9uIGluc2VydGlvbi4gIFlvdSB0eXBlIHRoZSBmaXJzdCBwYXJ0IG9mCithIHdvcmQsIHByZXNzIENUUkwtUCwgYW5kIFZpbSBndWVzc2VzIHRoZSByZXN0LgorICAgU3VwcG9zZSwgZm9yIGV4YW1wbGUsIHRoYXQgeW91IGFyZSBjcmVhdGluZyBhIEMgcHJvZ3JhbSBhbmQgd2FudCB0byB0eXBlIGluCit0aGUgZm9sbG93aW5nOgorCisJdG90YWwgPSBjaF9hcnJheVswXSArIGNoX2FycmF5WzFdICsgY2hfYXJyYXlbMl07IH4KKworWW91IHN0YXJ0IGJ5IGVudGVyaW5nIHRoZSBmb2xsb3dpbmc6CisKKwl0b3RhbCA9IGNoX2FycmF5WzBdICsgY2hfIH4KKworQXQgdGhpcyBwb2ludCwgeW91IHRlbGwgVmltIHRvIGNvbXBsZXRlIHRoZSB3b3JkIHVzaW5nIHRoZSBjb21tYW5kIENUUkwtUC4KK1ZpbSBzZWFyY2hlcyBmb3IgYSB3b3JkIHRoYXQgc3RhcnRzIHdpdGggd2hhdCdzIGluIGZyb250IG9mIHRoZSBjdXJzb3IuICBJbgordGhpcyBjYXNlLCBpdCBpcyAiY2hfIiwgd2hpY2ggbWF0Y2hlcyB3aXRoIHRoZSB3b3JkIGNoX2FycmF5LiAgU28gdHlwaW5nCitDVFJMLVAgZ2l2ZXMgeW91IHRoZSBmb2xsb3dpbmc6CisKKwl0b3RhbCA9IGNoX2FycmF5WzBdICsgY2hfYXJyYXkgfgorCitBZnRlciBhIGxpdHRsZSBtb3JlIHR5cGluZywgeW91IGdldCB0aGlzIChlbmRpbmcgaW4gYSBzcGFjZSk6CisKKwl0b3RhbCA9IGNoX2FycmF5WzBdICsgY2hfYXJyYXlbMV0gKyAgfgorCitJZiB5b3Ugbm93IHR5cGUgQ1RSTC1QIFZpbSB3aWxsIHNlYXJjaCBhZ2FpbiBmb3IgYSB3b3JkIHRoYXQgY29tcGxldGVzIHRoZQord29yZCBiZWZvcmUgdGhlIGN1cnNvci4gIFNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgaW4gZnJvbnQgb2YgdGhlIGN1cnNvciwgaXQKK2ZpbmRzIHRoZSBmaXJzdCB3b3JkIGJhY2t3YXJkcywgd2hpY2ggaXMgImNoX2FycmF5Ii4gIFR5cGluZyBDVFJMLVAgYWdhaW4KK2dpdmVzIHlvdSB0aGUgbmV4dCB3b3JkIHRoYXQgbWF0Y2hlcywgaW4gdGhpcyBjYXNlICJ0b3RhbCIuICBBIHRoaXJkIENUUkwtUAorc2VhcmNoZXMgZnVydGhlciBiYWNrLiAgSWYgdGhlcmUgaXMgbm90aGluZyBlbHNlLCBpdCBjYXVzZXMgdGhlIGVkaXRvciB0byBydW4KK291dCBvZiB3b3Jkcywgc28gaXQgcmV0dXJucyB0byB0aGUgb3JpZ2luYWwgdGV4dCwgd2hpY2ggaXMgbm90aGluZy4gIEEgZm91cnRoCitDVFJMLVAgY2F1c2VzIHRoZSBlZGl0b3IgdG8gc3RhcnQgb3ZlciBhZ2FpbiB3aXRoICJjaF9hcnJheSIuCisKK1RvIHNlYXJjaCBmb3J3YXJkLCB1c2UgQ1RSTC1OLiAgU2luY2UgdGhlIHNlYXJjaCB3cmFwcyBhcm91bmQgdGhlIGVuZCBvZiB0aGUKK2ZpbGUsIENUUkwtTiBhbmQgQ1RSTC1QIHdpbGwgZmluZCB0aGUgc2FtZSBtYXRjaGVzLCBidXQgaW4gYSBkaWZmZXJlbnQKK3NlcXVlbmNlLiAgSGludDogQ1RSTC1OIGlzIE5leHQtbWF0Y2ggYW5kIENUUkwtUCBpcyBQcmV2aW91cy1tYXRjaC4KKworVGhlIFZpbSBlZGl0b3IgZ29lcyB0aHJvdWdoIGEgbG90IG9mIGVmZm9ydCB0byBmaW5kIHdvcmRzIHRvIGNvbXBsZXRlLiAgQnkKK2RlZmF1bHQsIGl0IHNlYXJjaGVzIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorCisJMS4gQ3VycmVudCBmaWxlCisJMi4gRmlsZXMgaW4gb3RoZXIgd2luZG93cworCTMuIE90aGVyIGxvYWRlZCBmaWxlcyAoaGlkZGVuIGJ1ZmZlcnMpCisJNC4gRmlsZXMgd2hpY2ggYXJlIG5vdCBsb2FkZWQgKGluYWN0aXZlIGJ1ZmZlcnMpCisJNS4gVGFnIGZpbGVzCisJNi4gQWxsIGZpbGVzICNpbmNsdWRlZCBieSB0aGUgY3VycmVudCBmaWxlCisKKworT1BUSU9OUworCitZb3UgY2FuIGN1c3RvbWl6ZSB0aGUgc2VhcmNoIG9yZGVyIHdpdGggdGhlICdjb21wbGV0ZScgb3B0aW9uLgorCitUaGUgJ2lnbm9yZWNhc2UnIG9wdGlvbiBpcyB1c2VkLiAgV2hlbiBpdCBpcyBzZXQsIGNhc2UgZGlmZmVyZW5jZXMgYXJlIGlnbm9yZWQKK3doZW4gc2VhcmNoaW5nIGZvciBtYXRjaGVzLgorCitBIHNwZWNpYWwgb3B0aW9uIGZvciBjb21wbGV0aW9uIGlzICdpbmZlcmNhc2UnLiAgVGhpcyBpcyB1c2VmdWwgdG8gZmluZAorbWF0Y2hlcyB3aGlsZSBpZ25vcmluZyBjYXNlICgnaWdub3JlY2FzZScgbXVzdCBiZSBzZXQpIGJ1dCBzdGlsbCB1c2luZyB0aGUKK2Nhc2Ugb2YgdGhlIHdvcmQgdHlwZWQgc28gZmFyLiAgVGh1cyBpZiB5b3UgdHlwZSAiRm9yIiBhbmQgVmltIGZpbmRzIGEgbWF0Y2gKKyJmb3J0dW5hdGVseSIsIGl0IHdpbGwgcmVzdWx0IGluICJGb3J0dW5hdGVseSIuCisKKworQ09NUExFVElORyBTUEVDSUZJQyBJVEVNUworCitJZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgbG9va2luZyBmb3IsIHlvdSBjYW4gdXNlIHRoZXNlIGNvbW1hbmRzIHRvIGNvbXBsZXRlCit3aXRoIGEgY2VydGFpbiB0eXBlIG9mIGl0ZW06CisKKwlDVFJMLVggQ1RSTC1GCQlmaWxlIG5hbWVzCisJQ1RSTC1YIENUUkwtTAkJd2hvbGUgbGluZXMKKwlDVFJMLVggQ1RSTC1ECQltYWNybyBkZWZpbml0aW9ucyAoYWxzbyBpbiBpbmNsdWRlZCBmaWxlcykKKwlDVFJMLVggQ1RSTC1JCQljdXJyZW50IGFuZCBpbmNsdWRlZCBmaWxlcworCUNUUkwtWCBDVFJMLUsJCXdvcmRzIGZyb20gYSBkaWN0aW9uYXJ5CisJQ1RSTC1YIENUUkwtVAkJd29yZHMgZnJvbSBhIHRoZXNhdXJ1cworCUNUUkwtWCBDVFJMLV0JCXRhZ3MKKwlDVFJMLVggQ1RSTC1WCQlWaW0gY29tbWFuZCBsaW5lCisKK0FmdGVyIGVhY2ggb2YgdGhlbSBDVFJMLU4gY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgbmV4dCBtYXRjaCwgQ1RSTC1QIHRvIGZpbmQKK3RoZSBwcmV2aW91cyBtYXRjaC4KKyAgIE1vcmUgaW5mb3JtYXRpb24gZm9yIGVhY2ggb2YgdGhlc2UgY29tbWFuZHMgaGVyZTogfGlucy1jb21wbGV0aW9ufC4KKworCitDT01QTEVUSU5HIEZJTEUgTkFNRVMKKworTGV0J3MgdGFrZSBDVFJMLVggQ1RSTC1GIGFzIGFuIGV4YW1wbGUuICBUaGlzIHdpbGwgZmluZCBmaWxlIG5hbWVzLiAgSXQgc2NhbnMKK3RoZSBjdXJyZW50IGRpcmVjdG9yeSBmb3IgZmlsZXMgYW5kIGRpc3BsYXlzIGVhY2ggb25lIHRoYXQgbWF0Y2hlcyB0aGUgd29yZCBpbgorZnJvbnQgb2YgdGhlIGN1cnNvci4KKyAgIFN1cHBvc2UsIGZvciBleGFtcGxlLCB0aGF0IHlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gdGhlIGN1cnJlbnQKK2RpcmVjdG9yeToKKworCW1haW4uYyAgc3ViX2NvdW50LmMgIHN1Yl9kb25lLmMgIHN1Yl9leGl0LmMKKworTm93IGVudGVyIEluc2VydCBtb2RlIGFuZCBzdGFydCB0eXBpbmc6CisKKwlUaGUgZXhpdCBjb2RlIGlzIGluIHRoZSBmaWxlIHN1YiB+CisKK0F0IHRoaXMgcG9pbnQsIHlvdSBlbnRlciB0aGUgY29tbWFuZCBDVFJMLVggQ1RSTC1GLiAgVmltIG5vdyBjb21wbGV0ZXMgdGhlCitjdXJyZW50IHdvcmQgInN1YiIgYnkgbG9va2luZyBhdCB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgVGhlCitmaXJzdCBtYXRjaCBpcyBzdWJfY291bnQuYy4gIFRoaXMgaXMgbm90IHRoZSBvbmUgeW91IHdhbnQsIHNvIHlvdSBtYXRjaCB0aGUKK25leHQgZmlsZSBieSB0eXBpbmcgQ1RSTC1OLiAgVGhpcyBtYXRjaCBpcyBzdWJfZG9uZS5jLiAgVHlwaW5nIENUUkwtTiBhZ2FpbgordGFrZXMgeW91IHRvIHN1Yl9leGl0LmMuICBUaGUgcmVzdWx0czoKKworCVRoZSBleGl0IGNvZGUgaXMgaW4gdGhlIGZpbGUgc3ViX2V4aXQuYyB+CisKK0lmIHRoZSBmaWxlIG5hbWUgc3RhcnRzIHdpdGggLyAoVW5peCkgb3IgQzpcIChNUy1XaW5kb3dzKSB5b3UgY2FuIGZpbmQgYWxsCitmaWxlcyBpbiB0aGUgZmlsZSBzeXN0ZW0uICBGb3IgZXhhbXBsZSwgdHlwZSAiL3UiIGFuZCBDVFJMLVggQ1RSTC1GLiAgVGhpcword2lsbCBtYXRjaCAiL3VzciIgKHRoaXMgaXMgb24gVW5peCk6CisKKwl0aGUgZmlsZSBpcyBmb3VuZCBpbiAvdXNyLyB+CisKK0lmIHlvdSBub3cgcHJlc3MgQ1RSTC1OIHlvdSBnbyBiYWNrIHRvICIvdSIuICBJbnN0ZWFkLCB0byBhY2NlcHQgdGhlICIvdXNyLyIKK2FuZCBnbyBvbmUgZGlyZWN0b3J5IGxldmVsIGRlZXBlciwgdXNlIENUUkwtWCBDVFJMLUYgYWdhaW46CisKKwl0aGUgZmlsZSBpcyBmb3VuZCBpbiAvdXNyL1gxMVI2LyB+CisKK1RoZSByZXN1bHRzIGRlcGVuZCBvbiB3aGF0IGlzIGZvdW5kIGluIHlvdXIgZmlsZSBzeXN0ZW0sIG9mIGNvdXJzZS4gIFRoZQorbWF0Y2hlcyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyoyNC40KglSZXBlYXRpbmcgYW4gaW5zZXJ0CisKK0lmIHlvdSBwcmVzcyBDVFJMLUEsIHRoZSBlZGl0b3IgaW5zZXJ0cyB0aGUgdGV4dCB5b3UgdHlwZWQgdGhlIGxhc3QgdGltZSB5b3UKK3dlcmUgaW4gSW5zZXJ0IG1vZGUuCisgICBBc3N1bWUsIGZvciBleGFtcGxlLCB0aGF0IHlvdSBoYXZlIGEgZmlsZSB0aGF0IGJlZ2lucyB3aXRoIHRoZSBmb2xsb3dpbmc6CisKKwkiZmlsZS5oIiB+CisJLyogTWFpbiBwcm9ncmFtIGJlZ2lucyAqLyB+CisKK1lvdSBlZGl0IHRoaXMgZmlsZSBieSBpbnNlcnRpbmcgIiNpbmNsdWRlICIgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QKK2xpbmU6CisKKwkjaW5jbHVkZSAiZmlsZS5oIiB+CisJLyogTWFpbiBwcm9ncmFtIGJlZ2lucyAqLyB+CisKK1lvdSBnbyBkb3duIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgbGluZSB1c2luZyB0aGUgY29tbWFuZHMgImpeIi4gIFlvdQorbm93IHN0YXJ0IHRvIGluc2VydCBhIG5ldyAiI2luY2x1ZGUiIGxpbmUuICBTbyB5b3UgdHlwZTogPgorCisJaSBDVFJMLUEKKworVGhlIHJlc3VsdCBpcyBhcyBmb2xsb3dzOgorCisJI2luY2x1ZGUgImZpbGUuaCIgfgorCSNpbmNsdWRlIC8qIE1haW4gcHJvZ3JhbSBiZWdpbnMgKi8gfgorCitUaGUgIiNpbmNsdWRlICIgd2FzIGluc2VydGVkIGJlY2F1c2UgQ1RSTC1BIGluc2VydHMgdGhlIHRleHQgb2YgdGhlIHByZXZpb3VzCitpbnNlcnQuICBOb3cgeW91IHR5cGUgICJtYWluLmgiPEVudGVyPiAgdG8gZmluaXNoIHRoZSBsaW5lOgorCisKKwkjaW5jbHVkZSAiZmlsZS5oIiB+CisJI2luY2x1ZGUgIm1haW4uaCIgfgorCS8qIE1haW4gcHJvZ3JhbSBiZWdpbnMgKi8gfgorCitUaGUgQ1RSTC1AIGNvbW1hbmQgZG9lcyBhIENUUkwtQSBhbmQgdGhlbiBleGl0cyBJbnNlcnQgbW9kZS4gIFRoYXQncyBhIHF1aWNrCit3YXkgb2YgZG9pbmcgZXhhY3RseSB0aGUgc2FtZSBpbnNlcnRpb24gYWdhaW4uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKjI0LjUqCUNvcHlpbmcgZnJvbSBhbm90aGVyIGxpbmUKKworVGhlIENUUkwtWSBjb21tYW5kIGluc2VydHMgdGhlIGNoYXJhY3RlciBhYm92ZSB0aGUgY3Vyc29yLiAgVGhpcyBpcyB1c2VmdWwKK3doZW4geW91IGFyZSBkdXBsaWNhdGluZyBhIHByZXZpb3VzIGxpbmUuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdGhpcyBsaW5lIG9mCitDIGNvZGU6CisKKwliX2FycmF5W2ldLT5zX25leHQgPSBhX2FycmF5W2ldLT5zX25leHQ7IH4KKworTm93IHlvdSBuZWVkIHRvIHR5cGUgdGhlIHNhbWUgbGluZSwgYnV0IHdpdGggInNfcHJldiIgaW5zdGVhZCBvZiAic19uZXh0Ii4KK1N0YXJ0IHRoZSBuZXcgbGluZSwgYW5kIHByZXNzIENUUkwtWSAxNCB0aW1lcywgdW50aWwgeW91IGFyZSBhdCB0aGUgIm4iIG9mCisibmV4dCI6CisKKwliX2FycmF5W2ldLT5zX25leHQgPSBhX2FycmF5W2ldLT5zX25leHQ7IH4KKwliX2FycmF5W2ldLT5zXyB+CisKK05vdyB5b3UgdHlwZSAicHJldiI6CisKKwliX2FycmF5W2ldLT5zX25leHQgPSBhX2FycmF5W2ldLT5zX25leHQ7IH4KKwliX2FycmF5W2ldLT5zX3ByZXYgfgorCitDb250aW51ZSBwcmVzc2luZyBDVFJMLVkgdW50aWwgdGhlIGZvbGxvd2luZyAibmV4dCI6CisKKwliX2FycmF5W2ldLT5zX25leHQgPSBhX2FycmF5W2ldLT5zX25leHQ7IH4KKwliX2FycmF5W2ldLT5zX3ByZXYgPSBhX2FycmF5W2ldLT5zXyB+CisKK05vdyB0eXBlICJwcmV2OyIgdG8gZmluaXNoIGl0IG9mZi4KKworVGhlIENUUkwtRSBjb21tYW5kIGFjdHMgbGlrZSBDVFJMLVkgZXhjZXB0IGl0IGluc2VydHMgdGhlIGNoYXJhY3RlciBiZWxvdyB0aGUKK2N1cnNvci4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqMjQuNioJSW5zZXJ0aW5nIGEgcmVnaXN0ZXIKKworVGhlIGNvbW1hbmQgQ1RSTC1SIHtyZWdpc3Rlcn0gaW5zZXJ0cyB0aGUgY29udGVudHMgb2YgdGhlIHJlZ2lzdGVyLiAgVGhpcyBpcwordXNlZnVsIHRvIGF2b2lkIGhhdmluZyB0byB0eXBlIGEgbG9uZyB3b3JkLiAgRm9yIGV4YW1wbGUsIHlvdSBuZWVkIHRvIHR5cGUKK3RoaXM6CisKKwlyID0gVmVyeUxvbmdGdW5jdGlvbihhKSArIFZlcnlMb25nRnVuY3Rpb24oYikgKyBWZXJ5TG9uZ0Z1bmN0aW9uKGMpIH4KKworVGhlIGZ1bmN0aW9uIG5hbWUgaXMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCBmaWxlLiAgRWRpdCB0aGF0IGZpbGUgYW5kIG1vdmUgdGhlCitjdXJzb3Igb24gdG9wIG9mIHRoZSBmdW5jdGlvbiBuYW1lIHRoZXJlLCBhbmQgeWFuayBpdCBpbnRvIHJlZ2lzdGVyIHY6ID4KKworCSJ2eWl3CisKKyJ2IGlzIHRoZSByZWdpc3RlciBzcGVjaWZpY2F0aW9uLCAieWl3IiBpcyB5YW5rLWlubmVyLXdvcmQuICBOb3cgZWRpdCB0aGUgZmlsZQord2hlcmUgdGhlIG5ldyBsaW5lIGlzIHRvIGJlIGluc2VydGVkLCBhbmQgdHlwZSB0aGUgZmlyc3QgbGV0dGVyczoKKworCXIgPSB+CisKK05vdyB1c2UgQ1RSTC1SIHYgdG8gaW5zZXJ0IHRoZSBmdW5jdGlvbiBuYW1lOgorCisJciA9IFZlcnlMb25nRnVuY3Rpb24gfgorCitZb3UgY29udGludWUgdG8gdHlwZSB0aGUgY2hhcmFjdGVycyBpbiBiZXR3ZWVuIHRoZSBmdW5jdGlvbiBuYW1lLCBhbmQgdXNlCitDVFJMLVIgdiB0d28gdGltZXMgbW9yZS4KKyAgIFlvdSBjb3VsZCBoYXZlIGRvbmUgdGhlIHNhbWUgd2l0aCBjb21wbGV0aW9uLiAgVXNpbmcgYSByZWdpc3RlciBpcyB1c2VmdWwKK3doZW4gdGhlcmUgYXJlIG1hbnkgd29yZHMgdGhhdCBzdGFydCB3aXRoIHRoZSBzYW1lIGNoYXJhY3RlcnMuCisKK0lmIHRoZSByZWdpc3RlciBjb250YWlucyBjaGFyYWN0ZXJzIHN1Y2ggYXMgPEJTPiBvciBvdGhlciBzcGVjaWFsIGNoYXJhY3RlcnMsCit0aGV5IGFyZSBpbnRlcnByZXRlZCBhcyBpZiB0aGV5IGhhZCBiZWVuIHR5cGVkIGZyb20gdGhlIGtleWJvYXJkLiAgSWYgeW91IGRvCitub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiAoeW91IHJlYWxseSB3YW50IHRoZSA8QlM+IHRvIGJlIGluc2VydGVkIGluIHRoZSB0ZXh0KSwKK3VzZSB0aGUgY29tbWFuZCBDVFJMLVIgQ1RSTC1SIHtyZWdpc3Rlcn0uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKjI0LjcqCUFiYnJldmlhdGlvbnMKKworQW4gYWJicmV2aWF0aW9uIGlzIGEgc2hvcnQgd29yZCB0aGF0IHRha2VzIHRoZSBwbGFjZSBvZiBhIGxvbmcgb25lLiAgRm9yCitleGFtcGxlLCAiYWQiIHN0YW5kcyBmb3IgImFkdmVydGlzZW1lbnQiLiAgVmltIGVuYWJsZXMgeW91IHRvIHR5cGUgYW4KK2FiYnJldmlhdGlvbiBhbmQgdGhlbiB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwYW5kIGl0IGZvciB5b3UuCisgICBUbyB0ZWxsIFZpbSB0byBleHBhbmQgImFkIiBpbnRvICJhZHZlcnRpc2VtZW50IiBldmVyeSB0aW1lIHlvdSBpbnNlcnQgaXQsCit1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOiA+CisKKwk6aWFiYnJldiBhZCBhZHZlcnRpc2VtZW50CisKK05vdywgd2hlbiB5b3UgdHlwZSAiYWQiLCB0aGUgd2hvbGUgd29yZCAiYWR2ZXJ0aXNlbWVudCIgd2lsbCBiZSBpbnNlcnRlZCBpbnRvCit0aGUgdGV4dC4gIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5IHR5cGluZyBhIGNoYXJhY3RlciB0aGF0IGNhbid0IGJlIHBhcnQgb2YgYQord29yZCwgZm9yIGV4YW1wbGUgYSBzcGFjZToKKworCVdoYXQgSXMgRW50ZXJlZAkJV2hhdCBZb3UgU2VlCisJSSBzYXcgdGhlIGEJCUkgc2F3IHRoZSBhIH4KKwlJIHNhdyB0aGUgYWQJCUkgc2F3IHRoZSBhZCB+CisJSSBzYXcgdGhlIGFkPFNwYWNlPglJIHNhdyB0aGUgYWR2ZXJ0aXNlbWVudDxTcGFjZT4gfgorCitUaGUgZXhwYW5zaW9uIGRvZXNuJ3QgaGFwcGVuIHdoZW4gdHlwaW5nIGp1c3QgImFkIi4gIFRoYXQgYWxsb3dzIHlvdSB0byB0eXBlIGEKK3dvcmQgbGlrZSAiYWRkIiwgd2hpY2ggd2lsbCBub3QgZ2V0IGV4cGFuZGVkLiAgT25seSB3aG9sZSB3b3JkcyBhcmUgY2hlY2tlZAorZm9yIGFiYnJldmlhdGlvbnMuCisKKworQUJCUkVWSUFUSU5HIFNFVkVSQUwgV09SRFMKKworSXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGFuIGFiYnJldmlhdGlvbiB0aGF0IHJlc3VsdHMgaW4gbXVsdGlwbGUgd29yZHMuICBGb3IKK2V4YW1wbGUsIHRvIGRlZmluZSAiSkIiIGFzICJKYWNrIEJlbm55IiwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogPgorCisJOmlhYmJyZXYgSkIgSmFjayBCZW5ueQorCitBcyBhIHByb2dyYW1tZXIsIEkgdXNlIHR3byByYXRoZXIgdW51c3VhbCBhYmJyZXZpYXRpb25zOiA+CisKKwk6aWFiYnJldiAjYiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCTppYWJicmV2ICNlIDxTcGFjZT4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitUaGVzZSBhcmUgdXNlZCBmb3IgY3JlYXRpbmcgYm94ZWQgY29tbWVudHMuICBUaGUgY29tbWVudCBzdGFydHMgd2l0aCAjYiwgd2hpY2gKK2RyYXdzIHRoZSB0b3AgbGluZS4gIEkgdGhlbiB0eXBlIHRoZSBjb21tZW50IHRleHQgYW5kIHVzZSAjZSB0byBkcmF3IHRoZQorYm90dG9tIGxpbmUuCisgICBOb3RpY2UgdGhhdCB0aGUgI2UgYWJicmV2aWF0aW9uIGJlZ2lucyB3aXRoIGEgc3BhY2UuICBJbiBvdGhlciB3b3JkcywgdGhlCitmaXJzdCB0d28gY2hhcmFjdGVycyBhcmUgc3BhY2Utc3Rhci4gIFVzdWFsbHkgVmltIGlnbm9yZXMgc3BhY2VzIGJldHdlZW4gdGhlCithYmJyZXZpYXRpb24gYW5kIHRoZSBleHBhbnNpb24uICBUbyBhdm9pZCB0aGF0IHByb2JsZW0sIEkgc3BlbGwgc3BhY2UgYXMgc2V2ZW4KK2NoYXJhY3RlcnM6IDwsIFMsIHAsIGEsIGMsIGUsID4uCisKKwlOb3RlOgorCSI6aWFiYnJldiIgaXMgYSBsb25nIHdvcmQgdG8gdHlwZS4gICI6aWFiIiB3b3JrcyBqdXN0IGFzIHdlbGwuCisJVGhhdCdzIGFiYnJldmlhdGluZyB0aGUgYWJicmV2aWF0ZSBjb21tYW5kIQorCisKK0ZJWElORyBUWVBJTkcgTUlTVEFLRVMKKworSXQncyB2ZXJ5IGNvbW1vbiB0byBtYWtlIHRoZSBzYW1lIHR5cGluZyBtaXN0YWtlIGV2ZXJ5IHRpbWUuICBGb3IgZXhhbXBsZSwKK3R5cGluZyAidGVoIiBpbnN0ZWFkIG9mICJ0aGUiLiAgWW91IGNhbiBmaXggdGhpcyB3aXRoIGFuIGFiYnJldmlhdGlvbjogPgorCisJOmFiYnJldmlhdGUgdGVoIHRoZQorCitZb3UgY2FuIGFkZCBhIHdob2xlIGxpc3Qgb2YgdGhlc2UuICBBZGQgb25lIGVhY2ggdGltZSB5b3UgZGlzY292ZXIgYSBjb21tb24KK21pc3Rha2UuCisKKworTElTVElORyBBQkJSRVZJQVRJT05TCisKK1RoZSAiOmFiYnJldmlhdGUiIGNvbW1hbmQgbGlzdHMgdGhlIGFiYnJldmlhdGlvbnM6CisKKwk6YWJicmV2aWF0ZQorCWkgICNlCQkgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisJaSAgI2IJCSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCWkgIEpCCQkgSmFjayBCZW5ueQorCWkgIGFkCQkgYWR2ZXJ0aXNlbWVudAorCSEgIHRlaAkJIHRoZQorCitUaGUgImkiIGluIHRoZSBmaXJzdCBjb2x1bW4gaW5kaWNhdGVzIEluc2VydCBtb2RlLiAgVGhlc2UgYWJicmV2aWF0aW9ucyBhcmUKK29ubHkgYWN0aXZlIGluIEluc2VydCBtb2RlLiAgT3RoZXIgcG9zc2libGUgY2hhcmFjdGVycyBhcmU6CisKKwljCUNvbW1hbmQtbGluZSBtb2RlCQkJOmNhYmJyZXYKKwkhCWJvdGggSW5zZXJ0IGFuZCBDb21tYW5kLWxpbmUgbW9kZQk6YWJicmV2aWF0ZQorCitTaW5jZSBhYmJyZXZpYXRpb25zIGFyZSBub3Qgb2Z0ZW4gdXNlZnVsIGluIENvbW1hbmQtbGluZSBtb2RlLCB5b3Ugd2lsbCBtb3N0bHkKK3VzZSB0aGUgIjppYWJicmV2IiBjb21tYW5kLiAgVGhhdCBhdm9pZHMsIGZvciBleGFtcGxlLCB0aGF0ICJhZCIgZ2V0cyBleHBhbmRlZAord2hlbiB0eXBpbmcgYSBjb21tYW5kIGxpa2U6ID4KKworCTplZGl0IGFkCisKKworREVMRVRJTkcgQUJCUkVWSUFUSU9OUworCitUbyBnZXQgcmlkIG9mIGFuIGFiYnJldmlhdGlvbiwgdXNlIHRoZSAiOnVuYWJicmV2aWF0ZSIgY29tbWFuZC4gIFN1cHBvc2UgeW91CitoYXZlIHRoZSBmb2xsb3dpbmcgYWJicmV2aWF0aW9uOiA+CisKKwk6YWJicmV2aWF0ZSBAZiBmcmVzaAorCitZb3UgY2FuIHJlbW92ZSBpdCB3aXRoIHRoaXMgY29tbWFuZDogPgorCisJOnVuYWJicmV2aWF0ZSBAZgorCitXaGlsZSB5b3UgdHlwZSB0aGlzLCB5b3Ugd2lsbCBub3RpY2UgdGhhdCBAZiBpcyBleHBhbmRlZCB0byAiZnJlc2giLiAgRG9uJ3QKK3dvcnJ5IGFib3V0IHRoaXMsIFZpbSB1bmRlcnN0YW5kcyBpdCBhbnl3YXkgKGV4Y2VwdCB3aGVuIHlvdSBoYXZlIGFuCithYmJyZXZpYXRpb24gZm9yICJmcmVzaCIsIGJ1dCB0aGF0J3MgdmVyeSB1bmxpa2VseSkuCisgICBUbyByZW1vdmUgYWxsIHRoZSBhYmJyZXZpYXRpb25zOiA+CisKKwk6YWJjbGVhcgorCisiOnVuYWJicmV2aWF0ZSIgYW5kICI6YWJjbGVhciIgYWxzbyBjb21lIGluIHRoZSB2YXJpYW50cyBmb3IgSW5zZXJ0IG1vZGUKKygiOml1bmFiYnJldmlhdGUgYW5kICI6aWFiY2xlYXIiKSBhbmQgQ29tbWFuZC1saW5lIG1vZGUgKCI6Y3VuYWJicmV2aWF0ZSIgYW5kCisiOmNhYmNsZWFyIikuCisKKworUkVNQVBQSU5HIEFCQlJFVklBVElPTlMKKworVGhlcmUgaXMgb25lIHRoaW5nIHRvIHdhdGNoIG91dCBmb3Igd2hlbiBkZWZpbmluZyBhbiBhYmJyZXZpYXRpb246IFRoZQorcmVzdWx0aW5nIHN0cmluZyBzaG91bGQgbm90IGJlIG1hcHBlZC4gIEZvciBleGFtcGxlOiA+CisKKwk6YWJicmV2aWF0ZSBAYSBhZGRlcgorCTppbWFwIGRkIGRpc2stZG9vcgorCitXaGVuIHlvdSBub3cgdHlwZSBAYSwgeW91IHdpbGwgZ2V0ICJhZGlzay1kb29yZXIiLiAgVGhhdCdzIG5vdCB3aGF0IHlvdSB3YW50LgorVG8gYXZvaWQgdGhpcywgdXNlIHRoZSAiOm5vcmVhYmJyZXYiIGNvbW1hbmQuICBJdCBkb2VzIHRoZSBzYW1lIGFzCisiOmFiYnJldmlhdGUiLCBidXQgYXZvaWRzIHRoYXQgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgdXNlZCBmb3IgbWFwcGluZ3M6ID4KKworCTpub3JlYWJicmV2IEBhIGFkZGVyCisKK0ZvcnR1bmF0ZWx5LCBpdCdzIHVubGlrZWx5IHRoYXQgdGhlIHJlc3VsdCBvZiBhbiBhYmJyZXZpYXRpb24gaXMgbWFwcGVkLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyoyNC44KglFbnRlcmluZyBzcGVjaWFsIGNoYXJhY3RlcnMKKworVGhlIENUUkwtViBjb21tYW5kIGlzIHVzZWQgdG8gaW5zZXJ0IHRoZSBuZXh0IGNoYXJhY3RlciBsaXRlcmFsbHkuICBJbiBvdGhlcgord29yZHMsIGFueSBzcGVjaWFsIG1lYW5pbmcgdGhlIGNoYXJhY3RlciBoYXMsIGl0IHdpbGwgYmUgaWdub3JlZC4gIEZvcgorZXhhbXBsZTogPgorCisJQ1RSTC1WIDxFc2M+CisKK0luc2VydHMgYW4gZXNjYXBlIGNoYXJhY3Rlci4gIFRodXMgeW91IGRvbid0IGxlYXZlIEluc2VydCBtb2RlLiAgKERvbid0IHR5cGUKK3RoZSBzcGFjZSBhZnRlciBDVFJMLVYsIGl0J3Mgb25seSB0byBtYWtlIHRoaXMgZWFzaWVyIHRvIHJlYWQpLgorCisJTm90ZToKKwlPbiBNUy1XaW5kb3dzIENUUkwtViBpcyB1c2VkIHRvIHBhc3RlIHRleHQuICBVc2UgQ1RSTC1RIGluc3RlYWQgb2YKKwlDVFJMLVYuICBPbiBVbml4LCBvbiB0aGUgb3RoZXIgaGFuZCwgQ1RSTC1RIGRvZXMgbm90IHdvcmsgb24gc29tZQorCXRlcm1pbmFscywgYmVjYXVzZSBpdCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcuCisKK1lvdSBjYW4gYWxzbyB1c2UgdGhlIGNvbW1hbmQgQ1RSTC1WIHtkaWdpdHN9IHRvIGluc2VydCBhIGNoYXJhY3RlciB3aXRoIHRoZQorZGVjaW1hbCBudW1iZXIge2RpZ2l0c30uICBGb3IgZXhhbXBsZSwgdGhlIGNoYXJhY3RlciBudW1iZXIgMTI3IGlzIHRoZSA8RGVsPgorY2hhcmFjdGVyIChidXQgbm90IG5lY2Vzc2FyaWx5IHRoZSA8RGVsPiBrZXkhKS4gIFRvIGluc2VydCA8RGVsPiB0eXBlOiA+CisKKwlDVFJMLVYgMTI3CisKK1lvdSBjYW4gZW50ZXIgY2hhcmFjdGVycyB1cCB0byAyNTUgdGhpcyB3YXkuICBXaGVuIHlvdSB0eXBlIGZld2VyIHRoYW4gdHdvCitkaWdpdHMsIGEgbm9uLWRpZ2l0IHdpbGwgdGVybWluYXRlIHRoZSBjb21tYW5kLiAgVG8gYXZvaWQgdGhlIG5lZWQgb2YgdHlwaW5nIGEKK25vbi1kaWdpdCwgcHJlcGVuZCBvbmUgb3IgdHdvIHplcm9zIHRvIG1ha2UgdGhyZWUgZGlnaXRzLgorICAgQWxsIHRoZSBuZXh0IGNvbW1hbmRzIGluc2VydCBhIDxUYWI+IGFuZCB0aGVuIGEgZG90OgorCisJQ1RSTC1WIDkuCisJQ1RSTC1WIDA5LgorCUNUUkwtViAwMDkuCisKK1RvIGVudGVyIGEgY2hhcmFjdGVyIGluIGhleGFkZWNpbWFsLCB1c2UgYW4gIngiIGFmdGVyIHRoZSBDVFJMLVY6ID4KKworCUNUUkwtViB4N2YKKworVGhpcyBhbHNvIGdvZXMgdXAgdG8gY2hhcmFjdGVyIDI1NSAoQ1RSTC1WIHhmZikuICBZb3UgY2FuIHVzZSAibyIgdG8gdHlwZSBhCitjaGFyYWN0ZXIgYXMgYW4gb2N0YWwgbnVtYmVyIGFuZCB0d28gbW9yZSBtZXRob2RzIGFsbG93IHlvdSB0byB0eXBlIHVwIHRvCithIDE2IGJpdCBhbmQgYSAzMiBiaXQgbnVtYmVyIChlLmcuLCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlcik6ID4KKworCUNUUkwtViBvMTIzCisJQ1RSTC1WIHUxMjM0CisJQ1RSTC1WIFUxMjM0NTY3OAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyoyNC45KglEaWdyYXBocworCitTb21lIGNoYXJhY3RlcnMgYXJlIG5vdCBvbiB0aGUga2V5Ym9hcmQuICBGb3IgZXhhbXBsZSwgdGhlIGNvcHlyaWdodCBjaGFyYWN0ZXIKKyipKS4gIFRvIHR5cGUgdGhlc2UgY2hhcmFjdGVycyBpbiBWaW0sIHlvdSB1c2UgZGlncmFwaHMsIHdoZXJlIHR3byBjaGFyYWN0ZXJzCityZXByZXNlbnQgb25lLiAgVG8gZW50ZXIgYSCpLCBmb3IgZXhhbXBsZSwgeW91IHByZXNzIHRocmVlIGtleXM6ID4KKworCUNUUkwtSyBDbworCitUbyBmaW5kIG91dCB3aGF0IGRpZ3JhcGhzIGFyZSBhdmFpbGFibGUsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6ID4KKworCTpkaWdyYXBocworCitWaW0gd2lsbCBkaXNwbGF5IHRoZSBkaWdyYXBoIHRhYmxlLiAgSGVyZSBhcmUgdGhyZWUgbGluZXMgb2YgaXQ6CisKKyAgQUMgfl8gMTU5ICBOUyB8ICAxNjAgICFJIKEgIDE2MSAgQ3QgoiAgMTYyICBQZCCjICAxNjMgIEN1IKQgIDE2NCAgWWUgpSAgMTY1IH4KKyAgQkIgpiAgMTY2ICBTRSCnICAxNjcgICc6IKggIDE2OCAgQ28gqSAgMTY5ICAtYSCqICAxNzAgIDw8IKsgIDE3MSAgTk8grCAgMTcyIH4KKyAgLS0grSAgMTczICBSZyCuICAxNzQgICdtIK8gIDE3NSAgREcgsCAgMTc2ICArLSCxICAxNzcgIDJTILIgIDE3OCAgM1MgsyAgMTc5IH4KKworVGhpcyBzaG93cywgZm9yIGV4YW1wbGUsIHRoYXQgdGhlIGRpZ3JhcGggeW91IGdldCBieSB0eXBpbmcgQ1RSTC1LIFBkIGlzIHRoZQorY2hhcmFjdGVyICijKS4gIFRoaXMgaXMgY2hhcmFjdGVyIG51bWJlciAxNjMgKGRlY2ltYWwpLgorICAgUGQgaXMgc2hvcnQgZm9yIFBvdW5kLiAgTW9zdCBkaWdyYXBocyBhcmUgc2VsZWN0ZWQgdG8gZ2l2ZSB5b3UgYSBoaW50IGFib3V0Cit0aGUgY2hhcmFjdGVyIHRoZXkgd2lsbCBwcm9kdWNlLiAgSWYgeW91IGxvb2sgdGhyb3VnaCB0aGUgbGlzdCB5b3Ugd2lsbAordW5kZXJzdGFuZCB0aGUgbG9naWMuCisgICBZb3UgY2FuIGV4Y2hhbmdlIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGNoYXJhY3RlciwgaWYgdGhlcmUgaXMgbm8gZGlncmFwaCBmb3IKK3RoYXQgY29tYmluYXRpb24uICBUaHVzIENUUkwtSyBkUCBhbHNvIHdvcmtzLiAgU2luY2UgdGhlcmUgaXMgbm8gZGlncmFwaCBmb3IKKyJkUCIgVmltIHdpbGwgYWxzbyBzZWFyY2ggZm9yIGEgIlBkIiBkaWdyYXBoLgorCisJTm90ZToKKwlUaGUgZGlncmFwaHMgZGVwZW5kIG9uIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgVmltIGFzc3VtZXMgeW91IGFyZQorCXVzaW5nLiAgT24gTVMtRE9TIHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIE1TLVdpbmRvd3MuICBBbHdheXMgdXNlCisJIjpkaWdyYXBocyIgdG8gZmluZCBvdXQgd2hpY2ggZGlncmFwaHMgYXJlIGN1cnJlbnRseSBhdmFpbGFibGUuCisKK1lvdSBjYW4gZGVmaW5lIHlvdXIgb3duIGRpZ3JhcGhzLiAgRXhhbXBsZTogPgorCisJOmRpZ3JhcGggYSIg5AorCitUaGlzIGRlZmluZXMgdGhhdCBDVFJMLUsgYSIgaW5zZXJ0cyBhbiDkIGNoYXJhY3Rlci4gIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IHRoZQorY2hhcmFjdGVyIHdpdGggYSBkZWNpbWFsIG51bWJlci4gIFRoaXMgZGVmaW5lcyB0aGUgc2FtZSBkaWdyYXBoOiA+CisKKwk6ZGlncmFwaCBhIiAyMjgKKworTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkaWdyYXBocyBoZXJlOiB8ZGlncmFwaHN8CisgICBBbm90aGVyIHdheSB0byBpbnNlcnQgc3BlY2lhbCBjaGFyYWN0ZXJzIGlzIHdpdGggYSBrZXltYXAuICBNb3JlIGFib3V0IHRoYXQKK2hlcmU6IHw0NS41fAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyoyNC4xMCoJTm9ybWFsIG1vZGUgY29tbWFuZHMKKworSW5zZXJ0IG1vZGUgb2ZmZXJzIGEgbGltaXRlZCBudW1iZXIgb2YgY29tbWFuZHMuICBJbiBOb3JtYWwgbW9kZSB5b3UgaGF2ZSBtYW55Cittb3JlLiAgV2hlbiB5b3Ugd2FudCB0byB1c2Ugb25lLCB5b3UgdXN1YWxseSBsZWF2ZSBJbnNlcnQgbW9kZSB3aXRoIDxFc2M+LAorZXhlY3V0ZSB0aGUgTm9ybWFsIG1vZGUgY29tbWFuZCwgYW5kIHJlLWVudGVyIEluc2VydCBtb2RlIHdpdGggImkiIG9yICJhIi4KKyAgIFRoZXJlIGlzIGEgcXVpY2tlciB3YXkuICBXaXRoIENUUkwtTyB7Y29tbWFuZH0geW91IGNhbiBleGVjdXRlIGFueSBOb3JtYWwKK21vZGUgY29tbWFuZCBmcm9tIEluc2VydCBtb2RlLiAgRm9yIGV4YW1wbGUsIHRvIGRlbGV0ZSBmcm9tIHRoZSBjdXJzb3IgdG8gdGhlCitlbmQgb2YgdGhlIGxpbmU6ID4KKworCUNUUkwtTyBECisKK1lvdSBjYW4gZXhlY3V0ZSBvbmx5IG9uZSBOb3JtYWwgbW9kZSBjb21tYW5kIHRoaXMgd2F5LiAgQnV0IHlvdSBjYW4gc3BlY2lmeSBhCityZWdpc3RlciBvciBhIGNvdW50LiAgQSBtb3JlIGNvbXBsaWNhdGVkIGV4YW1wbGU6ID4KKworCUNUUkwtTyAiZzNkdworCitUaGlzIGRlbGV0ZXMgdXAgdG8gdGhlIHRoaXJkIHdvcmQgaW50byByZWdpc3RlciBnLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTmV4dCBjaGFwdGVyOiB8dXNyXzI1LnR4dHwgIEVkaXRpbmcgZm9ybWF0dGVkIHRleHQKKworQ29weXJpZ2h0OiBzZWUgfG1hbnVhbC1jb3B5cmlnaHR8ICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6Cg==