<?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>164077</bug_id>
          
          <creation_ts>2016-10-27 14:00:42 -0700</creation_ts>
          <short_desc>iOS autocorrection does not trigger an input event of inputType &quot;insertReplacementText&quot;</short_desc>
          <delta_ts>2016-10-28 22:19:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245248</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-27 14:00:42 -0700</bug_when>
    <thetext>With input events on:
- Start typing something in an editable area (e.g. “tes”). The candidate bar on iOS should show an autocompletion candidate (e.g. “test” or “testing”)
- Select the candidate
- Observe that `beforeinput` and `input` events of type “insertText” were fired, when they should really be of type “insertReplacementText”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245249</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-27 14:01:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/28987810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245825</commentid>
    <comment_count>2</comment_count>
      <attachid>293229</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 15:16:46 -0700</bug_when>
    <thetext>Created attachment 293229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245829</commentid>
    <comment_count>3</comment_count>
      <attachid>293229</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-28 15:29:38 -0700</bug_when>
    <thetext>Comment on attachment 293229
Patch

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

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:260
&gt; +    ASSERT(index &gt;= 0 &amp;&amp; index &lt; 3);

This should not assert if it&apos;s possible for the JS to send in arbitrary values, but ideally it would trigger an error if too big.

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:283
&gt; +    float offsetX = (index * 2 + 1) * CGRectGetWidth(predictionViewFrame) / 6;
&gt; +    float offsetY = CGRectGetHeight(webView.window.frame) - CGRectGetHeight([UIKeyboardPredictionView activeInstance].superview.frame) + CGRectGetHeight(predictionViewFrame) / 2;
&gt; +    [[HIDEventGenerator sharedHIDEventGenerator] tap:CGPointMake(offsetX, offsetY) completionBlock:^{
&gt; +        if (m_context)
&gt; +            m_context-&gt;asyncTaskComplete(callbackID);
&gt; +    }];

Seems fragile in the face of UI changes, but oh well.

&gt; LayoutTests/fast/events/ios/before-input-events-prevent-candidate-insertion.html:16
&gt; +            uiController.singleTapAtPoint(100, 50, function() {});

You should get the coordinates via getBoundingClientRect, like other tests.

&gt; LayoutTests/fast/events/ios/input-events-insert-replacement-text.html:16
&gt; +            uiController.singleTapAtPoint(100, 100, function() {});

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245866</commentid>
    <comment_count>4</comment_count>
      <attachid>293244</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 16:41:06 -0700</bug_when>
    <thetext>Created attachment 293244
[For EWS] Fix DRT and implement feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245868</commentid>
    <comment_count>5</comment_count>
      <attachid>293229</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 16:43:44 -0700</bug_when>
    <thetext>Comment on attachment 293229
Patch

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

&gt;&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:260
&gt;&gt; +    ASSERT(index &gt;= 0 &amp;&amp; index &lt; 3);
&gt; 
&gt; This should not assert if it&apos;s possible for the JS to send in arbitrary values, but ideally it would trigger an error if too big.

Yes, this is reasonable. There are a few other places where we should use exceptions (e.g. typeCharacterUsingHardwareKeyboard with an invalid string, or zoomToScale with a negative scale). I&apos;ll file a followup to make these throw exceptions on receiving bad arguments.

&gt;&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:283
&gt;&gt; +    }];
&gt; 
&gt; Seems fragile in the face of UI changes, but oh well.

