<?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>78257</bug_id>
          
          <creation_ts>2012-02-09 11:22:03 -0800</creation_ts>
          <short_desc>Use underlying property set to refcount PropertySetCSSStyleDeclaration</short_desc>
          <delta_ts>2012-04-11 20:51:41 -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>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553350</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-09 11:22:03 -0800</bug_when>
    <thetext>StylePropertySetCSSStyleDeclaration refcounting can be done in a cleaner way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553551</commentid>
    <comment_count>1</comment_count>
      <attachid>126383</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-09 15:13:08 -0800</bug_when>
    <thetext>Created attachment 126383
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553599</commentid>
    <comment_count>2</comment_count>
      <attachid>126383</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-09 16:14:26 -0800</bug_when>
    <thetext>Comment on attachment 126383
patch

Attachment 126383 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11473424</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553603</commentid>
    <comment_count>3</comment_count>
      <attachid>126402</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-09 16:21:21 -0800</bug_when>
    <thetext>Created attachment 126402
try to fix qt build, other cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553606</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 16:24:27 -0800</bug_when>
    <thetext>Attachment 126402 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleDeclaration.h:39:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553664</commentid>
    <comment_count>5</comment_count>
      <attachid>126402</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-09 18:00:23 -0800</bug_when>
    <thetext>Comment on attachment 126402
try to fix qt build, other cleanups

Attachment 126402 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11484444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553700</commentid>
    <comment_count>6</comment_count>
      <attachid>126402</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-09 18:25:51 -0800</bug_when>
    <thetext>Comment on attachment 126402
try to fix qt build, other cleanups

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

TD;DR

&gt; Source/WebCore/css/StylePropertySet.cpp:50
&gt; +    PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }

explicit

&gt; Source/WebCore/css/StylePropertySet.h:170
&gt; -    mutable RefPtr&lt;PropertySetCSSStyleDeclaration&gt; m_cssStyleDeclaration;
&gt; +    mutable OwnPtr&lt;PropertySetCSSStyleDeclaration&gt; m_cssStyleDeclaration;

We should move this to a hashmap and have a bit for &quot;has CSSOM object&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553771</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-09 20:25:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; TD;DR

TD?
 
&gt; explicit

How explicit?

&gt; We should move this to a hashmap and have a bit for &quot;has CSSOM object&quot;

Sure Sherlock, but not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553778</commentid>
    <comment_count>8</comment_count>
      <attachid>126444</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-09 20:36:44 -0800</bug_when>
    <thetext>Created attachment 126444
still fixing qt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553779</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 20:39:28 -0800</bug_when>
    <thetext>Attachment 126444 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleDeclaration.h:39:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553931</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-10 01:11:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; TD;DR
&gt; 
&gt; TD?

Too drunk; didn&apos;t review. :/

&gt; &gt; explicit
&gt; 
&gt; How explicit?

I meant you should make this constructor explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553939</commentid>
    <comment_count>11</comment_count>
      <attachid>126444</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-10 01:19:38 -0800</bug_when>
    <thetext>Comment on attachment 126444
still fixing qt build

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.h:48
&gt; +class CSSComputedStyleDeclaration : public CSSStyleDeclaration, private WTF::RefCountedBase {

Why do we need to inherit from RefCountedBase here?
Shadowing ref() and deref() in RefCountedBase with overridden virtuals from CSSStyleDeclaration is a little confusing and the ChangeLog doesn&apos;t explain what&apos;s going on.

&gt; Source/WebCore/css/StylePropertySet.cpp:50
&gt; +    PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }

explicit PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }
Because you&apos;re worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554118</commentid>
    <comment_count>12</comment_count>
      <attachid>126525</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-10 09:35:21 -0800</bug_when>
    <thetext>Created attachment 126525
refcount by hand instead of calling to RefCountedBase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554119</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-10 09:36:00 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebCore/css/StylePropertySet.cpp:50
&gt; &gt; +    PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }
&gt; 
&gt; explicit PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }
&gt; Because you&apos;re worth it.

I don&apos;t see what value that would add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554121</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 09:36:51 -0800</bug_when>
    <thetext>Attachment 126525 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleDeclaration.h:39:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554165</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-10 10:23:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/107407</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126383</attachid>
            <date>2012-02-09 15:13:08 -0800</date>
            <delta_ts>2012-02-09 16:26:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cssstyledeclaration-refcount-4.patch</filename>
            <type>text/plain</type>
            <size>26319</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5kZXJseWluZyBwcm9w
