<?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>42332</bug_id>
          
          <creation_ts>2010-07-14 20:55:52 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks</short_desc>
          <delta_ts>2012-08-14 12:50:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93825</dependson>
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>ap</cc>
    
    <cc>kenneth</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251635</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:55:52 -0700</bug_when>
    <thetext>WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251651</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:59:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/8193642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693314</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-12 13:49:32 -0700</bug_when>
    <thetext>Taking it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694607</commentid>
    <comment_count>3</comment_count>
      <attachid>158246</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-14 00:36:54 -0700</bug_when>
    <thetext>Created attachment 158246
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694621</commentid>
    <comment_count>4</comment_count>
      <attachid>158246</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 00:50:06 -0700</bug_when>
    <thetext>Comment on attachment 158246
patch

Attachment 158246 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13485802</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694724</commentid>
    <comment_count>5</comment_count>
      <attachid>158270</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-14 02:40:16 -0700</bug_when>
    <thetext>Created attachment 158270
patch

Try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694732</commentid>
    <comment_count>6</comment_count>
      <attachid>158270</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-14 02:57:55 -0700</bug_when>
    <thetext>Comment on attachment 158270
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=158270&amp;action=review

Looks pretty ok

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:219
&gt; +static inline bool isFileScheme(WKStringRef scheme)

I think this is called something like isLocal elsewhere in WebCore. You should have a look. Or do you really need it to be file? Like Qt for instnace supports build in resources using qrc://

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:226
&gt; +static inline WTF::String pathSuitableForTestResult(WKURLRef url)

The name of the method doesn&apos;t make it obvious to me what the argument represents

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:248
&gt; +    } else {
&gt; +        stringBuilder.append(divider);
&gt; +        stringBuilder.append(pathString);
&gt; +    }

so if you dont find a / you just end up with &quot;/path&quot; Is that what you want? Maybe a small concise comment on how you want the target string would be nice

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:492
&gt; +    // We need to do some error mapping here to match
&gt; +    // the test expectations.

I would just make that one line

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:494
&gt; +        errorDomain = adoptWK(WKStringCreateWithUTF8CString(&quot;NSURLErrorDomain&quot;));

So the tests expects Mac error names? ie. NSURL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694758</commentid>
    <comment_count>7</comment_count>
      <attachid>158280</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-14 03:33:38 -0700</bug_when>
    <thetext>Created attachment 158280
patch v2

Kenneth, thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694780</commentid>
    <comment_count>8</comment_count>
      <attachid>158280</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-14 03:57:25 -0700</bug_when>
    <thetext>Comment on attachment 158280
patch v2

Attachment 158280 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13504126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694783</commentid>
    <comment_count>9</comment_count>
      <attachid>158280</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-14 03:58:02 -0700</bug_when>
    <thetext>Comment on attachment 158280
patch v2

Please fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694913</commentid>
    <comment_count>10</comment_count>
      <attachid>158315</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-14 06:41:00 -0700</bug_when>
    <thetext>Created attachment 158315
to be landed

To be landed if builds on MAC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695278</commentid>
    <comment_count>11</comment_count>
      <attachid>158315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 12:49:56 -0700</bug_when>
    <thetext>Comment on attachment 158315
to be landed

Clearing flags on attachment: 158315

Committed r125593: &lt;http://trac.webkit.org/changeset/125593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695279</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 12:50:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158246</attachid>
            <date>2012-08-14 00:36:54 -0700</date>
            <delta_ts>2012-08-14 02:40:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug42332</filename>
            <type>text/plain</type>
            <size>26842</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGNiOWQxMGVmZThhNDQzNzE5MjkzOGM2YjIyN2NhOGU3MTBkZTRlMWYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIEF1ZyAxMyAyMzozNDo0MiAyMDEyICswMzAwCgogICAgYnVnNDIzMzIKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTk4