I agree :(
Since we want to eventually test using the software keyboard as well, we should reach out to the keyboards team and see if we can get any SPI to make this more robust.

&gt;&gt; LayoutTests/fast/events/ios/before-input-events-prevent-candidate-insertion.html:16
&gt;&gt; +            uiController.singleTapAtPoint(100, 50, function() {});
&gt; 
&gt; You should get the coordinates via getBoundingClientRect, like other tests.

Sounds good! Done.

&gt;&gt; LayoutTests/fast/events/ios/input-events-insert-replacement-text.html:16
&gt;&gt; +            uiController.singleTapAtPoint(100, 100, function() {});
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245879</commentid>
    <comment_count>6</comment_count>
      <attachid>293249</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 17:08:12 -0700</bug_when>
    <thetext>Created attachment 293249
[For EWS] Fix iOS OpenSource build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245902</commentid>
    <comment_count>7</comment_count>
      <attachid>293257</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 17:33:24 -0700</bug_when>
    <thetext>Created attachment 293257
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245916</commentid>
    <comment_count>8</comment_count>
      <attachid>293257</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-28 18:09:06 -0700</bug_when>
    <thetext>Comment on attachment 293257
Patch for landing

Clearing flags on attachment: 293257

Committed r208090: &lt;http://trac.webkit.org/changeset/208090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245969</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-28 22:19:04 -0700</bug_when>
    <thetext>Build fix in r208094</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293229</attachid>
            <date>2016-10-28 15:16:46 -0700</date>
            <delta_ts>2016-10-28 15:29:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164077-20161028151255.patch</filename>
            <type>text/plain</type>
            <size>33413</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uOTExODE4MTc2MWI4MDgzNDc5NjM2ZTMwOWE5MDNl
YWQzNGQyZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGlPUyBhdXRvY29y
cmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAiaW5z
ZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk4NzgxMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBjYW5k
aWRhdGUgaW5zZXJ0aW9uIG9uIGlPUywgc28gdGhhdCBpdCBmaXJlcyBpbnB1dCBldmVudHMgb2Yg
dHlwZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IiBhbmQgYWRkcyB0d28KKyAgICAgICAgaU9TIHVu
aXQgdGVzdHMgY292ZXJpbmcgdGhpcyBjaGFuZ2UgYXMgd2VsbCBhcyB0aGUgdGVzdCBpbmZyYXN0
cnVjdHVyZSBuZWVkZWQgdG8gc3VwcG9ydCB0aGVzZSB0ZXN0cy4gU2VlCisgICAgICAgIGNvbW1l
bnRzIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRz
L2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBs
YWNlbWVudC10ZXh0Lmh0bWwKKworICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKworICAgICAg
ICBBZGRzIGlzQXV0b2NvbXBsZXRpb24oKSB0byBUZXh0RXZlbnQsIGFzIHdlbGwgYXMgdGhlIFRl
eHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24gdGV4dCBpbnB1dCB0eXBlLiBXaGVuIHRoZQorICAg
ICAgICBFZGl0b3IgaGFuZGxlcyB0aGlzIFRleHRFdmVudCwgaXQgd2lsbCB1c2UgdGhpcyBpbmZv
cm1hdGlvbiB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyB0eXBp
bmcKKyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRB
Y3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKworICAgICAgICBOb3cgdGFrZXMgd2hldGhlciB0aGUg
Y29tbWFuZCBpcyBhdXRvY29ycmVjdGlvbiBpbnRvIGFjY291bnQuIElmIHNvLCB0aGUgY29ycmVz
cG9uZGluZyBlZGl0IGFjdGlvbiBzaG91bGQgYmUKKyAgICAgICAgRWRpdEFjdGlvbkluc2VydFJl
cGxhY2VtZW50IHJhdGhlciB0aGFuIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0LgorCisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorCisgICAgICAgIEFkZHMgYSBuZXcgVHlwaW5nQ29t
bWFuZCBvcHRpb24sIElzQXV0b2NvbXBsZXRpb24uCisKIDIwMTYtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCAiaW5zZXJ0RnJv
bURyb3AiIGFuZCAiZGVsZXRlQnlEcmFnIiBmb3IgdGhlIElucHV0RXZlbnQgc3BlYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGFhZWY4YzRmMGExOTUwNDMwZWIyZWRkOGRlMjdjOWZkYjQ5ZjNkZDAuLjgyOGIxOGIz
NWNlZjJmOTMzM2M1ZGMwODIxODA0NTNjMjNmYmFlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNi0xMC0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBpT1MgYXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBl
dmVudCBvZiBpbnB1dFR5cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjg5ODc4MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU21hbGwgdHdlYWsgdG8gbWFyayB0ZXh0IGluc2VydGlvbiB3aGVuIGF1dG9j
b3JyZWN0aW5nIGFzIHN1Y2gsIGFzIG9wcG9zZWQgdG8gcmVndWxhciBrZXlib2FyZCBpbnB1dC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24pOgorCiAyMDE2LTEw
LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJbnB1dEV2
ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCA5NThiZDc0ZTVmY2Y3MzZhNGQzZjJk
YjRjOGUwYmNjZWY0NmZlNjRmLi4wZDI1NzFiMjE1OGVhZDFjMTgyNGIwNGJmMGVmNjQ5NWYyZDI5
ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1Bhc3RlKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5
cGUgPT0gVGV4dEV2ZW50SW5wdXRQYXN0ZTsgfQogICAgICAgICBib29sIGlzRHJvcCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5wdXRUeXBlID09IFRleHRFdmVudElucHV0RHJvcDsgfQogICAgICAgICBi
b29sIGlzRGljdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50
SW5wdXREaWN0YXRpb247IH0KKyAgICAgICAgYm9vbCBpc0F1dG9jb21wbGV0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXRBdXRvY29tcGxldGlvbjsgfQog
CiAgICAgICAgIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRTbWFydFJlcGxhY2U7IH0KICAgICAgICAgYm9vbCBzaG91bGRNYXRjaFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRNYXRjaFN0eWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
SW5wdXRUeXBlLmgKaW5kZXggOGJlMjMzYzRiZmYwYmE1ZjVmMmY5NmQ1MDMwZDE4OGI1YzU2YmE3
YS4uMGYyM2Y1ZmFkZDZkYTczYWNmZDA5NGQ1MjA5YTM5MjAzNDg4ZmNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gVGV4dEV2ZW50SW5wdXRUeXBlIHsKICAgICBUZXh0RXZlbnRJbnB1
dEtleWJvYXJkLCAvLyBhbnkgbmV3bGluZSBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBsaW5l
IGJyZWFrcyBvbmx5LCBub3QgcGFyYWdyYXBoIHNlcGFyYXRvcnMuCisgICAgVGV4dEV2ZW50SW5w
dXRBdXRvY29tcGxldGlvbiwKICAgICBUZXh0RXZlbnRJbnB1dExpbmVCcmVhaywgLy8gYW55IHRh
YiBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBiYWNrdGFicy4KICAgICBUZXh0RXZlbnRJbnB1
dENvbXBvc2l0aW9uLAogICAgIFRleHRFdmVudElucHV0QmFja1RhYiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxOGVjMGQ5MDVhNTY5OTk0YWZjNTk5YjY3NjE1ZWExYTQ0MzIzZGI4
Li44ZThlZDdiMzk3MzFlZDg3ZmY4ZmYwZjEzNzkxYjEyZTc4NzBmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0xMjEzLDkgKzEyMTMsOSBAQCB2b2lkIEVkaXRvcjo6Y2xlYXIo
KQogICAgIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IEVkaXRvclBhcmFncmFwaFNlcGFy
YXRvcklzRGl2OwogfQogCi1ib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCitib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlw
ZSBpbnB1dFR5cGUpCiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxl
VGV4dElucHV0RXZlbnQodGV4dCwgdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICByZXR1cm4gbV9mcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudCh0ZXh0LCB0cmlnZ2VyaW5nRXZl
bnQsIGlucHV0VHlwZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0Rm9yQ29uZmlybWVk
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAgYm9v
bCBFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgc2VsZWN0SW4KICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpTZWxlY3RJbnNlcnRlZFRleHQ7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG9j
b3JyZWN0aW9uV2FzQXBwbGllZCkKICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcjsKKyAgICAgICAgICAgICAg
ICBpZiAodHJpZ2dlcmluZ0V2ZW50ICYmIHRyaWdnZXJpbmdFdmVudC0+aXNBdXRvY29tcGxldGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1hbmQ6OklzQXV0
b2NvbXBsZXRpb247CiAgICAgICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChk
b2N1bWVudCwgdGV4dCwgc2VsZWN0aW9uLCBvcHRpb25zLCB0cmlnZ2VyaW5nRXZlbnQgJiYgdHJp
Z2dlcmluZ0V2ZW50LT5pc0NvbXBvc2l0aW9uKCkgPyBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9z
aXRpb25GaW5hbCA6IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1ZjExZTM1YzY0ZDExZWU4MTM4
OWE1OWYzYzM3OTNmNjQ5NTA5NmUxLi5lMjM0YThhYjkxODdiZDkzYjUyOWE5ZjUwNDE5NmQ3ODZm
Nzc3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgpAQCAtMjM5LDcgKzI0MCw3IEBAIHB1
YmxpYzoKICAgICBDb21tYW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgRWRp
dG9yQ29tbWFuZFNvdXJjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tbWFu
ZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSk7IC8vIFdvcmtzIHdpdGhvdXQgYSBmcmFtZS4KIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgRXZlbnQqIHRyaWdn
ZXJpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgYm9vbCBpbnNlcnRUZXh0Rm9yQ29uZmlybWVkQ29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB0ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOwogICAgIGJvb2wgaW5zZXJ0VGV4
dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0SW5zZXJ0
ZWRUZXh0LCBUZXh0RXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3NTYxMzQwZDZkOWQ4MDAwYjkzNzY0NzI3MjYwNWI0
YzRlZWRiNGRmLi45ZTgwMmE0NjAzNDIyNDkwYzkzOWE0ODEyZjUzOWE0ZmI2ZTk1ZjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIG1fdGV4dDsKIH07CiAKLXN0YXRpYyBpbmxpbmUg
RWRpdEFjdGlvbiBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChUeXBpbmdDb21tYW5kOjpFVHlw
aW5nQ29tbWFuZCBjb21tYW5kLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFR5cGluZ0Nv
bW1hbmQ6OlRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQorc3RhdGljIGlubGlu
ZSBFZGl0QWN0aW9uIGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OkVU
eXBpbmdDb21tYW5kIGNvbW1hbmQsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgVHlwaW5n
Q29tbWFuZDo6VGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUsIGJvb2wgaXNBdXRv
Y29tcGxldGlvbikKIHsKICAgICBpZiAoY29tcG9zaXRpb25UeXBlID09IFR5cGluZ0NvbW1hbmQ6
OlRleHRDb21wb3NpdGlvblBlbmRpbmcpIHsKICAgICAgICAgaWYgKGNvbW1hbmQgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0VGV4dCkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgaW5saW5lIEVk
aXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoVHlwaW5nQ29tbWFuZDo6RVR5cGlu
Z0NvbW1hbgogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVMaW5lRm9y
d2FyZDsKICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJkOwogICAg
IGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dDoKLSAgICAgICAgcmV0dXJuIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OworICAgICAgICByZXR1cm4gaXNBdXRvY29tcGxldGlvbiA/IEVk
aXRBY3Rpb25JbnNlcnRSZXBsYWNlbWVudCA6IEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0Owog
ICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0TGluZUJyZWFrOgogICAgICAgICByZXR1cm4g
RWRpdEFjdGlvblR5cGluZ0luc2VydExpbmVCcmVhazsKICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6
Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgZWRpdEFjdGlvbklzRGVsZXRlQnlUeXBpbmcoRWRpdEFjdGlvbiBhY3Rpb24pCiB9
CiAKIFR5cGluZ0NvbW1hbmQ6OlR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlw
aW5nQ29tbWFuZCBjb21tYW5kVHlwZSwgY29uc3QgU3RyaW5nICZ0ZXh0VG9JbnNlcnQsIE9wdGlv
bnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25U
eXBlIGNvbXBvc2l0aW9uVHlwZSkKLSAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1
bWVudCwgZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5
LCBjb21wb3NpdGlvblR5cGUpKQorICAgIDogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKGRvY3Vt
ZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwgZ3JhbnVsYXJpdHks
IGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pKQogICAgICwgbV9j
b21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0KHRleHRUb0luc2Vy
dCkKICAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCkBAIC0xNTAsNiAr
MTUwLDcgQEAgVHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQs
IEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBjb24KICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3Jh
bnVsYXJpdHkpCiAgICAgLCBtX2NvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpCiAgICAg
LCBtX3Nob3VsZEFkZFRvS2lsbFJpbmcob3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKQorICAgICwg
bV9pc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKQogICAgICwgbV9v
cGVuZWRCeUJhY2t3YXJkRGVsZXRlKGZhbHNlKQogICAgICwgbV9zaG91bGRSZXRhaW5BdXRvY29y
cmVjdGlvbkluZGljYXRvcihvcHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Ip
CiAgICAgLCBtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3Bl
bGxDaGVja2luZykKQEAgLTE2Nyw2ICsxNjgsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZVNlbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dENvbQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBp
bmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZnJhbWUp
KSB7CisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlv
bnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldENv
bXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFu
ZC0+c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENo
ZWNraW5nKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmRlbGV0ZVNlbGVjdGlvbihvcHRp
b25zICYgU21hcnREZWxldGUpOwpAQCAtMTgxLDYgKzE4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywg
VGV4dEdyCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewog
ICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlv
bihsYXN0VHlwaW5nQ29tbWFuZC5nZXQoKSwgZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+ZGVsZXRlS2V5UHJlc3Nl
ZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKTsKQEAgLTE5OCw2ICsyMDEs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50
JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLAogICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFy
YWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxh
c3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygq
ZnJhbWUpKSB7CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJy
ZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBmcmFtZSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+Zm9yd2FyZERlbGV0ZUtl
eVByZXNzZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMgJiBBZGRzVG9LaWxsUmluZyk7CkBAIC0yNTEs
NiArMjU1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgICAgIGxhc3RUeXBp
bmdDb21tYW5kLT5zZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uRm9ySW5zZXJ0aW9uKTsKICAg
ICAgICAgfQogCisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQt
PnNldENvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Iob3B0aW9ucyAm
IFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CkBAIC0yNjUsNiArMjcwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRU
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGlu
Z0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVu
dC5mcmFtZSgpKSkgeworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxl
dGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CiAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihv
cHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBsYXN0VHlw
aW5nQ29tbWFuZC0+aW5zZXJ0TGluZUJyZWFrQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpOwpAQCAt
Mjc3LDYgKzI4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3Vt
ZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewor
ICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihmYWxzZSk7CiAg
ICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0
aW9uTm9uZSk7CiAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5pbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4OCw2ICsyOTUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB2b2lkIFR5
cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQs
IE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RU
eXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZG9j
dW1lbnQuZnJhbWUoKSkpIHsKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2Nv
bXBsZXRpb24ob3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0
b3Iob3B0aW9ucyAmIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFz
dFR5cGluZ0NvbW1hbmQtPmluc2VydFBhcmFncmFwaFNlcGFyYXRvckFuZE5vdGlmeUFjY2Vzc2li
aWxpdHkoKTsKQEAgLTM5OCw2ICs0MDYsNyBAQCBTdHJpbmcgVHlwaW5nQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50VHlwaW5nRWRpdEFjdGlv
bikgewogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQ6CisgICAgY2FzZSBFZGl0
QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6CiAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0
UGVuZGluZ0NvbXBvc2l0aW9uOgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydEZpbmFs
Q29tcG9zaXRpb246CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CkBAIC00
NjksNyArNDc4LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiBib29sIFR5cGluZ0NvbW1hbmQ6Ondp
bGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdl
PiYmIHJhbmdlKQogewogICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7Ci0gICAgbV9j
dXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9IGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1h
bmRUeXBlLCBncmFudWxhcml0eSwgbV9jb21wb3NpdGlvblR5cGUpOworICAgIG1fY3VycmVudFR5
cGluZ0VkaXRBY3Rpb24gPSBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIG1fY29tcG9zaXRpb25UeXBlLCBtX2lzQXV0b2NvbXBsZXRpb24pOwogCiAg
ICAgaWYgKCFzaG91bGREZWZlcldpbGxBcHBseUNvbW1hbmRVbnRpbEFkZGluZ1R5cGluZ0NvbW1h
bmQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5oCmluZGV4IDUwODM1NDBmYTliODYyNmNmNDJmNzQwYmExYWZlYmUyYmJhYzk3ZDUuLmI5
NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
QWRkc1RvS2lsbFJpbmcgPSAxIDw8IDEsCiAgICAgICAgIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5k
aWNhdG9yID0gMSA8PCAyLAogICAgICAgICBQcmV2ZW50U3BlbGxDaGVja2luZyA9IDEgPDwgMywK
LSAgICAgICAgU21hcnREZWxldGUgPSAxIDw8IDQKKyAgICAgICAgU21hcnREZWxldGUgPSAxIDw8
IDQsCisgICAgICAgIElzQXV0b2NvbXBsZXRpb24gPSAxIDw8IDUsCiAgICAgfTsKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIE9wdGlvbnM7CiAKQEAgLTc5LDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5LCBib29sIHNob3VsZEFk
ZFRvS2lsbFJpbmcpOwogICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUp
OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvblR5cGUgdHlwZSkg
eyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0KKyAgICB2b2lkIHNldElzQXV0b2NvbXBsZXRp
b24oYm9vbCBpc0F1dG9jb21wbGV0aW9uKSB7IG1faXNBdXRvY29tcGxldGlvbiA9IGlzQXV0b2Nv
bXBsZXRpb247IH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldEVuZGluZ1NlbGVj
dGlvbk9uTGFzdEluc2VydENvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KTsKQEAgLTE1MSw2ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFRleHRDb21wb3NpdGlvblR5cGUg
bV9jb21wb3NpdGlvblR5cGU7CiAgICAgYm9vbCBtX3Nob3VsZEFkZFRvS2lsbFJpbmc7CiAgICAg
Ym9vbCBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlOworICAgIGJvb2wgbV9pc0F1dG9jb21wbGV0aW9u
OwogICAgIAogICAgIC8vIFVuZG9pbmcgYSBzZXJpZXMgb2YgYmFja3dhcmQgZGVsZXRlcyB3aWxs
IHJlc3RvcmUgYSBzZWxlY3Rpb24gYXJvdW5kIGFsbCBvZiB0aGUKICAgICAvLyBjaGFyYWN0ZXJz
IHRoYXQgd2VyZSBkZWxldGVkLCBidXQgb25seSBpZiB0aGUgdHlwaW5nIGNvbW1hbmQgYmVpbmcg
dW5kb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggZmUzYmY4ZDE0N2NkNjk5ZjY1YmNmOTNlYWY1OGY2Y2RjMzRiMmJm
YS4uMTJkZmUwNGM0OGViNWE0MWIwNWRiYWY4YjljYTkyZTM0OWU0YjY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICAKICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgdHJ1
ZSk7CiAgICAgaWYgKGNvcnJlY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigp
Lmluc2VydFRleHQoY29ycmVjdGlvbiwgMCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2Vy
dFRleHQoY29ycmVjdGlvbiwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlCiAg
ICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgY29ycmVjdGlvbkFw
cGxpZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGM0MjU5NWRjYWI3NGU4NDk2Yjg1NmZmYjA0YmEwYzI1ZjE5MjY0OTMuLmJlNjEw
Y2U4Njg3YmQ3ZTY1YTYwMTZiMzA0NmQxMWZkNzlhNDYyNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0xMC0y
OCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpT1Mg
YXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBldmVudCBvZiBpbnB1dFR5
cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg5ODc4
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0ZXN0IHN1cHBvcnQgZm9yIGluc2VydGluZyB0ZXh0IGNhbmRpZGF0ZXMgb24gaU9TIGluIHRo
ZSBmb3JtIG9mCisgICAgICAgIFVJU2NyaXB0Q29udHJvbGxlci5zZWxlY3RUZXh0Q2FuZGlkYXRl
QXRJbmRleChpbmRleCwgY2FsbGJhY2spLCB3aGljaCBzZWxlY3RzIHRoZSB0ZXh0IGNhbmRpZGF0
ZSBhdCBhIGdpdmVuCisgICAgICAgIGluZGV4ICh0aGlzIG5lZWRzIHRvIGJlIGEgdmFsdWUgYmV0
d2VlbiAwLTIgb24gaU9TKSBhbmQgZmlyZXMgdGhlIGNhbGxiYWNrIHdoZW4gZG9uZS4KKworICAg
ICAgICBUbyBpbXBsZW1lbnQgdGhpcywgd2Ugd2FpdCBmb3IgdGhlIHRleHQgcHJlZGljdGlvbiB2
aWV3IHRvIGhhdmUgcHJlZGljdGlvbnMgKHdlIGRldGVybWluZSB0aGlzIGJ5IHBvbGxpbmcgYXQg
YQorICAgICAgICBnaXZlbiBpbnRlcnZhbCkgYW5kIHRoZW4gdGFwIHRoZSBjZW50ZXIgb2YgdGhl
IHRleHQgcHJlZGljdGlvbiB2aWV3IGF0IHRoZSBnaXZlbiBpbmRleC4KKworICAgICAgICAqIFRl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxl
Y3RUZXh0Q2FuZGlkYXRlQXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6d2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRl
eCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZvclRleHRQcmVkaWN0
aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToKKwogMjAxNi0xMC0yNyAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIwNzk5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xs
ZXIuaWRsCmluZGV4IDk4NGRjZjZhMTZkOTBkOTUwY2NiOTYxYmQ4Mzg2Y2QxZDAzNzYyMzYuLjJl
Yzk0OTg1NWRhZjg4ZGVmNzRiMjk2MGYzNTIzOTk5MDM5ZDU1ODggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJv
bGxlci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtNDksNiArNDksOCBAQCBpbnRlcmZhY2Ug
VUlTY3JpcHRDb250cm9sbGVyIHsKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9h
cmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGtleVVw
VXNpbmdIYXJkd2FyZUtleWJvYXJkKERPTVN0cmluZyBjaGFyYWN0ZXIsIG9iamVjdCBjYWxsYmFj
ayk7CiAKKyAgICB2b2lkIHNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgsIG9i
amVjdCBjYWxsYmFjayk7CisKICAgICAvLyBldmVudHNKU09OIGRlc2NyaWJlcyBhIHNlcmllcyBv
ZiB1c2VyIGV2ZW50cyBpbiBKU09OIGZvcm0uIEZvciB0aGUga2V5cywgc2VlIEhJREV2ZW50R2Vu
ZXJhdG9yLm1tLgogICAgIC8vIEZvciBleGFtcGxlLCB0aGlzIEpTT04gZGVzY3JpYmVzIGEgdG91
Y2ggZG93biBmb2xsb3dlZCBieSBhIHRvdWNoIHVwIChpLmUuIGEgc2luZ2xlIHRhcCkuCiAgICAg
Ly8gIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQwNDNjZDczNmMzYmM0ZjI0NzAz
MjRkNzI0MjMxZjE3YjdlMjljZTAuLmJlYzIxNzEzNjA3MDg5NGU4YjlhNGIwNDY1MTFmN2Q5MGEw
MWEzOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjE0LDYgKzIxNCwxNCBAQCB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYpCiB7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZWxl
Y3RUZXh0Q2FuZGlkYXRlQXRJbmRleChsb25nIGluZGV4LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQor
eworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZvclRleHRQcmVkaWN0aW9uc1Zp
ZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGxvbmcsIHVuc2lnbmVkLCBmbG9hdCkKK3sKK30K
Kwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQo
SlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IGFmNjA5NTA0NDU4MGIwMjFhZmJhYzM2YjNlNmZmZGJjMTM1ZTFkOWEuLmQ2ZDc5NDY1MDVkN2Y3
NDcwMzA0ZGJhMGNkYWY5OTRlZTVkYzQ4MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC03
MCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9h
cmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lk
IGtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CiAKKyAgICB2b2lkIHNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KGxv
bmcgaW5kZXgsIEpTVmFsdWVSZWYgY2FsbGJhY2spOworCiAgICAgdm9pZCBrZXlib2FyZEFjY2Vz
c29yeUJhck5leHQoKTsKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5QmFyUHJldmlvdXMoKTsK
ICAgICAKQEAgLTEzNiw2ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIEpTQ2xhc3NSZWYgd3JhcHBl
ckNsYXNzKCkgZmluYWw7CiAKICAgICBKU09iamVjdFJlZiBvYmplY3RGcm9tUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIHdhaXRGb3JUZXh0UHJlZGljdGlv
bnNWaWV3QW5kU2VsZWN0Q2FuZGlkYXRlQXRJbmRleChsb25nIGluZGV4LCB1bnNpZ25lZCBjYWxs
YmFja0lELCBmbG9hdCBpbnRlcnZhbCk7CiAKICAgICBVSVNjcmlwdENvbnRleHQqIG1fY29udGV4
dDsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlLaXRTUEkuaAppbmRleCBlZjkxNGIyOWVh
ZDIzN2MxZmZiMGRiNjJlMDI3OWUyZmQwNWE2ZTg2Li4yYWU2NWUxNDgxNzdiNDNjMjZiODM5Y2Ni
NDc2MGJjMGI0OTE5ODMwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SUtpdFNQSS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmgKQEAg
LTUyLDYgKzUyLDExIEBACiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCitA
aW50ZXJmYWNlIFVJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyA6IFVJVmlldworKyAoVUlLZXlib2Fy
ZFByZWRpY3Rpb25WaWV3ICopYWN0aXZlSW5zdGFuY2U7CistIChCT09MKWhhc1ByZWRpY3Rpb25z
OworQGVuZAorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjZW5kaWYgLy8gVUlLaXRTUElf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCmluZGV4IGE4ODg2OTk4ZWEwMjgzZDFmM2UwNGNmOTQyZTY3MzU4MTUwMjMzNWQuLjY1
NTcyYjQxY2JhOTFiOWFiMzVjOWYyNmYwMzY2NTE0OTg1NGNjNzYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTI1NSw2
ICsyNTUsMzQgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtl
eWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWwKICAgICB9XTsKIH0KIAordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgs
IEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGluZGV4ID49IDAgJiYgaW5kZXgg
PCAzKTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVy
dmFsID0gMC4xOworICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVG
b3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIHdh
aXRGb3JUZXh0UHJlZGljdGlvbnNWaWV3QW5kU2VsZWN0Q2FuZGlkYXRlQXRJbmRleChpbmRleCwg
Y2FsbGJhY2tJRCwgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFsKTsKK30KKwordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OndhaXRGb3JUZXh0UHJlZGljdGlvbnNWaWV3QW5kU2VsZWN0Q2Fu
ZGlkYXRlQXRJbmRleChsb25nIGluZGV4LCB1bnNpZ25lZCBjYWxsYmFja0lELCBmbG9hdCBpbnRl
cnZhbCkKK3sKKyAgICBpZiAoIVtbVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IGFjdGl2ZUluc3Rh
bmNlXSBoYXNQcmVkaWN0aW9uc10pIHsKKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgaW50ZXJ2YWwgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICAgICAgd2FpdEZvclRleHRQcmVkaWN0
aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGluZGV4LCBjYWxsYmFja0lELCBpbnRl
cnZhbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGxhdGZv
cm1XS1ZpZXcgd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBDR1JlY3QgcHJlZGljdGlvblZpZXdGcmFtZSA9IFtV
SUtleWJvYXJkUHJlZGljdGlvblZpZXcgYWN0aXZlSW5zdGFuY2VdLmZyYW1lOworICAgIC8vIFRo
aXMgYXNzdW1lcyB0aGVyZSBhcmUgMyBwcmVkaWN0ZWQgdGV4dCBjZWxscyBvZiBlcXVhbCB3aWR0
aCwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gaU9TLgorICAgIGZsb2F0IG9mZnNldFggPSAoaW5kZXgg
KiAyICsgMSkgKiBDR1JlY3RHZXRXaWR0aChwcmVkaWN0aW9uVmlld0ZyYW1lKSAvIDY7CisgICAg
ZmxvYXQgb2Zmc2V0WSA9IENHUmVjdEdldEhlaWdodCh3ZWJWaWV3LndpbmRvdy5mcmFtZSkgLSBD
R1JlY3RHZXRIZWlnaHQoW1VJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyBhY3RpdmVJbnN0YW5jZV0u
c3VwZXJ2aWV3LmZyYW1lKSArIENHUmVjdEdldEhlaWdodChwcmVkaWN0aW9uVmlld0ZyYW1lKSAv
IDI7CisgICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gdGFw
OkNHUG9pbnRNYWtlKG9mZnNldFgsIG9mZnNldFkpIGNvbXBsZXRpb25CbG9jazpeeworICAgICAg
ICBpZiAobV9jb250ZXh0KQorICAgICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0
ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRp
c21pc3NGb3JtQWNjZXNzb3J5VmlldygpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2Vi
VmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA0ZjdlYzQ2ZDhjODA4ZjY3YTIxZjI4NzM0ZDc2ZDY4NWM3MDViNmMz
Li45ODAyZDY2MTI3MzE3MjA5M2E3ZjE1YzZkMWI1YjZjMTQ4NmNhMTc0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTYtMTAtMjggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgaU9TIGF1dG9jb3JyZWN0aW9uIGRvZXMgbm90IHRyaWdnZXIgYW4gaW5w
dXQgZXZlbnQgb2YgaW5wdXRUeXBlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNzcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4OTg3ODEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgMiBuZXcgdW5pdCB0ZXN0cyB2ZXJpZnlpbmcgdGhhdCBjYW5k
aWRhdGUgdGV4dCBpbnNlcnRpb24gY2FuIGJlIHByZXZlbnRlZCB2aWEgYmVmb3JlaW5wdXQgZXZl
bnRzLCBhbmQgdGhhdAorICAgICAgICBiZWZvcmVpbnB1dCBhbmQgaW5wdXQgZXZlbnRzIG9mIHR5
cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIgYXJlIGZpcmVkIHdoZW4gaW5zZXJ0aW5nIGNhbmRp
ZGF0ZSB0ZXh0IG9uIGlPUy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5w
dXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQt
Y2FuZGlkYXRlLWluc2VydGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9p
b3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNlbWVudC10ZXh0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFj
ZW1lbnQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0ICJpbnNlcnRGcm9tRHJvcCIg
YW5kICJkZWxldGVCeURyYWciIGZvciB0aGUgSW5wdXRFdmVudCBzcGVjCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNh
bmRpZGF0ZS1pbnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
aW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OGQwYzJlODZjOGU4M2NmZDcyZDlmNWZmODlmMDViMmZmNjMw
MDEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2JlZm9y
ZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDUgQEAKKworVG8gbWFudWFsbHkgdGVzdCwgdHlwZSAndCcgaW50byB0aGUgY29u
dGVudGVkaXRhYmxlIGFuZCB0cnkgdG8gc2VsZWN0IGEgY2FuZGlkYXRlLiBUaGUgcmVwbGFjZW1l
bnQgdGV4dCBzaG91bGQgbm90IGJlIGluc2VydGVkLgorCitQQVNTOiBUaGUgcmVwbGFjZW1lbnQg
dGV4dCB3YXMgcHJldmVudGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZl
bnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMTllOGU0NDQ4NTJkMTZl
MWRjZjIzZWRmZWEyNWU5YmUxMjc3N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNl
cnRpb24uaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+CisK
KzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxl
PTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBl
PSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250
cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgdWlDb250cm9sbGVyLnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoInQi
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnNlbGVjdFRl
eHRDYW5kaWRhdGVBdEluZGV4KDEsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgxMDAsIDUwLCBmdW5jdGlvbigpIHt9KTsKKyAgICAg
ICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBwcm9n
cmVzcyA9IDA7CisgICAgICAgIHZhciByZXBsYWNlbWVudFRleHQgPSAiIjsKKyAgICAgICAgbGV0
IHdyaXRlID0gKG1lc3NhZ2UpID0+IG91dHB1dC5pbm5lckhUTUwgKz0gKG1lc3NhZ2UgKyAiPGJy
PiIpOworICAgICAgICBsZXQgZ2V0VUlTY3JpcHQgPSAoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidWktc2NyaXB0IikudGV4dDsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gaW5jcmVtZW50UHJvZ3Jlc3MoKQorICAgICAgICB7CisgICAgICAgICAgICBwcm9ncmVzcysr
OworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCBwcm9ncmVzcyAhPT0gMikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRhYmxlLnZhbHVlLmluZGV4T2YocmVwbGFj
ZW1lbnRUZXh0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYFBBU1M6IFRoZSBy
ZXBsYWNlbWVudCB0ZXh0IHdhcyBwcmV2ZW50ZWQuYCk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB3cml0ZShgRkFJTDogVGhlIGlucHV0IHZhbHVlICR7ZWRpdGFi
bGUudmFsdWV9IHNob3VsZCBub3QgY29udGFpbiByZXBsYWNlbWVudCB0ZXh0ICR7cmVwbGFjZW1l
bnRUZXh0fS5gKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGVkaXRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImJlZm9y
ZWlucHV0IiwgcHJldmVudEJlZm9yZUlucHV0KTsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCks
IGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGluY3JlbWVudFByb2dyZXNzKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHByZXZlbnRC
ZWZvcmVJbnB1dChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGV2ZW50LmlucHV0
VHlwZSA9PT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIpIHsKKyAgICAgICAgICAgICAgICByZXBs
YWNlbWVudFRleHQgPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIGlmICghcmVwbGFjZW1l
bnRUZXh0KQorICAgICAgICAgICAgICAgICAgICB3cml0ZSgiRkFJTDogVGhlIHJlcGxhY2VtZW50
IHRleHQgaW5wdXQgZXZlbnQgbGFja3MgZGF0YS4iKTsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIGluY3JlbWVudFByb2dyZXNzKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAg
ICAjZWRpdGFibGUgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IHN0eWxlPSJtYXJnaW46
IDA7IiBvbmxvYWQ9cnVuVGVzdCgpPgorICAgIDxpbnB1dCBjb250ZW50ZWRpdGFibGUgaWQ9ImVk
aXRhYmxlIj48L2lucHV0PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3QsIHR5cGUgJ3QnIGludG8g
dGhlIGNvbnRlbnRlZGl0YWJsZSBhbmQgdHJ5IHRvIHNlbGVjdCBhIGNhbmRpZGF0ZS4gVGhlIHJl
cGxhY2VtZW50IHRleHQgc2hvdWxkIG5vdCBiZSBpbnNlcnRlZC48L3A+CisgICAgPGRpdiBpZD0i
b3V0cHV0Ij48L2Rpdj4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWlu
c2VydC1yZXBsYWNlbWVudC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmE0MGY5ZjQ3
NDA4MmRkZWExODBiMWI4MmJkOTdlM2M1MTk0OWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUbyBtYW51YWxseSB0ZXN0LCB0eXBlICd0
JyBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUgYW5kIHRyeSB0byBzZWxlY3QgYSBjYW5kaWRhdGUu
IFRoZSBvdXRwdXQgc2hvdWxkIGluZGljYXRlIHRoYXQgdGhlIGJlZm9yZWlucHV0IGFuZCBpbnB1
dCBldmVudHMgZm9yIHRoZSB0ZXh0IHJlcGxhY2VtZW50IHdlcmUgaGFuZGxlZCwgYW5kIHRoYXQg
dGhlIHJhbmdlIG9mIHRoZSBiZWZvcmVpbnB1dCBldmVudCBpcyBmcm9tIDAgdG8gMS4KKworUEFT
UzogSGFuZGxlZCB0ZXh0IHJlcGxhY2VtZW50IGJlZm9yZSBpbnB1dCBldmVudCB3aXRoIHJhbmdl
OiBbMCwgMV0uCitQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFjZW1lbnQgaW5wdXQgZXZlbnQuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9pbnB1dC1ldmVudHMtaW5z
ZXJ0LXJlcGxhY2VtZW50LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9p
bnB1dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Yjgw
YzljMDgwOWQyOTNlOGYzYTY1ZmFlZGRiYTI4OTQ0OGNmZjJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1l
bnQtdGV4dC5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4K
KworPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2Nh
bGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5
cGU9InRleHQvcGxhaW4iPgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIudHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZCgi
dCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2VsZWN0
VGV4dENhbmRpZGF0ZUF0SW5kZXgoMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVp
Q29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KDEwMCwgMTAwLCBmdW5jdGlvbigpIHt9KTsKKyAg
ICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBw
cm9ncmVzcyA9IDA7CisgICAgICAgIGxldCB3cml0ZSA9IChtZXNzYWdlKSA9PiBvdXRwdXQuaW5u
ZXJIVE1MICs9IChtZXNzYWdlICsgIjxicj4iKTsKKyAgICAgICAgbGV0IGdldFVJU2NyaXB0ID0g
KCkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGluY3JlbWVudFByb2dyZXNzKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcHJvZ3Jlc3MrKzsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIgfHwgcHJvZ3Jlc3MgIT09IDMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGVkaXRhYmxl
LnRleHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBlZGl0YWJsZS5hZGRFdmVudExpc3RlbmVy
KCJpbnB1dCIsIGxvZ0lucHV0RXZlbnQpOworICAgICAgICAgICAgZWRpdGFibGUuYWRkRXZlbnRM
aXN0ZW5lcigiYmVmb3JlaW5wdXQiLCBsb2dJbnB1dEV2ZW50KTsKKworICAgICAgICAgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0
VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50
UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gbG9nSW5wdXRFdmVudChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGV2ZW50
LmlucHV0VHlwZSAhPT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gImJlZm9yZWlucHV0Iikg
eworICAgICAgICAgICAgICAgIGxldCBmaXJzdFJhbmdlID0gZXZlbnQuZ2V0VGFyZ2V0UmFuZ2Vz
KClbMF07CisgICAgICAgICAgICAgICAgd3JpdGUoYFBBU1M6IEhhbmRsZWQgdGV4dCByZXBsYWNl
bWVudCBiZWZvcmUgaW5wdXQgZXZlbnQgd2l0aCByYW5nZTogWyR7Zmlyc3RSYW5nZS5zdGFydE9m
ZnNldH0sICR7Zmlyc3RSYW5nZS5lbmRPZmZzZXR9XS5gKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHdyaXRlKGBQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFjZW1lbnQgaW5w
dXQgZXZlbnQuYCk7CisgICAgICAgICAgICBpbmNyZW1lbnRQcm9ncmVzcygpOworICAgICAgICB9
CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICNlZGl0YWJsZSB7CisgICAgICAgIHdp
ZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgPC9zdHlsZT4K
KzwvaGVhZD4KKworPGJvZHkgc3R5bGU9Im1hcmdpbjogMDsiIG9ubG9hZD1ydW5UZXN0KCk+Cisg
ICAgPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9ImVkaXRhYmxlIj48L2Rpdj4KKyAgICA8cD5UbyBt
YW51YWxseSB0ZXN0LCB0eXBlICd0JyBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUgYW5kIHRyeSB0
byBzZWxlY3QgYSBjYW5kaWRhdGUuIFRoZSBvdXRwdXQgc2hvdWxkIGluZGljYXRlIHRoYXQgdGhl
IGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgZm9yIHRoZSB0ZXh0IHJlcGxhY2VtZW50IHdl
cmUgaGFuZGxlZCwgYW5kIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBiZWZvcmVpbnB1dCBldmVudCBp
cyBmcm9tIDAgdG8gMS48L3A+CisgICAgPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzwvYm9keT4K
KworPC9odG1sPgo=
</data>
<flag name="review"
          id="316141"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293244</attachid>
            <date>2016-10-28 16:41:06 -0700</date>
            <delta_ts>2016-10-28 16:41:06 -0700</delta_ts>
            <desc>[For EWS] Fix DRT and implement feedback</desc>
            <filename>bug-164077-20161028163715.patch</filename>
            <type>text/plain</type>
            <size>34711</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uOTExODE4MTc2MWI4MDgzNDc5NjM2ZTMwOWE5MDNl
YWQzNGQyZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGlPUyBhdXRvY29y
cmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAiaW5z
ZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk4NzgxMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBjYW5k
aWRhdGUgaW5zZXJ0aW9uIG9uIGlPUywgc28gdGhhdCBpdCBmaXJlcyBpbnB1dCBldmVudHMgb2Yg
dHlwZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IiBhbmQgYWRkcyB0d28KKyAgICAgICAgaU9TIHVu
aXQgdGVzdHMgY292ZXJpbmcgdGhpcyBjaGFuZ2UgYXMgd2VsbCBhcyB0aGUgdGVzdCBpbmZyYXN0
cnVjdHVyZSBuZWVkZWQgdG8gc3VwcG9ydCB0aGVzZSB0ZXN0cy4gU2VlCisgICAgICAgIGNvbW1l
bnRzIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRz
L2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBs
YWNlbWVudC10ZXh0Lmh0bWwKKworICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKworICAgICAg
ICBBZGRzIGlzQXV0b2NvbXBsZXRpb24oKSB0byBUZXh0RXZlbnQsIGFzIHdlbGwgYXMgdGhlIFRl
eHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24gdGV4dCBpbnB1dCB0eXBlLiBXaGVuIHRoZQorICAg
ICAgICBFZGl0b3IgaGFuZGxlcyB0aGlzIFRleHRFdmVudCwgaXQgd2lsbCB1c2UgdGhpcyBpbmZv
cm1hdGlvbiB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyB0eXBp
bmcKKyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRB
Y3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKworICAgICAgICBOb3cgdGFrZXMgd2hldGhlciB0aGUg
Y29tbWFuZCBpcyBhdXRvY29ycmVjdGlvbiBpbnRvIGFjY291bnQuIElmIHNvLCB0aGUgY29ycmVz
cG9uZGluZyBlZGl0IGFjdGlvbiBzaG91bGQgYmUKKyAgICAgICAgRWRpdEFjdGlvbkluc2VydFJl
cGxhY2VtZW50IHJhdGhlciB0aGFuIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0LgorCisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorCisgICAgICAgIEFkZHMgYSBuZXcgVHlwaW5nQ29t
bWFuZCBvcHRpb24sIElzQXV0b2NvbXBsZXRpb24uCisKIDIwMTYtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCAiaW5zZXJ0RnJv
bURyb3AiIGFuZCAiZGVsZXRlQnlEcmFnIiBmb3IgdGhlIElucHV0RXZlbnQgc3BlYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGFhZWY4YzRmMGExOTUwNDMwZWIyZWRkOGRlMjdjOWZkYjQ5ZjNkZDAuLjgyOGIxOGIz
NWNlZjJmOTMzM2M1ZGMwODIxODA0NTNjMjNmYmFlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNi0xMC0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBpT1MgYXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBl
dmVudCBvZiBpbnB1dFR5cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjg5ODc4MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU21hbGwgdHdlYWsgdG8gbWFyayB0ZXh0IGluc2VydGlvbiB3aGVuIGF1dG9j
b3JyZWN0aW5nIGFzIHN1Y2gsIGFzIG9wcG9zZWQgdG8gcmVndWxhciBrZXlib2FyZCBpbnB1dC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24pOgorCiAyMDE2LTEw
LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJbnB1dEV2
ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCA5NThiZDc0ZTVmY2Y3MzZhNGQzZjJk
YjRjOGUwYmNjZWY0NmZlNjRmLi4wZDI1NzFiMjE1OGVhZDFjMTgyNGIwNGJmMGVmNjQ5NWYyZDI5
ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1Bhc3RlKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5
cGUgPT0gVGV4dEV2ZW50SW5wdXRQYXN0ZTsgfQogICAgICAgICBib29sIGlzRHJvcCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5wdXRUeXBlID09IFRleHRFdmVudElucHV0RHJvcDsgfQogICAgICAgICBi
b29sIGlzRGljdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50
SW5wdXREaWN0YXRpb247IH0KKyAgICAgICAgYm9vbCBpc0F1dG9jb21wbGV0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXRBdXRvY29tcGxldGlvbjsgfQog
CiAgICAgICAgIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRTbWFydFJlcGxhY2U7IH0KICAgICAgICAgYm9vbCBzaG91bGRNYXRjaFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRNYXRjaFN0eWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
SW5wdXRUeXBlLmgKaW5kZXggOGJlMjMzYzRiZmYwYmE1ZjVmMmY5NmQ1MDMwZDE4OGI1YzU2YmE3
YS4uMGYyM2Y1ZmFkZDZkYTczYWNmZDA5NGQ1MjA5YTM5MjAzNDg4ZmNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gVGV4dEV2ZW50SW5wdXRUeXBlIHsKICAgICBUZXh0RXZlbnRJbnB1
dEtleWJvYXJkLCAvLyBhbnkgbmV3bGluZSBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBsaW5l
IGJyZWFrcyBvbmx5LCBub3QgcGFyYWdyYXBoIHNlcGFyYXRvcnMuCisgICAgVGV4dEV2ZW50SW5w
dXRBdXRvY29tcGxldGlvbiwKICAgICBUZXh0RXZlbnRJbnB1dExpbmVCcmVhaywgLy8gYW55IHRh
YiBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBiYWNrdGFicy4KICAgICBUZXh0RXZlbnRJbnB1
dENvbXBvc2l0aW9uLAogICAgIFRleHRFdmVudElucHV0QmFja1RhYiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxOGVjMGQ5MDVhNTY5OTk0YWZjNTk5YjY3NjE1ZWExYTQ0MzIzZGI4
Li44ZThlZDdiMzk3MzFlZDg3ZmY4ZmYwZjEzNzkxYjEyZTc4NzBmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0xMjEzLDkgKzEyMTMsOSBAQCB2b2lkIEVkaXRvcjo6Y2xlYXIo
KQogICAgIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IEVkaXRvclBhcmFncmFwaFNlcGFy
YXRvcklzRGl2OwogfQogCi1ib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCitib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlw
ZSBpbnB1dFR5cGUpCiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxl
VGV4dElucHV0RXZlbnQodGV4dCwgdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICByZXR1cm4gbV9mcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudCh0ZXh0LCB0cmlnZ2VyaW5nRXZl
bnQsIGlucHV0VHlwZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0Rm9yQ29uZmlybWVk
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAgYm9v
bCBFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgc2VsZWN0SW4KICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpTZWxlY3RJbnNlcnRlZFRleHQ7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG9j
b3JyZWN0aW9uV2FzQXBwbGllZCkKICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcjsKKyAgICAgICAgICAgICAg
ICBpZiAodHJpZ2dlcmluZ0V2ZW50ICYmIHRyaWdnZXJpbmdFdmVudC0+aXNBdXRvY29tcGxldGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1hbmQ6OklzQXV0
b2NvbXBsZXRpb247CiAgICAgICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChk
b2N1bWVudCwgdGV4dCwgc2VsZWN0aW9uLCBvcHRpb25zLCB0cmlnZ2VyaW5nRXZlbnQgJiYgdHJp
Z2dlcmluZ0V2ZW50LT5pc0NvbXBvc2l0aW9uKCkgPyBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9z
aXRpb25GaW5hbCA6IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1ZjExZTM1YzY0ZDExZWU4MTM4
OWE1OWYzYzM3OTNmNjQ5NTA5NmUxLi5lMjM0YThhYjkxODdiZDkzYjUyOWE5ZjUwNDE5NmQ3ODZm
Nzc3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgpAQCAtMjM5LDcgKzI0MCw3IEBAIHB1
YmxpYzoKICAgICBDb21tYW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgRWRp
dG9yQ29tbWFuZFNvdXJjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tbWFu
ZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSk7IC8vIFdvcmtzIHdpdGhvdXQgYSBmcmFtZS4KIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgRXZlbnQqIHRyaWdn
ZXJpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgYm9vbCBpbnNlcnRUZXh0Rm9yQ29uZmlybWVkQ29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB0ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOwogICAgIGJvb2wgaW5zZXJ0VGV4
dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0SW5zZXJ0
ZWRUZXh0LCBUZXh0RXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3NTYxMzQwZDZkOWQ4MDAwYjkzNzY0NzI3MjYwNWI0
YzRlZWRiNGRmLi45ZTgwMmE0NjAzNDIyNDkwYzkzOWE0ODEyZjUzOWE0ZmI2ZTk1ZjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIG1fdGV4dDsKIH07CiAKLXN0YXRpYyBpbmxpbmUg
RWRpdEFjdGlvbiBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChUeXBpbmdDb21tYW5kOjpFVHlw
aW5nQ29tbWFuZCBjb21tYW5kLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFR5cGluZ0Nv
bW1hbmQ6OlRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQorc3RhdGljIGlubGlu
ZSBFZGl0QWN0aW9uIGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OkVU
eXBpbmdDb21tYW5kIGNvbW1hbmQsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgVHlwaW5n
Q29tbWFuZDo6VGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUsIGJvb2wgaXNBdXRv
Y29tcGxldGlvbikKIHsKICAgICBpZiAoY29tcG9zaXRpb25UeXBlID09IFR5cGluZ0NvbW1hbmQ6
OlRleHRDb21wb3NpdGlvblBlbmRpbmcpIHsKICAgICAgICAgaWYgKGNvbW1hbmQgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0VGV4dCkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgaW5saW5lIEVk
aXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoVHlwaW5nQ29tbWFuZDo6RVR5cGlu
Z0NvbW1hbgogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVMaW5lRm9y
d2FyZDsKICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJkOwogICAg
IGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dDoKLSAgICAgICAgcmV0dXJuIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OworICAgICAgICByZXR1cm4gaXNBdXRvY29tcGxldGlvbiA/IEVk
aXRBY3Rpb25JbnNlcnRSZXBsYWNlbWVudCA6IEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0Owog
ICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0TGluZUJyZWFrOgogICAgICAgICByZXR1cm4g
RWRpdEFjdGlvblR5cGluZ0luc2VydExpbmVCcmVhazsKICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6
Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgZWRpdEFjdGlvbklzRGVsZXRlQnlUeXBpbmcoRWRpdEFjdGlvbiBhY3Rpb24pCiB9
CiAKIFR5cGluZ0NvbW1hbmQ6OlR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlw
aW5nQ29tbWFuZCBjb21tYW5kVHlwZSwgY29uc3QgU3RyaW5nICZ0ZXh0VG9JbnNlcnQsIE9wdGlv
bnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25U
eXBlIGNvbXBvc2l0aW9uVHlwZSkKLSAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1
bWVudCwgZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5
LCBjb21wb3NpdGlvblR5cGUpKQorICAgIDogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKGRvY3Vt
ZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwgZ3JhbnVsYXJpdHks
IGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pKQogICAgICwgbV9j
b21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0KHRleHRUb0luc2Vy
dCkKICAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCkBAIC0xNTAsNiAr
MTUwLDcgQEAgVHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQs
IEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBjb24KICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3Jh
bnVsYXJpdHkpCiAgICAgLCBtX2NvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpCiAgICAg
LCBtX3Nob3VsZEFkZFRvS2lsbFJpbmcob3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKQorICAgICwg
bV9pc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKQogICAgICwgbV9v
cGVuZWRCeUJhY2t3YXJkRGVsZXRlKGZhbHNlKQogICAgICwgbV9zaG91bGRSZXRhaW5BdXRvY29y
cmVjdGlvbkluZGljYXRvcihvcHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Ip
CiAgICAgLCBtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3Bl
bGxDaGVja2luZykKQEAgLTE2Nyw2ICsxNjgsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZVNlbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dENvbQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBp
bmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZnJhbWUp
KSB7CisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlv
bnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldENv
bXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFu
ZC0+c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENo
ZWNraW5nKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmRlbGV0ZVNlbGVjdGlvbihvcHRp
b25zICYgU21hcnREZWxldGUpOwpAQCAtMTgxLDYgKzE4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywg
VGV4dEdyCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewog
ICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlv
bihsYXN0VHlwaW5nQ29tbWFuZC5nZXQoKSwgZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+ZGVsZXRlS2V5UHJlc3Nl
ZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKTsKQEAgLTE5OCw2ICsyMDEs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50
JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLAogICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFy
YWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxh
c3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygq
ZnJhbWUpKSB7CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJy
ZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBmcmFtZSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+Zm9yd2FyZERlbGV0ZUtl
eVByZXNzZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMgJiBBZGRzVG9LaWxsUmluZyk7CkBAIC0yNTEs
NiArMjU1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgICAgIGxhc3RUeXBp
bmdDb21tYW5kLT5zZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uRm9ySW5zZXJ0aW9uKTsKICAg
ICAgICAgfQogCisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQt
PnNldENvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Iob3B0aW9ucyAm
IFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CkBAIC0yNjUsNiArMjcwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRU
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGlu
Z0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVu
dC5mcmFtZSgpKSkgeworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxl
dGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CiAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihv
cHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBsYXN0VHlw
aW5nQ29tbWFuZC0+aW5zZXJ0TGluZUJyZWFrQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpOwpAQCAt
Mjc3LDYgKzI4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3Vt
ZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewor
ICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihmYWxzZSk7CiAg
ICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0
aW9uTm9uZSk7CiAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5pbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4OCw2ICsyOTUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB2b2lkIFR5
cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQs
IE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RU
eXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZG9j
dW1lbnQuZnJhbWUoKSkpIHsKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2Nv
bXBsZXRpb24ob3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0
b3Iob3B0aW9ucyAmIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFz
dFR5cGluZ0NvbW1hbmQtPmluc2VydFBhcmFncmFwaFNlcGFyYXRvckFuZE5vdGlmeUFjY2Vzc2li
aWxpdHkoKTsKQEAgLTM5OCw2ICs0MDYsNyBAQCBTdHJpbmcgVHlwaW5nQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50VHlwaW5nRWRpdEFjdGlv
bikgewogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQ6CisgICAgY2FzZSBFZGl0
QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6CiAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0
UGVuZGluZ0NvbXBvc2l0aW9uOgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydEZpbmFs
Q29tcG9zaXRpb246CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CkBAIC00
NjksNyArNDc4LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiBib29sIFR5cGluZ0NvbW1hbmQ6Ondp
bGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdl
PiYmIHJhbmdlKQogewogICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7Ci0gICAgbV9j
dXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9IGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1h
bmRUeXBlLCBncmFudWxhcml0eSwgbV9jb21wb3NpdGlvblR5cGUpOworICAgIG1fY3VycmVudFR5
cGluZ0VkaXRBY3Rpb24gPSBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIG1fY29tcG9zaXRpb25UeXBlLCBtX2lzQXV0b2NvbXBsZXRpb24pOwogCiAg
ICAgaWYgKCFzaG91bGREZWZlcldpbGxBcHBseUNvbW1hbmRVbnRpbEFkZGluZ1R5cGluZ0NvbW1h
bmQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5oCmluZGV4IDUwODM1NDBmYTliODYyNmNmNDJmNzQwYmExYWZlYmUyYmJhYzk3ZDUuLmI5
NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
QWRkc1RvS2lsbFJpbmcgPSAxIDw8IDEsCiAgICAgICAgIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5k
aWNhdG9yID0gMSA8PCAyLAogICAgICAgICBQcmV2ZW50U3BlbGxDaGVja2luZyA9IDEgPDwgMywK
LSAgICAgICAgU21hcnREZWxldGUgPSAxIDw8IDQKKyAgICAgICAgU21hcnREZWxldGUgPSAxIDw8
IDQsCisgICAgICAgIElzQXV0b2NvbXBsZXRpb24gPSAxIDw8IDUsCiAgICAgfTsKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIE9wdGlvbnM7CiAKQEAgLTc5LDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5LCBib29sIHNob3VsZEFk
ZFRvS2lsbFJpbmcpOwogICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUp
OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvblR5cGUgdHlwZSkg
eyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0KKyAgICB2b2lkIHNldElzQXV0b2NvbXBsZXRp
b24oYm9vbCBpc0F1dG9jb21wbGV0aW9uKSB7IG1faXNBdXRvY29tcGxldGlvbiA9IGlzQXV0b2Nv
bXBsZXRpb247IH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldEVuZGluZ1NlbGVj
dGlvbk9uTGFzdEluc2VydENvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KTsKQEAgLTE1MSw2ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFRleHRDb21wb3NpdGlvblR5cGUg
bV9jb21wb3NpdGlvblR5cGU7CiAgICAgYm9vbCBtX3Nob3VsZEFkZFRvS2lsbFJpbmc7CiAgICAg
Ym9vbCBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlOworICAgIGJvb2wgbV9pc0F1dG9jb21wbGV0aW9u
OwogICAgIAogICAgIC8vIFVuZG9pbmcgYSBzZXJpZXMgb2YgYmFja3dhcmQgZGVsZXRlcyB3aWxs
IHJlc3RvcmUgYSBzZWxlY3Rpb24gYXJvdW5kIGFsbCBvZiB0aGUKICAgICAvLyBjaGFyYWN0ZXJz
IHRoYXQgd2VyZSBkZWxldGVkLCBidXQgb25seSBpZiB0aGUgdHlwaW5nIGNvbW1hbmQgYmVpbmcg
dW5kb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggZmUzYmY4ZDE0N2NkNjk5ZjY1YmNmOTNlYWY1OGY2Y2RjMzRiMmJm
YS4uMTJkZmUwNGM0OGViNWE0MWIwNWRiYWY4YjljYTkyZTM0OWU0YjY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICAKICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgdHJ1
ZSk7CiAgICAgaWYgKGNvcnJlY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigp
Lmluc2VydFRleHQoY29ycmVjdGlvbiwgMCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2Vy
dFRleHQoY29ycmVjdGlvbiwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlCiAg
ICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgY29ycmVjdGlvbkFw
cGxpZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGM0MjU5NWRjYWI3NGU4NDk2Yjg1NmZmYjA0YmEwYzI1ZjE5MjY0OTMuLjRlMjA4
N2IxYzQ2ZmU5NTRjMmY2NDZlYWNjODRhMTczYzY4YWRiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNi0xMC0y
OCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpT1Mg
YXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBldmVudCBvZiBpbnB1dFR5
cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg5ODc4
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0ZXN0IHN1cHBvcnQgZm9yIGluc2VydGluZyB0ZXh0IGNhbmRpZGF0ZXMgb24gaU9TIGluIHRo
ZSBmb3JtIG9mCisgICAgICAgIFVJU2NyaXB0Q29udHJvbGxlci5zZWxlY3RUZXh0Q2FuZGlkYXRl
QXRJbmRleChpbmRleCwgY2FsbGJhY2spLCB3aGljaCBzZWxlY3RzIHRoZSB0ZXh0IGNhbmRpZGF0
ZSBhdCBhIGdpdmVuCisgICAgICAgIGluZGV4ICh0aGlzIG5lZWRzIHRvIGJlIGEgdmFsdWUgYmV0
d2VlbiAwLTIgb24gaU9TKSBhbmQgZmlyZXMgdGhlIGNhbGxiYWNrIHdoZW4gZG9uZS4KKworICAg
ICAgICBUbyBpbXBsZW1lbnQgdGhpcywgd2Ugd2FpdCBmb3IgdGhlIHRleHQgcHJlZGljdGlvbiB2
aWV3IHRvIGhhdmUgcHJlZGljdGlvbnMgKHdlIGRldGVybWluZSB0aGlzIGJ5IHBvbGxpbmcgYXQg
YQorICAgICAgICBnaXZlbiBpbnRlcnZhbCkgYW5kIHRoZW4gdGFwIHRoZSBjZW50ZXIgb2YgdGhl
IHRleHQgcHJlZGljdGlvbiB2aWV3IGF0IHRoZSBnaXZlbiBpbmRleC4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgpOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
OjpzZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6d2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdElu
ZGV4KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3RUZXh0Q2FuZGlkYXRl
QXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZvclRleHRQ
cmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToKKwogMjAxNi0xMC0yNyAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIwNzk5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGE5ZDNjNjNjYzc3OGQ5N2MyYzBjMmUw
YzZhYzNiZTA1ZWU3NTkwMDMuLjVlYWM4ZDg3YWU4ZjgxMzYyZTI1MmI0YzE0MDIyZDQxODk0ZDdj
MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQpAQCAtMTE2LDYgKzExNiwxMCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlw
ZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZQogewog
fQogCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgo
bG9uZywgSlNWYWx1ZVJlZikKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURv
d25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGwKaW5kZXggOTg0ZGNmNmExNmQ5MGQ5NTBjY2I5NjFiZDgzODZjZDFkMDM3NjIzNi4uMmVjOTQ5
ODU1ZGFmODhkZWY3NGIyOTYwZjM1MjM5OTkwMzlkNTU4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC00OSw2ICs0OSw4IEBAIGludGVyZmFjZSBVSVNj
cmlwdENvbnRyb2xsZXIgewogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChE
T01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsK
IAorICAgIHZvaWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgb2JqZWN0
IGNhbGxiYWNrKTsKKwogICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVz
ZXIgZXZlbnRzIGluIEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0
b3IubW0uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBk
b3duIGZvbGxvd2VkIGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KICAgICAvLyAg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDA0M2NkNzM2YzNiYzRmMjQ3MDMyNGQ3
MjQyMzFmMTdiN2UyOWNlMC4uYmVjMjE3MTM2MDcwODk0ZThiOWE0YjA0NjUxMWY3ZDkwYTAxYTM5
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMTQsNiArMjE0LDE0IEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1Jl
ZiwgSlNWYWx1ZVJlZikKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdFRl
eHRDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgsIEpTVmFsdWVSZWYgY2FsbGJhY2spCit7Cit9
CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp3YWl0Rm9yVGV4dFByZWRpY3Rpb25zVmlld0Fu
ZFNlbGVjdENhbmRpZGF0ZUF0SW5kZXgobG9uZywgdW5zaWduZWQsIGZsb2F0KQoreworfQorCiB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0
cmluZ1JlZiwgSlNWYWx1ZVJlZikKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYWY2
MDk1MDQ0NTgwYjAyMWFmYmFjMzZiM2U2ZmZkYmMxMzVlMWQ5YS4uZDZkNzk0NjUwNWQ3Zjc0NzAz
MDRkYmEwY2RhZjk5NGVlNWRjNDgwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTcwLDYg
KzcwLDggQEAgcHVibGljOgogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChK
U1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5
VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKTsKIAorICAgIHZvaWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBp
bmRleCwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5
QmFyTmV4dCgpOwogICAgIHZvaWQga2V5Ym9hcmRBY2Nlc3NvcnlCYXJQcmV2aW91cygpOwogICAg
IApAQCAtMTM2LDYgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgSlNDbGFzc1JlZiB3cmFwcGVyQ2xh
c3MoKSBmaW5hbDsKIAogICAgIEpTT2JqZWN0UmVmIG9iamVjdEZyb21SZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIGNvbnN0OworICAgIHZvaWQgd2FpdEZvclRleHRQcmVkaWN0aW9uc1Zp
ZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgsIHVuc2lnbmVkIGNhbGxiYWNr
SUQsIGZsb2F0IGludGVydmFsKTsKIAogICAgIFVJU2NyaXB0Q29udGV4dCogbV9jb250ZXh0Owog
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5oCmluZGV4IGVmOTE0YjI5ZWFkMjM3
YzFmZmIwZGI2MmUwMjc5ZTJmZDA1YTZlODYuLjJhZTY1ZTE0ODE3N2I0M2MyNmI4MzljY2I0NzYw
YmMwYjQ5MTk4MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0
U1BJLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlLaXRTUEkuaApAQCAtNTIs
NiArNTIsMTEgQEAKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKK0BpbnRl
cmZhY2UgVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IDogVUlWaWV3CisrIChVSUtleWJvYXJkUHJl
ZGljdGlvblZpZXcgKilhY3RpdmVJbnN0YW5jZTsKKy0gKEJPT0wpaGFzUHJlZGljdGlvbnM7CitA
ZW5kCisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNlbmRpZiAvLyBVSUtpdFNQSV9oCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggYTg4ODY5OThlYTAyODNkMWYzZTA0Y2Y5NDJlNjczNTgxNTAyMzM1ZC4uZTk0YTYx
NzBjZjIwMWEyZDU3NTA1YzkxNzdlNjY2NzQxNjRjNmI0NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMjU1LDYgKzI1
NSwzMyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9h
cmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbAogICAgIH1dOwogfQogCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgSlNW
YWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgdGV4dFByZWRpY3Rp
b25zUG9sbGluZ0ludGVydmFsID0gMC4xOworICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2Nv
bnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNp
c3RlbnQpOworICAgIHdhaXRGb3JUZXh0UHJlZGljdGlvbnNWaWV3QW5kU2VsZWN0Q2FuZGlkYXRl
QXRJbmRleChpbmRleCwgY2FsbGJhY2tJRCwgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFs
KTsKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OndhaXRGb3JUZXh0UHJlZGljdGlvbnNW
aWV3QW5kU2VsZWN0Q2FuZGlkYXRlQXRJbmRleChsb25nIGluZGV4LCB1bnNpZ25lZCBjYWxsYmFj
a0lELCBmbG9hdCBpbnRlcnZhbCkKK3sKKyAgICBpZiAoIVtbVUlLZXlib2FyZFByZWRpY3Rpb25W
aWV3IGFjdGl2ZUluc3RhbmNlXSBoYXNQcmVkaWN0aW9uc10pIHsKKyAgICAgICAgZGlzcGF0Y2hf
YWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgaW50ZXJ2YWwgKiBOU0VDX1BF
Ul9TRUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgeworICAgICAgICAgICAgd2Fp
dEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGluZGV4LCBj
YWxsYmFja0lELCBpbnRlcnZhbCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgUGxhdGZvcm1XS1ZpZXcgd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBDR1JlY3QgcHJlZGljdGlv
blZpZXdGcmFtZSA9IFtVSUtleWJvYXJkUHJlZGljdGlvblZpZXcgYWN0aXZlSW5zdGFuY2VdLmZy
YW1lOworICAgIC8vIFRoaXMgYXNzdW1lcyB0aGVyZSBhcmUgMyBwcmVkaWN0ZWQgdGV4dCBjZWxs
cyBvZiBlcXVhbCB3aWR0aCwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gaU9TLgorICAgIGZsb2F0IG9m
ZnNldFggPSAoaW5kZXggKiAyICsgMSkgKiBDR1JlY3RHZXRXaWR0aChwcmVkaWN0aW9uVmlld0Zy
YW1lKSAvIDY7CisgICAgZmxvYXQgb2Zmc2V0WSA9IENHUmVjdEdldEhlaWdodCh3ZWJWaWV3Lndp
bmRvdy5mcmFtZSkgLSBDR1JlY3RHZXRIZWlnaHQoW1VJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyBh
Y3RpdmVJbnN0YW5jZV0uc3VwZXJ2aWV3LmZyYW1lKSArIENHUmVjdEdldEhlaWdodChwcmVkaWN0
aW9uVmlld0ZyYW1lKSAvIDI7CisgICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVu
dEdlbmVyYXRvcl0gdGFwOkNHUG9pbnRNYWtlKG9mZnNldFgsIG9mZnNldFkpIGNvbXBsZXRpb25C
bG9jazpeeworICAgICAgICBpZiAobV9jb250ZXh0KQorICAgICAgICAgICAgbV9jb250ZXh0LT5h
c3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30KKwogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmRpc21pc3NGb3JtQWNjZXNzb3J5VmlldygpCiB7CiAgICAgVGVzdFJ1bm5l
cldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZjdlYzQ2ZDhjODA4ZjY3YTIxZjI4NzM0
ZDc2ZDY4NWM3MDViNmMzLi45ODAyZDY2MTI3MzE3MjA5M2E3ZjE1YzZkMWI1YjZjMTQ4NmNhMTc0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMjggIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgaU9TIGF1dG9jb3JyZWN0aW9uIGRvZXMgbm90
IHRyaWdnZXIgYW4gaW5wdXQgZXZlbnQgb2YgaW5wdXRUeXBlICJpbnNlcnRSZXBsYWNlbWVudFRl
eHQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQw
NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4OTg3ODEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiBuZXcgdW5pdCB0ZXN0cyB2ZXJp
ZnlpbmcgdGhhdCBjYW5kaWRhdGUgdGV4dCBpbnNlcnRpb24gY2FuIGJlIHByZXZlbnRlZCB2aWEg
YmVmb3JlaW5wdXQgZXZlbnRzLCBhbmQgdGhhdAorICAgICAgICBiZWZvcmVpbnB1dCBhbmQgaW5w
dXQgZXZlbnRzIG9mIHR5cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIgYXJlIGZpcmVkIHdoZW4g
aW5zZXJ0aW5nIGNhbmRpZGF0ZSB0ZXh0IG9uIGlPUy4KKworICAgICAgICAqIGZhc3QvZXZlbnRz
L2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5wdXQt
ZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNlbWVudC10ZXh0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50
cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0yNyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0ICJp
bnNlcnRGcm9tRHJvcCIgYW5kICJkZWxldGVCeURyYWciIGZvciB0aGUgSW5wdXRFdmVudCBzcGVj
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2
ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUt
aW5zZXJ0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGQwYzJlODZjOGU4M2NmZDcyZDlm
NWZmODlmMDViMmZmNjMwMDEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworVG8gbWFudWFsbHkgdGVzdCwgdHlwZSAn
dCcgaW50byB0aGUgY29udGVudGVkaXRhYmxlIGFuZCB0cnkgdG8gc2VsZWN0IGEgY2FuZGlkYXRl
LiBUaGUgcmVwbGFjZW1lbnQgdGV4dCBzaG91bGQgbm90IGJlIGluc2VydGVkLgorCitQQVNTOiBU
aGUgcmVwbGFjZW1lbnQgdGV4dCB3YXMgcHJldmVudGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRpZGF0
ZS1pbnNlcnRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5w
dXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIx
YWY0OTAyZTczOGRkMGNjNTZjMzNjZmNkNzQ3Y2Y5MGZhNTBiNmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50
LWNhbmRpZGF0ZS1pbnNlcnRpb24uaHRtbApAQCAtMCwwICsxLDkyIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAt
LT4KKworPGh0bWw+CisKKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBpZD0i
dWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3
YXJlS2V5Ym9hcmQoInQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250
cm9sbGVyLnNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KDEsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgkeCwgJHksIGZ1bmN0aW9u
KCkge30pOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAg
ICAgICAgdmFyIHByb2dyZXNzID0gMDsKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50VGV4dCA9ICIi
OworICAgICAgICBsZXQgd3JpdGUgPSAobWVzc2FnZSkgPT4gb3V0cHV0LmlubmVySFRNTCArPSAo
bWVzc2FnZSArICI8YnI+Iik7CisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkgeworICAg
ICAgICAgICAgbGV0IHJlY3QgPSBlZGl0YWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAg
ICAgICAgICAgIGxldCBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidWktc2NyaXB0
IikudGV4dDsKKyAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKCIkeCIsIHJlY3Qu
bGVmdCArIHJlY3Qud2lkdGggLyAyKTsKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHQucmVwbGFj
ZSgiJHkiLCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMik7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50UHJvZ3Jlc3MoKQorICAgICAgICB7
CisgICAgICAgICAgICBwcm9ncmVzcysrOworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lciB8fCBwcm9ncmVzcyAhPT0gMikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRh
YmxlLnZhbHVlLmluZGV4T2YocmVwbGFjZW1lbnRUZXh0KSA9PSAtMSkKKyAgICAgICAgICAgICAg
ICAgICAgd3JpdGUoYFBBU1M6IFRoZSByZXBsYWNlbWVudCB0ZXh0IHdhcyBwcmV2ZW50ZWQuYCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB3cml0ZShgRkFJTDog
VGhlIGlucHV0IHZhbHVlICR7ZWRpdGFibGUudmFsdWV9IHNob3VsZCBub3QgY29udGFpbiByZXBs
YWNlbWVudCB0ZXh0ICR7cmVwbGFjZW1lbnRUZXh0fS5gKTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVkaXRhYmxl
LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IiwgcHJldmVudEJlZm9yZUlucHV0KTsKKyAg
ICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAg
ICAgIGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHByZXZlbnRCZWZvcmVJbnB1dChldmVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIp
IHsKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudFRleHQgPSBldmVudC5kYXRhOworICAgICAg
ICAgICAgICAgIGlmICghcmVwbGFjZW1lbnRUZXh0KQorICAgICAgICAgICAgICAgICAgICB3cml0
ZSgiRkFJTDogVGhlIHJlcGxhY2VtZW50IHRleHQgaW5wdXQgZXZlbnQgbGFja3MgZGF0YS4iKTsK
KyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAg
IGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIDwv
c2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAjZWRpdGFibGUgeworICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVm
dDogMDsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgICA8L3N0eWxlPgor
PC9oZWFkPgorCis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPXJ1blRlc3QoKT4KKyAg
ICA8aW5wdXQgY29udGVudGVkaXRhYmxlIGlkPSJlZGl0YWJsZSI+PC9pbnB1dD4KKyAgICA8cD5U
byBtYW51YWxseSB0ZXN0LCB0eXBlICd0JyBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUgYW5kIHRy
eSB0byBzZWxlY3QgYSBjYW5kaWRhdGUuIFRoZSByZXBsYWNlbWVudCB0ZXh0IHNob3VsZCBub3Qg
YmUgaW5zZXJ0ZWQuPC9wPgorICAgIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8L2JvZHk+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9pbnB1dC1l
dmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZhNDBmOWY0NzQwODJkZGVhMTgwYjFiODJiZDk3ZTNjNTE5
NDlmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9pbnB1
dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NSBAQAorVG8gbWFudWFsbHkgdGVzdCwgdHlwZSAndCcgaW50byB0aGUgY29udGVudGVkaXRhYmxl
IGFuZCB0cnkgdG8gc2VsZWN0IGEgY2FuZGlkYXRlLiBUaGUgb3V0cHV0IHNob3VsZCBpbmRpY2F0
ZSB0aGF0IHRoZSBiZWZvcmVpbnB1dCBhbmQgaW5wdXQgZXZlbnRzIGZvciB0aGUgdGV4dCByZXBs
YWNlbWVudCB3ZXJlIGhhbmRsZWQsIGFuZCB0aGF0IHRoZSByYW5nZSBvZiB0aGUgYmVmb3JlaW5w
dXQgZXZlbnQgaXMgZnJvbSAwIHRvIDEuCisKK1BBU1M6IEhhbmRsZWQgdGV4dCByZXBsYWNlbWVu
dCBiZWZvcmUgaW5wdXQgZXZlbnQgd2l0aCByYW5nZTogWzAsIDFdLgorUEFTUzogSGFuZGxlZCB0
ZXh0IHJlcGxhY2VtZW50IGlucHV0IGV2ZW50LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNlbWVudC10ZXh0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNl
bWVudC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkOWE3NzRlYzM0ODM5OGY4OTgwNTE5NGI5MjVh
ZDc1OWY1NzY1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9pbnB1dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQuaHRtbApAQCAtMCwwICsxLDkw
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+CisKKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+
CisgICAgPHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAg
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNob3dLZXlib2FyZENh
bGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnR5cGVD
aGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoInQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdWlDb250cm9sbGVyLnNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KDEsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0
Q29tcGxldGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2lu
dCgkeCwgJHksIGZ1bmN0aW9uKCkge30pOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0Pgor
CisgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHByb2dyZXNzID0gMDsKKyAgICAgICAgbGV0IHdy
aXRlID0gKG1lc3NhZ2UpID0+IG91dHB1dC5pbm5lckhUTUwgKz0gKG1lc3NhZ2UgKyAiPGJyPiIp
OworICAgICAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpIHsKKyAgICAgICAgICAgIGxldCByZWN0
ID0gZWRpdGFibGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICBsZXQgc2Ny
aXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisgICAgICAg
ICAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgiJHgiLCByZWN0LmxlZnQgKyByZWN0LndpZHRo
IC8gMik7CisgICAgICAgICAgICByZXR1cm4gc2NyaXB0LnJlcGxhY2UoIiR5IiwgcmVjdC50b3Ag
KyByZWN0LmhlaWdodCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGluY3JlbWVudFByb2dyZXNzKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJv
Z3Jlc3MrKzsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgcHJvZ3Jlc3Mg
IT09IDMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGVkaXRhYmxlLnRleHRDb250ZW50ID0gIiI7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7
CisgICAgICAgICAgICBlZGl0YWJsZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGxvZ0lucHV0
RXZlbnQpOworICAgICAgICAgICAgZWRpdGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5w
dXQiLCBsb2dJbnB1dEV2ZW50KTsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIg
fHwgIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGluY3JlbWVudFByb2dyZXNzKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvZ0lucHV0RXZlbnQoZXZl
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgIT09ICJpbnNl
cnRSZXBsYWNlbWVudFRleHQiKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaWYgKGV2ZW50LnR5cGUgPT09ICJiZWZvcmVpbnB1dCIpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgZmlyc3RSYW5nZSA9IGV2ZW50LmdldFRhcmdldFJhbmdlcygpWzBdOworICAgICAgICAgICAg
ICAgIHdyaXRlKGBQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFjZW1lbnQgYmVmb3JlIGlucHV0IGV2
ZW50IHdpdGggcmFuZ2U6IFske2ZpcnN0UmFuZ2Uuc3RhcnRPZmZzZXR9LCAke2ZpcnN0UmFuZ2Uu
ZW5kT2Zmc2V0fV0uYCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB3cml0
ZShgUEFTUzogSGFuZGxlZCB0ZXh0IHJlcGxhY2VtZW50IGlucHV0IGV2ZW50LmApOworICAgICAg
ICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAg
IDxzdHlsZT4KKyAgICAjZWRpdGFibGUgeworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVmdDogMDsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8
Ym9keSBzdHlsZT0ibWFyZ2luOiAwOyIgb25sb2FkPXJ1blRlc3QoKT4KKyAgICA8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBpZD0iZWRpdGFibGUiPjwvZGl2PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3Qs
IHR5cGUgJ3QnIGludG8gdGhlIGNvbnRlbnRlZGl0YWJsZSBhbmQgdHJ5IHRvIHNlbGVjdCBhIGNh
bmRpZGF0ZS4gVGhlIG91dHB1dCBzaG91bGQgaW5kaWNhdGUgdGhhdCB0aGUgYmVmb3JlaW5wdXQg
YW5kIGlucHV0IGV2ZW50cyBmb3IgdGhlIHRleHQgcmVwbGFjZW1lbnQgd2VyZSBoYW5kbGVkLCBh
bmQgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIGJlZm9yZWlucHV0IGV2ZW50IGlzIGZyb20gMCB0byAx
LjwvcD4KKyAgICA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPC9ib2R5PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293249</attachid>
            <date>2016-10-28 17:08:12 -0700</date>
            <delta_ts>2016-10-28 17:08:12 -0700</delta_ts>
            <desc>[For EWS] Fix iOS OpenSource build.</desc>
            <filename>bug-164077-20161028170421.patch</filename>
            <type>text/plain</type>
            <size>35204</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uOTExODE4MTc2MWI4MDgzNDc5NjM2ZTMwOWE5MDNl
YWQzNGQyZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGlPUyBhdXRvY29y
cmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAiaW5z
ZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk4NzgxMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBjYW5k
aWRhdGUgaW5zZXJ0aW9uIG9uIGlPUywgc28gdGhhdCBpdCBmaXJlcyBpbnB1dCBldmVudHMgb2Yg
dHlwZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IiBhbmQgYWRkcyB0d28KKyAgICAgICAgaU9TIHVu
aXQgdGVzdHMgY292ZXJpbmcgdGhpcyBjaGFuZ2UgYXMgd2VsbCBhcyB0aGUgdGVzdCBpbmZyYXN0
cnVjdHVyZSBuZWVkZWQgdG8gc3VwcG9ydCB0aGVzZSB0ZXN0cy4gU2VlCisgICAgICAgIGNvbW1l
bnRzIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRz
L2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBs
YWNlbWVudC10ZXh0Lmh0bWwKKworICAgICAgICAqIGRvbS9UZXh0RXZlbnQuaDoKKworICAgICAg
ICBBZGRzIGlzQXV0b2NvbXBsZXRpb24oKSB0byBUZXh0RXZlbnQsIGFzIHdlbGwgYXMgdGhlIFRl
eHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24gdGV4dCBpbnB1dCB0eXBlLiBXaGVuIHRoZQorICAg
ICAgICBFZGl0b3IgaGFuZGxlcyB0aGlzIFRleHRFdmVudCwgaXQgd2lsbCB1c2UgdGhpcyBpbmZv
cm1hdGlvbiB3aGVuIGNyZWF0aW5nIG9yIG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyB0eXBp
bmcKKyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRB
Y3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKworICAgICAgICBOb3cgdGFrZXMgd2hldGhlciB0aGUg
Y29tbWFuZCBpcyBhdXRvY29ycmVjdGlvbiBpbnRvIGFjY291bnQuIElmIHNvLCB0aGUgY29ycmVz
cG9uZGluZyBlZGl0IGFjdGlvbiBzaG91bGQgYmUKKyAgICAgICAgRWRpdEFjdGlvbkluc2VydFJl
cGxhY2VtZW50IHJhdGhlciB0aGFuIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0LgorCisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6
Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQpOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorCisgICAgICAgIEFkZHMgYSBuZXcgVHlwaW5nQ29t
bWFuZCBvcHRpb24sIElzQXV0b2NvbXBsZXRpb24uCisKIDIwMTYtMTAtMjcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCAiaW5zZXJ0RnJv
bURyb3AiIGFuZCAiZGVsZXRlQnlEcmFnIiBmb3IgdGhlIElucHV0RXZlbnQgc3BlYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGFhZWY4YzRmMGExOTUwNDMwZWIyZWRkOGRlMjdjOWZkYjQ5ZjNkZDAuLjgyOGIxOGIz
NWNlZjJmOTMzM2M1ZGMwODIxODA0NTNjMjNmYmFlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNi0xMC0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBpT1MgYXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBl
dmVudCBvZiBpbnB1dFR5cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjg5ODc4MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU21hbGwgdHdlYWsgdG8gbWFyayB0ZXh0IGluc2VydGlvbiB3aGVuIGF1dG9j
b3JyZWN0aW5nIGFzIHN1Y2gsIGFzIG9wcG9zZWQgdG8gcmVndWxhciBrZXlib2FyZCBpbnB1dC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24pOgorCiAyMDE2LTEw
LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJbnB1dEV2
ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCA5NThiZDc0ZTVmY2Y3MzZhNGQzZjJk
YjRjOGUwYmNjZWY0NmZlNjRmLi4wZDI1NzFiMjE1OGVhZDFjMTgyNGIwNGJmMGVmNjQ5NWYyZDI5
ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1Bhc3RlKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5
cGUgPT0gVGV4dEV2ZW50SW5wdXRQYXN0ZTsgfQogICAgICAgICBib29sIGlzRHJvcCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5wdXRUeXBlID09IFRleHRFdmVudElucHV0RHJvcDsgfQogICAgICAgICBi
b29sIGlzRGljdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50
SW5wdXREaWN0YXRpb247IH0KKyAgICAgICAgYm9vbCBpc0F1dG9jb21wbGV0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXRBdXRvY29tcGxldGlvbjsgfQog
CiAgICAgICAgIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRTbWFydFJlcGxhY2U7IH0KICAgICAgICAgYm9vbCBzaG91bGRNYXRjaFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRNYXRjaFN0eWxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50
SW5wdXRUeXBlLmgKaW5kZXggOGJlMjMzYzRiZmYwYmE1ZjVmMmY5NmQ1MDMwZDE4OGI1YzU2YmE3
YS4uMGYyM2Y1ZmFkZDZkYTczYWNmZDA5NGQ1MjA5YTM5MjAzNDg4ZmNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaApAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gVGV4dEV2ZW50SW5wdXRUeXBlIHsKICAgICBUZXh0RXZlbnRJbnB1
dEtleWJvYXJkLCAvLyBhbnkgbmV3bGluZSBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBsaW5l
IGJyZWFrcyBvbmx5LCBub3QgcGFyYWdyYXBoIHNlcGFyYXRvcnMuCisgICAgVGV4dEV2ZW50SW5w
dXRBdXRvY29tcGxldGlvbiwKICAgICBUZXh0RXZlbnRJbnB1dExpbmVCcmVhaywgLy8gYW55IHRh
YiBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGFyZSBiYWNrdGFicy4KICAgICBUZXh0RXZlbnRJbnB1
dENvbXBvc2l0aW9uLAogICAgIFRleHRFdmVudElucHV0QmFja1RhYiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCAxOGVjMGQ5MDVhNTY5OTk0YWZjNTk5YjY3NjE1ZWExYTQ0MzIzZGI4
Li44ZThlZDdiMzk3MzFlZDg3ZmY4ZmYwZjEzNzkxYjEyZTc4NzBmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0xMjEzLDkgKzEyMTMsOSBAQCB2b2lkIEVkaXRvcjo6Y2xlYXIo
KQogICAgIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciA9IEVkaXRvclBhcmFncmFwaFNlcGFy
YXRvcklzRGl2OwogfQogCi1ib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCitib29sIEVkaXRvcjo6aW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlw
ZSBpbnB1dFR5cGUpCiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxl
VGV4dElucHV0RXZlbnQodGV4dCwgdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICByZXR1cm4gbV9mcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0SW5wdXRFdmVudCh0ZXh0LCB0cmlnZ2VyaW5nRXZl
bnQsIGlucHV0VHlwZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0Rm9yQ29uZmlybWVk
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAgYm9v
bCBFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgc2VsZWN0SW4KICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpTZWxlY3RJbnNlcnRlZFRleHQ7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG9j
b3JyZWN0aW9uV2FzQXBwbGllZCkKICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBp
bmdDb21tYW5kOjpSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcjsKKyAgICAgICAgICAgICAg
ICBpZiAodHJpZ2dlcmluZ0V2ZW50ICYmIHRyaWdnZXJpbmdFdmVudC0+aXNBdXRvY29tcGxldGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1hbmQ6OklzQXV0
b2NvbXBsZXRpb247CiAgICAgICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChk
b2N1bWVudCwgdGV4dCwgc2VsZWN0aW9uLCBvcHRpb25zLCB0cmlnZ2VyaW5nRXZlbnQgJiYgdHJp
Z2dlcmluZ0V2ZW50LT5pc0NvbXBvc2l0aW9uKCkgPyBUeXBpbmdDb21tYW5kOjpUZXh0Q29tcG9z
aXRpb25GaW5hbCA6IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1ZjExZTM1YzY0ZDExZWU4MTM4
OWE1OWYzYzM3OTNmNjQ5NTA5NmUxLi5lMjM0YThhYjkxODdiZDkzYjUyOWE5ZjUwNDE5NmQ3ODZm
Nzc3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSAiVGV4dEV2ZW50SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgpAQCAtMjM5LDcgKzI0MCw3IEBAIHB1
YmxpYzoKICAgICBDb21tYW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgRWRp
dG9yQ29tbWFuZFNvdXJjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY29tbWFu
ZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSk7IC8vIFdvcmtzIHdpdGhvdXQgYSBmcmFtZS4KIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgRXZlbnQqIHRyaWdn
ZXJpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7
CiAgICAgYm9vbCBpbnNlcnRUZXh0Rm9yQ29uZmlybWVkQ29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB0ZXh0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGluc2VydERpY3RhdGVkVGV4dChjb25z
dCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOwogICAgIGJvb2wgaW5zZXJ0VGV4
dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0SW5zZXJ0
ZWRUZXh0LCBUZXh0RXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCA3NTYxMzQwZDZkOWQ4MDAwYjkzNzY0NzI3MjYwNWI0
YzRlZWRiNGRmLi45ZTgwMmE0NjAzNDIyNDkwYzkzOWE0ODEyZjUzOWE0ZmI2ZTk1ZjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcmIG1fdGV4dDsKIH07CiAKLXN0YXRpYyBpbmxpbmUg
RWRpdEFjdGlvbiBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChUeXBpbmdDb21tYW5kOjpFVHlw
aW5nQ29tbWFuZCBjb21tYW5kLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFR5cGluZ0Nv
bW1hbmQ6OlRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQorc3RhdGljIGlubGlu
ZSBFZGl0QWN0aW9uIGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OkVU
eXBpbmdDb21tYW5kIGNvbW1hbmQsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgVHlwaW5n
Q29tbWFuZDo6VGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUsIGJvb2wgaXNBdXRv
Y29tcGxldGlvbikKIHsKICAgICBpZiAoY29tcG9zaXRpb25UeXBlID09IFR5cGluZ0NvbW1hbmQ6
OlRleHRDb21wb3NpdGlvblBlbmRpbmcpIHsKICAgICAgICAgaWYgKGNvbW1hbmQgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0VGV4dCkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgaW5saW5lIEVk
aXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoVHlwaW5nQ29tbWFuZDo6RVR5cGlu
Z0NvbW1hbgogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVMaW5lRm9y
d2FyZDsKICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJkOwogICAg
IGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dDoKLSAgICAgICAgcmV0dXJuIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OworICAgICAgICByZXR1cm4gaXNBdXRvY29tcGxldGlvbiA/IEVk
aXRBY3Rpb25JbnNlcnRSZXBsYWNlbWVudCA6IEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0Owog
ICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0TGluZUJyZWFrOgogICAgICAgICByZXR1cm4g
RWRpdEFjdGlvblR5cGluZ0luc2VydExpbmVCcmVhazsKICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6
Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgZWRpdEFjdGlvbklzRGVsZXRlQnlUeXBpbmcoRWRpdEFjdGlvbiBhY3Rpb24pCiB9
CiAKIFR5cGluZ0NvbW1hbmQ6OlR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlw
aW5nQ29tbWFuZCBjb21tYW5kVHlwZSwgY29uc3QgU3RyaW5nICZ0ZXh0VG9JbnNlcnQsIE9wdGlv
bnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25U
eXBlIGNvbXBvc2l0aW9uVHlwZSkKLSAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1
bWVudCwgZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5
LCBjb21wb3NpdGlvblR5cGUpKQorICAgIDogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKGRvY3Vt
ZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwgZ3JhbnVsYXJpdHks
IGNvbXBvc2l0aW9uVHlwZSwgb3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pKQogICAgICwgbV9j
b21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAgICAsIG1fdGV4dFRvSW5zZXJ0KHRleHRUb0luc2Vy
dCkKICAgICAsIG1fY3VycmVudFRleHRUb0luc2VydCh0ZXh0VG9JbnNlcnQpCkBAIC0xNTAsNiAr
MTUwLDcgQEAgVHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQs
IEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBjb24KICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3Jh
bnVsYXJpdHkpCiAgICAgLCBtX2NvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpCiAgICAg
LCBtX3Nob3VsZEFkZFRvS2lsbFJpbmcob3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKQorICAgICwg
bV9pc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKQogICAgICwgbV9v
cGVuZWRCeUJhY2t3YXJkRGVsZXRlKGZhbHNlKQogICAgICwgbV9zaG91bGRSZXRhaW5BdXRvY29y
cmVjdGlvbkluZGljYXRvcihvcHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Ip
CiAgICAgLCBtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3Bl
bGxDaGVja2luZykKQEAgLTE2Nyw2ICsxNjgsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZVNlbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dENvbQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBp
bmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZnJhbWUp
KSB7CisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlv
bnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldENv
bXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFu
ZC0+c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENo
ZWNraW5nKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmRlbGV0ZVNlbGVjdGlvbihvcHRp
b25zICYgU21hcnREZWxldGUpOwpAQCAtMTgxLDYgKzE4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywg
VGV4dEdyCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewog
ICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlv
bihsYXN0VHlwaW5nQ29tbWFuZC5nZXQoKSwgZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+ZGVsZXRlS2V5UHJlc3Nl
ZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKTsKQEAgLTE5OCw2ICsyMDEs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50
JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLAogICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFy
YWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxh
c3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygq
ZnJhbWUpKSB7CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJy
ZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBmcmFtZSk7CisgICAgICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRv
Y29tcGxldGlvbik7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9zaXRp
b25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+Zm9yd2FyZERlbGV0ZUtl
eVByZXNzZWQoZ3JhbnVsYXJpdHksIG9wdGlvbnMgJiBBZGRzVG9LaWxsUmluZyk7CkBAIC0yNTEs
NiArMjU1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKICAgICAgICAgICAgIGxhc3RUeXBp
bmdDb21tYW5kLT5zZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uRm9ySW5zZXJ0aW9uKTsKICAg
ICAgICAgfQogCisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQt
PnNldENvbXBvc2l0aW9uVHlwZShjb21wb3NpdGlvblR5cGUpOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Iob3B0aW9ucyAm
IFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1h
bmQtPnNldFNob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKG9wdGlvbnMgJiBQcmV2ZW50U3BlbGxD
aGVja2luZyk7CkBAIC0yNjUsNiArMjcwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRU
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXMKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGlu
Z0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVu
dC5mcmFtZSgpKSkgeworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxl
dGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CiAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihv
cHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBsYXN0VHlw
aW5nQ29tbWFuZC0+aW5zZXJ0TGluZUJyZWFrQW5kTm90aWZ5QWNjZXNzaWJpbGl0eSgpOwpAQCAt
Mjc3LDYgKzI4Myw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGluZUJyZWFrKERvY3Vt
ZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVudC5mcmFtZSgpKSkgewor
ICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihmYWxzZSk7CiAg
ICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0
aW9uTm9uZSk7CiAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5pbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI4OCw2ICsyOTUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB2b2lkIFR5
cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQs
IE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RU
eXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZygqZG9j
dW1lbnQuZnJhbWUoKSkpIHsKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2Nv
bXBsZXRpb24ob3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pOwogICAgICAgICBsYXN0VHlwaW5n
Q29tbWFuZC0+c2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvbk5vbmUpOwogICAgICAg
ICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0
b3Iob3B0aW9ucyAmIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKTsKICAgICAgICAgbGFz
dFR5cGluZ0NvbW1hbmQtPmluc2VydFBhcmFncmFwaFNlcGFyYXRvckFuZE5vdGlmeUFjY2Vzc2li
aWxpdHkoKTsKQEAgLTM5OCw2ICs0MDYsNyBAQCBTdHJpbmcgVHlwaW5nQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50VHlwaW5nRWRpdEFjdGlv
bikgewogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQ6CisgICAgY2FzZSBFZGl0
QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6CiAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0
UGVuZGluZ0NvbXBvc2l0aW9uOgogICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydEZpbmFs
Q29tcG9zaXRpb246CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CkBAIC00
NjksNyArNDc4LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiBib29sIFR5cGluZ0NvbW1hbmQ6Ondp
bGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPFJhbmdl
PiYmIHJhbmdlKQogewogICAgIG1fY3VycmVudFRleHRUb0luc2VydCA9IHRleHQ7Ci0gICAgbV9j
dXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9IGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1h
bmRUeXBlLCBncmFudWxhcml0eSwgbV9jb21wb3NpdGlvblR5cGUpOworICAgIG1fY3VycmVudFR5
cGluZ0VkaXRBY3Rpb24gPSBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwg
Z3JhbnVsYXJpdHksIG1fY29tcG9zaXRpb25UeXBlLCBtX2lzQXV0b2NvbXBsZXRpb24pOwogCiAg
ICAgaWYgKCFzaG91bGREZWZlcldpbGxBcHBseUNvbW1hbmRVbnRpbEFkZGluZ1R5cGluZ0NvbW1h
bmQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5oCmluZGV4IDUwODM1NDBmYTliODYyNmNmNDJmNzQwYmExYWZlYmUyYmJhYzk3ZDUuLmI5
NDAxYjVlZTY2MjNlZTE0ZTA0NTI3Mzc2OGY3ODNkMzY2YjdlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
QWRkc1RvS2lsbFJpbmcgPSAxIDw8IDEsCiAgICAgICAgIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5k
aWNhdG9yID0gMSA8PCAyLAogICAgICAgICBQcmV2ZW50U3BlbGxDaGVja2luZyA9IDEgPDwgMywK
LSAgICAgICAgU21hcnREZWxldGUgPSAxIDw8IDQKKyAgICAgICAgU21hcnREZWxldGUgPSAxIDw8
IDQsCisgICAgICAgIElzQXV0b2NvbXBsZXRpb24gPSAxIDw8IDUsCiAgICAgfTsKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIE9wdGlvbnM7CiAKQEAgLTc5LDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5LCBib29sIHNob3VsZEFk
ZFRvS2lsbFJpbmcpOwogICAgIHZvaWQgZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUp
OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25UeXBlKFRleHRDb21wb3NpdGlvblR5cGUgdHlwZSkg
eyBtX2NvbXBvc2l0aW9uVHlwZSA9IHR5cGU7IH0KKyAgICB2b2lkIHNldElzQXV0b2NvbXBsZXRp
b24oYm9vbCBpc0F1dG9jb21wbGV0aW9uKSB7IG1faXNBdXRvY29tcGxldGlvbiA9IGlzQXV0b2Nv
bXBsZXRpb247IH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHNldEVuZGluZ1NlbGVj
dGlvbk9uTGFzdEluc2VydENvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KTsKQEAgLTE1MSw2ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFRleHRDb21wb3NpdGlvblR5cGUg
bV9jb21wb3NpdGlvblR5cGU7CiAgICAgYm9vbCBtX3Nob3VsZEFkZFRvS2lsbFJpbmc7CiAgICAg
Ym9vbCBtX3ByZXNlcnZlc1R5cGluZ1N0eWxlOworICAgIGJvb2wgbV9pc0F1dG9jb21wbGV0aW9u
OwogICAgIAogICAgIC8vIFVuZG9pbmcgYSBzZXJpZXMgb2YgYmFja3dhcmQgZGVsZXRlcyB3aWxs
IHJlc3RvcmUgYSBzZWxlY3Rpb24gYXJvdW5kIGFsbCBvZiB0aGUKICAgICAvLyBjaGFyYWN0ZXJz
IHRoYXQgd2VyZSBkZWxldGVkLCBidXQgb25seSBpZiB0aGUgdHlwaW5nIGNvbW1hbmQgYmVpbmcg
dW5kb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggZmUzYmY4ZDE0N2NkNjk5ZjY1YmNmOTNlYWY1OGY2Y2RjMzRiMmJm
YS4uMTJkZmUwNGM0OGViNWE0MWIwNWRiYWY4YjljYTkyZTM0OWU0YjY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICAKICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgdHJ1
ZSk7CiAgICAgaWYgKGNvcnJlY3Rpb24ubGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigp
Lmluc2VydFRleHQoY29ycmVjdGlvbiwgMCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2Vy
dFRleHQoY29ycmVjdGlvbiwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlCiAg
ICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgY29ycmVjdGlvbkFw
cGxpZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGM0MjU5NWRjYWI3NGU4NDk2Yjg1NmZmYjA0YmEwYzI1ZjE5MjY0OTMuLjRlMjA4
N2IxYzQ2ZmU5NTRjMmY2NDZlYWNjODRhMTczYzY4YWRiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNi0xMC0y
OCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpT1Mg
YXV0b2NvcnJlY3Rpb24gZG9lcyBub3QgdHJpZ2dlciBhbiBpbnB1dCBldmVudCBvZiBpbnB1dFR5
cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDA3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg5ODc4
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyB0ZXN0IHN1cHBvcnQgZm9yIGluc2VydGluZyB0ZXh0IGNhbmRpZGF0ZXMgb24gaU9TIGluIHRo
ZSBmb3JtIG9mCisgICAgICAgIFVJU2NyaXB0Q29udHJvbGxlci5zZWxlY3RUZXh0Q2FuZGlkYXRl
QXRJbmRleChpbmRleCwgY2FsbGJhY2spLCB3aGljaCBzZWxlY3RzIHRoZSB0ZXh0IGNhbmRpZGF0
ZSBhdCBhIGdpdmVuCisgICAgICAgIGluZGV4ICh0aGlzIG5lZWRzIHRvIGJlIGEgdmFsdWUgYmV0
d2VlbiAwLTIgb24gaU9TKSBhbmQgZmlyZXMgdGhlIGNhbGxiYWNrIHdoZW4gZG9uZS4KKworICAg
ICAgICBUbyBpbXBsZW1lbnQgdGhpcywgd2Ugd2FpdCBmb3IgdGhlIHRleHQgcHJlZGljdGlvbiB2
aWV3IHRvIGhhdmUgcHJlZGljdGlvbnMgKHdlIGRldGVybWluZSB0aGlzIGJ5IHBvbGxpbmcgYXQg
YQorICAgICAgICBnaXZlbiBpbnRlcnZhbCkgYW5kIHRoZW4gdGFwIHRoZSBjZW50ZXIgb2YgdGhl
IHRleHQgcHJlZGljdGlvbiB2aWV3IGF0IHRoZSBnaXZlbiBpbmRleC4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgpOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
OjpzZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6d2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdElu
ZGV4KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3RUZXh0Q2FuZGlkYXRl
QXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZvclRleHRQ
cmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToKKwogMjAxNi0xMC0yNyAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIwNzk5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGE5ZDNjNjNjYzc3OGQ5N2MyYzBjMmUw
YzZhYzNiZTA1ZWU3NTkwMDMuLjVlYWM4ZDg3YWU4ZjgxMzYyZTI1MmI0YzE0MDIyZDQxODk0ZDdj
MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQpAQCAtMTE2LDYgKzExNiwxMCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlw
ZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZQogewog
fQogCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgo
bG9uZywgSlNWYWx1ZVJlZikKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURv
d25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGwKaW5kZXggOTg0ZGNmNmExNmQ5MGQ5NTBjY2I5NjFiZDgzODZjZDFkMDM3NjIzNi4uMmVjOTQ5
ODU1ZGFmODhkZWY3NGIyOTYwZjM1MjM5OTkwMzlkNTU4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC00OSw2ICs0OSw4IEBAIGludGVyZmFjZSBVSVNj
cmlwdENvbnRyb2xsZXIgewogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChE
T01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsK
IAorICAgIHZvaWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgb2JqZWN0
IGNhbGxiYWNrKTsKKwogICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVz
ZXIgZXZlbnRzIGluIEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0
b3IubW0uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBk
b3duIGZvbGxvd2VkIGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KICAgICAvLyAg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDA0M2NkNzM2YzNiYzRmMjQ3MDMyNGQ3
MjQyMzFmMTdiN2UyOWNlMC4uYTQ0ODI5NDkzNDE5N2NlOWEwNWM2NzgwZGNlZmQ5OWI4YmE1NTYx
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMTQsNiArMjE0LDE0IEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1Jl
ZiwgSlNWYWx1ZVJlZikKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdFRl
eHRDYW5kaWRhdGVBdEluZGV4KGxvbmcsIEpTVmFsdWVSZWYpCit7Cit9CisKK3ZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjp3YWl0Rm9yVGV4dFByZWRpY3Rpb25zVmlld0FuZFNlbGVjdENhbmRpZGF0
ZUF0SW5kZXgobG9uZywgdW5zaWduZWQsIGZsb2F0KQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6a2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNWYWx1
ZVJlZikKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYWY2MDk1MDQ0NTgwYjAyMWFm
YmFjMzZiM2U2ZmZkYmMxMzVlMWQ5YS4uZDZkNzk0NjUwNWQ3Zjc0NzAzMDRkYmEwY2RhZjk5NGVl
NWRjNDgwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGlj
OgogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFy
YWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2luZ0hhcmR3YXJl
S2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKIAor
ICAgIHZvaWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CisKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dCgpOwogICAg
IHZvaWQga2V5Ym9hcmRBY2Nlc3NvcnlCYXJQcmV2aW91cygpOwogICAgIApAQCAtMTM2LDYgKzEz
OCw3IEBAIHByaXZhdGU6CiAgICAgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKSBmaW5hbDsKIAog
ICAgIEpTT2JqZWN0UmVmIG9iamVjdEZyb21SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IGNvbnN0OworICAgIHZvaWQgd2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5k
aWRhdGVBdEluZGV4KGxvbmcgaW5kZXgsIHVuc2lnbmVkIGNhbGxiYWNrSUQsIGZsb2F0IGludGVy
dmFsKTsKIAogICAgIFVJU2NyaXB0Q29udGV4dCogbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9VSUtpdFNQSS5oCmluZGV4IGVmOTE0YjI5ZWFkMjM3YzFmZmIwZGI2MmUwMjc5
ZTJmZDA1YTZlODYuLjYwMGI5MzdkMTcxMWU1MzBlOWFkNmI5ZDJkMWZiYWEzMzYwZjQ3ODYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcsMTEgQEAKICNp
bXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlX
aW5kb3dfUHJpdmF0ZS5oPgogCitAaW50ZXJmYWNlIFVJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyA6
IFVJVmlldworKyAoVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3ICopYWN0aXZlSW5zdGFuY2U7Cist
IChCT09MKWhhc1ByZWRpY3Rpb25zOworQGVuZAorCiAjZWxzZQogCiAjaW1wb3J0ICJJT0tpdFNQ
SS5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCmluZGV4IGE4ODg2OTk4ZWEwMjgzZDFmM2UwNGNmOTQyZTY3MzU4MTUwMjMzNWQu
LmFlODZmYzUxNWM3MGI2MDU1ODI3OTEwMzBlODdiMzdjMzI5ZGMyMzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTI1
NSw2ICsyNTUsNDYgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2Fy
ZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWwKICAgICB9XTsKIH0KIAordm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5k
ZXgsIEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyAgICBzdGF0aWMgY29uc3QgZmxvYXQgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFsID0g
MC4xOworICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3lu
Y1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIHdhaXRGb3JU
ZXh0UHJlZGljdGlvbnNWaWV3QW5kU2VsZWN0Q2FuZGlkYXRlQXRJbmRleChpbmRleCwgY2FsbGJh
Y2tJRCwgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFsKTsKKyNlbHNlCisgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSBuby1vcCBvbiBub24taW50ZXJuYWwgYnVpbGRzIGR1ZSB0byBVSUtleWJv
YXJkUHJlZGljdGlvblZpZXcgYmVpbmcgdW5hdmFpbGFibGUuIElkZWFsbHksIHRoZXJlIHNob3Vs
ZCBiZSBhIGJldHRlciB3YXkgdG8KKyAgICAvLyByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhbmQgaW50
ZXJhY3Qgd2l0aCB0aGUgcHJlZGljdGl2ZSB0ZXh0IHZpZXcgdGhhdCB3aWxsIGJlIGNvbXBhdGli
bGUgd2l0aCBPcGVuU291cmNlLgorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VE
X1BBUkFNKGNhbGxiYWNrKTsKKyNlbmRpZgorfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
d2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGxvbmcg
aW5kZXgsIHVuc2lnbmVkIGNhbGxiYWNrSUQsIGZsb2F0IGludGVydmFsKQoreworI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisgICAgaWYgKCFbVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IGFj
dGl2ZUluc3RhbmNlXS5oYXNQcmVkaWN0aW9ucykgeworICAgICAgICBkaXNwYXRjaF9hZnRlcihk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBpbnRlcnZhbCAqIE5TRUNfUEVSX1NFQyks
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgICAgICB3YWl0Rm9yVGV4
dFByZWRpY3Rpb25zVmlld0FuZFNlbGVjdENhbmRpZGF0ZUF0SW5kZXgoaW5kZXgsIGNhbGxiYWNr
SUQsIGludGVydmFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBQbGF0Zm9ybVdLVmlldyB3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIENHUmVjdCBwcmVkaWN0aW9uVmlld0Zy
YW1lID0gW1VJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyBhY3RpdmVJbnN0YW5jZV0uZnJhbWU7Cisg
ICAgLy8gVGhpcyBhc3N1bWVzIHRoZXJlIGFyZSAzIHByZWRpY3RlZCB0ZXh0IGNlbGxzIG9mIGVx
dWFsIHdpZHRoLCB3aGljaCBpcyB0aGUgY2FzZSBvbiBpT1MuCisgICAgZmxvYXQgb2Zmc2V0WCA9
IChpbmRleCAqIDIgKyAxKSAqIENHUmVjdEdldFdpZHRoKHByZWRpY3Rpb25WaWV3RnJhbWUpIC8g
NjsKKyAgICBmbG9hdCBvZmZzZXRZID0gQ0dSZWN0R2V0SGVpZ2h0KHdlYlZpZXcud2luZG93LmZy
YW1lKSAtIENHUmVjdEdldEhlaWdodChbVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IGFjdGl2ZUlu
c3RhbmNlXS5zdXBlcnZpZXcuZnJhbWUpICsgQ0dSZWN0R2V0SGVpZ2h0KHByZWRpY3Rpb25WaWV3
RnJhbWUpIC8gMjsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJh
dG9yXSB0YXA6Q0dQb2ludE1ha2Uob2Zmc2V0WCwgb2Zmc2V0WSkgY29tcGxldGlvbkJsb2NrOl57
CisgICAgICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFz
a0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFja0lEKTsKKyAgICBVTlVTRURfUEFSQU0o
aW50ZXJ2YWwpOworI2VuZGlmCit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkaXNtaXNz
Rm9ybUFjY2Vzc29yeVZpZXcoKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNGY3ZWM0NmQ4YzgwOGY2N2EyMWYyODczNGQ3NmQ2ODVjNzA1YjZjMy4uOTgw
MmQ2NjEyNzMxNzIwOTNhN2YxNWM2ZDFiNWI2YzE0ODZjYTE3NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE2LTEwLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIGlPUyBhdXRvY29ycmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2
ZW50IG9mIGlucHV0VHlwZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yODk4NzgxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRzIDIgbmV3IHVuaXQgdGVzdHMgdmVyaWZ5aW5nIHRoYXQgY2FuZGlkYXRl
IHRleHQgaW5zZXJ0aW9uIGNhbiBiZSBwcmV2ZW50ZWQgdmlhIGJlZm9yZWlucHV0IGV2ZW50cywg
YW5kIHRoYXQKKyAgICAgICAgYmVmb3JlaW5wdXQgYW5kIGlucHV0IGV2ZW50cyBvZiB0eXBlICJp
bnNlcnRSZXBsYWNlbWVudFRleHQiIGFyZSBmaXJlZCB3aGVuIGluc2VydGluZyBjYW5kaWRhdGUg
dGV4dCBvbiBpT1MuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2
ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRp
ZGF0ZS1pbnNlcnRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2lu
cHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9pbnB1dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50
LXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTYtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCAiaW5zZXJ0RnJvbURyb3AiIGFuZCAi
ZGVsZXRlQnlEcmFnIiBmb3IgdGhlIElucHV0RXZlbnQgc3BlYwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRh
dGUtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9i
ZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOThkMGMyZTg2YzhlODNjZmQ3MmQ5ZjVmZjg5ZjA1YjJmZjYzMDAxMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5w
dXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACisKK1RvIG1hbnVhbGx5IHRlc3QsIHR5cGUgJ3QnIGludG8gdGhlIGNvbnRlbnRl
ZGl0YWJsZSBhbmQgdHJ5IHRvIHNlbGVjdCBhIGNhbmRpZGF0ZS4gVGhlIHJlcGxhY2VtZW50IHRl
eHQgc2hvdWxkIG5vdCBiZSBpbnNlcnRlZC4KKworUEFTUzogVGhlIHJlcGxhY2VtZW50IHRleHQg
d2FzIHByZXZlbnRlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9z
L2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNh
bmRpZGF0ZS1pbnNlcnRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWFmNDkwMmU3MzhkZDBjYzU2YzMz
Y2ZjZDc0N2NmOTBmYTUwYjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9u
Lmh0bWwKQEAgLTAsMCArMSw5MiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorCis8aGVh
ZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAs
IHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgaWQ9InVpLXNjcmlwdCIgdHlwZT0idGV4
dC9wbGFpbiI+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxl
ci5kaWRTaG93S2V5Ym9hcmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHVpQ29udHJvbGxlci50eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKCJ0IiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zZWxlY3RUZXh0Q2Fu
ZGlkYXRlQXRJbmRleCgxLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdWlDb250cm9s
bGVyLnNpbmdsZVRhcEF0UG9pbnQoJHgsICR5LCBmdW5jdGlvbigpIHt9KTsKKyAgICAgICAgfSko
KTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBwcm9ncmVzcyA9
IDA7CisgICAgICAgIHZhciByZXBsYWNlbWVudFRleHQgPSAiIjsKKyAgICAgICAgbGV0IHdyaXRl
ID0gKG1lc3NhZ2UpID0+IG91dHB1dC5pbm5lckhUTUwgKz0gKG1lc3NhZ2UgKyAiPGJyPiIpOwor
ICAgICAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpIHsKKyAgICAgICAgICAgIGxldCByZWN0ID0g
ZWRpdGFibGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICBsZXQgc2NyaXB0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisgICAgICAgICAg
ICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgiJHgiLCByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8g
Mik7CisgICAgICAgICAgICByZXR1cm4gc2NyaXB0LnJlcGxhY2UoIiR5IiwgcmVjdC50b3AgKyBy
ZWN0LmhlaWdodCAvIDIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGluY3JlbWVudFByb2dyZXNzKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3Jl
c3MrKzsKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgcHJvZ3Jlc3MgIT09
IDIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChlZGl0YWJsZS52YWx1ZS5pbmRleE9mKHJl
cGxhY2VtZW50VGV4dCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGBQQVNTOiBU
aGUgcmVwbGFjZW1lbnQgdGV4dCB3YXMgcHJldmVudGVkLmApOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoYEZBSUw6IFRoZSBpbnB1dCB2YWx1ZSAke2Vk
aXRhYmxlLnZhbHVlfSBzaG91bGQgbm90IGNvbnRhaW4gcmVwbGFjZW1lbnQgdGV4dCAke3JlcGxh
Y2VtZW50VGV4dH0uYCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKQorICAgICAgICB7CisgICAgICAgICAgICBlZGl0YWJsZS5hZGRFdmVudExpc3RlbmVyKCJi
ZWZvcmVpbnB1dCIsIHByZXZlbnRCZWZvcmVJbnB1dCk7CisgICAgICAgICAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlw
dCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRQcm9ncmVz
cygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcmV2
ZW50QmVmb3JlSW5wdXQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5p
bnB1dFR5cGUgPT09ICJpbnNlcnRSZXBsYWNlbWVudFRleHQiKSB7CisgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRUZXh0ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcGxh
Y2VtZW50VGV4dCkKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoIkZBSUw6IFRoZSByZXBsYWNl
bWVudCB0ZXh0IGlucHV0IGV2ZW50IGxhY2tzIGRhdGEuIik7CisgICAgICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnRQcm9ncmVzcygp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+
CisgICAgI2VkaXRhYmxlIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICB0b3A6IDA7CisgICAgICAgIGxlZnQ6IDA7CisgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgc3R5
bGU9Im1hcmdpbjogMDsiIG9ubG9hZD1ydW5UZXN0KCk+CisgICAgPGlucHV0IGNvbnRlbnRlZGl0
YWJsZSBpZD0iZWRpdGFibGUiPjwvaW5wdXQ+CisgICAgPHA+VG8gbWFudWFsbHkgdGVzdCwgdHlw
ZSAndCcgaW50byB0aGUgY29udGVudGVkaXRhYmxlIGFuZCB0cnkgdG8gc2VsZWN0IGEgY2FuZGlk
YXRlLiBUaGUgcmVwbGFjZW1lbnQgdGV4dCBzaG91bGQgbm90IGJlIGluc2VydGVkLjwvcD4KKyAg
ICA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNl
bWVudC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9pbnB1
dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlmYTQwZjlmNDc0MDgyZGRlYTE4MGIxYjgyYmQ5N2UzYzUxOTQ5ZjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBs
YWNlbWVudC10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RvIG1hbnVhbGx5IHRl
c3QsIHR5cGUgJ3QnIGludG8gdGhlIGNvbnRlbnRlZGl0YWJsZSBhbmQgdHJ5IHRvIHNlbGVjdCBh
IGNhbmRpZGF0ZS4gVGhlIG91dHB1dCBzaG91bGQgaW5kaWNhdGUgdGhhdCB0aGUgYmVmb3JlaW5w
dXQgYW5kIGlucHV0IGV2ZW50cyBmb3IgdGhlIHRleHQgcmVwbGFjZW1lbnQgd2VyZSBoYW5kbGVk
LCBhbmQgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIGJlZm9yZWlucHV0IGV2ZW50IGlzIGZyb20gMCB0
byAxLgorCitQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFjZW1lbnQgYmVmb3JlIGlucHV0IGV2ZW50
IHdpdGggcmFuZ2U6IFswLCAxXS4KK1BBU1M6IEhhbmRsZWQgdGV4dCByZXBsYWNlbWVudCBpbnB1
dCBldmVudC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0
LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4dC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhhZDlhNzc0ZWMzNDgzOThmODk4MDUxOTRiOTI1YWQ3NTlmNTc2NTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2Vy
dC1yZXBsYWNlbWVudC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+
CisKKzxodG1sPgorCis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
aW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgaWQ9InVp
LXNjcmlwdCIgdHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHVpQ29udHJvbGxlci5kaWRTaG93S2V5Ym9hcmRDYWxsYmFjayA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci50eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2Fy
ZUtleWJvYXJkKCJ0IiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJv
bGxlci5zZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRleCgxLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnQoJHgsICR5LCBmdW5jdGlvbigp
IHt9KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAg
ICAgIHZhciBwcm9ncmVzcyA9IDA7CisgICAgICAgIGxldCB3cml0ZSA9IChtZXNzYWdlKSA9PiBv
dXRwdXQuaW5uZXJIVE1MICs9IChtZXNzYWdlICsgIjxicj4iKTsKKyAgICAgICAgZnVuY3Rpb24g
Z2V0VUlTY3JpcHQoKSB7CisgICAgICAgICAgICBsZXQgcmVjdCA9IGVkaXRhYmxlLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgbGV0IHNjcmlwdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgICAgICAgICAgc2NyaXB0ID0gc2NyaXB0
LnJlcGxhY2UoIiR4IiwgcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIpOworICAgICAgICAgICAg
cmV0dXJuIHNjcmlwdC5yZXBsYWNlKCIkeSIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50
c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBpbmNyZW1lbnRQ
cm9ncmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByb2dyZXNzKys7CisgICAgICAgICAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8IHByb2dyZXNzICE9PSAzKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBlZGl0YWJsZS50ZXh0Q29udGVudCA9ICIiOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZWRpdGFi
bGUuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBsb2dJbnB1dEV2ZW50KTsKKyAgICAgICAgICAg
IGVkaXRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IiwgbG9nSW5wdXRFdmVudCk7
CisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJ
U2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
ICAgICAgICBpbmNyZW1lbnRQcm9ncmVzcygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBsb2dJbnB1dEV2ZW50KGV2ZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlICE9PSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChldmVudC50eXBlID09
PSAiYmVmb3JlaW5wdXQiKSB7CisgICAgICAgICAgICAgICAgbGV0IGZpcnN0UmFuZ2UgPSBldmVu
dC5nZXRUYXJnZXRSYW5nZXMoKVswXTsKKyAgICAgICAgICAgICAgICB3cml0ZShgUEFTUzogSGFu
ZGxlZCB0ZXh0IHJlcGxhY2VtZW50IGJlZm9yZSBpbnB1dCBldmVudCB3aXRoIHJhbmdlOiBbJHtm
aXJzdFJhbmdlLnN0YXJ0T2Zmc2V0fSwgJHtmaXJzdFJhbmdlLmVuZE9mZnNldH1dLmApOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgd3JpdGUoYFBBU1M6IEhhbmRsZWQgdGV4
dCByZXBsYWNlbWVudCBpbnB1dCBldmVudC5gKTsKKyAgICAgICAgICAgIGluY3JlbWVudFByb2dy
ZXNzKCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgI2VkaXRh
YmxlIHsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
ICAgICB0b3A6IDA7CisgICAgICAgIGxlZnQ6IDA7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgc3R5bGU9Im1hcmdpbjog
MDsiIG9ubG9hZD1ydW5UZXN0KCk+CisgICAgPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9ImVkaXRh
YmxlIj48L2Rpdj4KKyAgICA8cD5UbyBtYW51YWxseSB0ZXN0LCB0eXBlICd0JyBpbnRvIHRoZSBj
b250ZW50ZWRpdGFibGUgYW5kIHRyeSB0byBzZWxlY3QgYSBjYW5kaWRhdGUuIFRoZSBvdXRwdXQg
c2hvdWxkIGluZGljYXRlIHRoYXQgdGhlIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgZm9y
IHRoZSB0ZXh0IHJlcGxhY2VtZW50IHdlcmUgaGFuZGxlZCwgYW5kIHRoYXQgdGhlIHJhbmdlIG9m
IHRoZSBiZWZvcmVpbnB1dCBldmVudCBpcyBmcm9tIDAgdG8gMS48L3A+CisgICAgPGRpdiBpZD0i
b3V0cHV0Ij48L2Rpdj4KKzwvYm9keT4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293257</attachid>
            <date>2016-10-28 17:33:24 -0700</date>
            <delta_ts>2016-10-28 18:09:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164077-20161028172933.patch</filename>
            <type>text/plain</type>
            <size>35196</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllODFmMjI4MWM3NWYw
YjcyMTE3OTI5ODJiNGNhNTg1OTJlMTk3Zi4uZjNkOWU1ZjM2ZjAzZjA1NjQ3M2FhYjMyNGUyYTYy
N2UzZGMyNTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTEwLTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGlPUyBhdXRvY29y
cmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAiaW5z
ZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk4NzgxMD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgRml4ZXMgY2FuZGlk
YXRlIGluc2VydGlvbiBvbiBpT1MsIHNvIHRoYXQgaXQgZmlyZXMgaW5wdXQgZXZlbnRzIG9mIHR5
cGUgImluc2VydFJlcGxhY2VtZW50VGV4dCIgYW5kIGFkZHMgdHdvCisgICAgICAgIGlPUyB1bml0
IHRlc3RzIGNvdmVyaW5nIHRoaXMgY2hhbmdlIGFzIHdlbGwgYXMgdGhlIHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgbmVlZGVkIHRvIHN1cHBvcnQgdGhlc2UgdGVzdHMuIFNlZQorICAgICAgICBjb21tZW50
cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9p
b3MvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24uaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFj
ZW1lbnQtdGV4dC5odG1sCisKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisKKyAgICAgICAg
QWRkcyBpc0F1dG9jb21wbGV0aW9uKCkgdG8gVGV4dEV2ZW50LCBhcyB3ZWxsIGFzIHRoZSBUZXh0
RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uIHRleHQgaW5wdXQgdHlwZS4gV2hlbiB0aGUKKyAgICAg
ICAgRWRpdG9yIGhhbmRsZXMgdGhpcyBUZXh0RXZlbnQsIGl0IHdpbGwgdXNlIHRoaXMgaW5mb3Jt
YXRpb24gd2hlbiBjcmVhdGluZyBvciBtb2RpZnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgdHlwaW5n
CisgICAgICAgIGNvbW1hbmQuCisKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50SW5wdXRUeXBlLmg6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdpdGhv
dXRTZW5kaW5nVGV4dEV2ZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAg
ICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplZGl0QWN0
aW9uRm9yVHlwaW5nQ29tbWFuZCk6CisKKyAgICAgICAgTm93IHRha2VzIHdoZXRoZXIgdGhlIGNv
bW1hbmQgaXMgYXV0b2NvcnJlY3Rpb24gaW50byBhY2NvdW50LiBJZiBzbywgdGhlIGNvcnJlc3Bv
bmRpbmcgZWRpdCBhY3Rpb24gc2hvdWxkIGJlCisgICAgICAgIEVkaXRBY3Rpb25JbnNlcnRSZXBs
YWNlbWVudCByYXRoZXIgdGhhbiBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0VGV4dC4KKworICAgICAg
ICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6Omluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpp
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKworICAgICAgICBBZGRzIGEgbmV3IFR5cGluZ0NvbW1h
bmQgb3B0aW9uLCBJc0F1dG9jb21wbGV0aW9uLgorCiAyMDE2LTEwLTI3ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgImluc2VydEZyb21E
cm9wIiBhbmQgImRlbGV0ZUJ5RHJhZyIgZm9yIHRoZSBJbnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBhYWVmOGM0ZjBhMTk1MDQzMGViMmVkZDhkZTI3YzlmZGI0OWYzZGQwLi45NDI3M2JjZTA2
NGI5YjM1YTU4ZDI3MWMyMTk1MTlmNjVjOTJjNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTYtMTAtMjggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgaU9TIGF1dG9jb3JyZWN0aW9uIGRvZXMgbm90IHRyaWdnZXIgYW4gaW5wdXQgZXZl
bnQgb2YgaW5wdXRUeXBlICJpbnNlcnRSZXBsYWNlbWVudFRleHQiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNzcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI4OTg3ODEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICBTbWFsbCB0d2VhayB0byBtYXJrIHRleHQgaW5zZXJ0aW9uIHdoZW4gYXV0b2NvcnJl
Y3RpbmcgYXMgc3VjaCwgYXMgb3Bwb3NlZCB0byByZWd1bGFyIGtleWJvYXJkIGlucHV0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbik6CisKIDIwMTYtMTAtMjcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9y
dCAiaW5zZXJ0RnJvbURyb3AiIGFuZCAiZGVsZXRlQnlEcmFnIiBmb3IgdGhlIElucHV0RXZlbnQg
c3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCmluZGV4IDk1OGJkNzRlNWZjZjczNmE0ZDNmMmRiNGM4
ZTBiY2NlZjQ2ZmU2NGYuLjBkMjU3MWIyMTU4ZWFkMWMxODI0YjA0YmYwZWY2NDk1ZjJkMjllNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKQEAgLTU5LDYgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGlzUGFzdGUoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZSA9
PSBUZXh0RXZlbnRJbnB1dFBhc3RlOyB9CiAgICAgICAgIGJvb2wgaXNEcm9wKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnB1dFR5cGUgPT0gVGV4dEV2ZW50SW5wdXREcm9wOyB9CiAgICAgICAgIGJvb2wg
aXNEaWN0YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJbnB1
dERpY3RhdGlvbjsgfQorICAgICAgICBib29sIGlzQXV0b2NvbXBsZXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uOyB9CiAKICAg
ICAgICAgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFNt
YXJ0UmVwbGFjZTsgfQogICAgICAgICBib29sIHNob3VsZE1hdGNoU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZE1hdGNoU3R5bGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnRJbnB1
dFR5cGUuaAppbmRleCA4YmUyMzNjNGJmZjBiYTVmNWYyZjk2ZDUwMzBkMTg4YjVjNTZiYTdhLi4w
ZjIzZjVmYWRkNmRhNzNhY2ZkMDk0ZDUyMDlhMzkyMDM0ODhmY2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFdmVudElucHV0VHlwZS5oCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBUZXh0RXZlbnRJbnB1dFR5cGUgewogICAgIFRleHRFdmVudElucHV0S2V5
Ym9hcmQsIC8vIGFueSBuZXdsaW5lIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQgYXJlIGxpbmUgYnJl
YWtzIG9ubHksIG5vdCBwYXJhZ3JhcGggc2VwYXJhdG9ycy4KKyAgICBUZXh0RXZlbnRJbnB1dEF1
dG9jb21wbGV0aW9uLAogICAgIFRleHRFdmVudElucHV0TGluZUJyZWFrLCAvLyBhbnkgdGFiIGNo
YXJhY3RlcnMgaW4gdGhlIHRleHQgYXJlIGJhY2t0YWJzLgogICAgIFRleHRFdmVudElucHV0Q29t
cG9zaXRpb24sCiAgICAgVGV4dEV2ZW50SW5wdXRCYWNrVGFiLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCmluZGV4IDE4ZWMwZDkwNWE1Njk5OTRhZmM1OTliNjc2MTVlYTFhNDQzMjNkYjguLjhl
OGVkN2IzOTczMWVkODdmZjhmZjBmMTM3OTFiMTJlNzg3MGY3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTEyMTMsOSArMTIxMyw5IEBAIHZvaWQgRWRpdG9yOjpjbGVhcigpCiAg
ICAgbV9kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yID0gRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9y
SXNEaXY7CiB9CiAKLWJvb2wgRWRpdG9yOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
RXZlbnQqIHRyaWdnZXJpbmdFdmVudCkKK2Jvb2wgRWRpdG9yOjppbnNlcnRUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlIGlu
cHV0VHlwZSkKIHsKLSAgICByZXR1cm4gbV9mcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVUZXh0
SW5wdXRFdmVudCh0ZXh0LCB0cmlnZ2VyaW5nRXZlbnQpOworICAgIHJldHVybiBtX2ZyYW1lLmV2
ZW50SGFuZGxlcigpLmhhbmRsZVRleHRJbnB1dEV2ZW50KHRleHQsIHRyaWdnZXJpbmdFdmVudCwg
aW5wdXRUeXBlKTsKIH0KIAogYm9vbCBFZGl0b3I6Omluc2VydFRleHRGb3JDb25maXJtZWRDb21w
b3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQpCkBAIC0xMjY5LDYgKzEyNjksOCBAQCBib29sIEVk
aXRvcjo6aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4
dCwgYm9vbCBzZWxlY3RJbgogICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0Nv
bW1hbmQ6OlNlbGVjdEluc2VydGVkVGV4dDsKICAgICAgICAgICAgICAgICBpZiAoYXV0b2NvcnJl
Y3Rpb25XYXNBcHBsaWVkKQogICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0Nv
bW1hbmQ6OlJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yOworICAgICAgICAgICAgICAgIGlm
ICh0cmlnZ2VyaW5nRXZlbnQgJiYgdHJpZ2dlcmluZ0V2ZW50LT5pc0F1dG9jb21wbGV0aW9uKCkp
CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gVHlwaW5nQ29tbWFuZDo6SXNBdXRvY29t
cGxldGlvbjsKICAgICAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KGRvY3Vt
ZW50LCB0ZXh0LCBzZWxlY3Rpb24sIG9wdGlvbnMsIHRyaWdnZXJpbmdFdmVudCAmJiB0cmlnZ2Vy
aW5nRXZlbnQtPmlzQ29tcG9zaXRpb24oKSA/IFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlv
bkZpbmFsIDogVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDVmMTFlMzVjNjRkMTFlZTgxMzg5YTU5
ZjNjMzc5M2Y2NDk1MDk2ZTEuLmUyMzRhOGFiOTE4N2JkOTNiNTI5YTlmNTA0MTk2ZDc4NmY3Nzc4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tpbmcuaCIKKyNpbmNsdWRlICJUZXh0RXZlbnRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCkBAIC0yMzksNyArMjQwLDcgQEAgcHVibGlj
OgogICAgIENvbW1hbmQgY29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBFZGl0b3JD
b21tYW5kU291cmNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjb21tYW5kSXNT
dXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZyhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsg
Ly8gV29ya3Mgd2l0aG91dCBhIGZyYW1lLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnNl
cnRUZXh0KGNvbnN0IFN0cmluZyYsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVudCogdHJpZ2dlcmlu
Z0V2ZW50LCBUZXh0RXZlbnRJbnB1dFR5cGUgPSBUZXh0RXZlbnRJbnB1dEtleWJvYXJkKTsKICAg
ICBib29sIGluc2VydFRleHRGb3JDb25maXJtZWRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRl
eHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCk7CiAgICAgYm9vbCBpbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RJbnNlcnRlZFRl
eHQsIFRleHRFdmVudCogdHJpZ2dlcmluZ0V2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwCmluZGV4IDc1NjEzNDBkNmQ5ZDgwMDBiOTM3NjQ3MjcyNjA1YjRjNGVl
ZGI0ZGYuLjllODAyYTQ2MDM0MjI0OTBjOTM5YTQ4MTJmNTM5YTRmYjZlOTVmMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtNzcsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFN0cmluZyYgbV90ZXh0OwogfTsKIAotc3RhdGljIGlubGluZSBFZGl0
QWN0aW9uIGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OkVUeXBpbmdD
b21tYW5kIGNvbW1hbmQsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgVHlwaW5nQ29tbWFu
ZDo6VGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUpCitzdGF0aWMgaW5saW5lIEVk
aXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoVHlwaW5nQ29tbWFuZDo6RVR5cGlu
Z0NvbW1hbmQgY29tbWFuZCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBUeXBpbmdDb21t
YW5kOjpUZXh0Q29tcG9zaXRpb25UeXBlIGNvbXBvc2l0aW9uVHlwZSwgYm9vbCBpc0F1dG9jb21w
bGV0aW9uKQogewogICAgIGlmIChjb21wb3NpdGlvblR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6VGV4
dENvbXBvc2l0aW9uUGVuZGluZykgewogICAgICAgICBpZiAoY29tbWFuZCA9PSBUeXBpbmdDb21t
YW5kOjpJbnNlcnRUZXh0KQpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUgRWRpdEFj
dGlvbiBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChUeXBpbmdDb21tYW5kOjpFVHlwaW5nQ29t
bWFuCiAgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5cGluZ0RlbGV0ZUxpbmVGb3J3YXJk
OwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5cGluZ0RlbGV0ZUZvcndhcmQ7CiAgICAgY2Fz
ZSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0OgotICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5
cGluZ0luc2VydFRleHQ7CisgICAgICAgIHJldHVybiBpc0F1dG9jb21wbGV0aW9uID8gRWRpdEFj
dGlvbkluc2VydFJlcGxhY2VtZW50IDogRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQ7CiAgICAg
Y2FzZSBUeXBpbmdDb21tYW5kOjpJbnNlcnRMaW5lQnJlYWs6CiAgICAgICAgIHJldHVybiBFZGl0
QWN0aW9uVHlwaW5nSW5zZXJ0TGluZUJyZWFrOwogICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOgpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBlZGl0QWN0aW9uSXNEZWxldGVCeVR5cGluZyhFZGl0QWN0aW9uIGFjdGlvbikKIH0KIAog
VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdD
b21tYW5kIGNvbW1hbmRUeXBlLCBjb25zdCBTdHJpbmcgJnRleHRUb0luc2VydCwgT3B0aW9ucyBv
cHRpb25zLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFRleHRDb21wb3NpdGlvblR5cGUg
Y29tcG9zaXRpb25UeXBlKQotICAgIDogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kKGRvY3VtZW50
LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5kVHlwZSwgZ3JhbnVsYXJpdHksIGNv
bXBvc2l0aW9uVHlwZSkpCisgICAgOiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQoZG9jdW1lbnQs
IGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1hbmRUeXBlLCBncmFudWxhcml0eSwgY29t
cG9zaXRpb25UeXBlLCBvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbikpCiAgICAgLCBtX2NvbW1h
bmRUeXBlKGNvbW1hbmRUeXBlKQogICAgICwgbV90ZXh0VG9JbnNlcnQodGV4dFRvSW5zZXJ0KQog
ICAgICwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0KHRleHRUb0luc2VydCkKQEAgLTE1MCw2ICsxNTAs
NyBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgRVR5
cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgICwgbV9ncmFudWxhcml0eShncmFudWxh
cml0eSkKICAgICAsIG1fY29tcG9zaXRpb25UeXBlKGNvbXBvc2l0aW9uVHlwZSkKICAgICAsIG1f
c2hvdWxkQWRkVG9LaWxsUmluZyhvcHRpb25zICYgQWRkc1RvS2lsbFJpbmcpCisgICAgLCBtX2lz
QXV0b2NvbXBsZXRpb24ob3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pCiAgICAgLCBtX29wZW5l
ZEJ5QmFja3dhcmREZWxldGUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFJldGFpbkF1dG9jb3JyZWN0
aW9uSW5kaWNhdG9yKG9wdGlvbnMgJiBSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcikKICAg
ICAsIG1fc2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENo
ZWNraW5nKQpAQCAtMTY3LDYgKzE2OCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2Vs
ZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0Q29tCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0Nv
bW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpmcmFtZSkpIHsK
KyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2NvbXBsZXRpb24ob3B0aW9ucyAm
IElzQXV0b2NvbXBsZXRpb24pOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0Q29tcG9z
aXRpb25UeXBlKGNvbXBvc2l0aW9uVHlwZSk7CiAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5z
ZXRTaG91bGRQcmV2ZW50U3BlbGxDaGVja2luZyhvcHRpb25zICYgUHJldmVudFNwZWxsQ2hlY2tp
bmcpOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+ZGVsZXRlU2VsZWN0aW9uKG9wdGlvbnMg
JiBTbWFydERlbGV0ZSk7CkBAIC0xODEsNiArMTgzLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0
R3IKICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKICAgICAg
ICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29tbWFuZCA9IGxhc3RUeXBp
bmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoKmRvY3VtZW50LmZyYW1lKCkpKSB7CiAgICAg
ICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKGxh
c3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudC5mcmFtZSgpKTsKKyAgICAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21w
bGV0aW9uKTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRDb21wb3NpdGlvblR5
cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+
c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENoZWNr
aW5nKTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5kZWxldGVLZXlQcmVzc2VkKGdy
YW51bGFyaXR5LCBvcHRpb25zICYgQWRkc1RvS2lsbFJpbmcpOwpAQCAtMTk4LDYgKzIwMSw3IEBA
IHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBPcHRpb25zIG9wdGlvbnMsCiAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3Rl
ckdyYW51bGFyaXR5KSB7CiAgICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5
cGluZ0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpmcmFt
ZSkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRT
ZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGZyYW1lKTsKKyAgICAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21w
bGV0aW9uKTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRDb21wb3NpdGlvblR5
cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+
c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENoZWNr
aW5nKTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5mb3J3YXJkRGVsZXRlS2V5UHJl
c3NlZChncmFudWxhcml0eSwgb3B0aW9ucyAmIEFkZHNUb0tpbGxSaW5nKTsKQEAgLTI1MSw2ICsy
NTUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpcwogICAgICAgICAgICAgbGFzdFR5cGluZ0Nv
bW1hbmQtPnNldEVuZGluZ1NlbGVjdGlvbihzZWxlY3Rpb25Gb3JJbnNlcnRpb24pOwogICAgICAg
ICB9CiAKKyAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2NvbXBsZXRpb24ob3B0
aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0
Q29tcG9zaXRpb25UeXBlKGNvbXBvc2l0aW9uVHlwZSk7CiAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihvcHRpb25zICYgUmV0
YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+
c2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcob3B0aW9ucyAmIFByZXZlbnRTcGVsbENoZWNr
aW5nKTsKQEAgLTI2NSw2ICsyNzAsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpcwogdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25z
IG9wdGlvbnMpCiB7CiAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoKmRvY3VtZW50LmZy
YW1lKCkpKSB7CisgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQt
PnNldENvbXBvc2l0aW9uVHlwZShUZXh0Q29tcG9zaXRpb25Ob25lKTsKICAgICAgICAgbGFzdFR5
cGluZ0NvbW1hbmQtPnNldFNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKG9wdGlv
bnMgJiBSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcik7CiAgICAgICAgIGxhc3RUeXBpbmdD
b21tYW5kLT5pbnNlcnRMaW5lQnJlYWtBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7CkBAIC0yNzcs
NiArMjgzLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoRG9jdW1lbnQm
IGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMpCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBh
cmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29tbWFuZCA9IGxhc3RUeXBp
bmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoKmRvY3VtZW50LmZyYW1lKCkpKSB7CisgICAg
ICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKGZhbHNlKTsKICAgICAg
ICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldENvbXBvc2l0aW9uVHlwZShUZXh0Q29tcG9zaXRpb25O
b25lKTsKICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPmluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckluUXVvdGVkQ29udGVudEFuZE5vdGlmeUFjY2Vzc2liaWxpdHkoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjg4LDYgKzI5NSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgVHlwaW5n
Q29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGlu
Z0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKCpkb2N1bWVu
dC5mcmFtZSgpKSkgeworICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxl
dGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CiAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgICAgIGxh
c3RUeXBpbmdDb21tYW5kLT5zZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihv
cHRpb25zICYgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IpOwogICAgICAgICBsYXN0VHlw
aW5nQ29tbWFuZC0+aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQW5kTm90aWZ5QWNjZXNzaWJpbGl0
eSgpOwpAQCAtMzk4LDYgKzQwNiw3IEBAIFN0cmluZyBUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50
RGF0YSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uKSB7
CiAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0VGV4dDoKKyAgICBjYXNlIEVkaXRBY3Rp
b25JbnNlcnRSZXBsYWNlbWVudDoKICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRQZW5k
aW5nQ29tcG9zaXRpb246CiAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0RmluYWxDb21w
b3NpdGlvbjoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudFRleHRUb0luc2VydDsKQEAgLTQ2OSw3
ICs0NzgsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGlu
ZyhFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKIGJvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFk
ZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8UmFuZ2U+JiYg
cmFuZ2UpCiB7CiAgICAgbV9jdXJyZW50VGV4dFRvSW5zZXJ0ID0gdGV4dDsKLSAgICBtX2N1cnJl
bnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5
cGUsIGdyYW51bGFyaXR5LCBtX2NvbXBvc2l0aW9uVHlwZSk7CisgICAgbV9jdXJyZW50VHlwaW5n
RWRpdEFjdGlvbiA9IGVkaXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1hbmRUeXBlLCBncmFu
dWxhcml0eSwgbV9jb21wb3NpdGlvblR5cGUsIG1faXNBdXRvY29tcGxldGlvbik7CiAKICAgICBp
ZiAoIXNob3VsZERlZmVyV2lsbEFwcGx5Q29tbWFuZFVudGlsQWRkaW5nVHlwaW5nQ29tbWFuZCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVHlwaW5nQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5k
LmgKaW5kZXggNTA4MzU0MGZhOWI4NjI2Y2Y0MmY3NDBiYTFhZmViZTJiYmFjOTdkNS4uYjk0MDFi
NWVlNjYyM2VlMTRlMDQ1MjczNzY4Zjc4M2QzNjZiN2U5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UeXBpbmdDb21tYW5kLmgKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBBZGRz
VG9LaWxsUmluZyA9IDEgPDwgMSwKICAgICAgICAgUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0
b3IgPSAxIDw8IDIsCiAgICAgICAgIFByZXZlbnRTcGVsbENoZWNraW5nID0gMSA8PCAzLAotICAg
ICAgICBTbWFydERlbGV0ZSA9IDEgPDwgNAorICAgICAgICBTbWFydERlbGV0ZSA9IDEgPDwgNCwK
KyAgICAgICAgSXNBdXRvY29tcGxldGlvbiA9IDEgPDwgNSwKICAgICB9OwogICAgIHR5cGVkZWYg
dW5zaWduZWQgT3B0aW9uczsKIApAQCAtNzksNiArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
b3J3YXJkRGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHksIGJvb2wgc2hvdWxkQWRkVG9L
aWxsUmluZyk7CiAgICAgdm9pZCBkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFydERlbGV0ZSk7CiAg
ICAgdm9pZCBzZXRDb21wb3NpdGlvblR5cGUoVGV4dENvbXBvc2l0aW9uVHlwZSB0eXBlKSB7IG1f
Y29tcG9zaXRpb25UeXBlID0gdHlwZTsgfQorICAgIHZvaWQgc2V0SXNBdXRvY29tcGxldGlvbihi
b29sIGlzQXV0b2NvbXBsZXRpb24pIHsgbV9pc0F1dG9jb21wbGV0aW9uID0gaXNBdXRvY29tcGxl
dGlvbjsgfQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9u
T25MYXN0SW5zZXJ0Q29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pOwpA
QCAtMTUxLDYgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgVGV4dENvbXBvc2l0aW9uVHlwZSBtX2Nv
bXBvc2l0aW9uVHlwZTsKICAgICBib29sIG1fc2hvdWxkQWRkVG9LaWxsUmluZzsKICAgICBib29s
IG1fcHJlc2VydmVzVHlwaW5nU3R5bGU7CisgICAgYm9vbCBtX2lzQXV0b2NvbXBsZXRpb247CiAg
ICAgCiAgICAgLy8gVW5kb2luZyBhIHNlcmllcyBvZiBiYWNrd2FyZCBkZWxldGVzIHdpbGwgcmVz
dG9yZSBhIHNlbGVjdGlvbiBhcm91bmQgYWxsIG9mIHRoZQogICAgIC8vIGNoYXJhY3RlcnMgdGhh
dCB3ZXJlIGRlbGV0ZWQsIGJ1dCBvbmx5IGlmIHRoZSB0eXBpbmcgY29tbWFuZCBiZWluZyB1bmRv
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCBmZTNiZjhkMTQ3Y2Q2OTlmNjViY2Y5M2VhZjU4ZjZjZGMzNGIyYmZhLi4x
MmRmZTA0YzQ4ZWI1YTQxYjA1ZGJhZjhiOWNhOTJlMzQ5ZTRiNjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTcx
LDcgKzIxNzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcgogICAgIAogICAgIGZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCB0cnVlKTsK
ICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5z
ZXJ0VGV4dChjb3JyZWN0aW9uLCAwKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4
dChjb3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0eSgpID8gVGV4dEV2ZW50SW5wdXRL
ZXlib2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24pOwogICAgIGVsc2UKICAgICAg
ICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICBjb3JyZWN0aW9uQXBwbGll
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYzQyNTk1ZGNhYjc0ZTg0OTZiODU2ZmZiMDRiYTBjMjVmMTkyNjQ5My4uZTI3MjZmYjk1
ZWU0MDkyMTJkMjU3ZWY1NDUyYjg5ZGJkNGY4Y2Q0MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTEwLTI4ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGlPUyBhdXRv
Y29ycmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAi
aW5zZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk4NzgxMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkcyB0ZXN0
IHN1cHBvcnQgZm9yIGluc2VydGluZyB0ZXh0IGNhbmRpZGF0ZXMgb24gaU9TIGluIHRoZSBmb3Jt
IG9mCisgICAgICAgIFVJU2NyaXB0Q29udHJvbGxlci5zZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRl
eChpbmRleCwgY2FsbGJhY2spLCB3aGljaCBzZWxlY3RzIHRoZSB0ZXh0IGNhbmRpZGF0ZSBhdCBh
IGdpdmVuCisgICAgICAgIGluZGV4ICh0aGlzIG5lZWRzIHRvIGJlIGEgdmFsdWUgYmV0d2VlbiAw
LTIgb24gaU9TKSBhbmQgZmlyZXMgdGhlIGNhbGxiYWNrIHdoZW4gZG9uZS4KKworICAgICAgICBU
byBpbXBsZW1lbnQgdGhpcywgd2Ugd2FpdCBmb3IgdGhlIHRleHQgcHJlZGljdGlvbiB2aWV3IHRv
IGhhdmUgcHJlZGljdGlvbnMgKHdlIGRldGVybWluZSB0aGlzIGJ5IHBvbGxpbmcgYXQgYQorICAg
ICAgICBnaXZlbiBpbnRlcnZhbCkgYW5kIHRoZW4gdGFwIHRoZSBjZW50ZXIgb2YgdGhlIHRleHQg
cHJlZGljdGlvbiB2aWV3IGF0IHRoZSBnaXZlbiBpbmRleC4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2Ny
aXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgpOgorICAgICAgICAqIFRl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxl
Y3RUZXh0Q2FuZGlkYXRlQXRJbmRleCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6d2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZWxlY3RUZXh0Q2FuZGlkYXRlQXRJbmRl
eCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZvclRleHRQcmVkaWN0
aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KToKKwogMjAxNi0xMC0yNyAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIwNzk5Mi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGE5ZDNjNjNjYzc3OGQ5N2MyYzBjMmUwYzZhYzNi
ZTA1ZWU3NTkwMDMuLjVlYWM4ZDg3YWU4ZjgxMzYyZTI1MmI0YzE0MDIyZDQxODk0ZDdjMzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQpAQCAtMTE2LDYgKzExNiwxMCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJh
Y3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZQogewogfQogCit2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZywg
SlNWYWx1ZVJlZikKK3sKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25Vc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxi
YWNrKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5k
ZXggOTg0ZGNmNmExNmQ5MGQ5NTBjY2I5NjFiZDgzODZjZDFkMDM3NjIzNi4uMmVjOTQ5ODU1ZGFm
ODhkZWY3NGIyOTYwZjM1MjM5OTkwMzlkNTU4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAor
KysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNj
cmlwdENvbnRyb2xsZXIuaWRsCkBAIC00OSw2ICs0OSw4IEBAIGludGVyZmFjZSBVSVNjcmlwdENv
bnRyb2xsZXIgewogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChET01TdHJp
bmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2luZ0hhcmR3
YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsKIAorICAg
IHZvaWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgb2JqZWN0IGNhbGxi
YWNrKTsKKwogICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVzZXIgZXZl
bnRzIGluIEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0b3IubW0u
CiAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBkb3duIGZv
bGxvd2VkIGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KICAgICAvLyAgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDA0M2NkNzM2YzNiYzRmMjQ3MDMyNGQ3MjQyMzFm
MTdiN2UyOWNlMC4uYTQ0ODI5NDkzNDE5N2NlOWEwNWM2NzgwZGNlZmQ5OWI4YmE1NTYxYyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yMTQsNiArMjE0LDE0IEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNW
YWx1ZVJlZikKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNlbGVjdFRleHRDYW5k
aWRhdGVBdEluZGV4KGxvbmcsIEpTVmFsdWVSZWYpCit7Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjp3YWl0Rm9yVGV4dFByZWRpY3Rpb25zVmlld0FuZFNlbGVjdENhbmRpZGF0ZUF0SW5k
ZXgobG9uZywgdW5zaWduZWQsIGZsb2F0KQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6a2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZikK
IHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYWY2MDk1MDQ0NTgwYjAyMWFmYmFjMzZi
M2U2ZmZkYmMxMzVlMWQ5YS4uZDZkNzk0NjUwNWQ3Zjc0NzAzMDRkYmEwY2RhZjk5NGVlNWRjNDgw
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgogICAg
IHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIs
IEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9h
cmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKIAorICAgIHZv
aWQgc2VsZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgobG9uZyBpbmRleCwgSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CisKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dCgpOwogICAgIHZvaWQg
a2V5Ym9hcmRBY2Nlc3NvcnlCYXJQcmV2aW91cygpOwogICAgIApAQCAtMTM2LDYgKzEzOCw3IEBA
IHByaXZhdGU6CiAgICAgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKSBmaW5hbDsKIAogICAgIEpT
T2JqZWN0UmVmIG9iamVjdEZyb21SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGNvbnN0
OworICAgIHZvaWQgd2FpdEZvclRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVB
dEluZGV4KGxvbmcgaW5kZXgsIHVuc2lnbmVkIGNhbGxiYWNrSUQsIGZsb2F0IGludGVydmFsKTsK
IAogICAgIFVJU2NyaXB0Q29udGV4dCogbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSUtpdFNQSS5oCmluZGV4IGVmOTE0YjI5ZWFkMjM3YzFmZmIwZGI2MmUwMjc5ZTJmZDA1
YTZlODYuLjYwMGI5MzdkMTcxMWU1MzBlOWFkNmI5ZDJkMWZiYWEzMzYwZjQ3ODYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcsMTEgQEAKICNpbXBvcnQg
PFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3df
UHJpdmF0ZS5oPgogCitAaW50ZXJmYWNlIFVJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyA6IFVJVmll
dworKyAoVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3ICopYWN0aXZlSW5zdGFuY2U7CistIChCT09M
KWhhc1ByZWRpY3Rpb25zOworQGVuZAorCiAjZWxzZQogCiAjaW1wb3J0ICJJT0tpdFNQSS5oIgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCmluZGV4IGE4ODg2OTk4ZWEwMjgzZDFmM2UwNGNmOTQyZTY3MzU4MTUwMjMzNWQuLmFlODZm
YzUxNWM3MGI2MDU1ODI3OTEwMzBlODdiMzdjMzI5ZGMyMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTI1NSw2ICsy
NTUsNDYgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtleWJv
YXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWwKICAgICB9XTsKIH0KIAordm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnNlbGVjdFRleHRDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgsIEpT
VmFsdWVSZWYgY2FsbGJhY2spCit7CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBz
dGF0aWMgY29uc3QgZmxvYXQgdGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFsID0gMC4xOwor
ICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2so
Y2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIHdhaXRGb3JUZXh0UHJl
ZGljdGlvbnNWaWV3QW5kU2VsZWN0Q2FuZGlkYXRlQXRJbmRleChpbmRleCwgY2FsbGJhY2tJRCwg
dGV4dFByZWRpY3Rpb25zUG9sbGluZ0ludGVydmFsKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IFRo
aXMgaXMgYSBuby1vcCBvbiBub24taW50ZXJuYWwgYnVpbGRzIGR1ZSB0byBVSUtleWJvYXJkUHJl
ZGljdGlvblZpZXcgYmVpbmcgdW5hdmFpbGFibGUuIElkZWFsbHksIHRoZXJlIHNob3VsZCBiZSBh
IGJldHRlciB3YXkgdG8KKyAgICAvLyByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhbmQgaW50ZXJhY3Qg
d2l0aCB0aGUgcHJlZGljdGl2ZSB0ZXh0IHZpZXcgdGhhdCB3aWxsIGJlIGNvbXBhdGlibGUgd2l0
aCBPcGVuU291cmNlLgorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisgICAgVU5VU0VEX1BBUkFN
KGNhbGxiYWNrKTsKKyNlbmRpZgorfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6d2FpdEZv
clRleHRQcmVkaWN0aW9uc1ZpZXdBbmRTZWxlY3RDYW5kaWRhdGVBdEluZGV4KGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGNhbGxiYWNrSUQsIGZsb2F0IGludGVydmFsKQoreworI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisgICAgaWYgKCFbVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IGFjdGl2ZUlu
c3RhbmNlXS5oYXNQcmVkaWN0aW9ucykgeworICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRj
aF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBpbnRlcnZhbCAqIE5TRUNfUEVSX1NFQyksIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF4oKSB7CisgICAgICAgICAgICB3YWl0Rm9yVGV4dFByZWRp
Y3Rpb25zVmlld0FuZFNlbGVjdENhbmRpZGF0ZUF0SW5kZXgoaW5kZXgsIGNhbGxiYWNrSUQsIGlu
dGVydmFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQbGF0
Zm9ybVdLVmlldyB3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIENHUmVjdCBwcmVkaWN0aW9uVmlld0ZyYW1lID0g
W1VJS2V5Ym9hcmRQcmVkaWN0aW9uVmlldyBhY3RpdmVJbnN0YW5jZV0uZnJhbWU7CisgICAgLy8g
VGhpcyBhc3N1bWVzIHRoZXJlIGFyZSAzIHByZWRpY3RlZCB0ZXh0IGNlbGxzIG9mIGVxdWFsIHdp
ZHRoLCB3aGljaCBpcyB0aGUgY2FzZSBvbiBpT1MuCisgICAgZmxvYXQgb2Zmc2V0WCA9IChpbmRl
eCAqIDIgKyAxKSAqIENHUmVjdEdldFdpZHRoKHByZWRpY3Rpb25WaWV3RnJhbWUpIC8gNjsKKyAg
ICBmbG9hdCBvZmZzZXRZID0gQ0dSZWN0R2V0SGVpZ2h0KHdlYlZpZXcud2luZG93LmZyYW1lKSAt
IENHUmVjdEdldEhlaWdodChbVUlLZXlib2FyZFByZWRpY3Rpb25WaWV3IGFjdGl2ZUluc3RhbmNl
XS5zdXBlcnZpZXcuZnJhbWUpICsgQ0dSZWN0R2V0SGVpZ2h0KHByZWRpY3Rpb25WaWV3RnJhbWUp
IC8gMjsKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSB0
YXA6Q0dQb2ludE1ha2Uob2Zmc2V0WCwgb2Zmc2V0WSkgY29tcGxldGlvbkJsb2NrOl57CisgICAg
ICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgp
OworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFja0lEKTsKKyAgICBVTlVTRURfUEFSQU0oaW50ZXJ2
YWwpOworI2VuZGlmCit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkaXNtaXNzRm9ybUFj
Y2Vzc29yeVZpZXcoKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNGY3ZWM0NmQ4YzgwOGY2N2EyMWYyODczNGQ3NmQ2ODVjNzA1YjZjMy4uYjM2N2YxM2Zl
ZGQ2NTUyZTU4YWMyY2VmYTY3OTdkZWQ5Y2NkNGFhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE2LTEwLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIGlPUyBhdXRvY29ycmVjdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGFuIGlucHV0IGV2ZW50IG9m
IGlucHV0VHlwZSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yODk4NzgxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgQWRkcyAyIG5ldyB1bml0IHRlc3RzIHZlcmlmeWluZyB0aGF0IGNhbmRpZGF0ZSB0ZXh0IGlu
c2VydGlvbiBjYW4gYmUgcHJldmVudGVkIHZpYSBiZWZvcmVpbnB1dCBldmVudHMsIGFuZCB0aGF0
CisgICAgICAgIGJlZm9yZWlucHV0IGFuZCBpbnB1dCBldmVudHMgb2YgdHlwZSAiaW5zZXJ0UmVw
bGFjZW1lbnRUZXh0IiBhcmUgZmlyZWQgd2hlbiBpbnNlcnRpbmcgY2FuZGlkYXRlIHRleHQgb24g
aU9TLgorCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJl
dmVudC1jYW5kaWRhdGUtaW5zZXJ0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUtaW5z
ZXJ0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9pbnB1dC1ldmVu
dHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRzLWluc2VydC1yZXBsYWNlbWVudC10ZXh0Lmh0
bWw6IEFkZGVkLgorCiAyMDE2LTEwLTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgImluc2VydEZyb21Ecm9wIiBhbmQgImRlbGV0ZUJ5
RHJhZyIgZm9yIHRoZSBJbnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2lvcy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2Vy
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlu
cHV0LWV2ZW50cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk4ZDBjMmU4NmM4ZTgzY2ZkNzJkOWY1ZmY4OWYwNWIyZmY2MzAwMTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYmVmb3JlLWlucHV0LWV2ZW50
cy1wcmV2ZW50LWNhbmRpZGF0ZS1pbnNlcnRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorCitUbyBtYW51YWxseSB0ZXN0LCB0eXBlICd0JyBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUg
YW5kIHRyeSB0byBzZWxlY3QgYSBjYW5kaWRhdGUuIFRoZSByZXBsYWNlbWVudCB0ZXh0IHNob3Vs
ZCBub3QgYmUgaW5zZXJ0ZWQuCisKK1BBU1M6IFRoZSByZXBsYWNlbWVudCB0ZXh0IHdhcyBwcmV2
ZW50ZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9iZWZvcmUt
aW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW9zL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1jYW5kaWRhdGUt
aW5zZXJ0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFhZjQ5MDJlNzM4ZGQwY2M1NmMzM2NmY2Q3NDdj
ZjkwZmE1MGI2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9iZWZvcmUtaW5wdXQtZXZlbnRzLXByZXZlbnQtY2FuZGlkYXRlLWluc2VydGlvbi5odG1sCkBA
IC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4KKworPGhlYWQ+CisgICAg
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wLCB1c2VyLXNj
YWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4i
PgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNvbnRyb2xsZXIuZGlkU2hv
d0tleWJvYXJkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRy
b2xsZXIudHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZCgidCIsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2VsZWN0VGV4dENhbmRpZGF0ZUF0
SW5kZXgoMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xs
ZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5n
bGVUYXBBdFBvaW50KCR4LCAkeSwgZnVuY3Rpb24oKSB7fSk7CisgICAgICAgIH0pKCk7CisgICAg
PC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgcHJvZ3Jlc3MgPSAwOworICAg
ICAgICB2YXIgcmVwbGFjZW1lbnRUZXh0ID0gIiI7CisgICAgICAgIGxldCB3cml0ZSA9IChtZXNz
YWdlKSA9PiBvdXRwdXQuaW5uZXJIVE1MICs9IChtZXNzYWdlICsgIjxicj4iKTsKKyAgICAgICAg
ZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKSB7CisgICAgICAgICAgICBsZXQgcmVjdCA9IGVkaXRhYmxl
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgbGV0IHNjcmlwdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgICAgICAgICAgc2NyaXB0
ID0gc2NyaXB0LnJlcGxhY2UoIiR4IiwgcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIpOworICAg
ICAgICAgICAgcmV0dXJuIHNjcmlwdC5yZXBsYWNlKCIkeSIsIHJlY3QudG9wICsgcmVjdC5oZWln
aHQgLyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJ
bnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBp
bmNyZW1lbnRQcm9ncmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByb2dyZXNzKys7Cisg
ICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8IHByb2dyZXNzICE9PSAyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZWRpdGFibGUudmFsdWUuaW5kZXhPZihyZXBsYWNlbWVu
dFRleHQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICB3cml0ZShgUEFTUzogVGhlIHJlcGxh
Y2VtZW50IHRleHQgd2FzIHByZXZlbnRlZC5gKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHdyaXRlKGBGQUlMOiBUaGUgaW5wdXQgdmFsdWUgJHtlZGl0YWJsZS52
YWx1ZX0gc2hvdWxkIG5vdCBjb250YWluIHJlcGxhY2VtZW50IHRleHQgJHtyZXBsYWNlbWVudFRl
eHR9LmApOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZWRpdGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5w
dXQiLCBwcmV2ZW50QmVmb3JlSW5wdXQpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcHJldmVudEJlZm9y
ZUlucHV0KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBl
ID09PSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IikgeworICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50VGV4dCA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgaWYgKCFyZXBsYWNlbWVudFRl
eHQpCisgICAgICAgICAgICAgICAgICAgIHdyaXRlKCJGQUlMOiBUaGUgcmVwbGFjZW1lbnQgdGV4
dCBpbnB1dCBldmVudCBsYWNrcyBkYXRhLiIpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgaW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICNl
ZGl0YWJsZSB7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgdG9wOiAwOworICAgICAgICBsZWZ0OiAwOworICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IHN0eWxlPSJtYXJn
aW46IDA7IiBvbmxvYWQ9cnVuVGVzdCgpPgorICAgIDxpbnB1dCBjb250ZW50ZWRpdGFibGUgaWQ9
ImVkaXRhYmxlIj48L2lucHV0PgorICAgIDxwPlRvIG1hbnVhbGx5IHRlc3QsIHR5cGUgJ3QnIGlu
dG8gdGhlIGNvbnRlbnRlZGl0YWJsZSBhbmQgdHJ5IHRvIHNlbGVjdCBhIGNhbmRpZGF0ZS4gVGhl
IHJlcGxhY2VtZW50IHRleHQgc2hvdWxkIG5vdCBiZSBpbnNlcnRlZC48L3A+CisgICAgPGRpdiBp
ZD0ib3V0cHV0Ij48L2Rpdj4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQtdGV4
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvaW5wdXQtZXZlbnRz
LWluc2VydC1yZXBsYWNlbWVudC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZmE0MGY5
ZjQ3NDA4MmRkZWExODBiMWI4MmJkOTdlM2M1MTk0OWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFjZW1lbnQt
dGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUbyBtYW51YWxseSB0ZXN0LCB0eXBl
ICd0JyBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUgYW5kIHRyeSB0byBzZWxlY3QgYSBjYW5kaWRh
dGUuIFRoZSBvdXRwdXQgc2hvdWxkIGluZGljYXRlIHRoYXQgdGhlIGJlZm9yZWlucHV0IGFuZCBp
bnB1dCBldmVudHMgZm9yIHRoZSB0ZXh0IHJlcGxhY2VtZW50IHdlcmUgaGFuZGxlZCwgYW5kIHRo
YXQgdGhlIHJhbmdlIG9mIHRoZSBiZWZvcmVpbnB1dCBldmVudCBpcyBmcm9tIDAgdG8gMS4KKwor
UEFTUzogSGFuZGxlZCB0ZXh0IHJlcGxhY2VtZW50IGJlZm9yZSBpbnB1dCBldmVudCB3aXRoIHJh
bmdlOiBbMCwgMV0uCitQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFjZW1lbnQgaW5wdXQgZXZlbnQu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9pbnB1dC1ldmVudHMt
aW5zZXJ0LXJlcGxhY2VtZW50LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9pbnB1dC1ldmVudHMtaW5zZXJ0LXJlcGxhY2VtZW50LXRleHQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWQ5YTc3NGVjMzQ4Mzk4Zjg5ODA1MTk0YjkyNWFkNzU5ZjU3NjU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2lucHV0LWV2ZW50cy1pbnNlcnQtcmVwbGFj
ZW1lbnQtdGV4dC5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRt
bD4KKworPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwt
c2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICA8c2NyaXB0IGlkPSJ1aS1zY3JpcHQi
IHR5cGU9InRleHQvcGxhaW4iPgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1
aUNvbnRyb2xsZXIuZGlkU2hvd0tleWJvYXJkQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICB1aUNvbnRyb2xsZXIudHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2Fy
ZCgidCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2Vs
ZWN0VGV4dENhbmRpZGF0ZUF0SW5kZXgoMSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KCR4LCAkeSwgZnVuY3Rpb24oKSB7fSk7Cisg
ICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIg
cHJvZ3Jlc3MgPSAwOworICAgICAgICBsZXQgd3JpdGUgPSAobWVzc2FnZSkgPT4gb3V0cHV0Lmlu
bmVySFRNTCArPSAobWVzc2FnZSArICI8YnI+Iik7CisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2Ny
aXB0KCkgeworICAgICAgICAgICAgbGV0IHJlY3QgPSBlZGl0YWJsZS5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKKyAgICAgICAgICAgIGxldCBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidWktc2NyaXB0IikudGV4dDsKKyAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNl
KCIkeCIsIHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyKTsKKyAgICAgICAgICAgIHJldHVybiBz
Y3JpcHQucmVwbGFjZSgiJHkiLCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMik7CisgICAgICAg
IH0KKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVk
KHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5jcmVtZW50UHJvZ3Jlc3Mo
KQorICAgICAgICB7CisgICAgICAgICAgICBwcm9ncmVzcysrOworICAgICAgICAgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lciB8fCBwcm9ncmVzcyAhPT0gMykKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgZWRpdGFibGUudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVkaXRhYmxlLmFkZEV2
ZW50TGlzdGVuZXIoImlucHV0IiwgbG9nSW5wdXRFdmVudCk7CisgICAgICAgICAgICBlZGl0YWJs
ZS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsIGxvZ0lucHV0RXZlbnQpOworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAg
aW5jcmVtZW50UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9nSW5wdXRFdmVudChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGV2ZW50LmlucHV0VHlwZSAhPT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gImJlZm9y
ZWlucHV0IikgeworICAgICAgICAgICAgICAgIGxldCBmaXJzdFJhbmdlID0gZXZlbnQuZ2V0VGFy
Z2V0UmFuZ2VzKClbMF07CisgICAgICAgICAgICAgICAgd3JpdGUoYFBBU1M6IEhhbmRsZWQgdGV4
dCByZXBsYWNlbWVudCBiZWZvcmUgaW5wdXQgZXZlbnQgd2l0aCByYW5nZTogWyR7Zmlyc3RSYW5n
ZS5zdGFydE9mZnNldH0sICR7Zmlyc3RSYW5nZS5lbmRPZmZzZXR9XS5gKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHdyaXRlKGBQQVNTOiBIYW5kbGVkIHRleHQgcmVwbGFj
ZW1lbnQgaW5wdXQgZXZlbnQuYCk7CisgICAgICAgICAgICBpbmNyZW1lbnRQcm9ncmVzcygpOwor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICNlZGl0YWJsZSB7Cisg
ICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgdG9w
OiAwOworICAgICAgICBsZWZ0OiAwOworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
fQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IHN0eWxlPSJtYXJnaW46IDA7IiBvbmxv
YWQ9cnVuVGVzdCgpPgorICAgIDxkaXYgY29udGVudGVkaXRhYmxlIGlkPSJlZGl0YWJsZSI+PC9k
aXY+CisgICAgPHA+VG8gbWFudWFsbHkgdGVzdCwgdHlwZSAndCcgaW50byB0aGUgY29udGVudGVk
aXRhYmxlIGFuZCB0cnkgdG8gc2VsZWN0IGEgY2FuZGlkYXRlLiBUaGUgb3V0cHV0IHNob3VsZCBp
bmRpY2F0ZSB0aGF0IHRoZSBiZWZvcmVpbnB1dCBhbmQgaW5wdXQgZXZlbnRzIGZvciB0aGUgdGV4
dCByZXBsYWNlbWVudCB3ZXJlIGhhbmRsZWQsIGFuZCB0aGF0IHRoZSByYW5nZSBvZiB0aGUgYmVm
b3JlaW5wdXQgZXZlbnQgaXMgZnJvbSAwIHRvIDEuPC9wPgorICAgIDxkaXYgaWQ9Im91dHB1dCI+
PC9kaXY+Cis8L2JvZHk+CisKKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>