ZXJ0eSBzZXQgdG8gcmVmY291bnQgU3R5bGVQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjU3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAg
dGhlIFN0eWxlUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uIHJlZmNvdW50aW5nLgorICAg
ICAgICBBbHNvIG1hZGUgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uIGNvbnN0cnVjdGlvbiB1
c2UgdGhlIHN0YW5kYXJkIGNyZWF0ZSgpIHBhdHRlcm4uCisKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6cmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpkZXJlZik6CisgICAgICAgICogY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6On5T
dHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjptYWtlTXV0YWJsZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydHlTZXQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFuY2VzdG9yc1dpdGhVbmlj
b2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1i
ZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmhpZ2hlc3RFbWJl
ZGRpbmdBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6Y29t
cHV0ZWRGb250U2l6ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5bGVPZk5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpzdHlsZUlzUHJlc2VudEluQ29tcHV0ZWRTdHlsZU9mTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRDb2xvckluRWZm
ZWN0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZSk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBy
b3BlcnR5VmFsdWUpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OmJhc2VWYWx1ZUZvcik6
CisKIDIwMTItMDItMDkgIEpvaG4gQmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbQ2hyb21pdW1dIEFkZCBjaHJvbWl1bS1zdHlsZSB0cmFjaW5nIHN1cHBvcnQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBAIF9fWk43V2ViQ29y
ZTE2U2NyaXB0Q29udHJvbGxlcjE4d2luZG93U2MKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJv
bGxlcjIwZXhlY3V0ZVNjcmlwdEluV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2
U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIxcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlRXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQbHVn
aW5FbGVtZW50RVBOU18xN0hUTUxQbHVnSW5FbGVtZW50RQotX19aTjdXZWJDb3JlMTZTdHlsZVBy
b3BlcnR5U2V0NWRlcmVmRXYKK19fWk43V2ViQ29yZTE2U3R5bGVQcm9wZXJ0eVNldEQxRXYKIF9f
Wk43V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YTEwc3RhdGljRGF0YUUKIF9fWk43V2ViQ29yZTE2
VGhyZWFkR2xvYmFsRGF0YUMxRXYKIF9fWk43V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YUQxRXYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTg5LDYgKzk4OSwx
NyBAQCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246On5DU1NDb21wdXRlCiB7CiB9CiAKK3Zv
aWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZWYoKQoreworICAgIFJlZkNvdW50ZWRC
YXNlOjpyZWYoKTsKK30KKwordm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmRlcmVm
KCkKK3sKKyAgICBpZiAoZGVyZWZCYXNlKCkpCisgICAgICAgIGRlbGV0ZSB0aGlzOworfQorCiBT
dHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KCkgY29uc3QKIHsKICAg
ICBTdHJpbmcgcmVzdWx0KCIiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsMTEgKzQ1LDE3IEBAIGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIAogZW51bSBF
VXBkYXRlTGF5b3V0IHsgRG9Ob3RVcGRhdGVMYXlvdXQgPSBmYWxzZSwgVXBkYXRlTGF5b3V0ID0g
dHJ1ZSB9OwogCi1jbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgQ1NT
U3R5bGVEZWNsYXJhdGlvbiB7CitjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gOiBw
dWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiwgcHJpdmF0ZSBXVEY6OlJlZkNvdW50ZWRCYXNlIHsK
IHB1YmxpYzoKLSAgICBmcmllbmQgUGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24+IGNvbXB1dGVkU3R5bGUoUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCBhbGxvd1Zpc2l0ZWRTdHls
ZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxOb2RlPiBu
b2RlLCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIGNvbnN0IFN0cmluZyYgcHNldWRv
RWxlbWVudE5hbWUgPSBTdHJpbmcoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKG5vZGUsIGFsbG93VmlzaXRlZFN0eWxlLCBw
c2V1ZG9FbGVtZW50TmFtZSkpOworICAgIH0KICAgICB2aXJ0dWFsIH5DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZWYoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVyZWYoKSBPVkVSUklERTsKKwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OwogICAgIFN0cmluZyBn
ZXRQcm9wZXJ0eVZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGdldFByb3Bl
cnR5UHJpb3JpdHkoaW50IHByb3BlcnR5SUQpIGNvbnN0OwpAQCAtMTA2LDE2ICsxMTIsMTMgQEAg
cHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1
ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IGludCogcHJvcGVydGllcywgc2l6ZV90KSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNG
b3JTaWRlc1Nob3J0aGFuZChjb25zdCBpbnQqIHByb3BlcnRpZXMpIGNvbnN0OwogCisgICAgZnJp
ZW5kIFBhc3NSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBXVEY6OmFkb3B0UmVm
PENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4oQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
Kik7CisKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIFBzZXVkb0lkIG1fcHNldWRvRWxl
bWVudFNwZWNpZmllcjsKICAgICBib29sIG1fYWxsb3dWaXNpdGVkU3R5bGU7CiB9OwogCi1pbmxp
bmUgUGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGUo
UGFzc1JlZlB0cjxOb2RlPiBub2RlLCAgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IGZhbHNlLCBj
b25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lID0gU3RyaW5nKCkpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24obm9kZSwgYWxsb3dWaXNp
dGVkU3R5bGUsIHBzZXVkb0VsZW1lbnROYW1lKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbl9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDEwNzI5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDExICszNSwxNCBAQCBjbGFzcyBTdHlsZWRFbGVtZW50OwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCi1jbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8Q1NTU3R5bGVEZWNsYXJhdGlvbj4geworY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTU3R5bGVEZWNsYXJhdGlvbik7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVEZWNsYXJhdGlvbigpIHsgfQogCisgICAgdmlydHVhbCB2
b2lkIHJlZigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7CisKICAgICB2aXJ0
dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwpAQCAtNjQsNyArNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3BlcnR5Kikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dT
dHlsZSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBD
U1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IHByb3BlcnR5U2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpKTsgCi0gICAgfQorICAg
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0
eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KIAogcHJpdmF0ZToKLSAgICBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBwcm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KLSAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBtX3Byb3BlcnR5U2V0LT5yZWYoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFIHsgbV9wcm9wZXJ0eVNldC0+ZGVyZWYo
KTsgfQorCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGdl
dFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwpA
QCAtNjYsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikg
T1ZFUlJJREU7CkBAIC03Niw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVSUklERTsKICAg
ICAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9wcm9wZXJ0eVNldDsKKyAgICBTdHls
ZVByb3BlcnR5U2V0KiBtX3Byb3BlcnR5U2V0OwogfTsKIAogbmFtZXNwYWNlIHsKQEAgLTIyOCwx
OCArMjI2LDcgQEAgU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChTdHlsZQogCiBT
dHlsZVByb3BlcnR5U2V0Ojp+U3R5bGVQcm9wZXJ0eVNldCgpCiB7Ci19Ci0KLXZvaWQgU3R5bGVQ
cm9wZXJ0eVNldDo6ZGVyZWYoKQotewotICAgIGlmIChkZXJlZkJhc2UoKSkgewotICAgICAgICBk
ZWxldGUgdGhpczsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBTdHlsZVByb3BlcnR5
U2V0IGFuZCBDU1NTdHlsZURlY2xhcmF0aW9uIHJlZiBlYWNoIG90aGVyLiBXaGVuIHdlIGhhdmUg
YSBkZWNsYXJhdGlvbiBhbmQKLSAgICAvLyBvdXIgcmVmY291bnQgZHJvcHMgdG8gb25lIHdlIGtu
b3cgaXQgaXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyB1cyBhbGl2ZS4KLSAgICBpZiAobV9jc3NT
dHlsZURlY2xhcmF0aW9uICYmIGhhc09uZVJlZigpKQotICAgICAgICBtX2Nzc1N0eWxlRGVjbGFy
YXRpb24uY2xlYXIoKTsKKyAgICAKIH0KIAogQ1NTU3R5bGVTaGVldCogU3R5bGVQcm9wZXJ0eVNl
dDo6Y29udGV4dFN0eWxlU2hlZXQoKSBjb25zdApAQCAtMTEzMCw3ICsxMTE3LDcgQEAgUGFzc1Jl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcgogQ1NTU3R5bGVEZWNsYXJhdGlvbiog
U3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2Nzc1N0eWxlRGVjbGFyYXRpb24pCi0gICAgICAgIG1fY3NzU3R5bGVEZWNsYXJh
dGlvbiA9IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGNvbnN0X2Nhc3Q8
U3R5bGVQcm9wZXJ0eVNldCo+KHRoaXMpKTsKKyAgICAgICAgbV9jc3NTdHlsZURlY2xhcmF0aW9u
ID0gYWRvcHRQdHIobmV3IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihjb25zdF9jYXN0
PFN0eWxlUHJvcGVydHlTZXQqPih0aGlzKSkpOwogICAgIHJldHVybiBtX2Nzc1N0eWxlRGVjbGFy
YXRpb24uZ2V0KCk7CiB9CiAKQEAgLTEyNTMsOSArMTI0MCw2IEBAIFBhc3NSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gUHJvcGVydHlTZXQKIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246Om1ha2VNdXRhYmxlKCkKIHsKLSAgICBBU1NF
UlQobV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID09IHRoaXMgfHwgKCFtX3By
b3BlcnR5U2V0LT5tX2Nzc1N0eWxlRGVjbGFyYXRpb24gJiYgbV9wcm9wZXJ0eVNldC0+aGFzT25l
UmVmKCkpKTsKLSAgICBpZiAoIW1fcHJvcGVydHlTZXQtPm1fY3NzU3R5bGVEZWNsYXJhdGlvbikK
LSAgICAgICAgbV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID0gdGhpczsKICAg
ICByZXR1cm4gbV9wcm9wZXJ0eVNldDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNz
IFN0eWxlZEVsZW1lbnQ7CiAKLWNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMgV1RGOjpS
ZWZDb3VudGVkQmFzZSB7CitjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJlZkNvdW50
ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5U2V0KCk7
CiAKQEAgLTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFN0eWxlUHJvcGVydHlTZXQoZWxlbWVudCwgLyppc0lubGluZVN0eWxlKi8gZmFsc2UpKTsKICAg
ICB9CiAKLSAgICB2b2lkIGRlcmVmKCk7Ci0KICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBjb25zdCBDU1NQ
cm9wZXJ0eSYgcHJvcGVydHlBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0aWVzW2luZGV4XTsgfQpAQCAtMTY5LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQ7CiAgICAgfSBtX3BhcmVudDsKICAgICAKLSAgICBtdXRhYmxl
IFJlZlB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IG1fY3NzU3R5bGVEZWNsYXJh
dGlvbjsKKyAgICBtdXRhYmxlIE93blB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+
IG1fY3NzU3R5bGVEZWNsYXJhdGlvbjsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAko
cmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uPiAKICAgICBFbGVtZW50KiBlbGVtID0gZWxlbWVudCgpOwogICAgIGlmICgh
ZWxlbSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1dGVkU3R5
bGUoZWxlbSk7CisgICAgcmV0dXJuIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KGVsZW0pOwogfQogCiBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlw
ZSBtb3ZlVHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0LDcgKzQ0NCw3
IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmMKICAgICBOb2RlKiBu
ZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKICAgICBpbnQgaGlnaGVzdEFu
Y2VzdG9yVW5pY29kZUJpZGkgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsgbiAhPSBibG9jazsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpbnQgdW5p
Y29kZUJpZGkgPSBnZXRJZGVudGlmaWVyVmFsdWUoY29tcHV0ZWRTdHlsZShuKS5nZXQoKSwgQ1NT
UHJvcGVydHlVbmljb2RlQmlkaSk7CisgICAgICAgIGludCB1bmljb2RlQmlkaSA9IGdldElkZW50
aWZpZXJWYWx1ZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShuKS5nZXQoKSwg
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaSAmJiB1bmlj
b2RlQmlkaSAhPSBDU1NWYWx1ZU5vcm1hbCkgewogICAgICAgICAgICAgaGlnaGVzdEFuY2VzdG9y
VW5pY29kZUJpZGkgPSB1bmljb2RlQmlkaTsKICAgICAgICAgICAgIG5leHRIaWdoZXN0QW5jZXN0
b3JXaXRoVW5pY29kZUJpZGkgPSBoaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGk7CkBAIC00
OTYsNyArNDk2LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihuKTsKLSAgICAgICAgaW50IHVuaWNvZGVCaWRp
ID0gZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0KCksIENTU1By
b3BlcnR5VW5pY29kZUJpZGkpOworICAgICAgICBpbnQgdW5pY29kZUJpZGkgPSBnZXRJZGVudGlm
aWVyVmFsdWUoQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCkuZ2V0
KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwogICAgICAgICBpZiAoIXVuaWNvZGVCaWRpIHx8
IHVuaWNvZGVCaWRpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVFbWJlZGRp
bmdVCiBzdGF0aWMgTm9kZSogaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9yKE5vZGUqIHN0YXJ0Tm9k
ZSwgTm9kZSogZW5jbG9zaW5nTm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydE5vZGU7
IG4gJiYgbiAhPSBlbmNsb3NpbmdOb2RlOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1dGVkU3R5
bGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpID09IENTU1ZhbHVlRW1iZWQpCisg
ICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG4pLmdldCgpLCBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKSA9PSBDU1NWYWx1ZUVtYmVkKQogICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgfQog
CkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0ZWRG
b250U2l6CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShub2RlKTsK
KyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpOwogICAgIGlmICghc3R5bGUpCiAgICAg
ICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIEVkaXRpbmdT
dHlsZTo6aW5pdChOb2RlKiBub2RlLCBQcm9wCiAgICAgZWxzZSBpZiAoaXNUYWJTcGFuTm9kZShu
b2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKIAotICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uID0gY29t
cHV0ZWRTdHlsZShub2RlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKG5vZGUpOwogICAgIG1fbXV0YWJsZVN0eWxlID0gcHJvcGVydGllc1RvSW5jbHVkZSA9
PSBBbGxQcm9wZXJ0aWVzICYmIGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uID8gY29tcHV0ZWRTdHls
ZUF0UG9zaXRpb24tPmNvcHkoKSA6IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKGNvbXB1
dGVkU3R5bGVBdFBvc2l0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0aWVzVG9JbmNsdWRlID09IEVk
aXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpIHsKQEAgLTU1OCw4ICs1NTgsOCBAQCB2b2lkIEVkaXRp
bmdTdHlsZTo6cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kCiB7CiAgICAgaWYgKCFub2RlIHx8ICFub2Rl
LT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShjb21wdXRl
ZFN0eWxlKG5vZGUtPnBhcmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKLSAgICBS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1
dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlKSwgQWxsRWRpdGluZ1Byb3BlcnRpZXMpOworICAg
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwYXJlbnRTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21D
b21wdXRlZFN0eWxlKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUtPnBh
cmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKKyAgICBSZWZQdHI8U3R5bGVQcm9w
ZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVz
KTsKICAgICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKHBhcmVudFN0eWxl
LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1v
dmVFcXVpdmFsZW50UHJvcGVydGllcyhub2RlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRp
b24oKSk7CiB9CkBAIC01NjksOCArNTY5LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0
eWxlQ29uZmxpY3RpbgogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpIHx8ICFt
X211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IHBhcmVudFN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0
ZWRTdHlsZShub2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7Ci0gICAg
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21Db21w
dXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9kZSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKKyAg
ICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9t
Q29tcHV0ZWRTdHlsZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShub2RlLT5w
YXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7CisgICAgUmVmUHRyPFN0eWxlUHJv
cGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpLCBBbGxFZGl0aW5nUHJvcGVydGll
cyk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhwYXJlbnRTdHls
ZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5
Q291bnQgPSBub2RlU3R5bGUtPnByb3BlcnR5Q291bnQoKTsKQEAgLTY0MSw3ICs2NDEsNyBAQCBU
cmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShjCiAKICAgICBUcmlTdGF0ZSBz
dGF0ZSA9IEZhbHNlVHJpU3RhdGU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0aW9uLnN0
YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5v
ZGUoKSkgewotICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBub2Rl
U3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBub2RlU3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZShub2RlKTsKICAgICAgICAgaWYgKG5vZGVTdHlsZSkgewogICAgICAgICAgICAgVHJp
U3RhdGUgbm9kZVN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKG5vZGVTdHlsZS5nZXQoKSwgbm9kZS0+
aXNUZXh0Tm9kZSgpID8gRWRpdGluZ1N0eWxlOjpEb05vdElnbm9yZVRleHRPbmx5UHJvcGVydGll
cyA6IEVkaXRpbmdTdHlsZTo6SWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKTsKICAgICAgICAgICAg
IGlmIChub2RlID09IHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpCkBAIC04MTMs
NyArODEzLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmV4dHJhY3RDb25mbGljdGluZ0ltcAogCiBi
b29sIEVkaXRpbmdTdHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUoTm9k
ZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdldFByb3Bl
cnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZShub2RlKS5nZXQo
KSktPmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdldFByb3BlcnRp
ZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUobm9kZSkuZ2V0KCkpLT5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgRWRpdGluZ1N0eWxl
OjplbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxlbWVudCog
ZWxlbWVudCkKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0
eWxlRnJvbVJ1bGVzRm8KICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3MgYSBwZXJj
ZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4gIAogICAg
IC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2libGU7IiBp
biBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0aGlzLCBz
ZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlkZWxpdHkg
cHJvYmxlbQotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVk
U3R5bGVGb3JFbGVtZW50ID0gY29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQdHI8Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRm9yRWxlbWVudCA9IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogICAgIFJlZlB0cjxTdHls
ZVByb3BlcnR5U2V0PiBmcm9tQ29tcHV0ZWRTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0
ZSgpOwogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IG1fbXV0YWJsZVN0
eWxlLT5wcm9wZXJ0eUNvdW50KCk7CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIGhhc1RyYW5z
cGFyZW50QmFja2dyb3VuZENvbG9yKFN0eWxlCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3Jv
dW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQogewogICAgIGZvciAoTm9kZSogYW5jZXN0b3Ig
PSBub2RlOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgpKSB7Ci0g
ICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGFuY2VzdG9yU3R5bGUg
PSBjb21wdXRlZFN0eWxlKGFuY2VzdG9yKTsKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbj4gYW5jZXN0b3JTdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKGFuY2VzdG9yKTsKICAgICAgICAgaWYgKCFoYXNUcmFuc3BhcmVudEJhY2tncm91
bmRDb2xvcihhbmNlc3RvclN0eWxlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBhbmNlc3Rv
clN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMDcyOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyMSw3ICs1MjEsNyBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZv
CiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobik7CisgICAgICAgICAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKG4pOwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaSA9
IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwogICAg
ICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBXcml0
aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvCiAgICAgICAgIGlmICghbm9kZS0+
aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBSZWZQ
dHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobm9k
ZSk7CisgICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSk7CiAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29k
ZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCShyZXZp
c2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZQogCiAgICAgcmVjYWxjU3R5bGVGb3JQc2V1ZG9TdGF0
ZUlmTmVlZGVkKGVsZW1lbnQsIGZvcmNlZFBzZXVkb0NsYXNzZXMgPyBmb3JjZWRQc2V1ZG9DbGFz
c2VzLT5nZXQoKSA6IDApOwogCi0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bj4gY29tcHV0ZWRTdHlsZUluZm8gPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUpOworICAg
IFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7CiAgICAg
UmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpj
cmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIDApOwogICAgIHN0eWxl
ID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjEsNyArMTMy
MSw3IEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG8KICAgICBpZiAo
IWVsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY29tcHV0ZWRTdHlsZShlbHQs
IGZhbHNlLCBwc2V1ZG9FbHQpOworICAgIHJldHVybiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmNyZWF0ZShlbHQsIGZhbHNlLCBwc2V1ZG9FbHQpOwogfQogCiBQYXNzUmVmUHRyPENTU1J1
bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIGJvb2wgYXV0aG9yT25seSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTA3Mjk1
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNyBAQCBTVkdBbmltYXRlRWxlbWVudDo6flNWR0FuaW1hdGVFbGVt
ZW50KCkKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQqIHN2
Z1BhcmVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQoc3ZnUGFyZW50LT5pc1N0eWxlZCgpKTsKLSAgICB2YWx1ZSA9IGNv
bXB1dGVkU3R5bGUoc3ZnUGFyZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0eUlEKGF0
dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICB2YWx1ZSA9IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKHN2Z1BhcmVudCktPmdldFByb3BlcnR5VmFsdWUoY3NzUHJvcGVy
dHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiB9CiAKIHN0YXRpYyBib29sIGluaGVy
aXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3ICsyMjEsNyBAQCBTdHJpbmcgU01J
TFRpbWVDb250YWluZXI6OmJhc2VWYWx1ZUZvcihFCiAgICAgQVNTRVJUKGF0dHJpYnV0ZU5hbWUg
IT0gYW55UU5hbWUoKSk7CiAgICAgU3RyaW5nIGJhc2VWYWx1ZTsKICAgICBpZiAoU1ZHQW5pbWF0
aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBh
dHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgYmFzZVZhbHVlID0gY29tcHV0ZWRTdHlsZSh0YXJnZXRF
bGVtZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0ZU5hbWUubG9j
YWxOYW1lKCkpKTsKKyAgICAgICAgYmFzZVZhbHVlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUodGFyZ2V0RWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJ
RChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiAgICAgZWxzZQogICAgICAgICBiYXNlVmFs
dWUgPSB0YXJnZXRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiAgICAgbV9z
YXZlZEJhc2VWYWx1ZXMuYWRkKGtleSwgYmFzZVZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTA3Mjk1KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUwLDcgKzY1MCw3IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmNvbXB1dGVk
U3R5bGVJbmNsdWQKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0VsZW1lbnQ6
OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZCh0b1JlZihleGVj
KSk7CiAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNv
bXB1dGVkU3R5bGUoc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPmltcGwo
KSwgdHJ1ZSk7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUg
PSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxKU0VsZW1l
bnQqPih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpLCB0cnVlKTsKIAogICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHlsZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDE0LDcgKzY0MTQsNyBAQCAtIChKU1Zh
bHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUpOworICAgIFJlZlB0
cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMs
IHRvSlMoZXhlYywganNFbGVtZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkpKTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkocmV2aXNpb24gMTA3Mjk1
KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04ODIsNyArODgyLDcgQEAgUVN0cmluZyBRV2ViRWxlbWVudDo6c3R5bGVQcm9wZXJ0eShj
b25zdAogCiAgICAgICAgIGludCBwcm9wSUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwogCi0gICAg
ICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRT
dHlsZShtX2VsZW1lbnQsIHRydWUpOworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG1f
ZWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIGlmICghcHJvcElEIHx8ICFzdHlsZSkKICAgICAgICAg
ICAgIHJldHVybiBRU3RyaW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJ
KHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgc3RhdGljIGJvb2wgaXNDbGlja2Fi
bGVFbGVtZW50KEVsZW1lbnQqIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHJldHVy
biBpc0NsaWNrYWJsZQogICAgICAgICB8fCBlbGVtZW50LT53ZWJraXRNYXRjaGVzU2VsZWN0b3Io
ImEsKjpsaW5rLCo6dmlzaXRlZCwqW3JvbGU9YnV0dG9uXSxidXR0b24saW5wdXQsc2VsZWN0LGxh
YmVsIiwgZWMpCi0gICAgICAgIHx8IGNvbXB1dGVkU3R5bGUoZWxlbWVudCktPmdldFByb3BlcnR5
VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKKyAgICAgICAgfHwg
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCktPmdldFByb3BlcnR5
VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKIH0KIAogc3RhdGlj
IGJvb2wgaXNWYWxpZEZyYW1lT3duZXIoRWxlbWVudCogZWxlbWVudCkK
</data>
<flag name="commit-queue"
          id="128208"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126402</attachid>
            <date>2012-02-09 16:21:21 -0800</date>
            <delta_ts>2012-02-09 20:36:44 -0800</delta_ts>
            <desc>try to fix qt build, other cleanups</desc>
            <filename>cssstyledeclaration-refcount-5.patch</filename>
            <type>text/plain</type>
            <size>27230</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5kZXJseWluZyBwcm9w