OGQ1Ni4uYjRkMjBlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTEzICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbnNraXBwZWQgY29ycmVzcG9uZG9uZyB0ZXN0IGNhc2VzLgorCisgICAgICAgICogcGxhdGZv
cm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDgtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBiZWZvcmVU
ZXh0Q2hhbmdlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBmZGU0M2E0Li44MTllYmM2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMzg2LDM1ICszODYsNiBAQCB3ZWJhcmNo
aXZlL2xvYWRpbmcvbWFpbnJlc291cmNlLW51bGwtbWltZXR5cGUtY3Jhc2guaHRtbAogd2ViYXJj
aGl2ZS9sb2FkaW5nL21pc3NpbmctZGF0YS5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCi0j
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzI+Ci1mYXN0L2lt
YWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCi1mYXN0L2xvYWRlci9maWxl
LXByb3RvY29sLWZyYWdtZW50Lmh0bWwKLWZhc3QvbG9hZGVyL21haW4tZG9jdW1lbnQtdXJsLWZv
ci1ub24taHR0cC1sb2Fkcy5odG1sCi1mYXN0L2xvYWRlci91c2VyLXN0eWxlLXNoZWV0LXJlc291
cmNlLWxvYWQtY2FsbGJhY2tzLmh0bWwKLWh0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAz
LWFmdGVyLXBvc3QuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3BkZi1jb21taXQtbG9hZC1jYWxs
YmFja3MuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pY29uLWxvYWRpbmctb3ZlcnJpZGUuaHRt
bAotaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi1odHRwL3Rl
c3RzL21pc2Mvd2lsbC1zZW5kLXJlcXVlc3QtcmV0dXJucy1udWxsLW9uLXJlZGlyZWN0Lmh0bWwK
LWh0dHAvdGVzdHMvbWlzYy93aWxsQ2FjaGVSZXNwb25zZS1kZWxlZ2F0ZS1jYWxsYmFjay5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0
bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1z
YW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94
LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cu
aHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1w
YXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fi
b3J0LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCi1zZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQu
aHRtbAotc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvY2FjaGUt
ZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5n
LWFyY2hpdmUuaHRtbAotd2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3QtbG9hZGluZy1hcmNoaXZlLXN1
YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
dGV4dElucHV0Q29udHJvbGxlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMzM3PgogZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNlbC1p
bWUtY29tcG9zaXRpb24uaHRtbApAQCAtNzk4LDEyICs3NjksMjUgQEAgZmFzdC90ZXh0LWF1dG9z
aXppbmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFS
VCBPRiAoMikgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzICh5ZXQpCiAK
KyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG91bGRQYWlu
dEJyb2NrZW5JbWFnZQorZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUu
aHRtbAorCisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
V2lsbFNlbmRSZXF1ZXN0UmV0dXJuTnVsbE9uUmVkaXJlY3QKK2h0dHAvdGVzdHMvbWlzYy93aWxs
LXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAorCisjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgbG9nZ2luZworaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9z
dC5odG1sCitodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sCisKICMgV2Vi
S2l0VGVzdHJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wU291cmNlQXNXZWJB
cmNoaXZlCiB3ZWJhcmNoaXZlL2RvY3R5cGUuaHRtbAogd2ViYXJjaGl2ZS9hcmNoaXZlLWVtcHR5
LWZyYW1lLXNvdXJjZS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRJY29uRGF0YWJhc2VFbmFibGVkCiB3ZWJhcmNoaXZlL3Rlc3QtbGluay1y
ZWwtaWNvbi5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1k
aXNhYmxlZC5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWljb24tbG9h
ZGluZy1vdmVycmlkZS5odG1sCitodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBkdW1wIHRleHQvcGxhaW4gY29u
dGVudCBhcyB0ZXh0CiBodHRwL3Rlc3RzL2luY3JlbWVudGFsL3Nsb3ctdXRmOC10ZXh0LnBsCkBA
IC0xMDQ0LDYgKzEwMjgsOSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEKIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMi5o
dG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbAog
cGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy5odG1sCit3ZWJhcmNo
aXZlL2xvYWRpbmcvY2FjaGUtZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCit3ZWJhcmNoaXZlL2xv
YWRpbmcvdGVzdC1sb2FkaW5nLWFyY2hpdmUuaHRtbAord2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3Qt
bG9hZGluZy1hcmNoaXZlLXN1YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAogCiAjIyMgRU5E
IE9GICgyKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMgKHlldCkKICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEzMDMsNiArMTI5MCwx
MCBAQCBmYXN0L2xvYWRlci93aW5kb3ctcHJvcGVydGllcy1yZXN0b3JlZC1mcm9tLXBhZ2UtY2Fj
aGUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MTYK
IGZhc3QvaGFybmVzcy9wYWdlLWNhY2hlLWNyYXNoLW9uLWRhdGEtdXJscy5odG1sCiAKKyMgV3Jv
bmcgbG9nZ2luZyBvcmRlcgorZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC5odG1s
CitodHRwL3Rlc3RzL2xvYWRpbmcvcGRmLWNvbW1pdC1sb2FkLWNhbGxiYWNrcy5odG1sCisKICMj
IyBFTkQgT0YgKDMpIFVuY2xhc3NpZmllZCBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmY1NzlkNi4uY2RlMjU5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTEzICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5u
ZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcg
Z2V0dGVycyB0byBXS1VSTCwgV0tVUkxSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlIHNvIHRoYXQgaXQg
aXMgcG9zc2libGUKKyAgICAgICAgdG8gZHVtcCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIHRo
ZSB0ZXN0cyBwYXNzaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAg
ICAgICAgKFdLVVJMQ29weVBhdGgpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTC5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tVUkxS
ZXF1ZXN0Q29weUZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAgICAgKFdLVVJMUmVxdWVzdENv
cHlIVFRQTWV0aG9kKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV0tVUkxS
ZXNwb25zZUhUVFBTdGF0dXNDb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMOjpwYXRoKToKKyAgICAgICAgKFdlYlVSTCk6CisKIDIwMTItMDgtMTMgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbU09VUF1bV0sy
XSBNaXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJDb29raWVNYW5hZ2VyOjpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJM
LmNwcAppbmRleCA5OWNkZTg5Li4yMjY4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VSTC5jcHAKQEAgLTYwLDYgKzYwLDExIEBAIFdLU3RyaW5nUmVmIFdLVVJMQ29weVNjaGVtZShX
S1VSTFJlZiB1cmwpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5wcm90b2Nv
bCgpKTsKIH0KIAorV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVBhdGgoV0tVUkxSZWYg
dXJsKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+cGF0aCgpKTsKK30K
KwogV0tTdHJpbmdSZWYgV0tVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoV0tVUkxSZWYgdXJsKQog
ewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+bGFzdFBhdGhDb21wb25lbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCmluZGV4IDJjZGE2YzEuLjRlOTg2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCkBAIC0zOSw2ICszOSw3IEBAIFdLX0VY
UE9SVCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJp
bmcpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVN0cmluZyhXS1VSTFJlZiB1cmwp
OwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUhvc3ROYW1lKFdLVVJMUmVmIHVybCk7
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJMUmVmIHVybCk7CitX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5UGF0aChXS1VSTFJlZiB1cmwpOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KFdLVVJMUmVmIHVybCk7
CiAKIFdLX0VYUE9SVCBib29sIFdLVVJMSXNFcXVhbChXS1VSTFJlZiBhLCBXS1VSTFJlZiBiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzc2
MzY3Yi4uMTE0Yzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
VVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5jcHAKQEAgLTQ4LDYgKzQ4LDE2IEBAIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwo
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiAgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRv
SW1wbChyZXF1ZXN0UmVmKS0+dXJsKCkpOwogfQogCitXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCit7CisgICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0
KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLVVJMUmVxdWVz
dENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSk7Cit9CisKIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKQogewogICAgIFdlYlVSTFJlcXVlc3Q6OnNldERlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1VSTFJlcXVlc3QuaAppbmRleCBhNTNjZTE2Li44NWRmM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oCkBAIC0zOCw2ICszOCwxMCBAQCBX
S19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhXS1VSTChXS1VS
TFJlZik7CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5VVJMKFdLVVJMUmVx
dWVzdFJlZik7CiAKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0
eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmKTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
VVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZik7CisKIFdLX0VYUE9SVCB2
b2lkIFdLVVJMUmVxdWVzdFNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlKTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5jcHAKaW5kZXggY2VmZDA3ZC4uMmQyNWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtNDYsMyArNDYsOCBAQCBXS1N0cmluZ1Jl
ZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYp
CiB7CiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNl
UmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKIH0KKworaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0
YXR1c0NvZGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKK3sKKyAgICByZXR1cm4gdG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaAppbmRleCA4OTg4
ZGZmLi5kNGMyNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tV
UkxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3Bv
bnNlLmgKQEAgLTM4LDYgKzM4LDggQEAgV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMUmVzcG9uc2VD
b3B5VVJMKFdLVVJMUmVzcG9uc2VSZWYpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxS
ZXNwb25zZUNvcHlNSU1FVHlwZShXS1VSTFJlc3BvbnNlUmVmKTsKIAorV0tfRVhQT1JUIGludDMy
X3QgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKFdLVVJMUmVzcG9uc2VSZWYpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlVSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IGYwY2Nl
OGQuLmIyOTYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTYzLDYgKzYzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVS
TC0+cHJvdG9jb2woKSA6IFN0cmluZygpOwogICAgIH0KIAorICAgIFN0cmluZyBwYXRoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgcmV0dXJu
IG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpIDogU3RyaW5nKCk7
CisgICAgfQorCiAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNDYzZWMwLi4xMmNiMzA0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTItMDgtMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFJlc291cmNlIENhbGxiYWNrcyBsb2dnaW5nLiBTZXZl
cmFsIGF1eCBkdW1waW5nIGZ1bmN0aW9ucyBhcmUgYWRkZWQuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmlzRmlsZVNjaGVtZSk6CisgICAgICAgIChXVFIp
OgorICAgICAgICAoV1RSOjpwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpyZXNldEFmdGVyVGVzdCk6CisgICAgICAgIChXVFI6OmR1bXBSZXF1ZXN0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wUmVzcG9uc2VE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBFcnJv
ckRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkRm9yUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisKIDIwMTItMDgtMTMgIFBldGVyIEJldmVy
bG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IGFwayBn
ZW5lcmF0aW9uIGZvciB0aGUgQW5kcm9pZCBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xh
eW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCBkZjYwOGRhLi45YTBhNjVkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRl
c3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtNDQsNiArNDQsNyBAQCBt
b2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpOwogICAg
ICAgICB2b2lkIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUHJv
Z3Jlc3NGaW5pc2hlZENhbGxiYWNrKCk7CisgICAgICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOwogICAgICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7
CiAKICAgICAgICAgLy8gU3BlY2lhbCBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmlu
ZGV4IDJhM2VjMjAuLjU3MjQzYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLVVJMUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMjE1LDYgKzIxNiw1NyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZpbGVTY2hlbWUoV0tTdHJpbmdSZWYgc2NoZW1l
KQoreworICAgIHJldHVybiBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNl
KHNjaGVtZSwgImZpbGUiKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgZGl2aWRlciA9ICcvJzsK
Kworc3RhdGljIGlubGluZSBXVEY6OlN0cmluZyBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdL
VVJMUmVmIHVybCkKK3sKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjaGVtZVN0cmluZyA9IGFkb3B0V0soV0tV
UkxDb3B5U2NoZW1lKHVybCkpOworICAgIGlmICghaXNGaWxlU2NoZW1lKHNjaGVtZVN0cmluZy5n
ZXQoKSkpCisgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmlu
Zyh1cmwpKSk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHRvV1RGU3RyaW5nKGFkb3B0V0so
V0tVUkxDb3B5UGF0aCh1cmwpKSk7CisgICAgV1RGOjpTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CisKKyAgICBjb25zdCBzaXplX3QgaW5kZXhCYXNlTmFtZSA9IHBhdGhTdHJpbmcucmV2ZXJz
ZUZpbmQoZGl2aWRlcik7CisgICAgaWYgKGluZGV4QmFzZU5hbWUgIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgY29uc3Qgc2l6ZV90IGluZGV4RGlyTmFtZSA9IHBhdGhTdHJpbmcucmV2ZXJzZUZpbmQo
ZGl2aWRlciwgaW5kZXhCYXNlTmFtZSAtIDEpOworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9
IG5vdEZvdW5kKQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN0cmluZy5z
dWJzdHJpbmcoaW5kZXhEaXJOYW1lICsgMSwgaW5kZXhCYXNlTmFtZSAtIGluZGV4RGlyTmFtZSAt
IDEpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZGl2aWRlcik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAx
KSk7IC8vIEZpbGVuYW1lLgorICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGRpdmlkZXIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3RyaW5nKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0
aWMgaW5saW5lIFdURjo6U3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChXS1VSTFJlZiB1
cmwpCit7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hlbWVTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVNj
aGVtZSh1cmwpKTsKKyAgICBpZiAoIWlzRmlsZVNjaGVtZShzY2hlbWVTdHJpbmcuZ2V0KCkpKQor
ICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkp
OworCisgICAgV1RGOjpTdHJpbmcgdXJsU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VS
TENvcHlTdHJpbmcodXJsKSkpOworICAgIGNvbnN0IHNpemVfdCBpbmRleEJhc2VOYW1lID0gdXJs
U3RyaW5nLnJldmVyc2VGaW5kKGRpdmlkZXIpOworCisgICAgcmV0dXJuIChpbmRleEJhc2VOYW1l
ID09IG5vdEZvdW5kKSA/IHVybFN0cmluZyA6IHVybFN0cmluZy5zdWJzdHJpbmcoaW5kZXhCYXNl
TmFtZSArIDEpOworfQorCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBhc3NpZ25l
ZFVybHNDYWNoZTsKKwogSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fd29ybGQoQWRv
cHRXSywgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpCkBAIC0zNjYsNiArNDE4LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlc2V0QWZ0ZXJUZXN0KCkKICNlbHNlCiAgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpyZXNldEludGVybmFsc09iamVjdChjb250ZXh0KTsKICNlbmRp
ZgorICAgIGFzc2lnbmVkVXJsc0NhY2hlLmNsZWFyKCk7CiB9CiAKIC8vIExvYWRlciBDbGllbnQg
Q2FsbGJhY2tzCkBAIC0zOTYsNiArNDQ5LDcxIEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZURlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcIiIpOwog
fQogCitzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmlyc3RQYXJ0eSA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0
Q29weUZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gaHR0cE1ldGhvZCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2Qo
cmVxdWVzdCkpOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCI8TlNVUkxSZXF1ZXN0IFVSTCAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1
cmwuZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChm
aXJzdFBhcnR5LmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1
aWxkZXIoKS0+YXBwZW5kKCIsIGh0dHAgbWV0aG9kICIpOworCisgICAgaWYgKFdLU3RyaW5nSXNF
bXB0eShodHRwTWV0aG9kLmdldCgpKSkKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIobm9uZSkiKTsKKyAgICBlbHNlCisgICAgICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmlu
ZyhodHRwTWV0aG9kKSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIj4iKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXNwb25z
ZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXNw
b25zZUNvcHlVUkwocmVzcG9uc2UpKTsKKyAgICBpZiAoIXVybCkgeworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIihudWxsKSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQodXJsLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKFdURjo6U3RyaW5nOjpudW1iZXIoV0tV
UkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSkpOworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiPiIpOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tFcnJv
clJlZiBlcnJvcikKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JEb21haW4g
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RG9tYWluKGVycm9yKSk7CisgICAgaW50IGVycm9yQ29kZSA9
IFdLRXJyb3JHZXRFcnJvckNvZGUoZXJyb3IpOworCisgICAgLy8gV2UgbmVlZCB0byBkbyBzb21l
IGVycm9yIG1hcHBpbmcgaGVyZSB0byBtYXRjaAorICAgIC8vIHRoZSB0ZXN0IGV4cGVjdGF0aW9u
cy4KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQo
KSwgIldlYktpdE5ldHdvcmtFcnJvciIpKSB7CisgICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTlNVUkxFcnJvckRvbWFpbiIpKTsKKyAg
ICAgICAgZXJyb3JDb2RlID0gLTk5OTsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQoKSwgIldlYktpdFBvbGljeUVycm9yIikpCisg
ICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiV2ViS2l0RXJyb3JEb21haW4iKSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIjxOU0Vycm9yIGRvbWFpbiAiKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoZXJy
b3JEb21haW4pKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiwgY29kZSAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQoU3RyaW5nOjpudW1iZXIoZXJyb3JDb2RlKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJy
b3IpKTsKKyAgICBpZiAodXJsLmdldCgpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKTsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIs
IGZhaWxpbmcgVVJMIFwiIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJp
bmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcIiIpOworICAg
IH0KKworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZCgiPiIpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOwpAQCAtOTM4LDggKzEwNTYsMTcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRJbml0
aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9vbCkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0LCBib29sKQogeworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1
bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQocmVxdWVzdCk7ICAgIAorICAg
IFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwo
cmVxdWVzdCkpOworICAgIGFzc2lnbmVkVXJsc0NhY2hlLmFkZChpZGVudGlmaWVyLCBwYXRoU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSkpOwogfQogCiAvLyBSZXNvdXJjZSBMb2FkIENs
aWVudCBDYWxsYmFja3MKQEAgLTk1NCwxMSArMTA4MSwyMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNIVFRQT3JIVFRQU1NjaGVtZShXS1N0cmluZ1JlZiBzY2hlbWUpCiAgICAgcmV0dXJuIFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmdJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cCIpIHx8IFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmdJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cHMiKTsK
IH0KIAotV0tVUkxSZXF1ZXN0UmVmIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRSZXF1ZXN0
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCB1aW50NjRf
dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYpCitXS1VSTFJlcXVl
c3RSZWYgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXS0J1bmRs
ZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpICYmIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT53aWxsU2VuZFJlcXVlc3RS
ZXR1cm5zTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIGlmIChJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpCisgICAgICAgICYmIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKCkpIHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKGFzc2lnbmVkVXJsc0NhY2hlLmNvbnRhaW5zKGlkZW50aWZpZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFz
c2lnbmVkVXJsc0NhY2hlLmdldChpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPHVua25vd24+Iik7CisgICAgICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gd2ls
bFNlbmRSZXF1ZXN0ICIpOworICAgICAgICBkdW1wUmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KHJlcXVlc3QpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiByZWRpcmVjdFJlc3BvbnNlICIpOworICAgICAgICBk
dW1wUmVzcG9uc2VEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZSk7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
XG4iKTsKKyAgICB9CisKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhX
S1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gaG9zdCA9IGFkb3B0V0soV0tVUkxDb3B5SG9zdE5hbWUodXJsLmdldCgpKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjaGVtZSA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKHVy
bC5nZXQoKSkpOwpAQCAtOTkwLDExICsxMTI5LDIxIEBAIFdLVVJMUmVxdWVzdFJlZiBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OndpbGxTZW5kUmVxdWVzdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tC
CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRS
ZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIHVpbnQ2NF90LCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQordm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSkKIHsKICAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5u
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNr
cygpKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZChhc3NpZ25lZFVybHNDYWNoZS5jb250YWlucyhpZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ25l
ZFVybHNDYWNoZS5nZXQoaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIjx1bmtub3duPiIpOworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIGRpZFJlY2Vp
dmVSZXNwb25zZSAiKTsKKyAgICAgICAgZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQocmVzcG9uc2UpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CisgICAgfQorCisKICAgICBpZiAoIUluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlcygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMTIsMTIg
KzExNjEsMzUgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0IKIHsKIH0KIAotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90KQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZp
bmlzaExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVp
bnQ2NF90IGlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
aXNUZXN0UnVubmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChhc3NpZ25lZFVybHNDYWNoZS5jb250YWlu
cyhpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IGFzc2lnbmVkVXJsc0NhY2hlLmdldChpZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dW5rbm93bj4i
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IiAtIGRpZEZpbmlzaExvYWRpbmdcbiIpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYs
IHVpbnQ2NF90LCBXS0Vycm9yUmVmKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxM
b2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBXS0Vycm9yUmVmIGVycm9yKQogeworICAgIGlmICghSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxk
RHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYXNzaWduZWRVcmxz
Q2FjaGUuY29udGFpbnMoaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ25lZFVybHNDYWNoZS5nZXQoaWRlbnRpZmll
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiPHVua25vd24+Iik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCIgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogIik7CisKKyAgICBkdW1w
RXJyb3JEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChlcnJvcik7CisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogfQogCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggY2RmZmNhZS4uN2QxZjc4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTc3LDYgKzc3LDcgQEAgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKCkKICAgICAsIG1fZHVtcEZ1bGxTY3JlZW5DYWxs
YmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAg
LCBtX2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soZmFsc2UpCisgICAgLCBtX2R1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzKGZhbHNlKQogICAgICwgbV93YWl0VG9EdW1wKGZhbHNlKQogICAgICwgbV90ZXN0UmVw
YWludChmYWxzZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1MTdhNTE2Li41YTYyMjEz
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGR1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzKCkgeyBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJh
Y2tzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIHsgc2V0U2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsgfQogICAgIHZvaWQgZHVtcFByb2dyZXNz
RmluaXNoZWRDYWxsYmFjaygpIHsgc2V0U2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFj
ayh0cnVlKTsgfQorICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIHsgbV9kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXMoKSB7IG1fZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMgPSB0cnVl
OyB9CiAKICAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1
ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQpAQCAtMTYzLDYgKzE2NCw3
IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wRnVsbFNjcmVlbkNhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxk
RHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEZyYW1lTG9hZENh
bGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjazsgfQorICAgIGJv
b2wgc2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrczsgfQogICAgIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlUmVz
cG9uc2VNSU1FVHlwZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlN
RVR5cGVzOyB9CiAKICAgICBib29sIGlzUG9saWN5RGVsZWdhdGVFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7IH0KQEAgLTI0OSw2ICsyNTEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9kdW1wRnVsbFNjcmVlbkNhbGxiYWNrczsKICAgICBib29sIG1fZHVt
cEZyYW1lTG9hZENhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxs
YmFjazsKKyAgICBib29sIG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrczsKICAgICBib29sIG1f
ZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXM7CiAgICAgYm9vbCBtX3dhaXRUb0R1bXA7IC8v
IFRydWUgaWYgd2FpdFVudGlsRG9uZSgpIGhhcyBiZWVuIGNhbGxlZCwgYnV0IG5vdGlmeURvbmUo
KSBoYXMgbm90IHlldCBiZWVuIGNhbGxlZC4KICAgICBib29sIG1fdGVzdFJlcGFpbnQ7Cg==
</data>
<flag name="commit-queue"
          id="168298"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158270</attachid>
            <date>2012-08-14 02:40:16 -0700</date>
            <delta_ts>2012-08-14 03:33:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug42332</filename>
            <type>text/plain</type>
            <size>26816</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDA4OTFhZmYxNTc5OTkyZDgyMjcwZGRiNWVjYzUzZmQ0NGVkZTk0NTcKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIEF1ZyAxMyAyMzozNDo0MiAyMDEyICswMzAwCgogICAgYnVnNDIzMzIKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTk4
