<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>8791</bug_id>
          
          <creation_ts>2006-05-08 14:27:03 -0700</creation_ts>
          <short_desc>XPath should support custom namespace resolvers</short_desc>
          <delta_ts>2019-02-06 09:02:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10489</blocked>
    
    <blocked>12584</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ian</cc>
    
    <cc>jwmcpeak</cc>
    
    <cc>yt.dev</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>41542</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-08 14:27:03 -0700</bug_when>
    <thetext>XPathEvaluator.evaluate should be able to take a custom node resolver instead of one that&apos;s been created by using XPathEvaluator.createNSResolver. The spec says:

The parameter resolver of the method XPathEvaluator.evaluate is specified as an object that implements the XPathNSResolver interface. ECMAScript users can also pass to this method a function which returns a String and takes a String parameter instead of the resolver parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52498</commentid>
    <comment_count>1</comment_count>
      <attachid>10015</attachid>
    <who name="Jeremy McPeak">jwmcpeak</who>
    <bug_when>2006-08-13 11:14:40 -0700</bug_when>
    <thetext>Created attachment 10015
A quick HTML file showing the use of a user-defined function for the namespace resolver. Works in Gecko and Opera.

The W3C specification states that user-defined functions can be used as namespace resolvers in XPathEvaluator.evaluate() for ECMAScript. This test case shows this usage, and works in Gecko and Opera. When ran in WebKit, a NAMESPACE_ERR error is thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31458</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-01-28 11:25:17 -0800</bug_when>
    <thetext>*** Bug 12413 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29039</commentid>
    <comment_count>3</comment_count>
      <attachid>12892</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-03 01:21:24 -0800</bug_when>
    <thetext>Created attachment 12892
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29023</commentid>
    <comment_count>4</comment_count>
      <attachid>12892</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-03 12:22:13 -0800</bug_when>
    <thetext>Comment on attachment 12892
proposed fix

Looks good.

I don&apos;t see make file changes for the platforms other than Macintosh.

