<?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>223647</bug_id>
          
          <creation_ts>2021-03-23 11:02:25 -0700</creation_ts>
          <short_desc>Use enum classes and OptionSets for ControlStates::States</short_desc>
          <delta_ts>2021-03-29 09:32:14 -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>WebCore Misc.</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1742910</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-03-23 11:02:25 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744257</commentid>
    <comment_count>1</comment_count>
      <attachid>424383</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-03-26 11:38:34 -0700</bug_when>
    <thetext>Created attachment 424383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744264</commentid>
    <comment_count>2</comment_count>
      <attachid>424383</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-26 11:57:30 -0700</bug_when>
    <thetext>Comment on attachment 424383
Patch

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

&gt; Source/WebCore/platform/ControlStates.h:57
&gt; +        SpinUp = 1 &lt;&lt; 8, // Sub-state for HoverState and PressedState.

Should we instead just use { Hovered, Pressed } ?

&gt; Source/WebCore/platform/adwaita/ThemeAdwaita.cpp:262
&gt; +    else if (states.states().contains(ControlStates::States::Hovered))

So much states</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744277</commentid>
    <comment_count>3</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-03-26 12:18:31 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 424383 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424383&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ControlStates.h:57
&gt; &gt; +        SpinUp = 1 &lt;&lt; 8, // Sub-state for HoverState and PressedState.
&gt; 
&gt; Should we instead just use { Hovered, Pressed } ?

{ SpinUp } != { Hovered, Pressed }.