OGQ1Ni4uYjRkMjBlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTEzICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbnNraXBwZWQgY29ycmVzcG9uZG9uZyB0ZXN0IGNhc2VzLgorCisgICAgICAgICogcGxhdGZv
cm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDgtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBiZWZvcmVU
ZXh0Q2hhbmdlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBmZGU0M2E0Li44MTllYmM2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMzg2LDM1ICszODYsNiBAQCB3ZWJhcmNo
aXZlL2xvYWRpbmcvbWFpbnJlc291cmNlLW51bGwtbWltZXR5cGUtY3Jhc2guaHRtbAogd2ViYXJj
aGl2ZS9sb2FkaW5nL21pc3NpbmctZGF0YS5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCi0j
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzI+Ci1mYXN0L2lt
YWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCi1mYXN0L2xvYWRlci9maWxl
LXByb3RvY29sLWZyYWdtZW50Lmh0bWwKLWZhc3QvbG9hZGVyL21haW4tZG9jdW1lbnQtdXJsLWZv
ci1ub24taHR0cC1sb2Fkcy5odG1sCi1mYXN0L2xvYWRlci91c2VyLXN0eWxlLXNoZWV0LXJlc291
cmNlLWxvYWQtY2FsbGJhY2tzLmh0bWwKLWh0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAz
LWFmdGVyLXBvc3QuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3BkZi1jb21taXQtbG9hZC1jYWxs
YmFja3MuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pY29uLWxvYWRpbmctb3ZlcnJpZGUuaHRt
bAotaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi1odHRwL3Rl
c3RzL21pc2Mvd2lsbC1zZW5kLXJlcXVlc3QtcmV0dXJucy1udWxsLW9uLXJlZGlyZWN0Lmh0bWwK
LWh0dHAvdGVzdHMvbWlzYy93aWxsQ2FjaGVSZXNwb25zZS1kZWxlZ2F0ZS1jYWxsYmFjay5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0
bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1z
YW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94
LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cu
aHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1w
YXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fi
b3J0LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCi1zZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQu
aHRtbAotc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvY2FjaGUt
ZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5n
LWFyY2hpdmUuaHRtbAotd2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3QtbG9hZGluZy1hcmNoaXZlLXN1
YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
dGV4dElucHV0Q29udHJvbGxlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMzM3PgogZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNlbC1p
bWUtY29tcG9zaXRpb24uaHRtbApAQCAtNzk4LDEyICs3NjksMjUgQEAgZmFzdC90ZXh0LWF1dG9z
aXppbmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFS
VCBPRiAoMikgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzICh5ZXQpCiAK
KyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG91bGRQYWlu
dEJyb2NrZW5JbWFnZQorZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUu
aHRtbAorCisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
V2lsbFNlbmRSZXF1ZXN0UmV0dXJuTnVsbE9uUmVkaXJlY3QKK2h0dHAvdGVzdHMvbWlzYy93aWxs
LXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAorCisjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgbG9nZ2luZworaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9z
dC5odG1sCitodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sCisKICMgV2Vi
S2l0VGVzdHJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wU291cmNlQXNXZWJB
cmNoaXZlCiB3ZWJhcmNoaXZlL2RvY3R5cGUuaHRtbAogd2ViYXJjaGl2ZS9hcmNoaXZlLWVtcHR5
LWZyYW1lLXNvdXJjZS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRJY29uRGF0YWJhc2VFbmFibGVkCiB3ZWJhcmNoaXZlL3Rlc3QtbGluay1y
ZWwtaWNvbi5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1k
aXNhYmxlZC5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWljb24tbG9h
ZGluZy1vdmVycmlkZS5odG1sCitodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBkdW1wIHRleHQvcGxhaW4gY29u
dGVudCBhcyB0ZXh0CiBodHRwL3Rlc3RzL2luY3JlbWVudGFsL3Nsb3ctdXRmOC10ZXh0LnBsCkBA
IC0xMDQ0LDYgKzEwMjgsOSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEKIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMi5o
dG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbAog
cGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy5odG1sCit3ZWJhcmNo
aXZlL2xvYWRpbmcvY2FjaGUtZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCit3ZWJhcmNoaXZlL2xv
YWRpbmcvdGVzdC1sb2FkaW5nLWFyY2hpdmUuaHRtbAord2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3Qt
bG9hZGluZy1hcmNoaXZlLXN1YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAogCiAjIyMgRU5E
IE9GICgyKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMgKHlldCkKICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEzMDMsNiArMTI5MCwx
MCBAQCBmYXN0L2xvYWRlci93aW5kb3ctcHJvcGVydGllcy1yZXN0b3JlZC1mcm9tLXBhZ2UtY2Fj
aGUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MTYK
IGZhc3QvaGFybmVzcy9wYWdlLWNhY2hlLWNyYXNoLW9uLWRhdGEtdXJscy5odG1sCiAKKyMgV3Jv
bmcgbG9nZ2luZyBvcmRlcgorZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC5odG1s
CitodHRwL3Rlc3RzL2xvYWRpbmcvcGRmLWNvbW1pdC1sb2FkLWNhbGxiYWNrcy5odG1sCisKICMj
IyBFTkQgT0YgKDMpIFVuY2xhc3NpZmllZCBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmY1NzlkNi4uY2RlMjU5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTEzICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5u
ZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcg
Z2V0dGVycyB0byBXS1VSTCwgV0tVUkxSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlIHNvIHRoYXQgaXQg
aXMgcG9zc2libGUKKyAgICAgICAgdG8gZHVtcCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIHRo
ZSB0ZXN0cyBwYXNzaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAg
ICAgICAgKFdLVVJMQ29weVBhdGgpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTC5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tVUkxS
ZXF1ZXN0Q29weUZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAgICAgKFdLVVJMUmVxdWVzdENv
cHlIVFRQTWV0aG9kKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV0tVUkxS
ZXNwb25zZUhUVFBTdGF0dXNDb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMOjpwYXRoKToKKyAgICAgICAgKFdlYlVSTCk6CisKIDIwMTItMDgtMTMgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbU09VUF1bV0sy
XSBNaXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJDb29raWVNYW5hZ2VyOjpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJM
LmNwcAppbmRleCA5OWNkZTg5Li4yMjY4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VSTC5jcHAKQEAgLTYwLDYgKzYwLDExIEBAIFdLU3RyaW5nUmVmIFdLVVJMQ29weVNjaGVtZShX
S1VSTFJlZiB1cmwpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5wcm90b2Nv
bCgpKTsKIH0KIAorV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVBhdGgoV0tVUkxSZWYg
dXJsKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+cGF0aCgpKTsKK30K
KwogV0tTdHJpbmdSZWYgV0tVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoV0tVUkxSZWYgdXJsKQog
ewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+bGFzdFBhdGhDb21wb25lbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCmluZGV4IDJjZGE2YzEuLjRlOTg2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCkBAIC0zOSw2ICszOSw3IEBAIFdLX0VY
UE9SVCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJp
bmcpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVN0cmluZyhXS1VSTFJlZiB1cmwp
OwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUhvc3ROYW1lKFdLVVJMUmVmIHVybCk7
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJMUmVmIHVybCk7CitX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5UGF0aChXS1VSTFJlZiB1cmwpOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KFdLVVJMUmVmIHVybCk7
CiAKIFdLX0VYUE9SVCBib29sIFdLVVJMSXNFcXVhbChXS1VSTFJlZiBhLCBXS1VSTFJlZiBiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzc2
MzY3Yi4uMTE0Yzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
VVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5jcHAKQEAgLTQ4LDYgKzQ4LDE2IEBAIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwo
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiAgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRv
SW1wbChyZXF1ZXN0UmVmKS0+dXJsKCkpOwogfQogCitXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCit7CisgICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0
KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLVVJMUmVxdWVz
dENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSk7Cit9CisKIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKQogewogICAgIFdlYlVSTFJlcXVlc3Q6OnNldERlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1VSTFJlcXVlc3QuaAppbmRleCBhNTNjZTE2Li44NWRmM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oCkBAIC0zOCw2ICszOCwxMCBAQCBX
S19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhXS1VSTChXS1VS
TFJlZik7CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5VVJMKFdLVVJMUmVx
dWVzdFJlZik7CiAKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0
eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmKTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
VVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZik7CisKIFdLX0VYUE9SVCB2
b2lkIFdLVVJMUmVxdWVzdFNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlKTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5jcHAKaW5kZXggY2VmZDA3ZC4uMmQyNWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtNDYsMyArNDYsOCBAQCBXS1N0cmluZ1Jl
ZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYp
CiB7CiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNl
UmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKIH0KKworaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0
YXR1c0NvZGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKK3sKKyAgICByZXR1cm4gdG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaAppbmRleCA4OTg4
ZGZmLi5kNGMyNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tV
UkxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3Bv
bnNlLmgKQEAgLTM4LDYgKzM4LDggQEAgV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMUmVzcG9uc2VD
b3B5VVJMKFdLVVJMUmVzcG9uc2VSZWYpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxS
ZXNwb25zZUNvcHlNSU1FVHlwZShXS1VSTFJlc3BvbnNlUmVmKTsKIAorV0tfRVhQT1JUIGludDMy
X3QgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKFdLVVJMUmVzcG9uc2VSZWYpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlVSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IGYwY2Nl
OGQuLmIyOTYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTYzLDYgKzYzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVS
TC0+cHJvdG9jb2woKSA6IFN0cmluZygpOwogICAgIH0KIAorICAgIFN0cmluZyBwYXRoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgcmV0dXJu
IG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpIDogU3RyaW5nKCk7
CisgICAgfQorCiAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNDYzZWMwLi4xMmNiMzA0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTItMDgtMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFJlc291cmNlIENhbGxiYWNrcyBsb2dnaW5nLiBTZXZl
cmFsIGF1eCBkdW1waW5nIGZ1bmN0aW9ucyBhcmUgYWRkZWQuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmlzRmlsZVNjaGVtZSk6CisgICAgICAgIChXVFIp
OgorICAgICAgICAoV1RSOjpwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpyZXNldEFmdGVyVGVzdCk6CisgICAgICAgIChXVFI6OmR1bXBSZXF1ZXN0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wUmVzcG9uc2VE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBFcnJv
ckRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkRm9yUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisKIDIwMTItMDgtMTMgIFBldGVyIEJldmVy
bG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IGFwayBn
ZW5lcmF0aW9uIGZvciB0aGUgQW5kcm9pZCBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xh
eW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCBkZjYwOGRhLi45YTBhNjVkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRl
c3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtNDQsNiArNDQsNyBAQCBt
b2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpOwogICAg
ICAgICB2b2lkIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUHJv
Z3Jlc3NGaW5pc2hlZENhbGxiYWNrKCk7CisgICAgICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOwogICAgICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7
CiAKICAgICAgICAgLy8gU3BlY2lhbCBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmlu
ZGV4IDJhM2VjMjAuLmM5NzA1YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLVVJMUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMjE1LDYgKzIxNiw1NyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZpbGVTY2hlbWUoV0tTdHJpbmdSZWYgc2NoZW1l
KQoreworICAgIHJldHVybiBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNl
KHNjaGVtZSwgImZpbGUiKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgZGl2aWRlciA9ICcvJzsK
Kworc3RhdGljIGlubGluZSBXVEY6OlN0cmluZyBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdL
VVJMUmVmIHVybCkKK3sKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjaGVtZVN0cmluZyA9IGFkb3B0V0soV0tV
UkxDb3B5U2NoZW1lKHVybCkpOworICAgIGlmICghaXNGaWxlU2NoZW1lKHNjaGVtZVN0cmluZy5n
ZXQoKSkpCisgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmlu
Zyh1cmwpKSk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHRvV1RGU3RyaW5nKGFkb3B0V0so
V0tVUkxDb3B5UGF0aCh1cmwpKSk7CisgICAgV1RGOjpTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CisKKyAgICBjb25zdCBzaXplX3QgaW5kZXhCYXNlTmFtZSA9IHBhdGhTdHJpbmcucmV2ZXJz
ZUZpbmQoZGl2aWRlcik7CisgICAgaWYgKGluZGV4QmFzZU5hbWUgIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgY29uc3Qgc2l6ZV90IGluZGV4RGlyTmFtZSA9IHBhdGhTdHJpbmcucmV2ZXJzZUZpbmQo
ZGl2aWRlciwgaW5kZXhCYXNlTmFtZSAtIDEpOworICAgICAgICBpZiAoaW5kZXhEaXJOYW1lICE9
IG5vdEZvdW5kKQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN0cmluZy5z
dWJzdHJpbmcoaW5kZXhEaXJOYW1lICsgMSwgaW5kZXhCYXNlTmFtZSAtIGluZGV4RGlyTmFtZSAt
IDEpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZGl2aWRlcik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAx
KSk7IC8vIEZpbGVuYW1lLgorICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGRpdmlkZXIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3RyaW5nKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0
aWMgaW5saW5lIFdURjo6U3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChXS1VSTFJlZiB1
cmwpCit7CisgICAgaWYgKCF1cmwpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hlbWVTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVNj
aGVtZSh1cmwpKTsKKyAgICBpZiAoIWlzRmlsZVNjaGVtZShzY2hlbWVTdHJpbmcuZ2V0KCkpKQor
ICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkp
OworCisgICAgV1RGOjpTdHJpbmcgdXJsU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VS
TENvcHlTdHJpbmcodXJsKSkpOworICAgIGNvbnN0IHNpemVfdCBpbmRleEJhc2VOYW1lID0gdXJs
U3RyaW5nLnJldmVyc2VGaW5kKGRpdmlkZXIpOworCisgICAgcmV0dXJuIChpbmRleEJhc2VOYW1l
ID09IG5vdEZvdW5kKSA/IHVybFN0cmluZyA6IHVybFN0cmluZy5zdWJzdHJpbmcoaW5kZXhCYXNl
TmFtZSArIDEpOworfQorCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBhc3NpZ25l
ZFVybHNDYWNoZTsKKwogSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fd29ybGQoQWRv
cHRXSywgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpCkBAIC0zNjYsNiArNDE4LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlc2V0QWZ0ZXJUZXN0KCkKICNlbHNlCiAgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpyZXNldEludGVybmFsc09iamVjdChjb250ZXh0KTsKICNlbmRp
ZgorICAgIGFzc2lnbmVkVXJsc0NhY2hlLmNsZWFyKCk7CiB9CiAKIC8vIExvYWRlciBDbGllbnQg
Q2FsbGJhY2tzCkBAIC0zOTYsNiArNDQ5LDcxIEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZURlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcIiIpOwog
fQogCitzdGF0aWMgaW5saW5lIHZvaWQgZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmlyc3RQYXJ0eSA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0
Q29weUZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gaHR0cE1ldGhvZCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2Qo
cmVxdWVzdCkpOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCI8TlNVUkxSZXF1ZXN0IFVSTCAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1
cmwuZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChm
aXJzdFBhcnR5LmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1
aWxkZXIoKS0+YXBwZW5kKCIsIGh0dHAgbWV0aG9kICIpOworCisgICAgaWYgKFdLU3RyaW5nSXNF
bXB0eShodHRwTWV0aG9kLmdldCgpKSkKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIobm9uZSkiKTsKKyAgICBlbHNlCisgICAgICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmlu
ZyhodHRwTWV0aG9kKSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIj4iKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXNwb25z
ZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXNw
b25zZUNvcHlVUkwocmVzcG9uc2UpKTsKKyAgICBpZiAoIXVybCkgeworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIihudWxsKSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQodXJsLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKFdURjo6U3RyaW5nOjpudW1iZXIoV0tV
UkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlKSkpOworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiPiIpOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tFcnJv
clJlZiBlcnJvcikKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JEb21haW4g
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RG9tYWluKGVycm9yKSk7CisgICAgaW50IGVycm9yQ29kZSA9
IFdLRXJyb3JHZXRFcnJvckNvZGUoZXJyb3IpOworCisgICAgLy8gV2UgbmVlZCB0byBkbyBzb21l
IGVycm9yIG1hcHBpbmcgaGVyZSB0byBtYXRjaAorICAgIC8vIHRoZSB0ZXN0IGV4cGVjdGF0aW9u
cy4KKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQo
KSwgIldlYktpdE5ldHdvcmtFcnJvciIpKSB7CisgICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTlNVUkxFcnJvckRvbWFpbiIpKTsKKyAg
ICAgICAgZXJyb3JDb2RlID0gLTk5OTsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQoKSwgIldlYktpdFBvbGljeUVycm9yIikpCisg
ICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiV2ViS2l0RXJyb3JEb21haW4iKSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIjxOU0Vycm9yIGRvbWFpbiAiKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoZXJy
b3JEb21haW4pKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiwgY29kZSAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQoU3RyaW5nOjpudW1iZXIoZXJyb3JDb2RlKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJy
b3IpKTsKKyAgICBpZiAodXJsLmdldCgpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiB1cmxTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKTsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIs
IGZhaWxpbmcgVVJMIFwiIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJp
bmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcIiIpOworICAg
IH0KKworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZCgiPiIpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOwpAQCAtOTM4LDggKzEwNTYsMTYg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRJbml0
aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9vbCkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0LCBib29sKQogeworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1
bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxi
YWNrcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJs
ID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKKyAgICBhc3NpZ25lZFVy
bHNDYWNoZS5hZGQoaWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0
KCkpKTsKIH0KIAogLy8gUmVzb3VyY2UgTG9hZCBDbGllbnQgQ2FsbGJhY2tzCkBAIC05NTQsMTEg
KzEwODAsMjMgQEAgc3RhdGljIGlubGluZSBib29sIGlzSFRUUE9ySFRUUFNTY2hlbWUoV0tTdHJp
bmdSZWYgc2NoZW1lKQogICAgIHJldHVybiBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdu
b3JpbmdDYXNlKHNjaGVtZSwgImh0dHAiKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
SWdub3JpbmdDYXNlKHNjaGVtZSwgImh0dHBzIik7CiB9CiAKLVdLVVJMUmVxdWVzdFJlZiBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OndpbGxTZW5kUmVxdWVzdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgdWludDY0X3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0
LCBXS1VSTFJlc3BvbnNlUmVmKQorV0tVUkxSZXF1ZXN0UmVmIEluamVjdGVkQnVuZGxlUGFnZTo6
d2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tV
UkxSZXNwb25zZVJlZiByZXNwb25zZSkKIHsKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLmlzVGVzdFJ1bm5pbmcoKSAmJiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVz
dENvbnRyb2xsZXIoKS0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmco
KQorICAgICAgICAmJiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xs
ZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChhc3NpZ25lZFVybHND
YWNoZS5jb250YWlucyhpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ25lZFVybHNDYWNoZS5nZXQoaWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogIjx1bmtub3duPiIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIHdpbGxTZW5kUmVxdWVzdCAiKTsKKyAgICAgICAg
ZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0KTsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIg
cmVkaXJlY3RSZXNwb25zZSAiKTsKKyAgICAgICAgZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CisgICAgfQorCiAgICAgV0tSZXRh
aW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0
KSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3QgPSBhZG9wdFdLKFdLVVJMQ29w
eUhvc3ROYW1lKHVybC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hl
bWUgPSBhZG9wdFdLKFdLVVJMQ29weVNjaGVtZSh1cmwuZ2V0KCkpKTsKQEAgLTk5MCwxMSArMTEy
OCwyMSBAQCBXS1VSTFJlcXVlc3RSZWYgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2VuZFJlcXVl
c3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQgogICAgIHJldHVybiByZXF1ZXN0OwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2Uo
V0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCwgV0tVUkxSZXNwb25z
ZVJlZiByZXNwb25zZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlUmVzcG9u
c2VGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCkt
PnNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYXNzaWduZWRVcmxzQ2FjaGUu
Y29udGFpbnMoaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gYXNzaWduZWRVcmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICI8dW5rbm93bj4iKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRSZWNlaXZlUmVzcG9uc2UgIik7CisgICAgICAgIGR1
bXBSZXNwb25zZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKTsKKyAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJc
biIpOworICAgIH0KKworCiAgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0
VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEyLDEyICsxMTYwLDM1IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2Fk
Rm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCkK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyKQogeworICAg
IGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENv
bnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoYXNzaWduZWRVcmxzQ2FjaGUuY29udGFpbnMoaWRlbnRpZmllcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ25lZFVybHND
YWNoZS5nZXQoaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAiPHVua25vd24+Iik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRGaW5pc2hMb2FkaW5nXG4iKTsK
IH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tC
dW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCwgV0tFcnJvclJlZikKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tFcnJvclJlZiBl
cnJvcikKIHsKKyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5n
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKGFzc2lnbmVkVXJsc0NhY2hlLmNvbnRhaW5zKGlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8g
YXNzaWduZWRVcmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIjx1bmtub3duPiIpOworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gZGlkRmFpbExv
YWRpbmdXaXRoRXJyb3I6ICIpOworCisgICAgZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZXJyb3IpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGNkZmZjYWUuLjdkMWY3ODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC03Nyw2ICs3Nyw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxl
cigpCiAgICAgLCBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENh
bGxiYWNrKGZhbHNlKQorICAgICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQog
ICAgICwgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKICAgICAsIG1fd2Fp
dFRvRHVtcChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnQoZmFsc2UpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKaW5kZXggNTE3YTUxNi4uNWE2MjIxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxi
YWNrcygpIHsgbV9kdW1wRnVsbFNjcmVlbkNhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lkIGR1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSB7IHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
dHJ1ZSk7IH0KICAgICB2b2lkIGR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSB7IHNldFNo
b3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sodHJ1ZSk7IH0KKyAgICB2b2lkIGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSB7IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRy
dWU7IH0KICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgeyBtX2R1bXBS
ZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRTaG91bGRE
dW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzID0gdmFsdWU7IH0KQEAgLTE2Myw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGREdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEZ1bGxTY3Jl
ZW5DYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBj
b25zdCB7IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAgICBib29sIHNob3Vs
ZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBQcm9n
cmVzc0ZpbmlzaGVkQ2FsbGJhY2s7IH0KKyAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0K
ICAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQogCiAgICAgYm9vbCBpc1Bv
bGljeURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5RGVsZWdhdGVFbmFi
bGVkOyB9CkBAIC0yNDksNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcEZ1bGxT
Y3JlZW5DYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7CiAgICAg
Ym9vbCBtX2R1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7CisgICAgYm9vbCBtX2R1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzOwogICAgIGJvb2wgbV93YWl0VG9EdW1wOyAvLyBUcnVlIGlmIHdhaXRVbnRpbERvbmUoKSBo
YXMgYmVlbiBjYWxsZWQsIGJ1dCBub3RpZnlEb25lKCkgaGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQu
CiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158280</attachid>
            <date>2012-08-14 03:33:38 -0700</date>
            <delta_ts>2012-08-14 06:41:00 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug42332_v2</filename>
            <type>text/plain</type>
            <size>26967</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDJmZjgyZGFlYTMyZjE4ZGU1NWM4Njc1N2U3OGNjM2QzMmRhZjM1MzgKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIEF1ZyAxMyAyMzozNDo0MiAyMDEyICswMzAwCgogICAgYnVnNDIzMzIKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTk4