+String JSCustomXPathNSResolver::lookupNamespaceURI(const String&amp; prefix)
+{
+    String result;

Would be better to declare this closer to where it&apos;s used.

+    RefPtr&lt;JSCustomXPathNSResolver&gt; selfProtector(this);

Is there a way to avoid this? Can we just get the values out of member variables and then not access this after calling the function?

Is there a way to cut down on the amount of custom code that&apos;s in the CodeGeneratorJS.pm and CodeGeneratorObjC.pm scripts? Can we make helper functions for the JSCustomXPathNSResolver path so that a little more of the work is in a .cpp file rather than inside a script?

The header guards in NativeXPathNSResolver.h say JSNativeXPathNSResolver_h.

I&apos;m going to say review- even though this is very close to a review+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28696</commentid>
    <comment_count>5</comment_count>
      <attachid>12910</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-04 02:13:55 -0800</bug_when>
    <thetext>Created attachment 12910
proposed fix

(In reply to comment #4)

&gt; I don&apos;t see make file changes for the platforms other than Macintosh.

  Done.

&gt; Would be better to declare this closer to where it&apos;s used.

  Moved it a little down.

&gt; +    RefPtr&lt;JSCustomXPathNSResolver&gt; selfProtector(this);
&gt; 
&gt; Is there a way to avoid this? Can we just get the values out of member
&gt; variables and then not access this after calling the function?

  I don&apos;t know for sure - took it from JSAbstractEventListener::handleEvent(). I suppose it may be needed to protect the frame. Would be nice if these functions could share more code some day, but I don&apos;t feel myself familiar enough with this code to refactor it.

&gt; Is there a way to cut down on the amount of custom code that&apos;s in the
&gt; CodeGeneratorJS.pm and CodeGeneratorObjC.pm scripts? Can we make helper
&gt; functions for the JSCustomXPathNSResolver path so that a little more of the
&gt; work is in a .cpp file rather than inside a script?

  I added a create() function to JSCustomXPathNSResolver, and that saved a few lines in generated code, but not much - so maybe I don&apos;t fully understand your suggestion.

&gt; The header guards in NativeXPathNSResolver.h say JSNativeXPathNSResolver_h.

  Fixed.

  Also added BLOCK_OBJC_EXCEPTIONS to the ObjC resolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27631</commentid>
    <comment_count>6</comment_count>
      <attachid>12910</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-02-04 18:26:47 -0800</bug_when>
    <thetext>Comment on attachment 12910
proposed fix

When it comes to reducing the amount of code in CodeGeneratorJS.pm, I&apos;m suggesting that JSCustomXPathNSResolver have a function that can do this entire job:

+                    push(@implContent, &quot;        RefPtr&lt;XPathNSResolver&gt; customResolver;\n&quot;);
+                    push(@implContent, &quot;        XPathNSResolver* resolver = toXPathNSResolver(args[$paramIndex]);\n&quot;);
+                    push(@implContent, &quot;        if (!resolver) {\n&quot;);
+                    push(@implContent, &quot;            customResolver = JSCustomXPathNSResolver::create(exec, args[$paramIndex]);\n&quot;);
+                    push(@implContent, &quot;            if (exec-&gt;hadException())\n&quot;);
+                    push(@implContent, &quot;                return jsUndefined();\n&quot;);
+                    push(@implContent, &quot;            resolver = customResolver.get();\n&quot;);
+                    push(@implContent, &quot;        }\n&quot;);

so that CodeGeneratorJS.pm has just a single function call, check for exception/null and return of jsUndefined(), which amounts to about half as much code as what&apos;s there now.

Seems like you could do something similar with CodeGeneratorObjC.pm, with a single function that returns a PassRefPtr&lt;XPathNSResolver&gt;.

+#include &quot;XPathNSResolver.h&quot;
+
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefPtr.h&gt;

This requires only Forward.h, not PassRefPtr.h (occurs twice).

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27589</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-02-04 22:07:13 -0800</bug_when>
    <thetext>Committed revision 19398.

(In reply to comment #6)
&gt; so that CodeGeneratorJS.pm has just a single function call, check for
&gt; exception/null and return of jsUndefined(), which amounts to about half as much
&gt; code as what&apos;s there now.

  I see. I didn&apos;t want to make JSCustomXPathNSResolver know about wrapped native resolvers - seems outside its area of responsibility.

&gt; This requires only Forward.h, not PassRefPtr.h (occurs twice).

  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502849</commentid>
    <comment_count>8</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:02:49 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10015</attachid>
            <date>2006-08-13 11:14:40 -0700</date>
            <delta_ts>2006-08-13 11:14:40 -0700</delta_ts>
            <desc>A quick HTML file showing the use of a user-defined function for the namespace resolver. Works in Gecko and Opera.</desc>
            <filename>nstestcase.htm</filename>
            <type>text/html</type>
            <size>1138</size>
            <attacher name="Jeremy McPeak">jwmcpeak</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4NCjxo
ZWFkPg0KICAgIDx0aXRsZT5OYW1lc3BhY2UgUmVzb2x2ZXIgVGVzdCBDYXNlPC90aXRsZT4NCiAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgLy9Tb21lIFhNTA0KICAgIHZh
ciBzWG1sID0gIjxyb290IHhtbG5zPSdodHRwOi8vd3d3Lndkb25saW5lLmNvbSc+PGNoaWxkPkhl
bGxvLCBXb3JsZDwvY2hpbGQ+PC9yb290PiI7DQogICAgDQogICAgLy9UaGUgbmFtZXNwYWNlIHJl
c29sdmVyDQogICAgZnVuY3Rpb24gbnNSZXNvbHZlcihzUHJlZml4KSB7DQogICAgICAgIHN3aXRj
aCAoc1ByZWZpeCkgew0KICAgICAgICAgICAgY2FzZSAiZm9vIjoNCiAgICAgICAgICAgICAgICBy
ZXR1cm4gImh0dHA6Ly93d3cud2RvbmxpbmUuY29tIjsNCiAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgLy9DcmVhdGUg
ZG9jdW1lbnQgDQogICAgdmFyIG9YbWxEb20gPSAobmV3IERPTVBhcnNlcigpKS5wYXJzZUZyb21T
dHJpbmcoc1htbCwidGV4dC94bWwiKTsNCiAgICANCiAgICAvL1hQYXRoIGV4cHJlc3Npb24NCiAg
ICB2YXIgc1hQYXRoID0gImZvbzpjaGlsZC90ZXh0KCkiOw0KICAgIA0KICAgIC8vRXZhbHVhdGUg
dGhlIGV4cHJlc3Npb24NCiAgICB2YXIgb1Jlc3VsdCA9IG9YbWxEb20uZXZhbHVhdGUoc1hQYXRo
LCBvWG1sRG9tLmRvY3VtZW50RWxlbWVudCwgbnNSZXNvbHZlciwgDQogICAgICAgIFhQYXRoUmVz
dWx0Lk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLCBudWxsKTsNCg0KICAgIC8vQWxlcnQgdGhl
IG5vZGUncyB2YWx1ZQ0KICAgIGFsZXJ0KG9SZXN1bHQuaXRlcmF0ZU5leHQoKS5ub2RlVmFsdWUp
Ow0KICAgIDwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHk+DQoNCjwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12892</attachid>
            <date>2007-02-03 01:21:24 -0800</date>
            <delta_ts>2007-02-04 02:13:55 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>8791r1_patch.txt</filename>
            <type>text/plain</type>
            <size>45279</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MzgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDItMDMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTEK
KyAgICAgICAgWFBhdGggc2hvdWxkIHN1cHBvcnQgY3VzdG9tIG5vZGUgcmVzb2x2ZXJzCisKKyAg
ICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QveHBhdGgvbnNyZXNvbHZlci1iYWQtb2JqZWN0LnhodG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItZXhjZXB0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWV4Y2VwdGlvbi54
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0
aW9uLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItb2JqZWN0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9i
amVjdC54aHRtbDogQWRkZWQuCisKIDIwMDctMDItMDIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpz
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dCAmIEFkZWxlLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWJhZC1vYmplY3QtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1iYWQtb2Jq
ZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveHBhdGgv
bnNyZXNvbHZlci1iYWQtb2JqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogWFBhdGhOU1Jlc29sdmVyIGRvZXMgbm90
IGhhdmUgYSBsb29rdXBOYW1lc3BhY2VVUkkgbWV0aG9kLgorU1VDQ0VTUworCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC1l
eHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFp
bgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC94cGF0aC9uc3Jlc29sdmVyLWJhZC1vYmplY3QueGh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWJhZC1vYmplY3QueGh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC54aHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RS
L3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KKzxodG1sIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+DQorPGhlYWQ+DQorICAgIDx0aXRsZT5OYW1lc3Bh
Y2UgUmVzb2x2ZXIgVGVzdCBDYXNlPC90aXRsZT4NCis8L2hlYWQ+DQorPGJvZHk+DQorICAgIDxk
aXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2Pg0KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+PCFbQ0RBVEFbDQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
DQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorDQorICAgIGZ1
bmN0aW9uIE15TlNSZXNvbHZlcigpIHt9DQorDQorICAgIHZhciBzWG1sID0gIjxyb290IHhtbG5z
PSdodHRwOi8vd3d3LmV4YW1wbGUuY29tJz48Y2hpbGQ+U1VDQ0VTUzwvY2hpbGQ+PC9yb290PiI7
DQorICAgIHZhciBvWG1sRG9tID0gKG5ldyBET01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHNY
bWwsICJ0ZXh0L3htbCIpOw0KKw0KKyAgICB0cnkgew0KKw0KKyAgICAgICAgdmFyIG9SZXN1bHQg
PSBvWG1sRG9tLmV2YWx1YXRlKCJmb286Y2hpbGQvdGV4dCgpIiwgb1htbERvbS5kb2N1bWVudEVs
ZW1lbnQsIG5ldyBNeU5TUmVzb2x2ZXIsIA0KKyAgICAgICAgICAgIFhQYXRoUmVzdWx0Lk9SREVS
RURfTk9ERV9JVEVSQVRPUl9UWVBFLCBudWxsKTsNCisNCisgICAgfSBjYXRjaCAoZXgpIHsNCisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9ICJT
VUNDRVNTIjsNCisgICAgfQ0KKyAgICBdXT48L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1s
Pg0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZl
ci1iYWQtb2JqZWN0LnhodG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRl
eHQveG1sCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jl
c29sdmVyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6IFZhbHVlIHVuZGVm
aW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gd2luZG93LmZvb2JhcikgaXMgbm90IG9iamVjdC4K
K1NVQ0NFU1MKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9u
c3Jlc29sdmVyLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWlt
ZS10eXBlCiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWV4Y2VwdGlvbi54aHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItZXhjZXB0aW9u
LnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVy
LWV4Y2VwdGlvbi54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBF
IGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0K
KzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiA+DQorPGhlYWQ+DQor
ICAgIDx0aXRsZT5OYW1lc3BhY2UgUmVzb2x2ZXIgVGVzdCBDYXNlPC90aXRsZT4NCis8L2hlYWQ+
DQorPGJvZHk+DQorICAgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2Pg0KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCFbQ0RBVEFbDQorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7DQorDQorICAgIGZ1bmN0aW9uIE15TlNSZXNvbHZlcigpIHt9DQorICAgIE15TlNSZXNv
bHZlci5wcm90b3R5cGUubG9va3VwTmFtZXNwYWNlVVJJID0gZnVuY3Rpb24ocHJlZml4KSB7DQor
ICAgICAgICB3aW5kb3cuZm9vYmFyKCk7IC8vIHJhaXNlIGFuIGV4Y2VwdGlvbg0KKyAgICB9DQor
DQorICAgIHZhciBzWG1sID0gIjxyb290IHhtbG5zPSdodHRwOi8vd3d3LmV4YW1wbGUuY29tJz48
Y2hpbGQ+U1VDQ0VTUzwvY2hpbGQ+PC9yb290PiI7DQorICAgIHZhciBvWG1sRG9tID0gKG5ldyBE
T01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHNYbWwsICJ0ZXh0L3htbCIpOw0KKw0KKyAgICB0
cnkgew0KKw0KKyAgICAgICAgdmFyIG9SZXN1bHQgPSBvWG1sRG9tLmV2YWx1YXRlKCJmb286Y2hp
bGQvdGV4dCgpIiwgb1htbERvbS5kb2N1bWVudEVsZW1lbnQsIG5ldyBNeU5TUmVzb2x2ZXIsIA0K
KyAgICAgICAgICAgIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLCBudWxs
KTsNCisNCisgICAgfSBjYXRjaCAoZXgpIHsNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsNCisgICAgfQ0KKyAgICBdXT48
L3NjcmlwdD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1leGNlcHRpb24ueGh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC94bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3hwYXRoL25zcmVzb2x2ZXItZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1mdW5jdGlvbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItZnVuY3Rp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1NVQ0NFU1MKKwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1
bmN0aW9uLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0
ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItZnVuY3Rpb24ueGh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0v
L1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcv
VFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4NCis8aGVhZD4NCisgICAgPHRpdGxlPk5hbWVz
cGFjZSBSZXNvbHZlciBUZXN0IENhc2U8L3RpdGxlPg0KKzwvaGVhZD4NCis8Ym9keT4NCisgICAg
PGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+DQorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij48IVtDREFUQVsNCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikNCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisNCisgICAg
ZnVuY3Rpb24gbnNSZXNvbHZlcihzUHJlZml4KSB7DQorICAgICAgICBzd2l0Y2ggKHNQcmVmaXgp
IHsNCisgICAgICAgICAgICBjYXNlICJmb28iOg0KKyAgICAgICAgICAgICAgICByZXR1cm4gImh0
dHA6Ly93d3cuZXhhbXBsZS5jb20iOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAg
ICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCisgICAgICAgICAg
ICAgICAgYnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgdmFyIHNYbWwgPSAiPHJv
b3QgeG1sbnM9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nPjxjaGlsZD5TVUNDRVNTPC9jaGlsZD48
L3Jvb3Q+IjsNCisgICAgdmFyIG9YbWxEb20gPSAobmV3IERPTVBhcnNlcigpKS5wYXJzZUZyb21T
dHJpbmcoc1htbCwgInRleHQveG1sIik7DQorDQorICAgIHRyeSB7DQorDQorICAgICAgICB2YXIg
b1Jlc3VsdCA9IG9YbWxEb20uZXZhbHVhdGUoImZvbzpjaGlsZC90ZXh0KCkiLCBvWG1sRG9tLmRv
Y3VtZW50RWxlbWVudCwgbnNSZXNvbHZlciwgDQorICAgICAgICAgICAgWFBhdGhSZXN1bHQuT1JE
RVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsIG51bGwpOw0KKw0KKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gb1Jlc3VsdC5pdGVyYXRlTmV4dCgp
Lm5vZGVWYWx1ZTsNCisNCisgICAgfSBjYXRjaCAoZXgpIHsNCisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IGV4Ow0KKyAgICB9DQorICAgIF1d
Pjwvc2NyaXB0Pg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1sCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQveG1sCgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItb2JqZWN0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitTVUNDRVNTCisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1vYmplY3Qt
ZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxh
aW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QveHBhdGgvbnNyZXNvbHZlci1vYmplY3QueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC54aHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1vYmplY3QueGh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhU
TUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE
L3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgPg0KKzxoZWFkPg0KKyAgICA8dGl0bGU+TmFtZXNwYWNlIFJlc29sdmVy
IFRlc3QgQ2FzZTwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5Pg0KKyAgICA8ZGl2IGlkPSJyZXN1
bHQiPkZBSUxVUkU8L2Rpdj4NCisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwh
W0NEQVRBWw0KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KKw0KKyAgICBmdW5jdGlvbiBNeU5T
UmVzb2x2ZXIoKSB7fQ0KKyAgICBNeU5TUmVzb2x2ZXIucHJvdG90eXBlLmxvb2t1cE5hbWVzcGFj
ZVVSSSA9IGZ1bmN0aW9uKHByZWZpeCkgew0KKyAgICAgICAgc3dpdGNoIChwcmVmaXgpIHsNCisg
ICAgICAgICAgICBjYXNlICJmb28iOg0KKyAgICAgICAgICAgICAgICByZXR1cm4gImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20iOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBk
ZWZhdWx0Og0KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCisgICAgICAgICAgICAgICAg
YnJlYWs7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgdmFyIHNYbWwgPSAiPHJvb3Q+PGV4
OmNoaWxkIHhtbG5zOmV4PSdodHRwOi8vd3d3LmV4YW1wbGUuY29tJz5TVUNDRVNTPC9leDpjaGls
ZD48L3Jvb3Q+IjsNCisgICAgdmFyIG9YbWxEb20gPSAobmV3IERPTVBhcnNlcigpKS5wYXJzZUZy
b21TdHJpbmcoc1htbCwgInRleHQveG1sIik7DQorDQorICAgIHRyeSB7DQorDQorICAgICAgICB2
YXIgb1Jlc3VsdCA9IG9YbWxEb20uZXZhbHVhdGUoImZvbzpjaGlsZC90ZXh0KCkiLCBvWG1sRG9t
LmRvY3VtZW50RWxlbWVudCwgbmV3IE15TlNSZXNvbHZlciwgDQorICAgICAgICAgICAgWFBhdGhS
ZXN1bHQuT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsIG51bGwpOw0KKw0KKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gb1Jlc3VsdC5pdGVy
YXRlTmV4dCgpLm5vZGVWYWx1ZTsNCisNCisgICAgfSBjYXRjaCAoZXgpIHsNCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IGV4Ow0KKyAgICB9
DQorICAgIF1dPjwvc2NyaXB0Pg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC54aHRtbApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3htbAoKSW5kZXg6IFdlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
OTM4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMDctMDItMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTEKKyAgICAgICAgWFBhdGggc2hvdWxkIHN1
cHBvcnQgY3VzdG9tIG5vZGUgcmVzb2x2ZXJzCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjp+SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVz
cGFjZVVSSSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
aDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DdXN0b21YUGF0aE5TUmVzb2x2
ZXIuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DdXN0b21YUGF0aE5TUmVz
b2x2ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RE9NQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyOjpET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyOjp+RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToK
KyAgICAgICAgV3JhcHBlcnMgZm9yIEpTL09iakMgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGFz
IHJlc29sdmVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06Cisg
ICAgICAgIFVzZSB0aGUgYWJvdmUgd3JhcHBlcnMgdG8gc3VwcG9ydCBjdXN0b20gcmVzb2x2ZXJz
LgorCisgICAgICAgICogeG1sL1hQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgICogeG1sL1hQ
YXRoTlNSZXNvbHZlci5oOgorICAgICAgICBUdXJuZWQgdGhpcyBjbGFzcyBpbnRvIGFuIGFic3Ry
YWN0IG9uZS4KKworICAgICAgICAqIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6TmF0aXZlWFBhdGhO
U1Jlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6fk5h
dGl2ZVhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVYUGF0aE5TUmVz
b2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgICogeG1sL05hdGl2ZVhQYXRoTlNS
ZXNvbHZlci5oOiBBZGRlZC4KKyAgICAgICAgQSBYUGF0aE5TUmVzb2x2ZXIgc3ViY2xhc3MsIGRv
aW5nIHdoYXQgWFBhdGhOU1Jlc29sdmVyIHVzZWQgdG8gZG8uCisKKyAgICAgICAgKiB4bWwvWFBh
dGhFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhFdmFsdWF0b3I6OmNyZWF0
ZU5TUmVzb2x2ZXIpOiBDcmVhdGUgYSBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKwog
MjAwNy0wMi0wMiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogICAgICAgICAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSHlhdHQgJiBBZGVsZS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTM2MykKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODUy
LDYgKzI4NTIsMTIgQEAKIAkJREIyM0MyQ0MwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRl
bnRDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQjIzQzJDQTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAqLzsg
fTsKIAkJREQ3NjNCQjIwOTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDc2M0JCMTA5OTJDMkM5
MDA3NDBCOEUgLyogbGlieG1sMi5keWxpYiAqLzsgfTsKIAkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5
OTI4IC8qIENTU1Vua25vd25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODBFNkNDRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVW5rbm93blJ1bGUu
aCAqLzsgfTsKKwkJRTEwQjkzN0MwQjczQzAwQTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLzsg
fTsKKwkJRTEwQjkzQzMwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5
M0MyMEI3M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgKi87IH07
CisJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5QjZBMEI3
NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKKwkJRTEwQjlC
NkQwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOUI2QjBCNzQ3NTk5MDAz
RUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJRTEwQjlDQ0MwQjc0
N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjlDQ0EwQjc0N0E0NDAwM0VEODkw
IC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oICovOyB9OworCQlFMTBCOUNDRDBCNzQ3QTQ0
MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjlDQ0IwQjc0N0E0NDAwM0VEODkwIC8q
IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbSAqLzsgfTsKIAkJRTExRDUxOTMwQjJFN0E1RjAw
NTZDMTg4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTExRDUxOTEwQjJFN0E1RjAwNTZDMTg4IC8qIEJhc2U2NC5oICovOyB9OwogCQlF
MTFENTE5NDBCMkU3QTVGMDA1NkMxODggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMUQ1MTkyMEIyRTdBNUYwMDU2QzE4OCAvKiBC
YXNlNjQuY3BwICovOyB9OwogCQlFMTJFREI3QjBCMzA4QTc4MDAyNzA0QjYgLyogRXZlbnRUYXJn
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMkVE
QjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MDIzLDYgKzYwMjksMTIgQEAKIAkJREIy
M0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAv
KiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5kZW50T3V0ZGVudENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REQ3NjNCQjEwOTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYnhtbDIuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ4bWwyLmR5bGliOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwQjlCNkEwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTEwQjlCNkIwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNS
ZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVY
UGF0aE5TUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTBCOUND
QTBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTBCOUNDQjBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTFENTE5MTBCMkU3QTVGMDA1NkMxODggLyogQmFzZTY0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTFENTE5MjBCMkU3QTVGMDA1NkMxODggLyogQmFzZTY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODgzNiw2ICs4ODQ4LDggQEAKIAkJCQkxNERGQjMzRjBBN0RG
NzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEw
MEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAw
MzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQlF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLywK
KwkJCQlFMTBCOTNDMjBCNzNDMjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwICovLAogCQkJCTkyOTI2NDc2MEI2MUZDNzIwMEI0MUQzNCAvKiBKU0RvY3VtZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQk5MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdy
YXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJCQk5MzhFNjVGMDA5RjA5ODQwMDA4QTQ4RUMgLyogSlNI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8sCkBAIC04ODk3LDYgKzg5MTEsOCBAQAogCQkJ
CUJDMUEzNzk5MDk3QzcxNUYwMDE5RjNEOCAvKiBET01Db3JlLmggKi8sCiAJCQkJQkMxQTM3OUEw
OTdDNzE1RjAwMTlGM0Q4IC8qIERPTUNTUy5oICovLAogCQkJCUJDMUEzNzlCMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01DU1MubW0gKi8sCisJCQkJRTEwQjlDQ0EwQjc0N0E0NDAwM0VEODkwIC8qIERP
TUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oICovLAorCQkJCUUxMEI5Q0NCMEI3NDdBNDQwMDNFRDg5
MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0gKi8sCiAJCQkJQkMxQTM3OUMwOTdDNzE1
RjAwMTlGM0Q4IC8qIERPTUV2ZW50cy5oICovLAogCQkJCUJDMUEzNzlEMDk3QzcxNUYwMDE5RjNE
OCAvKiBET01FdmVudHMubW0gKi8sCiAJCQkJQkMxQTM3OUYwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TUV4dGVuc2lvbnMuaCAqLywKQEAgLTkxMjMsNiArOTEzOSw4IEBACiAJCQkJMUFDRTUzRTEwQThE
MThFNzAwMjI5NDdEIC8qIERPTVBhcnNlci5jcHAgKi8sCiAJCQkJMUFDRTUzRTIwQThEMThFNzAw
MjI5NDdEIC8qIERPTVBhcnNlci5oICovLAogCQkJCTFBQ0U1M0UzMEE4RDE4RTcwMDIyOTQ3RCAv
KiBET01QYXJzZXIuaWRsICovLAorCQkJCUUxMEI5QjZBMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRp
dmVYUGF0aE5TUmVzb2x2ZXIuaCAqLywKKwkJCQlFMTBCOUI2QjBCNzQ3NTk5MDAzRUQ4OTAgLyog
TmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCAqLywKIAkJCQkxQUNFNTNFNDBBOEQxOEU3MDAyMjk0
N0QgLyogWE1MU2VyaWFsaXplci5jcHAgKi8sCiAJCQkJMUFDRTUzRTUwQThEMThFNzAwMjI5NDdE
IC8qIFhNTFNlcmlhbGl6ZXIuaCAqLywKIAkJCQkxQUNFNTNFNjBBOEQxOEU3MDAyMjk0N0QgLyog
WE1MU2VyaWFsaXplci5pZGwgKi8sCkBAIC0xMTA4Myw2ICsxMTEwMSw5IEBACiAJCQkJNjU5QTdE
MTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODA5RjE0NzBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODA5RjFBQTBCNzM3RkI2MDAyRTREN0YgLyogUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4
OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxMEI5
QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUxMEI5Q0NDMEI3NDdBNDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI0MzUsNiArMTI0NTYsOSBAQAogCQkJCUFBMDk3
MkNDMEI2OTQ3QTgwMEE3MDVFOSAvKiBTVkdJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MDlGMTQ4MEI3Mzc5M0IwMDJFNEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3Au
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwOUYxQUIwQjczN0ZCNjAwMkU0RDdGIC8qIFJlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTBCOTNDMzBCNzND
MjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTEwQjlCNkQwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTBCOUNDRDBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIgorCisjaWZkZWYgWFBBVEhfU1VQ
UE9SVAorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKKyNpbmNsdWRlICJranNfYmluZGlu
Zy5oIgorI2luY2x1ZGUgImtqc19wcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBLSlM7CisKK0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlcihKU09iamVjdCogY3VzdG9tUmVzb2x2ZXIsIEZyYW1lKiBmcmFtZSkKKyAg
ICA6IG1fY3VzdG9tUmVzb2x2ZXIoY3VzdG9tUmVzb2x2ZXIpCisgICAgLCBtX2ZyYW1lKGZyYW1l
KQoreworfQorCitKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6fkpTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyKCkKK3sKK30KKworU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1l
c3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgU3RyaW5nIHJlc3VsdDsKKwor
ICAgIEFTU0VSVChtX2N1c3RvbVJlc29sdmVyKTsKKworICAgIGlmICghbV9mcmFtZSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworICAgIEtKU1Byb3h5KiBwcm94eSA9IG1fZnJhbWUtPnNjcmlw
dFByb3h5KCk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgSlNMb2NrIGxvY2s7CisKKyAgICBTY3JpcHRJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBw
cm94eS0+aW50ZXJwcmV0ZXIoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBpbnRlcnByZXRlci0+
Z2xvYmFsRXhlYygpOworCisgICAgSlNWYWx1ZSogbG9va3VwTmFtZXNwYWNlVVJJRnVuY1ZhbHVl
ID0gbV9jdXN0b21SZXNvbHZlci0+Z2V0KGV4ZWMsICJsb29rdXBOYW1lc3BhY2VVUkkiKTsKKyAg
ICBKU09iamVjdCogbG9va3VwTmFtZXNwYWNlVVJJRnVuYyA9IDA7CisgICAgaWYgKGxvb2t1cE5h
bWVzcGFjZVVSSUZ1bmNWYWx1ZS0+aXNPYmplY3QoKSkgeyAgICAgIAorICAgICAgICBsb29rdXBO
YW1lc3BhY2VVUklGdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihsb29rdXBOYW1lc3BhY2VV
UklGdW5jVmFsdWUpOworICAgICAgICBpZiAoIWxvb2t1cE5hbWVzcGFjZVVSSUZ1bmMtPmltcGxl
bWVudHNDYWxsKCkpCisgICAgICAgICAgICBsb29rdXBOYW1lc3BhY2VVUklGdW5jID0gMDsKKyAg
ICB9CisKKyAgICBpZiAoIWxvb2t1cE5hbWVzcGFjZVVSSUZ1bmMgJiYgIW1fY3VzdG9tUmVzb2x2
ZXItPmltcGxlbWVudHNDYWxsKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IHBhc3MgYWN0dWFsIGxp
bmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgorICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25z
b2xlKCJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBt
ZXRob2QuIiwgMCwgU3RyaW5nKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQor
CisgICAgUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBzZWxmUHJvdGVjdG9yKHRoaXMp
OworCisgICAgTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKHByZWZpeCkpOwor
CisgICAgSlNWYWx1ZSogcmV0dmFsOworICAgIGludGVycHJldGVyLT5zdGFydFRpbWVvdXRDaGVj
aygpOworICAgIGlmIChsb29rdXBOYW1lc3BhY2VVUklGdW5jKQorICAgICAgICByZXR2YWwgPSBs
b29rdXBOYW1lc3BhY2VVUklGdW5jLT5jYWxsKGV4ZWMsIG1fY3VzdG9tUmVzb2x2ZXIsIGFyZ3Mp
OworICAgIGVsc2UKKyAgICAgICAgcmV0dmFsID0gbV9jdXN0b21SZXNvbHZlci0+Y2FsbChleGVj
LCBtX2N1c3RvbVJlc29sdmVyLCBhcmdzKTsKKyAgICBpbnRlcnByZXRlci0+c3RvcFRpbWVvdXRD
aGVjaygpOworCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKS0+dG9PYmplY3QoZXhlYyk7CisgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgbWVzc2FnZVByb3BlcnR5
TmFtZSktPnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBpbnQgbGluZU51bWJlciA9IGV4Y2VwdGlv
bi0+Z2V0KGV4ZWMsICJsaW5lIiktPnRvSW50MzIoZXhlYyk7CisgICAgICAgIFN0cmluZyBzb3Vy
Y2VVUkwgPSBleGNlcHRpb24tPmdldChleGVjLCAic291cmNlVVJMIiktPnRvU3RyaW5nKGV4ZWMp
OworICAgICAgICBpZiAoSW50ZXJwcmV0ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQorICAg
ICAgICAgICAgcHJpbnRmKCJYUGF0aE5TUmVzb2x2ZXI6ICVzXG4iLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAg
ICAgICAgICByZXN1bHQgPSByZXR2YWwtPnRvU3RyaW5nKGV4ZWMpOworICAgIH0KKworICAgIERv
Y3VtZW50Ojp1cGRhdGVEb2N1bWVudHNSZW5kZXJpbmcoKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhQQVRIX1NVUFBPUlQK
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyX2gKKyNkZWZpbmUgSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXJfaAorCisjaWZkZWYgWFBBVEhfU1VQUE9SVAorCisjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVy
LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgS0pTIHsKKyAgICBjbGFz
cyBKU09iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7
CisKKyAgICBjbGFzcyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlciA6IHB1YmxpYyBYUGF0aE5TUmVz
b2x2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIoS0pT
OjpKU09iamVjdCosIEZyYW1lKik7CisgICAgICAgIHZpcnR1YWwgfkpTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyKCk7CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKGNv
bnN0IFN0cmluZyYgcHJlZml4KTsKKworICAgIHByaXZhdGU6CisgICAgICAgICBLSlM6OkpTT2Jq
ZWN0KiBtX2N1c3RvbVJlc29sdmVyOyAvLyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcnMgYXJlIGFs
d2F5cyB0ZW1wb3JhcnksIHRodXMgbm8gbmVlZCB0byBHQyBwcm90ZWN0IHRoZSBvYmplY3QuCisg
ICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gWFBBVEhfU1VQUE9SVAorCisjZW5kaWYgLy8gSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXJfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21YUGF0
aE5TUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcl9oCisjZGVm
aW5lIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcl9oCisKKyNpZmRlZiBYUEFUSF9TVVBQT1JUCisK
KyNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgIkRPTVhQYXRoTlNSZXNv
bHZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGcmFtZTsKKworICAg
IGNsYXNzIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlciA6IHB1YmxpYyBYUGF0aE5TUmVzb2x2ZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKGlkIDxET01Y
UGF0aE5TUmVzb2x2ZXI+KTsKKyAgICAgICAgdmlydHVhbCB+RE9NQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyKCk7CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0
IFN0cmluZyYgcHJlZml4KTsKKworICAgIHByaXZhdGU6CisgICAgICAgICBpZCA8RE9NWFBhdGhO
U1Jlc29sdmVyPiBtX2N1c3RvbVJlc29sdmVyOyAvLyBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXJz
IGFyZSBhbHdheXMgdGVtcG9yYXJ5LCB0aHVzIG5vIG5lZWQgdG8gR0MgcHJvdGVjdCB0aGUgb2Jq
ZWN0LgorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhQQVRI
X1NVUFBPUlQKKworI2VuZGlmIC8vIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcl9oCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1t
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNS
ZXNvbHZlci5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIK
KworI2lmZGVmIFhQQVRIX1NVUFBPUlQKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpET01DdXN0
b21YUGF0aE5TUmVzb2x2ZXIoaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2ZXIp
CisgICAgOiBtX2N1c3RvbVJlc29sdmVyKGN1c3RvbVJlc29sdmVyKQoreworfQorCitET01DdXN0
b21YUGF0aE5TUmVzb2x2ZXI6On5ET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIoKQoreworfQorCitT
dHJpbmcgRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3Qg
U3RyaW5nJiBwcmVmaXgpCit7CisgICAgcmV0dXJuIFttX2N1c3RvbVJlc29sdmVyIGxvb2t1cE5h
bWVzcGFjZVVSSTpwcmVmaXhdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBYUEFUSF9TVVBQT1JUCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAxOTM2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsxNzgsMTEgQEAg
c3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICAgICAkam9pbmVkTmFtZSA9ICR0eXBlOwogICAg
ICAgICAkam9pbmVkTmFtZSA9fiBzL0Fic3xSZWwvLzsKICAgICAgICAgJGltcGxJbmNsdWRlc3si
JHtqb2luZWROYW1lfS5oIn0gPSAxOworICAgIH0gZWxzaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVz
b2x2ZXIiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siSlNYUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3sia2pzX3dpbmRvdy5oIn0gPSAxOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgICMgZGVmYXVsdCwgaW5jbHVkZSB0aGUgc2FtZSBuYW1lZCBmaWxlCiAgICAgICAgICRpbXBs
SW5jbHVkZXN7IiR7dHlwZX0uaCJ9ID0gMTsKQEAgLTEwMDksMjEgKzEwMTQsMzYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBteSAkbmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIGJvb2wgJHtuYW1lfU9rO1xuIikgaWYgVHlwZUNhbkZhaWxDb252
ZXJzaW9uKCRwYXJhbWV0ZXIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAiICRu
YW1lID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0i
LCBUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikgPyAiJHtuYW1lfU9rIiA6IHVuZGVm
KSAuICI7XG4iKTsKLSAgICAgICAgICAgICAgICBpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRw
YXJhbWV0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpZiAoISR7bmFtZX1Paykge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFU
Q0hfRVJSKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuICAgICAgICB9XG4iKTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0
ZXItPnR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IGN1c3RvbVJl
c29sdmVyO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyID0gdG9YUGF0aE5TUmVzb2x2ZXIoYXJnc1sk
cGFyYW1JbmRleF0pO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpZiAoIXJlc29sdmVyICYmICFhcmdzWyRwYXJhbUluZGV4XS0+aXNVbmRlZmlu
ZWRPck51bGwoKSkge1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICAgICAgSlNPYmplY3QqIHJlc29sdmVyT2JqZWN0ID0gYXJnc1skcGFyYW1JbmRl
eF0tPmdldE9iamVjdCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAgICAgaWYgKCFyZXNvbHZlck9iamVjdCkge1xuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICB9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICAgICBjdXN0b21SZXNvbHZlciA9IG5ldyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcihyZXNvbHZl
ck9iamVjdCwgS0pTOjpXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5mcmFtZSgpKTtcbiIp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJl
c29sdmVyID0gY3VzdG9tUmVzb2x2ZXIuZ2V0KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBib29s
ICR7bmFtZX1PaztcbiIpIGlmIFR5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICIgLiBHZXROYXRp
dmVUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyKSAuICIgJG5hbWUgPSAiIC4gSlNWYWx1ZVRv
TmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIsIFR5cGVDYW5GYWlsQ29udmVy
c2lvbigkcGFyYW1ldGVyKSA/ICIke25hbWV9T2siIDogdW5kZWYpIC4gIjtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCEk
e25hbWV9T2spIHtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuICAgICAgICB9XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgIyBJZiBhIHBhcmFtZXRlciBpcyAiYW4gaW5k
ZXgiLCBpdCBzaG91bGQgdGhyb3cgYW4gSU5ERVhfU0laRV9FUlIKLSAgICAgICAgICAgICAgICAj
IGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSXNJbmRleCJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGlmICgkbmFtZSA8IDApIHtcbiIpOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJ
TkRFWF9TSVpFX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiAgICAgICAgfVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgImFuIGluZGV4IiwgaXQgc2hv
dWxkIHRocm93IGFuIElOREVYX1NJWkVfRVJSCisgICAgICAgICAgICAgICAgICAgICMgZXhjZXB0
aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSXNJbmRleCJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgaWYgKCRuYW1lIDwgMCkge1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBJTkRFWF9TSVpFX0VSUik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4gICAg
ICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShy
ZXZpc2lvbiAxOTM2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN1YiBHZXRPYmpDVHlw
ZUdldHRlcgogCiAgICAgbXkgJHR5cGVHZXR0ZXJNZXRob2ROYW1lID0gR2V0T2JqQ1R5cGVHZXR0
ZXJOYW1lKCR0eXBlKTsKIAotICAgIHJldHVybiAiW25hdGl2ZVJlc29sdmVyICR0eXBlR2V0dGVy
TWV0aG9kTmFtZV0iIGlmICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOworICAgIHJldHVybiAi
bmF0aXZlUmVzb2x2ZXIiIGlmICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiOwogICAgIHJldHVy
biAiWyRhcmdOYW1lICR0eXBlR2V0dGVyTWV0aG9kTmFtZV0iOwogfQogCkBAIC01NDMsNiArNTQz
LDkgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oIn0gPSAxOworICAgIH0KIAogICAgICMgRklY
TUU6IHdvbid0IGNvbXBpbGUgd2l0aG91dCB0aGVzZQogICAgICRpbXBsSW5jbHVkZXN7IkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgifSA9IDEgaWYgJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFy
YXRpb24iOwpAQCAtMTEzMSw5ICsxMTM0LDE2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAjIHNwZWNpYWwgY2FzZSB0aGUgWFBhdGhOU1Jlc29sdmVyCiAgICAgICAg
ICAgICBpZiAoZGVmaW5lZCAkbmVlZHNDdXN0b217IlhQYXRoTlNSZXNvbHZlciJ9KSB7CiAgICAg
ICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRuZWVkc0N1c3RvbXsiWFBhdGhOU1Jlc29sdmVy
In07Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICgkcGFy
YW1OYW1lICYmICFbJHBhcmFtTmFtZSBpc01lbWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNS
ZXNvbHZlciBjbGFzc11dKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250
ZW50LCAiICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpcQFwiY3JlYXRlRXhwcmVzc2lvbiBjdXJyZW50bHkgZG9lcyBub3Qgd29yayB3aXRoIGN1c3Rv
bSBOUyByZXNvbHZlcnNcIl07XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNv
bnRlbnQsICIgICAgRE9NTmF0aXZlWFBhdGhOU1Jlc29sdmVyICpuYXRpdmVSZXNvbHZlciA9IChE
T01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKikkcGFyYW1OYW1lO1xuXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVy
KiBuYXRpdmVSZXNvbHZlciA9IDA7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlv
bkNvbnRlbnQsICIgICAgUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVz
b2x2ZXI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAg
aWYgKCRwYXJhbU5hbWUpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29u
dGVudCwgIiAgICAgICAgaWYgKFskcGFyYW1OYW1lIGlzTWVtYmVyT2ZDbGFzczpbRE9NTmF0aXZl
WFBhdGhOU1Jlc29sdmVyIGNsYXNzXV0pXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbkNvbnRlbnQsICIgICAgICAgICAgICBuYXRpdmVSZXNvbHZlciA9IFsoRE9NTmF0aXZlWFBh
dGhOU1Jlc29sdmVyICopJHBhcmFtTmFtZSBfeHBhdGhOU1Jlc29sdmVyXTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAgZWxzZSB7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgICAgICBjdXN0b21S
ZXNvbHZlciA9IG5ldyBXZWJDb3JlOjpET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIoJHBhcmFtTmFt
ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAg
ICAgICBuYXRpdmVSZXNvbHZlciA9IGN1c3RvbVJlc29sdmVyLmdldCgpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAgICB9XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIHRoZSBFdmVudFRhcmdldApJbmRleDogV2Vi
Q29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS94
bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBv
cC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVYUGF0
aE5TUmVzb2x2ZXIuaCIKKworI2lmZGVmIFhQQVRIX1NVUFBPUlQKKworI2luY2x1ZGUgIk5vZGUu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K05hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6TmF0aXZlWFBhdGhOU1Jlc29sdmVyKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKKyAgICA6IG1fbm9kZShub2RlKQoreworfQorCitOYXRpdmVYUGF0aE5TUmVz
b2x2ZXI6On5OYXRpdmVYUGF0aE5TUmVzb2x2ZXIoKQoreworfQorCitTdHJpbmcgTmF0aXZlWFBh
dGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7
CisgICAgLy8gVGhpcyBpcyBub3QgZG9uZSBieSBOb2RlOjpsb29rdXBOYW1lc3BhY2VVUkkgYXMg
cGVyIHRoZSBET00zIENvcmUgc3BlYywKKyAgICAvLyBidXQgdGhlIFhQYXRoIHNwZWMgc2F5cyB0
aGF0IHdlIHNob3VsZCBkbyBpdCBmb3IgWFBhdGhOU1Jlc29sdmVyLgorICAgIGlmIChwcmVmaXgg
PT0gInhtbCIpCisgICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFt
ZXNwYWNlIjsKKyAgICAKKyAgICByZXR1cm4gbV9ub2RlID8gbV9ub2RlLT5sb29rdXBOYW1lc3Bh
Y2VVUkkocHJlZml4KSA6IFN0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBYUEFUSF9TVVBQT1JUCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL3ht
bC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTTmF0aXZlWFBhdGhO
U1Jlc29sdmVyX2gKKyNkZWZpbmUgSlNOYXRpdmVYUGF0aE5TUmVzb2x2ZXJfaAorCisjaWZkZWYg
WFBBVEhfU1VQUE9SVAorCisjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCisKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgTm9kZTsKKworICAgIGNsYXNzIE5hdGl2ZVhQYXRoTlNS
ZXNvbHZlciA6IHB1YmxpYyBYUGF0aE5TUmVzb2x2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
TmF0aXZlWFBhdGhOU1Jlc29sdmVyKFBhc3NSZWZQdHI8Tm9kZT4pOworICAgICAgICB2aXJ0dWFs
IH5OYXRpdmVYUGF0aE5TUmVzb2x2ZXIoKTsKKworICAgICAgICB2aXJ0dWFsIFN0cmluZyBsb29r
dXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBYUEFUSF9TVVBQT1JUCisKKyNlbmRpZiAvLyBKU05hdGl2ZVhQYXRo
TlNSZXNvbHZlcl9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL3htbC9OYXRpdmVYUGF0
aE5TUmVzb2x2ZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUK
CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV2YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWFBhdGhFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiAxOTM2MykKKysrIFdlYkNvcmUv
eG1sL1hQYXRoRXZhbHVhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAog
I2lmZGVmIFhQQVRIX1NVUFBPUlQKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiWFBhdGhFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5j
bHVkZSAiWFBhdGhSZXN1bHQuaCIKICNpbmNsdWRlICJYUGF0aFV0aWwuaCIKIApAQCAtNDksNyAr
NDksNyBAQCBQYXNzUmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gWFBhdGhFdmFsdWF0CiAKIFBhc3NS
ZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBYUGF0aEV2YWx1YXRvcjo6Y3JlYXRlTlNSZXNvbHZlcihO
b2RlKiBub2RlUmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBYUGF0aE5TUmVzb2x2ZXIobm9k
ZVJlc29sdmVyKTsKKyAgICByZXR1cm4gbmV3IE5hdGl2ZVhQYXRoTlNSZXNvbHZlcihub2RlUmVz
b2x2ZXIpOwogfQogCiBQYXNzUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV2YWx1YXRvcjo6ZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLApJbmRleDogV2ViQ29yZS94bWwvWFBhdGhO
U1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
Y3BwCShyZXZpc2lvbiAxOTM2MykKKysrIFdlYkNvcmUveG1sL1hQYXRoTlNSZXNvbHZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDI5ICsyOSwxMiBAQAogCiAjaWZkZWYgWFBBVEhfU1VQUE9S
VAogCi0jaW5jbHVkZSAiTm9kZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVhQYXRoTlNS
ZXNvbHZlcjo6WFBhdGhOU1Jlc29sdmVyKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKLSAgICA6IG1f
bm9kZShub2RlKQotewotfQotCiBYUGF0aE5TUmVzb2x2ZXI6On5YUGF0aE5TUmVzb2x2ZXIoKQog
ewogfQogCi1TdHJpbmcgWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3Qg
U3RyaW5nJiBwcmVmaXgpCi17Ci0gICAgLy8gVGhpcyBpcyBub3QgZG9uZSBieSBOb2RlOjpsb29r
dXBOYW1lc3BhY2VVUkkgYXMgcGVyIHRoZSBET00zIENvcmUgc3BlYywKLSAgICAvLyBidXQgdGhl
IFhQYXRoIHNwZWMgc2F5cyB0aGF0IHdlIHNob3VsZCBkbyBpdCBmb3IgWFBhdGhOU1Jlc29sdmVy
LgotICAgIGlmIChwcmVmaXggPT0gInhtbCIpCi0gICAgICAgIHJldHVybiAiaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIjsKLSAgICAKLSAgICByZXR1cm4gbV9ub2RlID8gbV9u
b2RlLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KSA6IFN0cmluZygpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBYUEFUSF9TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24g
MTkzNjMpCisrKyBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMjMgKzMwLDE1IEBACiAjaWZkZWYgWFBBVEhfU1VQUE9SVAogCiAjaW5jbHVkZSAiU2hh
cmVkLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU3Ry
aW5nOwogCiAgICAgY2xhc3MgWFBhdGhOU1Jlc29sdmVyIDogcHVibGljIFNoYXJlZDxYUGF0aE5T
UmVzb2x2ZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFhQYXRoTlNSZXNvbHZlcihQYXNzUmVm
UHRyPE5vZGU+KTsKLSAgICAgICAgflhQYXRoTlNSZXNvbHZlcigpOwotCi0gICAgICAgIFN0cmlu
ZyBsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICAgICAgdmlydHVhbCB+WFBhdGhO
U1Jlc29sdmVyKCk7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGxvb2t1cE5hbWVzcGFjZVVSSShj
b25zdCBTdHJpbmcmIHByZWZpeCkgPSAwOwogICAgIH07CiAKIH0KQEAgLTU0LDQgKzQ2LDMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmIC8vIFhQQVRIX1NVUFBPUlQKIAogI2VuZGlmIC8v
IFhQYXRoTlNSZXNvbHZlcl9oCi0K
</data>
<flag name="review"
          id="4952"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12910</attachid>
            <date>2007-02-04 02:13:55 -0800</date>
            <delta_ts>2007-02-04 18:26:47 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>8791r2_patch.txt</filename>
            <type>text/plain</type>
            <size>47844</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5MzkxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMDItMDQgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTEK
KyAgICAgICAgWFBhdGggc2hvdWxkIHN1cHBvcnQgY3VzdG9tIG5vZGUgcmVzb2x2ZXJzCisKKyAg
ICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QveHBhdGgvbnNyZXNvbHZlci1iYWQtb2JqZWN0LnhodG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItZXhjZXB0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWV4Y2VwdGlvbi54
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0
aW9uLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3hwYXRoL25zcmVzb2x2ZXItb2JqZWN0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9i
amVjdC54aHRtbDogQWRkZWQuCisKIDIwMDctMDItMDMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBMYW5kaW5nIHJlc3VsdHMgdGhhdCBJIHRoaW5rIE1hY2ll
aiBpbnRlbmRlZCB0byBsYW5kLCB0byBnZXQgdGhlIGJ1aWxkYm90CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWJhZC1vYmplY3QtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVy
LWJhZC1vYmplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2ZSBhIGxv
b2t1cE5hbWVzcGFjZVVSSSBtZXRob2QuCitTVUNDRVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1iYWQtb2JqZWN0LWV4cGVjdGVkLnR4
dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2
bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25z
cmVzb2x2ZXItYmFkLW9iamVjdC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1iYWQtb2JqZWN0LnhodG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhI
VE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgPgorPGhlYWQ+CisgICAgPHRpdGxlPk5hbWVzcGFjZSBSZXNvbHZlciBU
ZXN0IENhc2U8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0icmVzdWx0Ij5G
QUlMVVJFPC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhW0NEQVRB
WworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIE15TlNSZXNvbHZlcigp
IHt9CisKKyAgICB2YXIgc1htbCA9ICI8cm9vdCB4bWxucz0naHR0cDovL3d3dy5leGFtcGxlLmNv
bSc+PGNoaWxkPlNVQ0NFU1M8L2NoaWxkPjwvcm9vdD4iOworICAgIHZhciBvWG1sRG9tID0gKG5l
dyBET01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHNYbWwsICJ0ZXh0L3htbCIpOworCisgICAg
dHJ5IHsKKworICAgICAgICB2YXIgb1Jlc3VsdCA9IG9YbWxEb20uZXZhbHVhdGUoImZvbzpjaGls
ZC90ZXh0KCkiLCBvWG1sRG9tLmRvY3VtZW50RWxlbWVudCwgbmV3IE15TlNSZXNvbHZlciwgCisg
ICAgICAgICAgICBYUGF0aFJlc3VsdC5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSwgbnVsbCk7
CisKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikudGV4dENvbnRlbnQgPSAiU1VDQ0VTUyI7CisgICAgfQorICAgIF1dPjwvc2NyaXB0
PgorCis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9m
YXN0L3hwYXRoL25zcmVzb2x2ZXItYmFkLW9iamVjdC54aHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyB0ZXh0L3htbAoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveHBhdGgv
bnNyZXNvbHZlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE0OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIHdpbmRvdy5mb29i
YXIpIGlzIG5vdCBvYmplY3QuCitTVUNDRVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1z
dHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZl
ci1leGNlcHRpb24ueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9u
c3Jlc29sdmVyLWV4Y2VwdGlvbi54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QveHBhdGgvbnNyZXNvbHZlci1leGNlcHRpb24ueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRy
YW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10
cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIiA+Cis8aGVhZD4KKyAgICA8dGl0bGU+TmFtZXNwYWNlIFJlc29sdmVyIFRlc3QgQ2FzZTwv
dGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rp
dj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCFbQ0RBVEFbCisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gTXlOU1Jlc29sdmVyKCkge30KKyAgICBN
eU5TUmVzb2x2ZXIucHJvdG90eXBlLmxvb2t1cE5hbWVzcGFjZVVSSSA9IGZ1bmN0aW9uKHByZWZp
eCkgeworICAgICAgICB3aW5kb3cuZm9vYmFyKCk7IC8vIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAg
IH0KKworICAgIHZhciBzWG1sID0gIjxyb290IHhtbG5zPSdodHRwOi8vd3d3LmV4YW1wbGUuY29t
Jz48Y2hpbGQ+U1VDQ0VTUzwvY2hpbGQ+PC9yb290PiI7CisgICAgdmFyIG9YbWxEb20gPSAobmV3
IERPTVBhcnNlcigpKS5wYXJzZUZyb21TdHJpbmcoc1htbCwgInRleHQveG1sIik7CisKKyAgICB0
cnkgeworCisgICAgICAgIHZhciBvUmVzdWx0ID0gb1htbERvbS5ldmFsdWF0ZSgiZm9vOmNoaWxk
L3RleHQoKSIsIG9YbWxEb20uZG9jdW1lbnRFbGVtZW50LCBuZXcgTXlOU1Jlc29sdmVyLCAKKyAg
ICAgICAgICAgIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLCBudWxsKTsK
KworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS50ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsKKyAgICB9CisgICAgXV0+PC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zh
c3QveHBhdGgvbnNyZXNvbHZlci1leGNlcHRpb24ueGh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
bWltZS10eXBlCiAgICsgdGV4dC94bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25z
cmVzb2x2ZXItZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QveHBhdGgvbnNyZXNvbHZlci1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItZnVuY3Rpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1NVQ0NFU1MKKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLWV4cGVj
dGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5h
bWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hw
YXRoL25zcmVzb2x2ZXItZnVuY3Rpb24ueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhI
VE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgPgorPGhlYWQ+CisgICAgPHRpdGxlPk5hbWVzcGFjZSBSZXNvbHZlciBU
ZXN0IENhc2U8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0icmVzdWx0Ij5G
QUlMVVJFPC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhW0NEQVRB
WworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIG5zUmVzb2x2ZXIoc1By
ZWZpeCkgeworICAgICAgICBzd2l0Y2ggKHNQcmVmaXgpIHsKKyAgICAgICAgICAgIGNhc2UgImZv
byI6CisgICAgICAgICAgICAgICAgcmV0dXJuICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2YXIgc1htbCA9ICI8cm9vdCB4bWxucz0naHR0cDovL3d3dy5leGFtcGxlLmNvbSc+
PGNoaWxkPlNVQ0NFU1M8L2NoaWxkPjwvcm9vdD4iOworICAgIHZhciBvWG1sRG9tID0gKG5ldyBE
T01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHNYbWwsICJ0ZXh0L3htbCIpOworCisgICAgdHJ5
IHsKKworICAgICAgICB2YXIgb1Jlc3VsdCA9IG9YbWxEb20uZXZhbHVhdGUoImZvbzpjaGlsZC90
ZXh0KCkiLCBvWG1sRG9tLmRvY3VtZW50RWxlbWVudCwgbnNSZXNvbHZlciwgCisgICAgICAgICAg
ICBYUGF0aFJlc3VsdC5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSwgbnVsbCk7CisKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gb1Jlc3Vs
dC5pdGVyYXRlTmV4dCgpLm5vZGVWYWx1ZTsKKworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IGV4OworICAg
IH0KKyAgICBdXT48L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLWZ1bmN0aW9uLnhodG1sCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQveG1sCgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25zcmVzb2x2ZXItb2Jq
ZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitTVUNDRVNTCisK
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1v
YmplY3QtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRl
eHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1vYmplY3QueGh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC94cGF0aC9uc3Jlc29sdmVyLW9iamVjdC54aHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QveHBhdGgvbnNyZXNvbHZlci1vYmplY3QueGh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRt
bDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIiA+Cis8aGVhZD4KKyAgICA8dGl0bGU+TmFtZXNwYWNlIFJlc29s
dmVyIFRlc3QgQ2FzZTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJyZXN1
bHQiPkZBSUxVUkU8L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCFb
Q0RBVEFbCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gTXlOU1Jlc29s
dmVyKCkge30KKyAgICBNeU5TUmVzb2x2ZXIucHJvdG90eXBlLmxvb2t1cE5hbWVzcGFjZVVSSSA9
IGZ1bmN0aW9uKHByZWZpeCkgeworICAgICAgICBzd2l0Y2ggKHByZWZpeCkgeworICAgICAgICAg
ICAgY2FzZSAiZm9vIjoKKyAgICAgICAgICAgICAgICByZXR1cm4gImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20iOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZhciBzWG1sID0gIjxyb290PjxleDpjaGlsZCB4bWxuczpleD0n
aHR0cDovL3d3dy5leGFtcGxlLmNvbSc+U1VDQ0VTUzwvZXg6Y2hpbGQ+PC9yb290PiI7CisgICAg
dmFyIG9YbWxEb20gPSAobmV3IERPTVBhcnNlcigpKS5wYXJzZUZyb21TdHJpbmcoc1htbCwgInRl
eHQveG1sIik7CisKKyAgICB0cnkgeworCisgICAgICAgIHZhciBvUmVzdWx0ID0gb1htbERvbS5l
dmFsdWF0ZSgiZm9vOmNoaWxkL3RleHQoKSIsIG9YbWxEb20uZG9jdW1lbnRFbGVtZW50LCBuZXcg
TXlOU1Jlc29sdmVyLCAKKyAgICAgICAgICAgIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9JVEVS
QVRPUl9UWVBFLCBudWxsKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikudGV4dENvbnRlbnQgPSBvUmVzdWx0Lml0ZXJhdGVOZXh0KCkubm9kZVZhbHVlOworCisg
ICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLnRleHRDb250ZW50ID0gZXg7CisgICAgfQorICAgIF1dPjwvc2NyaXB0PgorCis8L2JvZHk+
Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL25z
cmVzb2x2ZXItb2JqZWN0LnhodG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICAr
IHRleHQveG1sCgpJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTM5MSkKKysrIFdlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw2ICs3MDQsNyBAQCBzZXQoV2ViQ29yZV9T
UkNTCiAKICAgICAjIEN1c3RvbSBKYXZhU2NyaXB0IG9iamVjdCBpbXBsZW1lbnRhdGlvbnMKICAg
ICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKyAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTExOTIsNiArMTE5Myw3IEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBwbGF0Zm9ybS9xdC9X
aWRnZXRRdC5jcHAKIAogICAgIHhtbC9ET01QYXJzZXIuY3BwCisgICAgeG1sL0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHAKICAgICB4bWwveG1saHR0cHJlcXVlc3QuY3BwCiAgICAgeG1sL1hNTFNl
cmlhbGl6ZXIuY3BwCiAgICAgeG1sL1hQYXRoRXZhbHVhdG9yLmNwcApJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mzkx
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAor
MjAwNy0wMi0wNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MQorICAgICAgICBYUGF0aCBzaG91bGQgc3VwcG9y
dCBjdXN0b20gbm9kZSByZXNvbHZlcnMKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6fkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmg6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6RE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUN1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6fkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpET01DdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAg
IFdyYXBwZXJzIGZvciBKUy9PYmpDIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBhcyByZXNvbHZl
cnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOgorICAgICAgICBV
c2UgdGhlIGFib3ZlIHdyYXBwZXJzIHRvIHN1cHBvcnQgY3VzdG9tIHJlc29sdmVycy4KKworICAg
ICAgICAqIHhtbC9YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aE5TUmVz
b2x2ZXIuaDoKKyAgICAgICAgVHVybmVkIHRoaXMgY2xhc3MgaW50byBhbiBhYnN0cmFjdCBvbmUu
CisKKyAgICAgICAgKiB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVYUGF0aE5TUmVzb2x2ZXI6Ok5hdGl2ZVhQYXRoTlNSZXNvbHZl
cik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVYUGF0aE5TUmVzb2x2ZXI6On5OYXRpdmVYUGF0
aE5TUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlWFBhdGhOU1Jlc29sdmVyOjps
b29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIu
aDogQWRkZWQuCisgICAgICAgIEEgWFBhdGhOU1Jlc29sdmVyIHN1YmNsYXNzLCBkb2luZyB3aGF0
IFhQYXRoTlNSZXNvbHZlciB1c2VkIHRvIGRvLgorCisgICAgICAgICogeG1sL1hQYXRoRXZhbHVh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXZhbHVhdG9yOjpjcmVhdGVOU1Jlc29s
dmVyKTogQ3JlYXRlIGEgTmF0aXZlWFBhdGhOU1Jlc29sdmVyLgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBuZXcgZmlsZXMuCisKIDIwMDctMDIt
MDQgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDE5MzkxKQorKysgV2ViQ29yZS9XZWJDb3Jl
LnBybwkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw3IEBAIElETF9CSU5ESU5HUyArPSBc
CiAKIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCBcCisgICAgYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBcCiAgICAgYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBcCiAgICAgYmluZGluZ3MvanMv
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTY3Niw2ICs2NzcsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgXAogICAgIHJlbmRlcmluZy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBcCiAgICAgeG1sL0RPTVBhcnNlci5jcHAgXAorICAgIHht
bC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwIFwKICAgICB4bWwveG1saHR0cHJlcXVlc3QuY3Bw
IFwKICAgICB4bWwvWE1MU2VyaWFsaXplci5jcHAgXAogICAgIHhtbC9YUGF0aEV2YWx1YXRvci5j
cHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDE5MzkxKQorKysgV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw2ICs0NTgsNyBAQAogCiAgICAg
PHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX1hNTCI+CiAgICAgICAgIHhtbC9E
T01QYXJzZXIuY3BwCisgICAgICAgIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCiAgICAg
ICAgIHhtbC9YTUxTZXJpYWxpemVyLmNwcAogICAgICAgICB4bWwvWFBhdGhFdmFsdWF0b3IuY3Bw
CiAgICAgICAgIHhtbC9YUGF0aEV4cHJlc3Npb24uY3BwCkBAIC02NzksNiArNjgwLDcgQEAKIAog
ICAgIDxzZXQgYXBwZW5kPSIxIiB2YXI9IldFQkNPUkVfU09VUkNFU19KUyI+CiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICAgICAgYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxOTM5MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODUyLDYgKzI4NTIsMTIgQEAKIAkJREIyM0My
Q0MwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIzQzJDQTBBNTA4RDI5MDAyNDg5
RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAqLzsgfTsKIAkJREQ3NjNCQjIwOTkyQzJDOTAw
NzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUgLyogbGlieG1sMi5keWxp
YiAqLzsgfTsKIAkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNkNDRTBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTVW5rbm93blJ1bGUuaCAqLzsgfTsKKwkJRTEwQjkzN0MwQjcz
QzAwQTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKKwkJRTEwQjkzQzMwQjczQzI5MTAw
M0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5M0MyMEI3M0MyOTEwMDNFRDg5MCAvKiBK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgKi87IH07CisJCUUxMEI5QjZDMEI3NDc1OTkwMDNF
RDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5QjZBMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVY
UGF0aE5TUmVzb2x2ZXIuaCAqLzsgfTsKKwkJRTEwQjlCNkQwQjc0NzU5OTAwM0VEODkwIC8qIE5h
dGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTBCOUI2QjBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jl
c29sdmVyLmNwcCAqLzsgfTsKKwkJRTEwQjlDQ0MwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3Rv
bVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEwQjlDQ0EwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNv
bHZlci5oICovOyB9OworCQlFMTBCOUNDRDBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTEwQjlDQ0IwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZl
ci5tbSAqLzsgfTsKIAkJRTExRDUxOTMwQjJFN0E1RjAwNTZDMTg4IC8qIEJhc2U2NC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExRDUxOTEwQjJFN0E1
RjAwNTZDMTg4IC8qIEJhc2U2NC5oICovOyB9OwogCQlFMTFENTE5NDBCMkU3QTVGMDA1NkMxODgg
LyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMUQ1MTkyMEIyRTdBNUYwMDU2QzE4OCAvKiBCYXNlNjQuY3BwICovOyB9OwogCQlFMTJF
REI3QjBCMzA4QTc4MDAyNzA0QjYgLyogRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBF
dmVudFRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC02MDIzLDYgKzYwMjksMTIgQEAKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8q
IEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1hbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3NjNCQjEwOTkyQzJDOTAwNzQwQjhF
IC8qIGxpYnhtbDIuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnhtbDIuZHlsaWI7
IHBhdGggPSAvdXNyL2xpYi9saWJ4bWwyLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4i
OyB9OworCQlFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwQjkzQzIwQjczQzI5MTAw
M0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQ
YXRoTlNSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVY
UGF0aE5TUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwQjlCNkIw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTBCOUNDQTBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMTBCOUNDQjBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE5MTBCMkU3
QTVGMDA1NkMxODggLyogQmFzZTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJhc2U2NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTFENTE5MjBCMkU3QTVG
MDA1NkMxODggLyogQmFzZTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJhc2U2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMkVEQjdBMEIz
MDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgz
Niw2ICs4ODQ4LDggQEAKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBT
b3VyY2VzICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQlFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLywKKwkJCQlFMTBCOTNDMjBCNzNDMjkxMDAz
RUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICovLAogCQkJCTkyOTI2NDc2MEI2
MUZDNzIwMEI0MUQzNCAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk5MzhFNjVGNjA5
RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywKIAkJ
CQk5MzhFNjVGMDA5RjA5ODQwMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5
LmggKi8sCkBAIC04ODk3LDYgKzg5MTEsOCBAQAogCQkJCUJDMUEzNzk5MDk3QzcxNUYwMDE5RjNE
OCAvKiBET01Db3JlLmggKi8sCiAJCQkJQkMxQTM3OUEwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUNT
Uy5oICovLAogCQkJCUJDMUEzNzlCMDk3QzcxNUYwMDE5RjNEOCAvKiBET01DU1MubW0gKi8sCisJ
CQkJRTEwQjlDQ0EwQjc0N0E0NDAwM0VEODkwIC8qIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5o
ICovLAorCQkJCUUxMEI5Q0NCMEI3NDdBNDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVz
b2x2ZXIubW0gKi8sCiAJCQkJQkMxQTM3OUMwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUV2ZW50cy5o
ICovLAogCQkJCUJDMUEzNzlEMDk3QzcxNUYwMDE5RjNEOCAvKiBET01FdmVudHMubW0gKi8sCiAJ
CQkJQkMxQTM3OUYwOTdDNzE1RjAwMTlGM0Q4IC8qIERPTUV4dGVuc2lvbnMuaCAqLywKQEAgLTkx
MjMsNiArOTEzOSw4IEBACiAJCQkJMUFDRTUzRTEwQThEMThFNzAwMjI5NDdEIC8qIERPTVBhcnNl
ci5jcHAgKi8sCiAJCQkJMUFDRTUzRTIwQThEMThFNzAwMjI5NDdEIC8qIERPTVBhcnNlci5oICov
LAogCQkJCTFBQ0U1M0UzMEE4RDE4RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuaWRsICovLAorCQkJ
CUUxMEI5QjZBMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCAqLywK
KwkJCQlFMTBCOUI2QjBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNw
cCAqLywKIAkJCQkxQUNFNTNFNDBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5jcHAg
Ki8sCiAJCQkJMUFDRTUzRTUwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCAqLywK
IAkJCQkxQUNFNTNFNjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5pZGwgKi8sCkBA
IC0xMTA4Myw2ICsxMTEwMSw5IEBACiAJCQkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1
YnN0aXR1dGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODA5RjE0NzBCNzM3OTNBMDAyRTRE
N0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODA5RjFB
QTBCNzM3RkI2MDAyRTREN0YgLyogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBO
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxMEI5Q0NDMEI3NDdB
NDQwMDNFRDg5MCAvKiBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTI0MzUsNiArMTI0NTYsOSBAQAogCQkJCUFBMDk3MkNDMEI2OTQ3QTgwMEE3MDVFOSAvKiBT
VkdJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MDlGMTQ4MEI3Mzc5M0Iw
MDJFNEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgwOUYxQUIwQjczN0ZCNjAwMkU0RDdGIC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMTBCOTNDMzBCNzNDMjkxMDAzRUQ4OTAgLyogSlNDdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEwQjlCNkQwQjc0NzU5OTAw
M0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlF
MTBCOUNDRDBCNzQ3QTQ0MDAzRUQ4OTAgLyogRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5oIgorCisjaWZkZWYgWFBBVEhfU1VQUE9SVAorCisjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorCisjaW5jbHVkZSAia2pzX2Jp
bmRpbmcuaCIKKyNpbmNsdWRlICJranNfcHJveHkuaCIKKyNpbmNsdWRlICJranNfd2luZG93Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEtKUzsKKworUGFzc1Jl
ZlB0cjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNy
ZWF0ZShLSlM6OkV4ZWNTdGF0ZSogZXhlYywgS0pTOjpKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBp
ZiAodmFsdWUtPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
SlNPYmplY3QqIHJlc29sdmVyT2JqZWN0ID0gdmFsdWUtPmdldE9iamVjdCgpOworICAgIGlmICgh
cmVzb2x2ZXJPYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlT
TUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHJldHVybiBu
ZXcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIocmVzb2x2ZXJPYmplY3QsIEtKUzo6V2luZG93Ojpy
ZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZnJhbWUoKSk7Cit9CisKK0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcihKU09iamVjdCogY3VzdG9tUmVzb2x2ZXIsIEZy
YW1lKiBmcmFtZSkKKyAgICA6IG1fY3VzdG9tUmVzb2x2ZXIoY3VzdG9tUmVzb2x2ZXIpCisgICAg
LCBtX2ZyYW1lKGZyYW1lKQoreworfQorCitKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6fkpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyKCkKK3sKK30KKworU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgQVNT
RVJUKG1fY3VzdG9tUmVzb2x2ZXIpOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgS0pTUHJveHkqIHByb3h5ID0gbV9mcmFtZS0+c2NyaXB0UHJveHko
KTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBKU0xv
Y2sgbG9jazsKKworICAgIFNjcmlwdEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IHByb3h5LT5p
bnRlcnByZXRlcigpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGludGVycHJldGVyLT5nbG9iYWxF
eGVjKCk7CisKKyAgICBKU1ZhbHVlKiBsb29rdXBOYW1lc3BhY2VVUklGdW5jVmFsdWUgPSBtX2N1
c3RvbVJlc29sdmVyLT5nZXQoZXhlYywgImxvb2t1cE5hbWVzcGFjZVVSSSIpOworICAgIEpTT2Jq
ZWN0KiBsb29rdXBOYW1lc3BhY2VVUklGdW5jID0gMDsKKyAgICBpZiAobG9va3VwTmFtZXNwYWNl
VVJJRnVuY1ZhbHVlLT5pc09iamVjdCgpKSB7ICAgICAgCisgICAgICAgIGxvb2t1cE5hbWVzcGFj
ZVVSSUZ1bmMgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGxvb2t1cE5hbWVzcGFjZVVSSUZ1bmNW
YWx1ZSk7CisgICAgICAgIGlmICghbG9va3VwTmFtZXNwYWNlVVJJRnVuYy0+aW1wbGVtZW50c0Nh
bGwoKSkKKyAgICAgICAgICAgIGxvb2t1cE5hbWVzcGFjZVVSSUZ1bmMgPSAwOworICAgIH0KKwor
ICAgIGlmICghbG9va3VwTmFtZXNwYWNlVVJJRnVuYyAmJiAhbV9jdXN0b21SZXNvbHZlci0+aW1w
bGVtZW50c0NhbGwoKSkgeworICAgICAgICAvLyBGSVhNRTogcGFzcyBhY3R1YWwgbGluZSBudW1i
ZXIgYW5kIHNvdXJjZSBVUkwuCisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoIlhQ
YXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNwYWNlVVJJIG1ldGhvZC4i
LCAwLCBTdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBS
ZWZQdHI8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IHNlbGZQcm90ZWN0b3IodGhpcyk7CisKKyAg
ICBMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmcocHJlZml4KSk7CisKKyAgICBT
dHJpbmcgcmVzdWx0OworICAgIEpTVmFsdWUqIHJldHZhbDsKKyAgICBpbnRlcnByZXRlci0+c3Rh
cnRUaW1lb3V0Q2hlY2soKTsKKyAgICBpZiAobG9va3VwTmFtZXNwYWNlVVJJRnVuYykKKyAgICAg
ICAgcmV0dmFsID0gbG9va3VwTmFtZXNwYWNlVVJJRnVuYy0+Y2FsbChleGVjLCBtX2N1c3RvbVJl
c29sdmVyLCBhcmdzKTsKKyAgICBlbHNlCisgICAgICAgIHJldHZhbCA9IG1fY3VzdG9tUmVzb2x2
ZXItPmNhbGwoZXhlYywgbV9jdXN0b21SZXNvbHZlciwgYXJncyk7CisgICAgaW50ZXJwcmV0ZXIt
PnN0b3BUaW1lb3V0Q2hlY2soKTsKKworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewor
ICAgICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCktPnRvT2JqZWN0
KGV4ZWMpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsIG1l
c3NhZ2VQcm9wZXJ0eU5hbWUpLT50b1N0cmluZyhleGVjKTsKKyAgICAgICAgaW50IGxpbmVOdW1i
ZXIgPSBleGNlcHRpb24tPmdldChleGVjLCAibGluZSIpLT50b0ludDMyKGV4ZWMpOworICAgICAg
ICBTdHJpbmcgc291cmNlVVJMID0gZXhjZXB0aW9uLT5nZXQoZXhlYywgInNvdXJjZVVSTCIpLT50
b1N0cmluZyhleGVjKTsKKyAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2Vw
dGlvbnMoKSkKKyAgICAgICAgICAgIHByaW50ZigiWFBhdGhOU1Jlc29sdmVyOiAlc1xuIiwgbWVz
c2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZSht
ZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgICAgICBleGVjLT5jbGVhckV4Y2Vw
dGlvbigpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghcmV0dmFsLT5pc1VuZGVmaW5lZE9y
TnVsbCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gcmV0dmFsLT50b1N0cmluZyhleGVjKTsKKyAg
ICB9CisKKyAgICBEb2N1bWVudDo6dXBkYXRlRG9jdW1lbnRzUmVuZGVyaW5nKCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBY
UEFUSF9TVVBQT1JUCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcl9oCisjZGVmaW5lIEpTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyX2gKKworI2lmZGVmIFhQQVRIX1NVUFBPUlQKKworI2luY2x1ZGUgIlhQ
YXRoTlNSZXNvbHZlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgS0pTIHsKKyAgICBjbGFzcyBFeGVjU3RhdGU7Cisg
ICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgSlNWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisKKyAgICBjbGFzcyBKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlciA6IHB1YmxpYyBYUGF0aE5TUmVzb2x2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBjcmVh
dGUoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTsKKyAgICAgICAgCisgICAgICAgIEpT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyKEtKUzo6SlNPYmplY3QqLCBGcmFtZSopOworICAgICAgICB2
aXJ0dWFsIH5KU0N1c3RvbVhQYXRoTlNSZXNvbHZlcigpOworCisgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICAgS0pTOjpKU09iamVjdCogbV9jdXN0b21SZXNvbHZlcjsgLy8gSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXJzIGFyZSBhbHdheXMgdGVtcG9yYXJ5LCB0aHVzIG5vIG5lZWQgdG8g
R0MgcHJvdGVjdCB0aGUgb2JqZWN0LgorICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhQQVRIX1NVUFBP
UlQKKworI2VuZGlmIC8vIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyX2gKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFs
ZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBET01DdXN0
b21YUGF0aE5TUmVzb2x2ZXJfaAorI2RlZmluZSBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXJfaAor
CisjaWZkZWYgWFBBVEhfU1VQUE9SVAorCisjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVyLmgiCisK
KyNpbmNsdWRlICJET01YUGF0aE5TUmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgRnJhbWU7CisKKyAgICBjbGFzcyBET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIg
OiBwdWJsaWMgWFBhdGhOU1Jlc29sdmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUN1c3Rv
bVhQYXRoTlNSZXNvbHZlcihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPik7CisgICAgICAgIHZpcnR1
YWwgfkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcigpOworCisgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCk7CisKKyAgICBwcml2YXRl
OgorICAgICAgICAgaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4gbV9jdXN0b21SZXNvbHZlcjsgLy8g
RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVycyBhcmUgYWx3YXlzIHRlbXBvcmFyeSwgdGh1cyBubyBu
ZWVkIHRvIEdDIHByb3RlY3QgdGhlIG9iamVjdC4KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBYUEFUSF9TVVBQT1JUCisKKyNlbmRpZiAvLyBET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXJfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1z
dHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0JKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAbnlwb3AuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCisKKyNpZmRlZiBYUEFUSF9TVVBQT1JUCisKKyNpbmNs
dWRlICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6RE9NQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyKGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+IGN1c3RvbVJlc29sdmVyKQor
ICAgIDogbV9jdXN0b21SZXNvbHZlcihjdXN0b21SZXNvbHZlcikKK3sKK30KKworRE9NQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyOjp+RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKCkKK3sKK30KKworU3Ry
aW5nIERPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0
cmluZyYgcHJlZml4KQoreworICAgIE5TU3RyaW5nICpuYW1lc3BhY2VVUkkgPSBuaWw7CisgICAg
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIG5hbWVzcGFjZVVSSSA9IFtt
X2N1c3RvbVJlc29sdmVyIGxvb2t1cE5hbWVzcGFjZVVSSTpwcmVmaXhdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgCisgICAgcmV0dXJuIG5hbWVzcGFjZVVSSTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gWFBBVEhfU1VQUE9SVAoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNv
bHZlci5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTkz
OTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDkgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAg
ICAgICAkam9pbmVkTmFtZSA9ICR0eXBlOwogICAgICAgICAkam9pbmVkTmFtZSA9fiBzL0Fic3xS
ZWwvLzsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJHtqb2luZWROYW1lfS5oIn0gPSAxOworICAg
IH0gZWxzaWYgKCR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICRpbXBsSW5j
bHVkZXN7IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7
IkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgifSA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
IyBkZWZhdWx0LCBpbmNsdWRlIHRoZSBzYW1lIG5hbWVkIGZpbGUKICAgICAgICAgJGltcGxJbmNs
dWRlc3siJHt0eXBlfS5oIn0gPSAxOwpAQCAtMTAwOSwyMSArMTAxMiwzMyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG15
ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgYm9vbCAke25hbWV9T2s7XG4iKSBpZiBUeXBlQ2FuRmFpbENvbnZlcnNp
b24oJHBhcmFtZXRlcik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyKSAuICIgJG5hbWUg
PSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIsIFR5
cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKSA/ICIke25hbWV9T2siIDogdW5kZWYpIC4g
IjtcbiIpOwotICAgICAgICAgICAgICAgIGlmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFt
ZXRlcikpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGlmICghJHtuYW1lfU9rKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9F
UlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4gICAgICAgIH1cbiIpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+
dHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2
ZXI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIgPSB0b1hQYXRoTlNSZXNvbHZlcihhcmdzWyRwYXJh
bUluZGV4XSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGlmICghcmVzb2x2ZXIpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgICAgIGN1c3RvbVJlc29sdmVyID0gSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXI6OmNyZWF0ZShleGVjLCBhcmdzWyRwYXJhbUluZGV4XSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXNvbHZlciA9IGN1c3Rv
bVJlc29sdmVyLmdldCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYm9vbCAke25hbWV9T2s7XG4i
KSBpZiBUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWdu
YXR1cmUoJHBhcmFtZXRlcikgLiAiICRuYW1lID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1l
dGVyLCAiYXJnc1skcGFyYW1JbmRleF0iLCBUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRl
cikgPyAiJHtuYW1lfU9rIiA6IHVuZGVmKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFR5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghJHtuYW1lfU9rKSB7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTtcbiAgICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgImFuIGluZGV4IiwgaXQgc2hvdWxk
IHRocm93IGFuIElOREVYX1NJWkVfRVJSCi0gICAgICAgICAgICAgICAgIyBleGNlcHRpb24KLSAg
ICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5k
ZXgifSkgewotICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2Rl
LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBpZiAoJG5hbWUgPCAwKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhfU0laRV9FUlIp
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4gICAgICAgIH1cbiIpOworICAgICAgICAgICAgICAg
ICAgICAjIElmIGEgcGFyYW1ldGVyIGlzICJhbiBpbmRleCIsIGl0IHNob3VsZCB0aHJvdyBhbiBJ
TkRFWF9TSVpFX0VSUgorICAgICAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbgorICAgICAgICAg
ICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgi
fSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29k
ZS5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGlmICgkbmFtZSA8IDApIHtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhf
U0laRV9FUlIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuICAgICAgICB9XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
ICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gMTkzOTEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdWIgR2V0T2JqQ1R5cGVHZXR0ZXIKIAogICAg
IG15ICR0eXBlR2V0dGVyTWV0aG9kTmFtZSA9IEdldE9iakNUeXBlR2V0dGVyTmFtZSgkdHlwZSk7
CiAKLSAgICByZXR1cm4gIltuYXRpdmVSZXNvbHZlciAkdHlwZUdldHRlck1ldGhvZE5hbWVdIiBp
ZiAkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIjsKKyAgICByZXR1cm4gIm5hdGl2ZVJlc29sdmVy
IiBpZiAkdHlwZSBlcSAiWFBhdGhOU1Jlc29sdmVyIjsKICAgICByZXR1cm4gIlskYXJnTmFtZSAk
dHlwZUdldHRlck1ldGhvZE5hbWVdIjsKIH0KIApAQCAtNTQzLDYgKzU0Myw5IEBAIHN1YiBBZGRJ
bmNsdWRlc0ZvclR5cGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICgkdHlwZSBl
cSAiWFBhdGhOU1Jlc29sdmVyIikgeworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIuaCJ9ID0gMTsKKyAgICB9CiAKICAgICAjIEZJWE1FOiB3b24ndCBjb21w
aWxlIHdpdGhvdXQgdGhlc2UKICAgICAkaW1wbEluY2x1ZGVzeyJDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5oIn0gPSAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIjsKQEAgLTEx
MzEsOSArMTEzNCwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
IyBzcGVjaWFsIGNhc2UgdGhlIFhQYXRoTlNSZXNvbHZlcgogICAgICAgICAgICAgaWYgKGRlZmlu
ZWQgJG5lZWRzQ3VzdG9teyJYUGF0aE5TUmVzb2x2ZXIifSkgewogICAgICAgICAgICAgICAgIG15
ICRwYXJhbU5hbWUgPSAkbmVlZHNDdXN0b217IlhQYXRoTlNSZXNvbHZlciJ9OwotICAgICAgICAg
ICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICBpZiAoJHBhcmFtTmFtZSAmJiAhWyRw
YXJhbU5hbWUgaXNNZW1iZXJPZkNsYXNzOltET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3Nd
XSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6XEBcImNyZWF0ZUV4
cHJlc3Npb24gY3VycmVudGx5IGRvZXMgbm90IHdvcmsgd2l0aCBjdXN0b20gTlMgcmVzb2x2ZXJz
XCJdO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIERP
TU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAqbmF0aXZlUmVzb2x2ZXIgPSAoRE9NTmF0aXZlWFBhdGhO
U1Jlc29sdmVyICopJHBhcmFtTmFtZTtcblxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVu
Y3Rpb25Db250ZW50LCAiICAgIFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlciogbmF0aXZlUmVzb2x2
ZXIgPSAwO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAg
IFJlZlB0cjxXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXI+IGN1c3RvbVJlc29sdmVyO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICgkcGFyYW1OYW1l
KSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAg
IGlmIChbJHBhcmFtTmFtZSBpc01lbWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciBjbGFzc11dKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAi
ICAgICAgICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBbKERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAq
KSRwYXJhbU5hbWUgX3hwYXRoTlNSZXNvbHZlcl07XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgIGVsc2Uge1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAgICAgICAgY3VzdG9tUmVzb2x2ZXIgPSBuZXcg
V2ViQ29yZTo6RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKCRwYXJhbU5hbWUpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAgICAgICAgbmF0aXZlUmVz
b2x2ZXIgPSBjdXN0b21SZXNvbHZlci5nZXQoKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb25Db250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAjIHNwZWNpYWwgY2FzZSB0aGUgRXZlbnRUYXJnZXQKSW5kZXg6IFdlYkNvcmUveG1sL05hdGl2
ZVhQYXRoTlNSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUveG1sL05hdGl2ZVhQYXRo
TlNSZXNvbHZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmgi
CisKKyNpZmRlZiBYUEFUSF9TVVBQT1JUCisKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJYTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK05hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6TmF0aXZlWFBhdGhOU1Jlc29sdmVyKFBh
c3NSZWZQdHI8Tm9kZT4gbm9kZSkKKyAgICA6IG1fbm9kZShub2RlKQoreworfQorCitOYXRpdmVY
UGF0aE5TUmVzb2x2ZXI6On5OYXRpdmVYUGF0aE5TUmVzb2x2ZXIoKQoreworfQorCitTdHJpbmcg
TmF0aXZlWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBw
cmVmaXgpCit7CisgICAgLy8gVGhpcyBpcyBub3QgZG9uZSBieSBOb2RlOjpsb29rdXBOYW1lc3Bh
Y2VVUkkgYXMgcGVyIHRoZSBET00zIENvcmUgc3BlYywKKyAgICAvLyBidXQgdGhlIFhQYXRoIHNw
ZWMgc2F5cyB0aGF0IHdlIHNob3VsZCBkbyBpdCBmb3IgWFBhdGhOU1Jlc29sdmVyLgorICAgIGlm
IChwcmVmaXggPT0gInhtbCIpCisgICAgICAgIHJldHVybiBYTUxOYW1lczo6eG1sTmFtZXNwYWNl
VVJJOworICAgIAorICAgIHJldHVybiBtX25vZGUgPyBtX25vZGUtPmxvb2t1cE5hbWVzcGFjZVVS
SShwcmVmaXgpIDogU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFhQQVRIX1NVUFBPUlQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUveG1sL05h
dGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTmF0aXZlWFBhdGhOU1Jlc29s
dmVyX2gKKyNkZWZpbmUgTmF0aXZlWFBhdGhOU1Jlc29sdmVyX2gKKworI2lmZGVmIFhQQVRIX1NV
UFBPUlQKKworI2luY2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIE5vZGU7CisKKyAgICBjbGFzcyBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIg
OiBwdWJsaWMgWFBhdGhOU1Jlc29sdmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5hdGl2ZVhQ
YXRoTlNSZXNvbHZlcihQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICAgICAgdmlydHVhbCB+TmF0aXZl
WFBhdGhOU1Jlc29sdmVyKCk7CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNw
YWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJl
ZlB0cjxOb2RlPiBtX25vZGU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gWFBBVEhfU1VQUE9SVAorCisjZW5kaWYgLy8gTmF0aXZlWFBhdGhOU1Jlc29sdmVy
X2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdl
YkNvcmUveG1sL1hQYXRoRXZhbHVhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9Y
UGF0aEV2YWx1YXRvci5jcHAJKHJldmlzaW9uIDE5MzkxKQorKysgV2ViQ29yZS94bWwvWFBhdGhF
dmFsdWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAjaWZkZWYgWFBB
VEhfU1VQUE9SVAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJYUGF0aEV4
cHJlc3Npb24uaCIKLSNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0
aFJlc3VsdC5oIgogI2luY2x1ZGUgIlhQYXRoVXRpbC5oIgogCkBAIC00OSw3ICs0OSw3IEBAIFBh
c3NSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBYUGF0aEV2YWx1YXQKIAogUGFzc1JlZlB0cjxYUGF0
aE5TUmVzb2x2ZXI+IFhQYXRoRXZhbHVhdG9yOjpjcmVhdGVOU1Jlc29sdmVyKE5vZGUqIG5vZGVS
ZXNvbHZlcikKIHsKLSAgICByZXR1cm4gbmV3IFhQYXRoTlNSZXNvbHZlcihub2RlUmVzb2x2ZXIp
OworICAgIHJldHVybiBuZXcgTmF0aXZlWFBhdGhOU1Jlc29sdmVyKG5vZGVSZXNvbHZlcik7CiB9
CiAKIFBhc3NSZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXZhbHVhdG9yOjpldmFsdWF0ZShjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoTlNSZXNvbHZlci5jcHAJKHJldmlz
aW9uIDE5MzkxKQorKysgV2ViQ29yZS94bWwvWFBhdGhOU1Jlc29sdmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMzAgKzI5LDEyIEBACiAKICNpZmRlZiBYUEFUSF9TVVBQT1JUCiAKLSNpbmNs
dWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiWE1MTmFtZXMuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1YUGF0aE5TUmVzb2x2ZXI6OlhQYXRoTlNSZXNvbHZlcihQYXNzUmVmUHRyPE5vZGU+IG5v
ZGUpCi0gICAgOiBtX25vZGUobm9kZSkKLXsKLX0KLQogWFBhdGhOU1Jlc29sdmVyOjp+WFBhdGhO
U1Jlc29sdmVyKCkKIHsKIH0KIAotU3RyaW5nIFhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNw
YWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQotewotICAgIC8vIFRoaXMgaXMgbm90IGRvbmUg
YnkgTm9kZTo6bG9va3VwTmFtZXNwYWNlVVJJIGFzIHBlciB0aGUgRE9NMyBDb3JlIHNwZWMsCi0g
ICAgLy8gYnV0IHRoZSBYUGF0aCBzcGVjIHNheXMgdGhhdCB3ZSBzaG91bGQgZG8gaXQgZm9yIFhQ
YXRoTlNSZXNvbHZlci4KLSAgICBpZiAocHJlZml4ID09ICJ4bWwiKQotICAgICAgICByZXR1cm4g
WE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSTsKLSAgICAKLSAgICByZXR1cm4gbV9ub2RlID8gbV9u
b2RlLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KSA6IFN0cmluZygpOwotfQotCiB9CiAKICNl
bmRpZiAvLyBYUEFUSF9TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24g
MTkzOTEpCisrKyBXZWJDb3JlL3htbC9YUGF0aE5TUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMjMgKzMwLDE1IEBACiAjaWZkZWYgWFBBVEhfU1VQUE9SVAogCiAjaW5jbHVkZSAiU2hh
cmVkLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU3Ry
aW5nOwogCiAgICAgY2xhc3MgWFBhdGhOU1Jlc29sdmVyIDogcHVibGljIFNoYXJlZDxYUGF0aE5T
UmVzb2x2ZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFhQYXRoTlNSZXNvbHZlcihQYXNzUmVm
UHRyPE5vZGU+KTsKLSAgICAgICAgflhQYXRoTlNSZXNvbHZlcigpOwotCi0gICAgICAgIFN0cmlu
ZyBsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpOwotCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICAgICAgdmlydHVhbCB+WFBhdGhO
U1Jlc29sdmVyKCk7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGxvb2t1cE5hbWVzcGFjZVVSSShj
b25zdCBTdHJpbmcmIHByZWZpeCkgPSAwOwogICAgIH07CiAKIH0KQEAgLTU0LDQgKzQ2LDMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmIC8vIFhQQVRIX1NVUFBPUlQKIAogI2VuZGlmIC8v
IFhQYXRoTlNSZXNvbHZlcl9oCi0K
</data>
<flag name="review"
          id="4967"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>