From RenderTheme::extractControlStatesForRenderer:

    if (isHovered(o)) {
        states.add(ControlStates::States::Hovered);
        if (isSpinUpButtonPartHovered(o))
            states.add(ControlStates::States::SpinUp);
    }
    if (isPressed(o)) {
        states.add(ControlStates::States::Pressed);
        if (isSpinUpButtonPartPressed(o))
            states.add(ControlStates::States::SpinUp);
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744726</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-29 09:31:54 -0700</bug_when>
    <thetext>Committed r275161: &lt;https://commits.webkit.org/r275161&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424383.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744727</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-29 09:32:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75957697&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424383</attachid>
            <date>2021-03-26 11:38:34 -0700</date>
            <delta_ts>2021-03-29 09:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223647-20210326143833.patch</filename>
            <type>text/plain</type>
            <size>33431</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkZmM2MWE3YmE2ZDc5
NTEzMzkxMmQ4NjBhMTBkYzExMThiYTM1OS4uMTlhNzBhODA5ZDgwYjVhM2NjYTY3ZWU2MWY2Mjhm
NDNmMDJjYTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTAzLTI2ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFz
c2VzIGFuZCBPcHRpb25TZXRzIGZvciBDb250cm9sU3RhdGVzOjpTdGF0ZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzY0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIb3ZlcmVkKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnNldENoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5k
ZXRlcm1pbmF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRyb2xT
dGF0ZXM6OkNvbnRyb2xTdGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udHJvbFN0YXRlczo6
c3RhdGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRyb2xTdGF0ZXM6OnNldFN0YXRl
cyk6CisgICAgICAgICogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNv
cmU6OlRoZW1lQWR3YWl0YTo6cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZUFk
d2FpdGE6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lQWR3YWl0YTo6cGFp
bnRTcGluQnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUb2dn
bGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6YnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3RlcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpUaGVtZU1hYzo6ZW5zdXJlZFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRDb2xvcldlbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQWR3YWl0YTo6cGFpbnRNZW51TGlzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9JbmRpY2F0
b3JDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2Jv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpbyk6CisKIDIw
MjEtMDMtMjQgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIyNzMxNTQpOiBbaU9TXSBUd28gbWFnbmlmaWVyIHN5bWJvbHMgb24gZ29v
Z2xlLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDdlNWEwYTFmNDJjZjMyZmNjM2FiZjBi
NjEwNGM3ZGE3MjM3NDczZDUuLjZlNzY3Mjc0YTU5ZTBmYmIwMTY3N2UwOWQ5YTc5MmUzOTljOWQy
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIEVsZW1l
bnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UsIFN0eWxlOjpJbnZhbGlkYXRpb25T
Y29wZSBpbnZhbGlkYQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHJlYWN0c1RvUHJlc3Mg
PSBmYWxzZTsKLSAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkgJiYg
cmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0
ZXM6OlByZXNzZWRTdGF0ZSkpCisgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFy
YW5jZSgpICYmIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigpLCBD
b250cm9sU3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQogICAgICAgICByZWFjdHNUb1ByZXNzID0g
dHJ1ZTsKIAogICAgIC8vIFRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZl
YXR1cmUgdGhhdCBvbmx5IHdvcmtzIGlmIHRoZQpAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgRWxl
bWVudDo6c2V0SG92ZXJlZChib29sIGZsYWcsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZSBpbnZh
bGlkYXRpb25TY29wZSkKICAgICB9CiAKICAgICBpZiAoYXV0byogc3R5bGUgPSByZW5kZXJTdHls
ZSgpOyBzdHlsZSAmJiBzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6SG92ZXJT
dGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJl
cigpLCBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkhvdmVyZWQpOwogfQogCiB2b2lkIEVsZW1lbnQ6
OnNldEJlaW5nRHJhZ2dlZChib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGQyMmJiNGQ3MTU2YzIwZmJmNDJlYTA0ZTU0ZjdlYTIxMzIzZGJm
MjIuLmIxMjJmNjE2NTczNTBhZjlhM2UzODBkOTdjZGFmODMzMDM4ZWZiYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMDc5LDcgKzIwNzksNyBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAg
ICBlbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlm
IChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
ICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlciwgQ29udHJv
bFN0YXRlczo6Rm9jdXNTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCku
c3RhdGVDaGFuZ2VkKCpyZW5kZXJlciwgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpGb2N1c2VkKTsK
ICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDRjMDBmNWY2ZDQzOGU0YjczNDIzZDZjYTg4MjA0ZjY0ZDhlMmQw
ZTAuLmM2N2M5YjZlMzkxMWMzMTQzOGU5NGNmN2QzMjY1MTBkZTY1NTQxNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQo
KQogICAgIHVwZGF0ZVdpbGxWYWxpZGF0ZUFuZFZhbGlkaXR5KCk7CiAgICAgaW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZSgpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxl
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hh
bmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKTsKKyAgICAgICAg
cmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0
ZXM6OlN0YXRlczo6RW5hYmxlZCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
cmVhZE9ubHlTdGF0ZUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKaW5kZXggZDNjZTk3NTUxZTk5OTc2NWMxMzJjNzI4NDMwY2RiMmU3MzRlZGI1Mi4uY2U1
MTRkOTNmMzgzZWRhNTQyNWUwNTA5NDBmOGY1MTllNjNjNjc4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCkKICAgICBpZiAoUmFkaW9CdXR0
b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAgICAgICBidXR0b25z
LT51cGRhdGVDaGVja2VkU3RhdGUoKnRoaXMpOwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVt
ZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRl
KTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCks
IENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsK
IAogICAgIC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZyb20gdGhlIHJlbmRlciB0cmVlIChtYXRj
aGluZwpAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRl
cm1pbmF0ZShib29sIG5ld1ZhbHVlKQogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsK
IAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzQXBwZWFyYW5j
ZSgpKQotICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIo
KSwgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS5zdGF0ZUNoYW5nZWQoKnJlbmRlcmVyKCksIENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hl
Y2tlZCk7CiB9CiAKIHVuc2lnbmVkIEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCA4MmMyZGZhZThmMTA3
NmU0NzI5ZDAxYjg1MzhjZjVmODg3OGM5NzUyLi40MjlmZDMyYjljMzJjNzgwZjViMjQ2M2E1Njli
ZTQ5OWIwODc0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAgICAgICAgIGlm
IChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAgICBpbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5zdHlsZSgpLmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0
YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdlZCgq
cmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgaW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udHJvbFN0YXRlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udHJvbFN0YXRlcy5o
CmluZGV4IGIzN2ZmNDkyMDY5YWNlYTlkYzdhYjQ4ZjYwYWEzMTJhODk3OGJhMjMuLjI5NWJhY2Ew
NWQyNmZmYzIzZGM3MzFjYWE0ODFlOGQ2ZDBiNjVmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRyb2xTdGF0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250cm9sU3RhdGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ29udHJvbFN0YXRl
c19oCiAjZGVmaW5lIENvbnRyb2xTdGF0ZXNfaAogCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgog
CkBAIC00NCwzNCArNDUsMjggQEAgdHlwZWRlZiBpZCBQbGF0Zm9ybUNvbnRyb2xJbnN0YW5jZTsK
IGNsYXNzIENvbnRyb2xTdGF0ZXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIGVudW0gewotICAgICAgICBIb3ZlclN0YXRlID0gMSwKLSAgICAgICAgUHJlc3Nl
ZFN0YXRlID0gMSA8PCAxLAotICAgICAgICBGb2N1c1N0YXRlID0gMSA8PCAyLAotICAgICAgICBF
bmFibGVkU3RhdGUgPSAxIDw8IDMsCi0gICAgICAgIENoZWNrZWRTdGF0ZSA9IDEgPDwgNCwKLSAg
ICAgICAgRGVmYXVsdFN0YXRlID0gMSA8PCA1LAotICAgICAgICBXaW5kb3dJbmFjdGl2ZVN0YXRl
ID0gMSA8PCA2LAotICAgICAgICBJbmRldGVybWluYXRlU3RhdGUgPSAxIDw8IDcsCi0gICAgICAg
IFNwaW5VcFN0YXRlID0gMSA8PCA4LCAvLyBTdWItc3RhdGUgZm9yIEhvdmVyU3RhdGUgYW5kIFBy
ZXNzZWRTdGF0ZS4KLSAgICAgICAgUHJlc2VudGluZ1N0YXRlID0gMSA8PCA5LAotICAgICAgICBB
bGxTdGF0ZXMgPSAweGZmZmZmZmZmCisgICAgZW51bSBjbGFzcyBTdGF0ZXMgOiB1aW50MTZfdCB7
CisgICAgICAgIEhvdmVyZWQgPSAxIDw8IDAsCisgICAgICAgIFByZXNzZWQgPSAxIDw8IDEsCisg
ICAgICAgIEZvY3VzZWQgPSAxIDw8IDIsCisgICAgICAgIEVuYWJsZWQgPSAxIDw8IDMsCisgICAg
ICAgIENoZWNrZWQgPSAxIDw8IDQsCisgICAgICAgIERlZmF1bHQgPSAxIDw8IDUsCisgICAgICAg
IFdpbmRvd0luYWN0aXZlID0gMSA8PCA2LAorICAgICAgICBJbmRldGVybWluYXRlID0gMSA8PCA3
LAorICAgICAgICBTcGluVXAgPSAxIDw8IDgsIC8vIFN1Yi1zdGF0ZSBmb3IgSG92ZXJTdGF0ZSBh
bmQgUHJlc3NlZFN0YXRlLgorICAgICAgICBQcmVzZW50aW5nID0gMSA8PCA5LAogICAgIH07CiAK
LSAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YXRlczsKLQotICAgIENvbnRyb2xTdGF0ZXMoU3RhdGVz
IHN0YXRlcykKKyAgICBDb250cm9sU3RhdGVzKE9wdGlvblNldDxTdGF0ZXM+IHN0YXRlcykKICAg
ICAgICAgOiBtX3N0YXRlcyhzdGF0ZXMpCiAgICAgewogICAgIH0KIAotICAgIENvbnRyb2xTdGF0
ZXMoKQotICAgICAgICA6IENvbnRyb2xTdGF0ZXMoMCkKLSAgICB7Ci0gICAgfQorICAgIENvbnRy
b2xTdGF0ZXMoKSA9IGRlZmF1bHQ7CiAKLSAgICBTdGF0ZXMgc3RhdGVzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZXM7IH0KLSAgICB2b2lkIHNldFN0YXRlcyhTdGF0ZXMgbmV3U3RhdGVzKQorICAg
IE9wdGlvblNldDxTdGF0ZXM+IHN0YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVzOyB9Cisg
ICAgdm9pZCBzZXRTdGF0ZXMoT3B0aW9uU2V0PFN0YXRlcz4gbmV3U3RhdGVzKQogICAgIHsKICAg
ICAgICAgaWYgKG5ld1N0YXRlcyA9PSBtX3N0YXRlcykKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk1LDcgKzkwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgU3RhdGVzIG1f
c3RhdGVzOworICAgIE9wdGlvblNldDxTdGF0ZXM+IG1fc3RhdGVzOwogICAgIGJvb2wgbV9pbml0
aWFsaXplZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzUmVwYWludCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzRGlydHkgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCmluZGV4IDgzMjhkMTYyOGYwZTBhOTRkYzE0M2Yx
MjkxN2VhYzc2ODRiMmNlMjAuLmQ4MGI5NWI4ZjliZTI0NjIyZDAxYmU0ZDA0MmYyMzZkNjRmM2M0
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvVGhlbWVBZHdh
aXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0
YS5jcHAKQEAgLTI1NywyMCArMjU3LDIwIEBAIHZvaWQgVGhlbWVBZHdhaXRhOjpwYWludENoZWNr
Ym94KENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljCiAKICAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KGZpZWxkUmVjdCwgY29ybmVyKTsKICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbFJ1bGUoV2luZFJ1bGU6Ok5vblplcm8pOwotICAgIGlmICghKHN0YXRlcy5z
dGF0ZXMoKSAmIENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZSkpCisgICAgaWYgKCFzdGF0ZXMu
c3RhdGVzKCkuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcih0b2dnbGVCYWNrZ3JvdW5kRGlzYWJsZWRD
b2xvcik7Ci0gICAgZWxzZSBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6SG92
ZXJTdGF0ZSkKKyAgICBlbHNlIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpIb3ZlcmVkKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcih0b2dnbGVCYWNrZ3JvdW5kSG92ZXJlZENvbG9yKTsKICAgICBlbHNlCiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IodG9nZ2xlQmFja2dyb3VuZENvbG9yKTsKICAgICBn
cmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgcGF0aC5jbGVhcigpOwogCi0gICAg
aWYgKHN0YXRlcy5zdGF0ZXMoKSAmIChDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUgfCBDb250
cm9sU3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGUpKSB7CisgICAgaWYgKHN0YXRlcy5zdGF0ZXMo
KS5jb250YWluc0FueSh7IENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCwgQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpJbmRldGVybWluYXRlIH0pKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgY2hlY2tlZFN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShmaWVsZFJlY3QueCgpLCBmaWVsZFJlY3QueSgpKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9u
KGZpZWxkUmVjdC53aWR0aCgpIC8gdG9nZ2xlU2l6ZSwgZmllbGRSZWN0LmhlaWdodCgpIC8gdG9n
Z2xlU2l6ZSkpOwotICAgICAgICBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6
Q2hlY2tlZFN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29u
dHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkKSkgewogICAgICAgICAgICAgcGF0aC5tb3ZlVG8o
eyAyLjQzLCA2LjU3IH0pOwogICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8oeyA3LjUsIDExLjYz
IH0pOwogICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8oeyAxNCwgNSB9KTsKQEAgLTI4MSw3ICsy
ODEsNyBAQCB2b2lkIFRoZW1lQWR3YWl0YTo6cGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpYwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSZWN0KDIsIDUsIDEwLCA0KSwgY29ybmVyKTsK
IAotICAgICAgICBpZiAoIShzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpFbmFibGVk
U3RhdGUpKQorICAgICAgICBpZiAoIXN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhDb250cm9sU3Rh
dGVzOjpTdGF0ZXM6OkVuYWJsZWQpKQogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcih0b2dnbGVEaXNhYmxlZENvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcih0b2dnbGVDb2xvcik7CkBAIC0yOTAsNyArMjkw
LDcgQEAgdm9pZCBUaGVtZUFkd2FpdGE6OnBhaW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyYgc3Rh
dGVzLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWMKICAgICAgICAgcGF0aC5jbGVhcigpOwogICAg
IH0KIAotICAgIGlmIChzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRl
KQorICAgIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVz
OjpGb2N1c2VkKSkKICAgICAgICAgcGFpbnRGb2N1cyhncmFwaGljc0NvbnRleHQsIHpvb21lZFJl
Y3QsIHRvZ2dsZUZvY3VzT2Zmc2V0KTsKIH0KIApAQCAtMzE4LDI2ICszMTgsMjYgQEAgdm9pZCBU
aGVtZUFkd2FpdGE6OnBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ28KIAogICAgIHBhdGguYWRkRWxsaXBzZShmaWVsZFJlY3QpOwogICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShXaW5kUnVsZTo6Tm9uWmVybyk7Ci0gICAgaWYg
KCEoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkKKyAgICBp
ZiAoIXN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkVuYWJs
ZWQpKQogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHRvZ2dsZUJhY2tncm91
bmREaXNhYmxlZENvbG9yKTsKLSAgICBlbHNlIGlmIChzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9s
U3RhdGVzOjpIb3ZlclN0YXRlKQorICAgIGVsc2UgaWYgKHN0YXRlcy5zdGF0ZXMoKS5jb250YWlu
cyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkhvdmVyZWQpKQogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKHRvZ2dsZUJhY2tncm91bmRIb3ZlcmVkQ29sb3IpOwogICAgIGVsc2UK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcih0b2dnbGVCYWNrZ3JvdW5kQ29s
b3IpOwogICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICBwYXRoLmNsZWFy
KCk7CiAKLSAgICBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0
YXRlKSB7CisgICAgaWYgKHN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhDb250cm9sU3RhdGVzOjpT
dGF0ZXM6OkNoZWNrZWQpKSB7CiAgICAgICAgIGZpZWxkUmVjdC5pbmZsYXRlKC0oZmllbGRSZWN0
LndpZHRoKCkgLSBmaWVsZFJlY3Qud2lkdGgoKSAqIDAuNzApKTsKICAgICAgICAgcGF0aC5hZGRF
bGxpcHNlKGZpZWxkUmVjdCk7Ci0gICAgICAgIGlmICghKHN0YXRlcy5zdGF0ZXMoKSAmIENvbnRy
b2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZSkpCisgICAgICAgIGlmICghc3RhdGVzLnN0YXRlcygpLmNv
bnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6RW5hYmxlZCkpCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHRvZ2dsZURpc2FibGVkQ29sb3IpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHRvZ2dsZUNvbG9y
KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgIH0KIAotICAg
IGlmIChzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlKQorICAgIGlm
IChzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpGb2N1c2Vk
KSkKICAgICAgICAgcGFpbnRGb2N1cyhncmFwaGljc0NvbnRleHQsIHpvb21lZFJlY3QsIHRvZ2ds
ZUZvY3VzT2Zmc2V0KTsKIH0KIApAQCAtMzU5LDE3ICszNTksMTcgQEAgdm9pZCBUaGVtZUFkd2Fp
dGE6OnBhaW50QnV0dG9uKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0MKIAogICAgIHBhdGguYWRkUm91bmRlZFJlY3QoZmllbGRSZWN0LCBjb3JuZXIpOwog
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShXaW5kUnVsZTo6Tm9uWmVybyk7Ci0gICAg
aWYgKCEoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkKKyAg
ICBpZiAoIXN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkVu
YWJsZWQpKQogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGJ1dHRvbkJhY2tn
cm91bmREaXNhYmxlZENvbG9yKTsKLSAgICBlbHNlIGlmIChzdGF0ZXMuc3RhdGVzKCkgJiBDb250
cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpCisgICAgZWxzZSBpZiAoc3RhdGVzLnN0YXRlcygpLmNv
bnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCkpCiAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3IoYnV0dG9uQmFja2dyb3VuZFByZXNzZWRDb2xvcik7Ci0gICAg
ZWxzZSBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6SG92ZXJTdGF0ZSkKKyAg
ICBlbHNlIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVz
OjpIb3ZlcmVkKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihidXR0b25C
YWNrZ3JvdW5kSG92ZXJlZENvbG9yKTsKICAgICBlbHNlCiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IoYnV0dG9uQmFja2dyb3VuZENvbG9yKTsKICAgICBncmFwaGljc0NvbnRl
eHQuZmlsbFBhdGgocGF0aCk7CiAKLSAgICBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0
YXRlczo6Rm9jdXNTdGF0ZSkKKyAgICBpZiAoc3RhdGVzLnN0YXRlcygpLmNvbnRhaW5zKENvbnRy
b2xTdGF0ZXM6OlN0YXRlczo6Rm9jdXNlZCkpCiAgICAgICAgIHBhaW50Rm9jdXMoZ3JhcGhpY3ND
b250ZXh0LCB6b29tZWRSZWN0LCBidXR0b25Gb2N1c09mZnNldCk7CiB9CiAKQEAgLTM5OCwxMSAr
Mzk4LDExIEBAIHZvaWQgVGhlbWVBZHdhaXRhOjpwYWludFNwaW5CdXR0b24oQ29udHJvbFN0YXRl
cyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoCiAgICAgRmxvYXRSZWN0IGJ1dHRvblJl
Y3QgPSBmaWVsZFJlY3Q7CiAgICAgYnV0dG9uUmVjdC5zZXRIZWlnaHQoZmllbGRSZWN0LmhlaWdo
dCgpIC8gMi4wKTsKICAgICB7Ci0gICAgICAgIGlmIChzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9s
U3RhdGVzOjpTcGluVXBTdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGVzLnN0YXRlcygpLmNvbnRh
aW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6U3BpblVwKSkgewogICAgICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvblJlY3QsIGNvcm5lciwgY29ybmVy
LCB7IH0sIHsgfSkpOwotICAgICAgICAgICAgaWYgKHN0YXRlcy5zdGF0ZXMoKSAmIENvbnRyb2xT
dGF0ZXM6OlByZXNzZWRTdGF0ZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29u
dGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpQcmVzc2VkKSkKICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNwaW5CdXR0b25CYWNrZ3JvdW5kUHJlc3NlZENv
bG9yKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlcy5zdGF0ZXMoKSAmIENvbnRyb2xTdGF0
ZXM6OkhvdmVyU3RhdGUpCisgICAgICAgICAgICBlbHNlIGlmIChzdGF0ZXMuc3RhdGVzKCkuY29u
dGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpIb3ZlcmVkKSkKICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENv
bG9yKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIHBhdGguY2xlYXIoKTsKQEAgLTQyMCwxMSArNDIwLDExIEBAIHZvaWQgVGhlbWVBZHdh
aXRhOjpwYWludFNwaW5CdXR0b24oQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRl
eHQmIGdyYXBoCiAKICAgICBidXR0b25SZWN0Lm1vdmUoMCwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7
CiAgICAgewotICAgICAgICBpZiAoIShzdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpT
cGluVXBTdGF0ZSkpIHsKKyAgICAgICAgaWYgKCFzdGF0ZXMuc3RhdGVzKCkuY29udGFpbnMoQ29u
dHJvbFN0YXRlczo6U3RhdGVzOjpTcGluVXApKSB7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uUmVjdCwgeyB9LCB7IH0sIGNvcm5lciwgY29y
bmVyKSk7Ci0gICAgICAgICAgICBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6
UHJlc3NlZFN0YXRlKQorICAgICAgICAgICAgaWYgKHN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhD
b250cm9sU3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQogICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3Ioc3BpbkJ1dHRvbkJhY2tncm91bmRQcmVzc2VkQ29sb3IpOwot
ICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6SG92
ZXJTdGF0ZSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhD
b250cm9sU3RhdGVzOjpTdGF0ZXM6OkhvdmVyZWQpKQogICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3Ioc3BpbkJ1dHRvbkJhY2tncm91bmRIb3ZlcmVkQ29sb3IpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAg
cGF0aC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4
IGJmODIwMDQzMTUzYjRkYzVkZjgyMzk0M2Y4NmE1OWE0NDFmMDUyYjEuLjJiNDFhNjRjZGQzNWEz
MTBjMTkzNDg0OGFiMTBmYWRkZjJhMjM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KQEAgLTE5NywyNyArMTk3LDI3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0YXRl
cyhOU0NlbGwqIGNlbGwsIGNvbnN0IENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGJvb2wK
ICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFj
ZUVuYWJsZWQoKSkKICAgICAgICAgdXNlQW5pbWF0aW9uID0gZmFsc2U7CiAgICAgCi0gICAgQ29u
dHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CisgICAg
YXV0byBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLnN0YXRlcygpOwogCiAgICAgLy8gSG92ZXIgc3Rh
dGUgaXMgbm90IHN1cHBvcnRlZCBieSBBcXVhLgogICAgIAogICAgIC8vIFByZXNzZWQgc3RhdGUK
ICAgICBib29sIG9sZFByZXNzZWQgPSBbY2VsbCBpc0hpZ2hsaWdodGVkXTsKLSAgICBib29sIHBy
ZXNzZWQgPSBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGU7CisgICAgYm9vbCBw
cmVzc2VkID0gc3RhdGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCk7
CiAgICAgaWYgKHByZXNzZWQgIT0gb2xkUHJlc3NlZCkgewogICAgICAgICBbKE5TQnV0dG9uQ2Vs
bCopY2VsbCBfc2V0SGlnaGxpZ2h0ZWQ6cHJlc3NlZCBhbmltYXRlZDp1c2VBbmltYXRpb25dOwog
ICAgIH0KICAgICAKICAgICAvLyBFbmFibGVkIHN0YXRlCiAgICAgYm9vbCBvbGRFbmFibGVkID0g
W2NlbGwgaXNFbmFibGVkXTsKLSAgICBib29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBDb250cm9sU3Rh
dGVzOjpFbmFibGVkU3RhdGU7CisgICAgYm9vbCBlbmFibGVkID0gc3RhdGVzLmNvbnRhaW5zKENv
bnRyb2xTdGF0ZXM6OlN0YXRlczo6RW5hYmxlZCk7CiAgICAgaWYgKGVuYWJsZWQgIT0gb2xkRW5h
YmxlZCkKICAgICAgICAgW2NlbGwgc2V0RW5hYmxlZDplbmFibGVkXTsKIAogICAgIC8vIENoZWNr
ZWQgYW5kIEluZGV0ZXJtaW5hdGUKICAgICBib29sIG9sZEluZGV0ZXJtaW5hdGUgPSBbY2VsbCBz
dGF0ZV0gPT0gTlNDb250cm9sU3RhdGVWYWx1ZU1peGVkOwotICAgIGJvb2wgaW5kZXRlcm1pbmF0
ZSA9IChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGUpOwotICAgIGJv
b2wgY2hlY2tlZCA9IHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkNoZWNrZWRTdGF0ZTsKKyAgICBi
b29sIGluZGV0ZXJtaW5hdGUgPSBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVz
OjpJbmRldGVybWluYXRlKTsKKyAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMuY29udGFpbnMoQ29u
dHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkKTsKICAgICBib29sIG9sZENoZWNrZWQgPSBbY2Vs
bCBzdGF0ZV0gPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uOwogICAgIGlmIChvbGRJbmRldGVybWlu
YXRlICE9IGluZGV0ZXJtaW5hdGUgfHwgY2hlY2tlZCAhPSBvbGRDaGVja2VkKSB7CiAgICAgICAg
IE5TQ29udHJvbFN0YXRlVmFsdWUgbmV3U3RhdGUgPSBpbmRldGVybWluYXRlID8gTlNDb250cm9s
U3RhdGVWYWx1ZU1peGVkIDogKGNoZWNrZWQgPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBOU0Nv
bnRyb2xTdGF0ZVZhbHVlT2ZmKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRh
dGVTdGF0ZXMoTlNDZWxsKiBjZWxsLCBjb25zdCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVz
LCBib29sCiAgICAgfQogCiAgICAgLy8gUHJlc2VudGluZyBzdGF0ZQotICAgIGlmIChzdGF0ZXMg
JiBDb250cm9sU3RhdGVzOjpQcmVzZW50aW5nU3RhdGUpCisgICAgaWYgKHN0YXRlcy5jb250YWlu
cyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OlByZXNlbnRpbmcpKQogICAgICAgICBbKE5TQnV0dG9u
Q2VsbCopY2VsbCBfc2V0SGlnaGxpZ2h0ZWQ6WUVTIGFuaW1hdGVkOk5PXTsKIAogICAgIC8vIFdp
bmRvdyBpbmFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNoZWNrZWQgZXhwbGljaXRs
eSwgc2luY2Ugd2UgcGFpbnQgcGFyZW50ZWQgdG8gCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGlj
IHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0
YXRlcyYgY29udHJvbFN0YXQKICAgICBOU1ZpZXcgKnZpZXcgPSBUaGVtZU1hYzo6ZW5zdXJlZFZp
ZXcoc2Nyb2xsVmlldywgY29udHJvbFN0YXRlcywgdHJ1ZSAvKiB1c2VVbnBhcmVudGVkVmlldyAq
Lyk7CiAKICAgICBib29sIG5lZWRzUmVwYWludCA9IGZhbHNlOwotICAgIGJvb2wgaXNDZWxsRm9j
dXNlZCA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRl
OworICAgIGJvb2wgaXNDZWxsRm9jdXNlZCA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCkuY29udGFp
bnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpGb2N1c2VkKTsKIAogICAgIGlmIChbdG9nZ2xlQnV0
dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSkgewogICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CkBAIC01MzQsOSArNTM0LDkgQEAgc3RhdGlj
IHZvaWQgc2V0VXBCdXR0b25DZWxsKE5TQnV0dG9uQ2VsbCAqY2VsbCwgQ29udHJvbFBhcnQgcGFy
dCwgY29uc3QgQ29udHJvbFMKIAogc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQ
YXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnN0IEludFNp
emUmIHpvb21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgQ29udHJvbFN0YXRlczo6
U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CisgICAgYXV0byBzdGF0ZXMg
PSBjb250cm9sU3RhdGVzLnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqY2VsbDsKLSAgICBp
ZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RGVmYXVsdFN0YXRlKSB7CisgICAgaWYgKHN0YXRl
cy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkRlZmF1bHQpKSB7CiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNCdXR0b25DZWxsPj4gZGVmYXVsdENlbGwg
PSBidXR0b25DZWxsKERlZmF1bHRCdXR0b25DZWxsKTsKICAgICAgICAgY2VsbCA9IGRlZmF1bHRD
ZWxsLmdldCgpLmdldCgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RhdGlj
IHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJv
bFN0YXRlcywgR3JhcGhpY3MKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29u
dHJvbCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgQ29udHJvbFN0YXRl
czo6U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CisgICAgYXV0byBzdGF0
ZXMgPSBjb250cm9sU3RhdGVzLnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2Vs
bCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3RhdGVzLCBJbnRTaXplKHpvb21lZFJlY3Quc2l6ZSgp
KSwgem9vbUZhY3Rvcik7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwogCkBAIC01ODYsOCArNTg2LDggQEAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24o
Q29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3MK
ICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKICAgICBOU0J1dHRvbkNlbGwg
KnByZXZpb3VzRGVmYXVsdEJ1dHRvbkNlbGwgPSBbd2luZG93IGRlZmF1bHRCdXR0b25DZWxsXTsK
IAotICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KGJ1dHRvbkNlbGwsIGNvbnRleHQsIGluZmxhdGVkUmVjdCwgdmll
dywgdHJ1ZSwgc3RhdGVzICYgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZSwgZGV2aWNlU2NhbGVG
YWN0b3IpOwotICAgIGlmIChzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpEZWZhdWx0U3RhdGUpCisg
ICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhW
aWV3SW50b0NvbnRleHQoYnV0dG9uQ2VsbCwgY29udGV4dCwgaW5mbGF0ZWRSZWN0LCB2aWV3LCB0
cnVlLCBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpGb2N1c2VkKSwgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIGlmIChzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6
U3RhdGVzOjpEZWZhdWx0KSkKICAgICAgICAgW3dpbmRvdyBzZXREZWZhdWx0QnV0dG9uQ2VsbDpi
dXR0b25DZWxsXTsKICAgICBlbHNlIGlmIChbcHJldmlvdXNEZWZhdWx0QnV0dG9uQ2VsbCBpc0Vx
dWFsOmJ1dHRvbkNlbGxdKQogICAgICAgICBbd2luZG93IHNldERlZmF1bHRCdXR0b25DZWxsOm5p
bF07CkBAIC02MzMsOSArNjMzLDkgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xT
dGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIE5T
U3RyaW5nICpjb3JlVUlTdGF0ZTsKICAgICBhdXRvIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3Rh
dGVzKCk7Ci0gICAgaWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkK
KyAgICBpZiAoIXN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkVuYWJsZWQp
KQogICAgICAgICBjb3JlVUlTdGF0ZSA9IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlTdGF0ZURp
c2FibGVkOwotICAgIGVsc2UgaWYgKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OlByZXNzZWRTdGF0
ZSkKKyAgICBlbHNlIGlmIChzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpQ
cmVzc2VkKSkKICAgICAgICAgY29yZVVJU3RhdGUgPSAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1VJ
U3RhdGVQcmVzc2VkOwogICAgIGVsc2UKICAgICAgICAgY29yZVVJU3RhdGUgPSAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1VJU3RhdGVBY3RpdmU7CkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIHZv
aWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVdpZGdldEtl
eTogKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVdpZGdldEJ1dHRvbkxpdHRsZUFycm93cywKICAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVNpemVLZXk6IGNvcmVVSVNpemUsCiAgICAg
ICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlTdGF0ZUtleTogY29yZVVJU3RhdGUsCi0gICAg
ICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlWYWx1ZUtleTogKHN0YXRlcyAmIENvbnRyb2xT
dGF0ZXM6OlNwaW5VcFN0YXRlKSA/IEAxIDogQDAsCisgICAgICAgIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVUlWYWx1ZUtleTogc3RhdGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6
U3BpblVwKSA/IEAxIDogQDAsCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlJc0Zs
aXBwZWRLZXk6IEBOTywKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVNjYWxlS2V5
OiBAMSwKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSU1hc2tPbmx5S2V5OiBATk8K
QEAgLTY4OSw3ICs2ODksNyBAQCBOU1ZpZXcgKlRoZW1lTWFjOjplbnN1cmVkVmlldyhTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3LCBjb25zdCBDb250cm9sU3RhdGVzJiBjb250cgogICAgIFt0aGVtZVZp
ZXcgc2V0QXBwZWFyYW5jZTpbTlNBcHBlYXJhbmNlIGN1cnJlbnRBcHBlYXJhbmNlXV07CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICB0aGVtZVdpbmRvd0hhc0tl
eUFwcGVhcmFuY2UgPSAhKGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpX
aW5kb3dJbmFjdGl2ZVN0YXRlKTsKKyAgICB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2UgPSAh
Y29udHJvbFN0YXRlcy5zdGF0ZXMoKS5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6Oldp
bmRvd0luYWN0aXZlKTsKIAogICAgIHJldHVybiB0aGVtZVZpZXc7CiB9CkBAIC03NTAsNyArNzUw
LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRDb2xvcldlbGwoQ29udHJvbFN0YXRlcyYgY29udHJvbFN0
YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9y
IHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBDb250
cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJvbFN0YXRlcy5zdGF0ZXMoKTsKKyAgICBh
dXRvIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxsICpi
dXR0b25DZWxsID0gYnV0dG9uKENvbG9yV2VsbFBhcnQsIGNvbnRyb2xTdGF0ZXMsIEludFNpemUo
em9vbWVkUmVjdC5zaXplKCkpLCB6b29tRmFjdG9yKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMg
dm9pZCBwYWludENvbG9yV2VsbChDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleAogICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldyB3aW5kb3ddOwog
ICAgIE5TQnV0dG9uQ2VsbCAqcHJldmlvdXNEZWZhdWx0QnV0dG9uQ2VsbCA9IFt3aW5kb3cgZGVm
YXVsdEJ1dHRvbkNlbGxdOwogCi0gICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBUaGVtZU1hYzo6ZHJh
d0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoYnV0dG9uQ2VsbCwgY29udGV4dCwg
aW5mbGF0ZWRSZWN0LCB2aWV3LCB0cnVlLCBzdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0
YXRlLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoYnV0dG9uQ2VsbCwgY29u
dGV4dCwgaW5mbGF0ZWRSZWN0LCB2aWV3LCB0cnVlLCBzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpGb2N1c2VkKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmIChbcHJl
dmlvdXNEZWZhdWx0QnV0dG9uQ2VsbCBpc0VxdWFsOmJ1dHRvbkNlbGxdKQogICAgICAgICBbd2lu
ZG93IHNldERlZmF1bHRCdXR0b25DZWxsOm5pbF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCmluZGV4IDIxZTE3ZWVhY2MyNmQ3OTE1Y2Q5MWZkNzRmZDkyYTVmNWY5
OWE2NzAuLjAxMzY0NTI4ODMxYTBjNDA4NmI5ZTA4NjM4YzExOWRmYjUyMjFkMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNzY3LDExICs3NjcsMTEgQEAg
Ym9vbCBSZW5kZXJUaGVtZTo6c3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSBjb25zdAogYm9vbCBSZW5kZXJUaGVtZTo6c3RhdGVDaGFuZ2VkKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgQ29udHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlKSBjb25zdAogewogICAgIC8vIERl
ZmF1bHQgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGUgY29udHJvbHMgZG9uJ3QgcmVzcG9uZCB0
byBjaGFuZ2VzIGluIDpob3ZlciBzdGF0ZQotICAgIGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVz
OjpIb3ZlclN0YXRlICYmICFzdXBwb3J0c0hvdmVyKG8uc3R5bGUoKSkpCisgICAgaWYgKHN0YXRl
ID09IENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6SG92ZXJlZCAmJiAhc3VwcG9ydHNIb3ZlcihvLnN0
eWxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBc3N1bWUgcHJlc3NlZCBz
dGF0ZSBpcyBvbmx5IHJlc3BvbmRlZCB0byBpZiB0aGUgY29udHJvbCBpcyBlbmFibGVkLgotICAg
IGlmIChzdGF0ZSA9PSBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUgJiYgIWlzRW5hYmxlZChv
KSkKKyAgICBpZiAoc3RhdGUgPT0gQ29udHJvbFN0YXRlczo6U3RhdGVzOjpQcmVzc2VkICYmICFp
c0VuYWJsZWQobykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFJlcGFpbnQgdGhl
IGNvbnRyb2wuCkBAIC03ODcsMzMgKzc4NywzMyBAQCB2b2lkIFJlbmRlclRoZW1lOjp1cGRhdGVD
b250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyQm94JiBib3gsIENvbnRyb2xTdAog
ICAgICAgICBjb250cm9sU3RhdGVzLnNldFRpbWVTaW5jZUNvbnRyb2xXYXNGb2N1c2VkKGJveC5w
YWdlKCkuZm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSk7CiB9CiAKLUNv
bnRyb2xTdGF0ZXM6OlN0YXRlcyBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0CitPcHRpb25TZXQ8Q29udHJvbFN0
YXRlczo6U3RhdGVzPiBSZW5kZXJUaGVtZTo6ZXh0cmFjdENvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QmIG8pIGNvbnN0CiB7Ci0gICAgQ29udHJvbFN0YXRlczo6U3Rh
dGVzIHN0YXRlcyA9IDA7CisgICAgT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3Rh
dGVzOwogICAgIGlmIChpc0hvdmVyZWQobykpIHsKLSAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xT
dGF0ZXM6OkhvdmVyU3RhdGU7CisgICAgICAgIHN0YXRlcy5hZGQoQ29udHJvbFN0YXRlczo6U3Rh
dGVzOjpIb3ZlcmVkKTsKICAgICAgICAgaWYgKGlzU3BpblVwQnV0dG9uUGFydEhvdmVyZWQobykp
Ci0gICAgICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6U3BpblVwU3RhdGU7CisgICAg
ICAgICAgICBzdGF0ZXMuYWRkKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6U3BpblVwKTsKICAgICB9
CiAgICAgaWYgKGlzUHJlc3NlZChvKSkgewotICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRl
czo6UHJlc3NlZFN0YXRlOworICAgICAgICBzdGF0ZXMuYWRkKENvbnRyb2xTdGF0ZXM6OlN0YXRl
czo6UHJlc3NlZCk7CiAgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKG8pKQot
ICAgICAgICAgICAgc3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OlNwaW5VcFN0YXRlOworICAgICAg
ICAgICAgc3RhdGVzLmFkZChDb250cm9sU3RhdGVzOjpTdGF0ZXM6OlNwaW5VcCk7CiAgICAgfQog
ICAgIGlmIChpc0ZvY3VzZWQobykgJiYgby5zdHlsZSgpLm91dGxpbmVTdHlsZUlzQXV0bygpID09
IE91dGxpbmVJc0F1dG86Ok9uKQotICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6Rm9j
dXNTdGF0ZTsKKyAgICAgICAgc3RhdGVzLmFkZChDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkZvY3Vz
ZWQpOwogICAgIGlmIChpc0VuYWJsZWQobykpCi0gICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3Rh
dGVzOjpFbmFibGVkU3RhdGU7CisgICAgICAgIHN0YXRlcy5hZGQoQ29udHJvbFN0YXRlczo6U3Rh
dGVzOjpFbmFibGVkKTsKICAgICBpZiAoaXNDaGVja2VkKG8pKQotICAgICAgICBzdGF0ZXMgfD0g
Q29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlOworICAgICAgICBzdGF0ZXMuYWRkKENvbnRyb2xT
dGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCk7CiAgICAgaWYgKGlzRGVmYXVsdChvKSkKLSAgICAgICAg
c3RhdGVzIHw9IENvbnRyb2xTdGF0ZXM6OkRlZmF1bHRTdGF0ZTsKKyAgICAgICAgc3RhdGVzLmFk
ZChDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkRlZmF1bHQpOwogICAgIGlmICghaXNBY3RpdmUobykp
Ci0gICAgICAgIHN0YXRlcyB8PSBDb250cm9sU3RhdGVzOjpXaW5kb3dJbmFjdGl2ZVN0YXRlOwor
ICAgICAgICBzdGF0ZXMuYWRkKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6V2luZG93SW5hY3RpdmUp
OwogICAgIGlmIChpc0luZGV0ZXJtaW5hdGUobykpCi0gICAgICAgIHN0YXRlcyB8PSBDb250cm9s
U3RhdGVzOjpJbmRldGVybWluYXRlU3RhdGU7CisgICAgICAgIHN0YXRlcy5hZGQoQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpJbmRldGVybWluYXRlKTsKICAgICBpZiAoaXNQcmVzZW50aW5nKG8pKQot
ICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6UHJlc2VudGluZ1N0YXRlOworICAgICAg
ICBzdGF0ZXMuYWRkKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc2VudGluZyk7CiAgICAgcmV0
dXJuIHN0YXRlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRl
eCAyZTk4ZGI2M2Y1NzBmY2JjNTQwOTJlMmMyYjdkNWFmZTE4NTIyZGExLi4xNDhmMmI1NzAyMTA5
NjRlZmMwOWI1OTk1MGQ5MWRkOTkxYmRlMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaApAQCAtNDAzLDcgKzQwMyw3IEBAIHByb3RlY3RlZDoKIAogcHVibGljOgogICAg
IHZvaWQgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYsIENv
bnRyb2xTdGF0ZXMmKSBjb25zdDsKLSAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgZXh0cmFjdENv
bnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKKyAgICBP
cHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiBleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogICAgIGJvb2wgaXNBY3RpdmUoY29u
c3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CiAgICAgYm9vbCBpc0NoZWNrZWQoY29uc3QgUmVuZGVy
T2JqZWN0JikgY29uc3Q7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUoY29uc3QgUmVuZGVyT2Jq
ZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVBZHdhaXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFk
d2FpdGEuY3BwCmluZGV4IDgwZmVhNmYxYjI5ZWUwOGYzODFkMWM2NzFlYWU0Y2VlNmJiYjRmNWEu
LmZiYjVkYWE0NmYzOWE4MTAzZmIwOThhODNkMzU2MDI0YTA2YjcyYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCkBAIC0yNjgsMTMgKzI2
OCwxMyBAQCBib29sIFJlbmRlclRoZW1lQWR3YWl0YTo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUAogICAgIGF1dG8mIGdyYXBoaWNzQ29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMg
c3RhdGVzID0gMDsKKyAgICBPcHRpb25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiBzdGF0ZXM7
CiAgICAgaWYgKGlzRW5hYmxlZChyZW5kZXJPYmplY3QpKQotICAgICAgICBzdGF0ZXMgfD0gQ29u
dHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlOworICAgICAgICBzdGF0ZXMuYWRkKENvbnRyb2xTdGF0
ZXM6OlN0YXRlczo6RW5hYmxlZCk7CiAgICAgaWYgKGlzUHJlc3NlZChyZW5kZXJPYmplY3QpKQot
ICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlOworICAgICAgICBz
dGF0ZXMuYWRkKENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6UHJlc3NlZCk7CiAgICAgaWYgKGlzSG92
ZXJlZChyZW5kZXJPYmplY3QpKQotICAgICAgICBzdGF0ZXMgfD0gQ29udHJvbFN0YXRlczo6SG92
ZXJTdGF0ZTsKKyAgICAgICAgc3RhdGVzLmFkZChDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkhvdmVy
ZWQpOwogICAgIENvbnRyb2xTdGF0ZXMgY29udHJvbFN0YXRlcyhzdGF0ZXMpOwogICAgIFRoZW1l
OjpzaW5nbGV0b24oKS5wYWludChCdXR0b25QYXJ0LCBjb250cm9sU3RhdGVzLCBncmFwaGljc0Nv
bnRleHQsIHJlY3QsIDEuLCBudWxscHRyLCAxLiwgMS4sIGZhbHNlLCBmYWxzZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5kZXggOWQxMTZiNzQzYWJjNTY4
ZjIyNDBkNzc0M2QwZjRmM2MwYjUwZWQyMi4uMTE1OWY0NDUyNjRmYWEwZTE5ZTkyZDM3NjU0Mzli
ZTFlOTc2YWQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgK
QEAgLTExNCw4ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRTZWFyY2hGaWVsZERl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShJT1NfRk9STV9DT05UUk9MX1JFRlJFU0gp
Ci0gICAgQ29sb3IgY2hlY2tib3hSYWRpb0JhY2tncm91bmRDb2xvcihDb250cm9sU3RhdGVzOjpT
dGF0ZXMsIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPik7Ci0gICAgQ29sb3IgY2hlY2ti
b3hSYWRpb0luZGljYXRvckNvbG9yKENvbnRyb2xTdGF0ZXM6OlN0YXRlcywgT3B0aW9uU2V0PFN0
eWxlQ29sb3I6Ok9wdGlvbnM+KTsKKyAgICBDb2xvciBjaGVja2JveFJhZGlvQmFja2dyb3VuZENv
bG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+LCBPcHRpb25TZXQ8U3R5bGVDb2xv
cjo6T3B0aW9ucz4pOworICAgIENvbG9yIGNoZWNrYm94UmFkaW9JbmRpY2F0b3JDb2xvcihPcHRp
b25TZXQ8Q29udHJvbFN0YXRlczo6U3RhdGVzPiwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlv
bnM+KTsKIAogICAgIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBib29sIHBhaW50
UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KaW5kZXggYzJkNTc5NzQzNTYzZmU4YTdiNTk0NzE5NjUzZDc2MmRlNzAyM2Y3ZC4uNTc5Y2Yy
ODQ3ZmFjOGZmNjE0YmIxZjcxZjliYjQ0Y2JjMmM0ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjAzNywzMCArMjAzNywzMCBAQCB2b2lkIFJl
bmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbgogCiAjaWYgRU5BQkxFKElPU19GT1JNX0NPTlRST0xfUkVGUkVTSCkK
IAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IoQ29u
dHJvbFN0YXRlczo6U3RhdGVzIHN0YXRlcywgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+
IHN0eWxlQ29sb3JPcHRpb25zKQorQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9C
YWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PENvbnRyb2xTdGF0ZXM6OlN0YXRlcz4gc3RhdGVzLCBP
cHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCiB7Ci0gICAg
aWYgKCEoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6RW5hYmxlZFN0YXRlKSkKKyAgICBpZiAoIXN0
YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkVuYWJsZWQpKQogICAgICAgICBy
ZXR1cm4gc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbVNlY29uZGFyeUZpbGxEaXNhYmxl
ZCwgc3R5bGVDb2xvck9wdGlvbnMpOwogCiAgICAgQ29sb3IgZW5hYmxlZEJhY2tncm91bmRDb2xv
cjsKLSAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6Q2hlY2tlZFN0YXRlIHx8IHN0YXRl
cyAmIENvbnRyb2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0ZSkKKyAgICBpZiAoc3RhdGVzLmNv
bnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkLCBDb250cm9sU3RhdGVz
OjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSkpCiAgICAgICAgIGVuYWJsZWRCYWNrZ3JvdW5kQ29s
b3IgPSBzeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtQmx1ZSwgc3R5bGVDb2xvck9wdGlv
bnMpOwogICAgIGVsc2UKICAgICAgICAgZW5hYmxlZEJhY2tncm91bmRDb2xvciA9IHN5c3RlbUNv
bG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1TZWNvbmRhcnlGaWxsLCBzdHlsZUNvbG9yT3B0aW9ucyk7
CiAKLSAgICBpZiAoc3RhdGVzICYgQ29udHJvbFN0YXRlczo6UHJlc3NlZFN0YXRlKQorICAgIGlm
IChzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpQcmVzc2VkKSkKICAgICAg
ICAgcmV0dXJuIGVuYWJsZWRCYWNrZ3JvdW5kQ29sb3IuY29sb3JXaXRoQWxwaGFNdWx0aXBsaWVk
QnkocHJlc3NlZFN0YXRlT3BhY2l0eSk7CiAKICAgICByZXR1cm4gZW5hYmxlZEJhY2tncm91bmRD
b2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OmNoZWNrYm94UmFkaW9JbmRpY2F0b3JD
b2xvcihDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzLCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6
T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMpCitDb2xvciBSZW5kZXJUaGVtZUlPUzo6Y2hlY2ti
b3hSYWRpb0luZGljYXRvckNvbG9yKE9wdGlvblNldDxDb250cm9sU3RhdGVzOjpTdGF0ZXM+IHN0
YXRlcywgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxlQ29sb3JPcHRpb25zKQog
ewotICAgIGlmICghKHN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkVuYWJsZWRTdGF0ZSkpCisgICAg
aWYgKCFzdGF0ZXMuY29udGFpbnMoQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKSkKICAg
ICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1UZXJ0aWFyeUxhYmVs
LCBzdHlsZUNvbG9yT3B0aW9ucyk7CiAKICAgICBDb2xvciBlbmFibGVkSW5kaWNhdG9yQ29sb3Ig
PSBzeXN0ZW1Db2xvcihDU1NWYWx1ZUFwcGxlU3lzdGVtTGFiZWwsIHN0eWxlQ29sb3JPcHRpb25z
IHwgU3R5bGVDb2xvcjo6T3B0aW9uczo6VXNlRGFya0FwcGVhcmFuY2UpOwotICAgIGlmIChzdGF0
ZXMgJiBDb250cm9sU3RhdGVzOjpQcmVzc2VkU3RhdGUpCisgICAgaWYgKHN0YXRlcy5jb250YWlu
cyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OlByZXNzZWQpKQogICAgICAgICByZXR1cm4gZW5hYmxl
ZEluZGljYXRvckNvbG9yLmNvbG9yV2l0aEFscGhhTXVsdGlwbGllZEJ5KHByZXNzZWRTdGF0ZU9w
YWNpdHkpOwogCiAgICAgcmV0dXJuIGVuYWJsZWRJbmRpY2F0b3JDb2xvcjsKQEAgLTIwODQsOCAr
MjA4NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpCiAKICAgICBjb250ZXh0LmZpbGxSb3Vu
ZGVkUmVjdChjaGVja2JveFJlY3QsIGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IoY29udHJv
bFN0YXRlcywgc3R5bGVDb2xvck9wdGlvbnMpKTsKIAotICAgIGJvb2wgY2hlY2tlZCA9IGNvbnRy
b2xTdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGU7Ci0gICAgYm9vbCBpbmRldGVy
bWluYXRlID0gY29udHJvbFN0YXRlcyAmIENvbnRyb2xTdGF0ZXM6OkluZGV0ZXJtaW5hdGVTdGF0
ZTsKKyAgICBib29sIGNoZWNrZWQgPSBjb250cm9sU3RhdGVzLmNvbnRhaW5zKENvbnRyb2xTdGF0
ZXM6OlN0YXRlczo6Q2hlY2tlZCk7CisgICAgYm9vbCBpbmRldGVybWluYXRlID0gY29udHJvbFN0
YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUpOwogCiAg
ICAgaWYgKCFjaGVja2VkICYmICFpbmRldGVybWluYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMTQyLDcgKzIxNDIsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvKGNv
bnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SQogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKGNoZWNrYm94UmFkaW9CYWNrZ3JvdW5kQ29sb3IoY29udHJvbFN0YXRl
cywgc3R5bGVDb2xvck9wdGlvbnMpKTsKICAgICBjb250ZXh0LmZpbGxFbGxpcHNlKHJlY3QpOwog
Ci0gICAgaWYgKGNvbnRyb2xTdGF0ZXMgJiBDb250cm9sU3RhdGVzOjpDaGVja2VkU3RhdGUpIHsK
KyAgICBpZiAoY29udHJvbFN0YXRlcy5jb250YWlucyhDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkNo
ZWNrZWQpKSB7CiAgICAgICAgIC8vIFRoZSBpbm5lciBjaXJjbGUgaXMgNiAvIDE0IHRoZSBzaXpl
IG9mIHRoZSBzdXJyb3VuZGluZyBjaXJjbGUsCiAgICAgICAgIC8vIGxlYXZpbmcgOCAvIDE0IGFy
b3VuZCBpdC4gKDggLyAxNCkgLyAyID0gMiAvIDcuCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBp
bm5lckludmVyc2VSYXRpbyA9IDIgLyA3LjBmOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>