OGQ1Ni4uYjRkMjBlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTEzICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbnNraXBwZWQgY29ycmVzcG9uZG9uZyB0ZXN0IGNhc2VzLgorCisgICAgICAgICogcGxhdGZv
cm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDgtMTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBiZWZvcmVU
ZXh0Q2hhbmdlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBmZGU0M2E0Li44MTllYmM2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMzg2LDM1ICszODYsNiBAQCB3ZWJhcmNo
aXZlL2xvYWRpbmcvbWFpbnJlc291cmNlLW51bGwtbWltZXR5cGUtY3Jhc2guaHRtbAogd2ViYXJj
aGl2ZS9sb2FkaW5nL21pc3NpbmctZGF0YS5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCiAKLSMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCi0j
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzI+Ci1mYXN0L2lt
YWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCi1mYXN0L2xvYWRlci9maWxl
LXByb3RvY29sLWZyYWdtZW50Lmh0bWwKLWZhc3QvbG9hZGVyL21haW4tZG9jdW1lbnQtdXJsLWZv
ci1ub24taHR0cC1sb2Fkcy5odG1sCi1mYXN0L2xvYWRlci91c2VyLXN0eWxlLXNoZWV0LXJlc291
cmNlLWxvYWQtY2FsbGJhY2tzLmh0bWwKLWh0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAz
LWFmdGVyLXBvc3QuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3BkZi1jb21taXQtbG9hZC1jYWxs
YmFja3MuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1ldGhvZHMuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAotaHR0
cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pY29uLWxvYWRpbmctb3ZlcnJpZGUuaHRt
bAotaHR0cC90ZXN0cy9taXNjL2xpbmstcmVsLWljb24tYmVmb3JlbG9hZC5odG1sCi1odHRwL3Rl
c3RzL21pc2Mvd2lsbC1zZW5kLXJlcXVlc3QtcmV0dXJucy1udWxsLW9uLXJlZGlyZWN0Lmh0bWwK
LWh0dHAvdGVzdHMvbWlzYy93aWxsQ2FjaGVSZXNwb25zZS1kZWxlZ2F0ZS1jYWxsYmFjay5odG1s
Ci1odHRwL3Rlc3RzL21pc2Mvd2luZG93LWRvdC1zdG9wLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy1pbi1ib2R5Lmh0
bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVu
eS1tZXRhLXRhZy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cuaHRtbAotaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVudC1z
YW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJpdHkvWEZyYW1lT3B0aW9ucy94
LWZyYW1lLW9wdGlvbnMtZGVueS1tZXRhLXRhZy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hG
cmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0
eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4tYWxsb3cu
aHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1w
YXJlbnQtc2FtZS1vcmlnaW4tZGVueS5odG1sCi1odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fi
b3J0LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCi1zZWN1cml0eS9ibG9jay10ZXN0LW5vLXBvcnQu
aHRtbAotc2VjdXJpdHkvYmxvY2stdGVzdC5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvY2FjaGUt
ZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5n
LWFyY2hpdmUuaHRtbAotd2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3QtbG9hZGluZy1hcmNoaXZlLXN1
YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
dGV4dElucHV0Q29udHJvbGxlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMzM3PgogZWRpdGluZy9pbnB1dC9zZXR0aW5nLWlucHV0LXZhbHVlLWNhbmNlbC1p
bWUtY29tcG9zaXRpb24uaHRtbApAQCAtNzk4LDEyICs3NjksMjUgQEAgZmFzdC90ZXh0LWF1dG9z
aXppbmcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBTVEFS
VCBPRiAoMikgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRob3V0IGJ1ZyByZXBvcnRzICh5ZXQpCiAK
KyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG91bGRQYWlu
dEJyb2NrZW5JbWFnZQorZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUu
aHRtbAorCisjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
V2lsbFNlbmRSZXF1ZXN0UmV0dXJuTnVsbE9uUmVkaXJlY3QKK2h0dHAvdGVzdHMvbWlzYy93aWxs
LXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3QuaHRtbAorCisjIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgbG9nZ2luZworaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9z
dC5odG1sCitodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1sCisKICMgV2Vi
S2l0VGVzdHJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wU291cmNlQXNXZWJB
cmNoaXZlCiB3ZWJhcmNoaXZlL2RvY3R5cGUuaHRtbAogd2ViYXJjaGl2ZS9hcmNoaXZlLWVtcHR5
LWZyYW1lLXNvdXJjZS5odG1sCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRJY29uRGF0YWJhc2VFbmFibGVkCiB3ZWJhcmNoaXZlL3Rlc3QtbGluay1y
ZWwtaWNvbi5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1k
aXNhYmxlZC5odG1sCitodHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWljb24tbG9h
ZGluZy1vdmVycmlkZS5odG1sCitodHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVs
b2FkLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBkdW1wIHRleHQvcGxhaW4gY29u
dGVudCBhcyB0ZXh0CiBodHRwL3Rlc3RzL2luY3JlbWVudGFsL3Nsb3ctdXRmOC10ZXh0LnBsCkBA
IC0xMDQ0LDYgKzEwMjgsOSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEKIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMi5o
dG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLTMuaHRtbAog
cGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBlcy5odG1sCit3ZWJhcmNo
aXZlL2xvYWRpbmcvY2FjaGUtZXhwaXJlZC1zdWJyZXNvdXJjZS5odG1sCit3ZWJhcmNoaXZlL2xv
YWRpbmcvdGVzdC1sb2FkaW5nLWFyY2hpdmUuaHRtbAord2ViYXJjaGl2ZS9sb2FkaW5nL3Rlc3Qt
bG9hZGluZy1hcmNoaXZlLXN1YnJlc291cmNlLW51bGwtbWltZXR5cGUuaHRtbAogCiAjIyMgRU5E
IE9GICgyKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMgKHlldCkKICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEzMDMsNiArMTI5MCwx
MCBAQCBmYXN0L2xvYWRlci93aW5kb3ctcHJvcGVydGllcy1yZXN0b3JlZC1mcm9tLXBhZ2UtY2Fj
aGUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2MTYK
IGZhc3QvaGFybmVzcy9wYWdlLWNhY2hlLWNyYXNoLW9uLWRhdGEtdXJscy5odG1sCiAKKyMgV3Jv
bmcgbG9nZ2luZyBvcmRlcgorZmFzdC9sb2FkZXIvZmlsZS1wcm90b2NvbC1mcmFnbWVudC5odG1s
CitodHRwL3Rlc3RzL2xvYWRpbmcvcGRmLWNvbW1pdC1sb2FkLWNhbGxiYWNrcy5odG1sCisKICMj
IyBFTkQgT0YgKDMpIFVuY2xhc3NpZmllZCBmYWlsdXJlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmY1NzlkNi4uY2RlMjU5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTEzICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5u
ZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzMzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcg
Z2V0dGVycyB0byBXS1VSTCwgV0tVUkxSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlIHNvIHRoYXQgaXQg
aXMgcG9zc2libGUKKyAgICAgICAgdG8gZHVtcCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIHRo
ZSB0ZXN0cyBwYXNzaW5nLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAg
ICAgICAgKFdLVVJMQ29weVBhdGgpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTC5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tVUkxS
ZXF1ZXN0Q29weUZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAgICAgKFdLVVJMUmVxdWVzdENv
cHlIVFRQTWV0aG9kKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAoV0tVUkxS
ZXNwb25zZUhUVFBTdGF0dXNDb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMOjpwYXRoKToKKyAgICAgICAgKFdlYlVSTCk6CisKIDIwMTItMDgtMTMgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbU09VUF1bV0sy
XSBNaXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJDb29raWVNYW5hZ2VyOjpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJM
LmNwcAppbmRleCA5OWNkZTg5Li4yMjY4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VSTC5jcHAKQEAgLTYwLDYgKzYwLDExIEBAIFdLU3RyaW5nUmVmIFdLVVJMQ29weVNjaGVtZShX
S1VSTFJlZiB1cmwpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5wcm90b2Nv
bCgpKTsKIH0KIAorV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVBhdGgoV0tVUkxSZWYg
dXJsKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+cGF0aCgpKTsKK30K
KwogV0tTdHJpbmdSZWYgV0tVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoV0tVUkxSZWYgdXJsKQog
ewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+bGFzdFBhdGhDb21wb25lbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCmluZGV4IDJjZGE2YzEuLjRlOTg2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5oCkBAIC0zOSw2ICszOSw3IEBAIFdLX0VY
UE9SVCBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJp
bmcpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weVN0cmluZyhXS1VSTFJlZiB1cmwp
OwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUhvc3ROYW1lKFdLVVJMUmVmIHVybCk7
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJMUmVmIHVybCk7CitX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5UGF0aChXS1VSTFJlZiB1cmwpOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KFdLVVJMUmVmIHVybCk7
CiAKIFdLX0VYUE9SVCBib29sIFdLVVJMSXNFcXVhbChXS1VSTFJlZiBhLCBXS1VSTFJlZiBiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggNzc2
MzY3Yi4uMTE0Yzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
VVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5jcHAKQEAgLTQ4LDYgKzQ4LDE2IEBAIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwo
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiAgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRv
SW1wbChyZXF1ZXN0UmVmKS0+dXJsKCkpOwogfQogCitXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCit7CisgICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0
KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLVVJMUmVxdWVz
dENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSk7Cit9CisKIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKQogewogICAgIFdlYlVSTFJlcXVlc3Q6OnNldERlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1VSTFJlcXVlc3QuaAppbmRleCBhNTNjZTE2Li44NWRmM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oCkBAIC0zOCw2ICszOCwxMCBAQCBX
S19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhXS1VSTChXS1VS
TFJlZik7CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5VVJMKFdLVVJMUmVx
dWVzdFJlZik7CiAKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0
eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmKTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
VVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZik7CisKIFdLX0VYUE9SVCB2
b2lkIFdLVVJMUmVxdWVzdFNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlKTsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5jcHAKaW5kZXggY2VmZDA3ZC4uMmQyNWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtNDYsMyArNDYsOCBAQCBXS1N0cmluZ1Jl
ZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYp
CiB7CiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNl
UmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKIH0KKworaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0
YXR1c0NvZGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKK3sKKyAgICByZXR1cm4gdG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaAppbmRleCA4OTg4
ZGZmLi5kNGMyNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tV
UkxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3Bv
bnNlLmgKQEAgLTM4LDYgKzM4LDggQEAgV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMUmVzcG9uc2VD
b3B5VVJMKFdLVVJMUmVzcG9uc2VSZWYpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxS
ZXNwb25zZUNvcHlNSU1FVHlwZShXS1VSTFJlc3BvbnNlUmVmKTsKIAorV0tfRVhQT1JUIGludDMy
X3QgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKFdLVVJMUmVzcG9uc2VSZWYpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlVSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IGYwY2Nl
OGQuLmIyOTYxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTYzLDYgKzYzLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVS
TC0+cHJvdG9jb2woKSA6IFN0cmluZygpOwogICAgIH0KIAorICAgIFN0cmluZyBwYXRoKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgcmV0dXJu
IG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+cGF0aCgpIDogU3RyaW5nKCk7
CisgICAgfQorCiAgICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNDYzZWMwLi4xMmNiMzA0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MTItMDgtMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5j
b20+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFJlc291cmNlIENhbGxiYWNrcyBsb2dnaW5nLiBTZXZl
cmFsIGF1eCBkdW1waW5nIGZ1bmN0aW9ucyBhcmUgYWRkZWQuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlk
bDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmlzRmlsZVNjaGVtZSk6CisgICAgICAgIChXVFIp
OgorICAgICAgICAoV1RSOjpwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpyZXNldEFmdGVyVGVzdCk6CisgICAgICAgIChXVFI6OmR1bXBSZXF1ZXN0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wUmVzcG9uc2VE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXVFI6OmR1bXBFcnJv
ckRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkRm9yUmVz
b3VyY2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MpOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcik6CisKIDIwMTItMDgtMTMgIFBldGVyIEJldmVy
bG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IGFwayBn
ZW5lcmF0aW9uIGZvciB0aGUgQW5kcm9pZCBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxl
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xh
eW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCBkZjYwOGRhLi45YTBhNjVkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRl
c3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtNDQsNiArNDQsNyBAQCBt
b2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpOwogICAg
ICAgICB2b2lkIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdm9pZCBkdW1wUHJv
Z3Jlc3NGaW5pc2hlZENhbGxiYWNrKCk7CisgICAgICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOwogICAgICAgICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7
CiAKICAgICAgICAgLy8gU3BlY2lhbCBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmlu
ZGV4IDJhM2VjMjAuLjZlMmY1MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLVVJMUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IApAQCAtMjE1LDYgKzIxNiw1OCBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZnJhbWVUb1N0cihXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0xvY2FsRmlsZVNjaGVtZShXS1N0cmluZ1JlZiBz
Y2hlbWUpCit7CisgICAgcmV0dXJuIFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmdJZ25vcmlu
Z0Nhc2Uoc2NoZW1lLCAiZmlsZSIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciBkaXZpZGVyID0g
Jy8nOworCitzdGF0aWMgaW5saW5lIFdURjo6U3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQoV0tVUkxSZWYgZmlsZVVybCkKK3sKKyAgICBpZiAoIWZpbGVVcmwpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hlbWVTdHJpbmcg
PSBhZG9wdFdLKFdLVVJMQ29weVNjaGVtZShmaWxlVXJsKSk7CisgICAgaWYgKCFpc0xvY2FsRmls
ZVNjaGVtZShzY2hlbWVTdHJpbmcuZ2V0KCkpKQorICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmco
YWRvcHRXSyhXS1VSTENvcHlTdHJpbmcoZmlsZVVybCkpKTsKKworICAgIFN0cmluZyBwYXRoU3Ry
aW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlQYXRoKGZpbGVVcmwpKSk7CisgICAg
V1RGOjpTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisKKyAgICAvLyBSZW1vdmUgdGhlIGxl
YWRpbmcgcGF0aCBmcm9tIGZpbGUgdXJscy4KKyAgICBjb25zdCBzaXplX3QgaW5kZXhCYXNlTmFt
ZSA9IHBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcik7CisgICAgaWYgKGluZGV4QmFzZU5h
bWUgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGluZGV4RGlyTmFtZSA9IHBh
dGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlciwgaW5kZXhCYXNlTmFtZSAtIDEpOworICAgICAg
ICBpZiAoaW5kZXhEaXJOYW1lICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQocGF0aFN0cmluZy5zdWJzdHJpbmcoaW5kZXhEaXJOYW1lICsgMSwgaW5kZXhCYXNl
TmFtZSAtIGluZGV4RGlyTmFtZSAtIDEpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
ZGl2aWRlcik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdHJpbmcuc3Vic3Ry
aW5nKGluZGV4QmFzZU5hbWUgKyAxKSk7IC8vIEZpbGVuYW1lLgorICAgIH0gZWxzZSB7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRpdmlkZXIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChwYXRoU3RyaW5nKTsgLy8gUmV0dXJuICIvcGF0aFN0cmluZyIuCisgICAgfQorCisg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc3RhdGljIGlubGluZSBX
VEY6OlN0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZWYgZmlsZVVybCkKK3sK
KyAgICBpZiAoIWZpbGVVcmwpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hlbWVTdHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVNjaGVt
ZShmaWxlVXJsKSk7CisgICAgaWYgKCFpc0xvY2FsRmlsZVNjaGVtZShzY2hlbWVTdHJpbmcuZ2V0
KCkpKQorICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmco
ZmlsZVVybCkpKTsKKworICAgIFdURjo6U3RyaW5nIHVybFN0cmluZyA9IHRvV1RGU3RyaW5nKGFk
b3B0V0soV0tVUkxDb3B5U3RyaW5nKGZpbGVVcmwpKSk7CisgICAgY29uc3Qgc2l6ZV90IGluZGV4
QmFzZU5hbWUgPSB1cmxTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcik7CisKKyAgICByZXR1cm4g
KGluZGV4QmFzZU5hbWUgPT0gbm90Rm91bmQpID8gdXJsU3RyaW5nIDogdXJsU3RyaW5nLnN1YnN0
cmluZyhpbmRleEJhc2VOYW1lICsgMSk7Cit9CisKK3N0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBT
dHJpbmc+IGFzc2lnbmVkVXJsc0NhY2hlOworCiBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVk
QnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAg
ICwgbV93b3JsZChBZG9wdFdLLCBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSkKQEAg
LTM2Niw2ICs0MTksNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cmVzZXRBZnRlclRlc3Qo
KQogI2Vsc2UKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KGNv
bnRleHQpOwogI2VuZGlmCisgICAgYXNzaWduZWRVcmxzQ2FjaGUuY2xlYXIoKTsKIH0KIAogLy8g
TG9hZGVyIENsaWVudCBDYWxsYmFja3MKQEAgLTM5Niw2ICs0NTAsNzAgQEAgc3RhdGljIHZvaWQg
ZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSkKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIlwiIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBkdW1wUmVxdWVzdERlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQoreworICAg
IFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwo
cmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmaXJzdFBhcnR5ID0gYWRvcHRX
SyhXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdCkpOworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBodHRwTWV0aG9kID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RD
b3B5SFRUUE1ldGhvZChyZXF1ZXN0KSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIjxOU1VSTFJlcXVlc3QgVVJMICIpOworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChwYXRoU3VpdGFibGVG
b3JUZXN0UmVzdWx0KHVybC5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5z
dHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiLCBtYWluIGRvY3VtZW50IFVSTCAiKTsKKyAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodXJsU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGZpcnN0UGFydHkuZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiwgaHR0cCBtZXRob2QgIik7CisKKyAgICBp
ZiAoV0tTdHJpbmdJc0VtcHR5KGh0dHBNZXRob2QuZ2V0KCkpKQorICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIihub25lKSIpOworICAgIGVs
c2UKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKGh0dHBNZXRob2QpKTsKKworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiPiIpOworfQorCitzdGF0aWMgaW5saW5lIHZv
aWQgZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZXNw
b25zZVJlZiByZXNwb25zZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRv
cHRXSyhXS1VSTFJlc3BvbnNlQ29weVVSTChyZXNwb25zZSkpOworICAgIGlmICghdXJsKSB7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
KG51bGwpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCI8TlNVUkxSZXNwb25zZSAiKTsKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQocGF0aFN1aXRh
YmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiwgaHR0cCBzdGF0dXMgY29kZSAiKTsKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoV1RGOjpTdHJp
bmc6Om51bWJlcihXS1VSTFJlc3BvbnNlSFRUUFN0YXR1c0NvZGUocmVzcG9uc2UpKSk7CisgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCI+Iik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkdW1wRXJyb3JEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChXS0Vycm9yUmVmIGVycm9yKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBlcnJvckRvbWFpbiA9IGFkb3B0V0soV0tFcnJvckNvcHlEb21haW4oZXJyb3IpKTsKKyAgICBp
bnQgZXJyb3JDb2RlID0gV0tFcnJvckdldEVycm9yQ29kZShlcnJvcik7CisKKyAgICAvLyBXZSBu
ZWVkIHRvIGRvIHNvbWUgZXJyb3IgbWFwcGluZyBoZXJlIHRvIG1hdGNoIHRoZSB0ZXN0IGV4cGVj
dGF0aW9ucyAoTWFjIGVycm9yIG5hbWVzIGFyZSBleHBlY3RlZCkuCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcoZXJyb3JEb21haW4uZ2V0KCksICJXZWJLaXROZXR3b3JrRXJy
b3IiKSkgeworICAgICAgICBlcnJvckRvbWFpbiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIk5TVVJMRXJyb3JEb21haW4iKSk7CisgICAgICAgIGVycm9yQ29kZSA9IC05
OTk7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoZXJyb3JE
b21haW4uZ2V0KCksICJXZWJLaXRQb2xpY3lFcnJvciIpKQorICAgICAgICBlcnJvckRvbWFpbiA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdEVycm9yRG9tYWlu
IikpOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKCI8TlNFcnJvciBkb21haW4gIik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0
cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKGVycm9yRG9tYWluKSk7CisgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIsIGNvZGUgIik7
CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKFN0
cmluZzo6bnVtYmVyKGVycm9yQ29kZSkpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVy
bCA9IGFkb3B0V0soV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yKSk7CisgICAgaWYgKHVybC5n
ZXQoKSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRv
cHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgpKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiLCBmYWlsaW5nIFVSTCBcIiIpOwor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
dG9XVEZTdHJpbmcodXJsU3RyaW5nKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXCIiKTsKKyAgICB9CisKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIj4iKTsKK30KKwogdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdl
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKGZyYW1lKTsKQEAgLTkzOCw4ICsxMDU2LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWREZXRlY3RYU1NGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogewog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2Uo
V0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBX
S1VSTFJlcXVlc3RSZWYsIGJvb2wpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkSW5pdGlh
dGVMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgYm9vbCkKIHsKKyAgICBp
ZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250
cm9sbGVyKCktPnNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXF1
ZXN0Q29weVVSTChyZXF1ZXN0KSk7CisgICAgYXNzaWduZWRVcmxzQ2FjaGUuYWRkKGlkZW50aWZp
ZXIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgpKSk7CiB9CiAKIC8vIFJlc291
cmNlIExvYWQgQ2xpZW50IENhbGxiYWNrcwpAQCAtOTU0LDExICsxMDgwLDIzIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0hUVFBPckhUVFBTU2NoZW1lKFdLU3RyaW5nUmVmIHNjaGVtZSkKICAgICBy
ZXR1cm4gV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZ0lnbm9yaW5nQ2FzZShzY2hlbWUsICJo
dHRwIikgfHwgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZ0lnbm9yaW5nQ2FzZShzY2hlbWUs
ICJodHRwcyIpOwogfQogCi1XS1VSTFJlcXVlc3RSZWYgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxs
U2VuZFJlcXVlc3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIHVpbnQ2NF90LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZikK
K1dLVVJMUmVxdWVzdFJlZiBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxTZW5kUmVxdWVzdEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgdWludDY0X3QgaWRl
bnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCiB7CiAgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkg
JiYgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPndpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgaWYgKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkKKyAgICAgICAgJiYgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYXNzaWduZWRVcmxzQ2FjaGUuY29udGFpbnMoaWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID8gYXNzaWduZWRVcmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dW5rbm93bj4i
KTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKCIgLSB3aWxsU2VuZFJlcXVlc3QgIik7CisgICAgICAgIGR1bXBSZXF1ZXN0RGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdCk7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHJlZGlyZWN0UmVzcG9uc2UgIik7
CisgICAgICAgIGR1bXBSZXNwb25zZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJl
c3BvbnNlKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCJcbiIpOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwg
PSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCkpOwogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBob3N0ID0gYWRvcHRXSyhXS1VSTENvcHlIb3N0TmFtZSh1cmwuZ2V0KCkp
KTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc2NoZW1lID0gYWRvcHRXSyhXS1VSTENv
cHlTY2hlbWUodXJsLmdldCgpKSk7CkBAIC05OTAsMTEgKzExMjgsMjEgQEAgV0tVUkxSZXF1ZXN0
UmVmIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmLCBXS0IKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVGcmFtZVJlZiwgdWludDY0X3QsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJl
c3BvbnNlUmVmIHJlc3BvbnNlKQogewogICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKGFzc2lnbmVkVXJsc0NhY2hlLmNvbnRhaW5zKGlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA/IGFzc2lnbmVkVXJsc0NhY2hlLmdldChpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPHVua25vd24+Iik7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
IC0gZGlkUmVjZWl2ZVJlc3BvbnNlICIpOworICAgICAgICBkdW1wUmVzcG9uc2VEZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZSk7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKyAgICB9CisKKwogICAg
IGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNo
b3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTAxMiwxMiArMTE2MCwzNSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2
ZUNvbnRlbnRMZW5ndGhGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQgogewogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLQnVuZGxl
UGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZTo6ZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVG
cmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIUluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKGFzc2lnbmVkVXJsc0Nh
Y2hlLmNvbnRhaW5zKGlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gYXNzaWduZWRVcmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Ijx1bmtub3duPiIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCgiIC0gZGlkRmluaXNoTG9hZGluZ1xuIik7CiB9CiAKLXZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVGcmFtZVJlZiwgdWludDY0X3QsIFdLRXJyb3JSZWYpCit2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLRXJyb3JSZWYgZXJyb3IpCiB7CisgICAgaWYgKCFJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxl
cigpLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChh
c3NpZ25lZFVybHNDYWNoZS5jb250YWlucyhpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFzc2lnbmVkVXJsc0NhY2hlLmdl
dChpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICI8dW5rbm93bj4iKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiAiKTsK
KworICAgIGR1bXBFcnJvckRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGVycm9yKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxu
Iik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZGZmY2FlLi43ZDFm
Nzg0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNzcsNiArNzcsNyBAQCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoKQogICAgICwgbV9kdW1wRnVs
bFNjcmVlbkNhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyhm
YWxzZSkKICAgICAsIG1fZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayhmYWxzZSkKKyAgICAs
IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXMoZmFsc2UpCiAgICAgLCBtX3dhaXRUb0R1bXAoZmFsc2UpCiAgICAg
LCBtX3Rlc3RSZXBhaW50KGZhbHNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDUxN2E1
MTYuLjVhNjIyMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTc5LDYgKzc5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3MoKSB7IG1fZHVtcEZ1bGxT
Y3JlZW5DYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkgeyBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOyB9CiAgICAgdm9pZCBk
dW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKCkgeyBzZXRTaG91bGREdW1wUHJvZ3Jlc3NGaW5p
c2hlZENhbGxiYWNrKHRydWUpOyB9CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KCkgeyBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIHsgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVU
eXBlcyA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNr
cyhib29sIHZhbHVlKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVlOyB9CkBAIC0x
NjMsNiArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRHVtcEZ1bGxTY3JlZW5DYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzOyB9CiAgICAg
Ym9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hl
ZENhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNr
OyB9CisgICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXM7IH0KIAogICAgIGJvb2wgaXNQb2xpY3lEZWxlZ2F0ZUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlRW5hYmxlZDsgfQpAQCAtMjQ5LDYgKzI1
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzOwogICAg
IGJvb2wgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wUHJvZ3Jlc3NG
aW5pc2hlZENhbGxiYWNrOworICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwog
ICAgIGJvb2wgbV9kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsKICAgICBib29sIG1fd2Fp
dFRvRHVtcDsgLy8gVHJ1ZSBpZiB3YWl0VW50aWxEb25lKCkgaGFzIGJlZW4gY2FsbGVkLCBidXQg
bm90aWZ5RG9uZSgpIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV90ZXN0UmVw
YWludDsK
</data>
<flag name="review"
          id="168346"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="168347"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158315</attachid>
            <date>2012-08-14 06:41:00 -0700</date>
            <delta_ts>2012-08-14 12:49:56 -0700</delta_ts>
            <desc>to be landed</desc>
            <filename>bug42332_v3</filename>
            <type>text/plain</type>
            <size>28346</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDliZGM4MzQ5ZGZmMmZkMGZmOGFiNzhiYzdhMmRjZjM0NmQyMmRmZTQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIEF1ZyAxMyAyMzozNDo0MiAyMDEyICswMzAwCgogICAgYnVnNDIzMzIKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzA4