ZXJ0eSBzZXQgdG8gcmVmY291bnQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gcmVmY291bnRpbmcuCisgICAgICAgIEFsc28g
bWFkZSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gY29uc3RydWN0aW9uIHVzZSB0aGUgc3Rh
bmRhcmQgY3JlYXRlKCkgcGF0dGVybi4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmRlcmVmKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uaDoKKyAgICAgICAgKENTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6flN0eWxlUHJvcGVy
dHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5
bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246Om1ha2VNdXRhYmxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5o
OgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVFbWJlZGRpbmdVcFRv
RW5jbG9zaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEVtYmVkZGluZ0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRT
aXplKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxl
OjpyZW1vdmVTdHlsZUFkZGVkQnlOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpnZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydHlWYWx1
ZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6YmFzZVZhbHVlRm9yKToKKwogMjAxMi0w
Mi0wOSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01MTksNyArNTE5LDcgQEAgX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTh3aW5kb3dTYwogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjBleGVj
dXRlU2NyaXB0SW5Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFYgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjFwcm9jZXNzaW5nVXNlckdlc3R1cmVFdgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjRqc09iamVjdEZvclBsdWdpbkVsZW1lbnRF
UE5TXzE3SFRNTFBsdWdJbkVsZW1lbnRFCi1fX1pON1dlYkNvcmUxNlN0eWxlUHJvcGVydHlTZXQ1
ZGVyZWZFdgorX19aTjdXZWJDb3JlMTZTdHlsZVByb3BlcnR5U2V0RDFFdgogX19aTjdXZWJDb3Jl
MTZUaHJlYWRHbG9iYWxEYXRhMTBzdGF0aWNEYXRhRQogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9i
YWxEYXRhQzFFdgogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9iYWxEYXRhRDFFdgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNiArOTg5LDE3IEBAIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6fkNTU0NvbXB1dGUKIHsKIH0KIAordm9pZCBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OnJlZigpCit7CisgICAgUmVmQ291bnRlZEJhc2U6OnJlZigp
OworfQorCit2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6ZGVyZWYoKQoreworICAg
IGlmIChkZXJlZkJhc2UoKSkKKyAgICAgICAgZGVsZXRlIHRoaXM7Cit9CisKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyBy
ZXN1bHQoIiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSAr
NDUsMTcgQEAgY2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOwogCiBlbnVtIEVVcGRhdGVMYXlv
dXQgeyBEb05vdFVwZGF0ZUxheW91dCA9IGZhbHNlLCBVcGRhdGVMYXlvdXQgPSB0cnVlIH07CiAK
LWNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xh
cmF0aW9uIHsKK2NsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NT
dHlsZURlY2xhcmF0aW9uLCBwcml2YXRlIFdURjo6UmVmQ291bnRlZEJhc2UgewogcHVibGljOgot
ICAgIGZyaWVuZCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0
ZWRTdHlsZShQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wg
YWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFt
ZSA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24obm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUsIHBzZXVkb0VsZW1l
bnROYW1lKSk7CisgICAgfQogICAgIHZpcnR1YWwgfkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIE9WRVJSSURFOworCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5
VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgZ2V0UHJvcGVydHlQcmlvcml0
eShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CkBAIC0xMDYsMTYgKzExMiwxMyBAQCBwcml2YXRlOgog
ICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0
aGFuZFByb3BlcnRpZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwogICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hv
cnRoYW5kKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3Q7CiAKKyAgICBmcmllbmQgUGFzc1Jl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IFdURjo6YWRvcHRSZWY8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPihDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24qKTsKKwogICAg
IFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lm
aWVyOwogICAgIGJvb2wgbV9hbGxvd1Zpc2l0ZWRTdHlsZTsKIH07CiAKLWlubGluZSBQYXNzUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZShQYXNzUmVmUHRy
PE5vZGU+IG5vZGUsICBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvRWxlbWVudE5hbWUgPSBTdHJpbmcoKSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihub2RlLCBhbGxvd1Zpc2l0ZWRTdHlsZSwg
cHNldWRvRWxlbWVudE5hbWUpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDE0IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NT
dHlsZURlY2xhcmF0aW9uPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTU3R5bGVEZWNs
YXJhdGlvbik7CitjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDU1NTdHlsZURlY2xhcmF0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVEZWNsYXJhdGlvbigpIHsgfQogCisgICAgdmly
dHVhbCB2b2lkIHJlZigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7CisKICAg
ICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwpAQCAtNjQsNyArNjcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3Bl
cnR5KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVT
aGVldCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IHNob3dTdHlsZSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiA6IHB1
YmxpYyBDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHByb3BlcnR5U2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpKTsgCi0gICAg
fQorICAgIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiBw
cm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KIAogcHJpdmF0ZToK
LSAgICBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBwcm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KLSAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBtX3Byb3BlcnR5U2V0LT5yZWYo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFIHsgbV9wcm9wZXJ0eVNldC0+
ZGVyZWYoKTsgfQorCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJS
SURFOwpAQCAtNjYsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CkBAIC03Niw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVSUklE
RTsKICAgICAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9wcm9wZXJ0eVNldDsKKyAg
ICBTdHlsZVByb3BlcnR5U2V0KiBtX3Byb3BlcnR5U2V0OwogfTsKIAogbmFtZXNwYWNlIHsKQEAg
LTIyOCwxOCArMjI2LDcgQEAgU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChTdHls
ZQogCiBTdHlsZVByb3BlcnR5U2V0Ojp+U3R5bGVQcm9wZXJ0eVNldCgpCiB7Ci19Ci0KLXZvaWQg
U3R5bGVQcm9wZXJ0eVNldDo6ZGVyZWYoKQotewotICAgIGlmIChkZXJlZkJhc2UoKSkgewotICAg
ICAgICBkZWxldGUgdGhpczsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBTdHlsZVBy
b3BlcnR5U2V0IGFuZCBDU1NTdHlsZURlY2xhcmF0aW9uIHJlZiBlYWNoIG90aGVyLiBXaGVuIHdl
IGhhdmUgYSBkZWNsYXJhdGlvbiBhbmQKLSAgICAvLyBvdXIgcmVmY291bnQgZHJvcHMgdG8gb25l
IHdlIGtub3cgaXQgaXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyB1cyBhbGl2ZS4KLSAgICBpZiAo
bV9jc3NTdHlsZURlY2xhcmF0aW9uICYmIGhhc09uZVJlZigpKQotICAgICAgICBtX2Nzc1N0eWxl
RGVjbGFyYXRpb24uY2xlYXIoKTsKKyAgICAKIH0KIAogQ1NTU3R5bGVTaGVldCogU3R5bGVQcm9w
ZXJ0eVNldDo6Y29udGV4dFN0eWxlU2hlZXQoKSBjb25zdApAQCAtMTEzMCw3ICsxMTE3LDcgQEAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcgogQ1NTU3R5bGVEZWNsYXJh
dGlvbiogU3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2Nzc1N0eWxlRGVjbGFyYXRpb24pCi0gICAgICAgIG1fY3NzU3R5bGVE
ZWNsYXJhdGlvbiA9IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGNvbnN0
X2Nhc3Q8U3R5bGVQcm9wZXJ0eVNldCo+KHRoaXMpKTsKKyAgICAgICAgbV9jc3NTdHlsZURlY2xh
cmF0aW9uID0gYWRvcHRQdHIobmV3IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihjb25z
dF9jYXN0PFN0eWxlUHJvcGVydHlTZXQqPih0aGlzKSkpOwogICAgIHJldHVybiBtX2Nzc1N0eWxl
RGVjbGFyYXRpb24uZ2V0KCk7CiB9CiAKQEAgLTEyNTMsOSArMTI0MCw2IEBAIFBhc3NSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gUHJvcGVydHlTZXQKIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246Om1ha2VNdXRhYmxlKCkKIHsKLSAg
ICBBU1NFUlQobV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID09IHRoaXMgfHwg
KCFtX3Byb3BlcnR5U2V0LT5tX2Nzc1N0eWxlRGVjbGFyYXRpb24gJiYgbV9wcm9wZXJ0eVNldC0+
aGFzT25lUmVmKCkpKTsKLSAgICBpZiAoIW1fcHJvcGVydHlTZXQtPm1fY3NzU3R5bGVEZWNsYXJh
dGlvbikKLSAgICAgICAgbV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID0gdGhp
czsKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsK
IGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKLWNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMg
V1RGOjpSZWZDb3VudGVkQmFzZSB7CitjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5
U2V0KCk7CiAKQEAgLTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlUHJvcGVydHlTZXQoZWxlbWVudCwgLyppc0lubGluZVN0eWxlKi8gZmFsc2Up
KTsKICAgICB9CiAKLSAgICB2b2lkIGRlcmVmKCk7Ci0KICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLnNpemUoKTsgfQogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBjb25z
dCBDU1NQcm9wZXJ0eSYgcHJvcGVydHlBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0aWVzW2luZGV4XTsgfQpAQCAtMTY5LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQ7CiAgICAgfSBtX3BhcmVudDsKICAgICAKLSAgICBt
dXRhYmxlIFJlZlB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IG1fY3NzU3R5bGVE
ZWNsYXJhdGlvbjsKKyAgICBtdXRhYmxlIE93blB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24+IG1fY3NzU3R5bGVEZWNsYXJhdGlvbjsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPiAKICAgICBFbGVtZW50KiBlbGVtID0gZWxlbWVudCgpOwogICAg
IGlmICghZWxlbSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1
dGVkU3R5bGUoZWxlbSk7CisgICAgcmV0dXJuIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKGVsZW0pOwogfQogCiBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25N
b3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmMKICAgICBO
b2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKICAgICBpbnQgaGln
aGVzdEFuY2VzdG9yVW5pY29kZUJpZGkgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBh
cmVudE5vZGUoKTsgbiAhPSBibG9jazsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewotICAgICAgICBp
bnQgdW5pY29kZUJpZGkgPSBnZXRJZGVudGlmaWVyVmFsdWUoY29tcHV0ZWRTdHlsZShuKS5nZXQo
KSwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CisgICAgICAgIGludCB1bmljb2RlQmlkaSA9IGdl
dElkZW50aWZpZXJWYWx1ZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShuKS5n
ZXQoKSwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaSAm
JiB1bmljb2RlQmlkaSAhPSBDU1NWYWx1ZU5vcm1hbCkgewogICAgICAgICAgICAgaGlnaGVzdEFu
Y2VzdG9yVW5pY29kZUJpZGkgPSB1bmljb2RlQmlkaTsKICAgICAgICAgICAgIG5leHRIaWdoZXN0
QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkgPSBoaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGk7
CkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRk
aW5nVQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihuKTsKLSAgICAgICAgaW50IHVuaWNv
ZGVCaWRpID0gZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0KCks
IENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgICAgICBpbnQgdW5pY29kZUJpZGkgPSBnZXRJ
ZGVudGlmaWVyVmFsdWUoQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVu
dCkuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwogICAgICAgICBpZiAoIXVuaWNvZGVC
aWRpIHx8IHVuaWNvZGVCaWRpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVF
bWJlZGRpbmdVCiBzdGF0aWMgTm9kZSogaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9yKE5vZGUqIHN0
YXJ0Tm9kZSwgTm9kZSogZW5jbG9zaW5nTm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBzdGFy
dE5vZGU7IG4gJiYgbiAhPSBlbmNsb3NpbmdOb2RlOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0g
ICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1
dGVkU3R5bGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpID09IENTU1ZhbHVlRW1i
ZWQpCisgICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVl
KENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG4pLmdldCgpLCBDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpKSA9PSBDU1NWYWx1ZUVtYmVkKQogICAgICAgICAgICAgcmV0dXJuIG47CiAg
ICAgfQogCkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6Y29t
cHV0ZWRGb250U2l6CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShu
b2RlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpOwogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6aW5pdChOb2RlKiBub2RlLCBQcm9wCiAgICAgZWxzZSBpZiAoaXNUYWJTcGFu
Tm9kZShub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9u
ID0gY29tcHV0ZWRTdHlsZShub2RlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKG5vZGUpOwogICAgIG1fbXV0YWJsZVN0eWxlID0gcHJvcGVydGllc1RvSW5j
bHVkZSA9PSBBbGxQcm9wZXJ0aWVzICYmIGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uID8gY29tcHV0
ZWRTdHlsZUF0UG9zaXRpb24tPmNvcHkoKSA6IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxl
KGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0aWVzVG9JbmNsdWRl
ID09IEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpIHsKQEAgLTU1OCw4ICs1NTgsOCBAQCB2b2lk
IEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kCiB7CiAgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShj
b21wdXRlZFN0eWxlKG5vZGUtPnBhcmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsK
LSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJv
bUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlKSwgQWxsRWRpdGluZ1Byb3BlcnRpZXMp
OworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwYXJlbnRTdHlsZSA9IGVkaXRpbmdTdHls
ZUZyb21Db21wdXRlZFN0eWxlKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5v
ZGUtPnBhcmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKKyAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUo
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSksIEFsbEVkaXRpbmdQcm9w
ZXJ0aWVzKTsKICAgICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKHBhcmVu
dFN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwogICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhub2RlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVj
bGFyYXRpb24oKSk7CiB9CkBAIC01NjksOCArNTY5LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJl
bW92ZVN0eWxlQ29uZmxpY3RpbgogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgp
IHx8ICFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHBhcmVudFN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUo
Y29tcHV0ZWRTdHlsZShub2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7
Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZy
b21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9kZSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVz
KTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5
bGVGcm9tQ29tcHV0ZWRTdHlsZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShu
b2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7CisgICAgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxl
KENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpLCBBbGxFZGl0aW5nUHJv
cGVydGllcyk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhwYXJl
bnRTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIAogICAgIHVuc2lnbmVkIHBy
b3BlcnR5Q291bnQgPSBub2RlU3R5bGUtPnByb3BlcnR5Q291bnQoKTsKQEAgLTY0MSw3ICs2NDEs
NyBAQCBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShjCiAKICAgICBUcmlT
dGF0ZSBzdGF0ZSA9IEZhbHNlVHJpU3RhdGU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dE5vZGUoKSkgewotICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBub2RlU3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOworICAgICAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBub2RlU3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZShub2RlKTsKICAgICAgICAgaWYgKG5vZGVTdHlsZSkgewogICAgICAgICAg
ICAgVHJpU3RhdGUgbm9kZVN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKG5vZGVTdHlsZS5nZXQoKSwg
bm9kZS0+aXNUZXh0Tm9kZSgpID8gRWRpdGluZ1N0eWxlOjpEb05vdElnbm9yZVRleHRPbmx5UHJv
cGVydGllcyA6IEVkaXRpbmdTdHlsZTo6SWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIGlmIChub2RlID09IHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpCkBA
IC04MTMsNyArODEzLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmV4dHJhY3RDb25mbGljdGluZ0lt
cAogCiBib29sIEVkaXRpbmdTdHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5v
ZGUoTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdl
dFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZShub2Rl
KS5nZXQoKSktPmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdldFBy
b3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUobm9kZSkuZ2V0KCkpLT5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgRWRpdGlu
Z1N0eWxlOjplbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxl
bWVudCogZWxlbWVudCkKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpt
ZXJnZVN0eWxlRnJvbVJ1bGVzRm8KICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3Mg
YSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4g
IAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2li
bGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0
aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlk
ZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNv
bXB1dGVkU3R5bGVGb3JFbGVtZW50ID0gY29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQ
dHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRm9yRWxlbWVudCA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogICAgIFJlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBmcm9tQ29tcHV0ZWRTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZSgpOwogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IG1fbXV0
YWJsZVN0eWxlLT5wcm9wZXJ0eUNvdW50KCk7CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIGhh
c1RyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yKFN0eWxlCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBi
YWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQogewogICAgIGZvciAoTm9kZSogYW5j
ZXN0b3IgPSBub2RlOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGFuY2VzdG9y
U3R5bGUgPSBjb21wdXRlZFN0eWxlKGFuY2VzdG9yKTsKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbj4gYW5jZXN0b3JTdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKGFuY2VzdG9yKTsKICAgICAgICAgaWYgKCFoYXNUcmFuc3BhcmVudEJh
Y2tncm91bmRDb2xvcihhbmNlc3RvclN0eWxlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBh
bmNlc3RvclN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAx
MDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyMSw3ICs1MjEsNyBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVj
dGlvbkZvCiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobik7CisgICAgICAgICAgICBSZWZQdHI8
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKG4pOwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2Rl
QmlkaSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkp
OwogICAgICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1MSw3ICs1NTEsNyBA
QCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvCiAgICAgICAgIGlmICgh
bm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5
bGUobm9kZSk7CisgICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0
eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSk7CiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAh
dW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZQogCiAgICAgcmVjYWxjU3R5bGVGb3JQc2V1
ZG9TdGF0ZUlmTmVlZGVkKGVsZW1lbnQsIGZvcmNlZFBzZXVkb0NsYXNzZXMgPyBmb3JjZWRQc2V1
ZG9DbGFzc2VzLT5nZXQoKSA6IDApOwogCi0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbj4gY29tcHV0ZWRTdHlsZUluZm8gPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUp
OworICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJ
bmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7
CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0
eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIDApOwogICAg
IHN0eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG8KICAg
ICBpZiAoIWVsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY29tcHV0ZWRTdHls
ZShlbHQsIGZhbHNlLCBwc2V1ZG9FbHQpOworICAgIHJldHVybiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZShlbHQsIGZhbHNlLCBwc2V1ZG9FbHQpOwogfQogCiBQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIGJvb2wgYXV0aG9yT25seSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24g
MTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBTVkdBbmltYXRlRWxlbWVudDo6flNWR0FuaW1h
dGVFbGVtZW50KCkKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRQcm9wZXJ0eVZhbHVlKFNWR0VsZW1l
bnQqIHN2Z1BhcmVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc3ZnUGFyZW50LT5pc1N0eWxlZCgpKTsKLSAgICB2YWx1
ZSA9IGNvbXB1dGVkU3R5bGUoc3ZnUGFyZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0
eUlEKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICB2YWx1ZSA9IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHN2Z1BhcmVudCktPmdldFByb3BlcnR5VmFsdWUoY3Nz
UHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiB9CiAKIHN0YXRpYyBib29s
IGluaGVyaXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3ICsyMjEsNyBAQCBTdHJp
bmcgU01JTFRpbWVDb250YWluZXI6OmJhc2VWYWx1ZUZvcihFCiAgICAgQVNTRVJUKGF0dHJpYnV0
ZU5hbWUgIT0gYW55UU5hbWUoKSk7CiAgICAgU3RyaW5nIGJhc2VWYWx1ZTsKICAgICBpZiAoU1ZH
QW5pbWF0aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eSh0YXJnZXRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgYmFzZVZhbHVlID0gY29tcHV0ZWRTdHlsZSh0
YXJnZXRFbGVtZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0ZU5h
bWUubG9jYWxOYW1lKCkpKTsKKyAgICAgICAgYmFzZVZhbHVlID0gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpjcmVhdGUodGFyZ2V0RWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUoY3NzUHJv
cGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiAgICAgZWxzZQogICAgICAgICBi
YXNlVmFsdWUgPSB0YXJnZXRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiAg
ICAgbV9zYXZlZEJhc2VWYWx1ZXMuYWRkKGtleSwgYmFzZVZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTA3
Mjk1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUwLDcgKzY1MCw3IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmNv
bXB1dGVkU3R5bGVJbmNsdWQKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZCh0b1Jl
ZihleGVjKSk7CiAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZSA9IGNvbXB1dGVkU3R5bGUoc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSkt
PmltcGwoKSwgdHJ1ZSk7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
c3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxK
U0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpLCB0cnVlKTsKIAogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDE0LDcgKzY0MTQsNyBAQCAt
IChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9
IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICBFbGVtZW50
KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUpOworICAg
IFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRvUmVm
KGV4ZWMsIHRvSlMoZXhlYywganNFbGVtZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkp
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkocmV2aXNpb24g
MTA3Mjk1KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04ODIsNyArODgyLDcgQEAgUVN0cmluZyBRV2ViRWxlbWVudDo6c3R5bGVQcm9w
ZXJ0eShjb25zdAogCiAgICAgICAgIGludCBwcm9wSUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwog
Ci0gICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29t
cHV0ZWRTdHlsZShtX2VsZW1lbnQsIHRydWUpOworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKG1fZWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIGlmICghcHJvcElEIHx8ICFzdHlsZSkKICAg
ICAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgc3RhdGljIGJvb2wgaXND
bGlja2FibGVFbGVtZW50KEVsZW1lbnQqIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IHJldHVybiBpc0NsaWNrYWJsZQogICAgICAgICB8fCBlbGVtZW50LT53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3IoImEsKjpsaW5rLCo6dmlzaXRlZCwqW3JvbGU9YnV0dG9uXSxidXR0b24saW5wdXQsc2Vs
ZWN0LGxhYmVsIiwgZWMpCi0gICAgICAgIHx8IGNvbXB1dGVkU3R5bGUoZWxlbWVudCktPmdldFBy
b3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKKyAgICAg
ICAgfHwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCktPmdldFBy
b3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKIH0KIAog
c3RhdGljIGJvb2wgaXNWYWxpZEZyYW1lT3duZXIoRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjM1LDcgKzYzNSw3IEBAIFFWYXJpYW50TWFwIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojpjb20KICAgICBpZiAoIXdlYkVsZW1lbnQpCiAgICAgICAgIHJldHVybiByZXM7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24gPSBjb21wdXRlZFN0eWxlKHdlYkVsZW1lbnQsIHRydWUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbiA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHdlYkVsZW1lbnQs
IHRydWUpOwogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KGNvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5nZXQo
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5sZW5ndGgoKTsgaSsrKSB7
CiAgICAgICAgIFFTdHJpbmcgbmFtZSA9IHN0eWxlLT5pdGVtKGkpOwo=
</data>
<flag name="commit-queue"
          id="128222"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126444</attachid>
            <date>2012-02-09 20:36:44 -0800</date>
            <delta_ts>2012-02-10 09:35:21 -0800</delta_ts>
            <desc>still fixing qt build</desc>
            <filename>cssstyledeclaration-refcount-6.patch</filename>
            <type>text/plain</type>
            <size>27961</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5kZXJseWluZyBwcm9w
