<?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>89223</bug_id>
          
          <creation_ts>2012-06-15 09:25:52 -0700</creation_ts>
          <short_desc>[WK2][GTK] Implement AccessibilityUIElement in WKTR for GTK</short_desc>
          <delta_ts>2012-07-18 03:20:35 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89226</dependson>
          <blocked>72588</blocked>
    
    <blocked>89224</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>650246</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-15 09:25:52 -0700</bug_when>
    <thetext>At the moment, WebKitTestRunner&apos;s implementation of AccessibilityUIElement is only available for the mac.

Thus, we need to provide an implementation for GTK if we want to be able to run the layout tests in WebKit2GTK+ (which we want). The idea would be to implement at least the same features we have in DRT&apos;s implementation of AccessibilityUIElement, so we can pass the same tests we already pass for WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650278</commentid>
    <comment_count>1</comment_count>
      <attachid>147842</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-15 09:59:57 -0700</bug_when>
    <thetext>Created attachment 147842
Patch proposal

The idea with this patch is to provide basic support for accessibility in GTK to WKTR, and it certainly does that, since almost 100 a11y tests are now passing...

However, some others are not passing yet and some are even crashing. Those will be addressed later in separate bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650310</commentid>
    <comment_count>2</comment_count>
      <attachid>147853</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-15 10:29:16 -0700</bug_when>
    <thetext>Created attachment 147853
Patch proposal