MmU4Zi4uMDllN2Y5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTEzICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFdl
YktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzMzIKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBVbnNraXBwZWQgY29ycmVzcG9uZG9uZyB0ZXN0IGNhc2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDgtMTQgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMjU1MjUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IGZkZTQzYTQuLjgx
OWViYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0zODYsMzUgKzM4Niw2IEBAIHdl
YmFyY2hpdmUvbG9hZGluZy9tYWlucmVzb3VyY2UtbnVsbC1taW1ldHlwZS1jcmFzaC5odG1sCiB3
ZWJhcmNoaXZlL2xvYWRpbmcvbWlzc2luZy1kYXRhLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0bWwKIAotIyBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMj4KLWZh
c3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKLWZhc3QvbG9hZGVy
L2ZpbGUtcHJvdG9jb2wtZnJhZ21lbnQuaHRtbAotZmFzdC9sb2FkZXIvbWFpbi1kb2N1bWVudC11
cmwtZm9yLW5vbi1odHRwLWxvYWRzLmh0bWwKLWZhc3QvbG9hZGVyL3VzZXItc3R5bGUtc2hlZXQt
cmVzb3VyY2UtbG9hZC1jYWxsYmFja3MuaHRtbAotaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRl
ci0zMDMtYWZ0ZXItcG9zdC5odG1sCi1odHRwL3Rlc3RzL2xvYWRpbmcvcGRmLWNvbW1pdC1sb2Fk
LWNhbGxiYWNrcy5odG1sCi1odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy5odG1s
Ci1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1s
Ci1odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWljb24tbG9hZGluZy1vdmVycmlk
ZS5odG1sCi1odHRwL3Rlc3RzL21pc2MvbGluay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwKLWh0
dHAvdGVzdHMvbWlzYy93aWxsLXNlbmQtcmVxdWVzdC1yZXR1cm5zLW51bGwtb24tcmVkaXJlY3Qu
aHRtbAotaHR0cC90ZXN0cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNr
Lmh0bWwKLWh0dHAvdGVzdHMvbWlzYy93aW5kb3ctZG90LXN0b3AuaHRtbAotaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLWluLWJv
ZHkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9u
cy1kZW55LW1ldGEtdGFnLXBhcmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCi1odHRwL3Rlc3Rz
L3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLWRlbnktbWV0YS10YWctcGFy
ZW50LXNhbWUtb3JpZ2luLWRlbnkuaHRtbAotaHR0cC90ZXN0cy9zZWN1cml0eS9YRnJhbWVPcHRp
b25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLmh0bWwKLWh0dHAvdGVzdHMvc2VjdXJp
dHkvWEZyYW1lT3B0aW9ucy94LWZyYW1lLW9wdGlvbnMtZGVueS5odG1sCi1odHRwL3Rlc3RzL3Nl
Y3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBhcmVudC1zYW1lLW9yaWdpbi1h
bGxvdy5odG1sCi1odHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRp
b25zLXBhcmVudC1zYW1lLW9yaWdpbi1kZW55Lmh0bWwKLWh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0bWwKLXNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8t
cG9ydC5odG1sCi1zZWN1cml0eS9ibG9jay10ZXN0Lmh0bWwKLXdlYmFyY2hpdmUvbG9hZGluZy9j
YWNoZS1leHBpcmVkLXN1YnJlc291cmNlLmh0bWwKLXdlYmFyY2hpdmUvbG9hZGluZy90ZXN0LWxv
YWRpbmctYXJjaGl2ZS5odG1sCi13ZWJhcmNoaXZlL2xvYWRpbmcvdGVzdC1sb2FkaW5nLWFyY2hp
dmUtc3VicmVzb3VyY2UtbnVsbC1taW1ldHlwZS5odG1sCi0KICMgV2ViS2l0VGVzdFJ1bm5lciBu
ZWVkcyB0ZXh0SW5wdXRDb250cm9sbGVyCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDIzMzc+CiBlZGl0aW5nL2lucHV0L3NldHRpbmctaW5wdXQtdmFsdWUtY2Fu
Y2VsLWltZS1jb21wb3NpdGlvbi5odG1sCkBAIC03OTgsMTIgKzc2OSwyNSBAQCBmYXN0L3RleHQt
YXV0b3NpemluZwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMj
IFNUQVJUIE9GICgyKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGhvdXQgYnVnIHJlcG9ydHMgKHll
dCkKIAorIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNob3Vs
ZFBhaW50QnJvY2tlbkltYWdlCitmYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxl
Z2F0ZS5odG1sCisKKyMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5OdWxsT25SZWRpcmVjdAoraHR0cC90ZXN0cy9taXNj
L3dpbGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1yZWRpcmVjdC5odG1sCisKKyMgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyBSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBsb2dnaW5nCitodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRl
ci1wb3N0Lmh0bWwKK2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLmh0bWwKKwog
IyBXZWJLaXRUZXN0cnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBTb3VyY2VB
c1dlYkFyY2hpdmUKIHdlYmFyY2hpdmUvZG9jdHlwZS5odG1sCiB3ZWJhcmNoaXZlL2FyY2hpdmUt
ZW1wdHktZnJhbWUtc291cmNlLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQKIHdlYmFyY2hpdmUvdGVzdC1s
aW5rLXJlbC1pY29uLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1h
Z2VzLWRpc2FibGVkLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaWNv
bi1sb2FkaW5nLW92ZXJyaWRlLmh0bWwKK2h0dHAvdGVzdHMvbWlzYy9saW5rLXJlbC1pY29uLWJl
Zm9yZWxvYWQuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgc2hvdWxkIGR1bXAgdGV4dC9wbGFp
biBjb250ZW50IGFzIHRleHQKIGh0dHAvdGVzdHMvaW5jcmVtZW50YWwvc2xvdy11dGY4LXRleHQu
cGwKQEAgLTEwNDQsNiArMTAyOCw5IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMQogcGxhdGZvcm0vbWFjL2Zhc3QvbG9hZGVyL2ZpbGUtdXJsLW1pbWV0eXBl
cy0yLmh0bWwKIHBsYXRmb3JtL21hYy9mYXN0L2xvYWRlci9maWxlLXVybC1taW1ldHlwZXMtMy5o
dG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9sb2FkZXIvZmlsZS11cmwtbWltZXR5cGVzLmh0bWwKK3dl
YmFyY2hpdmUvbG9hZGluZy9jYWNoZS1leHBpcmVkLXN1YnJlc291cmNlLmh0bWwKK3dlYmFyY2hp
dmUvbG9hZGluZy90ZXN0LWxvYWRpbmctYXJjaGl2ZS5odG1sCit3ZWJhcmNoaXZlL2xvYWRpbmcv
dGVzdC1sb2FkaW5nLWFyY2hpdmUtc3VicmVzb3VyY2UtbnVsbC1taW1ldHlwZS5odG1sCiAKICMj
IyBFTkQgT0YgKDIpIENsYXNzaWZpZWQgZmFpbHVyZXMgd2l0aG91dCBidWcgcmVwb3J0cyAoeWV0
KQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTMwMyw2ICsx
MjkwLDEwIEBAIGZhc3QvbG9hZGVyL3dpbmRvdy1wcm9wZXJ0aWVzLXJlc3RvcmVkLWZyb20tcGFn
ZS1jYWNoZS5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTYxNgogZmFzdC9oYXJuZXNzL3BhZ2UtY2FjaGUtY3Jhc2gtb24tZGF0YS11cmxzLmh0bWwKIAor
IyBXcm9uZyBsb2dnaW5nIG9yZGVyCitmYXN0L2xvYWRlci9maWxlLXByb3RvY29sLWZyYWdtZW50
Lmh0bWwKK2h0dHAvdGVzdHMvbG9hZGluZy9wZGYtY29tbWl0LWxvYWQtY2FsbGJhY2tzLmh0bWwK
KwogIyMjIEVORCBPRiAoMykgVW5jbGFzc2lmaWVkIGZhaWx1cmVzCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjcwZjM1Li4wMzY1ZTBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMTMgIE1pa2hhaWwgUG96ZG55
YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMz
MgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFByb3ZpZGUgYnVpbGQgZm9yIG1hYy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBBZGRlZCBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjBmaXJzdFBhcnR5Rm9y
Q29va2llc0V2LgorCiAyMDEyLTA4LTE0ICBLd2FuZ1lvbmcgQ2hvaSAgPGt5MC5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEZpeGVkIGRpc3BsYXlpbmcgYnVmZmVyaW5nIHByb2dy
ZXNzIGluIHRoZSBtZWRpYSBjb250cm9sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiZGNhMTI5
Li4yYTQ2NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTIxNiw2ICsxMjE2LDcgQEAgX19a
Tks3V2ViQ29yZTE3UmVzb3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTks3V2ViQ29yZTE4
UGxhdGZvcm1QYXN0ZWJvYXJkMTFjaGFuZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3JlMTlBbmltYXRp
b25Db250cm9sbGVyMjRudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKIF9f
Wk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxMmdldEhpZ2hsaWdodEVQTlNfOUhpZ2hs
aWdodEUKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMGZpcnN0UGFydHlGb3JD
b29raWVzRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RF
dgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBL
YwogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1cmxFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDM0YmVjODAuLmVmZWZlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOC0x
MyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKwor
ICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyMzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCisKKyAgICAgICAgQWRkZWQgbmV3IGdldHRlcnMgdG8gV0tVUkwsIFdLVVJM
UmVxdWVzdCwgV0tVUkxSZXNwb25zZSBzbyB0aGF0IGl0IGlzIHBvc3NpYmxlCisgICAgICAgIHRv
IGR1bXAgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IGZvciB0aGUgdGVzdHMgcGFzc2luZy4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS1VSTC5jcHA6CisgICAgICAgIChXS1VSTENvcHlQYXRoKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9y
Q29va2llcyk6CisgICAgICAgIChXS1VSTFJlcXVlc3RDb3B5SFRUUE1ldGhvZCk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S1VSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZSk6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6cGF0aCk6CisgICAgICAgIChX
ZWJVUkwpOgorCiAyMDEyLTA4LTE0ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJFR1JFU1NJT04gKHIxMjI0MjgpIFdlYktpdDJBUElU
ZXN0cy9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIgZmFpbHMgIm5leHQiIHRlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCmluZGV4IDk5Y2RlODkuLjIyNjg0MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMLmNwcApAQCAtNjAsNiArNjAsMTEgQEAgV0tTdHJpbmdS
ZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJMUmVmIHVybCkKICAgICByZXR1cm4gdG9Db3BpZWRBUEko
dG9JbXBsKHVybCktPnByb3RvY29sKCkpOwogfQogCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tV
UkxDb3B5UGF0aChXS1VSTFJlZiB1cmwpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bCh1cmwpLT5wYXRoKCkpOworfQorCiBXS1N0cmluZ1JlZiBXS1VSTENvcHlMYXN0UGF0aENvbXBv
bmVudChXS1VSTFJlZiB1cmwpCiB7CiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwp
LT5sYXN0UGF0aENvbXBvbmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1VSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMLmgKaW5k
ZXggMmNkYTZjMS4uNGU5ODY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLVVJMLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMLmgKQEAg
LTM5LDYgKzM5LDcgQEAgV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGNvbnN0IGNoYXIqIHN0cmluZyk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5
U3RyaW5nKFdLVVJMUmVmIHVybCk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5SG9z
dE5hbWUoV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VSTENvcHlTY2hl
bWUoV0tVUkxSZWYgdXJsKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VSTENvcHlQYXRoKFdL
VVJMUmVmIHVybCk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5TGFzdFBhdGhDb21w
b25lbnQoV0tVUkxSZWYgdXJsKTsKIAogV0tfRVhQT1JUIGJvb2wgV0tVUkxJc0VxdWFsKFdLVVJM
UmVmIGEsIFdLVVJMUmVmIGIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxS
ZXF1ZXN0LmNwcAppbmRleCA3NzYzNjdiLi4xMTRjNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcApAQCAtNDgsNiArNDgsMTYgQEAgV0tVUkxSZWYg
V0tVUkxSZXF1ZXN0Q29weVVSTChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKICAgICByZXR1
cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CiB9CiAKK1dLVVJM
UmVmIFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhXS1VSTFJlcXVlc3RSZWYg
cmVxdWVzdFJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKHJlcXVlc3RS
ZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKK30KKworV0tT
dHJpbmdSZWYgV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2QoV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3RSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVz
b3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpKTsKK30KKwogdm9pZCBXS1VSTFJlcXVlc3RTZXRE
ZWZhdWx0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiB7CiAgICAgV2Vi
VVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5oCmluZGV4IGE1M2NlMTYu
Ljg1ZGYzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmgK
QEAgLTM4LDYgKzM4LDEwIEBAIFdLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1ZXN0
Q3JlYXRlV2l0aFdLVVJMKFdLVVJMUmVmKTsKIAogV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMUmVx
dWVzdENvcHlVUkwoV0tVUkxSZXF1ZXN0UmVmKTsKIAorV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJM
UmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhXS1VSTFJlcXVlc3RSZWYpOworCitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2QoV0tVUkxSZXF1ZXN0
UmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJbnRl
cnZhbChkb3VibGUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAppbmRleCBjZWZkMDdkLi4yZDI1ZjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC00Niwz
ICs0Niw4IEBAIFdLU3RyaW5nUmVmIFdLVVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUoV0tVUkxSZXNw
b25zZVJlZiByZXNwb25zZVJlZikKIHsKICAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJl
c3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogfQorCitpbnQzMl90
IFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVm
KQoreworICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCku
aHR0cFN0YXR1c0NvZGUoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1VSTFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxS
ZXNwb25zZS5oCmluZGV4IDg5ODhkZmYuLmQ0YzI2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaApAQCAtMzgsNiArMzgsOCBAQCBXS19FWFBPUlQgV0tV
UkxSZWYgV0tVUkxSZXNwb25zZUNvcHlVUkwoV0tVUkxSZXNwb25zZVJlZik7CiAKIFdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVzcG9uc2VSZWYp
OwogCitXS19FWFBPUlQgaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0YXR1c0NvZGUoV0tVUkxS
ZXNwb25zZVJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViVVJMLmgKaW5kZXggZjBjY2U4ZC4uYjI5NjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaApA
QCAtNjMsNiArNjMsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlz
VmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5wcm90b2NvbCgpIDogU3RyaW5nKCk7CiAgICAgfQogCisg
ICAgU3RyaW5nIHBhdGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2Fy
eSgpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJM
LT5wYXRoKCkgOiBTdHJpbmcoKTsKKyAgICB9CisKICAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25l
bnQoKSBjb25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwODI3ZmQuLmRi
NDllMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAxMi0wOC0xMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQWRkZWQg
UmVzb3VyY2UgQ2FsbGJhY2tzIGxvZ2dpbmcuIFNldmVyYWwgYXV4IGR1bXBpbmcgZnVuY3Rpb25z
IGFyZSBhZGRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdU
Ujo6aXNGaWxlU2NoZW1lKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OnBhdGhTdWl0
YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjp1cmxTdWl0YWJsZUZvclRlc3RSZXN1
bHQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlc2V0QWZ0ZXJUZXN0KToK
KyAgICAgICAgKFdUUjo6ZHVtcFJlcXVlc3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCk6CisgICAgICAgIChXVFI6OmR1bXBSZXNwb25zZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0KToKKyAgICAgICAgKFdUUjo6ZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEluaXRpYXRl
TG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxs
U2VuZFJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcyk6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpzaG91
bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyKToKKwogMjAxMi0wOC0xNCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBSRUdSRVNTSU9OIChyMTIyNDI4KSBXZWJLaXQyQVBJVGVz
dHMvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyIGZhaWxzICJuZXh0IiB0ZXN0CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRl
c3RDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCmluZGV4IGRmNjA4ZGEuLjlhMGE2NWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCkBAIC00NCw2
ICs0NCw3IEBAIG1vZHVsZSBXVFIgewogICAgICAgICB2b2lkIGR1bXBGdWxsU2NyZWVuQ2FsbGJh
Y2tzKCk7CiAgICAgICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgICAgICB2
b2lkIGR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKTsKKyAgICAgICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCk7CiAgICAgICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VN
SU1FVHlwZXMoKTsKIAogICAgICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKaW5kZXggMmEzZWMyMC4uNmUyZjUwOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVOb2RlSGFuZGxl
UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tVUkxSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC0yMTUsNiArMjE2LDU4IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBmcmFt
ZVRvU3RyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzTG9jYWxGaWxlU2NoZW1lKFdL
U3RyaW5nUmVmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4gV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZ0lnbm9yaW5nQ2FzZShzY2hlbWUsICJmaWxlIik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFy
IGRpdmlkZXIgPSAnLyc7CisKK3N0YXRpYyBpbmxpbmUgV1RGOjpTdHJpbmcgcGF0aFN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChXS1VSTFJlZiBmaWxlVXJsKQoreworICAgIGlmICghZmlsZVVybCkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNj
aGVtZVN0cmluZyA9IGFkb3B0V0soV0tVUkxDb3B5U2NoZW1lKGZpbGVVcmwpKTsKKyAgICBpZiAo
IWlzTG9jYWxGaWxlU2NoZW1lKHNjaGVtZVN0cmluZy5nZXQoKSkpCisgICAgICAgIHJldHVybiB0
b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyhmaWxlVXJsKSkpOworCisgICAgU3Ry
aW5nIHBhdGhTdHJpbmcgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgoZmlsZVVy
bCkpKTsKKyAgICBXVEY6OlN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKworICAgIC8vIFJl
bW92ZSB0aGUgbGVhZGluZyBwYXRoIGZyb20gZmlsZSB1cmxzLgorICAgIGNvbnN0IHNpemVfdCBp
bmRleEJhc2VOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZChkaXZpZGVyKTsKKyAgICBpZiAo
aW5kZXhCYXNlTmFtZSAhPSBub3RGb3VuZCkgeworICAgICAgICBjb25zdCBzaXplX3QgaW5kZXhE
aXJOYW1lID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZChkaXZpZGVyLCBpbmRleEJhc2VOYW1lIC0g
MSk7CisgICAgICAgIGlmIChpbmRleERpck5hbWUgIT0gbm90Rm91bmQpCisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChwYXRoU3RyaW5nLnN1YnN0cmluZyhpbmRleERpck5hbWUgKyAx
LCBpbmRleEJhc2VOYW1lIC0gaW5kZXhEaXJOYW1lIC0gMSkpOworICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChkaXZpZGVyKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN0
cmluZy5zdWJzdHJpbmcoaW5kZXhCYXNlTmFtZSArIDEpKTsgLy8gRmlsZW5hbWUuCisgICAgfSBl
bHNlIHsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZGl2aWRlcik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdHJpbmcpOyAvLyBSZXR1cm4gIi9wYXRoU3RyaW5nIi4K
KyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0
aWMgaW5saW5lIFdURjo6U3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChXS1VSTFJlZiBm
aWxlVXJsKQoreworICAgIGlmICghZmlsZVVybCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjaGVtZVN0cmluZyA9IGFkb3B0V0soV0tV
UkxDb3B5U2NoZW1lKGZpbGVVcmwpKTsKKyAgICBpZiAoIWlzTG9jYWxGaWxlU2NoZW1lKHNjaGVt
ZVN0cmluZy5nZXQoKSkpCisgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJM
Q29weVN0cmluZyhmaWxlVXJsKSkpOworCisgICAgV1RGOjpTdHJpbmcgdXJsU3RyaW5nID0gdG9X
VEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcoZmlsZVVybCkpKTsKKyAgICBjb25zdCBz
aXplX3QgaW5kZXhCYXNlTmFtZSA9IHVybFN0cmluZy5yZXZlcnNlRmluZChkaXZpZGVyKTsKKwor
ICAgIHJldHVybiAoaW5kZXhCYXNlTmFtZSA9PSBub3RGb3VuZCkgPyB1cmxTdHJpbmcgOiB1cmxT
dHJpbmcuc3Vic3RyaW5nKGluZGV4QmFzZU5hbWUgKyAxKTsKK30KKworc3RhdGljIEhhc2hNYXA8
dWludDY0X3QsIFN0cmluZz4gYXNzaWduZWRVcmxzQ2FjaGU7CisKIEluamVjdGVkQnVuZGxlUGFn
ZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIDogbV9wYWdl
KHBhZ2UpCiAgICAgLCBtX3dvcmxkKEFkb3B0V0ssIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVX
b3JsZCgpKQpAQCAtMzY2LDYgKzQxOSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNl
dEFmdGVyVGVzdCgpCiAjZWxzZQogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cmVzZXRJbnRlcm5h
bHNPYmplY3QoY29udGV4dCk7CiAjZW5kaWYKKyAgICBhc3NpZ25lZFVybHNDYWNoZS5jbGVhcigp
OwogfQogCiAvLyBMb2FkZXIgQ2xpZW50IENhbGxiYWNrcwpAQCAtMzk2LDYgKzQ1MCw3MCBAQCBz
dGF0aWMgdm9pZCBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiXCIiKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGR1bXBSZXF1
ZXN0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXF1
ZXN0Q29weVVSTChyZXF1ZXN0KSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZpcnN0UGFy
dHkgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGh0dHBNZXRob2QgPSBhZG9wdFdLKFdL
VVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKHJlcXVlc3QpKTsKKworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiPE5TVVJMUmVxdWVzdCBVUkwgIik7
CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHBh
dGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIsIG1haW4gZG9jdW1lbnQgVVJMICIp
OworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh1
cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoZmlyc3RQYXJ0eS5nZXQoKSkpOworICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiLCBodHRwIG1ldGhvZCAi
KTsKKworICAgIGlmIChXS1N0cmluZ0lzRW1wdHkoaHR0cE1ldGhvZC5nZXQoKSkpCisgICAgICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiKG5vbmUp
Iik7CisgICAgZWxzZQorICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoaHR0cE1ldGhvZCkpOworCisgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCI+Iik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBkdW1wUmVzcG9uc2VEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVm
PiB1cmwgPSBhZG9wdFdLKFdLVVJMUmVzcG9uc2VDb3B5VVJMKHJlc3BvbnNlKSk7CisgICAgaWYg
KCF1cmwpIHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCIobnVsbCkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIjxOU1VSTFJlc3BvbnNl
ICIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybC5nZXQoKSkpOworICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiLCBodHRwIHN0YXR1cyBjb2Rl
ICIpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZChXVEY6OlN0cmluZzo6bnVtYmVyKFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShyZXNwb25z
ZSkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBl
bmQoIj4iKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGR1bXBFcnJvckRlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KFdLRXJyb3JSZWYgZXJyb3IpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGVycm9yRG9tYWluID0gYWRvcHRXSyhXS0Vycm9yQ29weURvbWFpbihlcnJv
cikpOworICAgIGludCBlcnJvckNvZGUgPSBXS0Vycm9yR2V0RXJyb3JDb2RlKGVycm9yKTsKKwor
ICAgIC8vIFdlIG5lZWQgdG8gZG8gc29tZSBlcnJvciBtYXBwaW5nIGhlcmUgdG8gbWF0Y2ggdGhl
IHRlc3QgZXhwZWN0YXRpb25zIChNYWMgZXJyb3IgbmFtZXMgYXJlIGV4cGVjdGVkKS4KKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhlcnJvckRvbWFpbi5nZXQoKSwgIldlYktp
dE5ldHdvcmtFcnJvciIpKSB7CisgICAgICAgIGVycm9yRG9tYWluID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTlNVUkxFcnJvckRvbWFpbiIpKTsKKyAgICAgICAgZXJy
b3JDb2RlID0gLTk5OTsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhlcnJvckRvbWFpbi5nZXQoKSwgIldlYktpdFBvbGljeUVycm9yIikpCisgICAgICAgIGVy
cm9yRG9tYWluID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiV2ViS2l0
RXJyb3JEb21haW4iKSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIjxOU0Vycm9yIGRvbWFpbiAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoZXJyb3JEb21haW4p
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IiwgY29kZSAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoU3RyaW5nOjpudW1iZXIoZXJyb3JDb2RlKSk7CisKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZXJyb3IpKTsKKyAg
ICBpZiAodXJsLmdldCgpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxT
dHJpbmcgPSBhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIsIGZhaWxpbmcg
VVJMIFwiIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCh0b1dURlN0cmluZyh1cmxTdHJpbmcpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcIiIpOworICAgIH0KKworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiPiIpOwor
fQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBl
UmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOwpAQCAtOTM4LDggKzEwNTYsMTYgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUpCiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRG
b3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9vbCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBib29s
KQogeworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5
b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsID0gYWRvcHRX
SyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKKyAgICBhc3NpZ25lZFVybHNDYWNoZS5h
ZGQoaWRlbnRpZmllciwgcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwuZ2V0KCkpKTsKIH0K
IAogLy8gUmVzb3VyY2UgTG9hZCBDbGllbnQgQ2FsbGJhY2tzCkBAIC05NTQsMTEgKzEwODAsMjMg
QEAgc3RhdGljIGlubGluZSBib29sIGlzSFRUUE9ySFRUUFNTY2hlbWUoV0tTdHJpbmdSZWYgc2No
ZW1lKQogICAgIHJldHVybiBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNl
KHNjaGVtZSwgImh0dHAiKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdD
YXNlKHNjaGVtZSwgImh0dHBzIik7CiB9CiAKLVdLVVJMUmVxdWVzdFJlZiBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxTZW5kUmVxdWVzdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgdWludDY0X3QsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS1VSTFJl
c3BvbnNlUmVmKQorV0tVUkxSZXF1ZXN0UmVmIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNlbmRS
ZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tVUkxSZXNwb25z
ZVJlZiByZXNwb25zZSkKIHsKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVz
dFJ1bm5pbmcoKSAmJiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xs
ZXIoKS0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
KyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKQorICAgICAg
ICAmJiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hv
dWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChhc3NpZ25lZFVybHNDYWNoZS5jb250
YWlucyhpZGVudGlmaWVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyBhc3NpZ25lZFVybHNDYWNoZS5nZXQoaWRlbnRpZmllcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Ijx1bmtub3duPiIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIiAtIHdpbGxTZW5kUmVxdWVzdCAiKTsKKyAgICAgICAgZHVtcFJlcXVl
c3REZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0KTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgcmVkaXJlY3RS
ZXNwb25zZSAiKTsKKyAgICAgICAgZHVtcFJlc3BvbnNlRGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQocmVzcG9uc2UpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3Ry
aW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CisgICAgfQorCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0KSk7CiAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhvc3QgPSBhZG9wdFdLKFdLVVJMQ29weUhvc3ROYW1l
KHVybC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY2hlbWUgPSBhZG9w
dFdLKFdLVVJMQ29weVNjaGVtZSh1cmwuZ2V0KCkpKTsKQEAgLTk5MCwxMSArMTEyOCwyMSBAQCBX
S1VSTFJlcXVlc3RSZWYgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2VuZFJlcXVlc3RGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYsIFdLQgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tCdW5kbGVQ
YWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCwgV0tVUkxSZXNwb25zZVJlZiByZXNw
b25zZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNv
dXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYXNzaWduZWRVcmxzQ2FjaGUuY29udGFpbnMo
aWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8gYXNzaWduZWRVcmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dW5r
bm93bj4iKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCIgLSBkaWRSZWNlaXZlUmVzcG9uc2UgIik7CisgICAgICAgIGR1bXBSZXNwb25z
ZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlKTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOworICAg
IH0KKworCiAgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRy
b2xsZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xMDEyLDEyICsxMTYwLDM1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tC
CiB7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyKQogeworICAgIGlmICghSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIo
KS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYXNz
aWduZWRVcmxzQ2FjaGUuY29udGFpbnMoaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhc3NpZ25lZFVybHNDYWNoZS5nZXQo
aWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPHVua25vd24+Iik7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0
cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRGaW5pc2hMb2FkaW5nXG4iKTsKIH0KIAotdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCwgV0tFcnJvclJlZikKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tFcnJvclJlZiBlcnJvcikKIHsK
KyAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRl
c3RDb250cm9sbGVyKCktPnNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKGFzc2lnbmVkVXJsc0NhY2hlLmNvbnRhaW5zKGlkZW50aWZpZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYXNzaWduZWRV
cmxzQ2FjaGUuZ2V0KGlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIjx1bmtub3duPiIpOworICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gZGlkRmFpbExvYWRpbmdXaXRo
RXJyb3I6ICIpOworCisgICAgZHVtcEVycm9yRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoZXJyb3IpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiXG4iKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNk
ZmZjYWUuLjdkMWY3ODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC03Nyw2ICs3
Nyw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcigpCiAgICAg
LCBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGZh
bHNlKQorICAgICwgbV9kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9k
dW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhmYWxzZSkKICAgICAsIG1fd2FpdFRvRHVtcChm
YWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnQoZmFsc2UpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
aW5kZXggNTE3YTUxNi4uNWE2MjIxMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNzks
NiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpIHsg
bV9kdW1wRnVsbFNjcmVlbkNhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lkIGR1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKSB7IHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7IH0K
ICAgICB2b2lkIGR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSB7IHNldFNob3VsZER1bXBQ
cm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sodHJ1ZSk7IH0KKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3MoKSB7IG1fZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IHRydWU7IH0KICAg
ICB2b2lkIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgeyBtX2R1bXBSZXNvdXJjZVJl
c3BvbnNlTUlNRVR5cGVzID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKGJvb2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFs
dWU7IH0KQEAgLTE2Myw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wRnVs
bFNjcmVlbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFj
a3M7IH0KICAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJl
dHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAgICBib29sIHNob3VsZER1bXBQcm9n
cmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBQcm9ncmVzc0Zpbmlz
aGVkQ2FsbGJhY2s7IH0KKyAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSBjb25zdCB7IHJldHVybiBtX2R1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7IH0KICAgICBib29s
IHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9k
dW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlczsgfQogCiAgICAgYm9vbCBpc1BvbGljeURlbGVn
YXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9saWN5RGVsZWdhdGVFbmFibGVkOyB9CkBA
IC0yNDksNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcEZ1bGxTY3JlZW5DYWxs
YmFja3M7CiAgICAgYm9vbCBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1
bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2s7CisgICAgYm9vbCBtX2R1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzOwogICAg
IGJvb2wgbV93YWl0VG9EdW1wOyAvLyBUcnVlIGlmIHdhaXRVbnRpbERvbmUoKSBoYXMgYmVlbiBj
YWxsZWQsIGJ1dCBub3RpZnlEb25lKCkgaGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQuCiAgICAgYm9v
bCBtX3Rlc3RSZXBhaW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>