ZXJ0eSBzZXQgdG8gcmVmY291bnQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gcmVmY291bnRpbmcuCisgICAgICAgIEFsc28g
bWFkZSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gY29uc3RydWN0aW9uIHVzZSB0aGUgc3Rh
bmRhcmQgY3JlYXRlKCkgcGF0dGVybi4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmRlcmVmKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uaDoKKyAgICAgICAgKENTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6flN0eWxlUHJvcGVy
dHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5
bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246Om1ha2VNdXRhYmxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5o
OgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVFbWJlZGRpbmdVcFRv
RW5jbG9zaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEVtYmVkZGluZ0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRT
aXplKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxl
OjpyZW1vdmVTdHlsZUFkZGVkQnlOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpnZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydHlWYWx1
ZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6YmFzZVZhbHVlRm9yKToKKwogMjAxMi0w
Mi0wOSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01MTksNyArNTE5LDcgQEAgX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTh3aW5kb3dTYwogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjBleGVj
dXRlU2NyaXB0SW5Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFYgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjFwcm9jZXNzaW5nVXNlckdlc3R1cmVFdgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjRqc09iamVjdEZvclBsdWdpbkVsZW1lbnRF
UE5TXzE3SFRNTFBsdWdJbkVsZW1lbnRFCi1fX1pON1dlYkNvcmUxNlN0eWxlUHJvcGVydHlTZXQ1
ZGVyZWZFdgorX19aTjdXZWJDb3JlMTZTdHlsZVByb3BlcnR5U2V0RDFFdgogX19aTjdXZWJDb3Jl
MTZUaHJlYWRHbG9iYWxEYXRhMTBzdGF0aWNEYXRhRQogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9i
YWxEYXRhQzFFdgogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9iYWxEYXRhRDFFdgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNiArOTg5LDE3IEBAIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6fkNTU0NvbXB1dGUKIHsKIH0KIAordm9pZCBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OnJlZigpCit7CisgICAgUmVmQ291bnRlZEJhc2U6OnJlZigp
OworfQorCit2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6ZGVyZWYoKQoreworICAg
IGlmIChkZXJlZkJhc2UoKSkKKyAgICAgICAgZGVsZXRlIHRoaXM7Cit9CisKIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyBy
ZXN1bHQoIiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSAr
NDUsMTcgQEAgY2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOwogCiBlbnVtIEVVcGRhdGVMYXlv
dXQgeyBEb05vdFVwZGF0ZUxheW91dCA9IGZhbHNlLCBVcGRhdGVMYXlvdXQgPSB0cnVlIH07CiAK
LWNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xh
cmF0aW9uIHsKK2NsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NT
dHlsZURlY2xhcmF0aW9uLCBwcml2YXRlIFdURjo6UmVmQ291bnRlZEJhc2UgewogcHVibGljOgot
ICAgIGZyaWVuZCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0
ZWRTdHlsZShQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBT
dHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wg
YWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFt
ZSA9IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24obm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUsIHBzZXVkb0VsZW1l
bnROYW1lKSk7CisgICAgfQogICAgIHZpcnR1YWwgfkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIE9WRVJSSURFOworCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5
VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgZ2V0UHJvcGVydHlQcmlvcml0
eShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CkBAIC0xMDYsMTYgKzExMiwxMyBAQCBwcml2YXRlOgog
ICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0
aGFuZFByb3BlcnRpZXMoY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBzaXplX3QpIGNvbnN0OwogICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hv
cnRoYW5kKGNvbnN0IGludCogcHJvcGVydGllcykgY29uc3Q7CiAKKyAgICBmcmllbmQgUGFzc1Jl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IFdURjo6YWRvcHRSZWY8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPihDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24qKTsKKwogICAg
IFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lm
aWVyOwogICAgIGJvb2wgbV9hbGxvd1Zpc2l0ZWRTdHlsZTsKIH07CiAKLWlubGluZSBQYXNzUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZShQYXNzUmVmUHRy
PE5vZGU+IG5vZGUsICBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvRWxlbWVudE5hbWUgPSBTdHJpbmcoKSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihub2RlLCBhbGxvd1Zpc2l0ZWRTdHlsZSwg
cHNldWRvRWxlbWVudE5hbWUpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDE0IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKLWNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NT
dHlsZURlY2xhcmF0aW9uPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTU3R5bGVEZWNs
YXJhdGlvbik7CitjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDU1NTdHlsZURlY2xhcmF0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVEZWNsYXJhdGlvbigpIHsgfQogCisgICAgdmly
dHVhbCB2b2lkIHJlZigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7CisKICAg
ICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwpAQCAtNjQsNyArNjcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3Bl
cnR5KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVT
aGVldCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IHNob3dTdHlsZSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiA6IHB1
YmxpYyBDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHByb3BlcnR5U2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpKTsgCi0gICAg
fQorICAgIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiBw
cm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KIAogcHJpdmF0ZToK
LSAgICBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBwcm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KLSAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgT1ZFUlJJREUgeyBtX3Byb3BlcnR5U2V0LT5yZWYo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFIHsgbV9wcm9wZXJ0eVNldC0+
ZGVyZWYoKTsgfQorCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFs
dWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJS
SURFOwpAQCAtNjYsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNl
cHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25D
b2RlJikgT1ZFUlJJREU7CkBAIC03Niw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKSBPVkVSUklE
RTsKICAgICAKLSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9wcm9wZXJ0eVNldDsKKyAg
ICBTdHlsZVByb3BlcnR5U2V0KiBtX3Byb3BlcnR5U2V0OwogfTsKIAogbmFtZXNwYWNlIHsKQEAg
LTIyOCwxOCArMjI2LDcgQEAgU3R5bGVQcm9wZXJ0eVNldDo6U3R5bGVQcm9wZXJ0eVNldChTdHls
ZQogCiBTdHlsZVByb3BlcnR5U2V0Ojp+U3R5bGVQcm9wZXJ0eVNldCgpCiB7Ci19Ci0KLXZvaWQg
U3R5bGVQcm9wZXJ0eVNldDo6ZGVyZWYoKQotewotICAgIGlmIChkZXJlZkJhc2UoKSkgewotICAg
ICAgICBkZWxldGUgdGhpczsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBTdHlsZVBy
b3BlcnR5U2V0IGFuZCBDU1NTdHlsZURlY2xhcmF0aW9uIHJlZiBlYWNoIG90aGVyLiBXaGVuIHdl
IGhhdmUgYSBkZWNsYXJhdGlvbiBhbmQKLSAgICAvLyBvdXIgcmVmY291bnQgZHJvcHMgdG8gb25l
IHdlIGtub3cgaXQgaXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyB1cyBhbGl2ZS4KLSAgICBpZiAo
bV9jc3NTdHlsZURlY2xhcmF0aW9uICYmIGhhc09uZVJlZigpKQotICAgICAgICBtX2Nzc1N0eWxl
RGVjbGFyYXRpb24uY2xlYXIoKTsKKyAgICAKIH0KIAogQ1NTU3R5bGVTaGVldCogU3R5bGVQcm9w
ZXJ0eVNldDo6Y29udGV4dFN0eWxlU2hlZXQoKSBjb25zdApAQCAtMTEzMCw3ICsxMTE3LDcgQEAg
UGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcgogQ1NTU3R5bGVEZWNsYXJh
dGlvbiogU3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2Nzc1N0eWxlRGVjbGFyYXRpb24pCi0gICAgICAgIG1fY3NzU3R5bGVE
ZWNsYXJhdGlvbiA9IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGNvbnN0
X2Nhc3Q8U3R5bGVQcm9wZXJ0eVNldCo+KHRoaXMpKTsKKyAgICAgICAgbV9jc3NTdHlsZURlY2xh
cmF0aW9uID0gYWRvcHRQdHIobmV3IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihjb25z
dF9jYXN0PFN0eWxlUHJvcGVydHlTZXQqPih0aGlzKSkpOwogICAgIHJldHVybiBtX2Nzc1N0eWxl
RGVjbGFyYXRpb24uZ2V0KCk7CiB9CiAKQEAgLTEyNTMsOSArMTI0MCw2IEBAIFBhc3NSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gUHJvcGVydHlTZXQKIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246Om1ha2VNdXRhYmxlKCkKIHsKLSAg
ICBBU1NFUlQobV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID09IHRoaXMgfHwg
KCFtX3Byb3BlcnR5U2V0LT5tX2Nzc1N0eWxlRGVjbGFyYXRpb24gJiYgbV9wcm9wZXJ0eVNldC0+
aGFzT25lUmVmKCkpKTsKLSAgICBpZiAoIW1fcHJvcGVydHlTZXQtPm1fY3NzU3R5bGVEZWNsYXJh
dGlvbikKLSAgICAgICAgbV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xhcmF0aW9uID0gdGhp
czsKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsK
IGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKLWNsYXNzIFN0eWxlUHJvcGVydHlTZXQgOiBwdWJsaWMg
V1RGOjpSZWZDb3VudGVkQmFzZSB7CitjbGFzcyBTdHlsZVByb3BlcnR5U2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U3R5bGVQcm9wZXJ0eVNldD4gewogcHVibGljOgogICAgIH5TdHlsZVByb3BlcnR5
U2V0KCk7CiAKQEAgLTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlUHJvcGVydHlTZXQoZWxlbWVudCwgLyppc0lubGluZVN0eWxlKi8gZmFsc2Up
KTsKICAgICB9CiAKLSAgICB2b2lkIGRlcmVmKCk7Ci0KICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLnNpemUoKTsgfQogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5pc0VtcHR5KCk7IH0KICAgICBjb25z
dCBDU1NQcm9wZXJ0eSYgcHJvcGVydHlBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0aWVzW2luZGV4XTsgfQpAQCAtMTY5LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQ7CiAgICAgfSBtX3BhcmVudDsKICAgICAKLSAgICBt
dXRhYmxlIFJlZlB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+IG1fY3NzU3R5bGVE
ZWNsYXJhdGlvbjsKKyAgICBtdXRhYmxlIE93blB0cjxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24+IG1fY3NzU3R5bGVEZWNsYXJhdGlvbjsKICAgICAKICAgICBmcmllbmQgY2xhc3MgUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPiAKICAgICBFbGVtZW50KiBlbGVtID0gZWxlbWVudCgpOwogICAg
IGlmICghZWxlbSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvbXB1
dGVkU3R5bGUoZWxlbSk7CisgICAgcmV0dXJuIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKGVsZW0pOwogfQogCiBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25N
b3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmMKICAgICBO
b2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKICAgICBpbnQgaGln
aGVzdEFuY2VzdG9yVW5pY29kZUJpZGkgPSAwOwogICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBh
cmVudE5vZGUoKTsgbiAhPSBibG9jazsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewotICAgICAgICBp
bnQgdW5pY29kZUJpZGkgPSBnZXRJZGVudGlmaWVyVmFsdWUoY29tcHV0ZWRTdHlsZShuKS5nZXQo
KSwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CisgICAgICAgIGludCB1bmljb2RlQmlkaSA9IGdl
dElkZW50aWZpZXJWYWx1ZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShuKS5n
ZXQoKSwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaSAm
JiB1bmljb2RlQmlkaSAhPSBDU1NWYWx1ZU5vcm1hbCkgewogICAgICAgICAgICAgaGlnaGVzdEFu
Y2VzdG9yVW5pY29kZUJpZGkgPSB1bmljb2RlQmlkaTsKICAgICAgICAgICAgIG5leHRIaWdoZXN0
QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkgPSBoaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGk7
CkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRk
aW5nVQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3R5bGVkRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihuKTsKLSAgICAgICAgaW50IHVuaWNv
ZGVCaWRpID0gZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0KCks
IENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgICAgICBpbnQgdW5pY29kZUJpZGkgPSBnZXRJ
ZGVudGlmaWVyVmFsdWUoQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVu
dCkuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwogICAgICAgICBpZiAoIXVuaWNvZGVC
aWRpIHx8IHVuaWNvZGVCaWRpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVF
bWJlZGRpbmdVCiBzdGF0aWMgTm9kZSogaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9yKE5vZGUqIHN0
YXJ0Tm9kZSwgTm9kZSogZW5jbG9zaW5nTm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBzdGFy
dE5vZGU7IG4gJiYgbiAhPSBlbmNsb3NpbmdOb2RlOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0g
ICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1
dGVkU3R5bGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpID09IENTU1ZhbHVlRW1i
ZWQpCisgICAgICAgIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgZ2V0SWRlbnRpZmllclZhbHVl
KENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG4pLmdldCgpLCBDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpKSA9PSBDU1NWYWx1ZUVtYmVkKQogICAgICAgICAgICAgcmV0dXJuIG47CiAg
ICAgfQogCkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6Y29t
cHV0ZWRGb250U2l6CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShu
b2RlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpOwogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6aW5pdChOb2RlKiBub2RlLCBQcm9wCiAgICAgZWxzZSBpZiAoaXNUYWJTcGFu
Tm9kZShub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9u
ID0gY29tcHV0ZWRTdHlsZShub2RlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKG5vZGUpOwogICAgIG1fbXV0YWJsZVN0eWxlID0gcHJvcGVydGllc1RvSW5j
bHVkZSA9PSBBbGxQcm9wZXJ0aWVzICYmIGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uID8gY29tcHV0
ZWRTdHlsZUF0UG9zaXRpb24tPmNvcHkoKSA6IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxl
KGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0aWVzVG9JbmNsdWRl
ID09IEVkaXRpbmdQcm9wZXJ0aWVzSW5FZmZlY3QpIHsKQEAgLTU1OCw4ICs1NTgsOCBAQCB2b2lk
IEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kCiB7CiAgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShj
b21wdXRlZFN0eWxlKG5vZGUtPnBhcmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsK
LSAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJv
bUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlKSwgQWxsRWRpdGluZ1Byb3BlcnRpZXMp
OworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwYXJlbnRTdHlsZSA9IGVkaXRpbmdTdHls
ZUZyb21Db21wdXRlZFN0eWxlKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5v
ZGUtPnBhcmVudE5vZGUoKSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKKyAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUo
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSksIEFsbEVkaXRpbmdQcm9w
ZXJ0aWVzKTsKICAgICBub2RlU3R5bGUtPnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKHBhcmVu
dFN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwogICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhub2RlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVj
bGFyYXRpb24oKSk7CiB9CkBAIC01NjksOCArNTY5LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJl
bW92ZVN0eWxlQ29uZmxpY3RpbgogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgp
IHx8ICFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFN0eWxl
UHJvcGVydHlTZXQ+IHBhcmVudFN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUo
Y29tcHV0ZWRTdHlsZShub2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7
Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZy
b21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9kZSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVz
KTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5
bGVGcm9tQ29tcHV0ZWRTdHlsZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShu
b2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7CisgICAgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxl
KENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpLCBBbGxFZGl0aW5nUHJv
cGVydGllcyk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhwYXJl
bnRTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIAogICAgIHVuc2lnbmVkIHBy
b3BlcnR5Q291bnQgPSBub2RlU3R5bGUtPnByb3BlcnR5Q291bnQoKTsKQEAgLTY0MSw3ICs2NDEs
NyBAQCBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShjCiAKICAgICBUcmlT
dGF0ZSBzdGF0ZSA9IEZhbHNlVHJpU3RhdGU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dE5vZGUoKSkgewotICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBub2RlU3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOworICAgICAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBub2RlU3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZShub2RlKTsKICAgICAgICAgaWYgKG5vZGVTdHlsZSkgewogICAgICAgICAg
ICAgVHJpU3RhdGUgbm9kZVN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKG5vZGVTdHlsZS5nZXQoKSwg
bm9kZS0+aXNUZXh0Tm9kZSgpID8gRWRpdGluZ1N0eWxlOjpEb05vdElnbm9yZVRleHRPbmx5UHJv
cGVydGllcyA6IEVkaXRpbmdTdHlsZTo6SWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKTsKICAgICAg
ICAgICAgIGlmIChub2RlID09IHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpCkBA
IC04MTMsNyArODEzLDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmV4dHJhY3RDb25mbGljdGluZ0lt
cAogCiBib29sIEVkaXRpbmdTdHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5v
ZGUoTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdl
dFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZShub2Rl
KS5nZXQoKSktPmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IGdldFBy
b3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUobm9kZSkuZ2V0KCkpLT5pc0VtcHR5KCk7CiB9CiAKIGJvb2wgRWRpdGlu
Z1N0eWxlOjplbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxl
bWVudCogZWxlbWVudCkKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpt
ZXJnZVN0eWxlRnJvbVJ1bGVzRm8KICAgICAvLyBUaGUgcHJvcGVydHkgdmFsdWUsIGlmIGl0J3Mg
YSBwZXJjZW50YWdlLCBtYXkgbm90IHJlZmxlY3QgdGhlIGFjdHVhbCBjb21wdXRlZCB2YWx1ZS4g
IAogICAgIC8vIEZvciBleGFtcGxlOiBzdHlsZT0iaGVpZ2h0OiAxJTsgb3ZlcmZsb3c6IHZpc2li
bGU7IiBpbiBxdWlya3Ntb2RlCiAgICAgLy8gRklYTUU6IFRoZXJlIGFyZSBvdGhlcnMgbGlrZSB0
aGlzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTUxMjM+IFNsYXNoZG90IGNvcHkvcGFzdGUgZmlk
ZWxpdHkgcHJvYmxlbQotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNv
bXB1dGVkU3R5bGVGb3JFbGVtZW50ID0gY29tcHV0ZWRTdHlsZShlbGVtZW50KTsKKyAgICBSZWZQ
dHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRm9yRWxlbWVudCA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogICAgIFJlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBmcm9tQ29tcHV0ZWRTdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZSgpOwogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IG1fbXV0
YWJsZVN0eWxlLT5wcm9wZXJ0eUNvdW50KCk7CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIGhh
c1RyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yKFN0eWxlCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBi
YWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQogewogICAgIGZvciAoTm9kZSogYW5j
ZXN0b3IgPSBub2RlOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGFuY2VzdG9y
U3R5bGUgPSBjb21wdXRlZFN0eWxlKGFuY2VzdG9yKTsKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbj4gYW5jZXN0b3JTdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKGFuY2VzdG9yKTsKICAgICAgICAgaWYgKCFoYXNUcmFuc3BhcmVudEJh
Y2tncm91bmRDb2xvcihhbmNlc3RvclN0eWxlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBh
bmNlc3RvclN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAx
MDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyMSw3ICs1MjEsNyBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVj
dGlvbkZvCiAgICAgICAgICAgICBpZiAoIW4tPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobik7CisgICAgICAgICAgICBSZWZQdHI8
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKG4pOwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2Rl
QmlkaSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkp
OwogICAgICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1MSw3ICs1NTEsNyBA
QCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvCiAgICAgICAgIGlmICgh
bm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5
bGUobm9kZSk7CisgICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0
eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSk7CiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAh
dW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZQogCiAgICAgcmVjYWxjU3R5bGVGb3JQc2V1
ZG9TdGF0ZUlmTmVlZGVkKGVsZW1lbnQsIGZvcmNlZFBzZXVkb0NsYXNzZXMgPyBmb3JjZWRQc2V1
ZG9DbGFzc2VzLT5nZXQoKSA6IDApOwogCi0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbj4gY29tcHV0ZWRTdHlsZUluZm8gPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUp
OworICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJ
bmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7
CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0
eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIDApOwogICAg
IHN0eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG8KICAg
ICBpZiAoIWVsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gY29tcHV0ZWRTdHls
ZShlbHQsIGZhbHNlLCBwc2V1ZG9FbHQpOworICAgIHJldHVybiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZShlbHQsIGZhbHNlLCBwc2V1ZG9FbHQpOwogfQogCiBQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnQsIGJvb2wgYXV0aG9yT25seSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24g
MTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBTVkdBbmltYXRlRWxlbWVudDo6flNWR0FuaW1h
dGVFbGVtZW50KCkKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRQcm9wZXJ0eVZhbHVlKFNWR0VsZW1l
bnQqIHN2Z1BhcmVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc3ZnUGFyZW50LT5pc1N0eWxlZCgpKTsKLSAgICB2YWx1
ZSA9IGNvbXB1dGVkU3R5bGUoc3ZnUGFyZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0
eUlEKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKKyAgICB2YWx1ZSA9IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHN2Z1BhcmVudCktPmdldFByb3BlcnR5VmFsdWUoY3Nz
UHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiB9CiAKIHN0YXRpYyBib29s
IGluaGVyaXRzRnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3ICsyMjEsNyBAQCBTdHJp
bmcgU01JTFRpbWVDb250YWluZXI6OmJhc2VWYWx1ZUZvcihFCiAgICAgQVNTRVJUKGF0dHJpYnV0
ZU5hbWUgIT0gYW55UU5hbWUoKSk7CiAgICAgU3RyaW5nIGJhc2VWYWx1ZTsKICAgICBpZiAoU1ZH
QW5pbWF0aW9uRWxlbWVudDo6aXNUYXJnZXRBdHRyaWJ1dGVDU1NQcm9wZXJ0eSh0YXJnZXRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lKSkKLSAgICAgICAgYmFzZVZhbHVlID0gY29tcHV0ZWRTdHlsZSh0
YXJnZXRFbGVtZW50KS0+Z2V0UHJvcGVydHlWYWx1ZShjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0ZU5h
bWUubG9jYWxOYW1lKCkpKTsKKyAgICAgICAgYmFzZVZhbHVlID0gQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpjcmVhdGUodGFyZ2V0RWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUoY3NzUHJv
cGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CiAgICAgZWxzZQogICAgICAgICBi
YXNlVmFsdWUgPSB0YXJnZXRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiAg
ICAgbV9zYXZlZEJhc2VWYWx1ZXMuYWRkKGtleSwgYmFzZVZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTA3
Mjk1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUwLDcgKzY1MCw3IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmNv
bXB1dGVkU3R5bGVJbmNsdWQKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZCh0b1Jl
ZihleGVjKSk7CiAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZSA9IGNvbXB1dGVkU3R5bGUoc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSkt
PmltcGwoKSwgdHJ1ZSk7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
c3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxK
U0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+aW1wbCgpLCB0cnVlKTsKIAogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDE0LDcgKzY0MTQsNyBAQCAt
IChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9
IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICBFbGVtZW50
KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlKGVsZW1lbnQsIHRydWUpOworICAg
IFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRvUmVm
KGV4ZWMsIHRvSlMoZXhlYywganNFbGVtZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkp
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAkocmV2aXNpb24g
MTA3Mjk1KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04ODIsNyArODgyLDcgQEAgUVN0cmluZyBRV2ViRWxlbWVudDo6c3R5bGVQcm9w
ZXJ0eShjb25zdAogCiAgICAgICAgIGludCBwcm9wSUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwog
Ci0gICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29t
cHV0ZWRTdHlsZShtX2VsZW1lbnQsIHRydWUpOworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKG1fZWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIGlmICghcHJvcElEIHx8ICFzdHlsZSkKICAg
ICAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgc3RhdGljIGJvb2wgaXND
bGlja2FibGVFbGVtZW50KEVsZW1lbnQqIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IHJldHVybiBpc0NsaWNrYWJsZQogICAgICAgICB8fCBlbGVtZW50LT53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3IoImEsKjpsaW5rLCo6dmlzaXRlZCwqW3JvbGU9YnV0dG9uXSxidXR0b24saW5wdXQsc2Vs
ZWN0LGxhYmVsIiwgZWMpCi0gICAgICAgIHx8IGNvbXB1dGVkU3R5bGUoZWxlbWVudCktPmdldFBy
b3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKKyAgICAg
ICAgfHwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCktPmdldFBy
b3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJRCgiY3Vyc29yIikpID09ICJwb2ludGVyIjsKIH0KIAog
c3RhdGljIGJvb2wgaXNWYWxpZEZyYW1lT3duZXIoRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjM1LDcgKzYzNSw3IEBAIFFWYXJpYW50TWFwIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojpjb20KICAgICBpZiAoIXdlYkVsZW1lbnQpCiAgICAgICAgIHJldHVybiByZXM7CiAKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24gPSBjb21wdXRlZFN0eWxlKHdlYkVsZW1lbnQsIHRydWUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbiA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHdlYkVsZW1lbnQs
IHRydWUpOwogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbio+KGNvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5nZXQo
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0eWxlLT5sZW5ndGgoKTsgaSsrKSB7
CiAgICAgICAgIFFTdHJpbmcgbmFtZSA9IHN0eWxlLT5pdGVtKGkpOwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTkwLDcgKzE1OTAs
NyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6CiAKICAgICAgICAg
ICAgICAgICBzdHlsZVNoZWV0ICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoZ2V0UHJvcGVydHlOYW1l
KHByb3BlcnR5KSk7CiAgICAgICAgICAgICAgICAgc3R5bGVTaGVldCArPSBRTGF0aW4xQ2hhcign
OicpOwotICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQgKz0gY29tcHV0ZWRTdHlsZShlbGVtZW50
KS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgc3R5bGVTaGVl
dCArPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50KS0+Z2V0UHJv
cGVydHlWYWx1ZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgc3R5bGVTaGVldCArPSBRTGF0
aW4xQ2hhcignOycpOwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126525</attachid>
            <date>2012-02-10 09:35:21 -0800</date>
            <delta_ts>2012-02-10 09:39:18 -0800</delta_ts>
            <desc>refcount by hand instead of calling to RefCountedBase</desc>
            <filename>cssstyledeclaration-refcount-7.patch</filename>
            <type>text/plain</type>
            <size>27986</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5kZXJseWluZyBwcm9w
