<?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>45490</bug_id>
          
          <creation_ts>2010-09-09 14:00:26 -0700</creation_ts>
          <short_desc>Adopt shared control drawing for &lt;video&gt; controls on Windows</short_desc>
          <delta_ts>2010-09-10 16:56:56 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>aroben</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>276737</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-09 14:00:26 -0700</bug_when>
    <thetext>Windows Safari should use the shared control drawing used by Mac Safari on the &lt;video&gt; element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276740</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-09 14:00:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/6293979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276838</commentid>
    <comment_count>2</comment_count>
      <attachid>67114</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-09 16:34:08 -0700</bug_when>
    <thetext>Created attachment 67114
shared-controls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276840</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-09 16:37:12 -0700</bug_when>
    <thetext>Attachment 67114 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderMediaControls.cpp:90:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/rendering/RenderMediaControls.h:39:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276886</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-09 17:48:04 -0700</bug_when>
    <thetext>I&apos;ll fix the style errors before checking in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277111</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-10 04:06:02 -0700</bug_when>
    <thetext>Attachment 67114 did not build on win:
Build output: http://queues.webkit.org/results/3916341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277420</commentid>
    <comment_count>6</comment_count>
      <attachid>67234</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-10 14:10:48 -0700</bug_when>
    <thetext>Created attachment 67234
shared-controls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277450</commentid>
    <comment_count>7</comment_count>
      <attachid>67234</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-09-10 14:57:50 -0700</bug_when>
    <thetext>Comment on attachment 67234
shared-controls

&gt; -#if SAFARI_THEME_VERSION &gt;= 4

This shouldn&apos;t be necessary any more.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277544</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-09-10 16:56:56 -0700</bug_when>
    <thetext>Committed r67251: &lt;http://trac.webkit.org/changeset/67251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67114</attachid>
            <date>2010-09-09 16:34:08 -0700</date>
            <delta_ts>2010-09-10 14:52:48 -0700</delta_ts>
            <desc>shared-controls</desc>
            <filename>native-controls.patch</filename>
            <type>text/plain</type>
            <size>30235</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDY3MTE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDkt
MDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgc2hhcmVkIGNvbnRyb2wgZHJhd2lu
ZyBmb3IgPHZpZGVvPiBjb250cm9scyBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ5MAorCisgICAgICAgICogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL21lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLWFmdGVy
LXJlbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5k
ZXJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9t
ZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dDoKKwog
MjAxMC0wOS0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRmaXguCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjcxMjMpCisrKyBX
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEwLTA5
LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHNoYXJlZCBjb250cm9sIGRyYXdp
bmcgZm9yIDx2aWRlbz4gY29udHJvbHMgb24gV2luZG93cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0OTAKKyAgICAgICAgCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogUmVtb3ZlIHRoZSBPUyBjaGVjayBhcm91bmQgbWVkaWFDb250cm9s
c1F1aWNrVGltZS5jc3MuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lU3RhdGUpOiBVc2UgV0tNZWRpYUNvbnRy
b2xsZXJUaGVtZVN0YXRlIGZsYWdzIGluc3RlYWQgb2YgU2FmYXJpVGhlbWUgb25lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OmdldFVuem9vbWVkUmVjdEFuZEFkanVzdEN1cnJlbnRDb250ZXh0KTogQWRk
ZWQuIENvcGllZCB2ZXJiYXRpbSBmcm9tIFJlbmRlck1lZGlhTWFjLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVkaWFDb250cm9sczo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUpOiBV
c2Ugd2tNZWFzdXJlTWVkaWFVSVBhcnQgdG8gYWRqdXN0IHRoZSB0aHVtYiBzaXplLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydCk6
IFVzZSB3a0RyYXdNZWRpYVVJUGFydCBpbnN0ZWFkIG9mIHBhaW50VGhlbWVQYXJ0LgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFDb250cm9sczo6dm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11
dGVCdXR0b24pOiBBZGRlZC4gQ29waWVkIHZlcmJhdGltIGZyb20gUmVuZGVyTWVkaWFNYWMubW0u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVXaW46OmFkanVzdFNsaWRlclRodW1iU2l6ZSk6IEFkanVzdCBib3RoIHNsaWRlcnMgYW5kIHZv
bHVtZSBzbGlkZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmV4dHJhTWVk
aWFDb250cm9sc1N0eWxlU2hlZXQpOiBBZGRlZC4gUmV0dXJucyB0aGUgbWVkaWFDb250cm9sc1F1
aWNrVGltZSBzaGVldC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludE1l
ZGlhUmV3aW5kQnV0dG9uKTogQWRkZWQuIFBhc3MgdGhyb3VnaCB0byBSZW5kZXJNZWRpYUNvbnRy
b2xzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFDb250cm9s
c0JhY2tncm91bmQpOiBBZGRlZC4gUGFzcyB0aHJvdWdoIHRvIFJlbmRlck1lZGlhQ29udHJvbHMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lcik6IEFkZGVkLiBQYXNzIHRocm91Z2ggdG8gUmVuZGVyTWVkaWFDb250cm9scy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhVm9sdW1lU2xpZGVy
VHJhY2spOiBBZGRlZC4gUGFzcyB0aHJvdWdoIHRvIFJlbmRlck1lZGlhQ29udHJvbHMuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1i
KTogQWRkZWQuICBQYXNzIHRocm91Z2ggdG8gUmVuZGVyTWVkaWFDb250cm9scy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjp2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRv
bik6IEFkZGVkLiBQYXNzIHRocm91Z2ggdG8gUmVuZGVyTWVkaWFDb250cm9scy4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaDoKKwogMjAxMC0wOS0wOSAgVmluY2VudCBTY2hl
aWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjY2ODApCisrKyBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY3NCwxMCArNjc0LDggQEAg
ZW5kaWYKIAogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9WSURFTywkKEZFQVRVUkVfREVGSU5F
UykpLCBFTkFCTEVfVklERU8pCiAgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VS
X0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvbWVkaWFDb250cm9scy5jc3MKLWlm
ZXEgKCQoT1MpLE1BQ09TKQogICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9B
R0VOVF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJvbHNRdWlja1RpbWUu
Y3NzCiBlbmRpZgotZW5kaWYKIAogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVO
X0FQSSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkpCiAgICAgVVNF
Ul9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJD
b3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0NCArMjksNTEgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWVTYWZhcmku
aCIKLSNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPFdlYktpdFN5
c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKworI2lmIFBMQVRGT1JNKFdJ
TikKKy8vIFRoZSBXaW5kb3dzIHZlcnNpb24gb2YgV0tTSSBkZWZpbmVzIHRoZXNlIGZ1bmN0aW9u
cyBhcyBjYXBpdGFsaXplZCwgd2hpbGUgdGhlIE1hYyB2ZXJzaW9uIGRlZmluZXMgdGhlbSBhcyBs
b3dlciBjYXNlLgorI2RlZmluZSB3a01lZGlhQ29udHJvbGxlclRoZW1lQXZhaWxhYmxlKHRoZW1l
U3R5bGUpIFdLTWVkaWFDb250cm9sbGVyVGhlbWVBdmFpbGFibGUodGhlbWVTdHlsZSkKKyNkZWZp
bmUgd2tIaXRUZXN0TWVkaWFVSVBhcnQocGFydCwgdGhlbWVTdHlsZSwgYm91bmRzLCBwb2ludCkg
V0tIaXRUZXN0TWVkaWFVSVBhcnQocGFydCwgdGhlbWVTdHlsZSwgYm91bmRzLCBwb2ludCkKKyNk
ZWZpbmUgd2tNZWFzdXJlTWVkaWFVSVBhcnQocGFydCwgdGhlbWVTdHlsZSwgYm91bmRzLCBuYXR1
cmFsU2l6ZSkgV0tNZWFzdXJlTWVkaWFVSVBhcnQocGFydCwgdGhlbWVTdHlsZSwgYm91bmRzLCBu
YXR1cmFsU2l6ZSkKKyNkZWZpbmUgd2tEcmF3TWVkaWFVSVBhcnQocGFydCwgdGhlbWVTdHlsZSwg
Y29udGV4dCwgcmVjdCwgc3RhdGUpIFdLRHJhd01lZGlhVUlQYXJ0KHBhcnQsIHRoZW1lU3R5bGUs
IGNvbnRleHQsIHJlY3QsIHN0YXRlKQorI2RlZmluZSB3a0RyYXdNZWRpYVNsaWRlclRyYWNrKHRo
ZW1lU3R5bGUsIGNvbnRleHQsIHJlY3QsIHRpbWVMb2FkZWQsIGN1cnJlbnRUaW1lLCBkdXJhdGlv
biwgc3RhdGUpIFdLRHJhd01lZGlhU2xpZGVyVHJhY2sodGhlbWVTdHlsZSwgY29udGV4dCwgcmVj
dCwgdGltZUxvYWRlZCwgY3VycmVudFRpbWUsIGR1cmF0aW9uLCBzdGF0ZSkKKyNlbmRpZgogIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmZGVmIERF
QlVHX0FMTAotU09GVF9MSU5LX0RFQlVHX0xJQlJBUlkoU2FmYXJpVGhlbWUpCi0jZWxzZQotU09G
VF9MSU5LX0xJQlJBUlkoU2FmYXJpVGhlbWUpCi0jZW5kaWYKLQotU09GVF9MSU5LKFNhZmFyaVRo
ZW1lLCBwYWludFRoZW1lUGFydCwgdm9pZCwgX19zdGRjYWxsLCAoVGhlbWVQYXJ0IHBhcnQsIENH
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR1JlY3QmIHJlY3QsIE5TQ29udHJvbFNpemUgc2l6
ZSwgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUpLCAocGFydCwgY29udGV4dCwgcmVjdCwgc2l6ZSwg
c3RhdGUpKQotU09GVF9MSU5LKFNhZmFyaVRoZW1lLCBTVFBhaW50UHJvZ3Jlc3NJbmRpY2F0b3Is
IHZvaWQsIEFQSUVOVFJZLCAoUHJvZ3Jlc3NJbmRpY2F0b3JUeXBlIHR5cGUsIENHQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBDR1JlY3QmIHJlY3QsIE5TQ29udHJvbFNpemUgc2l6ZSwgVGhlbWVD
b250cm9sU3RhdGUgc3RhdGUsIGZsb2F0IHZhbHVlKSwgKHR5cGUsIGNvbnRleHQsIHJlY3QsIHNp
emUsIHN0YXRlLCB2YWx1ZSkpCi0KICNpZiBFTkFCTEUoVklERU8pCiAKLXN0YXRpYyBUaGVtZUNv
bnRyb2xTdGF0ZSBkZXRlcm1pbmVTdGF0ZShSZW5kZXJPYmplY3QqIG8pCitzdGF0aWMgV0tNZWRp
YUNvbnRyb2xsZXJUaGVtZVN0YXRlIGRldGVybWluZVN0YXRlKFJlbmRlck9iamVjdCogbykKIHsK
LSAgICBUaGVtZUNvbnRyb2xTdGF0ZSByZXN1bHQgPSAwOworICAgIGludCByZXN1bHQgPSAwOwog
ICAgIFJlbmRlclRoZW1lKiB0aGVtZSA9IG8tPnRoZW1lKCk7Ci0gICAgaWYgKHRoZW1lLT5pc0Fj
dGl2ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9IFNhZmFyaVRoZW1lOjpBY3RpdmVTdGF0ZTsKLSAg
ICBpZiAodGhlbWUtPmlzRW5hYmxlZChvKSAmJiAhdGhlbWUtPmlzUmVhZE9ubHlDb250cm9sKG8p
KQotICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkVuYWJsZWRTdGF0ZTsKKyAgICBpZiAo
IXRoZW1lLT5pc0VuYWJsZWQobykgfHwgdGhlbWUtPmlzUmVhZE9ubHlDb250cm9sKG8pKQorICAg
ICAgICByZXN1bHQgfD0gV0tNZWRpYUNvbnRyb2xsZXJGbGFnRGlzYWJsZWQ7CiAgICAgaWYgKHRo
ZW1lLT5pc1ByZXNzZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6UHJlc3Nl
ZFN0YXRlOwotICAgIGlmICh0aGVtZS0+aXNDaGVja2VkKG8pKQotICAgICAgICByZXN1bHQgfD0g
U2FmYXJpVGhlbWU6OkNoZWNrZWRTdGF0ZTsKLSAgICBpZiAodGhlbWUtPmlzSW5kZXRlcm1pbmF0
ZShvKSkKLSAgICAgICAgcmVzdWx0IHw9IFNhZmFyaVRoZW1lOjpJbmRldGVybWluYXRlQ2hlY2tl
ZFN0YXRlOworICAgICAgICByZXN1bHQgfD0gV0tNZWRpYUNvbnRyb2xsZXJGbGFnUHJlc3NlZDsK
ICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChvKSkKLSAgICAgICAgcmVzdWx0IHw9IFNhZmFyaVRo
ZW1lOjpGb2N1c2VkU3RhdGU7Ci0gICAgaWYgKHRoZW1lLT5pc0RlZmF1bHQobykpCi0gICAgICAg
IHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6RGVmYXVsdFN0YXRlOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIHJlc3VsdCB8PSBXS01lZGlhQ29udHJvbGxlckZsYWdGb2N1c2VkOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXS01lZGlhQ29udHJvbGxlclRoZW1lU3RhdGU+KHJlc3VsdCk7Cit9
CisKKy8vIFV0aWxpdHkgdG8gc2NhbGUgd2hlbiB0aGUgVUkgcGFydCBhcmUgbm90IHNjYWxlZCBi
eSB3a0RyYXdNZWRpYVVJUGFydAorc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRB
ZGp1c3RDdXJyZW50Q29udGV4dChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0ICZvcmlnaW5hbFJlY3QpCit7CisgICAgZmxvYXQgem9vbUxl
dmVsID0gby0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIEZsb2F0UmVjdCB1bnpvb21l
ZFJlY3Qob3JpZ2luYWxSZWN0KTsKKyAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKKyAgICAg
ICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVs
KTsKKyAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkg
LyB6b29tTGV2ZWwpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9v
bWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3Qu
eSgpKTsKKyAgICB9CisgICAgcmV0dXJuIHVuem9vbWVkUmVjdDsKIH0KIAogc3RhdGljIGNvbnN0
IGludCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAxMzsKQEAgLTc0LDI4ICs4MSwzMyBAQCBzdGF0
aWMgY29uc3QgaW50IG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQKIAogdm9pZCBSZW5kZXJNZWRpYUNv
bnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIG8pCiB7Ci0g
ICAgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSAhPSBNZWRpYVNsaWRlclRodW1iUGFydCkK
KyAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworCisgICAg
aWYgKHBhcnQgIT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQgJiYgcGFydCAhPSBNZWRpYVZvbHVtZVNs
aWRlclRodW1iUGFydCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQ0dTaXplIHNpemU7CisgICAg
d2tNZWFzdXJlTWVkaWFVSVBhcnQocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCA/IE1lZGlh
U2xpZGVyVGh1bWIgOiBNZWRpYVZvbHVtZVNsaWRlclRodW1iLCBXS01lZGlhQ29udHJvbGxlclRo
ZW1lUXVpY2tUaW1lLCBOVUxMLCAmc2l6ZSk7CisKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLT5z
dHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0gICAgby0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3Ro
KHN0YXRpY19jYXN0PGludD4obWVkaWFTbGlkZXJUaHVtYldpZHRoICogem9vbUxldmVsKSwgRml4
ZWQpKTsKLSAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4o
bWVkaWFTbGlkZXJUaHVtYkhlaWdodCAqIHpvb21MZXZlbCksIEZpeGVkKSk7CisgICAgby0+c3R5
bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCAqIHpvb21M
ZXZlbCksIEZpeGVkKSk7CisgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChzdGF0aWNf
Y2FzdDxpbnQ+KHNpemUuaGVpZ2h0ICogem9vbUxldmVsKSwgRml4ZWQpKTsKIH0KIAogYm9vbCBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlIHBhcnQsIFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgp
KTsKLQorICAgIHN0YXRpYyBjb25zdCBpbnQgdGhlbWVTdHlsZSA9IFdLTWVkaWFDb250cm9sbGVy
VGhlbWVRdWlja1RpbWU7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBzd2l0
Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBNZWRpYUZ1bGxzY3JlZW5CdXR0b246Ci0gICAgICAg
ICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6TWVkaWFGdWxsc2NyZWVuQnV0dG9uUGFy
dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBOU1JlZ3VsYXJDb250
cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBh
cnQoV0tNZWRpYVVJUGFydEZ1bGxzY3JlZW5CdXR0b24sIHRoZW1lU3R5bGUsIHBhaW50SW5mby5j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b246
CiAgICAgICAgIGNhc2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b246CiAjaWYgU0FGQVJJ
X1RIRU1FX1ZFUlNJT04gPj0gNAogICAgICAgICAgICAgaWYgKE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9s
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50Kj4oby0+bm9kZSgpKSkgewogICAgICAg
ICAgICAgICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1l
ZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgICAgIHBhaW50VGhlbWVQ
YXJ0KGNhcHRpb25zVmlzaWJsZSA/IFNhZmFyaVRoZW1lOjpNZWRpYUhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvblBhcnQgOiBTYWZhcmlUaGVtZTo6TWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b25Q
YXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5TUmVndWxhckNv
bnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICAgICAgd2tEcmF3TWVk
aWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHRoZW1lU3R5
bGUsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKQEAgLTEw
Myw0NCArMTE1LDQ2IEBAIGJvb2wgUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnQK
ICAgICAgICAgY2FzZSBNZWRpYVVuTXV0ZUJ1dHRvbjoKICAgICAgICAgICAgIGlmIChNZWRpYUNv
bnRyb2xNdXRlQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sTXV0
ZUJ1dHRvbkVsZW1lbnQqPihvLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBhdWRp
b0VuYWJsZWQgPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFNdXRlQnV0dG9uOwotICAgICAg
ICAgICAgICAgIHBhaW50VGhlbWVQYXJ0KGF1ZGlvRW5hYmxlZCA/IFNhZmFyaVRoZW1lOjpNZWRp
YU11dGVCdXR0b25QYXJ0IDogU2FmYXJpVGhlbWU6Ok1lZGlhVW5NdXRlQnV0dG9uUGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBOU1JlZ3VsYXJDb250cm9sU2l6
ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KGF1ZGlvRW5hYmxlZCA/IFdLTWVkaWFVSVBhcnRNdXRlQnV0dG9uIDogV0tNZWRpYVVJUGFydFVu
TXV0ZUJ1dHRvbiwgdGhlbWVTdHlsZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBNZWRpYVBhdXNlQnV0dG9uOgogICAgICAgICBjYXNlIE1lZGlh
UGxheUJ1dHRvbjoKICAgICAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqPihvLT5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBjYW5QbGF5ID0gYnRuLT5kaXNwbGF5VHlw
ZSgpID09IE1lZGlhUGxheUJ1dHRvbjsKLSAgICAgICAgICAgICAgICBwYWludFRoZW1lUGFydChj
YW5QbGF5ID8gU2FmYXJpVGhlbWU6Ok1lZGlhUGxheUJ1dHRvblBhcnQgOiBTYWZhcmlUaGVtZTo6
TWVkaWFQYXVzZUJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgTlNSZWd1bGFyQ29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAg
ICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChjYW5QbGF5ID8gV0tNZWRpYVVJUGFydFBsYXlCdXR0
b24gOiBXS01lZGlhVUlQYXJ0UGF1c2VCdXR0b24sIHRoZW1lU3R5bGUsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b246
CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3aW5kQnV0dG9u
LCB0aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1lZGlh
U2Vla0JhY2tCdXR0b246Ci0gICAgICAgICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6
TWVkaWFTZWVrQmFja0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgTlNSZWd1bGFyQ29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAg
ICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRTZWVrQmFja0J1dHRvbiwgdGhl
bWVTdHlsZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZWRpYVNlZWtG
b3J3YXJkQnV0dG9uOgotICAgICAgICAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6Ok1l
ZGlhU2Vla0ZvcndhcmRCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIE5TUmVndWxhckNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAg
ICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24s
IHRoZW1lU3R5bGUsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0
ZXJtaW5lU3RhdGUobykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTWVkaWFT
bGlkZXI6IHsKLSAgICAgICAgICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQg
PSB0b1BhcmVudE1lZGlhRWxlbWVudChvKSkKLSAgICAgICAgICAgICAgICBTVFBhaW50UHJvZ3Jl
c3NJbmRpY2F0b3IoU2FmYXJpVGhlbWU6Ok1lZGlhVHlwZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCByLCBOU1JlZ3VsYXJDb250cm9sU2l6ZSwgMCwgbWVkaWFFbGVtZW50
LT5wZXJjZW50TG9hZGVkKCkpOworICAgICAgICAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CisgICAgICAgICAgICAgICAg
RmxvYXRSZWN0IHVuem9vbWVkUmVjdCA9IGdldFVuem9vbWVkUmVjdEFuZEFkanVzdEN1cnJlbnRD
b250ZXh0KG8sIHBhaW50SW5mbywgcik7CisgICAgICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlk
ZXJUcmFjayh0aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHVuem9vbWVkUmVjdCwgbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1l
bnQtPmR1cmF0aW9uKCksIG1lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50
LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIE1lZGlhU2xpZGVyVGh1bWI6Ci0g
ICAgICAgICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6TWVkaWFTbGlkZXJUaHVtYlBh
cnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNSZWd1bGFyQ29u
dHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQ
YXJ0KFdLTWVkaWFVSVBhcnRUaW1lbGluZVNsaWRlclRodW1iLCB0aGVtZVN0eWxlLCBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVy
OgotICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB2b2x1bWUgc2xpZGVyLgotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFy
dChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyQ29udGFpbmVyLCB0aGVtZVN0eWxlLCBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyOgotICAgICAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB2b2x1bWUgc2xpZGVyLgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0Vm9sdW1lU2xpZGVyLCB0aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWI6Ci0gICAgICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHZvbHVtZSBzbGlkZXIuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVT
bGlkZXJUaHVtYiwgdGhlbWVTdHlsZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0QmFja2dy
b3VuZCwgdGhlbWVTdHlsZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBN
ZWRpYUN1cnJlbnRUaW1lRGlzcGxheToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTUyLDkgKzE2NiwyNCBAQCBib29sIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVk
aWFDb250CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitJbnRQb2ludCBSZW5kZXJNZWRpYUNvbnRyb2xzOjp2b2x1bWVTbGlk
ZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihOb2RlKiBtdXRlQnV0dG9uLCBjb25zdCBJbnRTaXplJiBz
aXplKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgeE9mZnNldCA9IC00OworICAgIHN0YXRpYyBj
b25zdCBpbnQgeU9mZnNldCA9IDU7CisKKyAgICBmbG9hdCB6b29tTGV2ZWwgPSBtdXRlQnV0dG9u
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgaW50IHkgPSB5T2Zm
c2V0ICogem9vbUxldmVsICsgbXV0ZUJ1dHRvbi0+cmVuZGVyQm94KCktPm9mZnNldEhlaWdodCgp
IC0gc2l6ZS5oZWlnaHQoKTsKKyAgICBGbG9hdFBvaW50IGFic1BvaW50ID0gbXV0ZUJ1dHRvbi0+
cmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQobXV0ZUJ1dHRvbi0+cmVuZGVy
Qm94KCktPm9mZnNldExlZnQoKSwgeSksIHRydWUsIHRydWUpOworICAgIGlmIChhYnNQb2ludC55
KCkgPCAwKQorICAgICAgICB5ID0gbXV0ZUJ1dHRvbi0+cmVuZGVyQm94KCktPmhlaWdodCgpOwor
ICAgIHJldHVybiBJbnRQb2ludCh4T2Zmc2V0ICogem9vbUxldmVsLCB5KTsKKworfQogI2VuZGlm
ICAvLyAjaWYgRU5BQkxFKFZJREVPKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5oCShyZXZpc2lvbiA2NjY4MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsNyBAQCBjbGFzcyBSZW5kZXJNZWRpYUNvbnRyb2xzIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhQ29udHJvbEVsZW1lbnRU
eXBlLCBSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgYWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0Kik7
CisgICAgc3RhdGljIEludFBvaW50IHZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKE5v
ZGUqLCBjb25zdCBJbnRTaXplJik7DQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkocmV2aXNpb24gNjY2ODApCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
OCwxNSArNzQ4LDE2IEBAIGNvbnN0IGludCBzbGlkZXJUaHVtYkhlaWdodCA9IDE1OwogCiB2b2lk
IFJlbmRlclRoZW1lV2luOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiBvKSBj
b25zdAogewotICAgIGlmIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJW
ZXJ0aWNhbFBhcnQpIHsKKyAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFy
YW5jZSgpOworICAgIGlmIChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7CiAgICAg
ICAgIG8tPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChzbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQp
KTsKICAgICAgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChzbGlkZXJUaHVtYldpZHRo
LCBGaXhlZCkpOwotICAgIH0gZWxzZSBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNs
aWRlclRodW1iSG9yaXpvbnRhbFBhcnQpIHsKKyAgICB9IGVsc2UgaWYgKHBhcnQgPT0gU2xpZGVy
VGh1bWJIb3Jpem9udGFsUGFydCkgewogICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5n
dGgoc2xpZGVyVGh1bWJXaWR0aCwgRml4ZWQpKTsKICAgICAgICAgby0+c3R5bGUoKS0+c2V0SGVp
Z2h0KExlbmd0aChzbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKICAgICB9CiAjaWYgRU5BQkxF
KFZJREVPKQotICAgIGVsc2UgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVNs
aWRlclRodW1iUGFydCkgCisgICAgZWxzZSBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFy
dCB8fCBwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0KSAKICAgICAgICAgUmVuZGVy
TWVkaWFDb250cm9sczo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUobyk7CiAjZW5kaWYKIH0K
QEAgLTkzNiw2ICs5MzcsMTEgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yKGlu
dCBjcwogCiAjaWYgRU5BQkxFKFZJREVPKQogCitTdHJpbmcgUmVuZGVyVGhlbWVXaW46OmV4dHJh
TWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQoreworICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250
cm9sc1F1aWNrVGltZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzUXVp
Y2tUaW1lVXNlckFnZW50U3R5bGVTaGVldCkpOworfQorCiBib29sIFJlbmRlclRoZW1lV2luOjpz
aG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQYXJ0IHBhcnQsIEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgaWYgKHBhcnQgPT0gTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
blBhcnQpIHsKQEAgLTk2Nyw2ICs5NzMsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRN
ZWRpYVBsYXlCdXR0bwogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlh
Q29udHJvbHNQYXJ0KE1lZGlhUGxheUJ1dHRvbiwgbywgcGFpbnRJbmZvLCByKTsKIH0KIAorYm9v
bCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJl
dHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhUmV3
aW5kQnV0dG9uLCBvLCBwYWludEluZm8sIHIpOworfQorCiBib29sIFJlbmRlclRoZW1lV2luOjpw
YWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVyTWVkaWFD
b250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVNlZWtCYWNrQnV0dG9uLCBvLCBw
YWludEluZm8sIHIpOwpAQCAtOTkyLDYgKzEwMDMsMzIgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRNZWRpYVRvZ2dsZUNsbwogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWlu
dE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uLCBvLCBwYWlu
dEluZm8sIHIpOwogfQogCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhQ29udHJvbHNC
YWNrZ3JvdW5kKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHIpCit7CisgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50
TWVkaWFDb250cm9sc1BhcnQoTWVkaWFUaW1lbGluZUNvbnRhaW5lciwgbywgcGFpbnRJbmZvLCBy
KTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQoreworICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlh
Q29udHJvbHNQYXJ0KE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyLCBvLCBwYWludEluZm8sIHIp
OworfQorCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKK3sKKyAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRy
b2xzUGFydChNZWRpYVZvbHVtZVNsaWRlciwgbywgcGFpbnRJbmZvLCByKTsKK30KKworYm9vbCBS
ZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAg
cmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFW
b2x1bWVTbGlkZXJUaHVtYiwgbywgcGFpbnRJbmZvLCByKTsKK30KKworSW50UG9pbnQgUmVuZGVy
VGhlbWVXaW46OnZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKE5vZGUqIG11dGVCdXR0
b24sIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlbmRlck1lZGlh
Q29udHJvbHM6OnZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKG11dGVCdXR0b24sIHNp
emUpOworfQorCisKICNlbmRpZgogCiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmgJKHJldmlzaW9uIDY2NjgwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDE1ICsxMjAsMjIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAj
aWYgRU5BQkxFKFZJREVPKQorICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhTWVkaWFDb250cm9sc1N0
eWxlU2hlZXQoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVuZGVyTWVkaWFDb250cm9sUGFy
dChDb250cm9sUGFydCwgRWxlbWVudCopOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ29u
dHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlh
UmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVt
ZVNsaWRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRQb2ludCB2b2x1
bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihOb2RlKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0
OwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3MTE3KQor
KysgV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEwLTA5LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHNoYXJlZCBj
b250cm9sIGRyYXdpbmcgZm9yIDx2aWRlbz4gY29udHJvbHMgb24gV2luZG93cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU0OTAKKworICAgICAgICAq
IHdpbi9saWIvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmxpYjoKKyAgICAgICAgKiB3aW4vbGliL1dl
YktpdFN5c3RlbUludGVyZmFjZV9kZWJ1Zy5saWI6CisKIDIwMTAtMDgtMDUgIEppYW4gTGkgIDxq
aWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCShyZXZpc2lvbiA2NjY4MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDEsNyArMTMwMSw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgc3RhbmRhcmRQcmVmZXJlbmNl
c1ByaXZhdGUtPnNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoRkFMU0UpOwogICAgIHN0YW5k
YXJkUHJlZmVyZW5jZXMtPnNldEphdmFTY3JpcHRFbmFibGVkKFRSVUUpOwogICAgIHN0YW5kYXJk
UHJlZmVyZW5jZXMtPnNldERlZmF1bHRGb250U2l6ZSgxNik7Ci0gICAgc3RhbmRhcmRQcmVmZXJl
bmNlcy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgc3RhbmRh
cmRQcmVmZXJlbmNlcy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwog
CiAgICAgaWYgKHByaW50U3VwcG9ydGVkRmVhdHVyZXMpIHsKICAgICAgICAgQk9PTCBhY2NlbGVy
YXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2OTk2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL21lZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAgbGF5ZXIgYXQgKDgsNDIpIHNpemUgMjAweDE2CiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckZsZXhp
YmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDEzNngxNgogICAgICAgUmVuZGVyU2xpZGVyIHtJ
TlBVVH0gYXQgKDAsMCkgc2l6ZSAxMzZ4MTYKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDIsMSkgc2l6ZSAxM3gxNAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXpl
IDEweDgKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTUyLDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTY4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMTg0LDApIHNpemUgMTZ4MTYKQEAgLTMyLDcgKzMyLDcgQEAgbGF5
ZXIgYXQgKDgsNzYpIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXpl
IDI1NngxNgogICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYK
LSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEweDgKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
Mjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNp
emUgMTZ4MTYKQEAgLTQ1LDcgKzQ1LDcgQEAgbGF5ZXIgYXQgKDgsMTk0KSBzaXplIDMyMHgxNgog
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJG
bGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4MTYKICAgICAgIFJlbmRlclNsaWRl
ciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2Ci0gICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkg
c2l6ZSAxMHg4CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI3MiwwKSBzaXplIDE2eDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCwwKSBzaXplIDE2eDE2CiAgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2eDE2CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0
ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY5OTYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vbWVkaWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTcsNyArMTcsNyBAQCBsYXllciBhdCAoOCwyNjYpIHNpemUgMzIweDE2
CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRl
ckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgogICAgICAgUmVuZGVyU2xp
ZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0
KSBzaXplIDEweDgKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4
MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHJpY3Qt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2Njk5NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
Nyw3ICsxNyw3IEBAIGxheWVyIGF0ICg4LDI3NCkgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyRmxleGlibGVCb3gge0RJ
Vn0gYXQgKDE2LDApIHNpemUgMjU2eDE2CiAgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDI1NngxNgotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXpl
IDEzeDE0CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTB4OAogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjY5OTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvY29udHJv
bHMtc3R5bGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAg
bGF5ZXIgYXQgKDE4LDI2Nikgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDAp
IHNpemUgMjU2eDE2CiAgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1
NngxNgotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTB4OAogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyNzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyODgsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQs
MCkgc2l6ZSAxNngxNgpAQCAtMzIsNyArMzIsNyBAQCBsYXllciBhdCAoOCw1MDYpIHNpemUgMzIw
eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgogICAgIFJl
bmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgogICAgICAgUmVuZGVy
U2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
Miw0KSBzaXplIDEweDgKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUg
MTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRl
by1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2Njk5NikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBAIGxheWVyIGF0ICg4LDI2
Nikgc2l6ZSAzMjB4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2
eDE2CiAgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMjU2eDE2CiAg
ICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDI1NngxNgotICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDQpIHNpemUgMTB4OAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NzIsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODgsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDQsMCkgc2l6ZSAxNngxNgpA
QCAtMzMsNyArMzMsNyBAQCBsYXllciBhdCAoOCw1MDYpIHNpemUgMzIweDE2CiAgICAgUmVuZGVy
QnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAxNngxNgogICAgIFJlbmRlckZsZXhpYmxlQm94
IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1NngxNgogICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDAsMCkgc2l6ZSAyNTZ4MTYKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkg
c2l6ZSAxM3gxNAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEweDgK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4MTYKQEAgLTQ2LDcgKzQ2LDcgQEAgbGF5ZXIgYXQg
KDgsNzQ2KSBzaXplIDMyMHgxNgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMTZ4MTYKICAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMTYsMCkgc2l6ZSAyNTZ4
MTYKICAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjU2eDE2Ci0gICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDEpIHNpemUgMTN4MTQKKyAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMHg4CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDI3MiwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4OCww
KSBzaXplIDE2eDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwNCwwKSBzaXplIDE2
eDE2CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tZGlzcGxheS10
b2dnbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY2OTk2
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQCBsYXllciBhdCAo
OCwyNTApIHNpemUgMzIweDE2CiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6
ZSAxNngxNgogICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgxNiwwKSBzaXplIDI1Nngx
NgogICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyNTZ4MTYKLSAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMSkgc2l6ZSAxM3gxNAorICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEweDgKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjcyLDApIHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjg4LDAp
IHNpemUgMTZ4MTYKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzA0LDApIHNpemUgMTZ4
MTYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9tZWRpYS92aWRlby1uby1hdWRpby1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL21lZGlh
L3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjY5OTYpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw2IEBAIGxheWVyIGF0ICg4LDMxNCkgc2l6ZSAzNTJ4MTYK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDE2eDE2CiAgICAgUmVuZGVy
RmxleGlibGVCb3gge0RJVn0gYXQgKDE2LDApIHNpemUgMzA0eDE2CiAgICAgICBSZW5kZXJTbGlk
ZXIge0lOUFVUfSBhdCAoMCwwKSBzaXplIDMwNHgxNgotICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMiwxKSBzaXplIDEzeDE0CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQp
IHNpemUgMTB4OAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMjAsMCkgc2l6ZSAxNngx
NgogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMzYsMCkgc2l6ZSAxNngxNgpJbmRleDog
V2ViS2l0TGlicmFyaWVzL3dpbi9saWIvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmxpYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogV2ViS2l0TGlicmFyaWVz
L3dpbi9saWIvV2ViS2l0U3lzdGVtSW50ZXJmYWNlX2RlYnVnLmxpYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67234</attachid>
            <date>2010-09-10 14:10:48 -0700</date>
            <delta_ts>2010-09-10 14:57:50 -0700</delta_ts>
            <desc>shared-controls</desc>
            <filename>shared-controls.patch</filename>
            <type>text/plain</type>
            <size>23499</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzEyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDktMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRv
cHQgc2hhcmVkIGNvbnRyb2wgZHJhd2luZyBmb3IgPHZpZGVvPiBjb250cm9scyBvbiBXaW5kb3dz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ5MAor
ICAgICAgICAKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBSZW1vdmUgdGhlIE9TIGNo
ZWNrIGFyb3VuZCBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lLmNzcy4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVT
dGF0ZSk6IFVzZSBXS01lZGlhQ29udHJvbGxlclRoZW1lU3RhdGUgZmxhZ3MgaW5zdGVhZCBvZiBT
YWZhcmlUaGVtZSBvbmVzLgorICAgICAgICAoV2ViQ29yZTo6Z2V0VW56b29tZWRSZWN0QW5kQWRq
dXN0Q3VycmVudENvbnRleHQpOiBBZGRlZC4gQ29waWVkIHZlcmJhdGltIGZyb20gUmVuZGVyTWVk
aWFNYWMubW0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RN
ZWRpYVNsaWRlclRodW1iU2l6ZSk6IFVzZSB3a01lYXN1cmVNZWRpYVVJUGFydCB0byBhZGp1c3Qg
dGhlIHRodW1iIHNpemUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpw
YWludE1lZGlhQ29udHJvbHNQYXJ0KTogVXNlIHdrRHJhd01lZGlhVUlQYXJ0IGluc3RlYWQgb2Yg
cGFpbnRUaGVtZVBhcnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjp2
b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbik6IEFkZGVkLiBDb3BpZWQgdmVyYmF0aW0g
ZnJvbSBSZW5kZXJNZWRpYU1hYy5tbS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9scy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKTogQWRq
dXN0IGJvdGggc2xpZGVycyBhbmQgdm9sdW1lIHNsaWRlcnMuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbjo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCk6IEFkZGVkLiBSZXR1
cm5zIHRoZSBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lIHNoZWV0LgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFSZXdpbmRCdXR0b24pOiBBZGRlZC4gUGFzcyB0aHJv
dWdoIHRvIFJlbmRlck1lZGlhQ29udHJvbHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6cGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZCk6IEFkZGVkLiBQYXNzIHRocm91Z2gg
dG8gUmVuZGVyTWVkaWFDb250cm9scy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2lu
OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKTogQWRkZWQuIFBhc3MgdGhyb3VnaCB0
byBSZW5kZXJNZWRpYUNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46
OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayk6IEFkZGVkLiBQYXNzIHRocm91Z2ggdG8gUmVu
ZGVyTWVkaWFDb250cm9scy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWlu
dE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIpOiBBZGRlZC4gIFBhc3MgdGhyb3VnaCB0byBSZW5kZXJN
ZWRpYUNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnZvbHVtZVNs
aWRlck9mZnNldEZyb21NdXRlQnV0dG9uKTogQWRkZWQuIFBhc3MgdGhyb3VnaCB0byBSZW5kZXJN
ZWRpYUNvbnRyb2xzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oOgorCiAy
MDEwLTA5LTA5ICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gNjcyMjApCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTY3NiwxMCArNjc2LDggQEAgZW5kaWYKIAogaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9W
SURFTywkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfVklERU8pCiAgICAgVVNFUl9BR0VOVF9T
VFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3Mv
bWVkaWFDb250cm9scy5jc3MKLWlmZXEgKCQoT1MpLE1BQ09TKQogICAgIFVTRVJfQUdFTlRfU1RZ
TEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL21l
ZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzCiBlbmRpZgotZW5kaWYKIAogaWZlcSAoJChmaW5kc3Ry
aW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpCiAgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5U
X1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiA2NzIyMCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMTggKzI5LDEzMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNs
dWRlICJSZW5kZXJUaGVtZVNhZmFyaS5oIgotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCisjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNz
Lmg+CisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorLy8gVGhlIFdpbmRvd3MgdmVyc2lvbiBvZiBXS1NJ
IGRlZmluZXMgdGhlc2UgZnVuY3Rpb25zIGFzIGNhcGl0YWxpemVkLCB3aGlsZSB0aGUgTWFjIHZl
cnNpb24gZGVmaW5lcyB0aGVtIGFzIGxvd2VyIGNhc2UuCisjZGVmaW5lIHdrTWVkaWFDb250cm9s
bGVyVGhlbWVBdmFpbGFibGUodGhlbWVTdHlsZSkgV0tNZWRpYUNvbnRyb2xsZXJUaGVtZUF2YWls
YWJsZSh0aGVtZVN0eWxlKQorI2RlZmluZSB3a0hpdFRlc3RNZWRpYVVJUGFydChwYXJ0LCB0aGVt
ZVN0eWxlLCBib3VuZHMsIHBvaW50KSBXS0hpdFRlc3RNZWRpYVVJUGFydChwYXJ0LCB0aGVtZVN0
eWxlLCBib3VuZHMsIHBvaW50KQorI2RlZmluZSB3a01lYXN1cmVNZWRpYVVJUGFydChwYXJ0LCB0
aGVtZVN0eWxlLCBib3VuZHMsIG5hdHVyYWxTaXplKSBXS01lYXN1cmVNZWRpYVVJUGFydChwYXJ0
LCB0aGVtZVN0eWxlLCBib3VuZHMsIG5hdHVyYWxTaXplKQorI2RlZmluZSB3a0RyYXdNZWRpYVVJ
UGFydChwYXJ0LCB0aGVtZVN0eWxlLCBjb250ZXh0LCByZWN0LCBzdGF0ZSkgV0tEcmF3TWVkaWFV
SVBhcnQocGFydCwgdGhlbWVTdHlsZSwgY29udGV4dCwgcmVjdCwgc3RhdGUpCisjZGVmaW5lIHdr
RHJhd01lZGlhU2xpZGVyVHJhY2sodGhlbWVTdHlsZSwgY29udGV4dCwgcmVjdCwgdGltZUxvYWRl
ZCwgY3VycmVudFRpbWUsIGR1cmF0aW9uLCBzdGF0ZSkgV0tEcmF3TWVkaWFTbGlkZXJUcmFjayh0
aGVtZVN0eWxlLCBjb250ZXh0LCByZWN0LCB0aW1lTG9hZGVkLCBjdXJyZW50VGltZSwgZHVyYXRp
b24sIHN0YXRlKQorI2VuZGlmCiAgCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWZkZWYgREVCVUdfQUxMCi1TT0ZUX0xJTktfREVCVUdfTElCUkFSWShT
YWZhcmlUaGVtZSkKLSNlbHNlCi1TT0ZUX0xJTktfTElCUkFSWShTYWZhcmlUaGVtZSkKLSNlbmRp
ZgotCi1TT0ZUX0xJTksoU2FmYXJpVGhlbWUsIHBhaW50VGhlbWVQYXJ0LCB2b2lkLCBfX3N0ZGNh
bGwsIChUaGVtZVBhcnQgcGFydCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHUmVjdCYg
cmVjdCwgTlNDb250cm9sU2l6ZSBzaXplLCBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSksIChwYXJ0
LCBjb250ZXh0LCByZWN0LCBzaXplLCBzdGF0ZSkpCi1TT0ZUX0xJTksoU2FmYXJpVGhlbWUsIFNU
UGFpbnRQcm9ncmVzc0luZGljYXRvciwgdm9pZCwgQVBJRU5UUlksIChQcm9ncmVzc0luZGljYXRv
clR5cGUgdHlwZSwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHUmVjdCYgcmVjdCwgTlND
b250cm9sU2l6ZSBzaXplLCBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSwgZmxvYXQgdmFsdWUpLCAo
dHlwZSwgY29udGV4dCwgcmVjdCwgc2l6ZSwgc3RhdGUsIHZhbHVlKSkKLQogI2lmIEVOQUJMRShW
SURFTykKIAotc3RhdGljIFRoZW1lQ29udHJvbFN0YXRlIGRldGVybWluZVN0YXRlKFJlbmRlck9i
amVjdCogbykKK3N0YXRpYyBXS01lZGlhQ29udHJvbGxlclRoZW1lU3RhdGUgZGV0ZXJtaW5lU3Rh
dGUoUmVuZGVyT2JqZWN0KiBvKQogewotICAgIFRoZW1lQ29udHJvbFN0YXRlIHJlc3VsdCA9IDA7
CisgICAgV0tNZWRpYUNvbnRyb2xsZXJUaGVtZVN0YXRlIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdL
TWVkaWFDb250cm9sbGVyVGhlbWVTdGF0ZT4oMCk7CiAgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0g
by0+dGhlbWUoKTsKLSAgICBpZiAodGhlbWUtPmlzQWN0aXZlKG8pKQotICAgICAgICByZXN1bHQg
fD0gU2FmYXJpVGhlbWU6OkFjdGl2ZVN0YXRlOwotICAgIGlmICh0aGVtZS0+aXNFbmFibGVkKG8p
ICYmICF0aGVtZS0+aXNSZWFkT25seUNvbnRyb2wobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZh
cmlUaGVtZTo6RW5hYmxlZFN0YXRlOworICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChvKSB8fCB0
aGVtZS0+aXNSZWFkT25seUNvbnRyb2wobykpCisgICAgICAgIHJlc3VsdCB8PSBXS01lZGlhQ29u
dHJvbGxlckZsYWdEaXNhYmxlZDsKICAgICBpZiAodGhlbWUtPmlzUHJlc3NlZChvKSkKLSAgICAg
ICAgcmVzdWx0IHw9IFNhZmFyaVRoZW1lOjpQcmVzc2VkU3RhdGU7Ci0gICAgaWYgKHRoZW1lLT5p
c0NoZWNrZWQobykpCi0gICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6Q2hlY2tlZFN0YXRl
OwotICAgIGlmICh0aGVtZS0+aXNJbmRldGVybWluYXRlKG8pKQotICAgICAgICByZXN1bHQgfD0g
U2FmYXJpVGhlbWU6OkluZGV0ZXJtaW5hdGVDaGVja2VkU3RhdGU7CisgICAgICAgIHJlc3VsdCB8
PSBXS01lZGlhQ29udHJvbGxlckZsYWdQcmVzc2VkOwogICAgIGlmICh0aGVtZS0+aXNGb2N1c2Vk
KG8pKQotICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkZvY3VzZWRTdGF0ZTsKLSAgICBp
ZiAodGhlbWUtPmlzRGVmYXVsdChvKSkKLSAgICAgICAgcmVzdWx0IHw9IFNhZmFyaVRoZW1lOjpE
ZWZhdWx0U3RhdGU7CisgICAgICAgIHJlc3VsdCB8PSBXS01lZGlhQ29udHJvbGxlckZsYWdGb2N1
c2VkOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8vIFV0aWxpdHkgdG8gc2NhbGUgd2hlbiB0
aGUgVUkgcGFydCBhcmUgbm90IHNjYWxlZCBieSB3a0RyYXdNZWRpYVVJUGFydAorc3RhdGljIEZs
b2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0ICZvcmlnaW5h
bFJlY3QpCit7CisgICAgZmxvYXQgem9vbUxldmVsID0gby0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpOworICAgIEZsb2F0UmVjdCB1bnpvb21lZFJlY3Qob3JpZ2luYWxSZWN0KTsKKyAgICBpZiAo
em9vbUxldmVsICE9IDEuMGYpIHsKKyAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9v
bWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKKyAgICAgICAgdW56b29tZWRSZWN0LnNldEhl
aWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwg
em9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9v
bWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICB9CisgICAgcmV0dXJuIHVuem9v
bWVkUmVjdDsKK30KKwogc3RhdGljIGNvbnN0IGludCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAx
MzsKIHN0YXRpYyBjb25zdCBpbnQgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCA9IDE0OwogCiB2b2lk
IFJlbmRlck1lZGlhQ29udHJvbHM6OmFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlck9i
amVjdCogbykKIHsKLSAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpICE9IE1lZGlhU2xp
ZGVyVGh1bWJQYXJ0KQorICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJh
bmNlKCk7CisKKyAgICBpZiAocGFydCAhPSBNZWRpYVNsaWRlclRodW1iUGFydCAmJiBwYXJ0ICE9
IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm47CiAKKyAgICBDR1Np
emUgc2l6ZTsKKyAgICB3a01lYXN1cmVNZWRpYVVJUGFydChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1
bWJQYXJ0ID8gTWVkaWFTbGlkZXJUaHVtYiA6IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIsIFdLTWVk
aWFDb250cm9sbGVyVGhlbWVRdWlja1RpbWUsIDAsICZzaXplKTsKKwogICAgIGZsb2F0IHpvb21M
ZXZlbCA9IG8tPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKLSAgICBvLT5zdHlsZSgpLT5zZXRX
aWR0aChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihtZWRpYVNsaWRlclRodW1iV2lkdGggKiB6b29t
TGV2ZWwpLCBGaXhlZCkpOwotICAgIG8tPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgoc3RhdGlj
X2Nhc3Q8aW50PihtZWRpYVNsaWRlclRodW1iSGVpZ2h0ICogem9vbUxldmVsKSwgRml4ZWQpKTsK
KyAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihzaXplLndp
ZHRoICogem9vbUxldmVsKSwgRml4ZWQpKTsKKyAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVu
Z3RoKHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQgKiB6b29tTGV2ZWwpLCBGaXhlZCkpOwog
fQogCiBib29sIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgcGFydCwgUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBBU1NFUlQoU2FmYXJpVGhl
bWVMaWJyYXJ5KCkpOwotCisgICAgc3RhdGljIGNvbnN0IGludCB0aGVtZVN0eWxlID0gV0tNZWRp
YUNvbnRyb2xsZXJUaGVtZVF1aWNrVGltZTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIE1lZGlhRnVsbHNjcmVlbkJ1dHRv
bjoKLSAgICAgICAgICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpNZWRpYUZ1bGxzY3Jl
ZW5CdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5T
UmVndWxhckNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0Ry
YXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRvbiwgdGhlbWVTdHlsZSwg
cGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0
aW9uc0J1dHRvbjoKICAgICAgICAgY2FzZSBNZWRpYUhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbjoK
LSNpZiBTQUZBUklfVEhFTUVfVkVSU0lPTiA+PSA0CiAgICAgICAgICAgICBpZiAoTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNfY2FzdDxN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLT5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBjYXB0aW9uc1Zpc2libGUgPSBidG4tPmRpc3BsYXlU
eXBlKCkgPT0gTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgICAgICAgICAgICAg
cGFpbnRUaGVtZVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gU2FmYXJpVGhlbWU6Ok1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uUGFydCA6IFNhZmFyaVRoZW1lOjpNZWRpYVNob3dDbG9zZWRDYXB0
aW9uc0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
TlNSZWd1bGFyQ29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgICAg
ICB3a0RyYXdNZWRpYVVJUGFydChjYXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uIDogV0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRv
biwgdGhlbWVTdHlsZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvbjoKICAgICAgICAgY2FzZSBNZWRpYVVu
TXV0ZUJ1dHRvbjoKICAgICAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVu
dCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQqPihvLT5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBhdWRpb0VuYWJsZWQgPSBidG4tPmRpc3Bs
YXlUeXBlKCkgPT0gTWVkaWFNdXRlQnV0dG9uOwotICAgICAgICAgICAgICAgIHBhaW50VGhlbWVQ
YXJ0KGF1ZGlvRW5hYmxlZCA/IFNhZmFyaVRoZW1lOjpNZWRpYU11dGVCdXR0b25QYXJ0IDogU2Fm
YXJpVGhlbWU6Ok1lZGlhVW5NdXRlQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCByLCBOU1JlZ3VsYXJDb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykp
OworICAgICAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KGF1ZGlvRW5hYmxlZCA/IFdLTWVk
aWFVSVBhcnRNdXRlQnV0dG9uIDogV0tNZWRpYVVJUGFydFVuTXV0ZUJ1dHRvbiwgdGhlbWVTdHls
ZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBN
ZWRpYVBhdXNlQnV0dG9uOgogICAgICAgICBjYXNlIE1lZGlhUGxheUJ1dHRvbjoKICAgICAgICAg
ICAgIGlmIChNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqPihvLT5ub2RlKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYm9vbCBjYW5QbGF5ID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhUGxheUJ1dHRv
bjsKLSAgICAgICAgICAgICAgICBwYWludFRoZW1lUGFydChjYW5QbGF5ID8gU2FmYXJpVGhlbWU6
Ok1lZGlhUGxheUJ1dHRvblBhcnQgOiBTYWZhcmlUaGVtZTo6TWVkaWFQYXVzZUJ1dHRvblBhcnQs
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNSZWd1bGFyQ29udHJv
bFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgICAgICB3a0RyYXdNZWRpYVVJ
UGFydChjYW5QbGF5ID8gV0tNZWRpYVVJUGFydFBsYXlCdXR0b24gOiBXS01lZGlhVUlQYXJ0UGF1
c2VCdXR0b24sIHRoZW1lU3R5bGUsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b246CisgICAgICAgICAgICB3a0RyYXdN
ZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3aW5kQnV0dG9uLCB0aGVtZVN0eWxlLCBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1lZGlhU2Vla0JhY2tCdXR0b246Ci0gICAg
ICAgICAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6TWVkaWFTZWVrQmFja0J1dHRvblBh
cnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNSZWd1bGFyQ29u
dHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQ
YXJ0KFdLTWVkaWFVSVBhcnRTZWVrQmFja0J1dHRvbiwgdGhlbWVTdHlsZSwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uOgotICAgICAg
ICAgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6Ok1lZGlhU2Vla0ZvcndhcmRCdXR0b25Q
YXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5TUmVndWxhckNv
bnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJ
UGFydChXS01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHRoZW1lU3R5bGUsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTWVkaWFTbGlkZXI6IHsKLSAgICAgICAgICAg
IGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVu
dChvKSkKLSAgICAgICAgICAgICAgICBTVFBhaW50UHJvZ3Jlc3NJbmRpY2F0b3IoU2FmYXJpVGhl
bWU6Ok1lZGlhVHlwZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBO
U1JlZ3VsYXJDb250cm9sU2l6ZSwgMCwgbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkpOwor
ICAgICAgICAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50
TWVkaWFFbGVtZW50KG8pKSB7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVj
dCA9IGdldFVuem9vbWVkUmVjdEFuZEFkanVzdEN1cnJlbnRDb250ZXh0KG8sIHBhaW50SW5mbywg
cik7CisgICAgICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayh0aGVtZVN0eWxlLCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFF
bGVtZW50LT5wZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlh
RWxlbWVudC0+Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIE1lZGlhU2xpZGVyVGh1bWI6Ci0gICAgICAgICAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6TWVkaWFTbGlkZXJUaHVtYlBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNSZWd1bGFyQ29udHJvbFNpemUsIGRldGVybWluZVN0
YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRUaW1l
bGluZVNsaWRlclRodW1iLCB0aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOgotICAgICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB2b2x1bWUgc2xpZGVyLgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0Vm9sdW1l
U2xpZGVyQ29udGFpbmVyLCB0aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyOgotICAgICAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB2b2x1bWUgc2xpZGVyLgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyLCB0
aGVtZVN0eWxlLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVy
bWluZVN0YXRlKG8pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1lZGlhVm9s
dW1lU2xpZGVyVGh1bWI6Ci0gICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHZvbHVtZSBz
bGlkZXIuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHdr
RHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgdGhlbWVTdHls
ZSwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZWRpYVRpbWVsaW5lQ29u
dGFpbmVyOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0QmFja2dyb3VuZCwgdGhlbWVTdHlsZSwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZWRpYUN1cnJlbnRUaW1lRGlzcGxh
eToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTUyLDkgKzE2NCwyNCBA
QCBib29sIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBwYWlu
dEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitJbnRQ
b2ludCBSZW5kZXJNZWRpYUNvbnRyb2xzOjp2b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRv
bihOb2RlKiBtdXRlQnV0dG9uLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgeE9mZnNldCA9IC00OworICAgIHN0YXRpYyBjb25zdCBpbnQgeU9mZnNldCA9IDU7
CisKKyAgICBmbG9hdCB6b29tTGV2ZWwgPSBtdXRlQnV0dG9uLT5yZW5kZXJlcigpLT5zdHlsZSgp
LT5lZmZlY3RpdmVab29tKCk7CisgICAgaW50IHkgPSB5T2Zmc2V0ICogem9vbUxldmVsICsgbXV0
ZUJ1dHRvbi0+cmVuZGVyQm94KCktPm9mZnNldEhlaWdodCgpIC0gc2l6ZS5oZWlnaHQoKTsKKyAg
ICBGbG9hdFBvaW50IGFic1BvaW50ID0gbXV0ZUJ1dHRvbi0+cmVuZGVyZXIoKS0+bG9jYWxUb0Fi
c29sdXRlKEZsb2F0UG9pbnQobXV0ZUJ1dHRvbi0+cmVuZGVyQm94KCktPm9mZnNldExlZnQoKSwg
eSksIHRydWUsIHRydWUpOworICAgIGlmIChhYnNQb2ludC55KCkgPCAwKQorICAgICAgICB5ID0g
bXV0ZUJ1dHRvbi0+cmVuZGVyQm94KCktPmhlaWdodCgpOworICAgIHJldHVybiBJbnRQb2ludCh4
T2Zmc2V0ICogem9vbUxldmVsLCB5KTsKKworfQogI2VuZGlmICAvLyAjaWYgRU5BQkxFKFZJREVP
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVkaWFDb250cm9scy5oCShyZXZpc2lvbiA2NzIyMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQCBjbGFz
cyBSZW5kZXJNZWRpYUNvbnRyb2xzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYWludE1l
ZGlhQ29udHJvbHNQYXJ0KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlLCBSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgc3RhdGljIHZvaWQgYWRqdXN0
TWVkaWFTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIEludFBvaW50
IHZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKE5vZGUqLCBjb25zdCBJbnRTaXplJik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCShyZXZpc2lvbiA2NzIyMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ5LDE1ICs3NDksMTYgQEAgY29uc3Qg
aW50IHNsaWRlclRodW1iSGVpZ2h0ID0gMTU7CiAKIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVz
dFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7Ci0gICAgaWYgKG8tPnN0
eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAgIENv
bnRyb2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgaWYgKHBhcnQg
PT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKICAgICAgICAgby0+c3R5bGUoKS0+c2V0V2lk
dGgoTGVuZ3RoKHNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOwogICAgICAgICBvLT5zdHlsZSgp
LT5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7Ci0gICAgfSBlbHNl
IGlmIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFy
dCkgeworICAgIH0gZWxzZSBpZiAocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7
CiAgICAgICAgIG8tPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChzbGlkZXJUaHVtYldpZHRoLCBG
aXhlZCkpOwogICAgICAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlclRodW1i
SGVpZ2h0LCBGaXhlZCkpOwogICAgIH0KICNpZiBFTkFCTEUoVklERU8pCi0gICAgZWxzZSBpZiAo
by0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0KSAKKyAgICBl
bHNlIGlmIChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1
bWVTbGlkZXJUaHVtYlBhcnQpIAogICAgICAgICBSZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RN
ZWRpYVNsaWRlclRodW1iU2l6ZShvKTsKICNlbmRpZgogfQpAQCAtOTM3LDYgKzkzOCwxMSBAQCBD
b2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoaW50IGNzCiAKICNpZiBFTkFCTEUoVklE
RU8pCiAKK1N0cmluZyBSZW5kZXJUaGVtZVdpbjo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVl
dCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzUXVpY2tUaW1lVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNRdWlja1RpbWVVc2VyQWdlbnRTdHlsZVNo
ZWV0KSk7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWVXaW46OnNob3VsZFJlbmRlck1lZGlhQ29udHJv
bFBhcnQoQ29udHJvbFBhcnQgcGFydCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAocGFy
dCA9PSBNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uUGFydCkgewpAQCAtOTY4LDYgKzk3
NCwxMSBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhUGxheUJ1dHRvCiAgICAgcmV0
dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFQbGF5
QnV0dG9uLCBvLCBwYWludEluZm8sIHIpOwogfQogCitib29sIFJlbmRlclRoZW1lV2luOjpwYWlu
dE1lZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJv
bHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFSZXdpbmRCdXR0b24sIG8sIHBhaW50SW5m
bywgcik7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFTZWVrQmFja0J1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQogewogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29u
dHJvbHNQYXJ0KE1lZGlhU2Vla0JhY2tCdXR0b24sIG8sIHBhaW50SW5mbywgcik7CkBAIC05OTMs
NiArMTAwNCwzMiBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhVG9nZ2xlQ2xvCiAg
ICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVk
aWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIG8sIHBhaW50SW5mbywgcik7CiB9CiAKK2Jvb2wg
UmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFDb250cm9sc0JhY2tncm91bmQoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK3sKKyAg
ICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRp
YVRpbWVsaW5lQ29udGFpbmVyLCBvLCBwYWludEluZm8sIHIpOworfQorCitib29sIFJlbmRlclRo
ZW1lV2luOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgcmV0
dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIsIG8sIHBhaW50SW5mbywgcik7Cit9CisKK2Jvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJldHVybiBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhVm9sdW1lU2xp
ZGVyLCBvLCBwYWludEluZm8sIHIpOworfQorCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1l
ZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250
cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVZvbHVtZVNsaWRlclRodW1iLCBvLCBw
YWludEluZm8sIHIpOworfQorCitJbnRQb2ludCBSZW5kZXJUaGVtZVdpbjo6dm9sdW1lU2xpZGVy
T2Zmc2V0RnJvbU11dGVCdXR0b24oTm9kZSogbXV0ZUJ1dHRvbiwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sczo6dm9sdW1lU2xpZGVy
T2Zmc2V0RnJvbU11dGVCdXR0b24obXV0ZUJ1dHRvbiwgc2l6ZSk7Cit9CisKKwogI2VuZGlmCiAK
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAkocmV2aXNpb24gNjcyMjApCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjAsMTUgKzEyMCwyMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNS
aW5nKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICNpZiBFTkFCTEUoVklERU8pCisgICAg
dmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQYXJ0LCBFbGVtZW50
Kik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFDb250cm9sc0JhY2tncm91bmQoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
ZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9v
bCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0Zvcndh
cmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZv
bHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIEludFBvaW50IHZvbHVtZVNsaWRlck9mZnNldEZyb21NdXRl
QnV0dG9uKE5vZGUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToK
SW5kZXg6IFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZwkocmV2aXNpb24gNjcyMjApCisrKyBXZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDktMDkgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgc2hhcmVkIGNvbnRyb2wgZHJhd2luZyBmb3IgPHZp
ZGVvPiBjb250cm9scyBvbiBXaW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTQ5MAorCisgICAgICAgICogd2luL2xpYi9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UubGliOgorICAgICAgICAqIHdpbi9saWIvV2ViS2l0U3lzdGVtSW50ZXJmYWNlX2Rl
YnVnLmxpYjoKKwogMjAxMC0wOC0wNSAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXRMaWJyYXJpZXMv
d2luL2luY2x1ZGUvV2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdExpYnJhcmllcy93aW4vaW5jbHVkZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDY3MjIwKQorKysgV2Vi
S2l0TGlicmFyaWVzL3dpbi9pbmNsdWRlL1dlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiBzdHJ1Y3Qg
Q0dBZmZpbmVUcmFuc2Zvcm07CiBzdHJ1Y3QgQ0dQb2ludDsKK3N0cnVjdCBDR1JlY3Q7CiBzdHJ1
Y3QgQ0dTaXplOwogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGF0YSogQ0ZEYXRhUmVmOwpA
QCAtODksNCArOTAsNDYgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIHdrQ29weUNyZWRlbnRpYWxGcm9t
QwogCiBDRlN0cmluZ1JlZiB3a0NGTmV0d29ya0Vycm9yR2V0TG9jYWxpemVkRGVzY3JpcHRpb24o
Q0ZJbmRleCBlcnJvckNvZGUpOwogCit0eXBlZGVmIGVudW0geworICAgIFdLTWVkaWFVSVBhcnRG
dWxsc2NyZWVuQnV0dG9uICAgPSAwLAorICAgIFdLTWVkaWFVSVBhcnRNdXRlQnV0dG9uLAorICAg
IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uLAorICAgIFdLTWVkaWFVSVBhcnRTZWVrQmFja0J1dHRv
biwKKyAgICBXS01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sCisgICAgV0tNZWRpYVVJUGFy
dFRpbWVsaW5lU2xpZGVyLAorICAgIFdLTWVkaWFVSVBhcnRUaW1lbGluZVNsaWRlclRodW1iLAor
ICAgIFdLTWVkaWFVSVBhcnRSZXdpbmRCdXR0b24sCisgICAgV0tNZWRpYVVJUGFydFNlZWtUb1Jl
YWx0aW1lQnV0dG9uLAorICAgIFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24s
CisgICAgV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiwKKyAgICBXS01lZGlh
VUlQYXJ0VW5NdXRlQnV0dG9uLAorICAgIFdLTWVkaWFVSVBhcnRQYXVzZUJ1dHRvbiwKKyAgICBX
S01lZGlhVUlQYXJ0QmFja2dyb3VuZCwKKyAgICBXS01lZGlhVUlQYXJ0Q3VycmVudFRpbWVEaXNw
bGF5LAorICAgIFdLTWVkaWFVSVBhcnRUaW1lUmVtYWluaW5nRGlzcGxheSwKKyAgICBXS01lZGlh
VUlQYXJ0U3RhdHVzRGlzcGxheSwKKyAgICBXS01lZGlhVUlQYXJ0Q29udHJvbHNQYW5lbCwKKyAg
ICBXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyQ29udGFpbmVyLAorICAgIFdLTWVkaWFVSVBhcnRW
b2x1bWVTbGlkZXIsCisgICAgV0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlclRodW1iCit9IFdLTWVk
aWFVSVBhcnQ7CisKK3R5cGVkZWYgZW51bSB7CisgICAgV0tNZWRpYUNvbnRyb2xsZXJUaGVtZUNs
YXNzaWMgICA9IDEsCisgICAgV0tNZWRpYUNvbnRyb2xsZXJUaGVtZVF1aWNrVGltZSA9IDIKK30g
V0tNZWRpYUNvbnRyb2xsZXJUaGVtZVN0eWxlOworCit0eXBlZGVmIGVudW0geworICAgIFdLTWVk
aWFDb250cm9sbGVyRmxhZ0Rpc2FibGVkID0gMSA8PCAwLAorICAgIFdLTWVkaWFDb250cm9sbGVy
RmxhZ1ByZXNzZWQgPSAxIDw8IDEsCisgICAgV0tNZWRpYUNvbnRyb2xsZXJGbGFnRHJhd0VuZENh
cHMgPSAxIDw8IDMsCisgICAgV0tNZWRpYUNvbnRyb2xsZXJGbGFnRm9jdXNlZCA9IDEgPDwgNAor
fSBXS01lZGlhQ29udHJvbGxlclRoZW1lU3RhdGU7CisKK2Jvb2wgV0tNZWRpYUNvbnRyb2xsZXJU
aGVtZUF2YWlsYWJsZShpbnQgdGhlbWVTdHlsZSk7Citib29sIFdLSGl0VGVzdE1lZGlhVUlQYXJ0
KGludCBwYXJ0LCBpbnQgdGhlbWVTdHlsZSwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7
Cit2b2lkIFdLTWVhc3VyZU1lZGlhVUlQYXJ0KGludCBwYXJ0LCBpbnQgdGhlbWVTdHlsZSwgQ0dS
ZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwordm9pZCBXS0RyYXdNZWRpYVVJUGFy
dChpbnQgcGFydCwgaW50IHRoZW1lU3R5bGUsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3Qg
cmVjdCwgdW5zaWduZWQgc3RhdGUpOwordm9pZCBXS0RyYXdNZWRpYVNsaWRlclRyYWNrKGludCB0
aGVtZVN0eWxlLCBDR0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IHJlY3QsIGZsb2F0IHRpbWVM
b2FkZWQsIGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbiwgdW5zaWduZWQgc3RhdGUp
OworCiAjZW5kaWYgLy8gV2ViS2l0U3lzdGVtSW50ZXJmYWNlX2gKSW5kZXg6IFdlYktpdExpYnJh
cmllcy93aW4vbGliL1dlYktpdFN5c3RlbUludGVyZmFjZS5saWIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IFdlYktpdExpYnJhcmllcy93aW4vbGliL1dl
YktpdFN5c3RlbUludGVyZmFjZV9kZWJ1Zy5saWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoK
</data>
<flag name="review"
          id="56488"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>