<?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>150788</bug_id>
          
          <creation_ts>2015-11-01 18:12:50 -0800</creation_ts>
          <short_desc>Replace 0 and NULL with nullptr in WebCore/dom.</short_desc>
          <delta_ts>2015-11-03 10:25:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hunseop Jeong">hs85.jeong</reporter>
          <assigned_to name="Hunseop Jeong">hs85.jeong</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138436</commentid>
    <comment_count>0</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-11-01 18:12:50 -0800</bug_when>
    <thetext>Use the &apos;nullptr&apos; instead of &apos;0&apos; and &apos;NULL&apos; in WebCore/dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138438</commentid>
    <comment_count>1</comment_count>
      <attachid>264548</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-11-01 18:17:36 -0800</bug_when>
    <thetext>Created attachment 264548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138442</commentid>
    <comment_count>2</comment_count>
      <attachid>264549</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-11-01 18:46:30 -0800</bug_when>
    <thetext>Created attachment 264549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138465</commentid>
    <comment_count>3</comment_count>
      <attachid>264549</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-01 22:00:58 -0800</bug_when>
    <thetext>Comment on attachment 264549
Patch

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

Looks good.

&gt; Source/WebCore/dom/Attr.cpp:49
&gt; +    , m_element(nullptr)

This initialization of m_element to nullptr should be done in the header, as you did with m_ignoreChildrenChanged. It’s OK if other constructors initialize it to something else.

&gt; Source/WebCore/dom/ContainerNode.cpp:67
&gt; +ChildNodesLazySnapshot* ChildNodesLazySnapshot::latestSnapshot = nullptr;

This isn’t needed. A static data member like this will automatically be initialized to null without saying &quot;= nullptr&quot;.

&gt; Source/WebCore/dom/DocumentOrderedMap.h:-77
&gt; -            : element(0)

I would have initialized count to zero where it’s defined below too, just like element.

&gt; Source/WebCore/dom/Event.cpp:-53
&gt; -    , m_currentTarget(0)

I would have initialized all those other data members where they are defined too, just like we are doing for m_currentTarget.

&gt; Source/WebCore/dom/EventListenerMap.cpp:-201
&gt; -    : m_map(0)

I would have initialized the other data members where they are defined too.

&gt; Source/WebCore/dom/Node.h:707
&gt; +        DataUnion() { }

I don’t think we need to write this constructor out explicitly. I think it’s what will automatically be generated.

&gt; Source/WebCore/dom/PositionIterator.h:40
&gt; -        : m_anchorNode(0)
&gt; -        , m_nodeAfterPositionInAnchor(0)
&gt; -        , m_offsetInAnchor(0)
&gt; +        : m_offsetInAnchor(0)

I would have initialized m_offsetInAnchor where it&apos;s defined too.

&gt; Source/WebCore/dom/ProcessingInstruction.cpp:-45
&gt; -    , m_cachedSheet(0)

I would have initialized those other data members where they are defined too.

&gt; Source/WebCore/dom/RangeBoundaryPoint.h:-70
&gt; -    , m_childBeforeBoundary(0)

I would have initialized m_offsetInContainer where it&apos;s defined too.

&gt; Source/WebCore/dom/ScriptElement.cpp:60
&gt; +    , m_cachedScript(nullptr)

This isn’t needed. CachedResourceHandle already initializes itself to null without explicit initialization.

&gt; Source/WebCore/dom/StyledElement.cpp:49
&gt; +    PresentationAttributeCacheKey() { }

I think you can omit this entirely now that it’s empty. You should at least try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138857</commentid>
    <comment_count>4</comment_count>
      <attachid>264670</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-11-02 23:08:11 -0800</bug_when>
    <thetext>Created attachment 264670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138858</commentid>
    <comment_count>5</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-11-02 23:09:58 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 264549 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264549&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Source/WebCore/dom/Attr.cpp:49
&gt; &gt; +    , m_element(nullptr)
&gt; 
&gt; This initialization of m_element to nullptr should be done in the header, as
&gt; you did with m_ignoreChildrenChanged. It’s OK if other constructors
&gt; initialize it to something else.
Okay. I moved the constructor initializer to the header.
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNode.cpp:67
&gt; &gt; +ChildNodesLazySnapshot* ChildNodesLazySnapshot::latestSnapshot = nullptr;
&gt; 
&gt; This isn’t needed. A static data member like this will automatically be
&gt; initialized to null without saying &quot;= nullptr&quot;.
Oops, I will be kept in mind.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentOrderedMap.h:-77
&gt; &gt; -            : element(0)
&gt; 
&gt; I would have initialized count to zero where it’s defined below too, just
&gt; like element.
I moved the initialized count where it&apos;s defined.
&gt; 
&gt; &gt; Source/WebCore/dom/Event.cpp:-53
&gt; &gt; -    , m_currentTarget(0)
&gt; 
&gt; I would have initialized all those other data members where they are defined
&gt; too, just like we are doing for m_currentTarget.
I moved the constructor iniailizers to they are defined.
I will keep working to change the codes that not only using the &apos;nullptr&apos; but also moving the constructor initailizers to they are defined.
&gt; 
&gt; &gt; Source/WebCore/dom/EventListenerMap.cpp:-201
&gt; &gt; -    : m_map(0)
&gt; 
&gt; I would have initialized the other data members where they are defined too.
Done. And I removed the default constructor because it is empty.
&gt; 
&gt; &gt; Source/WebCore/dom/Node.h:707
&gt; &gt; +        DataUnion() { }
&gt; 
&gt; I don’t think we need to write this constructor out explicitly. I think it’s
&gt; what will automatically be generated.
I deleted it.
&gt; 
&gt; &gt; Source/WebCore/dom/PositionIterator.h:40
&gt; &gt; -        : m_anchorNode(0)
&gt; &gt; -        , m_nodeAfterPositionInAnchor(0)
&gt; &gt; -        , m_offsetInAnchor(0)
&gt; &gt; +        : m_offsetInAnchor(0)
&gt; 
&gt; I would have initialized m_offsetInAnchor where it&apos;s defined too.
Done. And I removed the default constructor of PositionIterator because it is empty.
&gt; 
&gt; &gt; Source/WebCore/dom/ProcessingInstruction.cpp:-45
&gt; &gt; -    , m_cachedSheet(0)
&gt; 
&gt; I would have initialized those other data members where they are defined too.
Done.
&gt; 
&gt; &gt; Source/WebCore/dom/RangeBoundaryPoint.h:-70
&gt; &gt; -    , m_childBeforeBoundary(0)
&gt; 
&gt; I would have initialized m_offsetInContainer where it&apos;s defined too.
Done.
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptElement.cpp:60
&gt; &gt; +    , m_cachedScript(nullptr)
&gt; 
&gt; This isn’t needed. CachedResourceHandle already initializes itself to null
&gt; without explicit initialization.
I removed the explicit initailaization. And initialized other data members where they are defined.
&gt; 
&gt; &gt; Source/WebCore/dom/StyledElement.cpp:49
&gt; &gt; +    PresentationAttributeCacheKey() { }
&gt; 
&gt; I think you can omit this entirely now that it’s empty. You should at least
&gt; try it.
Done.

Could you check again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138947</commentid>
    <comment_count>6</comment_count>
      <attachid>264670</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-03 09:37:59 -0800</bug_when>
    <thetext>Comment on attachment 264670
Patch

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

&gt; Source/WebCore/dom/IdTargetObserverRegistry.h:43
&gt; +    IdTargetObserverRegistry() { }

I think this can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138961</commentid>
    <comment_count>7</comment_count>
      <attachid>264670</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 10:25:27 -0800</bug_when>
    <thetext>Comment on attachment 264670
Patch

Clearing flags on attachment: 264670

Committed r191955: &lt;http://trac.webkit.org/changeset/191955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138962</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 10:25:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264548</attachid>
            <date>2015-11-01 18:17:36 -0800</date>
            <delta_ts>2015-11-01 18:46:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150788-20151102111640.patch</filename>
            <type>text/plain</type>
            <size>49748</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTg3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBAQAorMjAxNS0xMS0wMSAgSHVuc2Vv
cCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVwbGFjZSAwIGFu
ZCBOVUxMIHdpdGggbnVsbHB0ciBpbiBXZWJDb3JlL2RvbS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6ZGV0YWNoRnJv
bUVsZW1lbnRXaXRoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6YXR0YWNoVG9FbGVt
ZW50KToKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DaGVja2VkUmFkaW9C
dXR0b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNo
ZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpjaGVj
a2VkQnV0dG9uRm9yR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9u
czo6aXNJblJlcXVpcmVkR3JvdXApOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
OmVucXVldWVNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2Vlbik6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OkNvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d2VsbEZvcm1lZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0UnVubmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb2R1bGVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmN1cnJlbnRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6Ok1hcEVudHJ5
OjpNYXBFbnRyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50UGFyc2VyOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRQYXJzZXI6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpibHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBz
ZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEJlZm9yZVBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6RXZl
bnQpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6Omxl
Z2FjeVJldHVyblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50OjpzZXRMZWdhY3lSZXR1
cm5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAg
ICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZU9yRm9j
dXNFdmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCk6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6Omxhc3RD
b250ZXh0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpjb3B5RXZlbnRMaXN0ZW5lcnNOb3RDcmVhdGVk
RnJvbU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJJdGVy
YXRvcjo6RXZlbnRMaXN0ZW5lckl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5l
ck1hcC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vRm9jdXNF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0V2ZW50SW5pdDo6Rm9jdXNFdmVudElu
aXQpOgorICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwpOgorICAgICAgICAqIGRvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKToKKyAgICAgICAg
KiBkb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Oklnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOjpJZ25vcmVE
ZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcik6CisgICAgICAgICogZG9tL01lc3NhZ2VF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudCk6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9y
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2xlZFBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgorICAgICAgICAqIGRv
bS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnRJbml0OjpNb3Vz
ZUV2ZW50SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpjbG9uZUZvcik6Cisg
ICAgICAgICogZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6
OmRhdGFUcmFuc2Zlcik6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRp
b24pOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm9kZUxpc3RzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmNsZWFyTm9kZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vblNo
YWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRP
clNoYWRvd0hvc3RFbGVtZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRv
bS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpy
ZW1vdmVDYWNoZWRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVE
YXRhOjppc0VtcHR5KToKKyAgICAgICAgKiBkb20vUGVuZGluZ1NjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQZW5kaW5nU2NyaXB0OjpyZWxlYXNlRWxlbWVudEFuZENsZWFyKToKKyAgICAg
ICAgKiBkb20vUG9wU3RhdGVFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2
ZW50OjpQb3BTdGF0ZUV2ZW50KToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpkZXByZWNhdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3NpdGlvbjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJvb3RFZGl0
YWJsZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmRlY3JlbWVudCk6CisgICAgICAgICogZG9t
L1Bvc2l0aW9uSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6
OlBvc2l0aW9uSXRlcmF0b3IpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpj
aGVja1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aDoKKyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdlQm91bmRhcnlQb2ludCk6CisgICAgICAgICogZG9t
L1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6U2Ny
aXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpzdG9wTG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aWdub3Jlc0xvYWRSZXF1ZXN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNsZWFyRG9jdW1lbnRQb2ludGVy
KToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleTo6UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZGl0aW9uYWxQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjppbmxpbmVT
dHlsZSk6CisgICAgICAgICogZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaDoK
KyAgICAgICAgKiBkb20vVGV4dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVu
dDo6VGV4dEV2ZW50KToKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpVSUV2ZW50SW5pdDo6VUlFdmVudEluaXQpOgorICAgICAgICAqIGRvbS9Vc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyVHlwaW5nR2VzdHVy
ZUluZGljYXRvcjo6VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6On5Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRv
cik6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6Om51bWVyaWNQcmVmaXgpOgorICAgICAgICAqIGRvbS9kZWZhdWx0
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgICogZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaDoKKwogMjAxNS0x
MS0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFuIHVwIHNvbWUgQ1NTICYgRm9udCBjb2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCShyZXZp
c2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDE2ICs0MSwxNCBAQCBBdHRyOjpBdHRyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFF1YWxpCiAgICAgOiBDb250YWluZXJOb2RlKGVsZW1lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV9pZ25vcmVDaGls
ZHJlbkNoYW5nZWQoMCkKIHsKIH0KIAogQXR0cjo6QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhbG9uZVZh
bHVlKQogICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKLSAgICAsIG1fZWxlbWVudCgwKQor
ICAgICwgbV9lbGVtZW50KG51bGxwdHIpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fc3Rh
bmRhbG9uZVZhbHVlKHN0YW5kYWxvbmVWYWx1ZSkKLSAgICAsIG1faWdub3JlQ2hpbGRyZW5DaGFu
Z2VkKDApCiB7CiB9CiAKQEAgLTIwOSw3ICsyMDcsNyBAQCB2b2lkIEF0dHI6OmRldGFjaEZyb21F
bGVtZW50V2l0aFZhbHVlKGNvCiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgQVNTRVJUKG1f
c3RhbmRhbG9uZVZhbHVlLmlzTnVsbCgpKTsKICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVl
OwotICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9lbGVtZW50ID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBBdHRyOjphdHRhY2hUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
aAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3N0
YW5kYWxvbmVWYWx1ZTsKIAogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtX3N0
eWxlOwotICAgIHVuc2lnbmVkIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkOworICAgIHVuc2lnbmVk
IG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAko
cmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSYWRpb0J1dHRv
bkdyb3VwOjp1cGRhdGVDaGVja2VkU3RhdAogICAgICAgICBzZXRDaGVja2VkQnV0dG9uKGJ1dHRv
bik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX2NoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQot
ICAgICAgICAgICAgbV9jaGVja2VkQnV0dG9uID0gMDsKKyAgICAgICAgICAgIG1fY2hlY2tlZEJ1
dHRvbiA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCiAg
ICAgICAgIHVwZGF0ZVZhbGlkaXR5Rm9yQWxsQnV0dG9ucygpOwpAQCAtMjI0LDcgKzIyNCw3IEBA
IEhUTUxJbnB1dEVsZW1lbnQqIENoZWNrZWRSYWRpb0J1dHRvbnM6OmMKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgbV9uYW1lVG9Hcm91cE1hcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIFJhZGlv
QnV0dG9uR3JvdXAqIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+Z2V0KG5hbWUuaW1wbCgpKTsK
LSAgICByZXR1cm4gZ3JvdXAgPyBncm91cC0+Y2hlY2tlZEJ1dHRvbigpIDogMDsKKyAgICByZXR1
cm4gZ3JvdXAgPyBncm91cC0+Y2hlY2tlZEJ1dHRvbigpIDogbnVsbHB0cjsKIH0KIAogYm9vbCBD
aGVja2VkUmFkaW9CdXR0b25zOjppc0luUmVxdWlyZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9u
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcg
QEAgdm9pZCBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjplbnF1ZQogICAgIFJlZlB0cjxO
b2RlTGlzdD4gcmVtb3ZlZE5vZGVzID0gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1fcmVtb3ZlZE5v
ZGVzKTsKICAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHJlY29yZCA9IE11dGF0aW9uUmVjb3Jk
OjpjcmVhdGVDaGlsZExpc3QobV90YXJnZXQsIGFkZGVkTm9kZXMucmVsZWFzZSgpLCByZW1vdmVk
Tm9kZXMucmVsZWFzZSgpLCBtX3ByZXZpb3VzU2libGluZy5yZWxlYXNlKCksIG1fbmV4dFNpYmxp
bmcucmVsZWFzZSgpKTsKICAgICBtX29ic2VydmVycy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKHJl
Y29yZC5yZWxlYXNlKCkpOwotICAgIG1fbGFzdEFkZGVkID0gMDsKKyAgICBtX2xhc3RBZGRlZCA9
IG51bGxwdHI7CiAgICAgQVNTRVJUKGlzRW1wdHkoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZl
bnRzKE5vZGUmKTsKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUm
KTsKIAotQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bGF0
ZXN0U25hcHNob3QgPSAwOworQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlT
bmFwc2hvdDo6bGF0ZXN0U25hcHNob3QgPSBudWxscHRyOwogCiAjaWZuZGVmIE5ERUJVRwogdW5z
aWduZWQgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpzX2NvdW50ID0gMDsKQEAgLTU4Niw5ICs1
ODYsOSBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogCiAgICAgaWYg
KG1fbGFzdENoaWxkID09ICZvbGRDaGlsZCkKICAgICAgICAgbV9sYXN0Q2hpbGQgPSBwcmV2aW91
c0NoaWxkOwogCi0gICAgb2xkQ2hpbGQuc2V0UHJldmlvdXNTaWJsaW5nKDApOwotICAgIG9sZENo
aWxkLnNldE5leHRTaWJsaW5nKDApOwotICAgIG9sZENoaWxkLnNldFBhcmVudE5vZGUoMCk7Cisg
ICAgb2xkQ2hpbGQuc2V0UHJldmlvdXNTaWJsaW5nKG51bGxwdHIpOworICAgIG9sZENoaWxkLnNl
dE5leHRTaWJsaW5nKG51bGxwdHIpOworICAgIG9sZENoaWxkLnNldFBhcmVudE5vZGUobnVsbHB0
cik7CiAKICAgICBkb2N1bWVudCgpLmFkb3B0SWZOZWVkZWQoJm9sZENoaWxkKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDE0ICsx
ODAsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFJlbW92ZUNoaWxkKE5vZGUmIGNoaWxk
KTsKIAotICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsKLSAgICBOb2RlKiBtX2xhc3RDaGlsZDsKKyAg
ICBOb2RlKiBtX2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07CisgICAgTm9kZSogbV9sYXN0Q2hpbGQg
eyBudWxscHRyIH07CiB9OwogCiBpbmxpbmUgQ29udGFpbmVyTm9kZTo6Q29udGFpbmVyTm9kZShE
b2N1bWVudCYgZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IE5vZGUoZG9j
dW1lbnQsIHR5cGUpCi0gICAgLCBtX2ZpcnN0Q2hpbGQoMCkKLSAgICAsIG1fbGFzdENoaWxkKDAp
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGEKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5jc3NUYXJnZXQoKSA9PSAmbm9kZSkKLSAgICAg
ICAgbm9kZS5kb2N1bWVudCgpLnNldENTU1RhcmdldCgwKTsKKyAgICAgICAgbm9kZS5kb2N1bWVu
dCgpLnNldENTU1RhcmdldChudWxscHRyKTsKIAogICAgIGlmIChSZWZQdHI8U2hhZG93Um9vdD4g
cm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBp
ZiAoIW5vZGUuaW5Eb2N1bWVudCgpICYmIHJvb3QtPmhvc3QoKSA9PSAmbm9kZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIwLDcgKzYyMCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudExvYWRlciogbG9hZGVyKCkgY29uc3Q7CiAK
LSAgICB2b2lkIG9wZW4oRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSAwKTsKKyAgICB2b2lkIG9w
ZW4oRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKICAgICB2b2lkIGltcGxpY2l0
T3BlbigpOwogCiAgICAgLy8gY2xvc2UoKSBpcyB0aGUgRE9NIEFQSSBkb2N1bWVudC5jbG9zZSgp
CkBAIC02MzQsOSArNjM0LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxQYXJzaW5nKCk7
CiAKLSAgICB2b2lkIHdyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgdGV4dCwgRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQgPSAwKTsKLSAgICB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgdGV4dCwg
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSAwKTsKLSAgICB2b2lkIHdyaXRlbG4oY29uc3QgU3Ry
aW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOworICAgIHZvaWQgd3JpdGUo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51
bGxwdHIpOworICAgIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3du
ZXJEb2N1bWVudCA9IG51bGxwdHIpOworICAgIHZvaWQgd3JpdGVsbihjb25zdCBTdHJpbmcmIHRl
eHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7CiAKICAgICBib29sIHdlbGxG
b3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0KIApAQCAtNzg4LDcgKzc4OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgc2V0V2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPik7CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0V2luZG93QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFdpbmRvd0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlz
cGF0Y2hXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gPSBudWxscHRyKTsKICAgICB2b2lkIGRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCk7CiAKICAg
ICBSZWZQdHI8RXZlbnQ+IGNyZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNl
cHRpb25Db2RlJik7CkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIFNjcmlwdFJ1bm5l
ciogc2NyaXB0UnVubmVyKCkgeyByZXR1cm4gbV9zY3JpcHRSdW5uZXIuZ2V0KCk7IH0KICAgICBK
U01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyKCkgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0
KCk7IH0KIAotICAgIEhUTUxTY3JpcHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkgY29uc3QgeyBy
ZXR1cm4gIW1fY3VycmVudFNjcmlwdFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVudFNjcmlwdFN0
YWNrLmxhc3QoKS5nZXQoKSA6IDA7IH0KKyAgICBIVE1MU2NyaXB0RWxlbWVudCogY3VycmVudFNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuICFtX2N1cnJlbnRTY3JpcHRTdGFjay5pc0VtcHR5KCkgPyBt
X2N1cnJlbnRTY3JpcHRTdGFjay5sYXN0KCkuZ2V0KCkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBw
dXNoQ3VycmVudFNjcmlwdChQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50Pik7CiAgICAgdm9p
ZCBwb3BDdXJyZW50U2NyaXB0KCk7CiAKQEAgLTExMzUsNyArMTEzNSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFczQyBBUEkKICAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Q7
Ci0gICAgRWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAh
bV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSA/IG1fZnVsbFNjcmVlbkVsZW1lbnRT
dGFjay5sYXN0KCkuZ2V0KCkgOiAwOyB9CisgICAgRWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiAhbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHko
KSA/IG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5sYXN0KCkuZ2V0KCkgOiBudWxscHRyOyB9CiAg
ICAgdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKQEAgLTEzNDYsNyArMTM0
Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gMCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllciA9IDApIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0
YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBvdmVy
cmlkZSBmaW5hbDsKIAogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE9yZGVyZWRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRP
cmRlcmVkTWFwLmgJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yZGVyZWRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTUgKzc0LDE0IEBAIHByaXZh
dGU6CiAKICAgICBzdHJ1Y3QgTWFwRW50cnkgewogICAgICAgICBNYXBFbnRyeSgpCi0gICAgICAg
ICAgICA6IGVsZW1lbnQoMCkKLSAgICAgICAgICAgICwgY291bnQoMCkKKyAgICAgICAgICAgIDog
Y291bnQoMCkKICAgICAgICAgeyB9CiAgICAgICAgIGV4cGxpY2l0IE1hcEVudHJ5KEVsZW1lbnQq
IGZpcnN0RWxlbWVudCkKICAgICAgICAgICAgIDogZWxlbWVudChmaXJzdEVsZW1lbnQpCiAgICAg
ICAgICAgICAsIGNvdW50KDEpCiAgICAgICAgIHsgfQogCi0gICAgICAgIEVsZW1lbnQqIGVsZW1l
bnQ7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07CiAgICAgICAgIHVuc2ln
bmVkIGNvdW50OwogICAgICAgICBWZWN0b3I8RWxlbWVudCo+IG9yZGVyZWRMaXN0OwogI2lmICFB
U1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKQogdm9pZCBEb2N1bWVu
dFBhcnNlcjo6ZGV0YWNoKCkKIHsKICAgICBtX3N0YXRlID0gRGV0YWNoZWRTdGF0ZTsKLSAgICBt
X2RvY3VtZW50ID0gMDsKKyAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBEb2N1
bWVudFBhcnNlcjo6c3VzcGVuZFNjaGVkdWxlZFRhc2tzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgaW5saW5lIHZvaWQgRWxlbWVu
dDo6c2V0QXR0cmlidXRlSW50ZXJuYQogICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbiBBdHRyIG5v
ZGUgaG9va2VkIHRvIHRoaXMgYXR0cmlidXRlLCB0aGUgQXR0cjo6c2V0VmFsdWUoKSBjYWxsIGJl
bG93CiAgICAgICAgIC8vIHdpbGwgd3JpdGUgaW50byB0aGUgRWxlbWVudERhdGEuCiAgICAgICAg
IC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHNvIGl0IG1ha2VzIHNvbWUgc2Vuc2UuCi0gICAgICAg
IGlmIChSZWZQdHI8QXR0cj4gYXR0ck5vZGUgPSBpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJp
YnV0ZSA/IDAgOiBhdHRySWZFeGlzdHMoYXR0cmlidXRlTmFtZSkpCisgICAgICAgIGlmIChSZWZQ
dHI8QXR0cj4gYXR0ck5vZGUgPSBpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSA/IG51
bGxwdHIgOiBhdHRySWZFeGlzdHMoYXR0cmlidXRlTmFtZSkpCiAgICAgICAgICAgICBhdHRyTm9k
ZS0+c2V0VmFsdWUobmV3VmFsdWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1ZShuZXdWYWx1ZSk7
CkBAIC0xNjI4LDcgKzE2MjgsNyBAQCB2b2lkIEVsZW1lbnQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50CiAKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnNoYWRvd1Jvb3QoKSBjb25zdAogewotICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jvb3QoKSA6
IDA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+c2hhZG93
Um9vdCgpIDogbnVsbHB0cjsKIH0KIAogCkBAIC0yMjc5LDcgKzIyNzksNyBAQCB2b2lkIEVsZW1l
bnQ6OmJsdXIoKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgp
KQogICAgICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNl
ZEVsZW1lbnQoMCwgZnJhbWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgp
LnNldEZvY3VzZWRFbGVtZW50KDApOworICAgICAgICAgICAgZG9jdW1lbnQoKS5zZXRGb2N1c2Vk
RWxlbWVudChudWxscHRyKTsKICAgICB9CiB9CiAKQEAgLTI2NzAsMTIgKzI2NzAsMTIgQEAgdm9p
ZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKIAogUHNldWRvRWxlbWVudCogRWxlbWVu
dDo6YmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRh
KCkgPyBlbGVtZW50UmFyZURhdGEoKS0+YmVmb3JlUHNldWRvRWxlbWVudCgpIDogMDsKKyAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5iZWZvcmVQc2V1ZG9FbGVt
ZW50KCkgOiBudWxscHRyOwogfQogCiBQc2V1ZG9FbGVtZW50KiBFbGVtZW50OjphZnRlclBzZXVk
b0VsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJh
cmVEYXRhKCktPmFmdGVyUHNldWRvRWxlbWVudCgpIDogMDsKKyAgICByZXR1cm4gaGFzUmFyZURh
dGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5hZnRlclBzZXVkb0VsZW1lbnQoKSA6IG51bGxwdHI7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0QmVmb3JlUHNldWRvRWxlbWVudChSZWY8UHNldWRvRWxl
bWVudD4mJiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxOTE3NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw2IEBAIEV2ZW50OjpFdmVudCgpCiAgICAgLCBtX2RlZmF1bHRIYW5kbGVkKGZhbHNlKQog
ICAgICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCiAgICAgLCBtX2V2ZW50UGhhc2UoMCkKLSAgICAs
IG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNvbnZlcnRTZWNvbmRzVG9E
T01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CiB9CkBAIC02Niw3ICs2NSw2IEBAIEV2ZW50
OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkKICAgICAsIG1fZGVmYXVsdEhhbmRs
ZWQoZmFsc2UpCiAgICAgLCBtX2NhbmNlbEJ1YmJsZShmYWxzZSkKICAgICAsIG1fZXZlbnRQaGFz
ZSgwKQotICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUoY29udmVy
dFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKIH0KQEAgLTgyLDcgKzgw
LDYgQEAgRXZlbnQ6OkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeQogICAgICwgbV9k
ZWZhdWx0SGFuZGxlZChmYWxzZSkKICAgICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQogICAgICwg
bV9ldmVudFBoYXNlKDApCi0gICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRl
VGltZShjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHRpbWVzdGFtcCkpCiB7CiB9CkBAIC05
OCw3ICs5NSw2IEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkKICAg
ICAsIG1fZGVmYXVsdEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX2NhbmNlbEJ1YmJsZShmYWxzZSkK
ICAgICAsIG1fZXZlbnRQaGFzZSgwKQotICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBt
X2NyZWF0ZVRpbWUoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkK
IHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGxlZ2FjeVJldHVyblZhbHVlKCkgY29uc3QgeyByZXR1cm4gIWRlZmF1bHRQ
cmV2ZW50ZWQoKTsgfQogICAgIHZvaWQgc2V0TGVnYWN5UmV0dXJuVmFsdWUoYm9vbCByZXR1cm5W
YWx1ZSkgeyBzZXREZWZhdWx0UHJldmVudGVkKCFyZXR1cm5WYWx1ZSk7IH0KIAotICAgIERhdGFU
cmFuc2ZlciogY2xpcGJvYXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZlbnQo
KSA/IGludGVybmFsRGF0YVRyYW5zZmVyKCkgOiAwOyB9CisgICAgRGF0YVRyYW5zZmVyKiBjbGlw
Ym9hcmREYXRhKCkgY29uc3QgeyByZXR1cm4gaXNDbGlwYm9hcmRFdmVudCgpID8gaW50ZXJuYWxE
YXRhVHJhbnNmZXIoKSA6IG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhbmNlbEJ1YmJsZTsKIAogICAgIHVuc2lnbmVkIHNob3J0IG1fZXZlbnRQaGFz
ZTsKLSAgICBFdmVudFRhcmdldCogbV9jdXJyZW50VGFyZ2V0OworICAgIEV2ZW50VGFyZ2V0KiBt
X2N1cnJlbnRUYXJnZXQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3Rh
cmdldDsKICAgICBET01UaW1lU3RhbXAgbV9jcmVhdGVUaW1lOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRDb250ZXh0LmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAgYm9v
bCBFdmVudENvbnRleHQ6OmlzVG91Y2hFdmVudENvbnRleHQoKQogCiBNb3VzZU9yRm9jdXNFdmVu
dENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChQYXNzUmVmUHRyPE5vZGU+IG5vZGUs
IFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnRU
YXJnZXQ+IHRhcmdldCkKICAgICA6IEV2ZW50Q29udGV4dChub2RlLCBjdXJyZW50VGFyZ2V0LCB0
YXJnZXQpCi0gICAgLCBtX3JlbGF0ZWRUYXJnZXQoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5
Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogCi0gICAgRXZlbnRDb250ZXh0KiBsYXN0Q29udGV4
dElmRXhpc3RzKCkgeyByZXR1cm4gbV9wYXRoLmlzRW1wdHkoKSA/IDAgOiBtX3BhdGgubGFzdCgp
LmdldCgpOyB9CisgICAgRXZlbnRDb250ZXh0KiBsYXN0Q29udGV4dElmRXhpc3RzKCkgeyByZXR1
cm4gbV9wYXRoLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3BhdGgubGFzdCgpLmdldCgpOyB9CiAK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKQEAg
LTM1NSw3ICszNTUsNyBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChOb2Rl
CiAgICAgLy8gRW5zdXJlIHRoYXQgYWZ0ZXIgZXZlbnQgZGlzcGF0Y2gsIHRoZSBldmVudCdzIHRh
cmdldCBvYmplY3QgaXMgdGhlCiAgICAgLy8gb3V0ZXJtb3N0IHNoYWRvdyBET00gYm91bmRhcnku
CiAgICAgZXZlbnQtPnNldFRhcmdldCh3aW5kb3dFdmVudENvbnRleHQudGFyZ2V0KCkpOwotICAg
IGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0KDApOworICAgIGV2ZW50LT5zZXRDdXJyZW50VGFyZ2V0
KG51bGxwdHIpOwogCiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAkocmV2aXNpb24gMTkx
NzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksMTUgKzE5OSwxMyBAQCB2b2lkIEV2ZW50TGlzdGVuZXJNYXA6OmNvcHlF
dmVudExpc3RlbmVyCiB9CiAKIEV2ZW50TGlzdGVuZXJJdGVyYXRvcjo6RXZlbnRMaXN0ZW5lckl0
ZXJhdG9yKCkKLSAgICA6IG1fbWFwKDApCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKKyAgICA6IG1f
ZW50cnlJbmRleCgwKQogICAgICwgbV9pbmRleCgwKQogewogfQogCiBFdmVudExpc3RlbmVySXRl
cmF0b3I6OkV2ZW50TGlzdGVuZXJJdGVyYXRvcihFdmVudFRhcmdldCogdGFyZ2V0KQotICAgIDog
bV9tYXAoMCkKLSAgICAsIG1fZW50cnlJbmRleCgwKQorICAgIDogbV9lbnRyeUluZGV4KDApCiAg
ICAgLCBtX2luZGV4KDApCiB7CiAgICAgQVNTRVJUKHRhcmdldCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmgJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIEV2ZW50TGlzdGVuZXIqIG5leHRMaXN0ZW5lcigpOwogCiBwcml2YXRl
OgotICAgIEV2ZW50TGlzdGVuZXJNYXAqIG1fbWFwOworICAgIEV2ZW50TGlzdGVuZXJNYXAqIG1f
bWFwIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1fZW50cnlJbmRleDsKICAgICB1bnNpZ25l
ZCBtX2luZGV4OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNp
b24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExp
c3RlbmVycyhFdmUKICAgICBpZiAoIWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRXZl
bnRMaXN0ZW5lclZlY3RvciogbGVnYWN5TGlzdGVuZXJzVmVjdG9yID0gMDsKKyAgICBFdmVudExp
c3RlbmVyVmVjdG9yKiBsZWdhY3lMaXN0ZW5lcnNWZWN0b3IgPSBudWxscHRyOwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbGVnYWN5VHlwZU5hbWUgPSBsZWdhY3lUeXBlKGV2ZW50KTsKICAgICBp
ZiAoIWxlZ2FjeVR5cGVOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgbGVnYWN5TGlzdGVuZXJzVmVj
dG9yID0gZC0+ZXZlbnRMaXN0ZW5lck1hcC5maW5kKGxlZ2FjeVR5cGVOYW1lKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRm9jdXNFdmVudC5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb2N1c0V2ZW50SW5pdDo6Rm9jdXNFdmVudEluaXQoKQot
ICAgIDogcmVsYXRlZFRhcmdldCgwKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
R2VuZXJpY0V2ZW50UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9H
ZW5lcmljRXZlbnRRdWV1ZS5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcg
QEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhcwogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZXZlbnQtPnRhcmdldCgpID09ICZtX293bmVyKQotICAgICAgICBldmVu
dC0+c2V0VGFyZ2V0KDApOworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KG51bGxwdHIpOwogCiAg
ICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChldmVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTE3NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6bm90aWZ5T2JzCiAgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmlzRW1wdHko
KSkKICAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoJmlkKTsKIAotICAgIG1fbm90aWZ5aW5nT2Jz
ZXJ2ZXJzSW5TZXQgPSAwOworICAgIG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSBudWxscHRy
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDkgKzQwLDcgQEAgY2xhc3MgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSWRUYXJnZXRPYnNlcnZl
cjsKIHB1YmxpYzoKLSAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKQotICAgICAgICA6IG1f
bm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQoMCkKLSAgICB7IH0KKyAgICBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkoKSB7IH0KIAogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpOwogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGlkKTsKQEAgLTU1LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8
SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25z
dCBBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRyPE9ic2VydmVyU2V0Pj4gSWRUb09i
c2VydmVyU2V0TWFwOwogICAgIElkVG9PYnNlcnZlclNldE1hcCBtX3JlZ2lzdHJ5OwotICAgIE9i
c2VydmVyU2V0KiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0OworICAgIE9ic2VydmVyU2V0KiBt
X25vdGlmeWluZ09ic2VydmVyc0luU2V0IHsgbnVsbHB0ciB9OwogfTsKIAogaW5saW5lIHZvaWQg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9JZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oCShyZXZpc2lvbiAxOTE3NzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBJZ25vcmVEZXN0cnVj
dGl2ZVdyaXRlQ291bnRJbmNyZW1lCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSWdub3JlRGVz
dHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEln
bm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKERvY3VtZW50KiBkb2N1bWVudCkK
LSAgICAgICAgOiBtX2NvdW50KGRvY3VtZW50ID8gJmRvY3VtZW50LT5tX2lnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudCA6IDApCisgICAgICAgIDogbV9jb3VudChkb2N1bWVudCA/ICZkb2N1bWVu
dC0+bV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnQgOiBudWxscHRyKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX2NvdW50KQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIE1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1MKICAgICAsIG1fZGF0YUFzU2NyaXB0
VmFsdWUoaW5pdGlhbGl6ZXIuZGF0YSkKICAgICAsIG1fb3JpZ2luKGluaXRpYWxpemVyLm9yaWdp
bikKICAgICAsIG1fbGFzdEV2ZW50SWQoaW5pdGlhbGl6ZXIubGFzdEV2ZW50SWQpCi0gICAgLCBt
X3NvdXJjZShpc1ZhbGlkU291cmNlKGluaXRpYWxpemVyLnNvdXJjZS5nZXQoKSkgPyBpbml0aWFs
aXplci5zb3VyY2UgOiAwKQorICAgICwgbV9zb3VyY2UoaXNWYWxpZFNvdXJjZShpbml0aWFsaXpl
ci5zb3VyY2UuZ2V0KCkpID8gaW5pdGlhbGl6ZXIuc291cmNlIDogbnVsbHB0cikKICAgICAsIG1f
cG9ydHMoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5Pihpbml0aWFsaXplci5wb3J0
cykpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCShyZXZpc2lvbiAxOTE3
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDExICs1NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZXNzYWdlRXZlbnQpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgp
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCisgICAg
c3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBzb3VyY2UgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgV1RGOjpt
b3ZlKHBvcnRzKSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCks
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRh
cmdldD4gc291cmNlID0gMCkKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gc291cmNlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIFdURjo6bW92
ZShwb3J0cykpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJl
dmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250ZXh0
RGVzdHJveWVkKCkKICAgICAvLyBNdXN0IGJlIGNsb3NlZCBiZWZvcmUgYmxvd2luZyBhd2F5IHRo
ZSBjYWNoZWQgY29udGV4dCwgdG8gZW5zdXJlIHRoYXQgd2UgZ2V0IG5vIG1vcmUgY2FsbHMgdG8g
bWVzc2FnZUF2YWlsYWJsZSgpLgogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNsb3Nl
TWVzc2FnZVBvcnRzKCkgdGFrZXMgY2FyZSBvZiB0aGF0LgogICAgIEFTU0VSVChtX2Nsb3NlZCk7
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBudWxscHRyOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3Nh
Z2VzKCkKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIE1lc3NhZ2VQb3J0OjpoYXNQZW5kaW5nQWN0
aXZpdHkoKQogCiBNZXNzYWdlUG9ydCogTWVzc2FnZVBvcnQ6OmxvY2FsbHlFbnRhbmdsZWRQb3J0
KCkKIHsKLSAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsID8gbV9lbnRhbmdsZWRDaGFubmVs
LT5sb2NhbGx5RW50YW5nbGVkUG9ydChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogMDsKKyAg
ICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsID8gbV9lbnRhbmdsZWRDaGFubmVsLT5sb2NhbGx5
RW50YW5nbGVkUG9ydChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogbnVsbHB0cjsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlz
ZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29k
ZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxOTE3NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDYgQEAgTW91c2VFdmVudEluaXQ6Ok1vdXNlRXZlbnRJbml0KCkKICAgICAsIHNo
aWZ0S2V5KGZhbHNlKQogICAgICwgbWV0YUtleShmYWxzZSkKICAgICAsIGJ1dHRvbigwKQotICAg
ICwgcmVsYXRlZFRhcmdldCgwKQogewogfQogCkBAIC0yNDMsNyArMjQyLDcgQEAgUGFzc1JlZlB0
cjxFdmVudD4gTW91c2VFdmVudDo6Y2xvbmVGb3IoSAogICAgIEFTU0VSVChpZnJhbWUpOwogICAg
IFJlZlB0cjxNb3VzZUV2ZW50PiBjbG9uZWRNb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRl
KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gaWZyYW1lLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiAwOworICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUgPyBmcmFtZS0+dmlldygpIDogbnVsbHB0cjsKICAg
ICBjbG9uZWRNb3VzZUV2ZW50LT5pbml0TW91c2VFdmVudCh0eXBlKCksIGJ1YmJsZXMoKSwgY2Fu
Y2VsYWJsZSgpLAogICAgICAgICBpZnJhbWUtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwKICAg
ICAgICAgZGV0YWlsKCksIHNjcmVlblgoKSwgc2NyZWVuWSgpLApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBOb2Rl
KiBmcm9tRWxlbWVudCgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9ucyBj
YW4gYmUgbWVyZ2VkIGlmIG1fZGF0YVRyYW5zZmVyIGlzIG9ubHkgaW5pdGlhbGl6ZWQgZm9yIGRy
YWcgZXZlbnRzLgotICAgIERhdGFUcmFuc2ZlciogZGF0YVRyYW5zZmVyKCkgY29uc3QgeyByZXR1
cm4gaXNEcmFnRXZlbnQoKSA/IG1fZGF0YVRyYW5zZmVyLmdldCgpIDogMDsgfQorICAgIERhdGFU
cmFuc2ZlciogZGF0YVRyYW5zZmVyKCkgY29uc3QgeyByZXR1cm4gaXNEcmFnRXZlbnQoKSA/IG1f
ZGF0YVRyYW5zZmVyLmdldCgpIDogbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRGF0YVRyYW5zZmVy
KiBpbnRlcm5hbERhdGFUcmFuc2ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YVRy
YW5zZmVyLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgTW91c2VS
ZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbgogICAgIExheW91dFBvaW50IGFkanVz
dGVkUGFnZUxvY2F0aW9uOwogICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uOwogCi0gICAg
RnJhbWUqIGZyYW1lID0gdmlldygpID8gdmlldygpLT5mcmFtZSgpIDogMDsKKyAgICBGcmFtZSog
ZnJhbWUgPSB2aWV3KCkgPyB2aWV3KCktPmZyYW1lKCkgOiBudWxscHRyOwogICAgIGlmIChmcmFt
ZSAmJiAhaXNTaW11bGF0ZWQpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
ZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXct
PmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6
OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKIHsKLSAgICBOb2RlKiB0YXJnZXROb2RlID0gdGFy
Z2V0KCkgPyB0YXJnZXQoKS0+dG9Ob2RlKCkgOiAwOworICAgIE5vZGUqIHRhcmdldE5vZGUgPSB0
YXJnZXQoKSA/IHRhcmdldCgpLT50b05vZGUoKSA6IG51bGxwdHI7CiAgICAgaWYgKCF0YXJnZXRO
b2RlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQu
aAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNdXRhdGlvbkV2ZW50KTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyBSZWY8TXV0YXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZE5v
ZGUgPSAwLAorICAgICAgICBzdGF0aWMgUmVmPE11dGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0
ZWROb2RlID0gbnVsbHB0ciwKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcHJldlZhbHVlID0g
U3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5n
JiBhdHRyTmFtZSA9IFN0cmluZygpLCB1bnNpZ25lZCBzaG9ydCBhdHRyQ2hhbmdlID0gMCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTXV0YXRpb25FdmVudCh0
eXBlLCBjYW5CdWJibGUsIGZhbHNlLCByZWxhdGVkTm9kZSwgcHJldlZhbHVlLCBuZXdWYWx1ZSwg
YXR0ck5hbWUsIGF0dHJDaGFuZ2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDE5
MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUzLDcgKzg1Myw3IEBAIHZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGkK
IAogTm9kZUxpc3RzTm9kZURhdGEqIE5vZGU6Om5vZGVMaXN0cygpCiB7Ci0gICAgcmV0dXJuIGhh
c1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSA6IDA7CisgICAgcmV0dXJuIGhh
c1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSA6IG51bGxwdHI7CiB9CiAKIHZv
aWQgTm9kZTo6Y2xlYXJOb2RlTGlzdHMoKQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgTm9kZSogTm9k
ZTo6bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZAogQ29udGFpbmVyTm9kZSogTm9kZTo6bm9u
U2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QKIHsKICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5pc1No
YWRvd1Jvb3QoKSA/IHBhcmVudCA6IDA7CisgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5p
c1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IG51bGxwdHI7CiB9CiAKIEVsZW1lbnQqIE5vZGU6OnBh
cmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lv
biAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MDQsOCArNzA0LDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX25leHQ7CiAgICAgLy8gV2hl
biBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSByYXJl
IGRhdGEuCiAgICAgdW5pb24gRGF0YVVuaW9uIHsKLSAgICAgICAgRGF0YVVuaW9uKCkgOiBtX3Jl
bmRlcmVyKDApIHsgfQotICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgICAg
IERhdGFVbmlvbigpIHsgfQorICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXIgeyBudWxs
cHRyIH07CiAgICAgICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFyZURhdGE7CiAgICAgfSBtX2Rh
dGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDE5MTc3MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYWNoZWRDb2xsZWN0aW9ucy5yZW1v
dmUobmFtZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rpb24tPnR5cGUoKSwgbmFtZSkpOwogICAgIH0K
IAotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFt
ZSA9IDApOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBh
dHRyTmFtZSA9IG51bGxwdHIpOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9hdG9taWNOYW1lQ2FjaGVzLmlzRW1wdHkoKSAmJiBtX2NhY2hlZENvbGxl
Y3Rpb25zLmlzRW1wdHkoKSAmJiBtX3RhZ0NvbGxlY3Rpb25DYWNoZU5TLmlzRW1wdHkoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCgpCiAKIFBhc3NSZWZQ
dHI8RWxlbWVudD4gUGVuZGluZ1NjcmlwdDo6cmVsZWFzZUVsZW1lbnRBbmRDbGVhcigpCiB7Ci0g
ICAgc2V0Q2FjaGVkU2NyaXB0KDApOworICAgIHNldENhY2hlZFNjcmlwdChudWxscHRyKTsKICAg
ICBtX3dhdGNoaW5nRm9yTG9hZCA9IGZhbHNlOwogICAgIG1fc3RhcnRpbmdQb3NpdGlvbiA9IFRl
eHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCk7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5y
ZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCShyZXZpc2lv
biAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDE2ICszOSwxMiBAQCBQb3BTdGF0ZUV2ZW50SW5pdDo6UG9wU3RhdGVF
dmVudEluaXQoKQogCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KCkKICAgICA6IEV2ZW50
KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKLSAgICAsIG1fc2VyaWFs
aXplZFN0YXRlKDApCi0gICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIAogUG9wU3RhdGVFdmVudDo6
UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRlRXZl
bnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQogICAg
ICwgbV9zdGF0ZShpbml0aWFsaXplci5zdGF0ZSkKLSAgICAsIG1fc2VyaWFsaXplZFN0YXRlKDAp
Ci0gICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHJl
dmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gd2lsbCBiZSB0cmVh
dGVkIGFzIGJlZm9yZSBpZ25vcmVkTm9kZSAodGh1cyBub2RlKCkgaXMgcmVhbGx5IGFmdGVyIHRo
ZSBwb3NpdGlvbiwgbm90IGNvbnRhaW5pbmcgaXQpLgogICAgIE5vZGUqIGRlcHJlY2F0ZWROb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOyB9CiAKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvck5vZGUgPyAmbV9hbmNob3JOb2RlLT5k
b2N1bWVudCgpIDogMDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5jaG9yTm9kZSA/ICZtX2FuY2hvck5vZGUtPmRvY3VtZW50KCkgOiBudWxscHRyOyB9CiAg
ICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBO
b2RlKiBjb250YWluZXIgPSBjb250YWluZXJOb2RlKCk7Ci0gICAgICAgIHJldHVybiBjb250YWlu
ZXIgPyBjb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA6IDA7CisgICAgICAgIHJldHVy
biBjb250YWluZXIgPyBjb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA6IG51bGxwdHI7
CiAgICAgfQogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgUG9zaXRpb25J
c09mZnNldEluQW5jaG9yIHBvc2l0aW9ucywgdW5sZXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb25JdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBQb3NpdGlvbkl0ZXJhdG9yOjpkZWNyZW1lbnQoKQogICAgIGlmIChtX25vZGVBZnRl
clBvc2l0aW9uSW5BbmNob3IpIHsKICAgICAgICAgbV9hbmNob3JOb2RlID0gbV9ub2RlQWZ0ZXJQ
b3NpdGlvbkluQW5jaG9yLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgaWYgKG1fYW5jaG9y
Tm9kZSkgewotICAgICAgICAgICAgbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yID0gMDsKKyAg
ICAgICAgICAgIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvciA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBtX29mZnNldEluQW5jaG9yID0gbV9hbmNob3JOb2RlLT5oYXNDaGlsZE5vZGVzKCkgPyAw
IDogbGFzdE9mZnNldEZvckVkaXRpbmcobV9hbmNob3JOb2RlKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvciA9IG1fbm9kZUFmdGVyUG9z
aXRpb25JbkFuY2hvci0+cGFyZW50Tm9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b25JdGVyYXRvci5oCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFBvc2l0aW9uSXRlcmF0b3IgewogcHVibGljOgogICAgIFBvc2l0
aW9uSXRlcmF0b3IoKQotICAgICAgICA6IG1fYW5jaG9yTm9kZSgwKQotICAgICAgICAsIG1fbm9k
ZUFmdGVyUG9zaXRpb25JbkFuY2hvcigwKQotICAgICAgICAsIG1fb2Zmc2V0SW5BbmNob3IoMCkK
KyAgICAgICAgOiBtX29mZnNldEluQW5jaG9yKDApCiAgICAgewogICAgIH0KIApAQCAtNjQsOCAr
NjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NhbmRpZGF0ZSgpIGNvbnN0OwogCiBwcml2YXRl
OgotICAgIE5vZGUqIG1fYW5jaG9yTm9kZTsKLSAgICBOb2RlKiBtX25vZGVBZnRlclBvc2l0aW9u
SW5BbmNob3I7IC8vIElmIHRoaXMgaXMgbm9uLW51bGwsIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFu
Y2hvci0+cGFyZW50Tm9kZSgpID09IG1fYW5jaG9yTm9kZTsKKyAgICBOb2RlKiBtX2FuY2hvck5v
ZGUgeyBudWxscHRyIH07CisgICAgTm9kZSogbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yIHsg
bnVsbHB0ciB9OyAvLyBJZiB0aGlzIGlzIG5vbi1udWxsLCBtX25vZGVBZnRlclBvc2l0aW9uSW5B
bmNob3ItPnBhcmVudE5vZGUoKSA9PSBtX2FuY2hvck5vZGU7CiAgICAgaW50IG1fb2Zmc2V0SW5B
bmNob3I7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogaW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2lu
Z0luc3RydWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNv
bnN0IFN0cmluZyYgZGF0YSkKICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIENy
ZWF0ZU90aGVyKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQotICAgICwgbV9jYWNoZWRTaGVldCgw
KQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQogICAgICwgbV9hbHRlcm5hdGUoZmFsc2UpCiAgICAg
LCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkKQEAgLTEzNSw3ICsxMzQsNyBAQCB2b2lkIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAobV9jYWNoZWRTaGVldCkgewogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQt
PnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gMDsK
KyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwoaHJlZikuc3RyaW5nKCk7CkBAIC0yMzIsNyArMjMxLDcgQEAgdm9pZCBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaAogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNoZWV0
ID0gMDsKKyAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKIAogICAgIG1fbG9hZGluZyA9IGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
CShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9sb2NhbEhyZWY7CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fbWVk
aWE7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkU2hl
ZXQ7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkU2hl
ZXQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFN0eWxlU2hlZXQ+IG1fc2hlZXQ7CiAgICAgYm9v
bCBtX2xvYWRpbmc7CiAgICAgYm9vbCBtX2FsdGVybmF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2VCb3VuZGFyeVBvaW50LmgJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NiBAQCBwcml2YXRlOgogaW5saW5lIFJhbmdlQm91bmRhcnlQb2ludDo6UmFuZ2VCb3VuZGFyeVBv
aW50KFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyKQogICAgIDogbV9jb250YWluZXJOb2RlKGNv
bnRhaW5lcikKICAgICAsIG1fb2Zmc2V0SW5Db250YWluZXIoMCkKLSAgICAsIG1fY2hpbGRCZWZv
cmVCb3VuZGFyeSgwKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5vZGUpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBib29sIGFscmVhZHlT
dGFydGVkKQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX2NhY2hlZFNjcmlwdCgw
KQorICAgICwgbV9jYWNoZWRTY3JpcHQobnVsbHB0cikKICAgICAsIG1fc3RhcnRMaW5lTnVtYmVy
KFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSkKICAgICAsIG1fcGFyc2VySW5zZXJ0
ZWQocGFyc2VySW5zZXJ0ZWQpCiAgICAgLCBtX2lzRXh0ZXJuYWxTY3JpcHQoZmFsc2UpCkBAIC0z
MTUsNyArMzE1LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpzdG9wTG9hZFJlcXVlc3QoKQogICAg
IGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBpZiAoIW1fd2lsbEJlUGFyc2VyRXhlY3V0
ZWQpCiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAg
ICAgICBtX2NhY2hlZFNjcmlwdCA9IDA7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gbnVsbHB0
cjsKICAgICB9CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKENhY2hlCiAgICAgZWxzZQogICAgICAgICBtX2VsZW1lbnQuZG9jdW1lbnQo
KS5zY3JpcHRSdW5uZXIoKS0+bm90aWZ5U2NyaXB0UmVhZHkodGhpcywgU2NyaXB0UnVubmVyOjpB
U1lOQ19FWEVDVVRJT04pOwogCi0gICAgbV9jYWNoZWRTY3JpcHQgPSAwOworICAgIG1fY2FjaGVk
U2NyaXB0ID0gbnVsbHB0cjsKIH0KIAogYm9vbCBTY3JpcHRFbGVtZW50OjppZ25vcmVzTG9hZFJl
cXVlc3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyKGRvY3VtZW50LCBkaXNwbGF5SUQpKTsKICAgICB9CiAgICAgflNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpOwotICAgIHZvaWQgY2xlYXJEb2N1bWVudFBvaW50
ZXIoKSB7IG1fZG9jdW1lbnQgPSAwOyB9CisgICAgdm9pZCBjbGVhckRvY3VtZW50UG9pbnRlcigp
IHsgbV9kb2N1bWVudCA9IG51bGxwdHI7IH0KIAogICAgIHR5cGVkZWYgaW50IENhbGxiYWNrSWQ7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MTc3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsOCArNDYsOCBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVkRWxlbWVudCkg
PT0gCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdHJ1Y3QgUHJlc2VudGF0aW9uQXR0
cmlidXRlQ2FjaGVLZXkgewotICAgIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5KCkgOiB0
YWdOYW1lKDApIHsgfQotICAgIEF0b21pY1N0cmluZ0ltcGwqIHRhZ05hbWU7CisgICAgUHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkoKSB7IH0KKyAgICBBdG9taWNTdHJpbmdJbXBsKiB0YWdO
YW1lIHsgbnVsbHB0ciB9OwogICAgIC8vIE9ubHkgdGhlIHZhbHVlcyBuZWVkIHJlZmNvdW50aW5n
LgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4s
IDM+IGF0dHJpYnV0ZXNBbmRWYWx1ZXM7CiB9OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgU3R5
bGVkRWxlbWVudDo6cmVtb3ZlQWxsSW5saW5lU3R5bGUKIAogdm9pZCBTdHlsZWRFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QK
IHsKLSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnRE
YXRhKCkgPyBlbGVtZW50RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkKKyAgICBpZiAoY29uc3Qg
U3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0
YSgpLT5pbmxpbmVTdHlsZSgpIDogbnVsbHB0cikKICAgICAgICAgaW5saW5lU3R5bGUtPmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKHVybHMsICZkb2N1bWVudCgpLmVsZW1lbnRTaGVldCgpLmNvbnRl
bnRzKCkpOwogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1
aWxkUHJlc2VudGF0aW9uQQogICAgIFVuaXF1ZUVsZW1lbnREYXRhJiBlbGVtZW50RGF0YSA9IGVu
c3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBlbGVtZW50RGF0YS5zZXRQcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2UpOwotICAgIGVsZW1lbnREYXRhLm1fcHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUgPSBzdHlsZS0+aXNFbXB0eSgpID8gMCA6IHN0eWxlOworICAg
IGVsZW1lbnREYXRhLm1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUgPSBzdHlsZS0+aXNFbXB0
eSgpID8gbnVsbHB0ciA6IHN0eWxlOwogCiAgICAgaWYgKCFjYWNoZUhhc2ggfHwgY2FjaGVJdGVy
YXRvci0+dmFsdWUpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUF0dHJpYnV0
ZSgpOwogCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGVsZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0YSgpLT5tX2lubGluZVN0eWxlLmdldCgp
IDogMDsgfQorICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUoKSBjb25zdCB7
IHJldHVybiBlbGVtZW50RGF0YSgpID8gZWxlbWVudERhdGEoKS0+bV9pbmxpbmVTdHlsZS5nZXQo
KSA6IG51bGxwdHI7IH0KICAgICAKICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNl
KTsKICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTUHJv
cGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQu
aAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVu
dERvY3VtZW50RnJhZ21lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgY29uc3QgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aG9zdDsgfQotICAgIHZvaWQgY2xlYXJIb3N0KCkgeyBtX2hvc3QgPSAwOyB9CisgICAgdm9pZCBj
bGVhckhvc3QoKSB7IG1faG9zdCA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBUZW1wbGF0
ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxlbWVu
dCogaG9zdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxOTE3NzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNyArNzQsNiBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0CiAg
ICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmll
dywgMCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRhKQot
ICAgICwgbV9wYXN0aW5nRnJhZ21lbnQoMCkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZh
bHNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKGZhbHNlKQogICAgICwgbV9tYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAkocmV2aXNpb24gMTkxNzcxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1VJRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTIgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVUlFdmVudEluaXQ6OlVJRXZlbnRJbml0KCkKLSAgICA6
IHZpZXcoMCkKLSAgICAsIGRldGFpbCgwKQorICAgIDogZGV0YWlsKDApCiB7CiB9CiAKIFVJRXZl
bnRJbml0OjpVSUV2ZW50SW5pdChib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSkKICAgICA6
IEV2ZW50SW5pdChidWJibGVzLCBjYW5jZWxhYmxlKQotICAgICwgdmlldygwKQogICAgICwgZGV0
YWlsKDApCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlclR5cGluZ0dlc3R1cmVJ
bmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvci5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6OlVzZXJUeXBpbmdHZQogICAg
ICwgbV9wcmV2aW91c0ZvY3VzZWROb2RlKGZvY3VzZWROb2RlKCkpCiB7CiAgICAgc19wcm9jZXNz
aW5nVXNlclR5cGluZ0dlc3R1cmUgPSB0cnVlOwotICAgIGZvY3VzZWROb2RlKCkgPSBmcmFtZS5k
b2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSA6IDA7CisgICAg
Zm9jdXNlZE5vZGUoKSA9IGZyYW1lLmRvY3VtZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1
c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKIH0KIAogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6
On5Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsyODYs
NyBAQCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmCiAgICAgICAgIHJl
c3VsdC5tYXhpbXVtU2NhbGUgPSByZXN1bHQubWluaW11bVNjYWxlID0gcmVzdWx0LmluaXRpYWxT
Y2FsZTsKIH0KIAotc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoY29uc3QgU3RyaW5nJiBrZXlT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCogb2sgPSAwKQorc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoY29uc3QgU3RyaW5nJiBrZXlT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCogb2sgPSBudWxscHRyKQogewogICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CiAgICAgZmxvYXQg
dmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCShyZXZpc2lvbiAxOTE3NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmRp
c2VudGFuZ2xlKCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IHJl
bW90ZSA9IG1fY2hhbm5lbC0+ZW50YW5nbGVkQ2hhbm5lbCgpOwogICAgIGlmIChyZW1vdGUpCi0g
ICAgICAgIHJlbW90ZS0+c2V0UmVtb3RlUG9ydCgwKTsKKyAgICAgICAgcmVtb3RlLT5zZXRSZW1v
dGVQb3J0KG51bGxwdHIpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3Nh
Z2VUb1JlbW90ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKQEAgLTE1NCw3
ICsxNTQsNiBAQCBSZWY8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IFBsYXRmb3JtCiBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwoUGFzc1Jl
ZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBpbmNvbWluZywgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydFF1
ZXVlPiBvdXRnb2luZykKICAgICA6IG1faW5jb21pbmdRdWV1ZShpbmNvbWluZykKICAgICAsIG1f
b3V0Z29pbmdRdWV1ZShvdXRnb2luZykKLSAgICAsIG1fcmVtb3RlUG9ydCgwKQogewogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE5MTc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNiw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxNZXNz
YWdlUG9ydFF1ZXVlPiBtX291dGdvaW5nUXVldWU7CiAKICAgICAgICAgLy8gVGhlIHBvcnQgd2Ug
YXJlIGNvbm5lY3RlZCB0byAodGhlIHJlbW90ZSBwb3J0KSAtIHRoaXMgaXMgdGhlIHBvcnQgdGhh
dCBpcyBub3RpZmllZCB3aGVuIG5ldyBtZXNzYWdlcyBhcnJpdmUuCi0gICAgICAgIE1lc3NhZ2VQ
b3J0KiBtX3JlbW90ZVBvcnQ7CisgICAgICAgIE1lc3NhZ2VQb3J0KiBtX3JlbW90ZVBvcnQgeyBu
dWxscHRyIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264549</attachid>
            <date>2015-11-01 18:46:30 -0800</date>
            <delta_ts>2015-11-02 23:08:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150788-20151102114533.patch</filename>
            <type>text/plain</type>
            <size>49124</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MCBAQAorMjAxNS0xMS0wMSAgSHVuc2Vv
cCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVwbGFjZSAwIGFu
ZCBOVUxMIHdpdGggbnVsbHB0ciBpbiBXZWJDb3JlL2RvbS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6ZGV0YWNoRnJv
bUVsZW1lbnRXaXRoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6YXR0YWNoVG9FbGVt
ZW50KToKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DaGVja2VkUmFkaW9C
dXR0b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNo
ZWNrZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpjaGVj
a2VkQnV0dG9uRm9yR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9u
czo6aXNJblJlcXVpcmVkR3JvdXApOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6
OmVucXVldWVNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2Vlbik6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OkNvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d2VsbEZvcm1lZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0UnVubmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb2R1bGVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmN1cnJlbnRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6Ok1hcEVudHJ5
OjpNYXBFbnRyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50UGFyc2VyOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRQYXJzZXI6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpibHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBz
ZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEJlZm9yZVBzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6RXZl
bnQpOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6Omxl
Z2FjeVJldHVyblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50OjpzZXRMZWdhY3lSZXR1
cm5WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAg
ICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZU9yRm9j
dXNFdmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCk6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6Omxhc3RD
b250ZXh0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpjb3B5RXZlbnRMaXN0ZW5lcnNOb3RDcmVhdGVk
RnJvbU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJJdGVy
YXRvcjo6RXZlbnRMaXN0ZW5lckl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5l
ck1hcC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vRm9jdXNF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0V2ZW50SW5pdDo6Rm9jdXNFdmVudElu
aXQpOgorICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyk6CisgICAgICAgICog
ZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjo6SWdub3JlRGVz
dHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKToKKyAgICAgICAgKiBkb20v
TW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50SW5pdDo6TW91c2VF
dmVudEluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6Y2xvbmVGb3IpOgorICAg
ICAgICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50Ojpk
YXRhVHJhbnNmZXIpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9u
KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpjbGVhck5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpub25TaGFk
b3dCb3VuZGFyeVBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JT
aGFkb3dIb3N0RWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20v
Tm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6cmVt
b3ZlQ2FjaGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0
YTo6aXNFbXB0eSk6CisgICAgICAgICogZG9tL1BlbmRpbmdTY3JpcHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ1NjcmlwdDo6cmVsZWFzZUVsZW1lbnRBbmRDbGVhcik6CisgICAgICAg
ICogZG9tL1BvcFN0YXRlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVu
dDo6UG9wU3RhdGVFdmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbjo6ZGVwcmVjYXRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpyb290RWRpdGFi
bGVFbGVtZW50KToKKyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpkZWNyZW1lbnQpOgorICAgICAgICAqIGRvbS9Q
b3NpdGlvbkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpQ
b3NpdGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
cGFyc2VTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg6
CisgICAgICAgICogZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VCb3VuZGFyeVBvaW50OjpSYW5nZUJvdW5kYXJ5UG9pbnQpOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OlNjcmlw
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6c3RvcExvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNMb2FkUmVxdWVzdCk6Cisg
ICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjbGVhckRvY3VtZW50UG9pbnRlcik6
CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXk6OlByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6aW5saW5lU3R5
bGUpOgorICAgICAgICAqIGRvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg6Cisg
ICAgICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6
OlRleHRFdmVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VUlFdmVudEluaXQ6OlVJRXZlbnRJbml0KToKKyAgICAgICAgKiBkb20vVXNlclR5cGluZ0dl
c3R1cmVJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlclR5cGluZ0dlc3R1cmVJ
bmRpY2F0b3I6OlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yOjp+VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3Ip
OgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpudW1lcmljUHJlZml4KToKKyAgICAgICAgKiBkb20vZGVmYXVsdC9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydENoYW5uZWw6OmRpc2VudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbDo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAg
ICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg6CisKIDIwMTUtMTEt
MDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBD
bGVhbiB1cCBzb21lIENTUyAmIEZvbnQgY29kZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAkocmV2aXNp
b24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxNiArNDEsMTQgQEAgQXR0cjo6QXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBR
dWFsaQogICAgIDogQ29udGFpbmVyTm9kZShlbGVtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9l
bGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1faWdub3JlQ2hpbGRy
ZW5DaGFuZ2VkKDApCiB7CiB9CiAKIEF0dHI6OkF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYWxvbmVWYWx1
ZSkKICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQpCi0gICAgLCBtX2VsZW1lbnQoMCkKKyAg
ICAsIG1fZWxlbWVudChudWxscHRyKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N0YW5k
YWxvbmVWYWx1ZShzdGFuZGFsb25lVmFsdWUpCi0gICAgLCBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdl
ZCgwKQogewogfQogCkBAIC0yMDksNyArMjA3LDcgQEAgdm9pZCBBdHRyOjpkZXRhY2hGcm9tRWxl
bWVudFdpdGhWYWx1ZShjbwogICAgIEFTU0VSVChtX2VsZW1lbnQpOwogICAgIEFTU0VSVChtX3N0
YW5kYWxvbmVWYWx1ZS5pc051bGwoKSk7CiAgICAgbV9zdGFuZGFsb25lVmFsdWUgPSB2YWx1ZTsK
LSAgICBtX2VsZW1lbnQgPSAwOworICAgIG1fZWxlbWVudCA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
QXR0cjo6YXR0YWNoVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgJ
KHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9zdGFu
ZGFsb25lVmFsdWU7CiAKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbV9zdHls
ZTsKLSAgICB1bnNpZ25lZCBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZDsKKyAgICB1bnNpZ25lZCBt
X2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAJKHJl
dmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmFkaW9CdXR0b25H
cm91cDo6dXBkYXRlQ2hlY2tlZFN0YXQKICAgICAgICAgc2V0Q2hlY2tlZEJ1dHRvbihidXR0b24p
OwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9jaGVja2VkQnV0dG9uID09IGJ1dHRvbikKLSAg
ICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9IDA7CisgICAgICAgICAgICBtX2NoZWNrZWRCdXR0
b24gPSBudWxscHRyOwogICAgIH0KICAgICBpZiAod2FzVmFsaWQgIT0gaXNWYWxpZCgpKQogICAg
ICAgICB1cGRhdGVWYWxpZGl0eUZvckFsbEJ1dHRvbnMoKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBI
VE1MSW5wdXRFbGVtZW50KiBDaGVja2VkUmFkaW9CdXR0b25zOjpjCiAgICAgICAgIHJldHVybiAw
OwogICAgIG1fbmFtZVRvR3JvdXBNYXAtPmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBSYWRpb0J1
dHRvbkdyb3VwKiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmdldChuYW1lLmltcGwoKSk7Ci0g
ICAgcmV0dXJuIGdyb3VwID8gZ3JvdXAtPmNoZWNrZWRCdXR0b24oKSA6IDA7CisgICAgcmV0dXJu
IGdyb3VwID8gZ3JvdXAtPmNoZWNrZWRCdXR0b24oKSA6IG51bGxwdHI7CiB9CiAKIGJvb2wgQ2hl
Y2tlZFJhZGlvQnV0dG9uczo6aXNJblJlcXVpcmVkR3JvdXAoSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNj
b3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGls
ZExpc3RNdXRhdGlvblNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBA
IHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25BY2N1bXVsYXRvcjo6ZW5xdWUKICAgICBSZWZQdHI8Tm9k
ZUxpc3Q+IHJlbW92ZWROb2RlcyA9IFN0YXRpY05vZGVMaXN0OjphZG9wdChtX3JlbW92ZWROb2Rl
cyk7CiAgICAgUmVmUHRyPE11dGF0aW9uUmVjb3JkPiByZWNvcmQgPSBNdXRhdGlvblJlY29yZDo6
Y3JlYXRlQ2hpbGRMaXN0KG1fdGFyZ2V0LCBhZGRlZE5vZGVzLnJlbGVhc2UoKSwgcmVtb3ZlZE5v
ZGVzLnJlbGVhc2UoKSwgbV9wcmV2aW91c1NpYmxpbmcucmVsZWFzZSgpLCBtX25leHRTaWJsaW5n
LnJlbGVhc2UoKSk7CiAgICAgbV9vYnNlcnZlcnMtPmVucXVldWVNdXRhdGlvblJlY29yZChyZWNv
cmQucmVsZWFzZSgpKTsKLSAgICBtX2xhc3RBZGRlZCA9IDA7CisgICAgbV9sYXN0QWRkZWQgPSBu
dWxscHRyOwogICAgIEFTU0VSVChpc0VtcHR5KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50
cyhOb2RlJik7CiBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlJik7
CiAKLUNoaWxkTm9kZXNMYXp5U25hcHNob3QqIENoaWxkTm9kZXNMYXp5U25hcHNob3Q6OmxhdGVz
dFNuYXBzaG90ID0gMDsKK0NoaWxkTm9kZXNMYXp5U25hcHNob3QqIENoaWxkTm9kZXNMYXp5U25h
cHNob3Q6OmxhdGVzdFNuYXBzaG90ID0gbnVsbHB0cjsKIAogI2lmbmRlZiBOREVCVUcKIHVuc2ln
bmVkIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6c19jb3VudCA9IDA7CkBAIC01ODQsOSArNTg0
LDkgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIAogICAgIGlmICht
X2xhc3RDaGlsZCA9PSAmb2xkQ2hpbGQpCiAgICAgICAgIG1fbGFzdENoaWxkID0gcHJldmlvdXND
aGlsZDsKIAotICAgIG9sZENoaWxkLnNldFByZXZpb3VzU2libGluZygwKTsKLSAgICBvbGRDaGls
ZC5zZXROZXh0U2libGluZygwKTsKLSAgICBvbGRDaGlsZC5zZXRQYXJlbnROb2RlKDApOworICAg
IG9sZENoaWxkLnNldFByZXZpb3VzU2libGluZyhudWxscHRyKTsKKyAgICBvbGRDaGlsZC5zZXRO
ZXh0U2libGluZyhudWxscHRyKTsKKyAgICBvbGRDaGlsZC5zZXRQYXJlbnROb2RlKG51bGxwdHIp
OwogCiAgICAgZG9jdW1lbnQoKS5hZG9wdElmTmVlZGVkKCZvbGRDaGlsZCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCwxNCArMTgw
LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxSZW1vdmVDaGlsZChOb2RlJiBjaGlsZCk7
CiAKLSAgICBOb2RlKiBtX2ZpcnN0Q2hpbGQ7Ci0gICAgTm9kZSogbV9sYXN0Q2hpbGQ7CisgICAg
Tm9kZSogbV9maXJzdENoaWxkIHsgbnVsbHB0ciB9OworICAgIE5vZGUqIG1fbGFzdENoaWxkIHsg
bnVsbHB0ciB9OwogfTsKIAogaW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBOb2RlKGRvY3Vt
ZW50LCB0eXBlKQotICAgICwgbV9maXJzdENoaWxkKDApCi0gICAgLCBtX2xhc3RDaGlsZCgwKQog
ewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3Jp
dGhtcy5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCB2
b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChub2RlLmRvY3VtZW50KCkuY3NzVGFyZ2V0KCkgPT0gJm5vZGUpCi0gICAgICAg
IG5vZGUuZG9jdW1lbnQoKS5zZXRDU1NUYXJnZXQoMCk7CisgICAgICAgIG5vZGUuZG9jdW1lbnQo
KS5zZXRDU1NUYXJnZXQobnVsbHB0cik7CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJv
b3QgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKS5zaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYg
KCFub2RlLmluRG9jdW1lbnQoKSAmJiByb290LT5ob3N0KCkgPT0gJm5vZGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyMCw3ICs2MjAsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcigpIGNvbnN0OwogCi0g
ICAgdm9pZCBvcGVuKERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7CisgICAgdm9pZCBvcGVu
KERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7CiAgICAgdm9pZCBpbXBsaWNpdE9w
ZW4oKTsKIAogICAgIC8vIGNsb3NlKCkgaXMgdGhlIERPTSBBUEkgZG9jdW1lbnQuY2xvc2UoKQpA
QCAtNjM0LDkgKzYzNCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsUGFyc2luZygpOwog
Ci0gICAgdm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50KiBv
d25lckRvY3VtZW50ID0gMCk7Ci0gICAgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHRleHQsIERv
Y3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7Ci0gICAgdm9pZCB3cml0ZWxuKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSAwKTsKKyAgICB2b2lkIHdyaXRlKGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxs
cHRyKTsKKyAgICB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQgPSBudWxscHRyKTsKKyAgICB2b2lkIHdyaXRlbG4oY29uc3QgU3RyaW5nJiB0ZXh0
LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwogCiAgICAgYm9vbCB3ZWxsRm9y
bWVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWxsRm9ybWVkOyB9CiAKQEAgLTc4OCw3ICs3ODgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4pOwogICAgIEV2ZW50TGlzdGVuZXIqIGdldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3Bh
dGNoV2luZG93RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+
ID0gbnVsbHB0cik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbmRvd0xvYWRFdmVudCgpOwogCiAgICAg
UmVmUHRyPEV2ZW50PiBjcmVhdGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSwgRXhjZXB0
aW9uQ29kZSYpOwpAQCAtOTQ4LDcgKzk0OCw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRSdW5uZXIq
IHNjcmlwdFJ1bm5lcigpIHsgcmV0dXJuIG1fc2NyaXB0UnVubmVyLmdldCgpOyB9CiAgICAgSlNN
b2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigpIHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCgp
OyB9CiAKLSAgICBIVE1MU2NyaXB0RWxlbWVudCogY3VycmVudFNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuICFtX2N1cnJlbnRTY3JpcHRTdGFjay5pc0VtcHR5KCkgPyBtX2N1cnJlbnRTY3JpcHRTdGFj
ay5sYXN0KCkuZ2V0KCkgOiAwOyB9CisgICAgSFRNTFNjcmlwdEVsZW1lbnQqIGN1cnJlbnRTY3Jp
cHQoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50U2NyaXB0U3RhY2suaXNFbXB0eSgpID8gbV9j
dXJyZW50U2NyaXB0U3RhY2subGFzdCgpLmdldCgpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgcHVz
aEN1cnJlbnRTY3JpcHQoUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4pOwogICAgIHZvaWQg
cG9wQ3VycmVudFNjcmlwdCgpOwogCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBXM0MgQVBJCiAgICAgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0Owot
ICAgIEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gIW1f
ZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkgPyBtX2Z1bGxTY3JlZW5FbGVtZW50U3Rh
Y2subGFzdCgpLmdldCgpIDogMDsgfQorICAgIEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkg
PyBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2subGFzdCgpLmdldCgpIDogbnVsbHB0cjsgfQogICAg
IHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCkBAIC0xMzQ2LDcgKzEzNDYs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIgPSAwKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0
ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgb3ZlcnJp
ZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRP
cmRlcmVkTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRPcmRlcmVkTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE1ICs3NCwxNCBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IE1hcEVudHJ5IHsKICAgICAgICAgTWFwRW50cnkoKQotICAgICAgICAg
ICAgOiBlbGVtZW50KDApCi0gICAgICAgICAgICAsIGNvdW50KDApCisgICAgICAgICAgICA6IGNv
dW50KDApCiAgICAgICAgIHsgfQogICAgICAgICBleHBsaWNpdCBNYXBFbnRyeShFbGVtZW50KiBm
aXJzdEVsZW1lbnQpCiAgICAgICAgICAgICA6IGVsZW1lbnQoZmlyc3RFbGVtZW50KQogICAgICAg
ICAgICAgLCBjb3VudCgxKQogICAgICAgICB7IH0KIAotICAgICAgICBFbGVtZW50KiBlbGVtZW50
OworICAgICAgICBFbGVtZW50KiBlbGVtZW50IHsgbnVsbHB0ciB9OwogICAgICAgICB1bnNpZ25l
ZCBjb3VudDsKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBvcmRlcmVkTGlzdDsKICNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgRG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCkKIHZvaWQgRG9jdW1lbnRQ
YXJzZXI6OmRldGFjaCgpCiB7CiAgICAgbV9zdGF0ZSA9IERldGFjaGVkU3RhdGU7Ci0gICAgbV9k
b2N1bWVudCA9IDA7CisgICAgbV9kb2N1bWVudCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG9jdW1l
bnRQYXJzZXI6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExODEsNyArMTE4MSw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6
OnNldEF0dHJpYnV0ZUludGVybmEKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gQXR0ciBub2Rl
IGhvb2tlZCB0byB0aGlzIGF0dHJpYnV0ZSwgdGhlIEF0dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxv
dwogICAgICAgICAvLyB3aWxsIHdyaXRlIGludG8gdGhlIEVsZW1lbnREYXRhLgogICAgICAgICAv
LyBGSVhNRTogUmVmYWN0b3IgdGhpcyBzbyBpdCBtYWtlcyBzb21lIHNlbnNlLgotICAgICAgICBp
ZiAoUmVmUHRyPEF0dHI+IGF0dHJOb2RlID0gaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1
dGUgPyAwIDogYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICBpZiAoUmVmUHRy
PEF0dHI+IGF0dHJOb2RlID0gaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgPyBudWxs
cHRyIDogYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQogICAgICAgICAgICAgYXR0ck5vZGUt
PnNldFZhbHVlKG5ld1ZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5zdXJlVW5p
cXVlRWxlbWVudERhdGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3VmFsdWUpOwpA
QCAtMTYyOCw3ICsxNjI4LDcgQEAgdm9pZCBFbGVtZW50Ojp1bnJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudAogCiBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5zaGFkb3dSb290KCkgOiAw
OworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNoYWRvd1Jv
b3QoKSA6IG51bGxwdHI7CiB9CiAKIApAQCAtMjI3OSw3ICsyMjc5LDcgQEAgdm9pZCBFbGVtZW50
OjpibHVyKCkKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
ICAgICAgICAgICAgIGZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRF
bGVtZW50KDAsIGZyYW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQoKS5z
ZXRGb2N1c2VkRWxlbWVudCgwKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCkuc2V0Rm9jdXNlZEVs
ZW1lbnQobnVsbHB0cik7CiAgICAgfQogfQogCkBAIC0yNjcwLDEyICsyNjcwLDEyIEBAIHZvaWQg
RWxlbWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAKIFBzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6
OmJlZm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ID8gZWxlbWVudFJhcmVEYXRhKCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKSA6IDA7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+YmVmb3JlUHNldWRvRWxlbWVu
dCgpIDogbnVsbHB0cjsKIH0KIAogUHNldWRvRWxlbWVudCogRWxlbWVudDo6YWZ0ZXJQc2V1ZG9F
bGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJl
RGF0YSgpLT5hZnRlclBzZXVkb0VsZW1lbnQoKSA6IDA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRh
KCkgPyBlbGVtZW50UmFyZURhdGEoKS0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCkgOiBudWxscHRyOwog
fQogCiB2b2lkIEVsZW1lbnQ6OnNldEJlZm9yZVBzZXVkb0VsZW1lbnQoUmVmPFBzZXVkb0VsZW1l
bnQ+JiYgZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMTkxODczKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNiBAQCBFdmVudDo6RXZlbnQoKQogICAgICwgbV9kZWZhdWx0SGFuZGxlZChmYWxzZSkKICAg
ICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQogICAgICwgbV9ldmVudFBoYXNlKDApCi0gICAgLCBt
X2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQogewogfQpAQCAtNjYsNyArNjUsNiBAQCBFdmVudDo6
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5CiAgICAgLCBtX2RlZmF1bHRIYW5kbGVk
KGZhbHNlKQogICAgICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCiAgICAgLCBtX2V2ZW50UGhhc2Uo
MCkKLSAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNvbnZlcnRT
ZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CiB9CkBAIC04Miw3ICs4MCw2
IEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkKICAgICAsIG1fZGVm
YXVsdEhhbmRsZWQoZmFsc2UpCiAgICAgLCBtX2NhbmNlbEJ1YmJsZShmYWxzZSkKICAgICAsIG1f
ZXZlbnRQaGFzZSgwKQotICAgICwgbV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRp
bWUoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcCh0aW1lc3RhbXApKQogewogfQpAQCAtOTgs
NyArOTUsNiBAQCBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5CiAgICAg
LCBtX2RlZmF1bHRIYW5kbGVkKGZhbHNlKQogICAgICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCiAg
ICAgLCBtX2V2ZW50UGhhc2UoMCkKLSAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9j
cmVhdGVUaW1lKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBsZWdhY3lSZXR1cm5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICFkZWZhdWx0UHJl
dmVudGVkKCk7IH0KICAgICB2b2lkIHNldExlZ2FjeVJldHVyblZhbHVlKGJvb2wgcmV0dXJuVmFs
dWUpIHsgc2V0RGVmYXVsdFByZXZlbnRlZCghcmV0dXJuVmFsdWUpOyB9CiAKLSAgICBEYXRhVHJh
bnNmZXIqIGNsaXBib2FyZERhdGEoKSBjb25zdCB7IHJldHVybiBpc0NsaXBib2FyZEV2ZW50KCkg
PyBpbnRlcm5hbERhdGFUcmFuc2ZlcigpIDogMDsgfQorICAgIERhdGFUcmFuc2ZlciogY2xpcGJv
YXJkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZlbnQoKSA/IGludGVybmFsRGF0
YVRyYW5zZmVyKCkgOiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2
ZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9jYW5jZWxCdWJibGU7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBtX2V2ZW50UGhhc2U7
Ci0gICAgRXZlbnRUYXJnZXQqIG1fY3VycmVudFRhcmdldDsKKyAgICBFdmVudFRhcmdldCogbV9j
dXJyZW50VGFyZ2V0IHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV90YXJn
ZXQ7CiAgICAgRE9NVGltZVN0YW1wIG1fY3JlYXRlVGltZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50Q29udGV4dC5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBAIGJvb2wg
RXZlbnRDb250ZXh0Ojppc1RvdWNoRXZlbnRDb250ZXh0KCkKIAogTW91c2VPckZvY3VzRXZlbnRD
b250ZXh0OjpNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiB0YXJnZXQpCiAgICAgOiBFdmVudENvbnRleHQobm9kZSwgY3VycmVudFRhcmdldCwgdGFy
Z2V0KQotICAgICwgbV9yZWxhdGVkVGFyZ2V0KDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAotICAgIEV2ZW50Q29udGV4dCogbGFzdENvbnRleHRJ
ZkV4aXN0cygpIHsgcmV0dXJuIG1fcGF0aC5pc0VtcHR5KCkgPyAwIDogbV9wYXRoLmxhc3QoKS5n
ZXQoKTsgfQorICAgIEV2ZW50Q29udGV4dCogbGFzdENvbnRleHRJZkV4aXN0cygpIHsgcmV0dXJu
IG1fcGF0aC5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9wYXRoLmxhc3QoKS5nZXQoKTsgfQogCiBw
cml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCkBAIC0z
NTUsNyArMzU1LDcgQEAgYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZQog
ICAgIC8vIEVuc3VyZSB0aGF0IGFmdGVyIGV2ZW50IGRpc3BhdGNoLCB0aGUgZXZlbnQncyB0YXJn
ZXQgb2JqZWN0IGlzIHRoZQogICAgIC8vIG91dGVybW9zdCBzaGFkb3cgRE9NIGJvdW5kYXJ5Lgog
ICAgIGV2ZW50LT5zZXRUYXJnZXQod2luZG93RXZlbnRDb250ZXh0LnRhcmdldCgpKTsKLSAgICBl
dmVudC0+c2V0Q3VycmVudFRhcmdldCgwKTsKKyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChu
dWxscHRyKTsKIAogICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAJKHJldmlzaW9uIDE5MTg3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDE1ICsxOTgsMTMgQEAgdm9pZCBFdmVudExpc3RlbmVyTWFwOjpjb3B5RXZl
bnRMaXN0ZW5lcgogfQogCiBFdmVudExpc3RlbmVySXRlcmF0b3I6OkV2ZW50TGlzdGVuZXJJdGVy
YXRvcigpCi0gICAgOiBtX21hcCgwKQotICAgICwgbV9lbnRyeUluZGV4KDApCisgICAgOiBtX2Vu
dHJ5SW5kZXgoMCkKICAgICAsIG1faW5kZXgoMCkKIHsKIH0KIAogRXZlbnRMaXN0ZW5lckl0ZXJh
dG9yOjpFdmVudExpc3RlbmVySXRlcmF0b3IoRXZlbnRUYXJnZXQqIHRhcmdldCkKLSAgICA6IG1f
bWFwKDApCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKKyAgICA6IG1fZW50cnlJbmRleCgwKQogICAg
ICwgbV9pbmRleCgwKQogewogICAgIEFTU0VSVCh0YXJnZXQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBuZXh0TGlzdGVuZXIoKTsKIAogcHJpdmF0ZToK
LSAgICBFdmVudExpc3RlbmVyTWFwKiBtX21hcDsKKyAgICBFdmVudExpc3RlbmVyTWFwKiBtX21h
cCB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2VudHJ5SW5kZXg7CiAgICAgdW5zaWduZWQg
bV9pbmRleDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9u
IDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0
ZW5lcnMoRXZlCiAgICAgaWYgKCFkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEV2ZW50
TGlzdGVuZXJWZWN0b3IqIGxlZ2FjeUxpc3RlbmVyc1ZlY3RvciA9IDA7CisgICAgRXZlbnRMaXN0
ZW5lclZlY3RvciogbGVnYWN5TGlzdGVuZXJzVmVjdG9yID0gbnVsbHB0cjsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxlZ2FjeVR5cGVOYW1lID0gbGVnYWN5VHlwZShldmVudCk7CiAgICAgaWYg
KCFsZWdhY3lUeXBlTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIGxlZ2FjeUxpc3RlbmVyc1ZlY3Rv
ciA9IGQtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChsZWdhY3lUeXBlTmFtZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0ZvY3VzRXZlbnQuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRm9jdXNFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRm9jdXNFdmVudEluaXQ6OkZvY3VzRXZlbnRJbml0KCkKLSAg
ICA6IHJlbGF0ZWRUYXJnZXQoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0dl
bmVyaWNFdmVudFF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vR2Vu
ZXJpY0V2ZW50UXVldWUuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vR2VuZXJpY0V2ZW50UXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHZvaWQgR2VuZXJpY0V2ZW50UXVldWU6OmVucXVldWVFdmVudChQYXMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGV2ZW50LT50YXJnZXQoKSA9PSAmbV9vd25lcikKLSAgICAgICAgZXZlbnQt
PnNldFRhcmdldCgwKTsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldChudWxscHRyKTsKIAogICAg
IG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoZXZlbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDkgKzQwLDcgQEAgY2xhc3MgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSWRUYXJnZXRPYnNl
cnZlcjsKIHB1YmxpYzoKLSAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKQotICAgICAgICA6
IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQoMCkKLSAgICB7IH0KKyAgICBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkoKSB7IH0KIAogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpOwogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwmIGlkKTsKQEAgLTU1LDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hT
ZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRyPE9ic2VydmVyU2V0Pj4gSWRU
b09ic2VydmVyU2V0TWFwOwogICAgIElkVG9PYnNlcnZlclNldE1hcCBtX3JlZ2lzdHJ5OwotICAg
IE9ic2VydmVyU2V0KiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0OworICAgIE9ic2VydmVyU2V0
KiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0IHsgbnVsbHB0ciB9OwogfTsKIAogaW5saW5lIHZv
aWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9J
Z25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oCShyZXZpc2lvbiAxOTE4NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVt
ZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBJZ25vcmVEZXN0
cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0
IElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICAgICAgOiBtX2NvdW50KGRvY3VtZW50ID8gJmRvY3VtZW50LT5tX2lnbm9yZURlc3Ry
dWN0aXZlV3JpdGVDb3VudCA6IDApCisgICAgICAgIDogbV9jb3VudChkb2N1bWVudCA/ICZkb2N1
bWVudC0+bV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnQgOiBudWxscHRyKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2NvdW50KQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIE1l
c3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1MKICAgICAsIG1fZGF0YUFzU2Ny
aXB0VmFsdWUoaW5pdGlhbGl6ZXIuZGF0YSkKICAgICAsIG1fb3JpZ2luKGluaXRpYWxpemVyLm9y
aWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQoaW5pdGlhbGl6ZXIubGFzdEV2ZW50SWQpCi0gICAg
LCBtX3NvdXJjZShpc1ZhbGlkU291cmNlKGluaXRpYWxpemVyLnNvdXJjZS5nZXQoKSkgPyBpbml0
aWFsaXplci5zb3VyY2UgOiAwKQorICAgICwgbV9zb3VyY2UoaXNWYWxpZFNvdXJjZShpbml0aWFs
aXplci5zb3VyY2UuZ2V0KCkpID8gaW5pdGlhbGl6ZXIuc291cmNlIDogbnVsbHB0cikKICAgICAs
IG1fcG9ydHMoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5Pihpbml0aWFsaXplci5w
b3J0cykpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCShyZXZpc2lvbiAx
OTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDExICs1NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VF
dmVudD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSgpLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCisg
ICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmco
KSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50
VGFyZ2V0PiBzb3VyY2UgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgV1RG
Ojptb3ZlKHBvcnRzKSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5n
KCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gc291cmNlID0gMCkKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCks
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRh
cmdldD4gc291cmNlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIFdURjo6
bW92ZShwb3J0cykpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJ
KHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250
ZXh0RGVzdHJveWVkKCkKICAgICAvLyBNdXN0IGJlIGNsb3NlZCBiZWZvcmUgYmxvd2luZyBhd2F5
IHRoZSBjYWNoZWQgY29udGV4dCwgdG8gZW5zdXJlIHRoYXQgd2UgZ2V0IG5vIG1vcmUgY2FsbHMg
dG8gbWVzc2FnZUF2YWlsYWJsZSgpLgogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNs
b3NlTWVzc2FnZVBvcnRzKCkgdGFrZXMgY2FyZSBvZiB0aGF0LgogICAgIEFTU0VSVChtX2Nsb3Nl
ZCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKKyAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBudWxscHRyOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1l
c3NhZ2VzKCkKQEAgLTE3OSw3ICsxNzksNyBAQCBib29sIE1lc3NhZ2VQb3J0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKQogCiBNZXNzYWdlUG9ydCogTWVzc2FnZVBvcnQ6OmxvY2FsbHlFbnRhbmdsZWRQ
b3J0KCkKIHsKLSAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsID8gbV9lbnRhbmdsZWRDaGFu
bmVsLT5sb2NhbGx5RW50YW5nbGVkUG9ydChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogMDsK
KyAgICByZXR1cm4gbV9lbnRhbmdsZWRDaGFubmVsID8gbV9lbnRhbmdsZWRDaGFubmVsLT5sb2Nh
bGx5RW50YW5nbGVkUG9ydChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogbnVsbHB0cjsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6
ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9u
Q29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxOTE4
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDcgKzQzLDYgQEAgTW91c2VFdmVudEluaXQ6Ok1vdXNlRXZlbnRJbml0KCkKICAgICAs
IHNoaWZ0S2V5KGZhbHNlKQogICAgICwgbWV0YUtleShmYWxzZSkKICAgICAsIGJ1dHRvbigwKQot
ICAgICwgcmVsYXRlZFRhcmdldCgwKQogewogfQogCkBAIC0yNDMsNyArMjQyLDcgQEAgUGFzc1Jl
ZlB0cjxFdmVudD4gTW91c2VFdmVudDo6Y2xvbmVGb3IoSAogICAgIEFTU0VSVChpZnJhbWUpOwog
ICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBjbG9uZWRNb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3Jl
YXRlKCk7CiAgICAgRnJhbWUqIGZyYW1lID0gaWZyYW1lLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0g
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiAwOworICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUgPyBmcmFtZS0+dmlldygpIDogbnVsbHB0cjsK
ICAgICBjbG9uZWRNb3VzZUV2ZW50LT5pbml0TW91c2VFdmVudCh0eXBlKCksIGJ1YmJsZXMoKSwg
Y2FuY2VsYWJsZSgpLAogICAgICAgICBpZnJhbWUtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwK
ICAgICAgICAgZGV0YWlsKCksIHNjcmVlblgoKSwgc2NyZWVuWSgpLApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBO
b2RlKiBmcm9tRWxlbWVudCgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGZ1bmN0aW9u
cyBjYW4gYmUgbWVyZ2VkIGlmIG1fZGF0YVRyYW5zZmVyIGlzIG9ubHkgaW5pdGlhbGl6ZWQgZm9y
IGRyYWcgZXZlbnRzLgotICAgIERhdGFUcmFuc2ZlciogZGF0YVRyYW5zZmVyKCkgY29uc3QgeyBy
ZXR1cm4gaXNEcmFnRXZlbnQoKSA/IG1fZGF0YVRyYW5zZmVyLmdldCgpIDogMDsgfQorICAgIERh
dGFUcmFuc2ZlciogZGF0YVRyYW5zZmVyKCkgY29uc3QgeyByZXR1cm4gaXNEcmFnRXZlbnQoKSA/
IG1fZGF0YVRyYW5zZmVyLmdldCgpIDogbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRGF0YVRyYW5z
ZmVyKiBpbnRlcm5hbERhdGFUcmFuc2ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0
YVRyYW5zZmVyLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VS
ZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgTW91
c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbgogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFnZUxvY2F0aW9uOwogICAgIExheW91dFBvaW50IHNjcm9sbFBvc2l0aW9uOwogCi0g
ICAgRnJhbWUqIGZyYW1lID0gdmlldygpID8gdmlldygpLT5mcmFtZSgpIDogMDsKKyAgICBGcmFt
ZSogZnJhbWUgPSB2aWV3KCkgPyB2aWV3KCktPmZyYW1lKCkgOiBudWxscHRyOwogICAgIGlmIChm
cmFtZSAmJiAhaXNTaW11bGF0ZWQpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZp
ZXctPmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIE1v
dXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiAKIHZvaWQgTW91c2VSZWxhdGVkRXZl
bnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKIHsKLSAgICBOb2RlKiB0YXJnZXROb2RlID0g
dGFyZ2V0KCkgPyB0YXJnZXQoKS0+dG9Ob2RlKCkgOiAwOworICAgIE5vZGUqIHRhcmdldE5vZGUg
PSB0YXJnZXQoKSA/IHRhcmdldCgpLT50b05vZGUoKSA6IG51bGxwdHI7CiAgICAgaWYgKCF0YXJn
ZXROb2RlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZl
bnQuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNdXRhdGlvbkV2ZW50KTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBSZWY8TXV0YXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRl
ZE5vZGUgPSAwLAorICAgICAgICBzdGF0aWMgUmVmPE11dGF0aW9uRXZlbnQ+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBQYXNzUmVmUHRyPE5vZGU+IHJl
bGF0ZWROb2RlID0gbnVsbHB0ciwKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcHJldlZhbHVl
ID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUgPSBTdHJpbmcoKSwgY29uc3QgU3Ry
aW5nJiBhdHRyTmFtZSA9IFN0cmluZygpLCB1bnNpZ25lZCBzaG9ydCBhdHRyQ2hhbmdlID0gMCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTXV0YXRpb25FdmVu
dCh0eXBlLCBjYW5CdWJibGUsIGZhbHNlLCByZWxhdGVkTm9kZSwgcHJldlZhbHVlLCBuZXdWYWx1
ZSwgYXR0ck5hbWUsIGF0dHJDaGFuZ2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9u
IDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVj
dGkKIAogTm9kZUxpc3RzTm9kZURhdGEqIE5vZGU6Om5vZGVMaXN0cygpCiB7Ci0gICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSA6IDA7CisgICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSA6IG51bGxwdHI7CiB9CiAK
IHZvaWQgTm9kZTo6Y2xlYXJOb2RlTGlzdHMoKQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgTm9kZSog
Tm9kZTo6bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZAogQ29udGFpbmVyTm9kZSogTm9kZTo6
bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgY29uc3QKIHsKICAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50LT5p
c1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IDA7CisgICAgcmV0dXJuIHBhcmVudCAmJiAhcGFyZW50
LT5pc1NoYWRvd1Jvb3QoKSA/IHBhcmVudCA6IG51bGxwdHI7CiB9CiAKIEVsZW1lbnQqIE5vZGU6
OnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZp
c2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MDQsOCArNzA0LDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX25leHQ7CiAgICAgLy8g
V2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSBy
YXJlIGRhdGEuCiAgICAgdW5pb24gRGF0YVVuaW9uIHsKLSAgICAgICAgRGF0YVVuaW9uKCkgOiBt
X3JlbmRlcmVyKDApIHsgfQotICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAg
ICAgIERhdGFVbmlvbigpIHsgfQorICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXIgeyBu
dWxscHRyIH07CiAgICAgICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFyZURhdGE7CiAgICAgfSBt
X2RhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDE5MTg3
MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYWNoZWRDb2xsZWN0aW9ucy5y
ZW1vdmUobmFtZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rpb24tPnR5cGUoKSwgbmFtZSkpOwogICAg
IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRy
TmFtZSA9IDApOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyTmFtZSA9IG51bGxwdHIpOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9hdG9taWNOYW1lQ2FjaGVzLmlzRW1wdHkoKSAmJiBtX2NhY2hlZENv
bGxlY3Rpb25zLmlzRW1wdHkoKSAmJiBtX3RhZ0NvbGxlY3Rpb25DYWNoZU5TLmlzRW1wdHkoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAJKHJldmlzaW9uIDE5MTg3MykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBQZW5kaW5nU2NyaXB0Ojp+UGVuZGluZ1NjcmlwdCgpCiAKIFBhc3NS
ZWZQdHI8RWxlbWVudD4gUGVuZGluZ1NjcmlwdDo6cmVsZWFzZUVsZW1lbnRBbmRDbGVhcigpCiB7
Ci0gICAgc2V0Q2FjaGVkU2NyaXB0KDApOworICAgIHNldENhY2hlZFNjcmlwdChudWxscHRyKTsK
ICAgICBtX3dhdGNoaW5nRm9yTG9hZCA9IGZhbHNlOwogICAgIG1fc3RhcnRpbmdQb3NpdGlvbiA9
IFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCk7CiAgICAgcmV0dXJuIG1fZWxlbWVu
dC5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwCShyZXZp
c2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwxMiBAQCBQb3BTdGF0ZUV2ZW50SW5pdDo6UG9wU3Rh
dGVFdmVudEluaXQoKQogCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KCkKICAgICA6IEV2
ZW50KGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBmYWxzZSwgdHJ1ZSkKLSAgICAsIG1fc2Vy
aWFsaXplZFN0YXRlKDApCi0gICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIAogUG9wU3RhdGVFdmVu
dDo6UG9wU3RhdGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBvcFN0YXRl
RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQog
ICAgICwgbV9zdGF0ZShpbml0aWFsaXplci5zdGF0ZSkKLSAgICAsIG1fc2VyaWFsaXplZFN0YXRl
KDApCi0gICAgLCBtX2hpc3RvcnkoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJ
KHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gd2lsbCBiZSB0
cmVhdGVkIGFzIGJlZm9yZSBpZ25vcmVkTm9kZSAodGh1cyBub2RlKCkgaXMgcmVhbGx5IGFmdGVy
IHRoZSBwb3NpdGlvbiwgbm90IGNvbnRhaW5pbmcgaXQpLgogICAgIE5vZGUqIGRlcHJlY2F0ZWRO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOyB9CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvck5vZGUgPyAmbV9hbmNob3JOb2Rl
LT5kb2N1bWVudCgpIDogMDsgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5jaG9yTm9kZSA/ICZtX2FuY2hvck5vZGUtPmRvY3VtZW50KCkgOiBudWxscHRyOyB9
CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBOb2RlKiBjb250YWluZXIgPSBjb250YWluZXJOb2RlKCk7Ci0gICAgICAgIHJldHVybiBjb250
YWluZXIgPyBjb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA6IDA7CisgICAgICAgIHJl
dHVybiBjb250YWluZXIgPyBjb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA6IG51bGxw
dHI7CiAgICAgfQogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgUG9zaXRp
b25Jc09mZnNldEluQW5jaG9yIHBvc2l0aW9ucywgdW5sZXNzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBQb3NpdGlvbkl0ZXJhdG9yOjpkZWNyZW1lbnQoKQogICAgIGlmIChtX25vZGVB
ZnRlclBvc2l0aW9uSW5BbmNob3IpIHsKICAgICAgICAgbV9hbmNob3JOb2RlID0gbV9ub2RlQWZ0
ZXJQb3NpdGlvbkluQW5jaG9yLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgaWYgKG1fYW5j
aG9yTm9kZSkgewotICAgICAgICAgICAgbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yID0gMDsK
KyAgICAgICAgICAgIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvciA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBtX29mZnNldEluQW5jaG9yID0gbV9hbmNob3JOb2RlLT5oYXNDaGlsZE5vZGVzKCkg
PyAwIDogbGFzdE9mZnNldEZvckVkaXRpbmcobV9hbmNob3JOb2RlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvciA9IG1fbm9kZUFmdGVy
UG9zaXRpb25JbkFuY2hvci0+cGFyZW50Tm9kZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb25JdGVyYXRvci5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb25JdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBvc2l0aW9uSXRlcmF0b3IgewogcHVibGljOgogICAgIFBv
c2l0aW9uSXRlcmF0b3IoKQotICAgICAgICA6IG1fYW5jaG9yTm9kZSgwKQotICAgICAgICAsIG1f
bm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvcigwKQotICAgICAgICAsIG1fb2Zmc2V0SW5BbmNob3Io
MCkKKyAgICAgICAgOiBtX29mZnNldEluQW5jaG9yKDApCiAgICAgewogICAgIH0KIApAQCAtNjQs
OCArNjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NhbmRpZGF0ZSgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIE5vZGUqIG1fYW5jaG9yTm9kZTsKLSAgICBOb2RlKiBtX25vZGVBZnRlclBvc2l0
aW9uSW5BbmNob3I7IC8vIElmIHRoaXMgaXMgbm9uLW51bGwsIG1fbm9kZUFmdGVyUG9zaXRpb25J
bkFuY2hvci0+cGFyZW50Tm9kZSgpID09IG1fYW5jaG9yTm9kZTsKKyAgICBOb2RlKiBtX2FuY2hv
ck5vZGUgeyBudWxscHRyIH07CisgICAgTm9kZSogbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9y
IHsgbnVsbHB0ciB9OyAvLyBJZiB0aGlzIGlzIG5vbi1udWxsLCBtX25vZGVBZnRlclBvc2l0aW9u
SW5BbmNob3ItPnBhcmVudE5vZGUoKSA9PSBtX2FuY2hvck5vZGU7CiAgICAgaW50IG1fb2Zmc2V0
SW5BbmNob3I7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogaW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEs
IENyZWF0ZU90aGVyKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQotICAgICwgbV9jYWNoZWRTaGVl
dCgwKQogICAgICwgbV9sb2FkaW5nKGZhbHNlKQogICAgICwgbV9hbHRlcm5hdGUoZmFsc2UpCiAg
ICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkKQEAgLTEzNSw3ICsxMzQsNyBAQCB2b2lkIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkgewogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hl
ZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0g
MDsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZikuc3RyaW5nKCk7CkBAIC0yMzIsNyArMjMxLDcgQEAgdm9pZCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OnBhcnNlU3R5bGVTaAogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAg
ICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNo
ZWV0ID0gMDsKKyAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKIAogICAgIG1fbG9hZGluZyA9
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oCShyZXZpc2lvbiAxOTE4NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9sb2NhbEhyZWY7CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1f
bWVkaWE7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVk
U2hlZXQ7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVk
U2hlZXQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPFN0eWxlU2hlZXQ+IG1fc2hlZXQ7CiAgICAg
Ym9vbCBtX2xvYWRpbmc7CiAgICAgYm9vbCBtX2FsdGVybmF0ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNiBAQCBwcml2YXRlOgogaW5saW5lIFJhbmdlQm91bmRhcnlQb2ludDo6UmFuZ2VCb3VuZGFy
eVBvaW50KFBhc3NSZWZQdHI8Tm9kZT4gY29udGFpbmVyKQogICAgIDogbV9jb250YWluZXJOb2Rl
KGNvbnRhaW5lcikKICAgICAsIG1fb2Zmc2V0SW5Db250YWluZXIoMCkKLSAgICAsIG1fY2hpbGRC
ZWZvcmVCb3VuZGFyeSgwKQogewogICAgIEFTU0VSVChtX2NvbnRhaW5lck5vZGUpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTkxODczKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0RWxlbWVudDo6U2NyaXB0
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBib29sIGFscmVh
ZHlTdGFydGVkKQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX2NhY2hlZFNjcmlw
dCgwKQorICAgICwgbV9jYWNoZWRTY3JpcHQobnVsbHB0cikKICAgICAsIG1fc3RhcnRMaW5lTnVt
YmVyKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSkKICAgICAsIG1fcGFyc2VySW5z
ZXJ0ZWQocGFyc2VySW5zZXJ0ZWQpCiAgICAgLCBtX2lzRXh0ZXJuYWxTY3JpcHQoZmFsc2UpCkBA
IC0zMTUsNyArMzE1LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpzdG9wTG9hZFJlcXVlc3QoKQog
ICAgIGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBpZiAoIW1fd2lsbEJlUGFyc2VyRXhl
Y3V0ZWQpCiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwot
ICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IDA7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gbnVs
bHB0cjsKICAgICB9CiB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgZWxzZQogICAgICAgICBtX2VsZW1lbnQuZG9jdW1l
bnQoKS5zY3JpcHRSdW5uZXIoKS0+bm90aWZ5U2NyaXB0UmVhZHkodGhpcywgU2NyaXB0UnVubmVy
OjpBU1lOQ19FWEVDVVRJT04pOwogCi0gICAgbV9jYWNoZWRTY3JpcHQgPSAwOworICAgIG1fY2Fj
aGVkU2NyaXB0ID0gbnVsbHB0cjsKIH0KIAogYm9vbCBTY3JpcHRFbGVtZW50OjppZ25vcmVzTG9h
ZFJlcXVlc3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyKGRvY3VtZW50LCBkaXNwbGF5SUQpKTsKICAgICB9CiAgICAg
flNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpOwotICAgIHZvaWQgY2xlYXJEb2N1bWVudFBv
aW50ZXIoKSB7IG1fZG9jdW1lbnQgPSAwOyB9CisgICAgdm9pZCBjbGVhckRvY3VtZW50UG9pbnRl
cigpIHsgbV9kb2N1bWVudCA9IG51bGxwdHI7IH0KIAogICAgIHR5cGVkZWYgaW50IENhbGxiYWNr
SWQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
MTg3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsOCArNDYsOCBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoU3R5bGVkRWxlbWVu
dCkgPT0gCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdHJ1Y3QgUHJlc2VudGF0aW9u
QXR0cmlidXRlQ2FjaGVLZXkgewotICAgIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5KCkg
OiB0YWdOYW1lKDApIHsgfQotICAgIEF0b21pY1N0cmluZ0ltcGwqIHRhZ05hbWU7CisgICAgUHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkoKSB7IH0KKyAgICBBdG9taWNTdHJpbmdJbXBsKiB0
YWdOYW1lIHsgbnVsbHB0ciB9OwogICAgIC8vIE9ubHkgdGhlIHZhbHVlcyBuZWVkIHJlZmNvdW50
aW5nLgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmlu
Zz4sIDM+IGF0dHJpYnV0ZXNBbmRWYWx1ZXM7CiB9OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQg
U3R5bGVkRWxlbWVudDo6cmVtb3ZlQWxsSW5saW5lU3R5bGUKIAogdm9pZCBTdHlsZWRFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29u
c3QKIHsKLSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1l
bnREYXRhKCkgPyBlbGVtZW50RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkKKyAgICBpZiAoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnREYXRhKCkgPyBlbGVtZW50
RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogbnVsbHB0cikKICAgICAgICAgaW5saW5lU3R5bGUtPmFk
ZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsICZkb2N1bWVudCgpLmVsZW1lbnRTaGVldCgpLmNv
bnRlbnRzKCkpOwogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojpy
ZWJ1aWxkUHJlc2VudGF0aW9uQQogICAgIFVuaXF1ZUVsZW1lbnREYXRhJiBlbGVtZW50RGF0YSA9
IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKICAgICBlbGVtZW50RGF0YS5zZXRQcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2UpOwotICAgIGVsZW1lbnREYXRhLm1fcHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUgPSBzdHlsZS0+aXNFbXB0eSgpID8gMCA6IHN0eWxlOwor
ICAgIGVsZW1lbnREYXRhLm1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUgPSBzdHlsZS0+aXNF
bXB0eSgpID8gbnVsbHB0ciA6IHN0eWxlOwogCiAgICAgaWYgKCFjYWNoZUhhc2ggfHwgY2FjaGVJ
dGVyYXRvci0+dmFsdWUpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZSgpOwogCi0gICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIGVsZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0YSgpLT5tX2lubGluZVN0eWxlLmdl
dCgpIDogMDsgfQorICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUoKSBjb25z
dCB7IHJldHVybiBlbGVtZW50RGF0YSgpID8gZWxlbWVudERhdGEoKS0+bV9pbmxpbmVTdHlsZS5n
ZXQoKSA6IG51bGxwdHI7IH0KICAgICAKICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZh
bHNlKTsKICAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NT
UHJvcGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21l
bnQuaAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29u
dGVudERvY3VtZW50RnJhZ21lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1faG9zdDsgfQotICAgIHZvaWQgY2xlYXJIb3N0KCkgeyBtX2hvc3QgPSAwOyB9CisgICAgdm9p
ZCBjbGVhckhvc3QoKSB7IG1faG9zdCA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBUZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWxl
bWVudCogaG9zdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCShyZXZpc2lvbiAxOTE4
NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNyArNzQsNiBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0
CiAgICAgOiBVSUV2ZW50KGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCwgdHJ1ZSwgdHJ1ZSwg
dmlldywgMCkKICAgICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKICAgICAsIG1fZGF0YShkYXRh
KQotICAgICwgbV9wYXN0aW5nRnJhZ21lbnQoMCkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNl
KGZhbHNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKGZhbHNlKQogICAgICwgbV9tYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3Rl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAkocmV2aXNpb24gMTkxODczKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVUlFdmVudEluaXQ6OlVJRXZlbnRJbml0KCkKLSAg
ICA6IHZpZXcoMCkKLSAgICAsIGRldGFpbCgwKQorICAgIDogZGV0YWlsKDApCiB7CiB9CiAKIFVJ
RXZlbnRJbml0OjpVSUV2ZW50SW5pdChib29sIGJ1YmJsZXMsIGJvb2wgY2FuY2VsYWJsZSkKICAg
ICA6IEV2ZW50SW5pdChidWJibGVzLCBjYW5jZWxhYmxlKQotICAgICwgdmlldygwKQogICAgICwg
ZGV0YWlsKDApCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyVHlw
aW5nR2VzdHVyZUluZGljYXRvci5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3I6OlVzZXJUeXBpbmdHZQog
ICAgICwgbV9wcmV2aW91c0ZvY3VzZWROb2RlKGZvY3VzZWROb2RlKCkpCiB7CiAgICAgc19wcm9j
ZXNzaW5nVXNlclR5cGluZ0dlc3R1cmUgPSB0cnVlOwotICAgIGZvY3VzZWROb2RlKCkgPSBmcmFt
ZS5kb2N1bWVudCgpID8gZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSA6IDA7Cisg
ICAgZm9jdXNlZE5vZGUoKSA9IGZyYW1lLmRvY3VtZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5m
b2N1c2VkRWxlbWVudCgpIDogbnVsbHB0cjsKIH0KIAogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0
b3I6On5Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsy
ODYsNyBAQCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmCiAgICAgICAg
IHJlc3VsdC5tYXhpbXVtU2NhbGUgPSByZXN1bHQubWluaW11bVNjYWxlID0gcmVzdWx0LmluaXRp
YWxTY2FsZTsKIH0KIAotc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoY29uc3QgU3RyaW5nJiBr
ZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCogb2sgPSAwKQorc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoY29uc3QgU3RyaW5nJiBr
ZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCogb2sgPSBudWxscHRyKQogewogICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CiAgICAgZmxv
YXQgdmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1
bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCShyZXZpc2lvbiAxOTE4NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6
OmRpc2VudGFuZ2xlKCkKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IHJlbW90ZSA9IG1fY2hhbm5lbC0+ZW50YW5nbGVkQ2hhbm5lbCgpOwogICAgIGlmIChyZW1vdGUp
Ci0gICAgICAgIHJlbW90ZS0+c2V0UmVtb3RlUG9ydCgwKTsKKyAgICAgICAgcmVtb3RlLT5zZXRS
ZW1vdGVQb3J0KG51bGxwdHIpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1l
c3NhZ2VUb1JlbW90ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKQEAgLTE1
NCw3ICsxNTQsNiBAQCBSZWY8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IFBsYXRmb3JtCiBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwoUGFz
c1JlZlB0cjxNZXNzYWdlUG9ydFF1ZXVlPiBpbmNvbWluZywgUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dFF1ZXVlPiBvdXRnb2luZykKICAgICA6IG1faW5jb21pbmdRdWV1ZShpbmNvbWluZykKICAgICAs
IG1fb3V0Z29pbmdRdWV1ZShvdXRnb2luZykKLSAgICAsIG1fcmVtb3RlUG9ydCgwKQogewogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmgJKHJldmlzaW9uIDE5MTg3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxN
ZXNzYWdlUG9ydFF1ZXVlPiBtX291dGdvaW5nUXVldWU7CiAKICAgICAgICAgLy8gVGhlIHBvcnQg
d2UgYXJlIGNvbm5lY3RlZCB0byAodGhlIHJlbW90ZSBwb3J0KSAtIHRoaXMgaXMgdGhlIHBvcnQg
dGhhdCBpcyBub3RpZmllZCB3aGVuIG5ldyBtZXNzYWdlcyBhcnJpdmUuCi0gICAgICAgIE1lc3Nh
Z2VQb3J0KiBtX3JlbW90ZVBvcnQ7CisgICAgICAgIE1lc3NhZ2VQb3J0KiBtX3JlbW90ZVBvcnQg
eyBudWxscHRyIH07CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264670</attachid>
            <date>2015-11-02 23:08:11 -0800</date>
            <delta_ts>2015-11-03 10:25:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150788-20151103160713.patch</filename>
            <type>text/plain</type>
            <size>54448</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MCBAQAorMjAxNS0xMS0wMiAgSHVuc2Vv
cCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVwbGFjZSAwIGFu
ZCBOVUxMIHdpdGggbnVsbHB0ciBpbiBXZWJDb3JlL2RvbS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF0dHI6OkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6ZGV0YWNoRnJvbUVs
ZW1lbnRXaXRoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6YXR0YWNoVG9FbGVtZW50
KToKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DaGVja2VkUmFkaW9CdXR0
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvQnV0dG9uR3JvdXA6OnVwZGF0ZUNoZWNr
ZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjpjaGVja2Vk
QnV0dG9uRm9yR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tlZFJhZGlvQnV0dG9uczo6
aXNJblJlcXVpcmVkR3JvdXApOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3I6OmVu
cXVldWVNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2Vlbik6CisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
OkNvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Vs
bEZvcm1lZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0UnVubmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb2R1bGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmN1cnJlbnRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6Ok1hcEVudHJ5OjpN
YXBFbnRyeSk6CisgICAgICAgICogZG9tL0RvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50UGFyc2VyOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRQYXJzZXI6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpibHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBzZXVk
b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEJlZm9yZVBzZXVkb0VsZW1lbnQpOgor
ICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6RXZlbnQp
OgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmxlZ2Fj
eVJldHVyblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50OjpzZXRMZWdhY3lSZXR1cm5W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6Y2xpcGJvYXJkRGF0YSk6CisgICAgICAg
ICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQ6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCk6CisgICAgICAgICogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6Omxhc3RDb250
ZXh0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aEV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpjb3B5RXZlbnRMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJJdGVyYXRv
cjo6RXZlbnRMaXN0ZW5lckl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vRm9jdXNFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0V2ZW50SW5pdDo6Rm9jdXNFdmVudEluaXQp
OgorICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyk6CisgICAgICAgICogZG9t
L0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjo6SWdub3JlRGVzdHJ1
Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAg
ICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKToKKyAgICAgICAgKiBkb20vTW91
c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50SW5pdDo6TW91c2VFdmVu
dEluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6Y2xvbmVGb3IpOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpkYXRh
VHJhbnNmZXIpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjbGVhck5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpub25TaGFkb3dC
b3VuZGFyeVBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50T3JTaGFk
b3dIb3N0RWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6cmVtb3Zl
Q2FjaGVkQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6
aXNFbXB0eSk6CisgICAgICAgICogZG9tL1BlbmRpbmdTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ1NjcmlwdDo6cmVsZWFzZUVsZW1lbnRBbmRDbGVhcik6CisgICAgICAgICog
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6
UG9wU3RhdGVFdmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6ZGVwcmVjYXRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpyb290RWRpdGFibGVF
bGVtZW50KToKKyAgICAgICAgKiBkb20vUG9zaXRpb25JdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpkZWNyZW1lbnQpOgorICAgICAgICAqIGRvbS9Qb3Np
dGlvbkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpQb3Np
dGlvbkl0ZXJhdG9yKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6cGFy
c2VTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmg6Cisg
ICAgICAgICogZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6UmFu
Z2VCb3VuZGFyeVBvaW50OjpSYW5nZUJvdW5kYXJ5UG9pbnQpOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OlNjcmlwdEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6c3RvcExvYWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNMb2FkUmVxdWVzdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjbGVhckRvY3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGVLZXk6OlByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGUp
OgorICAgICAgICAqIGRvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg6CisgICAg
ICAgICogZG9tL1RleHRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OlRl
eHRFdmVudCk6CisgICAgICAgICogZG9tL1VJRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VUlFdmVudEluaXQ6OlVJRXZlbnRJbml0KToKKyAgICAgICAgKiBkb20vVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3I6OlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yOjp+VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IpOgor
ICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpudW1lcmljUHJlZml4KToKKyAgICAgICAgKiBkb20vZGVmYXVsdC9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWw6OmRpc2VudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbDo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAq
IGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg6CisKIDIwMTUtMTEtMDIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBS
ZW5hbWUgSlNET01XcmFwcGVyLmltcGwgdG8gSlNET01XcmFwcGVyLndyYXBwZWQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDEzIEBAIEF0dHI6OkF0dHIoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGkKICAgICA6IENvbnRhaW5lck5vZGUoZWxlbWVudC0+ZG9j
dW1lbnQoKSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9uYW1lKG5hbWUpCi0g
ICAgLCBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCgwKQogewogfQogCiBBdHRyOjpBdHRyKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdGFuZGFsb25lVmFsdWUpCiAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQotICAg
ICwgbV9lbGVtZW50KDApCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fc3RhbmRhbG9uZVZh
bHVlKHN0YW5kYWxvbmVWYWx1ZSkKLSAgICAsIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkKDApCiB7
CiB9CiAKQEAgLTIwOSw3ICsyMDYsNyBAQCB2b2lkIEF0dHI6OmRldGFjaEZyb21FbGVtZW50V2l0
aFZhbHVlKGNvCiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgQVNTRVJUKG1fc3RhbmRhbG9u
ZVZhbHVlLmlzTnVsbCgpKTsKICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IHZhbHVlOwotICAgIG1f
ZWxlbWVudCA9IDA7CisgICAgbV9lbGVtZW50ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBBdHRyOjph
dHRhY2hUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkocmV2aXNp
b24gMTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTIgKzkxLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBBdHRyIHdyYXBzIGVpdGhlciBh
biBlbGVtZW50L25hbWUsIG9yIGEgbmFtZS92YWx1ZSBwYWlyICh3aGVuIGl0J3MgYSBzdGFuZGFs
b25lIE5vZGUuKQogICAgIC8vIE5vdGUgdGhhdCBtX25hbWUgaXMgYWx3YXlzIHNldCwgYnV0IG1f
ZWxlbWVudC9tX3N0YW5kYWxvbmVWYWx1ZSBtYXkgYmUgbnVsbC4KLSAgICBFbGVtZW50KiBtX2Vs
ZW1lbnQ7CisgICAgRWxlbWVudCogbV9lbGVtZW50IHsgbnVsbHB0ciB9OwogICAgIFF1YWxpZmll
ZE5hbWUgbV9uYW1lOwogICAgIEF0b21pY1N0cmluZyBtX3N0YW5kYWxvbmVWYWx1ZTsKIAogICAg
IFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtX3N0eWxlOwotICAgIHVuc2lnbmVkIG1f
aWdub3JlQ2hpbGRyZW5DaGFuZ2VkOworICAgIHVuc2lnbmVkIG1faWdub3JlQ2hpbGRyZW5DaGFu
Z2VkIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcAkocmV2aXNpb24gMTkxODg3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3VwOjp1cGRhdGVDaGVja2Vk
U3RhdAogICAgICAgICBzZXRDaGVja2VkQnV0dG9uKGJ1dHRvbik7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGlmIChtX2NoZWNrZWRCdXR0b24gPT0gYnV0dG9uKQotICAgICAgICAgICAgbV9jaGVja2Vk
QnV0dG9uID0gMDsKKyAgICAgICAgICAgIG1fY2hlY2tlZEJ1dHRvbiA9IG51bGxwdHI7CiAgICAg
fQogICAgIGlmICh3YXNWYWxpZCAhPSBpc1ZhbGlkKCkpCiAgICAgICAgIHVwZGF0ZVZhbGlkaXR5
Rm9yQWxsQnV0dG9ucygpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQqIENo
ZWNrZWRSYWRpb0J1dHRvbnM6OmMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgbV9uYW1lVG9Hcm91
cE1hcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIFJhZGlvQnV0dG9uR3JvdXAqIGdyb3VwID0g
bV9uYW1lVG9Hcm91cE1hcC0+Z2V0KG5hbWUuaW1wbCgpKTsKLSAgICByZXR1cm4gZ3JvdXAgPyBn
cm91cC0+Y2hlY2tlZEJ1dHRvbigpIDogMDsKKyAgICByZXR1cm4gZ3JvdXAgPyBncm91cC0+Y2hl
Y2tlZEJ1dHRvbigpIDogbnVsbHB0cjsKIH0KIAogYm9vbCBDaGVja2VkUmFkaW9CdXR0b25zOjpp
c0luUmVxdWlyZWRHcm91cChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAkocmV2aXNp
b24gMTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yOjplbnF1ZQogICAgIFJlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZE5vZGVz
ID0gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG1fcmVtb3ZlZE5vZGVzKTsKICAgICBSZWZQdHI8TXV0
YXRpb25SZWNvcmQ+IHJlY29yZCA9IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZExpc3QobV90
YXJnZXQsIGFkZGVkTm9kZXMucmVsZWFzZSgpLCByZW1vdmVkTm9kZXMucmVsZWFzZSgpLCBtX3By
ZXZpb3VzU2libGluZy5yZWxlYXNlKCksIG1fbmV4dFNpYmxpbmcucmVsZWFzZSgpKTsKICAgICBt
X29ic2VydmVycy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKHJlY29yZC5yZWxlYXNlKCkpOwotICAg
IG1fbGFzdEFkZGVkID0gMDsKKyAgICBtX2xhc3RBZGRlZCA9IG51bGxwdHI7CiAgICAgQVNTRVJU
KGlzRW1wdHkoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJ
KHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUmKTsKIHN0YXRpYyB2
b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUmKTsKIAotQ2hpbGROb2Rlc0xhenlT
bmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bGF0ZXN0U25hcHNob3QgPSAwOworQ2hp
bGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6bGF0ZXN0U25hcHNo
b3Q7CiAKICNpZm5kZWYgTkRFQlVHCiB1bnNpZ25lZCBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246
OnNfY291bnQgPSAwOwpAQCAtNTg0LDkgKzU4NCw5IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQmV0d2VlbihOb2RlKiAKICAgICBpZiAobV9sYXN0Q2hpbGQgPT0gJm9sZENoaWxkKQogICAg
ICAgICBtX2xhc3RDaGlsZCA9IHByZXZpb3VzQ2hpbGQ7CiAKLSAgICBvbGRDaGlsZC5zZXRQcmV2
aW91c1NpYmxpbmcoMCk7Ci0gICAgb2xkQ2hpbGQuc2V0TmV4dFNpYmxpbmcoMCk7Ci0gICAgb2xk
Q2hpbGQuc2V0UGFyZW50Tm9kZSgwKTsKKyAgICBvbGRDaGlsZC5zZXRQcmV2aW91c1NpYmxpbmco
bnVsbHB0cik7CisgICAgb2xkQ2hpbGQuc2V0TmV4dFNpYmxpbmcobnVsbHB0cik7CisgICAgb2xk
Q2hpbGQuc2V0UGFyZW50Tm9kZShudWxscHRyKTsKIAogICAgIGRvY3VtZW50KCkuYWRvcHRJZk5l
ZWRlZCgmb2xkQ2hpbGQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCShy
ZXZpc2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODAsMTQgKzE4MCwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
aWxsUmVtb3ZlQ2hpbGQoTm9kZSYgY2hpbGQpOwogCi0gICAgTm9kZSogbV9maXJzdENoaWxkOwot
ICAgIE5vZGUqIG1fbGFzdENoaWxkOworICAgIE5vZGUqIG1fZmlyc3RDaGlsZCB7IG51bGxwdHIg
fTsKKyAgICBOb2RlKiBtX2xhc3RDaGlsZCB7IG51bGxwdHIgfTsKIH07CiAKIGlubGluZSBDb250
YWluZXJOb2RlOjpDb250YWluZXJOb2RlKERvY3VtZW50JiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQogICAgIDogTm9kZShkb2N1bWVudCwgdHlwZSkKLSAgICAsIG1fZmlyc3RDaGls
ZCgwKQotICAgICwgbV9sYXN0Q2hpbGQoMCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCShyZXZpc2lvbiAxOTE4ODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChDb250YQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobm9kZS5kb2N1bWVudCgpLmNz
c1RhcmdldCgpID09ICZub2RlKQotICAgICAgICBub2RlLmRvY3VtZW50KCkuc2V0Q1NTVGFyZ2V0
KDApOworICAgICAgICBub2RlLmRvY3VtZW50KCkuc2V0Q1NTVGFyZ2V0KG51bGxwdHIpOwogCiAg
ICAgaWYgKFJlZlB0cjxTaGFkb3dSb290PiByb290ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSku
c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmICghbm9kZS5pbkRvY3VtZW50KCkgJiYgcm9vdC0+
aG9zdCgpID09ICZub2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE5MTg4
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MjAsNyArNjIwLDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIoKSBjb25zdDsKIAotICAgIHZvaWQgb3BlbihEb2N1bWVudCogb3duZXJE
b2N1bWVudCA9IDApOworICAgIHZvaWQgb3BlbihEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51
bGxwdHIpOwogICAgIHZvaWQgaW1wbGljaXRPcGVuKCk7CiAKICAgICAvLyBjbG9zZSgpIGlzIHRo
ZSBET00gQVBJIGRvY3VtZW50LmNsb3NlKCkKQEAgLTYzNCw5ICs2MzQsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhbmNlbFBhcnNpbmcoKTsKIAotICAgIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwotICAgIHZvaWQg
d3JpdGUoY29uc3QgU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwot
ICAgIHZvaWQgd3JpdGVsbihjb25zdCBTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3Vt
ZW50ID0gMCk7CisgICAgdm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERv
Y3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7CisgICAgdm9pZCB3cml0ZShjb25zdCBT
dHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7CisgICAgdm9p
ZCB3cml0ZWxuKGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBu
dWxscHRyKTsKIAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VsbEZv
cm1lZDsgfQogCkBAIC03ODgsNyArNzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSk7CiAgICAgdm9pZCBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKICAgICBFdmVu
dExpc3RlbmVyKiBnZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoV2luZG93
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+ID0gMCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFdpbmRvd0V2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiA9IG51bGxwdHIpOwogICAgIHZvaWQgZGlzcGF0
Y2hXaW5kb3dMb2FkRXZlbnQoKTsKIAogICAgIFJlZlB0cjxFdmVudD4gY3JlYXRlRXZlbnQoY29u
c3QgU3RyaW5nJiBldmVudFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTk0OCw3ICs5NDgsNyBA
QCBwdWJsaWM6CiAgICAgU2NyaXB0UnVubmVyKiBzY3JpcHRSdW5uZXIoKSB7IHJldHVybiBtX3Nj
cmlwdFJ1bm5lci5nZXQoKTsgfQogICAgIEpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIoKSB7
IHJldHVybiBtX21vZHVsZUxvYWRlci5nZXQoKTsgfQogCi0gICAgSFRNTFNjcmlwdEVsZW1lbnQq
IGN1cnJlbnRTY3JpcHQoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50U2NyaXB0U3RhY2suaXNF
bXB0eSgpID8gbV9jdXJyZW50U2NyaXB0U3RhY2subGFzdCgpLmdldCgpIDogMDsgfQorICAgIEhU
TUxTY3JpcHRFbGVtZW50KiBjdXJyZW50U2NyaXB0KCkgY29uc3QgeyByZXR1cm4gIW1fY3VycmVu
dFNjcmlwdFN0YWNrLmlzRW1wdHkoKSA/IG1fY3VycmVudFNjcmlwdFN0YWNrLmxhc3QoKS5nZXQo
KSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHB1c2hDdXJyZW50U2NyaXB0KFBhc3NSZWZQdHI8SFRN
TFNjcmlwdEVsZW1lbnQ+KTsKICAgICB2b2lkIHBvcEN1cnJlbnRTY3JpcHQoKTsKIApAQCAtMTEz
NSw3ICsxMTM1LDcgQEAgcHVibGljOgogCiAgICAgLy8gVzNDIEFQSQogICAgIGJvb2wgd2Via2l0
RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdDsKLSAgICBFbGVtZW50KiB3ZWJraXRGdWxsc2NyZWVu
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0
eSgpID8gbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmxhc3QoKS5nZXQoKSA6IDA7IH0KKyAgICBF
bGVtZW50KiB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bGxT
Y3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpID8gbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmxh
c3QoKS5nZXQoKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7
CiAjZW5kaWYKIApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgb3ZlcnJpZGUg
ZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSAw
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllciA9IDApIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBkb3Vi
bGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuaAkocmV2aXNpb24gMTkxODg3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MywxNyArNzMsMTQgQEAgcHJpdmF0ZToKICAgICBFbGVtZW50KiBnZXQoY29uc3QgQXRv
bWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYsIGNvbnN0IEtleU1hdGNoaW5nRnVuY3Rp
b24mKSBjb25zdDsKIAogICAgIHN0cnVjdCBNYXBFbnRyeSB7Ci0gICAgICAgIE1hcEVudHJ5KCkK
LSAgICAgICAgICAgIDogZWxlbWVudCgwKQotICAgICAgICAgICAgLCBjb3VudCgwKQotICAgICAg
ICB7IH0KKyAgICAgICAgTWFwRW50cnkoKSB7IH0KICAgICAgICAgZXhwbGljaXQgTWFwRW50cnko
RWxlbWVudCogZmlyc3RFbGVtZW50KQogICAgICAgICAgICAgOiBlbGVtZW50KGZpcnN0RWxlbWVu
dCkKICAgICAgICAgICAgICwgY291bnQoMSkKICAgICAgICAgeyB9CiAKLSAgICAgICAgRWxlbWVu
dCogZWxlbWVudDsKLSAgICAgICAgdW5zaWduZWQgY291bnQ7CisgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgeyBudWxscHRyIH07CisgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogICAgICAg
ICBWZWN0b3I8RWxlbWVudCo+IG9yZGVyZWRMaXN0OwogI2lmICFBU1NFUlRfRElTQUJMRUQgfHwg
RU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgICAgIEhhc2hTZXQ8RWxlbWVudCo+IHJl
Z2lzdGVyZWRFbGVtZW50czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNw
cAkocmV2aXNpb24gMTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIERvY3VtZW50UGFyc2Vy
OjpzdG9wUGFyc2luZygpCiB2b2lkIERvY3VtZW50UGFyc2VyOjpkZXRhY2goKQogewogICAgIG1f
c3RhdGUgPSBEZXRhY2hlZFN0YXRlOwotICAgIG1fZG9jdW1lbnQgPSAwOworICAgIG1fZG9jdW1l
bnQgPSBudWxscHRyOwogfQogCiB2b2lkIERvY3VtZW50UGFyc2VyOjpzdXNwZW5kU2NoZWR1bGVk
VGFza3MoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTkxODg3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgxLDcg
KzExODEsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hCiAgICAg
ICAgIC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29rZWQgdG8gdGhpcyBhdHRyaWJ1dGUs
IHRoZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKICAgICAgICAgLy8gd2lsbCB3cml0ZSBp
bnRvIHRoZSBFbGVtZW50RGF0YS4KICAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgc28g
aXQgbWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9
IGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlID8gMCA6IGF0dHJJZkV4aXN0cyhhdHRy
aWJ1dGVOYW1lKSkKKyAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGluU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlID8gbnVsbHB0ciA6IGF0dHJJZkV4aXN0cyhhdHRyaWJ1
dGVOYW1lKSkKICAgICAgICAgICAgIGF0dHJOb2RlLT5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuYXR0cmlidXRl
QXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIHZvaWQg
RWxlbWVudDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnQKIAogU2hhZG93Um9vdCogRWxlbWVu
dDo6c2hhZG93Um9vdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVt
ZW50UmFyZURhdGEoKS0+c2hhZG93Um9vdCgpIDogMDsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5zaGFkb3dSb290KCkgOiBudWxscHRyOwogfQogCiAKQEAg
LTIyNzksNyArMjI3OSw3IEBAIHZvaWQgRWxlbWVudDo6Ymx1cigpCiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+cGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudCgwLCBmcmFtZSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQoMCk7CisgICAg
ICAgICAgICBkb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogICAgIH0KIH0K
IApAQCAtMjY3MCwxMiArMjY3MCwxMiBAQCB2b2lkIEVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0
ZXMoKQogCiBQc2V1ZG9FbGVtZW50KiBFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5iZWZv
cmVQc2V1ZG9FbGVtZW50KCkgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVu
dFJhcmVEYXRhKCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKSA6IG51bGxwdHI7CiB9CiAKIFBzZXVk
b0VsZW1lbnQqIEVsZW1lbnQ6OmFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+YWZ0ZXJQc2V1ZG9FbGVtZW50
KCkgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmFm
dGVyUHNldWRvRWxlbWVudCgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRCZWZv
cmVQc2V1ZG9FbGVtZW50KFJlZjxQc2V1ZG9FbGVtZW50PiYmIGVsZW1lbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE2ICs0Miw3IEBAIEV2ZW50SW5pdDo6RXZlbnRJ
bml0KGJvb2wgYiwgYm9vbCBjKQogfQogCiBFdmVudDo6RXZlbnQoKQotICAgIDogbV9jYW5CdWJi
bGUoZmFsc2UpCi0gICAgLCBtX2NhbmNlbGFibGUoZmFsc2UpCi0gICAgLCBtX3Byb3BhZ2F0aW9u
U3RvcHBlZChmYWxzZSkKLSAgICAsIG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKGZhbHNl
KQotICAgICwgbV9kZWZhdWx0UHJldmVudGVkKGZhbHNlKQotICAgICwgbV9kZWZhdWx0SGFuZGxl
ZChmYWxzZSkKLSAgICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQotICAgICwgbV9ldmVudFBoYXNl
KDApCi0gICAgLCBtX2N1cnJlbnRUYXJnZXQoMCkKLSAgICAsIG1fY3JlYXRlVGltZShjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKGN1cnJlbnRUaW1lKCkpKQorICAgIDogbV9jcmVhdGVUaW1l
KGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CiB9CiAKQEAg
LTYwLDEzICs1MSw2IEBAIEV2ZW50OjpFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHkK
ICAgICAsIG1fdHlwZShldmVudFR5cGUpCiAgICAgLCBtX2NhbkJ1YmJsZShjYW5CdWJibGVBcmcp
CiAgICAgLCBtX2NhbmNlbGFibGUoY2FuY2VsYWJsZUFyZykKLSAgICAsIG1fcHJvcGFnYXRpb25T
dG9wcGVkKGZhbHNlKQotICAgICwgbV9pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoZmFsc2Up
Ci0gICAgLCBtX2RlZmF1bHRQcmV2ZW50ZWQoZmFsc2UpCi0gICAgLCBtX2RlZmF1bHRIYW5kbGVk
KGZhbHNlKQotICAgICwgbV9jYW5jZWxCdWJibGUoZmFsc2UpCi0gICAgLCBtX2V2ZW50UGhhc2Uo
MCkKLSAgICAsIG1fY3VycmVudFRhcmdldCgwKQogICAgICwgbV9jcmVhdGVUaW1lKGNvbnZlcnRT
ZWNvbmRzVG9ET01UaW1lU3RhbXAoY3VycmVudFRpbWUoKSkpCiB7CiB9CkBAIC03NiwxMyArNjAs
NiBAQCBFdmVudDo6RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5CiAgICAgLCBtX3R5
cGUoZXZlbnRUeXBlKQogICAgICwgbV9jYW5CdWJibGUoY2FuQnViYmxlQXJnKQogICAgICwgbV9j
YW5jZWxhYmxlKGNhbmNlbGFibGVBcmcpCi0gICAgLCBtX3Byb3BhZ2F0aW9uU3RvcHBlZChmYWxz
ZSkKLSAgICAsIG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKGZhbHNlKQotICAgICwgbV9k
ZWZhdWx0UHJldmVudGVkKGZhbHNlKQotICAgICwgbV9kZWZhdWx0SGFuZGxlZChmYWxzZSkKLSAg
ICAsIG1fY2FuY2VsQnViYmxlKGZhbHNlKQotICAgICwgbV9ldmVudFBoYXNlKDApCi0gICAgLCBt
X2N1cnJlbnRUYXJnZXQoMCkKICAgICAsIG1fY3JlYXRlVGltZShjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKHRpbWVzdGFtcCkpCiB7CiB9CkBAIC05MiwxMyArNjksNiBAQCBFdmVudDo6RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5CiAgICAgLCBtX3R5cGUoZXZlbnRUeXBlKQog
ICAgICwgbV9jYW5CdWJibGUoaW5pdGlhbGl6ZXIuYnViYmxlcykKICAgICAsIG1fY2FuY2VsYWJs
ZShpbml0aWFsaXplci5jYW5jZWxhYmxlKQotICAgICwgbV9wcm9wYWdhdGlvblN0b3BwZWQoZmFs
c2UpCi0gICAgLCBtX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZChmYWxzZSkKLSAgICAsIG1f
ZGVmYXVsdFByZXZlbnRlZChmYWxzZSkKLSAgICAsIG1fZGVmYXVsdEhhbmRsZWQoZmFsc2UpCi0g
ICAgLCBtX2NhbmNlbEJ1YmJsZShmYWxzZSkKLSAgICAsIG1fZXZlbnRQaGFzZSgwKQotICAgICwg
bV9jdXJyZW50VGFyZ2V0KDApCiAgICAgLCBtX2NyZWF0ZVRpbWUoY29udmVydFNlY29uZHNUb0RP
TVRpbWVTdGFtcChjdXJyZW50VGltZSgpKSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCShyZXZp
c2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGxlZ2FjeVJldHVyblZhbHVl
KCkgY29uc3QgeyByZXR1cm4gIWRlZmF1bHRQcmV2ZW50ZWQoKTsgfQogICAgIHZvaWQgc2V0TGVn
YWN5UmV0dXJuVmFsdWUoYm9vbCByZXR1cm5WYWx1ZSkgeyBzZXREZWZhdWx0UHJldmVudGVkKCFy
ZXR1cm5WYWx1ZSk7IH0KIAotICAgIERhdGFUcmFuc2ZlciogY2xpcGJvYXJkRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZlbnQoKSA/IGludGVybmFsRGF0YVRyYW5zZmVyKCkgOiAw
OyB9CisgICAgRGF0YVRyYW5zZmVyKiBjbGlwYm9hcmREYXRhKCkgY29uc3QgeyByZXR1cm4gaXND
bGlwYm9hcmRFdmVudCgpID8gaW50ZXJuYWxEYXRhVHJhbnNmZXIoKSA6IG51bGxwdHI7IH0KIAog
ICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIApAQCAt
MTkxLDE3ICsxOTEsMTcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIG1faXNJbml0
aWFsaXplZCB7IGZhbHNlIH07CiAgICAgQXRvbWljU3RyaW5nIG1fdHlwZTsKLSAgICBib29sIG1f
Y2FuQnViYmxlOwotICAgIGJvb2wgbV9jYW5jZWxhYmxlOworICAgIGJvb2wgbV9jYW5CdWJibGUg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9jYW5jZWxhYmxlIHsgZmFsc2UgfTsKIAotICAgIGJvb2wg
bV9wcm9wYWdhdGlvblN0b3BwZWQ7Ci0gICAgYm9vbCBtX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZDsKLSAgICBib29sIG1fZGVmYXVsdFByZXZlbnRlZDsKLSAgICBib29sIG1fZGVmYXVsdEhh
bmRsZWQ7Ci0gICAgYm9vbCBtX2NhbmNlbEJ1YmJsZTsKKyAgICBib29sIG1fcHJvcGFnYXRpb25T
dG9wcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGVmYXVsdFByZXZlbnRlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2RlZmF1bHRIYW5kbGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY2FuY2VsQnViYmxl
IHsgZmFsc2UgfTsKIAotICAgIHVuc2lnbmVkIHNob3J0IG1fZXZlbnRQaGFzZTsKLSAgICBFdmVu
dFRhcmdldCogbV9jdXJyZW50VGFyZ2V0OworICAgIHVuc2lnbmVkIHNob3J0IG1fZXZlbnRQaGFz
ZSB7IDAgfTsKKyAgICBFdmVudFRhcmdldCogbV9jdXJyZW50VGFyZ2V0IHsgbnVsbHB0ciB9Owog
ICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV90YXJnZXQ7CiAgICAgRE9NVGltZVN0YW1wIG1fY3Jl
YXRlVGltZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAJKHJldmlzaW9u
IDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw3ICs2Niw2IEBAIGJvb2wgRXZlbnRDb250ZXh0Ojppc1RvdWNoRXZlbnRD
b250ZXh0KCkKIAogTW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJy
ZW50VGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpCiAgICAgOiBFdmVudENv
bnRleHQobm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KQotICAgICwgbV9yZWxhdGVkVGFyZ2V0
KDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShy
ZXZpc2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAot
ICAgIEV2ZW50Q29udGV4dCogbGFzdENvbnRleHRJZkV4aXN0cygpIHsgcmV0dXJuIG1fcGF0aC5p
c0VtcHR5KCkgPyAwIDogbV9wYXRoLmxhc3QoKS5nZXQoKTsgfQorICAgIEV2ZW50Q29udGV4dCog
bGFzdENvbnRleHRJZkV4aXN0cygpIHsgcmV0dXJuIG1fcGF0aC5pc0VtcHR5KCkgPyBudWxscHRy
IDogbV9wYXRoLmxhc3QoKS5nZXQoKTsgfQogCiBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmICFQTEFURk9STShJT1MpCkBAIC0zNTUsNyArMzU1LDcgQEAgYm9vbCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZQogICAgIC8vIEVuc3VyZSB0aGF0IGFmdGVyIGV2
ZW50IGRpc3BhdGNoLCB0aGUgZXZlbnQncyB0YXJnZXQgb2JqZWN0IGlzIHRoZQogICAgIC8vIG91
dGVybW9zdCBzaGFkb3cgRE9NIGJvdW5kYXJ5LgogICAgIGV2ZW50LT5zZXRUYXJnZXQod2luZG93
RXZlbnRDb250ZXh0LnRhcmdldCgpKTsKLSAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCgwKTsK
KyAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldChudWxscHRyKTsKIAogICAgIHJldHVybiAhZXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDE3ICsxOTcsNyBAQCB2
b2lkIEV2ZW50TGlzdGVuZXJNYXA6OmNvcHlFdmVudExpc3RlbmVyCiAgICAgICAgIGNvcHlMaXN0
ZW5lcnNOb3RDcmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNv
bmQuZ2V0KCksIHRhcmdldCk7CiB9CiAKLUV2ZW50TGlzdGVuZXJJdGVyYXRvcjo6RXZlbnRMaXN0
ZW5lckl0ZXJhdG9yKCkKLSAgICA6IG1fbWFwKDApCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKLSAg
ICAsIG1faW5kZXgoMCkKLXsKLX0KLQogRXZlbnRMaXN0ZW5lckl0ZXJhdG9yOjpFdmVudExpc3Rl
bmVySXRlcmF0b3IoRXZlbnRUYXJnZXQqIHRhcmdldCkKLSAgICA6IG1fbWFwKDApCi0gICAgLCBt
X2VudHJ5SW5kZXgoMCkKLSAgICAsIG1faW5kZXgoMCkKIHsKICAgICBBU1NFUlQodGFyZ2V0KTsK
ICAgICBFdmVudFRhcmdldERhdGEqIGRhdGEgPSB0YXJnZXQtPmV2ZW50VGFyZ2V0RGF0YSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCShyZXZpc2lvbiAxOTE4ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw5ICs4Niw5IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBuZXh0TGlzdGVu
ZXIoKTsKIAogcHJpdmF0ZToKLSAgICBFdmVudExpc3RlbmVyTWFwKiBtX21hcDsKLSAgICB1bnNp
Z25lZCBtX2VudHJ5SW5kZXg7Ci0gICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICBFdmVudExpc3Rl
bmVyTWFwKiBtX21hcCB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX2VudHJ5SW5kZXggeyAw
IH07CisgICAgdW5zaWduZWQgbV9pbmRleCB7IDAgfTsKIH07CiAKICNpZmRlZiBOREVCVUcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gMTkxODg3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcg
KzE5NSw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmUKICAgICBp
ZiAoIWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgRXZlbnRMaXN0ZW5lclZlY3Rvciog
bGVnYWN5TGlzdGVuZXJzVmVjdG9yID0gMDsKKyAgICBFdmVudExpc3RlbmVyVmVjdG9yKiBsZWdh
Y3lMaXN0ZW5lcnNWZWN0b3IgPSBudWxscHRyOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGVn
YWN5VHlwZU5hbWUgPSBsZWdhY3lUeXBlKGV2ZW50KTsKICAgICBpZiAoIWxlZ2FjeVR5cGVOYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgbGVnYWN5TGlzdGVuZXJzVmVjdG9yID0gZC0+ZXZlbnRMaXN0
ZW5lck1hcC5maW5kKGxlZ2FjeVR5cGVOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9G
b2N1c0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVu
dC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBGb2N1c0V2ZW50SW5pdDo6Rm9jdXNFdmVudEluaXQoKQotICAgIDogcmVsYXRlZFRhcmdl
dCgwKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5j
cHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRR
dWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBHZW5lcmljRXZl
bnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFBhcwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZXZl
bnQtPnRhcmdldCgpID09ICZtX293bmVyKQotICAgICAgICBldmVudC0+c2V0VGFyZ2V0KDApOwor
ICAgICAgICBldmVudC0+c2V0VGFyZ2V0KG51bGxwdHIpOwogCiAgICAgbV9wZW5kaW5nRXZlbnRz
LmFwcGVuZChldmVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAs
NyBAQCBjbGFzcyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBJZFRhcmdldE9ic2VydmVyOwogcHVibGljOgot
ICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpCi0gICAgICAgIDogbV9ub3RpZnlpbmdPYnNl
cnZlcnNJblNldCgwKQotICAgIHsgfQorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpIHsg
fQogCiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CiAg
ICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYgaWQpOwpAQCAt
NTUsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaFNldDxJZFRhcmdldE9ic2Vy
dmVyKj4gT2JzZXJ2ZXJTZXQ7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2ZXJTZXQ+PiBJZFRvT2JzZXJ2ZXJTZXRNYXA7
CiAgICAgSWRUb09ic2VydmVyU2V0TWFwIG1fcmVnaXN0cnk7Ci0gICAgT2JzZXJ2ZXJTZXQqIG1f
bm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQ7CisgICAgT2JzZXJ2ZXJTZXQqIG1fbm90aWZ5aW5nT2Jz
ZXJ2ZXJzSW5TZXQgeyBudWxscHRyIH07CiB9OwogCiBpbmxpbmUgdm9pZCBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGlkKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0lnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyLmgJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWUKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IG1f
Y291bnQoZG9jdW1lbnQgPyAmZG9jdW1lbnQtPm1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
IDogMCkKKyAgICAgICAgOiBtX2NvdW50KGRvY3VtZW50ID8gJmRvY3VtZW50LT5tX2lnbm9yZURl
c3RydWN0aXZlV3JpdGVDb3VudCA6IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAoIW1fY291
bnQpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmNwcAkocmV2aXNpb24gMTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbWljUwogICAgICwgbV9kYXRhQXNTY3JpcHRWYWx1ZShpbml0aWFs
aXplci5kYXRhKQogICAgICwgbV9vcmlnaW4oaW5pdGlhbGl6ZXIub3JpZ2luKQogICAgICwgbV9s
YXN0RXZlbnRJZChpbml0aWFsaXplci5sYXN0RXZlbnRJZCkKLSAgICAsIG1fc291cmNlKGlzVmFs
aWRTb3VyY2UoaW5pdGlhbGl6ZXIuc291cmNlLmdldCgpKSA/IGluaXRpYWxpemVyLnNvdXJjZSA6
IDApCisgICAgLCBtX3NvdXJjZShpc1ZhbGlkU291cmNlKGluaXRpYWxpemVyLnNvdXJjZS5nZXQo
KSkgPyBpbml0aWFsaXplci5zb3VyY2UgOiBudWxscHRyKQogICAgICwgbV9wb3J0cyhzdGQ6Om1h
a2VfdW5pcXVlPE1lc3NhZ2VQb3J0QXJyYXk+KGluaXRpYWxpemVyLnBvcnRzKSkKIHsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTEgKzU3
LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3Nh
Z2VFdmVudCk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgZGF0YSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBTdHJpbmco
KSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gMCkKKyAgICBzdGF0aWMgUmVmPE1l
c3NhZ2VFdmVudD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0
cywgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEgPSBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSgpLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZl
bnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBXVEY6Om1vdmUocG9ydHMpKSk7
CiAgICAgfQotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoc3RkOjp1bmlxdWVf
cHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2Ug
PSAwKQorICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50
KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgV1RGOjptb3ZlKHBvcnRzKSkpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gMTkxODg3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQog
ICAgIC8vIE11c3QgYmUgY2xvc2VkIGJlZm9yZSBibG93aW5nIGF3YXkgdGhlIGNhY2hlZCBjb250
ZXh0LCB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgbm8gbW9yZSBjYWxscyB0byBtZXNzYWdlQXZhaWxh
YmxlKCkuCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2xvc2VNZXNzYWdlUG9ydHMo
KSB0YWtlcyBjYXJlIG9mIHRoYXQuCiAgICAgQVNTRVJUKG1fY2xvc2VkKTsKLSAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPSAwOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51
bGxwdHI7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQpAQCAtMTc5
LDcgKzE3OSw3IEBAIGJvb2wgTWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpCiAKIE1l
c3NhZ2VQb3J0KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2xlZFBvcnQoKQogewotICAgIHJl
dHVybiBtX2VudGFuZ2xlZENoYW5uZWwgPyBtX2VudGFuZ2xlZENoYW5uZWwtPmxvY2FsbHlFbnRh
bmdsZWRQb3J0KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiAwOworICAgIHJldHVybiBtX2Vu
dGFuZ2xlZENoYW5uZWwgPyBtX2VudGFuZ2xlZENoYW5uZWwtPmxvY2FsbHlFbnRhbmdsZWRQb3J0
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiBudWxscHRyOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRz
KGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBA
QCBNb3VzZUV2ZW50SW5pdDo6TW91c2VFdmVudEluaXQoKQogICAgICwgc2hpZnRLZXkoZmFsc2Up
CiAgICAgLCBtZXRhS2V5KGZhbHNlKQogICAgICwgYnV0dG9uKDApCi0gICAgLCByZWxhdGVkVGFy
Z2V0KDApCiB7CiB9CiAKQEAgLTI0Myw3ICsyNDIsNyBAQCBQYXNzUmVmUHRyPEV2ZW50PiBNb3Vz
ZUV2ZW50OjpjbG9uZUZvcihICiAgICAgQVNTRVJUKGlmcmFtZSk7CiAgICAgUmVmUHRyPE1vdXNl
RXZlbnQ+IGNsb25lZE1vdXNlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoKTsKICAgICBGcmFt
ZSogZnJhbWUgPSBpZnJhbWUtPmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IGZyYW1lID8gZnJhbWUtPnZpZXcoKSA6IDA7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBmcmFtZSA/IGZyYW1lLT52aWV3KCkgOiBudWxscHRyOwogICAgIGNsb25lZE1vdXNl
RXZlbnQtPmluaXRNb3VzZUV2ZW50KHR5cGUoKSwgYnViYmxlcygpLCBjYW5jZWxhYmxlKCksCiAg
ICAgICAgIGlmcmFtZS0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLAogICAgICAgICBkZXRhaWwo
KSwgc2NyZWVuWCgpLCBzY3JlZW5ZKCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgJKHJl
dmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIE5vZGUqIGZyb21FbGVtZW50
KCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBtZXJnZWQg
aWYgbV9kYXRhVHJhbnNmZXIgaXMgb25seSBpbml0aWFsaXplZCBmb3IgZHJhZyBldmVudHMuCi0g
ICAgRGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIoKSBjb25zdCB7IHJldHVybiBpc0RyYWdFdmVu
dCgpID8gbV9kYXRhVHJhbnNmZXIuZ2V0KCkgOiAwOyB9CisgICAgRGF0YVRyYW5zZmVyKiBkYXRh
VHJhbnNmZXIoKSBjb25zdCB7IHJldHVybiBpc0RyYWdFdmVudCgpID8gbV9kYXRhVHJhbnNmZXIu
Z2V0KCkgOiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBEYXRhVHJhbnNmZXIqIGludGVybmFsRGF0
YVRyYW5zZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kYXRhVHJhbnNmZXIuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAko
cmV2aXNpb24gMTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6
TW91c2VSZWxhdGVkRXZlbnQoY29uCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWdlTG9jYXRp
b247CiAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb247CiAKLSAgICBGcmFtZSogZnJhbWUg
PSB2aWV3KCkgPyB2aWV3KCktPmZyYW1lKCkgOiAwOworICAgIEZyYW1lKiBmcmFtZSA9IHZpZXco
KSA/IHZpZXcoKS0+ZnJhbWUoKSA6IG51bGxwdHI7CiAgICAgaWYgKGZyYW1lICYmICFpc1NpbXVs
YXRlZCkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygp
KSB7CiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy0+Y29udGVudHNTY3Jv
bGxQb3NpdGlvbigpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6
OnJlY2VpdmVkVGFyZ2V0KCkKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0
aXZlUG9zaXRpb24oKQogewotICAgIE5vZGUqIHRhcmdldE5vZGUgPSB0YXJnZXQoKSA/IHRhcmdl
dCgpLT50b05vZGUoKSA6IDA7CisgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IHRhcmdldCgpID8gdGFy
Z2V0KCktPnRvTm9kZSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAg
IHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCShyZXZpc2lvbiAx
OTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE11dGF0aW9uRXZlbnQpOwogICAgICAgICB9CiAKLSAgICAgICAg
c3RhdGljIFJlZjxNdXRhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkTm9kZSA9IDAsCisgICAg
ICAgIHN0YXRpYyBSZWY8TXV0YXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZE5vZGUgPSBudWxs
cHRyLAogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUgPSBTdHJpbmcoKSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGF0dHJOYW1lID0g
U3RyaW5nKCksIHVuc2lnbmVkIHNob3J0IGF0dHJDaGFuZ2UgPSAwKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNdXRhdGlvbkV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgZmFsc2UsIHJlbGF0ZWROb2RlLCBwcmV2VmFsdWUsIG5ld1ZhbHVlLCBhdHRyTmFtZSwgYXR0
ckNoYW5nZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTkxODg3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMTAgKzI2NSw3
IEBAIHZvaWQgTm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcoKQogTm9kZTo6Tm9kZShEb2N1bWVudCYg
ZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fcmVmQ291bnQoMSkKICAg
ICAsIG1fbm9kZUZsYWdzKHR5cGUpCi0gICAgLCBtX3BhcmVudE5vZGUobnVsbHB0cikKICAgICAs
IG1fdHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1fcHJldmlvdXMobnVsbHB0cikKLSAgICAs
IG1fbmV4dChudWxscHRyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTg1
Myw3ICs4NTAsNyBAQCB2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3RpCiAK
IE5vZGVMaXN0c05vZGVEYXRhKiBOb2RlOjpub2RlTGlzdHMoKQogewotICAgIHJldHVybiBoYXNS
YXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkgOiAwOworICAgIHJldHVybiBoYXNS
YXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkgOiBudWxscHRyOwogfQogCiB2b2lk
IE5vZGU6OmNsZWFyTm9kZUxpc3RzKCkKQEAgLTEwODYsNyArMTA4Myw3IEBAIE5vZGUqIE5vZGU6
Om5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2QKIENvbnRhaW5lck5vZGUqIE5vZGU6Om5vblNo
YWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNTaGFk
b3dSb290KCkgPyBwYXJlbnQgOiAwOworICAgIHJldHVybiBwYXJlbnQgJiYgIXBhcmVudC0+aXNT
aGFkb3dSb290KCkgPyBwYXJlbnQgOiBudWxscHRyOwogfQogCiBFbGVtZW50KiBOb2RlOjpwYXJl
bnRPclNoYWRvd0hvc3RFbGVtZW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24g
MTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
Njk4LDE0ICs2OTgsMTMgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9yZWZDb3VudDsKICAgICBtdXRh
YmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwogCi0gICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnRO
b2RlOwotICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7Ci0gICAgTm9kZSogbV9wcmV2aW91czsK
LSAgICBOb2RlKiBtX25leHQ7CisgICAgQ29udGFpbmVyTm9kZSogbV9wYXJlbnROb2RlIHsgbnVs
bHB0ciB9OworICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGUgeyBudWxscHRyIH07CisgICAgTm9k
ZSogbV9wcmV2aW91cyB7IG51bGxwdHIgfTsKKyAgICBOb2RlKiBtX25leHQgeyBudWxscHRyIH07
CiAgICAgLy8gV2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBp
bnRvIHRoZSByYXJlIGRhdGEuCiAgICAgdW5pb24gRGF0YVVuaW9uIHsKLSAgICAgICAgRGF0YVVu
aW9uKCkgOiBtX3JlbmRlcmVyKDApIHsgfQotICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVy
ZXI7CisgICAgICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsKICAgICAg
ICAgTm9kZVJhcmVEYXRhQmFzZSogbV9yYXJlRGF0YTsKICAgICB9IG1fZGF0YTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24gMTkxODg3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDcg
QEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZENvbGxlY3Rpb25zLnJlbW92ZShuYW1lZENvbGxl
Y3Rpb25LZXkoY29sbGVjdGlvbi0+dHlwZSgpLCBuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCBp
bnZhbGlkYXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gMCk7CisgICAg
dm9pZCBpbnZhbGlkYXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lID0gbnVs
bHB0cik7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2F0b21pY05hbWVDYWNoZXMuaXNFbXB0eSgpICYmIG1fY2FjaGVkQ29sbGVjdGlvbnMuaXNFbXB0
eSgpICYmIG1fdGFnQ29sbGVjdGlvbkNhY2hlTlMuaXNFbXB0eSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9QZW5kaW5nU2NyaXB0LmNwcAkocmV2aXNpb24gMTkxODg3KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
IFBlbmRpbmdTY3JpcHQ6On5QZW5kaW5nU2NyaXB0KCkKIAogUGFzc1JlZlB0cjxFbGVtZW50PiBQ
ZW5kaW5nU2NyaXB0OjpyZWxlYXNlRWxlbWVudEFuZENsZWFyKCkKIHsKLSAgICBzZXRDYWNoZWRT
Y3JpcHQoMCk7CisgICAgc2V0Q2FjaGVkU2NyaXB0KG51bGxwdHIpOwogICAgIG1fd2F0Y2hpbmdG
b3JMb2FkID0gZmFsc2U7CiAgICAgbV9zdGFydGluZ1Bvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjpi
ZWxvd1JhbmdlUG9zaXRpb24oKTsKICAgICByZXR1cm4gbV9lbGVtZW50LnJlbGVhc2UoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksMTYgKzM5LDEyIEBAIFBvcFN0YXRlRXZlbnRJbml0OjpQb3BTdGF0ZUV2ZW50SW5pdCgpCiAK
IFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygp
LnBvcHN0YXRlRXZlbnQsIGZhbHNlLCB0cnVlKQotICAgICwgbV9zZXJpYWxpemVkU3RhdGUoMCkK
LSAgICAsIG1faGlzdG9yeSgwKQogewogfQogCiBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUG9wU3RhdGVFdmVudEluaXQmIGluaXRp
YWxpemVyKQogICAgIDogRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3N0YXRlKGlu
aXRpYWxpemVyLnN0YXRlKQotICAgICwgbV9zZXJpYWxpemVkU3RhdGUoMCkKLSAgICAsIG1faGlz
dG9yeSgwKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkocmV2aXNpb24gMTkxODg3
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
OCwxMSArMTI4LDExIEBAIHB1YmxpYzoKICAgICAvLyB3aWxsIGJlIHRyZWF0ZWQgYXMgYmVmb3Jl
IGlnbm9yZWROb2RlICh0aHVzIG5vZGUoKSBpcyByZWFsbHkgYWZ0ZXIgdGhlIHBvc2l0aW9uLCBu
b3QgY29udGFpbmluZyBpdCkuCiAgICAgTm9kZSogZGVwcmVjYXRlZE5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2FuY2hvck5vZGUuZ2V0KCk7IH0KIAotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fYW5jaG9yTm9kZSA/ICZtX2FuY2hvck5vZGUtPmRvY3VtZW50KCkgOiAw
OyB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JOb2Rl
ID8gJm1fYW5jaG9yTm9kZS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7IH0KICAgICBFbGVtZW50KiBy
b290RWRpdGFibGVFbGVtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIE5vZGUqIGNvbnRhaW5l
ciA9IGNvbnRhaW5lck5vZGUoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRhaW5lciA/IGNvbnRhaW5l
ci0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIDogMDsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5lciA/
IGNvbnRhaW5lci0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIDogbnVsbHB0cjsKICAgICB9CiAKICAg
ICAvLyBUaGVzZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3IgcG9zaXRpb25zLCB1bmxlc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVy
YXRvci5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bkl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFBvc2l0
aW9uSXRlcmF0b3I6OmRlY3JlbWVudCgpCiAgICAgaWYgKG1fbm9kZUFmdGVyUG9zaXRpb25JbkFu
Y2hvcikgewogICAgICAgICBtX2FuY2hvck5vZGUgPSBtX25vZGVBZnRlclBvc2l0aW9uSW5BbmNo
b3ItPnByZXZpb3VzU2libGluZygpOwogICAgICAgICBpZiAobV9hbmNob3JOb2RlKSB7Ci0gICAg
ICAgICAgICBtX25vZGVBZnRlclBvc2l0aW9uSW5BbmNob3IgPSAwOworICAgICAgICAgICAgbV9u
b2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fb2Zmc2V0
SW5BbmNob3IgPSBtX2FuY2hvck5vZGUtPmhhc0NoaWxkTm9kZXMoKSA/IDAgOiBsYXN0T2Zmc2V0
Rm9yRWRpdGluZyhtX2FuY2hvck5vZGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yID0gbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9y
LT5wYXJlbnROb2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmgJ
KHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIENvbnZlcnNpb24gdG8vZnJvbSBQb3NpdGlvbiBpcyBPKG4pIGluIHRoZSBvZmZzZXQuCiBj
bGFzcyBQb3NpdGlvbkl0ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBQb3NpdGlvbkl0ZXJhdG9yKCkK
LSAgICAgICAgOiBtX2FuY2hvck5vZGUoMCkKLSAgICAgICAgLCBtX25vZGVBZnRlclBvc2l0aW9u
SW5BbmNob3IoMCkKLSAgICAgICAgLCBtX29mZnNldEluQW5jaG9yKDApCi0gICAgewotICAgIH0K
LQogICAgIFBvc2l0aW9uSXRlcmF0b3IoY29uc3QgUG9zaXRpb24mIHBvcykKICAgICAgICAgOiBt
X2FuY2hvck5vZGUocG9zLmFuY2hvck5vZGUoKSkKICAgICAgICAgLCBtX25vZGVBZnRlclBvc2l0
aW9uSW5BbmNob3IobV9hbmNob3JOb2RlLT50cmF2ZXJzZVRvQ2hpbGRBdChwb3MuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSkpCkBAIC02NCw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q2FuZGlkYXRlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTm9kZSogbV9hbmNob3JOb2RlOwot
ICAgIE5vZGUqIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFuY2hvcjsgLy8gSWYgdGhpcyBpcyBub24t
bnVsbCwgbV9ub2RlQWZ0ZXJQb3NpdGlvbkluQW5jaG9yLT5wYXJlbnROb2RlKCkgPT0gbV9hbmNo
b3JOb2RlOwotICAgIGludCBtX29mZnNldEluQW5jaG9yOworICAgIE5vZGUqIG1fYW5jaG9yTm9k
ZSB7IG51bGxwdHIgfTsKKyAgICBOb2RlKiBtX25vZGVBZnRlclBvc2l0aW9uSW5BbmNob3IgeyBu
dWxscHRyIH07IC8vIElmIHRoaXMgaXMgbm9uLW51bGwsIG1fbm9kZUFmdGVyUG9zaXRpb25JbkFu
Y2hvci0+cGFyZW50Tm9kZSgpID09IG1fYW5jaG9yTm9kZTsKKyAgICBpbnQgbV9vZmZzZXRJbkFu
Y2hvciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAxOTE4ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMTQgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogaW5saW5lIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICA6IENo
YXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZU90aGVyKQogICAgICwgbV90YXJnZXQo
dGFyZ2V0KQotICAgICwgbV9jYWNoZWRTaGVldCgwKQotICAgICwgbV9sb2FkaW5nKGZhbHNlKQot
ICAgICwgbV9hbHRlcm5hdGUoZmFsc2UpCi0gICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkK
LSAgICAsIG1faXNDU1MoZmFsc2UpCi0jaWYgRU5BQkxFKFhTTFQpCi0gICAgLCBtX2lzWFNMKGZh
bHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTEzNSw3ICsxMjcsNyBAQCB2b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAobV9jYWNoZWRTaGVldCkgewogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92
ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKKyAgICAg
ICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZikuc3RyaW5nKCk7CkBAIC0yMzIsNyArMjI0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb246OnBhcnNlU3R5bGVTaAogCiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1f
Y2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2NhY2hlZFNoZWV0ID0gMDsK
KyAgICBtX2NhY2hlZFNoZWV0ID0gbnVsbHB0cjsKIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCShyZXZp
c2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDE0ICs4MCwxNCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2xvY2FsSHJlZjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9tZWRpYTsK
LSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRTaGVldDsK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRTaGVldCB7
IG51bGxwdHIgfTsKICAgICBSZWZQdHI8U3R5bGVTaGVldD4gbV9zaGVldDsKLSAgICBib29sIG1f
bG9hZGluZzsKLSAgICBib29sIG1fYWx0ZXJuYXRlOwotICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJz
ZXI7Ci0gICAgYm9vbCBtX2lzQ1NTOworICAgIGJvb2wgbV9sb2FkaW5nIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fYWx0ZXJuYXRlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2Vy
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDU1MgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShYU0xU
KQotICAgIGJvb2wgbV9pc1hTTDsKKyAgICBib29sIG1faXNYU0wgeyBmYWxzZSB9OwogI2VuZGlm
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCShyZXZp
c2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDE0ICs2MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBpbnQgaW52YWxpZE9mZnNldCA9IC0xOwogCiAgICAgUmVmUHRyPE5vZGU+IG1fY29udGFp
bmVyTm9kZTsKLSAgICBtdXRhYmxlIGludCBtX29mZnNldEluQ29udGFpbmVyOworICAgIG11dGFi
bGUgaW50IG1fb2Zmc2V0SW5Db250YWluZXIgeyAwIH07CiAgICAgUmVmUHRyPE5vZGU+IG1fY2hp
bGRCZWZvcmVCb3VuZGFyeTsKIH07CiAKIGlubGluZSBSYW5nZUJvdW5kYXJ5UG9pbnQ6OlJhbmdl
Qm91bmRhcnlQb2ludChQYXNzUmVmUHRyPE5vZGU+IGNvbnRhaW5lcikKICAgICA6IG1fY29udGFp
bmVyTm9kZShjb250YWluZXIpCi0gICAgLCBtX29mZnNldEluQ29udGFpbmVyKDApCi0gICAgLCBt
X2NoaWxkQmVmb3JlQm91bmRhcnkoMCkKIHsKICAgICBBU1NFUlQobV9jb250YWluZXJOb2RlKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MTg4
NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsMTggKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2NyaXB0RWxlbWVu
dDo6U2NyaXB0RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBi
b29sIGFscmVhZHlTdGFydGVkKQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgLCBtX2Nh
Y2hlZFNjcmlwdCgwKQogICAgICwgbV9zdGFydExpbmVOdW1iZXIoV1RGOjpPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpKQogICAgICwgbV9wYXJzZXJJbnNlcnRlZChwYXJzZXJJbnNlcnRlZCkK
LSAgICAsIG1faXNFeHRlcm5hbFNjcmlwdChmYWxzZSkKICAgICAsIG1fYWxyZWFkeVN0YXJ0ZWQo
YWxyZWFkeVN0YXJ0ZWQpCi0gICAgLCBtX2hhdmVGaXJlZExvYWQoZmFsc2UpCi0gICAgLCBtX3dp
bGxCZVBhcnNlckV4ZWN1dGVkKGZhbHNlKQotICAgICwgbV9yZWFkeVRvQmVQYXJzZXJFeGVjdXRl
ZChmYWxzZSkKLSAgICAsIG1fd2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hlZFBhcnNpbmco
ZmFsc2UpCiAgICAgLCBtX2ZvcmNlQXN5bmMoIXBhcnNlckluc2VydGVkKQotICAgICwgbV93aWxs
RXhlY3V0ZUluT3JkZXIoZmFsc2UpCi0gICAgLCBtX3JlcXVlc3RVc2VzQWNjZXNzQ29udHJvbChm
YWxzZSkKIHsKICAgICBpZiAocGFyc2VySW5zZXJ0ZWQgJiYgbV9lbGVtZW50LmRvY3VtZW50KCku
c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgJiYgIW1fZWxlbWVudC5kb2N1bWVudCgpLmlzSW5E
b2N1bWVudFdyaXRlKCkpCiAgICAgICAgIG1fc3RhcnRMaW5lTnVtYmVyID0gbV9lbGVtZW50LmRv
Y3VtZW50KCkuc2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGlu
ZTsKQEAgLTMxNSw3ICszMDcsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OnN0b3BMb2FkUmVxdWVz
dCgpCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0KSB7CiAgICAgICAgIGlmICghbV93aWxsQmVQYXJz
ZXJFeGVjdXRlZCkKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhp
cyk7Ci0gICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gMDsKKyAgICAgICAgbV9jYWNoZWRTY3JpcHQg
PSBudWxscHRyOwogICAgIH0KIH0KIApAQCAtMzU2LDcgKzM0OCw3IEBAIHZvaWQgU2NyaXB0RWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGUKICAgICBlbHNlCiAgICAgICAgIG1fZWxlbWVudC5k
b2N1bWVudCgpLnNjcmlwdFJ1bm5lcigpLT5ub3RpZnlTY3JpcHRSZWFkeSh0aGlzLCBTY3JpcHRS
dW5uZXI6OkFTWU5DX0VYRUNVVElPTik7CiAKLSAgICBtX2NhY2hlZFNjcmlwdCA9IDA7CisgICAg
bV9jYWNoZWRTY3JpcHQgPSBudWxscHRyOwogfQogCiBib29sIFNjcmlwdEVsZW1lbnQ6Omlnbm9y
ZXNMb2FkUmVxdWVzdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJ
KHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk3LDE2ICs5NywxNiBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQm
IG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2Fj
aGVkU2NyaXB0OwogICAgIFdURjo6T3JkaW5hbE51bWJlciBtX3N0YXJ0TGluZU51bWJlcjsKLSAg
ICBib29sIG1fcGFyc2VySW5zZXJ0ZWQgOiAxOwotICAgIGJvb2wgbV9pc0V4dGVybmFsU2NyaXB0
IDogMTsKLSAgICBib29sIG1fYWxyZWFkeVN0YXJ0ZWQgOiAxOwotICAgIGJvb2wgbV9oYXZlRmly
ZWRMb2FkIDogMTsKLSAgICBib29sIG1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQgOiAxOyAvLyBTYW1l
IGFzICJUaGUgcGFyc2VyIHdpbGwgaGFuZGxlIGV4ZWN1dGluZyB0aGUgc2NyaXB0LiIKLSAgICBi
b29sIG1fcmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQgOiAxOwotICAgIGJvb2wgbV93aWxsRXhlY3V0
ZVdoZW5Eb2N1bWVudEZpbmlzaGVkUGFyc2luZyA6IDE7Ci0gICAgYm9vbCBtX2ZvcmNlQXN5bmMg
OiAxOwotICAgIGJvb2wgbV93aWxsRXhlY3V0ZUluT3JkZXIgOiAxOwotICAgIGJvb2wgbV9yZXF1
ZXN0VXNlc0FjY2Vzc0NvbnRyb2wgOiAxOworICAgIGJvb2wgbV9wYXJzZXJJbnNlcnRlZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzRXh0ZXJuYWxTY3JpcHQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9hbHJlYWR5U3RhcnRlZCAgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkICB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3dpbGxCZVBhcnNlckV4ZWN1dGVkIHsgZmFsc2UgfTsgLy8g
U2FtZSBhcyAiVGhlIHBhcnNlciB3aWxsIGhhbmRsZSBleGVjdXRpbmcgdGhlIHNjcmlwdC4iCisg
ICAgYm9vbCBtX3JlYWR5VG9CZVBhcnNlckV4ZWN1dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
d2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9mb3JjZUFzeW5jIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd2lsbEV4ZWN1dGVJbk9yZGVy
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVxdWVzdFVzZXNBY2Nlc3NDb250cm9sIHsgZmFsc2Ug
fTsKICAgICBTdHJpbmcgbV9jaGFyYWN0ZXJFbmNvZGluZzsKICAgICBTdHJpbmcgbV9mYWxsYmFj
a0NoYXJhY3RlckVuY29kaW5nOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcihkb2N1bWVudCwgZGlzcGxheUlEKSk7CiAgICAg
fQogICAgIH5TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKLSAgICB2b2lkIGNsZWFyRG9j
dW1lbnRQb2ludGVyKCkgeyBtX2RvY3VtZW50ID0gMDsgfQorICAgIHZvaWQgY2xlYXJEb2N1bWVu
dFBvaW50ZXIoKSB7IG1fZG9jdW1lbnQgPSBudWxscHRyOyB9CiAKICAgICB0eXBlZGVmIGludCBD
YWxsYmFja0lkOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDcgQEAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFN0eWxl
ZEVsZW1lbnQpID09IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RydWN0IFByZXNl
bnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5IHsKLSAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNo
ZUtleSgpIDogdGFnTmFtZSgwKSB7IH0KLSAgICBBdG9taWNTdHJpbmdJbXBsKiB0YWdOYW1lOwor
ICAgIEF0b21pY1N0cmluZ0ltcGwqIHRhZ05hbWUgeyBudWxscHRyIH07CiAgICAgLy8gT25seSB0
aGUgdmFsdWVzIG5lZWQgcmVmY291bnRpbmcuCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxBdG9taWNT
dHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiwgMz4gYXR0cmlidXRlc0FuZFZhbHVlczsKIH07CkBA
IC0yNjcsNyArMjY2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVBbGxJbmxpbmVTdHls
ZQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewotICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnRp
ZXMqIGlubGluZVN0eWxlID0gZWxlbWVudERhdGEoKSA/IGVsZW1lbnREYXRhKCktPmlubGluZVN0
eWxlKCkgOiAwKQorICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnRpZXMqIGlubGluZVN0eWxlID0g
ZWxlbWVudERhdGEoKSA/IGVsZW1lbnREYXRhKCktPmlubGluZVN0eWxlKCkgOiBudWxscHRyKQog
ICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgJmRvY3Vt
ZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKSk7CiB9CiAKQEAgLTM0MSw3ICszNDAsNyBA
QCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25BCiAgICAgVW5pcXVlRWxl
bWVudERhdGEmIGVsZW1lbnREYXRhID0gZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKTsKIAogICAg
IGVsZW1lbnREYXRhLnNldFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eShmYWxzZSk7
Ci0gICAgZWxlbWVudERhdGEubV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSA9IHN0eWxlLT5p
c0VtcHR5KCkgPyAwIDogc3R5bGU7CisgICAgZWxlbWVudERhdGEubV9wcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZSA9IHN0eWxlLT5pc0VtcHR5KCkgPyBudWxscHRyIDogc3R5bGU7CiAKICAgICBp
ZiAoIWNhY2hlSGFzaCB8fCBjYWNoZUl0ZXJhdG9yLT52YWx1ZSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAxOTE4ODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRk
aXRpb25hbFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkgeyByZXR1cm4gMDsgfQogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlQXR0cmlidXRlKCk7CiAKLSAgICBjb25zdCBTdHlsZVByb3BlcnRp
ZXMqIGlubGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudERhdGEoKSA/IGVsZW1lbnRE
YXRhKCktPm1faW5saW5lU3R5bGUuZ2V0KCkgOiAwOyB9CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0
aWVzKiBpbmxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCkgPyBlbGVtZW50
RGF0YSgpLT5tX2lubGluZVN0eWxlLmdldCgpIDogbnVsbHB0cjsgfQogICAgIAogICAgIGJvb2wg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZp
ZXIsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwogICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERv
Y3VtZW50RnJhZ21lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxh
dGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oCShyZXZpc2lvbiAxOTE4ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBFbGVtZW50
KiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9Ci0gICAgdm9pZCBjbGVhckhvc3QoKSB7
IG1faG9zdCA9IDA7IH0KKyAgICB2b2lkIGNsZWFySG9zdCgpIHsgbV9ob3N0ID0gbnVsbHB0cjsg
fQogCiBwcml2YXRlOgogICAgIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBob3N0KQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudC5jcHAJKHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIFRleHRFdmVudDo6VGV4dEV2
ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3QKICAgICA6IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJ
bnB1dEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9pbnB1dFR5cGUoaW5wdXRU
eXBlKQogICAgICwgbV9kYXRhKGRhdGEpCi0gICAgLCBtX3Bhc3RpbmdGcmFnbWVudCgwKQogICAg
ICwgbV9zaG91bGRTbWFydFJlcGxhY2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUo
ZmFsc2UpCiAgICAgLCBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmcoTWFpbEJsb2NrcXVvdGVIYW5k
bGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuY3BwCShyZXZp
c2lvbiAxOTE4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDE0ICsyOCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVSUV2ZW50
SW5pdDo6VUlFdmVudEluaXQoKQotICAgIDogdmlldygwKQotICAgICwgZGV0YWlsKDApCisgICAg
OiBkZXRhaWwoMCkKIHsKIH0KIAogVUlFdmVudEluaXQ6OlVJRXZlbnRJbml0KGJvb2wgYnViYmxl
cywgYm9vbCBjYW5jZWxhYmxlKQogICAgIDogRXZlbnRJbml0KGJ1YmJsZXMsIGNhbmNlbGFibGUp
Ci0gICAgLCB2aWV3KDApCiAgICAgLCBkZXRhaWwoMCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcAkocmV2aXNpb24g
MTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBVc2VyVHlwaW5nR2VzdHVyZUlu
ZGljYXRvcjo6VXNlclR5cGluZ0dlCiAgICAgLCBtX3ByZXZpb3VzRm9jdXNlZE5vZGUoZm9jdXNl
ZE5vZGUoKSkKIHsKICAgICBzX3Byb2Nlc3NpbmdVc2VyVHlwaW5nR2VzdHVyZSA9IHRydWU7Ci0g
ICAgZm9jdXNlZE5vZGUoKSA9IGZyYW1lLmRvY3VtZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5m
b2N1c2VkRWxlbWVudCgpIDogMDsKKyAgICBmb2N1c2VkTm9kZSgpID0gZnJhbWUuZG9jdW1lbnQo
KSA/IGZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkgOiBudWxscHRyOwogfQogCiBV
c2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjo6flVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MTkxODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgcmVzdHJpY3RTY2FsZUZhY3RvclRv
SW5pdGlhbFNjYWxlSWYKICAgICAgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHJlc3VsdC5taW5p
bXVtU2NhbGUgPSByZXN1bHQuaW5pdGlhbFNjYWxlOwogfQogCi1zdGF0aWMgZmxvYXQgbnVtZXJp
Y1ByZWZpeChjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmlu
ZywgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sKiBvayA9IDApCitzdGF0aWMgZmxvYXQgbnVtZXJp
Y1ByZWZpeChjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmlu
ZywgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sKiBvayA9IG51bGxwdHIpCiB7CiAgICAgc2l6ZV90
IHBhcnNlZExlbmd0aDsKICAgICBmbG9hdCB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJ
KHJldmlzaW9uIDE5MTg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCB2
b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQogewogICAgIFJlZlB0cjxQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlID0gbV9jaGFubmVsLT5lbnRhbmdsZWRDaGFu
bmVsKCk7CiAgICAgaWYgKHJlbW90ZSkKLSAgICAgICAgcmVtb3RlLT5zZXRSZW1vdGVQb3J0KDAp
OworICAgICAgICByZW1vdGUtPnNldFJlbW90ZVBvcnQobnVsbHB0cik7CiB9CiAKIHZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGNoYW5uZWxzKQpAQCAtMTU0LDcgKzE1NCw2IEBAIFJlZjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gUGxhdGZvcm0KIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IGluY29taW5n
LCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IG91dGdvaW5nKQogICAgIDogbV9pbmNvbWlu
Z1F1ZXVlKGluY29taW5nKQogICAgICwgbV9vdXRnb2luZ1F1ZXVlKG91dGdvaW5nKQotICAgICwg
bV9yZW1vdGVQb3J0KDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaAkocmV2aXNpb24gMTkx
ODg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0UXVldWU+IG1fb3V0Z29pbmdRdWV1ZTsK
IAogICAgICAgICAvLyBUaGUgcG9ydCB3ZSBhcmUgY29ubmVjdGVkIHRvICh0aGUgcmVtb3RlIHBv
cnQpIC0gdGhpcyBpcyB0aGUgcG9ydCB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gbmV3IG1lc3NhZ2Vz
IGFycml2ZS4KLSAgICAgICAgTWVzc2FnZVBvcnQqIG1fcmVtb3RlUG9ydDsKKyAgICAgICAgTWVz
c2FnZVBvcnQqIG1fcmVtb3RlUG9ydCB7IG51bGxwdHIgfTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>