ZXJ0eSBzZXQgdG8gcmVmY291bnQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI1NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHRoZSBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gcmVmY291bnRpbmcuCisgICAgICAgIEFsc28g
bWFkZSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gY29uc3RydWN0aW9uIHVzZSB0aGUgc3Rh
bmRhcmQgY3JlYXRlKCkgcGF0dGVybi4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmRlcmVmKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uaDoKKyAgICAgICAgKENTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6flN0eWxlUHJvcGVy
dHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6ZW5zdXJlQ1NTU3R5
bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246Om1ha2VNdXRhYmxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5o
OgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVFbWJlZGRpbmdVcFRv
RW5jbG9zaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEVtYmVkZGluZ0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRT
aXplKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxl
OjpyZW1vdmVTdHlsZUFkZGVkQnlOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21w
dXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpnZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydHlWYWx1
ZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6YmFzZVZhbHVlRm9yKToKKwogMjAxMi0w
Mi0wOSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01MTksNyArNTE5LDcgQEAgX19aTjdXZWJDb3JlMTZTY3JpcHRD
b250cm9sbGVyMTh3aW5kb3dTYwogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjBleGVj
dXRlU2NyaXB0SW5Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFYgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjFwcm9jZXNzaW5nVXNlckdlc3R1cmVFdgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjRqc09iamVjdEZvclBsdWdpbkVsZW1lbnRF
UE5TXzE3SFRNTFBsdWdJbkVsZW1lbnRFCi1fX1pON1dlYkNvcmUxNlN0eWxlUHJvcGVydHlTZXQ1
ZGVyZWZFdgorX19aTjdXZWJDb3JlMTZTdHlsZVByb3BlcnR5U2V0RDFFdgogX19aTjdXZWJDb3Jl
MTZUaHJlYWRHbG9iYWxEYXRhMTBzdGF0aWNEYXRhRQogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9i
YWxEYXRhQzFFdgogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9iYWxEYXRhRDFFdgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzksNiArOTc5LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNyZWF0ZUxpbmVCbwogQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2RlPiBuLCBi
b29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lKQog
ICAgIDogbV9ub2RlKG4pCiAgICAgLCBtX2FsbG93VmlzaXRlZFN0eWxlKGFsbG93VmlzaXRlZFN0
eWxlKQorICAgICwgbV9yZWZDb3VudCgxKQogewogICAgIHVuc2lnbmVkIG5hbWVXaXRob3V0Q29s
b25zU3RhcnQgPSBwc2V1ZG9FbGVtZW50TmFtZVswXSA9PSAnOicgPyAocHNldWRvRWxlbWVudE5h
bWVbMV0gPT0gJzonID8gMiA6IDEpIDogMDsKICAgICBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIg
PSBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvVHlwZSgKQEAg
LTk4OSw2ICs5OTAsMTggQEAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp+Q1NTQ29tcHV0
ZQogewogfQogCit2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVmKCkKK3sKKyAg
ICArK21fcmVmQ291bnQ7Cit9CisKK3ZvaWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpk
ZXJlZigpCit7CisgICAgQVNTRVJUKG1fcmVmQ291bnQpOworICAgIGlmICghLS1tX3JlZkNvdW50
KQorICAgICAgICBkZWxldGUgdGhpczsKK30KKwogU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdCgiIik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
CShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDE1IEBAIGVudW0gRVVw
ZGF0ZUxheW91dCB7IERvTm90VXBkYXRlTGF5b3V0ID0KIAogY2xhc3MgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgotICAg
IGZyaWVuZCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRT
dHlsZShQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlLCBjb25zdCBTdHJp
bmcmIHBzZXVkb0VsZW1lbnROYW1lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIGJvb2wgYWxs
b3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50TmFtZSA9
IFN0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24obm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUsIHBzZXVkb0VsZW1lbnRO
YW1lKSk7CisgICAgfQogICAgIHZpcnR1YWwgfkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbigp
OwogCisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZigpIE9WRVJSSURFOworCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlD
U1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFs
dWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgZ2V0UHJvcGVydHlQcmlvcml0eShp
bnQgcHJvcGVydHlJRCkgY29uc3Q7CkBAIC0xMDksMTMgKzExNSw5IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBQc2V1ZG9JZCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZp
ZXI7CiAgICAgYm9vbCBtX2FsbG93VmlzaXRlZFN0eWxlOworICAgIHVuc2lnbmVkIG1fcmVmQ291
bnQ7CiB9OwogCi1pbmxpbmUgUGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+
IGNvbXB1dGVkU3R5bGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCAgYm9vbCBhbGxvd1Zpc2l0ZWRT
dHlsZSA9IGZhbHNlLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsZW1lbnROYW1lID0gU3RyaW5nKCkp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24o
bm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUsIHBzZXVkb0VsZW1lbnROYW1lKSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlz
aW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxNCBAQCBjbGFzcyBTdHlsZWRFbGVtZW50Owog
CiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENTU1N0eWxlRGVjbGFyYXRpb24pOworY2xhc3MgQ1NTU3R5bGVEZWNsYXJh
dGlvbiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTU3R5bGVEZWNsYXJhdGlvbik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNTU1N0eWxlRGVj
bGFyYXRpb24oKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZWYoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgPSAwOworCiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKQEAgLTY0LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNzc1Byb3Bl
cnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENT
U1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gCisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBzaG93U3R5bGUoKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NywxNyArNDcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwcm9wZXJ0eVNldCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uKHByb3BlcnR5U2V0KSk7IAotICAgIH0KKyAgICBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydHlTZXQpIDogbV9wcm9wZXJ0eVNldChwcm9w
ZXJ0eVNldCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uKFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydHlTZXQpIDogbV9wcm9wZXJ0
eVNldChwcm9wZXJ0eVNldCkgeyB9Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJS
SURFIHsgbV9wcm9wZXJ0eVNldC0+cmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBP
VkVSUklERSB7IG1fcHJvcGVydHlTZXQtPmRlcmVmKCk7IH0KKwogICAgIHZpcnR1YWwgQ1NTUnVs
ZSogcGFyZW50UnVsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0
eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lKSBPVkVSUklERTsKQEAgLTY2LDcgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNv
ZGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBi
b29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwpAQCAtNzYsNyArNzQsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjb3B5
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IG1ha2VNdXRhYmxlKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IG1fcHJvcGVydHlTZXQ7CisgICAgU3R5bGVQcm9wZXJ0eVNldCogbV9wcm9wZXJ0eVNl
dDsKIH07CiAKIG5hbWVzcGFjZSB7CkBAIC0yMjgsMTggKzIyNiw3IEBAIFN0eWxlUHJvcGVydHlT
ZXQ6OlN0eWxlUHJvcGVydHlTZXQoU3R5bGUKIAogU3R5bGVQcm9wZXJ0eVNldDo6flN0eWxlUHJv
cGVydHlTZXQoKQogewotfQotCi12b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmRlcmVmKCkKLXsKLSAg
ICBpZiAoZGVyZWZCYXNlKCkpIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgLy8gU3R5bGVQcm9wZXJ0eVNldCBhbmQgQ1NTU3R5bGVEZWNsYXJhdGlv
biByZWYgZWFjaCBvdGhlci4gV2hlbiB3ZSBoYXZlIGEgZGVjbGFyYXRpb24gYW5kCi0gICAgLy8g
b3VyIHJlZmNvdW50IGRyb3BzIHRvIG9uZSB3ZSBrbm93IGl0IGlzIHRoZSBvbmx5IHRoaW5nIGtl
ZXBpbmcgdXMgYWxpdmUuCi0gICAgaWYgKG1fY3NzU3R5bGVEZWNsYXJhdGlvbiAmJiBoYXNPbmVS
ZWYoKSkKLSAgICAgICAgbV9jc3NTdHlsZURlY2xhcmF0aW9uLmNsZWFyKCk7CisgICAgCiB9CiAK
IENTU1N0eWxlU2hlZXQqIFN0eWxlUHJvcGVydHlTZXQ6OmNvbnRleHRTdHlsZVNoZWV0KCkgY29u
c3QKQEAgLTExMzAsNyArMTExNyw3IEBAIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gU3R5
bGVQcm9wZXIKIENTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlUHJvcGVydHlTZXQ6OmVuc3VyZUNT
U1N0eWxlRGVjbGFyYXRpb24oKSBjb25zdAogewogICAgIGlmICghbV9jc3NTdHlsZURlY2xhcmF0
aW9uKQotICAgICAgICBtX2Nzc1N0eWxlRGVjbGFyYXRpb24gPSBQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZShjb25zdF9jYXN0PFN0eWxlUHJvcGVydHlTZXQqPih0aGlzKSk7
CisgICAgICAgIG1fY3NzU3R5bGVEZWNsYXJhdGlvbiA9IGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24oY29uc3RfY2FzdDxTdHlsZVByb3BlcnR5U2V0Kj4odGhpcykp
KTsKICAgICByZXR1cm4gbV9jc3NTdHlsZURlY2xhcmF0aW9uLmdldCgpOwogfQogCkBAIC0xMjUz
LDkgKzEyNDAsNiBAQCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFByb3BlcnR5U2V0CiAK
IFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjptYWtlTXV0YWJsZSgpCiB7Ci0gICAgQVNTRVJUKG1fcHJvcGVydHlTZXQtPm1fY3NzU3R5
bGVEZWNsYXJhdGlvbiA9PSB0aGlzIHx8ICghbV9wcm9wZXJ0eVNldC0+bV9jc3NTdHlsZURlY2xh
cmF0aW9uICYmIG1fcHJvcGVydHlTZXQtPmhhc09uZVJlZigpKSk7Ci0gICAgaWYgKCFtX3Byb3Bl
cnR5U2V0LT5tX2Nzc1N0eWxlRGVjbGFyYXRpb24pCi0gICAgICAgIG1fcHJvcGVydHlTZXQtPm1f
Y3NzU3R5bGVEZWNsYXJhdGlvbiA9IHRoaXM7CiAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQ7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAkocmV2aXNpb24gMTA3
Mjk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBTdHlsZWRFbGVtZW50OwogCi1jbGFzcyBT
dHlsZVByb3BlcnR5U2V0IDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2UgeworY2xhc3MgU3R5
bGVQcm9wZXJ0eVNldCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlUHJvcGVydHlTZXQ+IHsKIHB1
YmxpYzoKICAgICB+U3R5bGVQcm9wZXJ0eVNldCgpOwogCkBAIC02Myw4ICs2Myw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVByb3BlcnR5U2V0KGVsZW1lbnQs
IC8qaXNJbmxpbmVTdHlsZSovIGZhbHNlKSk7CiAgICAgfQogCi0gICAgdm9pZCBkZXJlZigpOwot
CiAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGll
cy5zaXplKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRp
ZXMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5QXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllc1tpbmRleF07IH0KQEAgLTE2OSw3
ICsxNjcsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50OwogICAg
IH0gbV9wYXJlbnQ7CiAgICAgCi0gICAgbXV0YWJsZSBSZWZQdHI8UHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uPiBtX2Nzc1N0eWxlRGVjbGFyYXRpb247CisgICAgbXV0YWJsZSBPd25QdHI8
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPiBtX2Nzc1N0eWxlRGVjbGFyYXRpb247CiAg
ICAgCiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Myw3ICsyODMs
NyBAQCBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gCiAgICAgRWxlbWVu
dCogZWxlbSA9IGVsZW1lbnQoKTsKICAgICBpZiAoIWVsZW0pCiAgICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBXZWJDb3JlOjpjb21wdXRlZFN0eWxlKGVsZW0pOworICAgIHJldHVybiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtKTsKIH0KIAogUG9zaXRpb24gUG9z
aXRpb246OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24g
MTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCBIVE1MRWxlbWVudCogQXBwbHlTdHls
ZUNvbW1hbmQ6OnNwbGl0QW5jCiAgICAgTm9kZSogbmV4dEhpZ2hlc3RBbmNlc3RvcldpdGhVbmlj
b2RlQmlkaSA9IDA7CiAgICAgaW50IGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRpID0gMDsKICAg
ICBmb3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4gIT0gYmxvY2s7IG4gPSBuLT5w
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgaW50IHVuaWNvZGVCaWRpID0gZ2V0SWRlbnRpZmllclZh
bHVlKGNvbXB1dGVkU3R5bGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAg
ICAgICBpbnQgdW5pY29kZUJpZGkgPSBnZXRJZGVudGlmaWVyVmFsdWUoQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjcmVhdGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwog
ICAgICAgICBpZiAodW5pY29kZUJpZGkgJiYgdW5pY29kZUJpZGkgIT0gQ1NTVmFsdWVOb3JtYWwp
IHsKICAgICAgICAgICAgIGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRpID0gdW5pY29kZUJpZGk7
CiAgICAgICAgICAgICBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gaGlnaGVz
dEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgQXBwbHlT
dHlsZUNvbW1hbmQ6OnJlbW92ZUVtYmVkZGluZ1UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4obik7Ci0gICAgICAgIGludCB1bmljb2RlQmlkaSA9IGdldElkZW50aWZpZXJWYWx1ZShjb21w
dXRlZFN0eWxlKGVsZW1lbnQpLmdldCgpLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKKyAgICAg
ICAgaW50IHVuaWNvZGVCaWRpID0gZ2V0SWRlbnRpZmllclZhbHVlKENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQpLmdldCgpLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
KTsKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCB1bmljb2RlQmlkaSA9PSBDU1NWYWx1ZU5v
cm1hbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVQogc3RhdGljIE5vZGUqIGhpZ2hlc3RF
bWJlZGRpbmdBbmNlc3RvcihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuY2xvc2luZ05vZGUpCiB7
CiAgICAgZm9yIChOb2RlKiBuID0gc3RhcnROb2RlOyBuICYmIG4gIT0gZW5jbG9zaW5nTm9kZTsg
biA9IG4tPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYm
IGdldElkZW50aWZpZXJWYWx1ZShjb21wdXRlZFN0eWxlKG4pLmdldCgpLCBDU1NQcm9wZXJ0eVVu
aWNvZGVCaWRpKSA9PSBDU1NWYWx1ZUVtYmVkKQorICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVu
dCgpICYmIGdldElkZW50aWZpZXJWYWx1ZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShuKS5nZXQoKSwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkgPT0gQ1NTVmFsdWVFbWJlZCkK
ICAgICAgICAgICAgIHJldHVybiBuOwogICAgIH0KIApAQCAtMTQxMCw3ICsxNDEwLDcgQEAgZmxv
YXQgQXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVkRm9udFNpegogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobm9kZSk7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0
ZShub2RlKTsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzgsNyArMzc4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmluaXQoTm9kZSogbm9kZSwgUHJv
cAogICAgIGVsc2UgaWYgKGlzVGFiU3Bhbk5vZGUobm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCk7CiAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IGNvbXB1dGVkU3R5bGUobm9kZSk7CisgICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24g
PSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShub2RlKTsKICAgICBtX211dGFi
bGVTdHlsZSA9IHByb3BlcnRpZXNUb0luY2x1ZGUgPT0gQWxsUHJvcGVydGllcyAmJiBjb21wdXRl
ZFN0eWxlQXRQb3NpdGlvbiA/IGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uLT5jb3B5KCkgOiBlZGl0
aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShjb21wdXRlZFN0eWxlQXRQb3NpdGlvbik7CiAKICAg
ICBpZiAocHJvcGVydGllc1RvSW5jbHVkZSA9PSBFZGl0aW5nUHJvcGVydGllc0luRWZmZWN0KSB7
CkBAIC01NTgsOCArNTU4LDggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQWRkZWRC
eU5vZAogewogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHBhcmVudFN0eWxlID0gZWRpdGlu
Z1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlLT5wYXJlbnROb2RlKCkp
LCBBbGxFZGl0aW5nUHJvcGVydGllcyk7Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG5v
ZGVTdHlsZSA9IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9k
ZSksIEFsbEVkaXRpbmdQcm9wZXJ0aWVzKTsKKyAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4g
cGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShub2RlLT5wYXJlbnROb2RlKCkpLCBBbGxFZGl0aW5nUHJv
cGVydGllcyk7CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG5vZGVTdHlsZSA9IGVkaXRp
bmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKG5vZGUpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7CiAgICAgbm9kZVN0eWxlLT5yZW1vdmVF
cXVpdmFsZW50UHJvcGVydGllcyhwYXJlbnRTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpKTsKICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMobm9k
ZVN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwogfQpAQCAtNTY5LDggKzU2OSw4
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW4KICAgICBpZiAoIW5v
ZGUgfHwgIW5vZGUtPnBhcmVudE5vZGUoKSB8fCAhbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBwYXJlbnRTdHlsZSA9IGVkaXRp
bmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9kZS0+cGFyZW50Tm9kZSgp
KSwgQWxsRWRpdGluZ1Byb3BlcnRpZXMpOwotICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBu
b2RlU3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShjb21wdXRlZFN0eWxlKG5v
ZGUpLCBBbGxFZGl0aW5nUHJvcGVydGllcyk7CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IHBhcmVudFN0eWxlID0gZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZS0+cGFyZW50Tm9kZSgpKSwgQWxsRWRpdGluZ1By
b3BlcnRpZXMpOworICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBub2RlU3R5bGUgPSBlZGl0
aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShub2RlKSwgQWxsRWRpdGluZ1Byb3BlcnRpZXMpOwogICAgIG5vZGVTdHlsZS0+cmVtb3Zl
RXF1aXZhbGVudFByb3BlcnRpZXMocGFyZW50U3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRp
b24oKSk7CiAKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNvdW50ID0gbm9kZVN0eWxlLT5wcm9wZXJ0
eUNvdW50KCk7CkBAIC02NDEsNyArNjQxLDcgQEAgVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlT
dGF0ZU9mU3R5bGUoYwogCiAgICAgVHJpU3RhdGUgc3RhdGUgPSBGYWxzZVRyaVN0YXRlOwogICAg
IGZvciAoTm9kZSogbm9kZSA9IHNlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxlID0gY29tcHV0ZWRTdHlsZShub2Rl
KTsKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxl
ID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUobm9kZSk7CiAgICAgICAgIGlm
IChub2RlU3R5bGUpIHsKICAgICAgICAgICAgIFRyaVN0YXRlIG5vZGVTdGF0ZSA9IHRyaVN0YXRl
T2ZTdHlsZShub2RlU3R5bGUuZ2V0KCksIG5vZGUtPmlzVGV4dE5vZGUoKSA/IEVkaXRpbmdTdHls
ZTo6RG9Ob3RJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgOiBFZGl0aW5nU3R5bGU6Oklnbm9yZVRl
eHRPbmx5UHJvcGVydGllcyk7CiAgICAgICAgICAgICBpZiAobm9kZSA9PSBzZWxlY3Rpb24uc3Rh
cnQoKS5kZXByZWNhdGVkTm9kZSgpKQpAQCAtODEzLDcgKzgxMyw3IEBAIGJvb2wgRWRpdGluZ1N0
eWxlOjpleHRyYWN0Q29uZmxpY3RpbmdJbXAKIAogYm9vbCBFZGl0aW5nU3R5bGU6OnN0eWxlSXNQ
cmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFtX211dGFibGVTdHlsZSB8fCBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUobm9kZSkuZ2V0KCkpLT5pc0VtcHR5KCk7CisgICAgcmV0dXJu
ICFtX211dGFibGVTdHlsZSB8fCBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5bGUuZ2V0
KCksIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUpLmdldCgpKS0+aXNF
bXB0eSgpOwogfQogCiBib29sIEVkaXRpbmdTdHlsZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRN
TEVxdWl2YWxlbnQoY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQpCkBAIC0xMDYxLDcgKzEwNjEs
NyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlc0ZvCiAgICAgLy8gVGhl
IHByb3BlcnR5IHZhbHVlLCBpZiBpdCdzIGEgcGVyY2VudGFnZSwgbWF5IG5vdCByZWZsZWN0IHRo
ZSBhY3R1YWwgY29tcHV0ZWQgdmFsdWUuICAKICAgICAvLyBGb3IgZXhhbXBsZTogc3R5bGU9Imhl
aWdodDogMSU7IG92ZXJmbG93OiB2aXNpYmxlOyIgaW4gcXVpcmtzbW9kZQogICAgIC8vIEZJWE1F
OiBUaGVyZSBhcmUgb3RoZXJzIGxpa2UgdGhpcywgc2VlIDxyZGFyOi8vcHJvYmxlbS81MTk1MTIz
PiBTbGFzaGRvdCBjb3B5L3Bhc3RlIGZpZGVsaXR5IHByb2JsZW0KLSAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRm9yRWxlbWVudCA9IGNvbXB1dGVk
U3R5bGUoZWxlbWVudCk7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
Y29tcHV0ZWRTdHlsZUZvckVsZW1lbnQgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNy
ZWF0ZShlbGVtZW50KTsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gZnJvbUNvbXB1dGVk
U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIHByb3BlcnR5Q291bnQgPSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlDb3VudCgpOwpAQCAt
MTQ4Nyw3ICsxNDg3LDcgQEAgYm9vbCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihTdHls
ZQogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYmFja2dyb3VuZENvbG9ySW5FZmZlY3QoTm9kZSogbm9k
ZSkKIHsKICAgICBmb3IgKE5vZGUqIGFuY2VzdG9yID0gbm9kZTsgYW5jZXN0b3I7IGFuY2VzdG9y
ID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uPiBhbmNlc3RvclN0eWxlID0gY29tcHV0ZWRTdHlsZShhbmNlc3Rvcik7
CisgICAgICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGFuY2VzdG9yU3R5
bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShhbmNlc3Rvcik7CiAgICAg
ICAgIGlmICghaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoYW5jZXN0b3JTdHlsZS5nZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3JTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjEsNyArNTIxLDcgQEAgV3JpdGluZ0Rp
cmVjdGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25GbwogICAgICAgICAgICAgaWYgKCFuLT5pc1N0
eWxlZEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAg
UmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxl
KG4pOworICAgICAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShuKTsKICAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICAgICAgICAgIGlmICghdW5pY29kZUJpZGkg
fHwgIXVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CkBAIC01NTEsNyArNTUxLDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0b3I6OnRleHRE
aXJlY3Rpb25GbwogICAgICAgICBpZiAoIW5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlKG5vZGUpOworICAgICAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKG5vZGUpOwogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0g
c3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAg
ICAgIGlmICghdW5pY29kZUJpZGkgfHwgIXVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTU5LDcgKzU1OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGUK
IAogICAgIHJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJZk5lZWRlZChlbGVtZW50LCBmb3JjZWRQ
c2V1ZG9DbGFzc2VzID8gZm9yY2VkUHNldWRvQ2xhc3Nlcy0+Z2V0KCkgOiAwKTsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0gY29t
cHV0ZWRTdHlsZShlbGVtZW50LCB0cnVlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlSW5mbyA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5z
cGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIGNv
bXB1dGVkU3R5bGVJbmZvLCAwKTsKICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFy
cmF5Rm9yQ29tcHV0ZWRTdHlsZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBQYXNzUmVmUHRyPENTU1N0eWxl
RGVjbGFyYXRpb24+IERPTVdpbmRvCiAgICAgaWYgKCFlbHQpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUoZWx0LCBmYWxzZSwgcHNldWRvRWx0KTsKKyAgICBy
ZXR1cm4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWx0LCBmYWxzZSwgcHNl
dWRvRWx0KTsKIH0KIAogUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRj
aGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50
LCBib29sIGF1dGhvck9ubHkpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgU1ZH
QW5pbWF0ZUVsZW1lbnQ6On5TVkdBbmltYXRlRWxlbWVudCgpCiBzdGF0aWMgaW5saW5lIHZvaWQg
Z2V0UHJvcGVydHlWYWx1ZShTVkdFbGVtZW50KiBzdmdQYXJlbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFN0cmluZyYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHN2Z1BhcmVu
dC0+aXNTdHlsZWQoKSk7Ci0gICAgdmFsdWUgPSBjb21wdXRlZFN0eWxlKHN2Z1BhcmVudCktPmdl
dFByb3BlcnR5VmFsdWUoY3NzUHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7
CisgICAgdmFsdWUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShzdmdQYXJl
bnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5h
bWUoKSkpOwogfQogCiBzdGF0aWMgYm9vbCBpbmhlcml0c0Zyb21Qcm9wZXJ0eShTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjEsNyArMjIxLDcgQEAgU3RyaW5nIFNNSUxUaW1lQ29udGFpbmVyOjpiYXNlVmFsdWVG
b3IoRQogICAgIEFTU0VSVChhdHRyaWJ1dGVOYW1lICE9IGFueVFOYW1lKCkpOwogICAgIFN0cmlu
ZyBiYXNlVmFsdWU7CiAgICAgaWYgKFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzVGFyZ2V0QXR0cmli
dXRlQ1NTUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpCi0gICAgICAgIGJh
c2VWYWx1ZSA9IGNvbXB1dGVkU3R5bGUodGFyZ2V0RWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUo
Y3NzUHJvcGVydHlJRChhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CisgICAgICAgIGJhc2VW
YWx1ZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHRhcmdldEVsZW1lbnQp
LT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KSkpOwogICAgIGVsc2UKICAgICAgICAgYmFzZVZhbHVlID0gdGFyZ2V0RWxlbWVudC0+Z2V0QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwogICAgIG1fc2F2ZWRCYXNlVmFsdWVzLmFkZChrZXksIGJh
c2VWYWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MCw3ICs2NTAsNyBA
QCBKU1ZhbHVlUmVmIFdlYkZyYW1lOjpjb21wdXRlZFN0eWxlSW5jbHVkCiAgICAgaWYgKCF0b0pT
KGVsZW1lbnQpLT5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQodG9SZWYoZXhlYykpOwogCi0gICAgUmVmUHRyPENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlKHN0YXRpY19jYXN0PEpT
RWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT5pbXBsKCksIHRydWUpOworICAgIFJlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSktPmltcGwo
KSwgdHJ1ZSk7CiAKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAg
IHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuZ2V0KCkp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEwNzI5
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjQxNCw3ICs2NDE0LDcgQEAgLSAoSlNWYWx1ZVJlZilfY29tcHV0ZWRTdHlsZUluY2x1
ZGluZ1ZpcwogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAg
ICAgSlNFbGVtZW50KiBqc0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPihhc09iamVj
dChqc1ZhbHVlKSk7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGpzRWxlbWVudC0+aW1wbCgpOwot
ICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRT
dHlsZShlbGVtZW50LCB0cnVlKTsKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQs
IHRydWUpOwogICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xv
YmFsT2JqZWN0KCksIHN0eWxlLmdldCgpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJlbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZWxlbWVudC5jcHAJKHJldmlzaW9uIDEwNzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJlbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgyLDcgKzg4Miw3IEBAIFFTdHJp
bmcgUVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkoY29uc3QKIAogICAgICAgICBpbnQgcHJvcElE
ID0gY3NzUHJvcGVydHlJRChuYW1lKTsKIAotICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUobV9lbGVtZW50LCB0cnVlKTsKKyAg
ICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShtX2VsZW1lbnQsIHRydWUpOwogICAgICAgICBp
ZiAoIXByb3BJRCB8fCAhc3R5bGUpCiAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiAxMDcyOTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjYsNyAr
MTU2Niw3IEBAIHN0YXRpYyBib29sIGlzQ2xpY2thYmxlRWxlbWVudChFbGVtZW50KiAKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICByZXR1cm4gaXNDbGlja2FibGUKICAgICAgICAgfHwg
ZWxlbWVudC0+d2Via2l0TWF0Y2hlc1NlbGVjdG9yKCJhLCo6bGluaywqOnZpc2l0ZWQsKltyb2xl
PWJ1dHRvbl0sYnV0dG9uLGlucHV0LHNlbGVjdCxsYWJlbCIsIGVjKQotICAgICAgICB8fCBjb21w
dXRlZFN0eWxlKGVsZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoImN1cnNv
ciIpKSA9PSAicG9pbnRlciI7CisgICAgICAgIHx8IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKGVsZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKGNzc1Byb3BlcnR5SUQoImN1cnNv
ciIpKSA9PSAicG9pbnRlciI7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRGcmFtZU93bmVyKEVs
ZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24gMTA3
Mjk1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNSw3ICs2MzUsNyBAQCBRVmFyaWFudE1h
cCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tCiAgICAgaWYgKCF3ZWJFbGVtZW50KQogICAg
ICAgICByZXR1cm4gcmVzOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uID0gY29tcHV0ZWRTdHlsZSh3ZWJF
bGVtZW50LCB0cnVlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBjb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSh3ZWJFbGVtZW50LCB0cnVlKTsKICAgICBDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qPihjb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uZ2V0KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzdHlsZS0+bGVuZ3RoKCk7IGkrKykgewogICAgICAgICBRU3RyaW5nIG5hbWUgPSBzdHlsZS0+
aXRlbShpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTA3Mjk1KQorKysgU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5MCw3ICsxNTkwLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OgogCiAgICAgICAgICAgICAgICAgc3R5bGVTaGVldCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eSkpOwogICAgICAgICAgICAgICAgIHN0
eWxlU2hlZXQgKz0gUUxhdGluMUNoYXIoJzonKTsKLSAgICAgICAgICAgICAgICBzdHlsZVNoZWV0
ICs9IGNvbXB1dGVkU3R5bGUoZWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOwor
ICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQgKz0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUoZWxlbWVudCktPmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOwogICAgICAgICAg
ICAgICAgIHN0eWxlU2hlZXQgKz0gUUxhdGluMUNoYXIoJzsnKTsKICAgICAgICAgICAgIH0KIAo=
</data>
<flag name="review"
          id="128356"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>