Ooops! Sorry, this is the right one (some tests to be skipped missing in the previous patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651323</commentid>
    <comment_count>3</comment_count>
      <attachid>148083</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-06-18 04:49:46 -0700</bug_when>
    <thetext>Created attachment 148083
Patch proposal

New patch. Implementing AccessibilityUIElements using AtkValue interface in a better way (see Martin&apos;s comments for bug 89226) and adding two more tests that are randomly crashing to the Skipped file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664153</commentid>
    <comment_count>4</comment_count>
      <attachid>148083</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-07-06 09:48:45 -0700</bug_when>
    <thetext>Comment on attachment 148083
Patch proposal

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

looks good. a few minor nits

&gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:181
&gt; +{

seems like you could probably implement this method pretty easily

&gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:256
&gt; +    AtkObject* parent =  atk_object_get_parent(ATK_OBJECT(m_element));

extra white space after = sign

&gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:863
&gt; +    // FIXME: implement

two FIXME&apos;s here

&gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:869
&gt; +    // FIXME: implement

two FIXMEs here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672187</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-07-18 03:13:05 -0700</bug_when>
    <thetext>Thanks Chris for reviewing this, just got back from holidays today, so please understand my late reply.

(In reply to comment #4)
&gt; (From update of attachment 148083 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148083&amp;action=review
&gt; 
&gt; looks good. a few minor nits
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:181
&gt; &gt; +{
&gt; 
&gt; seems like you could probably implement this method pretty easily

Indeed. I just haven&apos;t done it so since I was more worried at this point about porting DRT stuff to WKTR rather than adding new stuff.

Still, I agree implementation for this one is very simple, so I just added it.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:256
&gt; &gt; +    AtkObject* parent =  atk_object_get_parent(ATK_OBJECT(m_element));
&gt; 
&gt; extra white space after = sign

For some reason check-webkit-style didn&apos;t get this one. Thanks for pointing it out.

&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:863
&gt; &gt; +    // FIXME: implement
&gt; 
&gt; two FIXME&apos;s here
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:869
&gt; &gt; +    // FIXME: implement
&gt; 
&gt; two FIXMEs here

Both fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672190</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-07-18 03:20:35 -0700</bug_when>
    <thetext>Committed r122940: &lt;http://trac.webkit.org/changeset/122940&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147842</attachid>
            <date>2012-06-15 09:59:57 -0700</date>
            <delta_ts>2012-06-15 10:29:16 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0002-2012-06-15-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>54095</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBkMTBkNmI4NmI3NGQ0ZDI0YjI1NmE0OTc0MTc1MmJmZmUyOGM4YjFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDEyIDE0OjA0OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzNdIDIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgSW1wbGVtZW50ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEssIGJh
c2VkIGluIHRoZQogICAgICAgIGltcGxlbWVudGF0aW9uIHByZXNlbnQgaW4gRHVtcFJlbmRlclRy
ZWUuCgogICAgICAgIEFkZGVkIG5ldyBmaWxlcyBpbiBndGsvIGFuZCB1cGRhdGVkIHRoZSBjcm9z
cy1wbGF0Zm9ybSBvbmVzLgoKICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW06CiAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwOgogICAgICAgIChXVFIpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6IEFkZGVkLgogICAgICAgIChX
VFIpOgogICAgICAgIChXVFI6OmF0dHJpYnV0ZVNldFRvU3RyaW5nKToKICAgICAgICAoV1RSOjpj
aGVja0VsZW1lbnRTdGF0ZSk6CiAgICAgICAgKFdUUjo6aW5kZXhSYW5nZUluVGFibGUpOgogICAg
ICAgIChXVFI6OmFsdGVyQ3VycmVudFZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhPZkNoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3cpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgogICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlu
a3MpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNo
aWxkcmVuKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1
dGVzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1
dGVWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0
cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib29sQXR0cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN1YnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvbGVEZXNjcmlwdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGl0bGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9u
KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6eCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgogICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnRWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWluVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZh
bHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0
aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0
aW9uU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vu
YWJsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQp
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3BlYWspOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEcm9wRWZmZWN0cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZUZvckluZGV4KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5n
ZUZvckxpbmUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9y
UG9zaXRpb24pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JS
YW5nZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlz
aWJsZUNlbGxzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZIZWFkZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0Nv
dW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKToK
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2Up
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCk6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1cmwpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzU2VsZWN0YWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNNdWx0aVNlbGVjdGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNP
ZmZTY3JlZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFw
c2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFy
a2Vycyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIpOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgoKICAgICAgICBBZGQgZG9j
dW1lbnRFbmNvZGluZyBhbmQgZG9jdW1lbnRVUkkgdG8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5p
ZGwuCgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKCjIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgUmVtb3ZlZCBsaW5lcyBza2lwcGluZyBhbGwgdGhlIGFj
Y2Vzc2liaWxpdHkgdGVzdHMgYW5kIHJlcGxhY2UKICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCiAgICAgICAgYXJlIGp1
c3QgYSBmZXcgbm93LCBhbmQgd2lsbCBob3BlZnVsbHkgZ2V0IGZpeGVkIGxhdGVyIG9uLgoKICAg
ICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNraXBw
ZWQgdGVzdHMuCgogICAgICAgIFVwZGF0ZWQgdHdvIGxheW91dCB0ZXN0cyB0byBjb25zaWRlciBu
dWxscywgc29tZXRoaW5nIHRoYXQgZGlkbid0CiAgICAgICAgaGFwcGVuIHdpdGggRHVtcFJlbmRl
clRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgoKICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sOiBVcGRhdGUgdGVzdC4KICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCi0tLQogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sICAgIHwgICAgNSArLQogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxscy5odG1sICAgICAgICAgfCAgIDEyICst
CiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQgICAgICAgICAgICAgICB8ICAg
NDAgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDE1MSArKysKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgIHwgICAgMSArCiAuLi4vSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgICAgICB8ICAgIDIgKy0KIC4uLi9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggICAgICAgIHwgICAgMyArCiAuLi4vQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwgICAgICAgICAgICB8ICAgIDQgKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50R3RrLmNwcCAgICAgICAgICAgICAgfCAgOTc5ICsrKysrKysrKysrKysrKysrKysrCiAxMCBm
aWxlcyBjaGFuZ2VkLCAxMjA3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTJkMGY5My4uNjEzNWExYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTE1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGxpbmVzIHNraXBwaW5nIGFsbCB0aGUgYWNj
ZXNzaWJpbGl0eSB0ZXN0cyBhbmQgcmVwbGFjZQorICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCisgICAgICAgIGFyZSBq
dXN0IGEgZmV3IG5vdywgYW5kIHdpbGwgaG9wZWZ1bGx5IGdldCBmaXhlZCBsYXRlciBvbi4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNr
aXBwZWQgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlZCB0d28gbGF5b3V0IHRlc3RzIHRvIGNvbnNp
ZGVyIG51bGxzLCBzb21ldGhpbmcgdGhhdCBkaWRuJ3QKKyAgICAgICAgaGFwcGVuIHdpdGggRHVt
cFJlbmRlclRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLmh0bWw6IFVwZGF0ZSB0ZXN0LgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCisKIDIwMTIt
MDYtMTQgIEphbiBLZXJvbW5lcyAgPGphbnhAbGludXguY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBFeHRlbnNpb25QYW5lbC5zaG93KCkgbWV0aG9kCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3BhbnMuaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sCmluZGV4IDE4MTAyYzgu
LjVhYjk2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2Vs
bC1zcGFucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1z
cGFucy5odG1sCkBAIC03Niw4ICs3Niw5IEBACiAgICAgICAgICAgICBjZWxsID0gdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygxMCwxMCk7IAogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gInsgMTAsIDEwIH1cbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IGNl
bGwuYWxsQXR0cmlidXRlcygpICsgIlxuIjsKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gY2VsbC5yb3dJbmRleFJhbmdlKCkgKyAiLCAiICsgY2VsbC5jb2x1bW5JbmRleFJhbmdlKCkg
ICsgIlxuXG4iOyAKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gKGNlbGwgIT0gbnVs
bCA/IGNlbGwuYWxsQXR0cmlidXRlcygpIDogIiIpICsgIlxuIjsKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgKz0gY2VsbCAhPSBudWxsID8gY2VsbC5yb3dJbmRleFJhbmdlKCkgOiAiezAs
IDB9IjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiwgIiArIChjZWxsICE9IG51
bGwgPyBjZWxsLmNvbHVtbkluZGV4UmFuZ2UoKSA6ICJ7MCwgMH0iKSArICJcblxuIjsKICAgICAg
ICAgfQogICAgIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90YWJsZS1jZWxscy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
YWJsZS1jZWxscy5odG1sCmluZGV4IGYyNzg5ZTUuLmEzMWIyMGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxzLmh0bWwKQEAgLTY5LDkgKzY5LDE1IEBACiAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7IAog
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzMsNV1cbiIgKyB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDMsNSkuYWxsQXR0cmlidXRlcygpICsgIlxuIjsgCiAgICAgICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7IAotICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzEwMCwwXVxuIiArIHRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMTAwLDApLmFsbEF0dHJpYnV0ZXMoKSArICJcbiI7IAotICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCArPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOyAKLSAgICAgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlswLDEwMF1cbiIgKyB0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDAsMTAwKS5hbGxBdHRyaWJ1dGVzKCkgKyAiXG4iOyAKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgKz0gIlsxMDAsMF1cbiI7CisgICAgICAgICAgICBvdXRPZlJhbmdlQ2VsbCA9
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMTAwLDApOworICAgICAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSBvdXRPZlJhbmdlQ2VsbCAhPSBudWxsID8gb3V0T2ZSYW5nZUNlbGwuYWxsQXR0
cmlidXRlcygpIDogIiI7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcbiI7Cisg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
biI7CisgICAgICAgICAgICBvdXRPZlJhbmdlQ2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMCwxMDApOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzAsMTAwXVxuIjsK
KyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gb3V0T2ZSYW5nZUNlbGwgIT0gbnVsbCA/
IG91dE9mUmFuZ2VDZWxsLmFsbEF0dHJpYnV0ZXMoKSA6ICIiOworICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiXG4iOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKaW5kZXggMTQ2MGY1NC4uYzk3NzY2YiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZApAQCAtODMsNiArODMsMzcgQEAgZWRpdGlu
Zy9pbnB1dC9lbWFjcy1jdHJsLW8uaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njk1MTIKIHBsdWdpbnMvZGVzdHJveS1kdXJpbmctbnBwLW5ldy5odG1sCiAK
KyMgYWNjZXNzaWJpbGl0eSB0ZXN0cyBmYWlsaW5nIGluIFdLMSBidXQgY3Jhc2hpbmcgaW4gV0sy
CithY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbAorYWNjZXNzaWJp
bGl0eS9pbmxpbmUtY29udGludWF0aW9ucy5odG1sCithY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZy
YW1lLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9p
bnB1dC1zbGlkZXIuaHRtbAorCisjIGFjY2Vzc2liaWxpdHkgdGVzdHMgcGFzc2luZyBpbiBXSzEg
YnV0IGNyYXNoaW5nIGluIFdLMgorYWNjZXNzaWJpbGl0eS9hZGphY2VudC1jb250aW51YXRpb25z
LWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLmh0bWwKK2FjY2Vzc2liaWxpdHkvYW5vbnltb3VzLXJl
bmRlci1ibG9jay1pbi1jb250aW51YXRpb24tY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxp
dHkvYXJpYS1oaWRkZW4tdXBkYXRlcy1hbGxkZXNjZW5kYW50cy5odG1sCithY2Nlc3NpYmlsaXR5
L2FyaWEtbWVudWJhci1tZW51aXRlbXMuaHRtbAorYWNjZXNzaWJpbGl0eS9jb250ZW50LWNoYW5n
ZWQtbm90aWZpY2F0aW9uLWNhdXNlcy1jcmFzaC5odG1sCithY2Nlc3NpYmlsaXR5L2NyYXNoLWRl
dGVybWluaW5nLWFyaWEtcm9sZS13aGVuLWxhYmVsLXByZXNlbnQuaHRtbAorYWNjZXNzaWJpbGl0
eS9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZS5odG1sCithY2Nlc3NpYmlsaXR5L2Rp
di13aXRoaW4tYW5jaG9ycy1jYXVzZXMtY3Jhc2guaHRtbAorYWNjZXNzaWJpbGl0eS9kdXBsaWNh
dGUtY2hpbGQtbm9kZXMuaHRtbAorYWNjZXNzaWJpbGl0eS9maXJzdC1sZXR0ZXItdGV4dC10cmFu
c2Zvcm0tY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVt
ZW50cy5odG1sCithY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstaW5saW5lLWNvbnQuaHRtbAorYWNj
ZXNzaWJpbGl0eS9pbWFnZS1tYXAtdGl0bGUtY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxp
dHkvaW1hZ2UtbWFwLXVwZGF0ZS1wYXJlbnQtY3Jhc2guaHRtbAorYWNjZXNzaWJpbGl0eS9pbWct
YWx0LXRhZy1vbmx5LXdoaXRlc3BhY2UuaHRtbAorYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50
Lmh0bWwKK2FjY2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1mb2N1cy5o
dG1sCithY2Nlc3NpYmlsaXR5L3JlbW92ZWQtYW5vbnltb3VzLWJsb2NrLWNoaWxkLWNhdXNlcy1j
cmFzaC5odG1sCithY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtZW1wdHktdGhlYWQtY2F1c2VzLWNy
YXNoLmh0bWwKK3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtb3B0aW9uLXJvbGUuaHRt
bAorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1oaWVyYXJjaHkuaHRtbAor
cGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLmh0bWwKK3BsYXRmb3JtL2d0
ay9hY2Nlc3NpYmlsaXR5L3RhYmxlLWhpZXJhcmNoeS5odG1sCisKICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKICMgRVhQRUNURUQgRkFJTFVSRVMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTI2
OSw5ICszMDAsMTIgQEAgaHR0cC90ZXN0cy9taXNjL2J1YmJsZS1kcmFnLWV2ZW50cy5odG1sCiAj
IGV2ZW50U2VuZGVyLnNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2sgc3VwcG9ydAogZmFzdC9ldmVu
dHMvcG9wdXAtYmxvY2tpbmctY2xpY2staW4taWZyYW1lLmh0bWwKIAotIyBJbXBsZW1lbnQgYWNj
ZXNzaWJpbGl0eSBzdXBwb3J0IGZvciBXZWJLaXQyCi1hY2Nlc3NpYmlsaXR5Ci1wbGF0Zm9ybS9n
dGsvYWNjZXNzaWJpbGl0eQorIyBhY2Nlc3NpYmlsaXR5IHRlc3RzIGZhaWxpbmcgZHVlIHRvIG1p
c3NpbmcgV0tUUiBmZWF0dXJlcworYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwKK2FjY2Vzc2liaWxpdHkvYXJpYS1oZWxwLmh0bWwKK3BsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5L2FyaWEtc2xpZGVyLXJlcXVpcmVkLWF0dHJpYnV0ZXMuaHRtbAorcGxhdGZvcm0v
Z3RrL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGV4dC1mb2N1cy5odG1sCitwbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9jb21iby1ib3gtY29sbGFwc2VkLXNlbGVjdGlvbi1jaGFuZ2Vk
Lmh0bWwKIAogIyBJbXBsZW1lbnQgdGV4dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSBpbnRlcmZhY2UKIGZhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNvbnRl
bnQtYm91bmRhcnkuaHRtbApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGI3NmQyMDUuLmUwYWU5MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNTYgQEAKIDIwMTItMDYtMTUgIE1h
cmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCisgICAgICAgIFtXSzJd
W0dUS10gSW1wbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgaW4gV0tUUiBmb3IgR1RLCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgaW4gV0tUUiBmb3IgR1RLLCBiYXNlZCBpbiB0aGUKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24gcHJlc2VudCBpbiBEdW1wUmVuZGVyVHJlZS4KKworICAgICAg
ICBBZGRlZCBuZXcgZmlsZXMgaW4gZ3RrLyBhbmQgdXBkYXRlZCB0aGUgY3Jvc3MtcGxhdGZvcm0g
b25lcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIp
OgorICAgICAgICAoV1RSOjphdHRyaWJ1dGVTZXRUb1N0cmluZyk6CisgICAgICAgIChXVFI6OmNo
ZWNrRWxlbWVudFN0YXRlKToKKyAgICAgICAgKFdUUjo6aW5kZXhSYW5nZUluVGFibGUpOgorICAg
ICAgICAoV1RSOjphbHRlckN1cnJlbnRWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNv
dW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVs
ZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVt
ZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlS
b3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZM
aW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVOYW1lcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmhlbHBUZXh0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjppbnRWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZh
bHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5l
TnVtYmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25T
dXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJs
ZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYUlzR3JhYmJlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmxpbmVGb3JJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJhbmdlRm9yUG9zaXRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib3VuZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
SGVhZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZlJvd0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjppbmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y29sdW1uSW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZGVjcmVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2hvd01lbnUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmVzcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVk
Q2hpbGQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmls
aXR5VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVu
dEVuY29kaW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1l
bnRVUkkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNG
b2N1c2FibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVj
dGFibGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2Vs
ZWN0YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQb2ludCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KToKKworICAg
ICAgICBBZGQgZG9jdW1lbnRFbmNvZGluZyBhbmQgZG9jdW1lbnRVUkkgdG8gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5pZGwuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsOgorCisyMDEyLTA2LTE1ICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RL
XSBHZXQgcmlkIG9mIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6e2lufGRlfWNyZW1lbnRBY2Nl
c3NpYmlsaXR5VmFsdWUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5MjI2CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFr
ZWZpbGUuYW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU0
Njk2MTMuLmEyNTVmNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFr
ZWZpbGUuYW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQpAQCAt
OTQsNiArOTQsNyBAQCBMaWJyYXJpZXNfbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX2xhX1NP
VVJDRVMgPSBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvR0NDb250cm9sbGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9HQ0NvbnRyb2xsZXIuaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwIFwKIAlUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZUd0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRl
eCA3YzA2MjM3Li40MmUyNTcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ZhbGlkKCkgY29u
c3QKIH0KICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMu
IEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIgcGxhdGZvcm1zIHRoaXMgbGlzdCBzaG91
bGQgYmUgbW9kaWZpZWQuCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oR1RLKQogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCkgeyB9CiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKSB7IH0K
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KCkgeyB9CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDY5NzkxOGYuLjU1MWY1OTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0yNDMsNiArMjQzLDkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZ2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mKTsKICAgICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oR1RLKQogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mLCB1bnNpZ25lZCBsb2NhdGlvbiwg
dW5zaWduZWQgbGVuZ3RoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5pZGwKaW5kZXggYTFlOGEwNi4uMzEyYTFlMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCkBAIC0yOCw2ICsyOCwxMCBAQCBt
b2R1bGUgV1RSIHsKICAgICBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAgICAg
ICAgIGJvb2xlYW4gaXNFcXVhbChpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IG90aGVyRWxlbWVu
dCk7CiAKKyAgICAgICAgLy8gRG9jdW1lbnQgaW5mb3JtYXRpb24KKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBkb2N1bWVudEVuY29kaW5nOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRvY3VtZW50VVJJOworCiAgICAgICAgIC8vIEVsZW1lbnQgYWNj
ZXNzLgogICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGVsZW1lbnRBdFBvaW50KGluIGlu
dCB4LCBpbiBpbnQgeSk7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgY2hpbGRBdElu
ZGV4KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzc2
OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKQEAgLTAsMCArMSw5NzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8YXRrL2F0ay5oPgorI2luY2x1ZGUgPGd0ay9ndGsu
aD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
VFIgeworCitzdGF0aWMgZ2NoYXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJpYnV0ZVNl
dCogYXR0cmlidXRlU2V0KQoreworICAgIEdTdHJpbmcqIHN0ciA9IGdfc3RyaW5nX25ldygwKTsK
KyAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmlidXRlczsg
YXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKKyAgICAgICAgQXRrQXR0cmlidXRlKiBh
dHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5kYXRhKTsK
KyAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChhdHRyaWJ1
dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOworICAgICAgICBnX3N0cmlu
Z19hcHBlbmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0
ZXMtPm5leHQpCisgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiLCAiKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShzdHIsIEZBTFNFKTsKK30KKworc3RhdGljIGJv
b2wgY2hlY2tFbGVtZW50U3RhdGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgQXRrU3RhdGVU
eXBlIHN0YXRlVHlwZSkKK3sKKyAgICBpZiAoIUFUS19JU19PQkpFQ1QoZWxlbWVudCkpCisgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBHUmVmUHRyPEF0a1N0YXRlU2V0PiBzdGF0ZVNldCA9
IGFkb3B0R1JlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9zZXQoQVRLX09CSkVDVChlbGVtZW50KSkp
OworICAgIHJldHVybiBhdGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0LmdldCgp
LCBzdGF0ZVR5cGUpOworfQorCitzdGF0aWMgSlNTdHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUo
UGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQoreworICAgIEdPd25Q
dHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7CisKKyAgICBpZiAoIWVs
ZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QoZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CisKKyAgICBBdGtPYmpl
Y3QqIGF4VGFibGUgPSBhdGtfb2JqZWN0X2dldF9wYXJlbnQoQVRLX09CSkVDVChlbGVtZW50KSk7
CisgICAgaWYgKCFheFRhYmxlIHx8ICFBVEtfSVNfVEFCTEUoYXhUYWJsZSkpCisgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CisK
KyAgICAvLyBMb29rIGZvciB0aGUgY2VsbCBpbiB0aGUgdGFibGUuCisgICAgZ2ludCBpbmRleElu
UGFyZW50ID0gYXRrX29iamVjdF9nZXRfaW5kZXhfaW5fcGFyZW50KEFUS19PQkpFQ1QoZWxlbWVu
dCkpOworICAgIGlmIChpbmRleEluUGFyZW50ID09IC0xKQorICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOworCisgICAgaW50IHJv
dyA9IC0xOworICAgIGludCBjb2x1bW4gPSAtMTsKKyAgICByb3cgPSBhdGtfdGFibGVfZ2V0X3Jv
d19hdF9pbmRleChBVEtfVEFCTEUoYXhUYWJsZSksIGluZGV4SW5QYXJlbnQpOworICAgIGNvbHVt
biA9IGF0a190YWJsZV9nZXRfY29sdW1uX2F0X2luZGV4KEFUS19UQUJMRShheFRhYmxlKSwgaW5k
ZXhJblBhcmVudCk7CisKKyAgICAvLyBHZXQgdGhlIGFjdHVhbCB2YWx1ZXMsIGlmIHJvdyBhbmQg
Y29sdW1ucyBhcmUgdmFsaWQgdmFsdWVzLgorICAgIGlmIChyb3cgIT0gLTEgJiYgY29sdW1uICE9
IC0xKSB7CisgICAgICAgIGludCBiYXNlID0gMDsKKyAgICAgICAgaW50IGxlbmd0aCA9IDA7Cisg
ICAgICAgIGlmIChpc1Jvd1JhbmdlKSB7CisgICAgICAgICAgICBiYXNlID0gcm93OworICAgICAg
ICAgICAgbGVuZ3RoID0gYXRrX3RhYmxlX2dldF9yb3dfZXh0ZW50X2F0KEFUS19UQUJMRShheFRh
YmxlKSwgcm93LCBjb2x1bW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYmFzZSA9
IGNvbHVtbjsKKyAgICAgICAgICAgIGxlbmd0aCA9IGF0a190YWJsZV9nZXRfY29sdW1uX2V4dGVu
dF9hdChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywgY29sdW1uKTsKKyAgICAgICAgfQorICAgICAg
ICByYW5nZVN0cmluZy5zZXQoZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIGJhc2UsIGxlbmd0
aCkpOworICAgIH0KKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhy
YW5nZVN0cmluZy5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFsdGVyQ3VycmVudFZhbHVlKFBs
YXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIGJvb2wgaXNJbmNyZW1lbnQpCit7CisgICAgaWYgKCFl
bGVtZW50IHx8ICFBVEtfSVNfVkFMVUUoZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEdWYWx1ZSBjdXJyZW50VmFsdWUgPSBHX1ZBTFVFX0lOSVQ7CisgICAgYXRrX3ZhbHVlX2dldF9j
dXJyZW50X3ZhbHVlKEFUS19WQUxVRShlbGVtZW50KSwgJmN1cnJlbnRWYWx1ZSk7CisKKyAgICBH
VmFsdWUgaW5jcmVtZW50ID0gR19WQUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRfbWluaW11
bV9pbmNyZW1lbnQoQVRLX1ZBTFVFKGVsZW1lbnQpLCAmaW5jcmVtZW50KTsKKworICAgIEdWYWx1
ZSBuZXdWYWx1ZSA9IEdfVkFMVUVfSU5JVDsKKyAgICBnX3ZhbHVlX2luaXQoJm5ld1ZhbHVlLCBH
X1RZUEVfRE9VQkxFKTsKKworICAgIGRvdWJsZSBuZXdEb3VibGVWYWx1ZSA9IGlzSW5jcmVtZW50
CisgICAgICAgID8gZ192YWx1ZV9nZXRfZG91YmxlKCZjdXJyZW50VmFsdWUpICsgZ192YWx1ZV9n
ZXRfZG91YmxlKCZpbmNyZW1lbnQpCisgICAgICAgIDogZ192YWx1ZV9nZXRfZG91YmxlKCZjdXJy
ZW50VmFsdWUpIC0gZ192YWx1ZV9nZXRfZG91YmxlKCZpbmNyZW1lbnQpOworCisgICAgZ192YWx1
ZV9zZXRfZG91YmxlKCZuZXdWYWx1ZSwgbmV3RG91YmxlVmFsdWUpOworICAgIGF0a192YWx1ZV9z
ZXRfY3VycmVudF92YWx1ZShBVEtfVkFMVUUoZWxlbWVudCksICZuZXdWYWx1ZSk7CisKKyAgICBn
X3ZhbHVlX3Vuc2V0KCZuZXdWYWx1ZSk7CisgICAgZ192YWx1ZV91bnNldCgmaW5jcmVtZW50KTsK
KyAgICBnX3ZhbHVlX3Vuc2V0KCZjdXJyZW50VmFsdWUpOworfQorCitBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQp
CisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JiBv
dGhlcikKKyAgICA6IEpTV3JhcHBhYmxlKCkKKyAgICAsIG1fZWxlbWVudChvdGhlci5tX2VsZW1l
bnQpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KCkKK3sKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50
ID09IG90aGVyRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mIGNoaWxkcmVuKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNf
T0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBjb3VudCA9IGNo
aWxkcmVuQ291bnQoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAg
ICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQo
QVRLX09CSkVDVChtX2VsZW1lbnQpLCBpKTsKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShjaGlsZCkpOworICAgIH0KK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGNoaWxkcmVuLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1f
ZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBlbmQgPSBsb2NhdGlvbiAr
IGxlbmd0aDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsb2NhdGlvbjsgaSA8IGVuZDsgaSsrKSB7
CisgICAgICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2No
aWxkKEFUS19PQkpFQ1QobV9lbGVtZW50KSwgaSk7CisgICAgICAgIGNoaWxkcmVuLmFwcGVuZChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY2hpbGQpKTsKKyAgICB9Cit9CisKK2ludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAgICBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW4o
Y2hpbGRyZW4pOworICAgIHJldHVybiBjaGlsZHJlbi5zaXplKCk7Cit9CisKK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0
UG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gMDsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxk
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiAtMTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
Cit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVu
OworICAgIGdldENoaWxkcmVuV2l0aFJhbmdlKGNoaWxkcmVuLCBpbmRleCwgMSk7CisKKyAgICBp
ZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBjaGlsZHJlblswXTsKKwor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5k
ZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7
Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCit7CisgICAgaWYgKCFtX2VsZW1l
bnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBBdGtPYmplY3QqIHBhcmVudCA9ICBhdGtfb2JqZWN0X2dldF9wYXJlbnQoQVRLX09CSkVDVCht
X2VsZW1lbnQpKTsKKyAgICByZXR1cm4gcGFyZW50ID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKHBhcmVudCkgOiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRz
KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmli
dXRlcygpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGF0dHJpYnV0ZVNldFRvU3RyaW5nKGF0
a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQpKSkpOworICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVEYXRhLmdldCgpKTsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVW
YWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiAwLjBmOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0
dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0
cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlTmFtZXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQoreworICAgIGlmICghbV9lbGVtZW50
IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUm9sZSByb2xlID0gYXRrX29iamVj
dF9nZXRfcm9sZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICghcm9sZSkKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBjb25z
dCBnY2hhciogcm9sZU5hbWUgPSBhdGtfcm9sZV9nZXRfbmFtZShyb2xlKTsKKyAgICBHT3duUHRy
PGdjaGFyPiBheFJvbGUoZ19zdHJkdXBfcHJpbnRmKCJBWFJvbGU6ICVzIiwgcm9sZU5hbWUpKTsK
KworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhheFJvbGUuZ2V0KCkp
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3Vicm9sZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp0aXRsZSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9l
bGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CisKKyAgICBjb25zdCBnY2hhciogbmFtZSA9IGF0a19vYmplY3RfZ2V0X25hbWUoQVRLX09C
SkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgR093blB0cjxnY2hhcj4gYXhUaXRs
ZShnX3N0cmR1cF9wcmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSkpOworCisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VGl0bGUuZ2V0KCkpOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQor
eworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgY29u
c3QgZ2NoYXIqIGRlc2NyaXB0aW9uID0gYXRrX29iamVjdF9nZXRfZGVzY3JpcHRpb24oQVRLX09C
SkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAoIWRlc2NyaXB0aW9uKQorICAgICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEdPd25QdHI8Z2NoYXI+
IGF4RGVzYyhnX3N0cmR1cF9wcmludGYoIkFYRGVzY3JpcHRpb246ICVzIiwgZGVzY3JpcHRpb24p
KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhheERlc2MuZ2V0
KCkpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICAvLyBXZSBuZWVkIGEgd2F5IHRvIGNh
bGwgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRleHQoKQorICAgIC8vIGZyb20g
aGVyZSwgcHJvYmFibHkgYSBuZXcgaGVscGVyIGNsYXNzIGluIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQuCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9
CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBpZiAoIW1fZWxl
bWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMC4wZjsK
KworICAgIGludCB4LCB5OworICAgIGF0a19jb21wb25lbnRfZ2V0X3Bvc2l0aW9uKEFUS19DT01Q
T05FTlQobV9lbGVtZW50KSwgJngsICZ5LCBBVEtfWFlfU0NSRUVOKTsKKyAgICByZXR1cm4geDsK
K30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKQoreworICAgIGlmICghbV9l
bGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBm
OworCisgICAgaW50IHgsIHk7CisgICAgYXRrX2NvbXBvbmVudF9nZXRfcG9zaXRpb24oQVRLX0NP
TVBPTkVOVChtX2VsZW1lbnQpLCAmeCwgJnksIEFUS19YWV9TQ1JFRU4pOworICAgIHJldHVybiB5
OworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQoreworICAgIGlm
ICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVy
biAwLjBmOworCisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgYXRrX2NvbXBvbmVudF9nZXRf
c2l6ZShBVEtfQ09NUE9ORU5UKG1fZWxlbWVudCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgcmV0
dXJuIHdpZHRoOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KCkK
K3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAg
ICAgICByZXR1cm4gMC4wZjsKKworICAgIGludCB3aWR0aCwgaGVpZ2h0OworICAgIGF0a19jb21w
b25lbnRfZ2V0X3NpemUoQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmd2lkdGgsICZoZWlnaHQp
OworICAgIHJldHVybiBoZWlnaHQ7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjbGlja1BvaW50WCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
LjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91Ymxl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMC4w
ZjsKKworICAgIEdWYWx1ZSB2YWx1ZSA9IEdfVkFMVUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0
X2N1cnJlbnRfdmFsdWUoQVRLX1ZBTFVFKG1fZWxlbWVudCksICZ2YWx1ZSk7CisKKyAgICBpZiAo
R19WQUxVRV9IT0xEU19ET1VCTEUoJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGdfdmFsdWVfZ2V0
X2RvdWJsZSgmdmFsdWUpOworCisgICAgaWYgKEdfVkFMVUVfSE9MRFNfSU5UKCZ2YWx1ZSkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGdfdmFsdWVfZ2V0X2ludCgmdmFsdWUp
KTsKKworICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWluVmFsdWUoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1f
ZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgR1ZhbHVlIHZhbHVlID0gR19W
QUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRfbWluaW11bV92YWx1ZShBVEtfVkFMVUUobV9l
bGVtZW50KSwgJnZhbHVlKTsKKworICAgIGlmIChHX1ZBTFVFX0hPTERTX0RPVUJMRSgmdmFsdWUp
KQorICAgICAgICByZXR1cm4gZ192YWx1ZV9nZXRfZG91YmxlKCZ2YWx1ZSk7CisKKyAgICBpZiAo
R19WQUxVRV9IT0xEU19JTlQoJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4oZ192YWx1ZV9nZXRfaW50KCZ2YWx1ZSkpOworCisgICAgcmV0dXJuIDAuMGY7Cit9CisK
K2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpCit7CisgICAgaWYgKCFt
X2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAu
MGY7CisKKyAgICBHVmFsdWUgdmFsdWUgPSBHX1ZBTFVFX0lOSVQ7CisgICAgYXRrX3ZhbHVlX2dl
dF9tYXhpbXVtX3ZhbHVlKEFUS19WQUxVRShtX2VsZW1lbnQpLCAmdmFsdWUpOworCisgICAgaWYg
KEdfVkFMVUVfSE9MRFNfRE9VQkxFKCZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBnX3ZhbHVlX2dl
dF9kb3VibGUoJnZhbHVlKTsKKworICAgIGlmIChHX1ZBTFVFX0hPTERTX0lOVCgmdmFsdWUpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihnX3ZhbHVlX2dldF9pbnQoJnZhbHVl
KSk7CisKKyAgICByZXR1cm4gMC4wZjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAw
KTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51
bWJlcigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAtMTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1Jl
ZiBhY3Rpb24pCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQoreworICAgIHJl
dHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9FTkFCTEVEKTsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNr
RWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0ZPQ1VTRUQpOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBj
aGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9TRUxFQ1RFRCk7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0VYUEFOREVEKTsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAg
IHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9DSEVDS0VEKTsK
K30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhaygpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dy
YWJiZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworLy8gcGFy
YW1ldGVyaXplZCBhdHRyaWJ1dGVzCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZv
ckluZGV4KGludCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyYW5nZUZvckxpbmUoaW50IGxpbmUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlv
bihpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQg
bG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5n
ZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFy
Y2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mUm93SGVhZGVycygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Q29sdW1ucygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZIZWFkZXIoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX1RB
QkxFKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGF0a190YWJs
ZV9nZXRfbl9yb3dzKEFUS19UQUJMRShtX2VsZW1lbnQpKTsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRL
X0lTX1RBQkxFKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGF0
a190YWJsZV9nZXRfbl9jb2x1bW5zKEFUS19UQUJMRShtX2VsZW1lbnQpKTsKK30KKworaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKQoreworICAgIC8vIFJhbmdlIGlu
IHRhYmxlIGZvciByb3dzLgorICAgIHJldHVybiBpbmRleFJhbmdlSW5UYWJsZShtX2VsZW1lbnQs
IHRydWUpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgLy8gUmFuZ2UgaW4gdGFibGUgZm9yIGNv
bHVtbnMuCisgICAgcmV0dXJuIGluZGV4UmFuZ2VJblRhYmxlKG1fZWxlbWVudCwgZmFsc2UpOwor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCit7
CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19UQUJMRShtX2VsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEF0a09iamVjdCogZm91bmRDZWxsID0gYXRrX3RhYmxlX3JlZl9h
dChBVEtfVEFCTEUobV9lbGVtZW50KSwgcm93LCBjb2wpOworICAgIHJldHVybiBmb3VuZENlbGwg
PyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoZm91bmRDZWxsKSA6IDA7Cit9CisKK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVj
dGVkVGV4dFJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
Y3JlbWVudCgpCit7CisgICAgYWx0ZXJDdXJyZW50VmFsdWUobV9lbGVtZW50LCB0cnVlKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKQoreworICAgIGFsdGVy
Q3VycmVudFZhbHVlKG1fZWxlbWVudCwgZmFsc2UpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNob3dNZW51KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3MoKQoreworICAgIGlmICghbV9lbGVtZW50
IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghQVRLX0lTX0FDVElPTihtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBP
bmx5IG9uZSBhY3Rpb24gcGVyIG9iamVjdCBpcyBzdXBwb3J0ZWQgc28gZmFyLgorICAgIGF0a19h
Y3Rpb25fZG9fYWN0aW9uKEFUS19BQ1RJT04obV9lbGVtZW50KSwgMCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlWYWx1ZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCit7Cisg
ICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSb2xl
IHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAg
aWYgKHJvbGUgIT0gQVRLX1JPTEVfRE9DVU1FTlRfRlJBTUUpCisgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGF0a19kb2N1bWVudF9nZXRfYXR0cmlidXRlX3ZhbHVlKEFUS19E
T0NVTUVOVChtX2VsZW1lbnQpLCAiRW5jb2RpbmciKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCit7CisgICAgaWYg
KCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSb2xlIHJvbGUg
PSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKHJv
bGUgIT0gQVRLX1JPTEVfRE9DVU1FTlRfRlJBTUUpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGF0a19kb2N1bWVudF9nZXRfYXR0cmlidXRlX3ZhbHVlKEFUS19ET0NVTUVO
VChtX2VsZW1lbnQpLCAiVVJJIikpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJl
ZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVf
Rk9DVVNBQkxFKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFi
bGUoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFU
S19TVEFURV9TRUxFQ1RBQkxFKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRl
KG1fZWxlbWVudCwgQVRLX1NUQVRFX01VTFRJU0VMRUNUQUJMRSk7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tF
bGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfVklTSUJMRSk7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
Z25vcmVkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24o
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorfQorCisvLyBUZXh0IG1hcmtlcnMKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiByYW5nZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtl
cikKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5l
eHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBlbmRN
YXJrZXIpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSogcmFuZ2UpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250
YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIHJhbmdlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJr
ZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIC0xOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gMDsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXVFIKLS0gCjEuNy4xMC4y
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147853</attachid>
            <date>2012-06-15 10:29:16 -0700</date>
            <delta_ts>2012-06-18 04:49:46 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0002-2012-06-15-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>54181</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxYTI1NmQzYzlkOGY0NzM2YmM5MTY3YTE5ODhjYTAzNzYwMTk0OTJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDEyIDE0OjA0OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAyLzNdIDIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgSW1wbGVtZW50ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEssIGJh
c2VkIGluIHRoZQogICAgICAgIGltcGxlbWVudGF0aW9uIHByZXNlbnQgaW4gRHVtcFJlbmRlclRy
ZWUuCgogICAgICAgIEFkZGVkIG5ldyBmaWxlcyBpbiBndGsvIGFuZCB1cGRhdGVkIHRoZSBjcm9z
cy1wbGF0Zm9ybSBvbmVzLgoKICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW06CiAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwOgogICAgICAgIChXVFIpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6IEFkZGVkLgogICAgICAgIChX
VFIpOgogICAgICAgIChXVFI6OmF0dHJpYnV0ZVNldFRvU3RyaW5nKToKICAgICAgICAoV1RSOjpj
aGVja0VsZW1lbnRTdGF0ZSk6CiAgICAgICAgKFdUUjo6aW5kZXhSYW5nZUluVGFibGUpOgogICAg
ICAgIChXVFI6OmFsdGVyQ3VycmVudFZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhPZkNoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3cpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgogICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlu
a3MpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNo
aWxkcmVuKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1
dGVzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1
dGVWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0
cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib29sQXR0cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN1YnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvbGVEZXNjcmlwdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGl0bGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9u
KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6eCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgogICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnRWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWluVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZh
bHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0
aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0
aW9uU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vu
YWJsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQp
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3BlYWspOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEcm9wRWZmZWN0cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZUZvckluZGV4KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5n
ZUZvckxpbmUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9y
UG9zaXRpb24pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JS
YW5nZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlz
aWJsZUNlbGxzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZIZWFkZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0Nv
dW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKToK
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2Up
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCk6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1cmwpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzU2VsZWN0YWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNNdWx0aVNlbGVjdGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNP
ZmZTY3JlZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFw
c2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFy
a2Vycyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIpOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgoKICAgICAgICBBZGQgZG9j
dW1lbnRFbmNvZGluZyBhbmQgZG9jdW1lbnRVUkkgdG8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5p
ZGwuCgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKCjIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgUmVtb3ZlZCBsaW5lcyBza2lwcGluZyBhbGwgdGhlIGFj
Y2Vzc2liaWxpdHkgdGVzdHMgYW5kIHJlcGxhY2UKICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCiAgICAgICAgYXJlIGp1
c3QgYSBmZXcgbm93LCBhbmQgd2lsbCBob3BlZnVsbHkgZ2V0IGZpeGVkIGxhdGVyIG9uLgoKICAg
ICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNraXBw
ZWQgdGVzdHMuCgogICAgICAgIFVwZGF0ZWQgdHdvIGxheW91dCB0ZXN0cyB0byBjb25zaWRlciBu
dWxscywgc29tZXRoaW5nIHRoYXQgZGlkbid0CiAgICAgICAgaGFwcGVuIHdpdGggRHVtcFJlbmRl
clRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgoKICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sOiBVcGRhdGUgdGVzdC4KICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCi0tLQogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sICAgIHwgICAgNSArLQogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxscy5odG1sICAgICAgICAgfCAgIDEyICst
CiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQgICAgICAgICAgICAgICB8ICAg
NDIgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDE1MSArKysKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgIHwgICAgMSArCiAuLi4vSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgICAgICB8ICAgIDIgKy0KIC4uLi9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggICAgICAgIHwgICAgMyArCiAuLi4vQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwgICAgICAgICAgICB8ICAgIDQgKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50R3RrLmNwcCAgICAgICAgICAgICAgfCAgOTc5ICsrKysrKysrKysrKysrKysrKysrCiAxMCBm
aWxlcyBjaGFuZ2VkLCAxMjA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTJkMGY5My4uNjEzNWExYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTE1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGxpbmVzIHNraXBwaW5nIGFsbCB0aGUgYWNj
ZXNzaWJpbGl0eSB0ZXN0cyBhbmQgcmVwbGFjZQorICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCisgICAgICAgIGFyZSBq
dXN0IGEgZmV3IG5vdywgYW5kIHdpbGwgaG9wZWZ1bGx5IGdldCBmaXhlZCBsYXRlciBvbi4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNr
aXBwZWQgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlZCB0d28gbGF5b3V0IHRlc3RzIHRvIGNvbnNp
ZGVyIG51bGxzLCBzb21ldGhpbmcgdGhhdCBkaWRuJ3QKKyAgICAgICAgaGFwcGVuIHdpdGggRHVt
cFJlbmRlclRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLmh0bWw6IFVwZGF0ZSB0ZXN0LgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCisKIDIwMTIt
MDYtMTQgIEphbiBLZXJvbW5lcyAgPGphbnhAbGludXguY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBFeHRlbnNpb25QYW5lbC5zaG93KCkgbWV0aG9kCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGwtc3BhbnMuaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sCmluZGV4IDE4MTAyYzgu
LjVhYjk2MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2Vs
bC1zcGFucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1z
cGFucy5odG1sCkBAIC03Niw4ICs3Niw5IEBACiAgICAgICAgICAgICBjZWxsID0gdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygxMCwxMCk7IAogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCAr
PSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgKz0gInsgMTAsIDEwIH1cbiI7Ci0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IGNl
bGwuYWxsQXR0cmlidXRlcygpICsgIlxuIjsKLSAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gY2VsbC5yb3dJbmRleFJhbmdlKCkgKyAiLCAiICsgY2VsbC5jb2x1bW5JbmRleFJhbmdlKCkg
ICsgIlxuXG4iOyAKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gKGNlbGwgIT0gbnVs
bCA/IGNlbGwuYWxsQXR0cmlidXRlcygpIDogIiIpICsgIlxuIjsKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgKz0gY2VsbCAhPSBudWxsID8gY2VsbC5yb3dJbmRleFJhbmdlKCkgOiAiezAs
IDB9IjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIiwgIiArIChjZWxsICE9IG51
bGwgPyBjZWxsLmNvbHVtbkluZGV4UmFuZ2UoKSA6ICJ7MCwgMH0iKSArICJcblxuIjsKICAgICAg
ICAgfQogICAgIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90YWJsZS1jZWxscy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
YWJsZS1jZWxscy5odG1sCmluZGV4IGYyNzg5ZTUuLmEzMWIyMGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxzLmh0bWwKQEAgLTY5LDkgKzY5LDE1IEBACiAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7IAog
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzMsNV1cbiIgKyB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDMsNSkuYWxsQXR0cmlidXRlcygpICsgIlxuIjsgCiAgICAgICAgICAgICBy
ZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7IAotICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzEwMCwwXVxuIiArIHRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMTAwLDApLmFsbEF0dHJpYnV0ZXMoKSArICJcbiI7IAotICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCArPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOyAKLSAgICAgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIlswLDEwMF1cbiIgKyB0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDAsMTAwKS5hbGxBdHRyaWJ1dGVzKCkgKyAiXG4iOyAKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgKz0gIlsxMDAsMF1cbiI7CisgICAgICAgICAgICBvdXRPZlJhbmdlQ2VsbCA9
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMTAwLDApOworICAgICAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSBvdXRPZlJhbmdlQ2VsbCAhPSBudWxsID8gb3V0T2ZSYW5nZUNlbGwuYWxsQXR0
cmlidXRlcygpIDogIiI7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcbiI7Cisg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c
biI7CisgICAgICAgICAgICBvdXRPZlJhbmdlQ2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMCwxMDApOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzAsMTAwXVxuIjsK
KyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gb3V0T2ZSYW5nZUNlbGwgIT0gbnVsbCA/
IG91dE9mUmFuZ2VDZWxsLmFsbEF0dHJpYnV0ZXMoKSA6ICIiOworICAgICAgICAgICAgcmVzdWx0
LmlubmVyVGV4dCArPSAiXG4iOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKaW5kZXggMTQ2MGY1NC4uODQ1YzZjMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZApAQCAtODMsNiArODMsMzkgQEAgZWRpdGlu
Zy9pbnB1dC9lbWFjcy1jdHJsLW8uaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njk1MTIKIHBsdWdpbnMvZGVzdHJveS1kdXJpbmctbnBwLW5ldy5odG1sCiAK
KyMgYWNjZXNzaWJpbGl0eSB0ZXN0cyBmYWlsaW5nIGluIFdLMSBidXQgY3Jhc2hpbmcgaW4gV0sy
CithY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVudHMuaHRtbAorYWNjZXNzaWJp
bGl0eS9pbmxpbmUtY29udGludWF0aW9ucy5odG1sCithY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZy
YW1lLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sCitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9p
bnB1dC1zbGlkZXIuaHRtbAorCisjIGFjY2Vzc2liaWxpdHkgdGVzdHMgcGFzc2luZyBpbiBXSzEg
YnV0IGNyYXNoaW5nIGluIFdLMgorYWNjZXNzaWJpbGl0eS9hZGphY2VudC1jb250aW51YXRpb25z
LWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLmh0bWwKK2FjY2Vzc2liaWxpdHkvYW5vbnltb3VzLXJl
bmRlci1ibG9jay1pbi1jb250aW51YXRpb24tY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxp
dHkvYXJpYS1oaWRkZW4tdXBkYXRlcy1hbGxkZXNjZW5kYW50cy5odG1sCithY2Nlc3NpYmlsaXR5
L2FyaWEtbWVudWJhci1tZW51aXRlbXMuaHRtbAorYWNjZXNzaWJpbGl0eS9jb250ZW50LWNoYW5n
ZWQtbm90aWZpY2F0aW9uLWNhdXNlcy1jcmFzaC5odG1sCithY2Nlc3NpYmlsaXR5L2NyYXNoLWRl
dGVybWluaW5nLWFyaWEtcm9sZS13aGVuLWxhYmVsLXByZXNlbnQuaHRtbAorYWNjZXNzaWJpbGl0
eS9kZWxldGluZy1pZnJhbWUtZGVzdHJveXMtYXhjYWNoZS5odG1sCithY2Nlc3NpYmlsaXR5L2Rp
di13aXRoaW4tYW5jaG9ycy1jYXVzZXMtY3Jhc2guaHRtbAorYWNjZXNzaWJpbGl0eS9kdXBsaWNh
dGUtY2hpbGQtbm9kZXMuaHRtbAorYWNjZXNzaWJpbGl0eS9maXJzdC1sZXR0ZXItdGV4dC10cmFu
c2Zvcm0tY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0
aW9uLmh0bWwKK2FjY2Vzc2liaWxpdHkvaWdub3JlLXNwYWNlci1lbGVtZW50cy5odG1sCithY2Nl
c3NpYmlsaXR5L2ltYWdlLWxpbmstaW5saW5lLWNvbnQuaHRtbAorYWNjZXNzaWJpbGl0eS9pbWFn
ZS1tYXAtdGl0bGUtY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXVw
ZGF0ZS1wYXJlbnQtY3Jhc2guaHRtbAorYWNjZXNzaWJpbGl0eS9pbWctYWx0LXRhZy1vbmx5LXdo
aXRlc3BhY2UuaHRtbAorYWNjZXNzaWJpbGl0eS9pbWctYXJpYS1idXR0b24tYWx0LXRhZy5odG1s
CithY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRtbAorYWNjZXNzaWJpbGl0eS9wcmVzZW50
YXRpb25hbC1lbGVtZW50cy13aXRoLWZvY3VzLmh0bWwKK2FjY2Vzc2liaWxpdHkvcmVtb3ZlZC1h
bm9ueW1vdXMtYmxvY2stY2hpbGQtY2F1c2VzLWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxpdHkvdGFi
bGUtd2l0aC1lbXB0eS10aGVhZC1jYXVzZXMtY3Jhc2guaHRtbAorcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0
eS9hcmlhLXRhYmxlLWhpZXJhcmNoeS5odG1sCitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9p
bnB1dC1zbGlkZXIuaHRtbAorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvdGFibGUtaGllcmFy
Y2h5Lmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBFWFBFQ1RFRCBGQUlMVVJFUwog
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjY5LDkgKzMwMiwxMiBAQCBodHRwL3Rlc3RzL21p
c2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWwKICMgZXZlbnRTZW5kZXIuc2NoZWR1bGVBc3luY2hy
b25vdXNDbGljayBzdXBwb3J0CiBmYXN0L2V2ZW50cy9wb3B1cC1ibG9ja2luZy1jbGljay1pbi1p
ZnJhbWUuaHRtbAogCi0jIEltcGxlbWVudCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9yIFdlYktp
dDIKLWFjY2Vzc2liaWxpdHkKLXBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5CisjIGFjY2Vzc2li
aWxpdHkgdGVzdHMgZmFpbGluZyBkdWUgdG8gbWlzc2luZyBXS1RSIGZlYXR1cmVzCithY2Nlc3Np
YmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbAorYWNjZXNzaWJpbGl0eS9hcmlh
LWhlbHAuaHRtbAorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1zbGlkZXItcmVxdWly
ZWQtYXR0cmlidXRlcy5odG1sCitwbGF0Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93
c2luZy10ZXh0LWZvY3VzLmh0bWwKK3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2NvbWJvLWJv
eC1jb2xsYXBzZWQtc2VsZWN0aW9uLWNoYW5nZWQuaHRtbAogCiAjIEltcGxlbWVudCB0ZXh0SW5w
dXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlIGludGVyZmFjZQogZmFzdC9m
b3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3VuZGFyeS5odG1sCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjc2ZDIwNS4uZTBhZTkx
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE1NiBAQAogMjAxMi0wNi0xNSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6
QGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1dLMl1bR1RLXSBJbXBsZW1lbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5MjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbiBX
S1RSIGZvciBHVEssIGJhc2VkIGluIHRoZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBwcmVzZW50
IGluIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgIEFkZGVkIG5ldyBmaWxlcyBpbiBndGsvIGFu
ZCB1cGRhdGVkIHRoZSBjcm9zcy1wbGF0Zm9ybSBvbmVzLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRH
dGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OmF0dHJpYnV0ZVNl
dFRvU3RyaW5nKToKKyAgICAgICAgKFdUUjo6Y2hlY2tFbGVtZW50U3RhdGUpOgorICAgICAgICAo
V1RSOjppbmRleFJhbmdlSW5UYWJsZSk6CisgICAgICAgIChXVFI6OmFsdGVyQ3VycmVudFZhbHVl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNFcXVhbCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5X
aXRoUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJl
bkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0
UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hp
bGQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNF
bGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRy
ZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50
YXRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6eSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OndpZHRoKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRlZCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0ZvY3VzZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc1NlbGVjdGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNFeHBhbmRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hl
Y2tlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNh
bExldmVsKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFu
Z2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVh
ZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omhhc1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZv
Y3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlv
bik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRh
aW5zQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5k
ZXhGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNUZXh0TWFya2VyVmFsaWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorCisgICAgICAgIEFkZCBkb2N1bWVudEVuY29kaW5nIGFu
ZCBkb2N1bWVudFVSSSB0byBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbC4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5pZGw6CisKKzIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hl
ekBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEdldCByaWQgb2YgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjp7aW58ZGV9Y3JlbWVudEFjY2Vzc2liaWxpdHlWYWx1ZQogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMjYKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggNTQ2OTYxMy4uYTI1NWY2NyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5NCw3IEBAIExpYnJhcmllc19saWJU
ZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBcCiAJVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuY3BwIFwKIAlUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5oIFwKKwlUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50R3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
QWN0aXZhdGVGb250c0d0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlR3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIFwKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDdjMDYyMzcuLjQyZTI1NzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogfQogICAgIAogLy8gVW5zdXBwb3J0ZWQg
bWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhleSdyZSBpbXBsZW1lbnRlZCBvbiBv
dGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBtb2RpZmllZC4KLSNpZiAhUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShHVEspCiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KSB7
IH0KIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3Qg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsgfQogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5k
ZXggNjk3OTE4Zi4uNTUxZjU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTI0
Myw2ICsyNDMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0RG9j
dW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCiAgICAgdm9pZCBnZXRD
aGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAgICB2
b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAppbmRleCBhMWU4
YTA2Li4zMTJhMWUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwKQEAgLTI4LDYgKzI4LDEwIEBAIG1vZHVsZSBXVFIgewogICAgIGludGVyZmFjZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKICAgICAgICAgYm9vbGVhbiBpc0VxdWFsKGluIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgb3RoZXJFbGVtZW50KTsKIAorICAgICAgICAvLyBEb2N1bWVudCBp
bmZvcm1hdGlvbgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRvY3VtZW50
RW5jb2Rpbmc7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9jdW1lbnRV
Ukk7CisKICAgICAgICAgLy8gRWxlbWVudCBhY2Nlc3MuCiAgICAgICAgIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGluIGludCB5KTsKICAgICAgICAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBjaGlsZEF0SW5kZXgoaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzY5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50R3RrLmNwcApAQCAtMCwwICsxLDk3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKwor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdl
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxh
dGsvYXRrLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBnY2hhciogYXR0cmli
dXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQpCit7CisgICAgR1N0
cmluZyogc3RyID0gZ19zdHJpbmdfbmV3KDApOworICAgIGZvciAoR1NMaXN0KiBhdHRyaWJ1dGVz
ID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy0+bmV4
dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0
dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBHT3duUHRyPGdjaGFyPiBhdHRy
aWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFtZSwgIjoiLCBhdHRyaWJ1dGUtPnZh
bHVlLCBOVUxMKSk7CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIGF0dHJpYnV0ZURhdGEu
Z2V0KCkpOworICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4dCkKKyAgICAgICAgICAgIGdfc3Ry
aW5nX2FwcGVuZChzdHIsICIsICIpOworICAgIH0KKworICAgIHJldHVybiBnX3N0cmluZ19mcmVl
KHN0ciwgRkFMU0UpOworfQorCitzdGF0aWMgYm9vbCBjaGVja0VsZW1lbnRTdGF0ZShQbGF0Zm9y
bVVJRWxlbWVudCBlbGVtZW50LCBBdGtTdGF0ZVR5cGUgc3RhdGVUeXBlKQoreworICAgIGlmICgh
QVRLX0lTX09CSkVDVChlbGVtZW50KSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdS
ZWZQdHI8QXRrU3RhdGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRHUmVmKGF0a19vYmplY3RfcmVmX3N0
YXRlX3NldChBVEtfT0JKRUNUKGVsZW1lbnQpKSk7CisgICAgcmV0dXJuIGF0a19zdGF0ZV9zZXRf
Y29udGFpbnNfc3RhdGUoc3RhdGVTZXQuZ2V0KCksIHN0YXRlVHlwZSk7Cit9CisKK3N0YXRpYyBK
U1N0cmluZ1JlZiBpbmRleFJhbmdlSW5UYWJsZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBi
b29sIGlzUm93UmFuZ2UpCit7CisgICAgR093blB0cjxnY2hhcj4gcmFuZ2VTdHJpbmcoZ19zdHJk
dXAoInswLCAwfSIpKTsKKworICAgIGlmICghZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChlbGVt
ZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdl
U3RyaW5nLmdldCgpKTsKKworICAgIEF0a09iamVjdCogYXhUYWJsZSA9IGF0a19vYmplY3RfZ2V0
X3BhcmVudChBVEtfT0JKRUNUKGVsZW1lbnQpKTsKKyAgICBpZiAoIWF4VGFibGUgfHwgIUFUS19J
U19UQUJMRShheFRhYmxlKSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKKworICAgIC8vIExvb2sgZm9yIHRoZSBjZWxsIGlu
IHRoZSB0YWJsZS4KKyAgICBnaW50IGluZGV4SW5QYXJlbnQgPSBhdGtfb2JqZWN0X2dldF9pbmRl
eF9pbl9wYXJlbnQoQVRLX09CSkVDVChlbGVtZW50KSk7CisgICAgaWYgKGluZGV4SW5QYXJlbnQg
PT0gLTEpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5n
ZVN0cmluZy5nZXQoKSk7CisKKyAgICBpbnQgcm93ID0gLTE7CisgICAgaW50IGNvbHVtbiA9IC0x
OworICAgIHJvdyA9IGF0a190YWJsZV9nZXRfcm93X2F0X2luZGV4KEFUS19UQUJMRShheFRhYmxl
KSwgaW5kZXhJblBhcmVudCk7CisgICAgY29sdW1uID0gYXRrX3RhYmxlX2dldF9jb2x1bW5fYXRf
aW5kZXgoQVRLX1RBQkxFKGF4VGFibGUpLCBpbmRleEluUGFyZW50KTsKKworICAgIC8vIEdldCB0
aGUgYWN0dWFsIHZhbHVlcywgaWYgcm93IGFuZCBjb2x1bW5zIGFyZSB2YWxpZCB2YWx1ZXMuCisg
ICAgaWYgKHJvdyAhPSAtMSAmJiBjb2x1bW4gIT0gLTEpIHsKKyAgICAgICAgaW50IGJhc2UgPSAw
OworICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGlzUm93UmFuZ2UpIHsKKyAg
ICAgICAgICAgIGJhc2UgPSByb3c7CisgICAgICAgICAgICBsZW5ndGggPSBhdGtfdGFibGVfZ2V0
X3Jvd19leHRlbnRfYXQoQVRLX1RBQkxFKGF4VGFibGUpLCByb3csIGNvbHVtbik7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBiYXNlID0gY29sdW1uOworICAgICAgICAgICAgbGVuZ3Ro
ID0gYXRrX3RhYmxlX2dldF9jb2x1bW5fZXh0ZW50X2F0KEFUS19UQUJMRShheFRhYmxlKSwgcm93
LCBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIHJhbmdlU3RyaW5nLnNldChnX3N0cmR1cF9w
cmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CisgICAgfQorCisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKK30KKworc3Rh
dGljIHZvaWQgYWx0ZXJDdXJyZW50VmFsdWUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9v
bCBpc0luY3JlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIUFUS19JU19WQUxVRShlbGVt
ZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1ZhbHVlIGN1cnJlbnRWYWx1ZSA9IEdfVkFM
VUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUoQVRLX1ZBTFVFKGVsZW1l
bnQpLCAmY3VycmVudFZhbHVlKTsKKworICAgIEdWYWx1ZSBpbmNyZW1lbnQgPSBHX1ZBTFVFX0lO
SVQ7CisgICAgYXRrX3ZhbHVlX2dldF9taW5pbXVtX2luY3JlbWVudChBVEtfVkFMVUUoZWxlbWVu
dCksICZpbmNyZW1lbnQpOworCisgICAgR1ZhbHVlIG5ld1ZhbHVlID0gR19WQUxVRV9JTklUOwor
ICAgIGdfdmFsdWVfaW5pdCgmbmV3VmFsdWUsIEdfVFlQRV9ET1VCTEUpOworCisgICAgZG91Ymxl
IG5ld0RvdWJsZVZhbHVlID0gaXNJbmNyZW1lbnQKKyAgICAgICAgPyBnX3ZhbHVlX2dldF9kb3Vi
bGUoJmN1cnJlbnRWYWx1ZSkgKyBnX3ZhbHVlX2dldF9kb3VibGUoJmluY3JlbWVudCkKKyAgICAg
ICAgOiBnX3ZhbHVlX2dldF9kb3VibGUoJmN1cnJlbnRWYWx1ZSkgLSBnX3ZhbHVlX2dldF9kb3Vi
bGUoJmluY3JlbWVudCk7CisKKyAgICBnX3ZhbHVlX3NldF9kb3VibGUoJm5ld1ZhbHVlLCBuZXdE
b3VibGVWYWx1ZSk7CisgICAgYXRrX3ZhbHVlX3NldF9jdXJyZW50X3ZhbHVlKEFUS19WQUxVRShl
bGVtZW50KSwgJm5ld1ZhbHVlKTsKKworICAgIGdfdmFsdWVfdW5zZXQoJm5ld1ZhbHVlKTsKKyAg
ICBnX3ZhbHVlX3Vuc2V0KCZpbmNyZW1lbnQpOworICAgIGdfdmFsdWVfdW5zZXQoJmN1cnJlbnRW
YWx1ZSk7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQor
eworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNv
bnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQorICAgIDogSlNXcmFwcGFibGUoKQor
ICAgICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKK3sKK30KKworQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVt
ZW50KQoreworICAgIHJldHVybiBtX2VsZW1lbnQgPT0gb3RoZXJFbGVtZW50LT5wbGF0Zm9ybVVJ
RWxlbWVudCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVu
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgY2hpbGRyZW4pCit7Cisg
ICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaW50IGNvdW50ID0gY2hpbGRyZW5Db3VudCgpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChBVEtfT0JKRUNUKG1fZWxlbWVudCksIGkpOwor
ICAgICAgICBjaGlsZHJlbi5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNo
aWxkKSk7CisgICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgY2hp
bGRyZW4sIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFt
X2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHVuc2lnbmVkIGVuZCA9IGxvY2F0aW9uICsgbGVuZ3RoOworICAgIGZvciAodW5zaWduZWQg
aSA9IGxvY2F0aW9uOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9
IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoQVRLX09CSkVDVChtX2VsZW1lbnQpLCBp
KTsKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShjaGlsZCkpOworICAgIH0KK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxk
cmVuQ291bnQoKQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgcmV0dXJuIGNoaWxk
cmVuLnNpemUoKTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIC0xOworfQorCitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hpbGRyZW47CisgICAgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2Uo
Y2hpbGRyZW4sIGluZGV4LCAxKTsKKworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuWzBdOworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2Vk
VUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4
KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
MDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IDA7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRy
ZW5Db3VudCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1l
bnQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEF0a09iamVjdCogcGFyZW50ID0gIGF0a19v
YmplY3RfZ2V0X3BhcmVudChBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIHJldHVybiBwYXJl
bnQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUocGFyZW50KSA6IDA7Cit9CisKK1Bh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkQnlSb3coKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkRvY3VtZW50TGlua3MoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVu
KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVu
dCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0
ZURhdGEoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtf
T0JKRUNUKG1fZWxlbWVudCkpKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGF0dHJpYnV0ZURhdGEuZ2V0KCkpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDAuMGY7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlF
bGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVt
ZW50KSk7CisgICAgaWYgKCFyb2xlKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKKworICAgIGNvbnN0IGdjaGFyKiByb2xlTmFtZSA9IGF0a19yb2xl
X2dldF9uYW1lKHJvbGUpOworICAgIEdPd25QdHI8Z2NoYXI+IGF4Um9sZShnX3N0cmR1cF9wcmlu
dGYoIkFYUm9sZTogJXMiLCByb2xlTmFtZSkpOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGF4Um9sZS5nZXQoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlRGVzY3JpcHRpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICBpZiAoIW1f
ZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIGNvbnN0IGdjaGFyKiBuYW1l
ID0gYXRrX29iamVjdF9nZXRfbmFtZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICgh
bmFtZSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
CisKKyAgICBHT3duUHRyPGdjaGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRsZTog
JXMiLCBuYW1lKSk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
YXhUaXRsZS5nZXQoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFU
S19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBjb25zdCBnY2hhciogZGVzY3JpcHRpb24gPSBhdGtf
b2JqZWN0X2dldF9kZXNjcmlwdGlvbihBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICgh
ZGVzY3JpcHRpb24pCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIDApOworCisgICAgR093blB0cjxnY2hhcj4gYXhEZXNjKGdfc3RyZHVwX3ByaW50ZigiQVhE
ZXNjcmlwdGlvbjogJXMiLCBkZXNjcmlwdGlvbikpOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGF4RGVzYy5nZXQoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIC8vIFdlIG5lZWQgYSB3YXkgdG8gY2FsbCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpoZWxwVGV4dCgpCisgICAgLy8gZnJvbSBoZXJlLCBwcm9iYWJseSBhIG5ldyBoZWxwZXIg
Y2xhc3MgaW4gV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC4KKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OngoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxl
bWVudCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgaW50IHgsIHk7CisgICAgYXRrX2Nv
bXBvbmVudF9nZXRfcG9zaXRpb24oQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmeCwgJnksIEFU
S19YWV9TQ1JFRU4pOworICAgIHJldHVybiB4OworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6eSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9l
bGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBpbnQgeCwgeTsKKyAgICBhdGtf
Y29tcG9uZW50X2dldF9wb3NpdGlvbihBVEtfQ09NUE9ORU5UKG1fZWxlbWVudCksICZ4LCAmeSwg
QVRLX1hZX1NDUkVFTik7CisgICAgcmV0dXJuIHk7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp3aWR0aCgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpF
Q1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBpbnQgd2lkdGgsIGhl
aWdodDsKKyAgICBhdGtfY29tcG9uZW50X2dldF9zaXplKEFUS19DT01QT05FTlQobV9lbGVtZW50
KSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICByZXR1cm4gd2lkdGg7Cit9CisKK2RvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFB
VEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgaW50
IHdpZHRoLCBoZWlnaHQ7CisgICAgYXRrX2NvbXBvbmVudF9nZXRfc2l6ZShBVEtfQ09NUE9ORU5U
KG1fZWxlbWVudCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgcmV0dXJuIGhlaWdodDsKK30KKwor
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDAuMGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUoKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1f
ZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgR1ZhbHVlIHZhbHVlID0gR19W
QUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRfY3VycmVudF92YWx1ZShBVEtfVkFMVUUobV9l
bGVtZW50KSwgJnZhbHVlKTsKKworICAgIGlmIChHX1ZBTFVFX0hPTERTX0RPVUJMRSgmdmFsdWUp
KQorICAgICAgICByZXR1cm4gZ192YWx1ZV9nZXRfZG91YmxlKCZ2YWx1ZSk7CisKKyAgICBpZiAo
R19WQUxVRV9IT0xEU19JTlQoJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4oZ192YWx1ZV9nZXRfaW50KCZ2YWx1ZSkpOworCisgICAgcmV0dXJuIDAuMGY7Cit9CisK
K2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCit7CisgICAgaWYgKCFt
X2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAu
MGY7CisKKyAgICBHVmFsdWUgdmFsdWUgPSBHX1ZBTFVFX0lOSVQ7CisgICAgYXRrX3ZhbHVlX2dl
dF9taW5pbXVtX3ZhbHVlKEFUS19WQUxVRShtX2VsZW1lbnQpLCAmdmFsdWUpOworCisgICAgaWYg
KEdfVkFMVUVfSE9MRFNfRE9VQkxFKCZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBnX3ZhbHVlX2dl
dF9kb3VibGUoJnZhbHVlKTsKKworICAgIGlmIChHX1ZBTFVFX0hPTERTX0lOVCgmdmFsdWUpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihnX3ZhbHVlX2dldF9pbnQoJnZhbHVl
KSk7CisKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1heFZhbHVlKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVCht
X2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIEdWYWx1ZSB2YWx1ZSA9IEdf
VkFMVUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0X21heGltdW1fdmFsdWUoQVRLX1ZBTFVFKG1f
ZWxlbWVudCksICZ2YWx1ZSk7CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19ET1VCTEUoJnZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIGdfdmFsdWVfZ2V0X2RvdWJsZSgmdmFsdWUpOworCisgICAgaWYg
KEdfVkFMVUVfSE9MRFNfSU5UKCZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KGdfdmFsdWVfZ2V0X2ludCgmdmFsdWUpKTsKKworICAgIHJldHVybiAwLjBmOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVE
ZXNjcmlwdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIC0xOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzQWN0aW9uU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGFjdGlvbikKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRW5hYmxlZCgpCit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxl
bWVudCwgQVRLX1NUQVRFX0VOQUJMRUQpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzUmVxdWlyZWQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2Vk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtf
U1RBVEVfRk9DVVNFRCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxl
Y3RlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwg
QVRLX1NUQVRFX1NFTEVDVEVEKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0V4cGFuZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVt
ZW50LCBBVEtfU1RBVEVfRVhQQU5ERUQpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQ2hlY2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1f
ZWxlbWVudCwgQVRLX1NUQVRFX0NIRUNLRUQpOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKDAsIDApOworfQorCisvLyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKK2ludCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKGludCB4LCBpbnQgeSkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2ln
bmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3Bl
bGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNo
UHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0Rp
cmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4
dCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZD
b2x1bW5IZWFkZXJzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2Vs
bHMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQoKQoreworICAg
IGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfVEFCTEUobV9lbGVtZW50KSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gYXRrX3RhYmxlX2dldF9uX3Jvd3MoQVRLX1RBQkxFKG1fZWxl
bWVudCkpOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKQor
eworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfVEFCTEUobV9lbGVtZW50KSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYXRrX3RhYmxlX2dldF9uX2NvbHVtbnMoQVRLX1RB
QkxFKG1fZWxlbWVudCkpOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJ
blRhYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIC0xOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5k
ZXhSYW5nZSgpCit7CisgICAgLy8gUmFuZ2UgaW4gdGFibGUgZm9yIHJvd3MuCisgICAgcmV0dXJu
IGluZGV4UmFuZ2VJblRhYmxlKG1fZWxlbWVudCwgdHJ1ZSk7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKK3sK
KyAgICAvLyBSYW5nZSBpbiB0YWJsZSBmb3IgY29sdW1ucy4KKyAgICByZXR1cm4gaW5kZXhSYW5n
ZUluVGFibGUobV9lbGVtZW50LCBmYWxzZSk7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1
bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRL
X0lTX1RBQkxFKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQXRrT2JqZWN0
KiBmb3VuZENlbGwgPSBhdGtfdGFibGVfcmVmX2F0KEFUS19UQUJMRShtX2VsZW1lbnQpLCByb3cs
IGNvbCk7CisgICAgcmV0dXJuIGZvdW5kQ2VsbCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShmb3VuZENlbGwpIDogMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGlj
YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRp
b24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sKKyAgICBhbHRlckN1cnJl
bnRWYWx1ZShtX2VsZW1lbnQsIHRydWUpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRlY3JlbWVudCgpCit7CisgICAgYWx0ZXJDdXJyZW50VmFsdWUobV9lbGVtZW50LCBmYWxz
ZSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUoKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
cmVzcygpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFBVEtfSVNfQUNUSU9OKG1fZWxlbWVudCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIE9ubHkgb25lIGFjdGlvbiBwZXIgb2JqZWN0IGlz
IHN1cHBvcnRlZCBzbyBmYXIuCisgICAgYXRrX2FjdGlvbl9kb19hY3Rpb24oQVRLX0FDVElPTiht
X2VsZW1lbnQpLCAwKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxl
Y3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lT
X09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKworICAgIEF0a1JvbGUgcm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUo
QVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAocm9sZSAhPSBBVEtfUk9MRV9ET0NVTUVO
VF9GUkFNRSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXRrX2RvY3Vt
ZW50X2dldF9hdHRyaWJ1dGVfdmFsdWUoQVRLX0RPQ1VNRU5UKG1fZWxlbWVudCksICJFbmNvZGlu
ZyIpKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRvY3VtZW50VVJJKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVD
VChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAwKTsKKworICAgIEF0a1JvbGUgcm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09C
SkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAocm9sZSAhPSBBVEtfUk9MRV9ET0NVTUVOVF9GUkFN
RSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXRrX2RvY3VtZW50X2dl
dF9hdHRyaWJ1dGVfdmFsdWUoQVRLX0RPQ1VNRU5UKG1fZWxlbWVudCksICJVUkkiKSk7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1l
bnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9GT0NVU0FCTEUpOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNo
ZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX1NFTEVDVEFCTEUpOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfTVVMVElT
RUxFQ1RBQkxFKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zpc2libGUo
KSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19T
VEFURV9WSVNJQkxFKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNj
cmVlbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQoKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFr
ZUZvY3VzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphZGRTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
U2VsZWN0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKKy8vIFRleHQgbWFy
a2VycworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2UqIG1hcmtlclJhbmdlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBzdGFydE1hcmtlciwg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtlcikKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5nZSkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
Rm9yUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
ZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciog
bWFya2VyKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gLTE7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0ZXh0SW5k
ZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdUUgotLSAKMS43LjEwLjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148083</attachid>
            <date>2012-06-18 04:49:46 -0700</date>
            <delta_ts>2012-07-06 09:48:45 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-06-15-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>53796</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAyMTE0MjQzZTgxY2QyZmQ0M2Q4NDEyNjZhMTQyODU4ZGQ3ZmYwOTRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDEyIDE0OjA0OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRD
SCAxLzJdIDIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgSW1wbGVtZW50ZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEssIGJh
c2VkIGluIHRoZQogICAgICAgIGltcGxlbWVudGF0aW9uIHByZXNlbnQgaW4gRHVtcFJlbmRlclRy
ZWUuCgogICAgICAgIEFkZGVkIG5ldyBmaWxlcyBpbiBndGsvIGFuZCB1cGRhdGVkIHRoZSBjcm9z
cy1wbGF0Zm9ybSBvbmVzLgoKICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW06CiAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwOgogICAgICAgIChXVFIpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CiAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6IEFkZGVkLgogICAgICAgIChX
VFIpOgogICAgICAgIChXVFI6OmF0dHJpYnV0ZVNldFRvU3RyaW5nKToKICAgICAgICAoV1RSOjpj
aGVja0VsZW1lbnRTdGF0ZSk6CiAgICAgICAgKFdUUjo6aW5kZXhSYW5nZUluVGFibGUpOgogICAg
ICAgIChXVFI6OmFsdGVyQ3VycmVudFZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhPZkNoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CiAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3cpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgogICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlu
a3MpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNo
aWxkcmVuKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1
dGVzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1
dGVWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0
cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpib29sQXR0cmlidXRlVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN1YnJvbGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvbGVEZXNjcmlwdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGl0bGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9u
KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbik6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6eCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgpOgogICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgogICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnRWYWx1ZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWluVmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZh
bHVlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0
aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2lu
dExpbmVOdW1iZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0
aW9uU3VwcG9ydGVkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vu
YWJsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQp
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCk6CiAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCk6CiAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3BlYWspOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEcm9wRWZmZWN0cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZUZvckluZGV4KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5n
ZUZvckxpbmUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9y
UG9zaXRpb24pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0Zv
clJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JS
YW5nZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSk6CiAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6CiAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93
cyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlz
aWJsZUNlbGxzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZIZWFkZXIpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0Nv
dW50KToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KToKICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKToK
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2Up
OgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCk6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1cmwpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2FibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzU2VsZWN0YWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNNdWx0aVNlbGVjdGFibGUpOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNP
ZmZTY3JlZW4pOgogICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29sbGFw
c2VkKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQpOgog
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24pOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CiAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgogICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CiAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFy
a2Vycyk6CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgogICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6
CiAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIpOgogICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgoKICAgICAgICBBZGQgZG9j
dW1lbnRFbmNvZGluZyBhbmQgZG9jdW1lbnRVUkkgdG8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5p
ZGwuCgogICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKCjIwMTItMDYtMTUgIE1hcmlvIFNhbmNoZXogUHJh
ZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoKICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSwogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTIyMwoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgUmVtb3ZlZCBsaW5lcyBza2lwcGluZyBhbGwgdGhlIGFj
Y2Vzc2liaWxpdHkgdGVzdHMgYW5kIHJlcGxhY2UKICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCiAgICAgICAgYXJlIGp1
c3QgYSBmZXcgbm93LCBhbmQgd2lsbCBob3BlZnVsbHkgZ2V0IGZpeGVkIGxhdGVyIG9uLgoKICAg
ICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNraXBw
ZWQgdGVzdHMuCgogICAgICAgIFVwZGF0ZWQgdHdvIGxheW91dCB0ZXN0cyB0byBjb25zaWRlciBu
dWxscywgc29tZXRoaW5nIHRoYXQgZGlkbid0CiAgICAgICAgaGFwcGVuIHdpdGggRHVtcFJlbmRl
clRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgoKICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sOiBVcGRhdGUgdGVzdC4KICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCi0tLQogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbC1zcGFucy5odG1sICAgIHwgICAgNSArLQogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxscy5odG1sICAgICAgICAgfCAgIDEyICst
CiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQgICAgICAgICAgICAgICB8ICAg
NDQgKy0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDE1MSArKysKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gICAgICAg
ICAgICAgIHwgICAgMSArCiAuLi4vSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAgICAgICB8ICAgIDIgKy0KIC4uLi9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggICAgICAgIHwgICAgMyArCiAuLi4vQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5pZGwgICAgICAgICAgICB8ICAgIDQgKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50R3RrLmNwcCAgICAgICAgICAgICAgfCAgOTYzICsrKysrKysrKysrKysrKysrKysrCiAxMCBm
aWxlcyBjaGFuZ2VkLCAxMTk1IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWM2Zjc0Zi4uYTE1MTQ4MiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTE1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0syXVtHVEtdIEltcGxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50IGluIFdLVFIgZm9yIEdUSworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIGxpbmVzIHNraXBwaW5nIGFsbCB0aGUgYWNj
ZXNzaWJpbGl0eSB0ZXN0cyBhbmQgcmVwbGFjZQorICAgICAgICB0aGVtIHdpdGggdGhlIHNwZWNp
ZmljIG9uZXMgdGhhdCBhcmUgc3RpbGwgbm90IHBhc3NpbmcsIHdoaWNoCisgICAgICAgIGFyZSBq
dXN0IGEgZmV3IG5vdywgYW5kIHdpbGwgaG9wZWZ1bGx5IGdldCBmaXhlZCBsYXRlciBvbi4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBlZDogUmVkdWNlIHRoZSBsaXN0IG9mIHNr
aXBwZWQgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlZCB0d28gbGF5b3V0IHRlc3RzIHRvIGNvbnNp
ZGVyIG51bGxzLCBzb21ldGhpbmcgdGhhdCBkaWRuJ3QKKyAgICAgICAgaGFwcGVuIHdpdGggRHVt
cFJlbmRlclRyZWUsIGJ1dCB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgbm93LgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLmh0bWw6IFVwZGF0ZSB0ZXN0LgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRtbDogVXBkYXRlIHRlc3QuCisKIDIwMTIt
MDYtMTggIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGZh
c3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2Igc2hvdWxkIHVzZSBvdGhlciBmaWxlL2Jsb2IgdHlw
ZSB0aGFuIGphdmFzY3JpcHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
dGFibGUtY2VsbC1zcGFucy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1j
ZWxsLXNwYW5zLmh0bWwKaW5kZXggMTgxMDJjOC4uNWFiOTYwNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1jZWxsLXNwYW5zLmh0bWwKQEAgLTc2LDggKzc2LDkgQEAK
ICAgICAgICAgICAgIGNlbGwgPSB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEwLDEwKTsgCiAg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4i
OwogICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAieyAxMCwgMTAgfVxuIjsKLSAgICAg
ICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gY2VsbC5hbGxBdHRyaWJ1dGVzKCkgKyAiXG4iOwot
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSBjZWxsLnJvd0luZGV4UmFuZ2UoKSArICIs
ICIgKyBjZWxsLmNvbHVtbkluZGV4UmFuZ2UoKSAgKyAiXG5cbiI7IAorICAgICAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCArPSAoY2VsbCAhPSBudWxsID8gY2VsbC5hbGxBdHRyaWJ1dGVzKCkgOiAi
IikgKyAiXG4iOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSBjZWxsICE9IG51bGwg
PyBjZWxsLnJvd0luZGV4UmFuZ2UoKSA6ICJ7MCwgMH0iOworICAgICAgICAgICAgcmVzdWx0Lmlu
bmVyVGV4dCArPSAiLCAiICsgKGNlbGwgIT0gbnVsbCA/IGNlbGwuY29sdW1uSW5kZXhSYW5nZSgp
IDogInswLCAwfSIpICsgIlxuXG4iOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxzLmh0bWwKaW5kZXggZjI3ODll
NS4uYTMxYjIwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1j
ZWxscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMuaHRt
bApAQCAtNjksOSArNjksMTUgQEAKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsgCiAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0
ICs9ICJbMyw1XVxuIiArIHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMyw1KS5hbGxBdHRyaWJ1
dGVzKCkgKyAiXG4iOyAKICAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQgKz0gIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVxuIjsgCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJb
MTAwLDBdXG4iICsgdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxMDAsMCkuYWxsQXR0cmlidXRl
cygpICsgIlxuIjsgCi0gICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiI7IAotICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzAs
MTAwXVxuIiArIHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwxMDApLmFsbEF0dHJpYnV0ZXMo
KSArICJcbiI7IAorICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCArPSAiWzEwMCwwXVxuIjsK
KyAgICAgICAgICAgIG91dE9mUmFuZ2VDZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygx
MDAsMCk7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9IG91dE9mUmFuZ2VDZWxsICE9
IG51bGwgPyBvdXRPZlJhbmdlQ2VsbC5hbGxBdHRyaWJ1dGVzKCkgOiAiIjsKKyAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgKz0gIlxuIjsKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lclRleHQg
Kz0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKyAgICAgICAgICAgIG91dE9mUmFuZ2VD
ZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLDEwMCk7CisgICAgICAgICAgICByZXN1
bHQuaW5uZXJUZXh0ICs9ICJbMCwxMDBdXG4iOworICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4
dCArPSBvdXRPZlJhbmdlQ2VsbCAhPSBudWxsID8gb3V0T2ZSYW5nZUNlbGwuYWxsQXR0cmlidXRl
cygpIDogIiI7CisgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ICs9ICJcbiI7CiAgICAgICAg
IH0KICAgICA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBl
ZAppbmRleCAxNDYwZjU0Li4yZTM2ZmVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGstd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lw
cGVkCkBAIC04Myw2ICs4Myw0MSBAQCBlZGl0aW5nL2lucHV0L2VtYWNzLWN0cmwtby5odG1sCiAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTUxMgogcGx1Z2lucy9k
ZXN0cm95LWR1cmluZy1ucHAtbmV3Lmh0bWwKIAorIyBhY2Nlc3NpYmlsaXR5IHRlc3RzIGZhaWxp
bmcgaW4gV0sxIGJ1dCBjcmFzaGluZyBpbiBXSzIKK2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4t
d2l0aC1lbGVtZW50cy5odG1sCithY2Nlc3NpYmlsaXR5L2lubGluZS1jb250aW51YXRpb25zLmh0
bWwKK2FjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJhbWUtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwK
K3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2lucHV0LXNsaWRlci5odG1sCisKKyMgYWNjZXNz
aWJpbGl0eSB0ZXN0cyBwYXNzaW5nIGluIFdLMSBidXQgY3Jhc2hpbmcgaW4gV0syCithY2Nlc3Np
YmlsaXR5L2FjY2Vzc2liaWxpdHktb2JqZWN0LWRldGFjaGVkLmh0bWwKK2FjY2Vzc2liaWxpdHkv
YWRqYWNlbnQtY29udGludWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS5odG1sCithY2Nl
c3NpYmlsaXR5L2Fub255bW91cy1yZW5kZXItYmxvY2staW4tY29udGludWF0aW9uLWNhdXNlcy1j
cmFzaC5odG1sCithY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXVwZGF0ZXMtYWxsZGVzY2VuZGFu
dHMuaHRtbAorYWNjZXNzaWJpbGl0eS9hcmlhLW1lbnViYXItbWVudWl0ZW1zLmh0bWwKK2FjY2Vz
c2liaWxpdHkvY29udGVudC1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1jYXVzZXMtY3Jhc2guaHRtbAor
YWNjZXNzaWJpbGl0eS9jcmFzaC1kZXRlcm1pbmluZy1hcmlhLXJvbGUtd2hlbi1sYWJlbC1wcmVz
ZW50Lmh0bWwKK2FjY2Vzc2liaWxpdHkvZGVsZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUu
aHRtbAorYWNjZXNzaWJpbGl0eS9kaXYtd2l0aGluLWFuY2hvcnMtY2F1c2VzLWNyYXNoLmh0bWwK
K2FjY2Vzc2liaWxpdHkvZHVwbGljYXRlLWNoaWxkLW5vZGVzLmh0bWwKK2FjY2Vzc2liaWxpdHkv
Zmlyc3QtbGV0dGVyLXRleHQtdHJhbnNmb3JtLWNhdXNlcy1jcmFzaC5odG1sCithY2Nlc3NpYmls
aXR5L2lmcmFtZS1iYXN0YXJkaXphdGlvbi5odG1sCithY2Nlc3NpYmlsaXR5L2lnbm9yZS1zcGFj
ZXItZWxlbWVudHMuaHRtbAorYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWlubGluZS1jb250Lmh0
bWwKK2FjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXRpdGxlLWNhdXNlcy1jcmFzaC5odG1sCithY2Nl
c3NpYmlsaXR5L2ltYWdlLW1hcC11cGRhdGUtcGFyZW50LWNyYXNoLmh0bWwKK2FjY2Vzc2liaWxp
dHkvaW1nLWFsdC10YWctb25seS13aGl0ZXNwYWNlLmh0bWwKK2FjY2Vzc2liaWxpdHkvaW1nLWFy
aWEtYnV0dG9uLWFsdC10YWcuaHRtbAorYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50Lmh0bWwK
K2FjY2Vzc2liaWxpdHkvcHJlc2VudGF0aW9uYWwtZWxlbWVudHMtd2l0aC1mb2N1cy5odG1sCith
Y2Nlc3NpYmlsaXR5L3JlbW92ZWQtYW5vbnltb3VzLWJsb2NrLWNoaWxkLWNhdXNlcy1jcmFzaC5o
dG1sCithY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtZW1wdHktdGhlYWQtY2F1c2VzLWNyYXNoLmh0
bWwKK3BsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtbGlzdC1hbmQtbGlzdGl0ZW0uaHRt
bAorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxpdHkvYXJpYS1vcHRpb24tcm9sZS5odG1sCitwbGF0
Zm9ybS9ndGsvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWhpZXJhcmNoeS5odG1sCitwbGF0Zm9y
bS9ndGsvYWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAorcGxhdGZvcm0vZ3RrL2FjY2Vz
c2liaWxpdHkvdGFibGUtaGllcmFyY2h5Lmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
IyBFWFBFQ1RFRCBGQUlMVVJFUwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjY5LDkgKzMw
NCwxMiBAQCBodHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWwKICMgZXZlbnRT
ZW5kZXIuc2NoZWR1bGVBc3luY2hyb25vdXNDbGljayBzdXBwb3J0CiBmYXN0L2V2ZW50cy9wb3B1
cC1ibG9ja2luZy1jbGljay1pbi1pZnJhbWUuaHRtbAogCi0jIEltcGxlbWVudCBhY2Nlc3NpYmls
aXR5IHN1cHBvcnQgZm9yIFdlYktpdDIKLWFjY2Vzc2liaWxpdHkKLXBsYXRmb3JtL2d0ay9hY2Nl
c3NpYmlsaXR5CisjIGFjY2Vzc2liaWxpdHkgdGVzdHMgZmFpbGluZyBkdWUgdG8gbWlzc2luZyBX
S1RSIGZlYXR1cmVzCithY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRt
bAorYWNjZXNzaWJpbGl0eS9hcmlhLWhlbHAuaHRtbAorcGxhdGZvcm0vZ3RrL2FjY2Vzc2liaWxp
dHkvYXJpYS1zbGlkZXItcmVxdWlyZWQtYXR0cmlidXRlcy5odG1sCitwbGF0Zm9ybS9ndGsvYWNj
ZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy10ZXh0LWZvY3VzLmh0bWwKK3BsYXRmb3JtL2d0ay9h
Y2Nlc3NpYmlsaXR5L2NvbWJvLWJveC1jb2xsYXBzZWQtc2VsZWN0aW9uLWNoYW5nZWQuaHRtbAog
CiAjIEltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlIGludGVyZmFjZQogZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3Vu
ZGFyeS5odG1sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZTFlODc3Yy4uOWQxMTU3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAxMi0wNi0xNSAgTWFyaW8gU2Fu
Y2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dLMl1bR1RLXSBJ
bXBsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEsKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBpbiBXS1RSIGZvciBHVEssIGJhc2VkIGluIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiBwcmVzZW50IGluIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgIEFkZGVk
IG5ldyBmaWxlcyBpbiBndGsvIGFuZCB1cGRhdGVkIHRoZSBjcm9zcy1wbGF0Zm9ybSBvbmVzLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV1RSKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAg
ICAgIChXVFI6OmF0dHJpYnV0ZVNldFRvU3RyaW5nKToKKyAgICAgICAgKFdUUjo6Y2hlY2tFbGVt
ZW50U3RhdGUpOgorICAgICAgICAoV1RSOjppbmRleFJhbmdlSW5UYWJsZSk6CisgICAgICAgIChX
VFI6OmFsdGVyQ3VycmVudFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmRleE9mQ2hpbGQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJ
RWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mQ2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0
ZU5hbWVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Omxhbmd1YWdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGVscFRleHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2xpY2tQb2ludFgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
bGlja1BvaW50WSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZh
bHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3BlYWspOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhSXNHcmFiYmVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYURyb3BFZmZlY3RzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bGluZUZvckluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFu
Z2VGb3JMaW5lKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VG
b3JQb3NpdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5k
c0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
Rm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93
SGVhZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkNvbHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93Q291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpjb2x1bW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
ZGV4SW5UYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0lu
ZGV4UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5J
bmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZv
ckNvbHVtbkFuZFJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhv
cml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkZWNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
aG93TWVudSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2Rp
bmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlz
dGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGFrZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFkZFNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorCisgICAgICAgIEFk
ZCBkb2N1bWVudEVuY29kaW5nIGFuZCBkb2N1bWVudFVSSSB0byBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGw6CisKIDIwMTItMDYtMTggIE1hcmlvIFNh
bmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEdldCBy
aWQgb2YgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp7aW58ZGV9Y3JlbWVudEFjY2Vzc2liaWxp
dHlWYWx1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggNTQ2OTYxMy4u
YTI1NWY2NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5
NCw3IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9
IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0Nv
bnRyb2xsZXIuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dD
Q29udHJvbGxlci5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250c0d0ay5jcHAgXAogCVRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlR3RrLmNwcCBcCiAJ
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDdjMDYy
MzcuLjQyZTI1NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogfQog
ICAgIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhl
eSdyZSBpbXBsZW1lbnRlZCBvbiBvdGhlciBwbGF0Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBt
b2RpZmllZC4KLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFU
Rk9STShHVEspCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KFBsYXRmb3JtVUlFbGVtZW50KSB7IH0KIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpIHsgfQogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKSB7IH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgKaW5kZXggNjk3OTE4Zi4uNTUxZjU5MSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKQEAgLTI0Myw2ICsyNDMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBn
ZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiYpOwogICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+ID4mKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShHVEspCiAgICAgdm9pZCBnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+ID4mKTsKICAgICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmlkbAppbmRleCBhMWU4YTA2Li4zMTJhMWUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAgLTI4LDYgKzI4LDEwIEBAIG1vZHVsZSBX
VFIgewogICAgIGludGVyZmFjZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHsKICAgICAgICAgYm9v
bGVhbiBpc0VxdWFsKGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgb3RoZXJFbGVtZW50KTsKIAor
ICAgICAgICAvLyBEb2N1bWVudCBpbmZvcm1hdGlvbgorICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGRvY3VtZW50RW5jb2Rpbmc7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgZG9jdW1lbnRVUkk7CisKICAgICAgICAgLy8gRWxlbWVudCBhY2Nlc3MuCiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZWxlbWVudEF0UG9pbnQoaW4gaW50IHgsIGlu
IGludCB5KTsKICAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBjaGlsZEF0SW5kZXgoaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTJiYjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcApAQCAtMCwwICsxLDk2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdSZWYuaD4KKyNpbmNsdWRlIDxhdGsvYXRrLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdUUiB7CisK
K3N0YXRpYyBnY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRy
aWJ1dGVTZXQpCit7CisgICAgR1N0cmluZyogc3RyID0gZ19zdHJpbmdfbmV3KDApOworICAgIGZv
ciAoR1NMaXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IHN0YXRpY19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAg
ICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFt
ZSwgIjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CisgICAgICAgIGdfc3RyaW5nX2FwcGVu
ZChzdHIsIGF0dHJpYnV0ZURhdGEuZ2V0KCkpOworICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4
dCkKKyAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsICIsICIpOworICAgIH0KKworICAg
IHJldHVybiBnX3N0cmluZ19mcmVlKHN0ciwgRkFMU0UpOworfQorCitzdGF0aWMgYm9vbCBjaGVj
a0VsZW1lbnRTdGF0ZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBBdGtTdGF0ZVR5cGUgc3Rh
dGVUeXBlKQoreworICAgIGlmICghQVRLX0lTX09CSkVDVChlbGVtZW50KSkKKyAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEdSZWZQdHI8QXRrU3RhdGVTZXQ+IHN0YXRlU2V0ID0gYWRvcHRH
UmVmKGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChBVEtfT0JKRUNUKGVsZW1lbnQpKSk7CisgICAg
cmV0dXJuIGF0a19zdGF0ZV9zZXRfY29udGFpbnNfc3RhdGUoc3RhdGVTZXQuZ2V0KCksIHN0YXRl
VHlwZSk7Cit9CisKK3N0YXRpYyBKU1N0cmluZ1JlZiBpbmRleFJhbmdlSW5UYWJsZShQbGF0Zm9y
bVVJRWxlbWVudCBlbGVtZW50LCBib29sIGlzUm93UmFuZ2UpCit7CisgICAgR093blB0cjxnY2hh
cj4gcmFuZ2VTdHJpbmcoZ19zdHJkdXAoInswLCAwfSIpKTsKKworICAgIGlmICghZWxlbWVudCB8
fCAhQVRLX0lTX09CSkVDVChlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKKworICAgIEF0a09iamVjdCogYXhU
YWJsZSA9IGF0a19vYmplY3RfZ2V0X3BhcmVudChBVEtfT0JKRUNUKGVsZW1lbnQpKTsKKyAgICBp
ZiAoIWF4VGFibGUgfHwgIUFUS19JU19UQUJMRShheFRhYmxlKSkKKyAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKKworICAgIC8v
IExvb2sgZm9yIHRoZSBjZWxsIGluIHRoZSB0YWJsZS4KKyAgICBnaW50IGluZGV4SW5QYXJlbnQg
PSBhdGtfb2JqZWN0X2dldF9pbmRleF9pbl9wYXJlbnQoQVRLX09CSkVDVChlbGVtZW50KSk7Cisg
ICAgaWYgKGluZGV4SW5QYXJlbnQgPT0gLTEpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CisKKyAgICBpbnQgcm93ID0gLTE7
CisgICAgaW50IGNvbHVtbiA9IC0xOworICAgIHJvdyA9IGF0a190YWJsZV9nZXRfcm93X2F0X2lu
ZGV4KEFUS19UQUJMRShheFRhYmxlKSwgaW5kZXhJblBhcmVudCk7CisgICAgY29sdW1uID0gYXRr
X3RhYmxlX2dldF9jb2x1bW5fYXRfaW5kZXgoQVRLX1RBQkxFKGF4VGFibGUpLCBpbmRleEluUGFy
ZW50KTsKKworICAgIC8vIEdldCB0aGUgYWN0dWFsIHZhbHVlcywgaWYgcm93IGFuZCBjb2x1bW5z
IGFyZSB2YWxpZCB2YWx1ZXMuCisgICAgaWYgKHJvdyAhPSAtMSAmJiBjb2x1bW4gIT0gLTEpIHsK
KyAgICAgICAgaW50IGJhc2UgPSAwOworICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAg
aWYgKGlzUm93UmFuZ2UpIHsKKyAgICAgICAgICAgIGJhc2UgPSByb3c7CisgICAgICAgICAgICBs
ZW5ndGggPSBhdGtfdGFibGVfZ2V0X3Jvd19leHRlbnRfYXQoQVRLX1RBQkxFKGF4VGFibGUpLCBy
b3csIGNvbHVtbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBiYXNlID0gY29sdW1u
OworICAgICAgICAgICAgbGVuZ3RoID0gYXRrX3RhYmxlX2dldF9jb2x1bW5fZXh0ZW50X2F0KEFU
S19UQUJMRShheFRhYmxlKSwgcm93LCBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIHJhbmdl
U3RyaW5nLnNldChnX3N0cmR1cF9wcmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3Ry
aW5nLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgYWx0ZXJDdXJyZW50VmFsdWUoUGxhdGZvcm1V
SUVsZW1lbnQgZWxlbWVudCwgaW50IGZhY3RvcikKK3sKKyAgICBpZiAoIWVsZW1lbnQgfHwgIUFU
S19JU19WQUxVRShlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1ZhbHVlIGN1cnJl
bnRWYWx1ZSA9IEdfVkFMVUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUo
QVRLX1ZBTFVFKGVsZW1lbnQpLCAmY3VycmVudFZhbHVlKTsKKworICAgIEdWYWx1ZSBpbmNyZW1l
bnQgPSBHX1ZBTFVFX0lOSVQ7CisgICAgYXRrX3ZhbHVlX2dldF9taW5pbXVtX2luY3JlbWVudChB
VEtfVkFMVUUoZWxlbWVudCksICZpbmNyZW1lbnQpOworCisgICAgR1ZhbHVlIG5ld1ZhbHVlID0g
R19WQUxVRV9JTklUOworICAgIGdfdmFsdWVfaW5pdCgmbmV3VmFsdWUsIEdfVFlQRV9ET1VCTEUp
OworCisgICAgZ192YWx1ZV9zZXRfZmxvYXQoJm5ld1ZhbHVlLCBnX3ZhbHVlX2dldF9mbG9hdCgm
Y3VycmVudFZhbHVlKSArIGZhY3RvciAqIGdfdmFsdWVfZ2V0X2Zsb2F0KCZpbmNyZW1lbnQpKTsK
KyAgICBhdGtfdmFsdWVfc2V0X2N1cnJlbnRfdmFsdWUoQVRLX1ZBTFVFKGVsZW1lbnQpLCAmbmV3
VmFsdWUpOworCisgICAgZ192YWx1ZV91bnNldCgmbmV3VmFsdWUpOworICAgIGdfdmFsdWVfdW5z
ZXQoJmluY3JlbWVudCk7CisgICAgZ192YWx1ZV91bnNldCgmY3VycmVudFZhbHVlKTsKK30KKwor
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJ
RWxlbWVudCBlbGVtZW50KQorICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCit7Cit9CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCYgb3RoZXIpCisgICAgOiBKU1dyYXBwYWJsZSgpCisgICAgLCBtX2VsZW1l
bnQob3RoZXIubV9lbGVtZW50KQoreworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpCit7CisgICAg
cmV0dXJuIG1fZWxlbWVudCA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBjaGlsZHJlbikKK3sKKyAgICBpZiAoIW1fZWxl
bWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbnQgY291bnQgPSBjaGlsZHJlbkNvdW50KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7CisgICAgICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKEFUS19PQkpFQ1QobV9lbGVtZW50KSwgaSk7CisgICAgICAgIGNoaWxk
cmVuLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY2hpbGQpKTsKKyAgICB9
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2Uo
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBjaGlsZHJlbiwgdW5zaWdu
ZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAh
QVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQg
ZW5kID0gbG9jYXRpb24gKyBsZW5ndGg7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbG9jYXRpb247
IGkgPCBlbmQ7IGkrKykgeworICAgICAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChBVEtfT0JKRUNUKG1fZWxlbWVudCksIGkpOworICAgICAgICBj
aGlsZHJlbi5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNoaWxkKSk7Cisg
ICAgfQorfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7
CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOwor
ICAgIGdldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICByZXR1cm4gY2hpbGRyZW4uc2l6ZSgpOwor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gLTE7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4
KHVuc2lnbmVkIGluZGV4KQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gPiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbldpdGhSYW5nZShjaGlsZHJlbiwgaW5k
ZXgsIDEpOworCisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4g
Y2hpbGRyZW5bMF07CisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1Rv
RWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5k
ZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJv
d0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwordW5z
aWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQorewor
ICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgQXRrT2JqZWN0KiBwYXJlbnQgPSAgYXRrX29iamVjdF9nZXRfcGFy
ZW50KEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgcmV0dXJuIHBhcmVudCA/IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShwYXJlbnQpIDogMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJv
dygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
TGlua2VkVUlFbGVtZW50cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRM
aW5rcygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNf
T0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworCisgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShhdHRyaWJ1
dGVTZXRUb1N0cmluZyhhdGtfb2JqZWN0X2dldF9hdHRyaWJ1dGVzKEFUS19PQkpFQ1QobV9lbGVt
ZW50KSkpKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXR0cmli
dXRlRGF0YS5nZXQoKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMC4wZjsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
YW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKK3sKKyAg
ICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEF0a1JvbGUg
cm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBp
ZiAoIXJvbGUpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworCisgICAgY29uc3QgZ2NoYXIqIHJvbGVOYW1lID0gYXRrX3JvbGVfZ2V0X25hbWUocm9s
ZSk7CisgICAgR093blB0cjxnY2hhcj4gYXhSb2xlKGdfc3RyZHVwX3ByaW50ZigiQVhSb2xlOiAl
cyIsIHJvbGVOYW1lKSk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoYXhSb2xlLmdldCgpKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlv
bigpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFB
VEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBhdGtfb2JqZWN0
X2dldF9uYW1lKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKCFuYW1lKQorICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEdPd25Q
dHI8Z2NoYXI+IGF4VGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJBWFRpdGxlOiAlcyIsIG5hbWUpKTsK
KworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhheFRpdGxlLmdldCgp
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRlc2NyaXB0aW9uKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVCht
X2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKKworICAgIGNvbnN0IGdjaGFyKiBkZXNjcmlwdGlvbiA9IGF0a19vYmplY3RfZ2V0X2Rl
c2NyaXB0aW9uKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKCFkZXNjcmlwdGlvbikK
KyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAg
ICBHT3duUHRyPGdjaGFyPiBheERlc2MoZ19zdHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0aW9uOiAl
cyIsIGRlc2NyaXB0aW9uKSk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoYXhEZXNjLmdldCgpKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdWYWx1ZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAw
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgLy8gV2Ug
bmVlZCBhIHdheSB0byBjYWxsIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlbHBUZXh0
KCkKKyAgICAvLyBmcm9tIGhlcmUsIHByb2JhYmx5IGEgbmV3IGhlbHBlciBjbGFzcyBpbiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0LgorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCit7
CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAg
ICAgcmV0dXJuIDAuMGY7CisKKyAgICBpbnQgeCwgeTsKKyAgICBhdGtfY29tcG9uZW50X2dldF9w
b3NpdGlvbihBVEtfQ09NUE9ORU5UKG1fZWxlbWVudCksICZ4LCAmeSwgQVRLX1hZX1NDUkVFTik7
CisgICAgcmV0dXJuIHg7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkK
K3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAg
ICAgICByZXR1cm4gMC4wZjsKKworICAgIGludCB4LCB5OworICAgIGF0a19jb21wb25lbnRfZ2V0
X3Bvc2l0aW9uKEFUS19DT01QT05FTlQobV9lbGVtZW50KSwgJngsICZ5LCBBVEtfWFlfU0NSRUVO
KTsKKyAgICByZXR1cm4geTsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Ondp
ZHRoKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQp
KQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIGludCB3aWR0aCwgaGVpZ2h0OworICAgIGF0
a19jb21wb25lbnRfZ2V0X3NpemUoQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmd2lkdGgsICZo
ZWlnaHQpOworICAgIHJldHVybiB3aWR0aDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmhlaWdodCgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1Qo
bV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBpbnQgd2lkdGgsIGhlaWdo
dDsKKyAgICBhdGtfY29tcG9uZW50X2dldF9zaXplKEFUS19DT01QT05FTlQobV9lbGVtZW50KSwg
JndpZHRoLCAmaGVpZ2h0KTsKKyAgICByZXR1cm4gaGVpZ2h0OworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gMC4wZjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRZKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDAu
MGY7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAg
ICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBHVmFsdWUgdmFsdWUgPSBHX1ZBTFVFX0lOSVQ7Cisg
ICAgYXRrX3ZhbHVlX2dldF9jdXJyZW50X3ZhbHVlKEFUS19WQUxVRShtX2VsZW1lbnQpLCAmdmFs
dWUpOworICAgIGlmICghR19WQUxVRV9IT0xEU19GTE9BVCgmdmFsdWUpKQorICAgICAgICByZXR1
cm4gMC4wZjsKKworICAgIHJldHVybiBnX3ZhbHVlX2dldF9mbG9hdCgmdmFsdWUpOworfQorCitk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQoreworICAgIGlmICghbV9l
bGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBm
OworCisgICAgR1ZhbHVlIHZhbHVlID0gR19WQUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRf
bWluaW11bV92YWx1ZShBVEtfVkFMVUUobV9lbGVtZW50KSwgJnZhbHVlKTsKKyAgICBpZiAoIUdf
VkFMVUVfSE9MRFNfRkxPQVQoJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBy
ZXR1cm4gZ192YWx1ZV9nZXRfZmxvYXQoJnZhbHVlKTsKK30KKworZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lT
X09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIEdWYWx1ZSB2
YWx1ZSA9IEdfVkFMVUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0X21heGltdW1fdmFsdWUoQVRL
X1ZBTFVFKG1fZWxlbWVudCksICZ2YWx1ZSk7CisgICAgaWYgKCFHX1ZBTFVFX0hPTERTX0ZMT0FU
KCZ2YWx1ZSkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgcmV0dXJuIGdfdmFsdWVfZ2V0
X2Zsb2F0KCZ2YWx1ZSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisK
K2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYWN0aW9u
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gY2hl
Y2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfRU5BQkxFRCk7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0ZvY3VzZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1lbnRT
dGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9GT0NVU0VEKTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tFbGVt
ZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfU0VMRUNURUQpOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVj
a0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9FWFBBTkRFRCk7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfQ0hFQ0tFRCk7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWsoKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURy
b3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKKy8vIHBhcmFtZXRlcml6
ZWQgYXR0cmlidXRlcworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChp
bnQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VG
b3JMaW5lKGludCBsaW5lKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24oaW50IHgs
IGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9u
LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UodW5zaWdu
ZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVk
U3RyaW5nRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3Rh
cnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNTdHJpbmdSZWYgc2VhcmNoS2V5LCBK
U1N0cmluZ1JlZiBzZWFyY2hUZXh0KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZlJvd0hlYWRlcnMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMo
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3MoKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVh
ZGVyKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dDb3VudCgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19UQUJMRShtX2Vs
ZW1lbnQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBhdGtfdGFibGVfZ2V0X25f
cm93cyhBVEtfVEFCTEUobV9lbGVtZW50KSk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5Db3VudCgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19UQUJM
RShtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBhdGtfdGFibGVf
Z2V0X25fY29sdW1ucyhBVEtfVEFCTEUobV9lbGVtZW50KSk7Cit9CisKK2ludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICByZXR1cm4gLTE7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICAvLyBSYW5nZSBpbiB0YWJsZSBm
b3Igcm93cy4KKyAgICByZXR1cm4gaW5kZXhSYW5nZUluVGFibGUobV9lbGVtZW50LCB0cnVlKTsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkluZGV4UmFuZ2UoKQoreworICAgIC8vIFJhbmdlIGluIHRhYmxlIGZvciBjb2x1bW5zLgor
ICAgIHJldHVybiBpbmRleFJhbmdlSW5UYWJsZShtX2VsZW1lbnQsIGZhbHNlKTsKK30KKworUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbCwgdW5zaWduZWQgcm93KQoreworICAgIGlm
ICghbV9lbGVtZW50IHx8ICFBVEtfSVNfVEFCTEUobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBBdGtPYmplY3QqIGZvdW5kQ2VsbCA9IGF0a190YWJsZV9yZWZfYXQoQVRLX1RB
QkxFKG1fZWxlbWVudCksIHJvdywgY29sKTsKKyAgICByZXR1cm4gZm91bmRDZWxsID8gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGZvdW5kQ2VsbCkgOiAwOworfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRS
YW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQo
KQoreworICAgIGFsdGVyQ3VycmVudFZhbHVlKG1fZWxlbWVudCwgMSk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KCkKK3sKKyAgICBhbHRlckN1cnJlbnRWYWx1
ZShtX2VsZW1lbnQsIC0xKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93
TWVudSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXNzKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09C
SkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUFUS19JU19BQ1RJ
T04obV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gT25seSBvbmUgYWN0aW9u
IHBlciBvYmplY3QgaXMgc3VwcG9ydGVkIHNvIGZhci4KKyAgICBhdGtfYWN0aW9uX2RvX2FjdGlv
bihBVEtfQUNUSU9OKG1fZWxlbWVudCksIDApOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQoreworICAgIGlmICghbV9lbGVt
ZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUm9sZSByb2xlID0gYXRrX29i
amVjdF9nZXRfcm9sZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmIChyb2xlICE9IEFU
S19ST0xFX0RPQ1VNRU5UX0ZSQU1FKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhhdGtfZG9jdW1lbnRfZ2V0X2F0dHJpYnV0ZV92YWx1ZShBVEtfRE9DVU1FTlQobV9lbGVt
ZW50KSwgIkVuY29kaW5nIikpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8
ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUm9sZSByb2xlID0gYXRrX29iamVjdF9n
ZXRfcm9sZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmIChyb2xlICE9IEFUS19ST0xF
X0RPQ1VNRU5UX0ZSQU1FKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCAwKTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
dGtfZG9jdW1lbnRfZ2V0X2F0dHJpYnV0ZV92YWx1ZShBVEtfRE9DVU1FTlQobV9lbGVtZW50KSwg
IlVSSSIpKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVybCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxs
YmFjaykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIo
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0ZPQ1VTQUJMRSk7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfU0VMRUNU
QUJMRSk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFi
bGUoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFU
S19TVEFURV9NVUxUSVNFTEVDVEFCTEUpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1f
ZWxlbWVudCwgQVRLX1NUQVRFX1ZJU0lCTEUpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzT2ZmU2NyZWVuKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ29s
bGFwc2VkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0YWtlRm9jdXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbigpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30K
KworLy8gVGV4dCBtYXJrZXJzCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1Rl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdl
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiByYW5nZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5n
ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBtYXJrZXIpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiAtMTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJW
YWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5k
ZXgoaW50IHRleHRJbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IDA7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV1RSCi0tIAoxLjcuMTAuMgoK
</data>
<flag name="review"
          id="155708"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>