<?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>133988</bug_id>
          
          <creation_ts>2014-06-17 11:37:47 -0700</creation_ts>
          <short_desc>Use strongly typed enums for AnimationState and AnimationInputState</short_desc>
          <delta_ts>2014-06-17 13:19:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016177</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-17 11:37:47 -0700</bug_when>
    <thetext>Use strongly typed enums for AnimationState and AnimationInputState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016204</commentid>
    <comment_count>1</comment_count>
      <attachid>233249</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-17 12:33:11 -0700</bug_when>
    <thetext>Created attachment 233249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016205</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-17 12:34:43 -0700</bug_when>
    <thetext>Attachment 233249 did not pass style-queue:


ERROR: Source/WebCore/page/animation/AnimationBase.cpp:200:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/AnimationBase.h:72:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:73:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:74:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:75:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:76:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:77:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:78:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:79:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:80:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:81:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:82:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:83:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:84:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:88:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:89:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:90:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:91:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:92:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:93:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:94:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:95:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:96:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:97:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:98:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:99:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/page/animation/AnimationBase.h:100:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 27 in 5 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>1016216</commentid>
    <comment_count>3</comment_count>
      <attachid>233249</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-17 12:48:45 -0700</bug_when>
    <thetext>Comment on attachment 233249
Patch

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

&gt; Source/WebCore/page/animation/AnimationBase.h:87
&gt; +    enum AnimationStateInput {

where&apos;s the &quot;class&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016230</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-17 13:19:41 -0700</bug_when>
    <thetext>Committed r170070: &lt;http://trac.webkit.org/changeset/170070&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233249</attachid>
            <date>2014-06-17 12:33:11 -0700</date>
            <delta_ts>2014-06-17 12:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133988-20140617123249.patch</filename>
            <type>text/plain</type>
            <size>53840</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4M2MxNmEyOTdiMmUz
NDYwZjdkOTAxMWM1ZjQ5M2UzMmZjODE5MC4uYjY2MjY3Zjg4NDg0OGUxZmVlNGNhMTA2NTZmZDUy
MWVjN2VmMWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE0LTA2LTE3ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHN0cm9uZ2x5
IHR5cGVkIGVudW1zIGZvciBBbmltYXRpb25TdGF0ZSBhbmQgQW5pbWF0aW9uSW5wdXRTdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzOTg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJh
c2U6OkFuaW1hdGlvbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZUZvclN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6dXBkYXRlUGxheVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmdvSW50b0VuZGluZ09yTG9vcGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkJhc2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
Om9uQW5pbWF0aW9uU3RhcnRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25C
YXNlOjp3YWl0aW5nVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpw
cmVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cG9zdEFjdGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpmaWxsaW5nRm9yd2FyZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkJhc2U6OmluUGF1c2VkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQmFzZTo6aXNOZXcpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6d2FpdGlu
Z0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjp3YWl0aW5n
Rm9yU3R5bGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6aXNB
bmltYXRpbmdQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpzdHls
ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpjb21wb3NpdGVB
bmltYXRpb24pOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpvbkFuaW1hdGlvbkVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNldE92ZXJyaWRkZW4pOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KToKKwogMjAxNC0wNi0xNyAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ2FjaGUgdGhlIGdzdF9xdWVy
eV9nZXRfbl9idWZmZXJpbmdfcmFuZ2VzKCkgcmV0dXJuIHZhbHVlIGZvciB0aGUgZm9yLWxvb3Ag
Y29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAKaW5kZXggYzM4MmYxOGQyZDYzMDhlMDk1YzFmZGFhNjVlOWJmMTE4ODVkNmRjNy4u
MzQzMDAxYWVmYWJiZjJlNmE2ZWMwMDMzNzFmNDU0NTY0MTdiMTlmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTY4LDggKzY4LDgg
QEAgc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywg
Ym9vbCBzdGVwQXRTdGFydCwgZG91YmxlIHQKICAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0
KSAvIG51bVN0ZXBzOwogfQogCi1BbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNlKGNvbnN0IEFu
aW1hdGlvbiYgdHJhbnNpdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENvbXBvc2l0ZUFu
aW1hdGlvbiogY29tcEFuaW0pCi0gICAgOiBtX2FuaW1TdGF0ZShBbmltYXRpb25TdGF0ZU5ldykK
K0FuaW1hdGlvbkJhc2U6OkFuaW1hdGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9u
LCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVB
bmltYXRpb24pCisgICAgOiBtX2FuaW1hdGlvblN0YXRlKEFuaW1hdGlvblN0YXRlOjpOZXcpCiAg
ICAgLCBtX2lzQWNjZWxlcmF0ZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlz
dFZhbGlkKGZhbHNlKQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTgyLDcgKzgyLDcgQEAg
QW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uQmFzZShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24s
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmUKICAgICAsIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uKC0x
KQogICAgICwgbV9vYmplY3QocmVuZGVyZXIpCiAgICAgLCBtX2FuaW1hdGlvbihjb25zdF9jYXN0
PEFuaW1hdGlvbio+KCZ0cmFuc2l0aW9uKSkKLSAgICAsIG1fY29tcEFuaW0oY29tcEFuaW0pCisg
ICAgLCBtX2NvbXBvc2l0ZUFuaW1hdGlvbihjb21wb3NpdGVBbmltYXRpb24pCiB7CiAgICAgLy8g
Q29tcHV0ZSB0aGUgdG90YWwgZHVyYXRpb24KICAgICBpZiAobV9hbmltYXRpb24tPml0ZXJhdGlv
bkNvdW50KCkgPiAwKQpAQCAtMTEyLDM4ICsxMTIsMzggQEAgYm9vbCBBbmltYXRpb25CYXNlOjph
bmltYXRpb25zTWF0Y2goY29uc3QgQW5pbWF0aW9uKiBhbmltKSBjb25zdAogfQogCiAjaWYgIUxP
R19ESVNBQkxFRAotc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JTdGF0ZShBbmltYXRpb25CYXNl
OjpBbmltU3RhdGUgc3RhdGUpCitzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclN0YXRlKEFuaW1h
dGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlIHN0YXRlKQogewogICAgIHN3aXRjaCAoc3RhdGUpIHsK
LSAgICBjYXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlTmV3OiByZXR1cm4gIk5ldyI7
Ci0gICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFRpbWVyOiBy
ZXR1cm4gIlN0YXJ0V2FpdFRpbWVyIjsKLSAgICBjYXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlv
blN0YXRlU3RhcnRXYWl0U3R5bGVBdmFpbGFibGU6IHJldHVybiAiU3RhcnRXYWl0U3R5bGVBdmFp
bGFibGUiOwotICAgIGNhc2UgQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3RhdGVTdGFydFdhaXRS
ZXNwb25zZTogcmV0dXJuICJTdGFydFdhaXRSZXNwb25zZSI7Ci0gICAgY2FzZSBBbmltYXRpb25C
YXNlOjpBbmltYXRpb25TdGF0ZUxvb3Bpbmc6IHJldHVybiAiTG9vcGluZyI7Ci0gICAgY2FzZSBB
bmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZUVuZGluZzogcmV0dXJuICJFbmRpbmciOwotICAg
IGNhc2UgQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3RhdGVQYXVzZWROZXc6IHJldHVybiAiUGF1
c2VkTmV3IjsKLSAgICBjYXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlUGF1c2VkV2Fp
dFRpbWVyOiByZXR1cm4gIlBhdXNlZFdhaXRUaW1lciI7Ci0gICAgY2FzZSBBbmltYXRpb25CYXNl
OjpBbmltYXRpb25TdGF0ZVBhdXNlZFdhaXRTdHlsZUF2YWlsYWJsZTogcmV0dXJuICJQYXVzZWRX
YWl0U3R5bGVBdmFpbGFibGUiOwotICAgIGNhc2UgQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3Rh
dGVQYXVzZWRXYWl0UmVzcG9uc2U6IHJldHVybiAiUGF1c2VkV2FpdFJlc3BvbnNlIjsKLSAgICBj
YXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlUGF1c2VkUnVuOiByZXR1cm4gIlBhdXNl
ZFJ1biI7Ci0gICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZURvbmU6IHJldHVy
biAiRG9uZSI7Ci0gICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZUZpbGxpbmdG
b3J3YXJkczogcmV0dXJuICJGaWxsaW5nRm9yd2FyZHMiOworICAgIGNhc2UgQW5pbWF0aW9uQmFz
ZTo6QW5pbWF0aW9uU3RhdGU6Ok5ldzogcmV0dXJuICJOZXciOworICAgIGNhc2UgQW5pbWF0aW9u
QmFzZTo6QW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2FpdFRpbWVyOiByZXR1cm4gIlN0YXJ0V2FpdFRp
bWVyIjsKKyAgICBjYXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRT
dHlsZUF2YWlsYWJsZTogcmV0dXJuICJTdGFydFdhaXRTdHlsZUF2YWlsYWJsZSI7CisgICAgY2Fz
ZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0UmVzcG9uc2U6IHJldHVy
biAiU3RhcnRXYWl0UmVzcG9uc2UiOworICAgIGNhc2UgQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9u
U3RhdGU6Okxvb3Bpbmc6IHJldHVybiAiTG9vcGluZyI7CisgICAgY2FzZSBBbmltYXRpb25CYXNl
OjpBbmltYXRpb25TdGF0ZTo6RW5kaW5nOiByZXR1cm4gIkVuZGluZyI7CisgICAgY2FzZSBBbmlt
YXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6UGF1c2VkTmV3OiByZXR1cm4gIlBhdXNlZE5ldyI7
CisgICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6UGF1c2VkV2FpdFRpbWVy
OiByZXR1cm4gIlBhdXNlZFdhaXRUaW1lciI7CisgICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmlt
YXRpb25TdGF0ZTo6UGF1c2VkV2FpdFN0eWxlQXZhaWxhYmxlOiByZXR1cm4gIlBhdXNlZFdhaXRT
dHlsZUF2YWlsYWJsZSI7CisgICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6
UGF1c2VkV2FpdFJlc3BvbnNlOiByZXR1cm4gIlBhdXNlZFdhaXRSZXNwb25zZSI7CisgICAgY2Fz
ZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6UGF1c2VkUnVuOiByZXR1cm4gIlBhdXNl
ZFJ1biI7CisgICAgY2FzZSBBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZTo6RG9uZTogcmV0
dXJuICJEb25lIjsKKyAgICBjYXNlIEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlOjpGaWxs
aW5nRm9yd2FyZHM6IHJldHVybiAiRmlsbGluZ0ZvcndhcmRzIjsKICAgICB9CiAgICAgcmV0dXJu
ICIiOwogfQogI2VuZGlmCiAKLXZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5l
KEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCit2b2lkIEFuaW1hdGlvbkJhc2U6
OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFy
YW0pCiB7Ci0gICAgaWYgKCFtX2NvbXBBbmltKQorICAgIGlmICghbV9jb21wb3NpdGVBbmltYXRp
b24pCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElmIHdlIGdldCBBbmltYXRpb25TdGF0ZUlu
cHV0UmVzdGFydEFuaW1hdGlvbiB0aGVuIHdlIGZvcmNlIGEgbmV3IGFuaW1hdGlvbiwgcmVnYXJk
bGVzcyBvZiBzdGF0ZS4KLSAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dE1ha2VO
ZXcpIHsKLSAgICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0
U3R5bGVBdmFpbGFibGUpCi0gICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9s
bGVyKCktPnJlbW92ZUZyb21BbmltYXRpb25zV2FpdGluZ0ZvclN0eWxlKHRoaXMpOwotICAgICAg
ICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IE5ldyIsIHRoaXMsIG5h
bWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlv
blN0YXRlTmV3OworICAgIC8vIElmIHdlIGdldCBBbmltYXRpb25TdGF0ZUlucHV0OjpSZXN0YXJ0
QW5pbWF0aW9uIHRoZW4gd2UgZm9yY2UgYSBuZXcgYW5pbWF0aW9uLCByZWdhcmRsZXNzIG9mIHN0
YXRlLgorICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0OjpNYWtlTmV3KSB7Cisg
ICAgICAgIGlmIChtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRT
dHlsZUF2YWlsYWJsZSkKKyAgICAgICAgICAgIG1fY29tcG9zaXRlQW5pbWF0aW9uLT5hbmltYXRp
b25Db250cm9sbGVyKCktPnJlbW92ZUZyb21BbmltYXRpb25zV2FpdGluZ0ZvclN0eWxlKHRoaXMp
OworICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IE5ldyIs
IHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAgICAgIG1fYW5pbWF0
aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6TmV3OwogICAgICAgICBtX3N0YXJ0VGltZSA9IDA7
CiAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7CiAgICAgICAgIG1fcmVxdWVzdGVkU3RhcnRUaW1l
ID0gMDsKQEAgLTE1MiwxMSArMTUyLDExIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3Rh
dGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFJlc3Rh
cnRBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRl
U3RhcnRXYWl0U3R5bGVBdmFpbGFibGUpCi0gICAgICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRp
b25Db250cm9sbGVyKCktPnJlbW92ZUZyb21BbmltYXRpb25zV2FpdGluZ0ZvclN0eWxlKHRoaXMp
OwotICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IE5ldyIs
IHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICBtX2FuaW1TdGF0ZSA9
IEFuaW1hdGlvblN0YXRlTmV3OworICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0
OjpSZXN0YXJ0QW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2FuaW1hdGlvblN0YXRlID09IEFu
aW1hdGlvblN0YXRlOjpTdGFydFdhaXRTdHlsZUF2YWlsYWJsZSkKKyAgICAgICAgICAgIG1fY29t
cG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCktPnJlbW92ZUZyb21BbmltYXRp
b25zV2FpdGluZ0ZvclN0eWxlKHRoaXMpOworICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFu
aW1hdGlvblN0YXRlICVzIC0+IE5ldyIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0
YXRlKSk7CisgICAgICAgIG1fYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6TmV3Owog
ICAgICAgICBtX3N0YXJ0VGltZSA9IDA7CiAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7CiAgICAg
ICAgIG1fcmVxdWVzdGVkU3RhcnRUaW1lID0gMDsKQEAgLTE2NCwzMSArMTY0LDMxIEBAIHZvaWQg
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBk
b3VibGUgcGFyYW0pCiAgICAgICAgIGVuZEFuaW1hdGlvbigpOwogCiAgICAgICAgIGlmICghcGF1
c2VkKCkpCi0gICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1
dFN0YXJ0QW5pbWF0aW9uLCAtMSk7CisgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5p
bWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRBbmltYXRpb24sIC0xKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0RW5kQW5pbWF0aW9u
KSB7Ci0gICAgICAgIGlmIChtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFN0
eWxlQXZhaWxhYmxlKQotICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxl
cigpLT5yZW1vdmVGcm9tQW5pbWF0aW9uc1dhaXRpbmdGb3JTdHlsZSh0aGlzKTsKLSAgICAgICAg
TE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBEb25lIiwgdGhpcywgbmFt
ZUZvclN0YXRlKG1fYW5pbVN0YXRlKSk7Ci0gICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9u
U3RhdGVEb25lOworICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0OjpFbmRBbmlt
YXRpb24pIHsKKyAgICAgICAgaWYgKG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6
OlN0YXJ0V2FpdFN0eWxlQXZhaWxhYmxlKQorICAgICAgICAgICAgbV9jb21wb3NpdGVBbmltYXRp
b24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlRnJvbUFuaW1hdGlvbnNXYWl0aW5nRm9y
U3R5bGUodGhpcyk7CisgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUg
JXMgLT4gRG9uZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAg
ICAgIG1fYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6RG9uZTsKICAgICAgICAgZW5k
QW5pbWF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaW5wdXQgPT0g
QW5pbWF0aW9uU3RhdGVJbnB1dFBhdXNlT3ZlcnJpZGUpIHsKLSAgICAgICAgaWYgKG1fYW5pbVN0
YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9uc2UpIHsKLSAgICAgICAgICAgIC8v
IElmIHdlIGFyZSBpbiBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFJlc3BvbnNlLCB0aGUgYW5pbWF0
aW9uIHdpbGwgZ2V0IGNhbmNlbGVkIGJlZm9yZSAKKyAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9u
U3RhdGVJbnB1dDo6UGF1c2VPdmVycmlkZSkgeworICAgICAgICBpZiAobV9hbmltYXRpb25TdGF0
ZSA9PSBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0UmVzcG9uc2UpIHsKKyAgICAgICAgICAgIC8v
IElmIHdlIGFyZSBpbiBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0UmVzcG9uc2UsIHRoZSBhbmlt
YXRpb24gd2lsbCBnZXQgY2FuY2VsZWQgYmVmb3JlIAogICAgICAgICAgICAgLy8gd2UgZ2V0IGEg
cmVzcG9uc2UsIHNvIG1vdmUgdG8gdGhlIG5leHQgc3RhdGUuCiAgICAgICAgICAgICBlbmRBbmlt
YXRpb24oKTsKLSAgICAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0U3RhcnRUaW1lU2V0LCBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSk7CisgICAgICAgICAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lU2V0LCBi
ZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UmVzdW1lT3ZlcnJp
ZGUpIHsKLSAgICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlTG9vcGluZyB8
fCBtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZUVuZGluZykgeworICAgIGlmIChpbnB1dCA9
PSBBbmltYXRpb25TdGF0ZUlucHV0OjpSZXN1bWVPdmVycmlkZSkgeworICAgICAgICBpZiAobV9h
bmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6TG9vcGluZyB8fCBtX2FuaW1hdGlvblN0
YXRlID09IEFuaW1hdGlvblN0YXRlOjpFbmRpbmcpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IHRo
ZSBhbmltYXRpb24KICAgICAgICAgICAgIHN0YXJ0QW5pbWF0aW9uKGJlZ2luQW5pbWF0aW9uVXBk
YXRlVGltZSgpIC0gbV9zdGFydFRpbWUpOwogICAgICAgICB9CkBAIC0xOTYsNDcgKzE5Niw0NyBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBp
bnB1dCwgZG91YmxlIHBhcmFtKQogICAgIH0KIAogICAgIC8vIEV4ZWN1dGUgc3RhdGUgbWFjaGlu
ZQotICAgIHN3aXRjaCAobV9hbmltU3RhdGUpIHsKLSAgICAgICAgY2FzZSBBbmltYXRpb25TdGF0
ZU5ldzoKLSAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0U3Rh
cnRBbmltYXRpb24gfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFBsYXlTdGF0ZVJ1bm5p
bmcgfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFBsYXlTdGF0ZVBhdXNlZCk7Ci0gICAg
ICAgICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0QW5pbWF0aW9uIHx8
IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXRQbGF5U3RhdGVSdW5uaW5nKSB7CisgICAgc3dp
dGNoIChtX2FuaW1hdGlvblN0YXRlKSB7CisgICAgICAgIGNhc2UgQW5pbWF0aW9uU3RhdGU6Ok5l
dzoKKyAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0OjpTdGFy
dEFuaW1hdGlvbiB8fCBpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVSdW5u
aW5nIHx8IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0ZVBhdXNlZCk7Cisg
ICAgICAgICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRBbmltYXRp
b24gfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6UGxheVN0YXRlUnVubmluZykgewog
ICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkU3RhcnRUaW1lID0gYmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lKCk7Ci0gICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25T
dGF0ZSAlcyAtPiBTdGFydFdhaXRUaW1lciIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0
ZSkpOwotICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVTdGFydFdh
aXRUaW1lcjsKKyAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0
YXRlICVzIC0+IFN0YXJ0V2FpdFRpbWVyIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbWF0aW9u
U3RhdGUpKTsKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3Rh
dGU6OlN0YXJ0V2FpdFRpbWVyOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgcGF1c2luZyBiZWZvcmUgd2UgZXZlbiBzdGFydGVkLgotICAgICAgICAgICAg
ICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gQW5pbWF0aW9uU3Rh
dGVQYXVzZWROZXciLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAg
ICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlUGF1c2VkTmV3OworICAgICAgICAg
ICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gQW5pbWF0aW9u
U3RhdGU6OlBhdXNlZE5ldyIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7
CisgICAgICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlOjpQYXVz
ZWROZXc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBB
bmltYXRpb25TdGF0ZVN0YXJ0V2FpdFRpbWVyOgotICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09
IEFuaW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVyRmlyZWQgfHwgaW5wdXQgPT0gQW5pbWF0aW9u
U3RhdGVJbnB1dFBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgIGNhc2UgQW5pbWF0aW9uU3RhdGU6
OlN0YXJ0V2FpdFRpbWVyOgorICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09IEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCB8fCBpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0
OjpQbGF5U3RhdGVQYXVzZWQpOwogCi0gICAgICAgICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9u
U3RhdGVJbnB1dFN0YXJ0VGltZXJGaXJlZCkgeworICAgICAgICAgICAgaWYgKGlucHV0ID09IEFu
aW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChwYXJhbSA+PSAwKTsKICAgICAgICAgICAgICAgICAvLyBTdGFydCB0aW1lciBoYXMgZmly
ZWQsIHRlbGwgdGhlIGFuaW1hdGlvbiB0byBzdGFydCBhbmQgd2FpdCBmb3IgaXQgdG8gcmVzcG9u
ZCB3aXRoIHN0YXJ0IHRpbWUKLSAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFu
aW1hdGlvblN0YXRlICVzIC0+IFN0YXJ0V2FpdFN0eWxlQXZhaWxhYmxlIiwgdGhpcywgbmFtZUZv
clN0YXRlKG1fYW5pbVN0YXRlKSk7Ci0gICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmlt
YXRpb25TdGF0ZVN0YXJ0V2FpdFN0eWxlQXZhaWxhYmxlOwotICAgICAgICAgICAgICAgIG1fY29t
cEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkVG9BbmltYXRpb25zV2FpdGluZ0ZvclN0
eWxlKHRoaXMpOworICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9u
U3RhdGUgJXMgLT4gU3RhcnRXYWl0U3R5bGVBdmFpbGFibGUiLCB0aGlzLCBuYW1lRm9yU3RhdGUo
bV9hbmltYXRpb25TdGF0ZSkpOworICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9uU3RhdGUgPSBB
bmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0U3R5bGVBdmFpbGFibGU7CisgICAgICAgICAgICAgICAg
bV9jb21wb3NpdGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkVG9BbmltYXRp
b25zV2FpdGluZ0ZvclN0eWxlKHRoaXMpOwogCiAgICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBh
IHJlbmRlciBzbyB3ZSBjYW4gc3RhcnQgdGhlIGFuaW1hdGlvbgogICAgICAgICAgICAgICAgIGlm
IChtX29iamVjdCAmJiBtX29iamVjdC0+ZWxlbWVudCgpKQotICAgICAgICAgICAgICAgICAgICBt
X2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZEVsZW1lbnRDaGFuZ2VUb0Rpc3Bh
dGNoKCptX29iamVjdC0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb21wb3Np
dGVBbmltYXRpb24tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkRWxlbWVudENoYW5nZVRvRGlz
cGF0Y2goKm1fb2JqZWN0LT5lbGVtZW50KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIXBhdXNlZCgpKTsKICAgICAgICAgICAgICAgICAvLyBXZSdyZSB3
YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSBhbmQgd2UgZ290IGEgcGF1c2UuIENh
bmNlbCB0aGUgdGltZXIsIHBhdXNlIGFuZCB3YWl0CiAgICAgICAgICAgICAgICAgbV9wYXVzZVRp
bWUgPSBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKTsKLSAgICAgICAgICAgICAgICBMT0coQW5p
bWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IFBhdXNlZFdhaXRUaW1lciIsIHRoaXMs
IG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRl
ID0gQW5pbWF0aW9uU3RhdGVQYXVzZWRXYWl0VGltZXI7CisgICAgICAgICAgICAgICAgTE9HKEFu
aW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQYXVzZWRXYWl0VGltZXIiLCB0aGlz
LCBuYW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0ZSkpOworICAgICAgICAgICAgICAgIG1fYW5p
bWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6UGF1c2VkV2FpdFRpbWVyOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQW5pbWF0aW9uU3RhdGVTdGFy
dFdhaXRTdHlsZUF2YWlsYWJsZToKLSAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9PSBBbmltYXRp
b25TdGF0ZUlucHV0U3R5bGVBdmFpbGFibGUgfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1
dFBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgIGNhc2UgQW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2Fp
dFN0eWxlQXZhaWxhYmxlOgorICAgICAgICAgICAgQVNTRVJUKGlucHV0ID09IEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlN0eWxlQXZhaWxhYmxlIHx8IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6
OlBsYXlTdGF0ZVBhdXNlZCk7CiAKLSAgICAgICAgICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25T
dGF0ZUlucHV0U3R5bGVBdmFpbGFibGUpIHsKKyAgICAgICAgICAgIGlmIChpbnB1dCA9PSBBbmlt
YXRpb25TdGF0ZUlucHV0OjpTdHlsZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFN0
YXJ0IHRpbWVyIGhhcyBmaXJlZCwgdGVsbCB0aGUgYW5pbWF0aW9uIHRvIHN0YXJ0IGFuZCB3YWl0
IGZvciBpdCB0byByZXNwb25kIHdpdGggc3RhcnQgdGltZQotICAgICAgICAgICAgICAgIExPRyhB
bmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gU3RhcnRXYWl0UmVzcG9uc2UiLCB0
aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAgICAgICAgICBtX2FuaW1T
dGF0ZSA9IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9uc2U7CisgICAgICAgICAgICAgICAg
TE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBTdGFydFdhaXRSZXNwb25z
ZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAgICAgICAgICAg
ICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRSZXNwb25zZTsK
IAogICAgICAgICAgICAgICAgIG92ZXJyaWRlQW5pbWF0aW9ucygpOwogCkBAIC0yNDQsMTAgKzI0
NCwxMCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJ
bnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZGVu
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd29uJ3QgdHJ5IHRvIHN0YXJ0IGFjY2Vs
ZXJhdGVkIGFuaW1hdGlvbnMgaWYgd2UgYXJlIG92ZXJyaWRkZW4gYW5kCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGp1c3QgbW92ZSBvbiB0byB0aGUgbmV4dCBzdGF0ZS4KLSAgICAgICAgICAgICAg
ICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBTdGFydFdhaXRS
ZXNwb25zZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICAgICAg
ICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9uc2U7Cisg
ICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMg
LT4gU3RhcnRXYWl0UmVzcG9uc2UiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0
ZSkpOworICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3Rh
dGU6OlN0YXJ0V2FpdFJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0
ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1h
dGlvblN0YXRlSW5wdXRTdGFydFRpbWVTZXQsIGJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5w
dXQ6OlN0YXJ0VGltZVNldCwgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0ID0g
MDsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGZvciAnYW5pbWF0aW9uLWRl
bGF5JyBpcyBuZWdhdGl2ZSB0aGVuIHRoZSBhbmltYXRpb24gYXBwZWFycyB0byBoYXZlIHN0YXJ0
ZWQgaW4gdGhlIHBhc3QuCkBAIC0yNTUsMjAgKzI1NSwyMCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6
OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQog
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZU9mZnNldCA9IC1tX2FuaW1hdGlvbi0+ZGVsYXko
KTsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdGFydGVkID0gc3RhcnRBbmltYXRpb24odGlt
ZU9mZnNldCk7CiAKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29u
dHJvbGxlcigpLT5hZGRUb0FuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lUmVzcG9uc2UodGhp
cywgc3RhcnRlZCk7CisgICAgICAgICAgICAgICAgICAgIG1fY29tcG9zaXRlQW5pbWF0aW9uLT5h
bmltYXRpb25Db250cm9sbGVyKCktPmFkZFRvQW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWVS
ZXNwb25zZSh0aGlzLCBzdGFydGVkKTsKICAgICAgICAgICAgICAgICAgICAgbV9pc0FjY2VsZXJh
dGVkID0gc3RhcnRlZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBzdHlsZSB0byBiZSBhdmFp
bGFibGUgYW5kIHdlIGdvdCBhIHBhdXNlLiBQYXVzZSBhbmQgd2FpdAogICAgICAgICAgICAgICAg
IG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7Ci0gICAgICAgICAgICAg
ICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQYXVzZWRXYWl0U3R5
bGVBdmFpbGFibGUiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAg
ICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFN0eWxlQXZhaWxh
YmxlOworICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUg
JXMgLT4gUGF1c2VkV2FpdFN0eWxlQXZhaWxhYmxlIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5p
bWF0aW9uU3RhdGUpKTsKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0
aW9uU3RhdGU6OlBhdXNlZFdhaXRTdHlsZUF2YWlsYWJsZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9u
c2U6Ci0gICAgICAgICAgICBBU1NFUlQoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0
VGltZVNldCB8fCBpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UGxheVN0YXRlUGF1c2VkKTsK
KyAgICAgICAgY2FzZSBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0UmVzcG9uc2U6CisgICAgICAg
ICAgICBBU1NFUlQoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lU2V0IHx8
IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0ZVBhdXNlZCk7CiAKLSAgICAg
ICAgICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRUaW1lU2V0KSB7Cisg
ICAgICAgICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lU2V0
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtID49IDApOwogICAgICAgICAgICAgICAg
IC8vIFdlIGhhdmUgYSBzdGFydCB0aW1lLCBzZXQgaXQsIHVubGVzcyB0aGUgc3RhcnRUaW1lIGlz
IGFscmVhZHkgc2V0CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhcnRUaW1lIDw9IDApIHsKQEAg
LTI4NiwyMCArMjg2LDIwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5l
KEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAgICAgICAgICAgICAgICAv
LyBEaXNwYXRjaCB1cGRhdGVTdHlsZUlmTmVlZGVkIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5pbWF0
aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0ICYmIG1fb2JqZWN0LT5lbGVtZW50KCkp
Ci0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+
YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goKm1fb2JqZWN0LT5lbGVtZW50KCkpOworICAgICAg
ICAgICAgICAgICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigp
LT5hZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaCgqbV9vYmplY3QtPmVsZW1lbnQoKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxl
IHdhaXRpbmcgZm9yIGEgc3RhcnQgcmVzcG9uc2UuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3
YWl0LiBXaGVuIAogICAgICAgICAgICAgICAgIC8vIHdlIHVucGF1c2UsIHdlIHdpbGwgYWN0IGFz
IHRob3VnaCB0aGUgc3RhcnQgdGltZXIganVzdCBmaXJlZAogICAgICAgICAgICAgICAgIG1fcGF1
c2VUaW1lID0gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7CiAgICAgICAgICAgICAgICAgcGF1
c2VBbmltYXRpb24oYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZSk7Ci0g
ICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQ
YXVzZWRXYWl0UmVzcG9uc2UiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAg
ICAgICAgICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFJlc3Bv
bnNlOworICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUg
JXMgLT4gUGF1c2VkV2FpdFJlc3BvbnNlIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbWF0aW9u
U3RhdGUpKTsKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3Rh
dGU6OlBhdXNlZFdhaXRSZXNwb25zZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlTG9vcGluZzoKLSAgICAgICAgICAgIEFTU0VS
VChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0TG9vcFRpbWVyRmlyZWQgfHwgaW5wdXQgPT0g
QW5pbWF0aW9uU3RhdGVJbnB1dFBsYXlTdGF0ZVBhdXNlZCk7CisgICAgICAgIGNhc2UgQW5pbWF0
aW9uU3RhdGU6Okxvb3Bpbmc6CisgICAgICAgICAgICBBU1NFUlQoaW5wdXQgPT0gQW5pbWF0aW9u
U3RhdGVJbnB1dDo6TG9vcFRpbWVyRmlyZWQgfHwgaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1
dDo6UGxheVN0YXRlUGF1c2VkKTsKIAotICAgICAgICAgICAgaWYgKGlucHV0ID09IEFuaW1hdGlv
blN0YXRlSW5wdXRMb29wVGltZXJGaXJlZCkgeworICAgICAgICAgICAgaWYgKGlucHV0ID09IEFu
aW1hdGlvblN0YXRlSW5wdXQ6Okxvb3BUaW1lckZpcmVkKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHBhcmFtID49IDApOwogICAgICAgICAgICAgICAgIC8vIExvb3AgdGltZXIgZmlyZWQsIGxv
b3AgYWdhaW4gb3IgZW5kLgogICAgICAgICAgICAgICAgIG9uQW5pbWF0aW9uSXRlcmF0aW9uKHBh
cmFtKTsKQEAgLTMxMCwxMzEgKzMxMCwxMzEgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVT
dGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAgICAgICAg
ICAgICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1h
dGlvbiBhbmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lKCk7CiAgICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5Bbmlt
YXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZSk7Ci0gICAgICAgICAgICAgICAgTE9HKEFu
aW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQYXVzZWRSdW4iLCB0aGlzLCBuYW1l
Rm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAgICAgICAgICBtX2FuaW1TdGF0ZSA9IEFu
aW1hdGlvblN0YXRlUGF1c2VkUnVuOworICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAi
JXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gUGF1c2VkUnVuIiwgdGhpcywgbmFtZUZvclN0YXRlKG1f
YW5pbWF0aW9uU3RhdGUpKTsKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5p
bWF0aW9uU3RhdGU6OlBhdXNlZFJ1bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlRW5kaW5nOgorICAgICAgICBjYXNlIEFuaW1h
dGlvblN0YXRlOjpFbmRpbmc6CiAjaWYgIUxPR19ESVNBQkxFRAotICAgICAgICAgICAgaWYgKGlu
cHV0ICE9IEFuaW1hdGlvblN0YXRlSW5wdXRFbmRUaW1lckZpcmVkICYmIGlucHV0ICE9IEFuaW1h
dGlvblN0YXRlSW5wdXRQbGF5U3RhdGVQYXVzZWQpCi0gICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJTdGF0ZSBpcyBBbmltYXRpb25TdGF0ZUVuZGluZywgYnV0IGlucHV0IGlzIG5vdCBBbmltYXRp
b25TdGF0ZUlucHV0RW5kVGltZXJGaXJlZCBvciBBbmltYXRpb25TdGF0ZUlucHV0UGxheVN0YXRl
UGF1c2VkLiBJdCBpcyAlZC4iLCBpbnB1dCk7CisgICAgICAgICAgICBpZiAoaW5wdXQgIT0gQW5p
bWF0aW9uU3RhdGVJbnB1dDo6RW5kVGltZXJGaXJlZCAmJiBpbnB1dCAhPSBBbmltYXRpb25TdGF0
ZUlucHV0OjpQbGF5U3RhdGVQYXVzZWQpCisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJTdGF0
ZSBpcyBBbmltYXRpb25TdGF0ZTo6RW5kaW5nLCBidXQgaW5wdXQgaXMgbm90IEFuaW1hdGlvblN0
YXRlSW5wdXQ6OkVuZFRpbWVyRmlyZWQgb3IgQW5pbWF0aW9uU3RhdGVJbnB1dDo6UGxheVN0YXRl
UGF1c2VkLiBJdCBpcyAlZC4iLCBpbnB1dCk7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmIChpbnB1
dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0RW5kVGltZXJGaXJlZCkgeworICAgICAgICAgICAgaWYg
KGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OkVuZFRpbWVyRmlyZWQpIHsKIAogICAgICAg
ICAgICAgICAgIEFTU0VSVChwYXJhbSA+PSAwKTsKICAgICAgICAgICAgICAgICAvLyBFbmQgdGlt
ZXIgZmlyZWQsIGZpbmlzaCB1cAogICAgICAgICAgICAgICAgIG9uQW5pbWF0aW9uRW5kKHBhcmFt
KTsKIAotICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUg
JXMgLT4gRG9uZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICAg
ICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVEb25lOworICAgICAgICAgICAgICAg
IExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gRG9uZSIsIHRoaXMsIG5h
bWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAgICAgICAgICAgICAgbV9hbmltYXRp
b25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlOjpEb25lOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9hbmlt
YXRpb24tPmZpbGxzRm9yd2FyZHMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTE9HKEFu
aW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBGaWxsaW5nRm9yd2FyZHMiLCB0aGlz
LCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
YW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVGaWxsaW5nRm9yd2FyZHM7CisgICAgICAgICAgICAg
ICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IEZpbGxp
bmdGb3J3YXJkcyIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3RhdGU6OkZp
bGxpbmdGb3J3YXJkczsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bWVPdmVycmlkZGVuQW5pbWF0aW9ucygpOwogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZpcmUgb2ZmIGFub3RoZXIgc3R5bGUgY2hhbmdlIHNvIHdlIGNhbiBzZXQgdGhl
IGZpbmFsIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX29iamVjdC0+ZWxlbWVudCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxl
cigpLT5hZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaCgqbV9vYmplY3QtPmVsZW1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29u
dHJvbGxlcigpLT5hZGRFbGVtZW50Q2hhbmdlVG9EaXNwYXRjaCgqbV9vYmplY3QtPmVsZW1lbnQo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAvLyBXZSBhcmUgcGF1c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlv
biBhbmQgd2FpdAogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lID0gYmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lKCk7CiAgICAgICAgICAgICAgICAgcGF1c2VBbmltYXRpb24oYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZSk7Ci0gICAgICAgICAgICAgICAgTE9HKEFuaW1h
dGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQYXVzZWRSdW4iLCB0aGlzLCBuYW1lRm9y
U3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAgICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1h
dGlvblN0YXRlUGF1c2VkUnVuOworICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAg
QW5pbWF0aW9uU3RhdGUgJXMgLT4gUGF1c2VkUnVuIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5p
bWF0aW9uU3RhdGUpKTsKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0
aW9uU3RhdGU6OlBhdXNlZFJ1bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIHx0aGlz
fCBtYXkgYmUgZGVsZXRlZCBoZXJlCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBB
bmltYXRpb25TdGF0ZVBhdXNlZFdhaXRUaW1lcjoKLSAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9
PSBBbmltYXRpb25TdGF0ZUlucHV0UGxheVN0YXRlUnVubmluZyk7CisgICAgICAgIGNhc2UgQW5p
bWF0aW9uU3RhdGU6OlBhdXNlZFdhaXRUaW1lcjoKKyAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9
PSBBbmltYXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVSdW5uaW5nKTsKICAgICAgICAgICAgIEFT
U0VSVChwYXVzZWQoKSk7CiAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVzCiAgICAgICAg
ICAgICBtX3N0YXJ0VGltZSArPSBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fcGF1c2VU
aW1lOwogICAgICAgICAgICAgbV9wYXVzZVRpbWUgPSAtMTsKIAogICAgICAgICAgICAgLy8gd2Ug
d2VyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnQgdGltZXIgdG8gZmlyZSwgZ28gYmFjayBhbmQgd2Fp
dCBhZ2FpbgotICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAl
cyAtPiBOZXciLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAgICAgICAgICAg
IG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVOZXc7Ci0gICAgICAgICAgICB1cGRhdGVTdGF0
ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0QW5pbWF0aW9uLCAwKTsKKyAgICAgICAg
ICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gTmV3IiwgdGhpcywg
bmFtZUZvclN0YXRlKG1fYW5pbWF0aW9uU3RhdGUpKTsKKyAgICAgICAgICAgIG1fYW5pbWF0aW9u
U3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6TmV3OworICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNo
aW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0QW5pbWF0aW9uLCAwKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlUGF1c2VkTmV3OgotICAgICAgICBj
YXNlIEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFJlc3BvbnNlOgotICAgICAgICBjYXNlIEFuaW1h
dGlvblN0YXRlUGF1c2VkV2FpdFN0eWxlQXZhaWxhYmxlOgotICAgICAgICBjYXNlIEFuaW1hdGlv
blN0YXRlUGF1c2VkUnVuOgorICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlOjpQYXVzZWROZXc6
CisgICAgICAgIGNhc2UgQW5pbWF0aW9uU3RhdGU6OlBhdXNlZFdhaXRSZXNwb25zZToKKyAgICAg
ICAgY2FzZSBBbmltYXRpb25TdGF0ZTo6UGF1c2VkV2FpdFN0eWxlQXZhaWxhYmxlOgorICAgICAg
ICBjYXNlIEFuaW1hdGlvblN0YXRlOjpQYXVzZWRSdW46CiAgICAgICAgICAgICAvLyBXZSB0cmVh
dCB0aGVzZSB0d28gY2FzZXMgdGhlIHNhbWUuIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCwg
d2hlbiB3ZSBhcmUgaW4KLSAgICAgICAgICAgIC8vIEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFJl
c3BvbnNlLCB3ZSBkb24ndCB5ZXQgaGF2ZSBhIHZhbGlkIHN0YXJ0VGltZSwgc28gd2Ugc2VuZCAw
IHRvIHN0YXJ0QW5pbWF0aW9uLgotICAgICAgICAgICAgLy8gV2hlbiB0aGUgQW5pbWF0aW9uU3Rh
dGVJbnB1dFN0YXJ0VGltZVNldCBjb21lcyBpbiBhbmQgd2Ugd2VyZSBpbiBBbmltYXRpb25TdGF0
ZVBhdXNlZFJ1biwgd2Ugd2lsbCBub3RpY2UKKyAgICAgICAgICAgIC8vIEFuaW1hdGlvblN0YXRl
OjpQYXVzZWRXYWl0UmVzcG9uc2UsIHdlIGRvbid0IHlldCBoYXZlIGEgdmFsaWQgc3RhcnRUaW1l
LCBzbyB3ZSBzZW5kIDAgdG8gc3RhcnRBbmltYXRpb24uCisgICAgICAgICAgICAvLyBXaGVuIHRo
ZSBBbmltYXRpb25TdGF0ZUlucHV0OjpTdGFydFRpbWVTZXQgY29tZXMgaW4gYW5kIHdlIHdlcmUg
aW4gQW5pbWF0aW9uU3RhdGU6OlBhdXNlZFJ1biwgd2Ugd2lsbCBub3RpY2UKICAgICAgICAgICAg
IC8vIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IHNldCB0aGUgc3RhcnRUaW1lIGFuZCB3aWxsIGlnbm9y
ZSBpdC4KLSAgICAgICAgICAgIEFTU0VSVChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UGxh
eVN0YXRlUnVubmluZyB8fCBpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRUaW1lU2V0
IHx8IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXRTdHlsZUF2YWlsYWJsZSB8fCBpbnB1dCA9
PSBBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRBbmltYXRpb24pOworICAgICAgICAgICAgQVNTRVJU
KGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0ZVJ1bm5pbmcgfHwgaW5wdXQg
PT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lU2V0IHx8IGlucHV0ID09IEFuaW1hdGlv
blN0YXRlSW5wdXQ6OlN0eWxlQXZhaWxhYmxlIHx8IGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5w
dXQ6OlN0YXJ0QW5pbWF0aW9uKTsKICAgICAgICAgICAgIEFTU0VSVChwYXVzZWQoKSk7CiAKLSAg
ICAgICAgICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UGxheVN0YXRlUnVubmlu
ZykgewotICAgICAgICAgICAgICAgIGlmIChtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZVBh
dXNlZE5ldykgeworICAgICAgICAgICAgaWYgKGlucHV0ID09IEFuaW1hdGlvblN0YXRlSW5wdXQ6
OlBsYXlTdGF0ZVJ1bm5pbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9hbmltYXRpb25TdGF0
ZSA9PSBBbmltYXRpb25TdGF0ZTo6UGF1c2VkTmV3KSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIHdlcmUgcGF1c2VkIGJlZm9yZSB3ZSBldmVuIHN0YXJ0ZWQsIGFuZCBub3cgd2UncmUgc3Vw
cG9zZWQKICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc3RhcnQsIHNvIGp1bXAgYmFjayB0byB0
aGUgTmV3IHN0YXRlIGFuZCByZXNldC4KLSAgICAgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlv
bnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBBbmltYXRpb25TdGF0ZU5ldyIsIHRoaXMsIG5h
bWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICAgICAgICAgICAgICBtX2FuaW1TdGF0
ZSA9IEFuaW1hdGlvblN0YXRlTmV3OworICAgICAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9u
cywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IEFuaW1hdGlvblN0YXRlOjpOZXciLCB0aGlzLCBu
YW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0ZSkpOworICAgICAgICAgICAgICAgICAgICBtX2Fu
aW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3RhdGU6Ok5ldzsKICAgICAgICAgICAgICAgICAgICAg
dXBkYXRlU3RhdGVNYWNoaW5lKGlucHV0LCBwYXJhbSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUg
dGltZXMKLSAgICAgICAgICAgICAgICBpZiAobV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVQ
YXVzZWRSdW4pCisgICAgICAgICAgICAgICAgaWYgKG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0
aW9uU3RhdGU6OlBhdXNlZFJ1bikKICAgICAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgKz0g
YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3BhdXNlVGltZTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsKICAgICAgICAgICAg
ICAgICBtX3BhdXNlVGltZSA9IC0xOwogCi0gICAgICAgICAgICAgICAgaWYgKG1fYW5pbVN0YXRl
ID09IEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFN0eWxlQXZhaWxhYmxlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gU3RhcnRX
YWl0U3R5bGVBdmFpbGFibGUiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltU3RhdGUpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFN0
eWxlQXZhaWxhYmxlOworICAgICAgICAgICAgICAgIGlmIChtX2FuaW1hdGlvblN0YXRlID09IEFu
aW1hdGlvblN0YXRlOjpQYXVzZWRXYWl0U3R5bGVBdmFpbGFibGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBTdGFydFdhaXRT
dHlsZUF2YWlsYWJsZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6U3Rh
cnRXYWl0U3R5bGVBdmFpbGFibGU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Ugd2VyZSBlaXRoZXIgcnVubmluZyBvciB3YWl0aW5nIGZvciBhIGJl
Z2luIHRpbWUgcmVzcG9uc2UgZnJvbSB0aGUgYW5pbWF0aW9uLgogICAgICAgICAgICAgICAgICAg
ICAvLyBFaXRoZXIgd2F5IHdlIG5lZWQgdG8gcmVzdGFydCB0aGUgYW5pbWF0aW9uIChwb3NzaWJs
eSB3aXRoIGFuIG9mZnNldCBpZiB3ZQogICAgICAgICAgICAgICAgICAgICAvLyBoYWQgYWxyZWFk
eSBiZWVuIHJ1bm5pbmcpIGFuZCB3YWl0IGZvciBpdCB0byBzdGFydC4KLSAgICAgICAgICAgICAg
ICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBTdGFydFdhaXRS
ZXNwb25zZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkpOwotICAgICAgICAgICAg
ICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9uc2U7Cisg
ICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMg
LT4gU3RhcnRXYWl0UmVzcG9uc2UiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0
ZSkpOworICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3Rh
dGU6OlN0YXJ0V2FpdFJlc3BvbnNlOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHRo
ZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRkZW4oKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd29uJ3QgdHJ5IHRvIHN0YXJ0IGFjY2VsZXJhdGVk
IGFuaW1hdGlvbnMgaWYgd2UgYXJlIG92ZXJyaWRkZW4gYW5kCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBqdXN0IG1vdmUgb24gdG8gdGhlIG5leHQgc3RhdGUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNl
dCwgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZVNldCwgYmVn
aW5BbmltYXRpb25VcGRhdGVUaW1lKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pc0Fj
Y2VsZXJhdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc3RhcnRlZCA9IHN0YXJ0QW5pbWF0aW9uKGJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZSgpIC0gbV9zdGFydFRpbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRUb0FuaW1hdGlvbnNXYWl0aW5n
Rm9yU3RhcnRUaW1lUmVzcG9uc2UodGhpcywgc3RhcnRlZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRUb0Fu
aW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lUmVzcG9uc2UodGhpcywgc3RhcnRlZCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWQgPSBzdGFydGVkOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5wdXQgPT0gQW5p
bWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCkgewotICAgICAgICAgICAgICAgIEFTU0VSVCht
X2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZVBhdXNlZFdhaXRSZXNwb25zZSk7CisgICAgICAg
ICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dDo6U3RhcnRUaW1lU2V0KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6
OlBhdXNlZFdhaXRSZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Ly8gV2UgYXJlIHBhdXNlZCBidXQgd2UgZ290IHRoZSBjYWxsYmFjayB0aGF0IG5vdGlmaWVzIHVz
IHRoYXQgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIHN0YXJ0ZWQuCiAgICAgICAgICAgICAgICAg
Ly8gV2UgaWdub3JlIHRoZSBzdGFydCB0aW1lIGFuZCBqdXN0IG1vdmUgaW50byB0aGUgcGF1c2Vk
LXJ1biBzdGF0ZS4KLSAgICAgICAgICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlv
blN0YXRlICVzIC0+IFBhdXNlZFJ1biIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1TdGF0ZSkp
OwotICAgICAgICAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVQYXVzZWRSdW47
CisgICAgICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAt
PiBQYXVzZWRSdW4iLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0ZSkpOworICAg
ICAgICAgICAgICAgIG1fYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6UGF1c2VkUnVu
OwogICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0YXJ0VGltZSA9PSAwKTsKICAgICAgICAgICAg
ICAgICBtX3N0YXJ0VGltZSA9IHBhcmFtOwogICAgICAgICAgICAgICAgIG1fcGF1c2VUaW1lICs9
IG1fc3RhcnRUaW1lOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBBU1NFUlQobV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVQYXVzZWRXYWl0
U3R5bGVBdmFpbGFibGUpOworICAgICAgICAgICAgQVNTRVJUKG1fYW5pbWF0aW9uU3RhdGUgPT0g
QW5pbWF0aW9uU3RhdGU6OlBhdXNlZFdhaXRTdHlsZUF2YWlsYWJsZSk7CiAgICAgICAgICAgICAv
LyBXZSBhcmUgcGF1c2VkIGJ1dCB3ZSBnb3QgdGhlIGNhbGxiYWNrIHRoYXQgbm90aWZpZXMgdXMg
dGhhdCBzdHlsZSBoYXMgYmVlbiB1cGRhdGVkLgotICAgICAgICAgICAgLy8gV2UgbW92ZSB0byB0
aGUgQW5pbWF0aW9uU3RhdGVQYXVzZWRXYWl0UmVzcG9uc2Ugc3RhdGUKLSAgICAgICAgICAgIExP
RyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gUGF1c2VkV2FpdFJlc3BvbnNl
IiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbVN0YXRlKSk7Ci0gICAgICAgICAgICBtX2FuaW1T
dGF0ZSA9IEFuaW1hdGlvblN0YXRlUGF1c2VkV2FpdFJlc3BvbnNlOworICAgICAgICAgICAgLy8g
V2UgbW92ZSB0byB0aGUgQW5pbWF0aW9uU3RhdGU6OlBhdXNlZFdhaXRSZXNwb25zZSBzdGF0ZQor
ICAgICAgICAgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBQYXVz
ZWRXYWl0UmVzcG9uc2UiLCB0aGlzLCBuYW1lRm9yU3RhdGUobV9hbmltYXRpb25TdGF0ZSkpOwor
ICAgICAgICAgICAgbV9hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlOjpQYXVzZWRXYWl0
UmVzcG9uc2U7CiAgICAgICAgICAgICBvdmVycmlkZUFuaW1hdGlvbnMoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlRmlsbGluZ0ZvcndhcmRzOgotICAg
ICAgICBjYXNlIEFuaW1hdGlvblN0YXRlRG9uZToKKyAgICAgICAgY2FzZSBBbmltYXRpb25TdGF0
ZTo6RmlsbGluZ0ZvcndhcmRzOgorICAgICAgICBjYXNlIEFuaW1hdGlvblN0YXRlOjpEb25lOgog
ICAgICAgICAgICAgLy8gV2UncmUgZG9uZS4gU3RheSBpbiB0aGlzIHN0YXRlIHVudGlsIHdlIGFy
ZSBkZWxldGVkCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC00NDIsMTEgKzQ0MiwxMSBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBp
bnB1dCwgZG91YmxlIHBhcmFtKQogICAgIAogdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0
aW9uRXZlbnRzSWZOZWVkZWQoKQogewotICAgIGlmICghbV9jb21wQW5pbSkKKyAgICBpZiAoIW1f
Y29tcG9zaXRlQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB3ZSBhcmUg
d2FpdGluZyBmb3IgdGhlIGRlbGF5IHRpbWUgdG8gZXhwaXJlIGFuZCBpdCBoYXMsIGdvIHRvIHRo
ZSBuZXh0IHN0YXRlCi0gICAgaWYgKG1fYW5pbVN0YXRlICE9IEFuaW1hdGlvblN0YXRlU3RhcnRX
YWl0VGltZXIgJiYgbV9hbmltU3RhdGUgIT0gQW5pbWF0aW9uU3RhdGVMb29waW5nICYmIG1fYW5p
bVN0YXRlICE9IEFuaW1hdGlvblN0YXRlRW5kaW5nKQorICAgIGlmIChtX2FuaW1hdGlvblN0YXRl
ICE9IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRUaW1lciAmJiBtX2FuaW1hdGlvblN0YXRlICE9
IEFuaW1hdGlvblN0YXRlOjpMb29waW5nICYmIG1fYW5pbWF0aW9uU3RhdGUgIT0gQW5pbWF0aW9u
U3RhdGU6OkVuZGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgaGF2ZSB0byBtYWtl
IHN1cmUgdG8ga2VlcCBhIHJlZiB0byB0aGUgdGhpcyBwb2ludGVyLCBiZWNhdXNlIGl0IGNvdWxk
IGdldCBkZXN0cm95ZWQKQEAgLTQ1NCwxMiArNDU0LDEyIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6
ZmlyZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKCkKICAgICAvLyBhbmQgaXQgcmVmIGNvdW50cyB0
aGlzIG9iamVjdCwgd2Ugd2lsbCBrZWVwIGEgcmVmIHRvIHRoYXQgaW5zdGVhZC4gVGhhdCB3YXkg
dGhlIEFuaW1hdGlvbkJhc2UKICAgICAvLyBjYW4gc3RpbGwgYWNjZXNzIHRoZSByZXNvdXJjZXMg
b2YgaXRzIENvbXBvc2l0ZUFuaW1hdGlvbiBhcyBuZWVkZWQuCiAgICAgUmVmPEFuaW1hdGlvbkJh
c2U+IHByb3RlY3QoKnRoaXMpOwotICAgIFJlZjxDb21wb3NpdGVBbmltYXRpb24+IHByb3RlY3RD
b21wb3NpdGVBbmltYXRpb24oKm1fY29tcEFuaW0pOworICAgIFJlZjxDb21wb3NpdGVBbmltYXRp
b24+IHByb3RlY3RDb21wb3NpdGVBbmltYXRpb24oKm1fY29tcG9zaXRlQW5pbWF0aW9uKTsKICAg
ICAKICAgICAvLyBDaGVjayBmb3Igc3RhcnQgdGltZW91dAotICAgIGlmIChtX2FuaW1TdGF0ZSA9
PSBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFRpbWVyKSB7CisgICAgaWYgKG1fYW5pbWF0aW9uU3Rh
dGUgPT0gQW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2FpdFRpbWVyKSB7CiAgICAgICAgIGlmIChiZWdp
bkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fcmVxdWVzdGVkU3RhcnRUaW1lID49IG1fYW5pbWF0
aW9uLT5kZWxheSgpKQotICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXRTdGFydFRpbWVyRmlyZWQsIDApOworICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNo
aW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZXJGaXJlZCwgMCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkBAIC00NzEsMTMgKzQ3MSwxMyBAQCB2b2lkIEFuaW1hdGlvbkJh
c2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCgpCiAgICAgCiAgICAgLy8gQ2hlY2sgZm9y
IGVuZCB0aW1lb3V0CiAgICAgaWYgKG1fdG90YWxEdXJhdGlvbiA+PSAwICYmIGVsYXBzZWREdXJh
dGlvbiA+PSBtX3RvdGFsRHVyYXRpb24pIHsKLSAgICAgICAgLy8gV2UgbWF5IHN0aWxsIGJlIGlu
IEFuaW1hdGlvblN0YXRlTG9vcGluZyBpZiB3ZSd2ZSBtYW5hZ2VkIHRvIHNraXAgYQorICAgICAg
ICAvLyBXZSBtYXkgc3RpbGwgYmUgaW4gQW5pbWF0aW9uU3RhdGU6Okxvb3BpbmcgaWYgd2UndmUg
bWFuYWdlZCB0byBza2lwIGEKICAgICAgICAgLy8gd2hvbGUgaXRlcmF0aW9uLCBpbiB3aGljaCBj
YXNlIHdlIHNob3VsZCBqdW1wIHRvIHRoZSBlbmQgc3RhdGUuCi0gICAgICAgIExPRyhBbmltYXRp
b25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gRW5kaW5nIiwgdGhpcywgbmFtZUZvclN0YXRl
KG1fYW5pbVN0YXRlKSk7Ci0gICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVFbmRp
bmc7CisgICAgICAgIExPRyhBbmltYXRpb25zLCAiJXAgQW5pbWF0aW9uU3RhdGUgJXMgLT4gRW5k
aW5nIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbWF0aW9uU3RhdGUpKTsKKyAgICAgICAgbV9h
bmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlOjpFbmRpbmc7CiAKICAgICAgICAgLy8gRmly
ZSBhbiBlbmQgZXZlbnQKLSAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRl
SW5wdXRFbmRUaW1lckZpcmVkLCBtX3RvdGFsRHVyYXRpb24pOworICAgICAgICB1cGRhdGVTdGF0
ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6RW5kVGltZXJGaXJlZCwgbV90b3RhbER1cmF0
aW9uKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGVjayBmb3IgaXRlcmF0aW9uIHRpbWVv
dXQKICAgICAgICAgaWYgKG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uIDwgMCkgewpAQCAtNDkzLDM1
ICs0OTMsMzUgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVk
ZWQoKQogICAgICAgICAgICAgbV9uZXh0SXRlcmF0aW9uRHVyYXRpb24gPSBlbGFwc2VkRHVyYXRp
b24gKyBkdXJhdGlvbkxlZnQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFNlbmQgdGhl
IGV2ZW50Ci0gICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1
dExvb3BUaW1lckZpcmVkLCBwcmV2aW91cyk7CisgICAgICAgICAgICB1cGRhdGVTdGF0ZU1hY2hp
bmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6TG9vcFRpbWVyRmlyZWQsIHByZXZpb3VzKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAogdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVQbGF5U3RhdGUoRUFu
aW1QbGF5U3RhdGUgcGxheVN0YXRlKQogewotICAgIGlmICghbV9jb21wQW5pbSkKKyAgICBpZiAo
IW1fY29tcG9zaXRlQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXaGVuIHdl
IGdldCBoZXJlLCB3ZSBjYW4gaGF2ZSBvbmUgb2YgNCBkZXNpcmVkIHN0YXRlczogcnVubmluZywg
cGF1c2VkLCBzdXNwZW5kZWQsIHBhdXNlZCAmIHN1c3BlbmRlZC4KICAgICAvLyBUaGUgc3RhdGUg
bWFjaGluZSBjYW4gYmUgaW4gb25lIG9mIHR3byBzdGF0ZXM6IHJ1bm5pbmcsIHBhdXNlZC4KICAg
ICAvLyBTZXQgdGhlIHN0YXRlIG1hY2hpbmUgdG8gdGhlIGRlc2lyZWQgc3RhdGUuCi0gICAgYm9v
bCBwYXVzZSA9IHBsYXlTdGF0ZSA9PSBBbmltUGxheVN0YXRlUGF1c2VkIHx8IG1fY29tcEFuaW0t
PmlzU3VzcGVuZGVkKCk7CisgICAgYm9vbCBwYXVzZSA9IHBsYXlTdGF0ZSA9PSBBbmltUGxheVN0
YXRlUGF1c2VkIHx8IG1fY29tcG9zaXRlQW5pbWF0aW9uLT5pc1N1c3BlbmRlZCgpOwogCiAgICAg
aWYgKHBhdXNlID09IHBhdXNlZCgpICYmICFpc05ldygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUocGF1c2UgPyAgQW5pbWF0aW9uU3RhdGVJbnB1dFBsYXlTdGF0
ZVBhdXNlZCA6IEFuaW1hdGlvblN0YXRlSW5wdXRQbGF5U3RhdGVSdW5uaW5nLCAtMSk7CisgICAg
dXBkYXRlU3RhdGVNYWNoaW5lKHBhdXNlID8gIEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0
ZVBhdXNlZCA6IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlBsYXlTdGF0ZVJ1bm5pbmcsIC0xKTsKIH0K
IAogZG91YmxlIEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCkKIHsKICAgICAvLyBS
ZXR1cm5zIHRoZSB0aW1lIGF0IHdoaWNoIG5leHQgc2VydmljZSBpcyByZXF1aXJlZC4gLTEgbWVh
bnMgbm8gc2VydmljZSBpcyByZXF1aXJlZC4gMCBtZWFucyAKICAgICAvLyBzZXJ2aWNlIGlzIHJl
cXVpcmVkIG5vdywgYW5kID4gMCBtZWFucyBzZXJ2aWNlIGlzIHJlcXVpcmVkIHRoYXQgbWFueSBz
ZWNvbmRzIGluIHRoZSBmdXR1cmUuCi0gICAgaWYgKHBhdXNlZCgpIHx8IGlzTmV3KCkgfHwgbV9h
bmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVGaWxsaW5nRm9yd2FyZHMpCisgICAgaWYgKHBhdXNl
ZCgpIHx8IGlzTmV3KCkgfHwgbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6Rmls
bGluZ0ZvcndhcmRzKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgCi0gICAgaWYgKG1fYW5pbVN0
YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0VGltZXIpIHsKKyAgICBpZiAobV9hbmltYXRp
b25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0VGltZXIpIHsKICAgICAgICAgZG91
YmxlIHRpbWVGcm9tTm93ID0gbV9hbmltYXRpb24tPmRlbGF5KCkgLSAoYmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lKCkgLSBtX3JlcXVlc3RlZFN0YXJ0VGltZSk7CiAgICAgICAgIHJldHVybiBzdGQ6
Om1heCh0aW1lRnJvbU5vdywgMC4wKTsKICAgICB9CkBAIC02MzcsMTkgKzYzNywxOSBAQCB2b2lk
IEFuaW1hdGlvbkJhc2U6OmdvSW50b0VuZGluZ09yTG9vcGluZ1N0YXRlKCkKICAgICBkb3VibGUg
dDsKICAgICBib29sIGlzTG9vcGluZzsKICAgICBnZXRUaW1lVG9OZXh0RXZlbnQodCwgaXNMb29w
aW5nKTsKLSAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+ICVzIiwg
dGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbVN0YXRlKSwgaXNMb29waW5nID8gIkxvb3BpbmciIDog
IkVuZGluZyIpOwotICAgIG1fYW5pbVN0YXRlID0gaXNMb29waW5nID8gQW5pbWF0aW9uU3RhdGVM
b29waW5nIDogQW5pbWF0aW9uU3RhdGVFbmRpbmc7CisgICAgTE9HKEFuaW1hdGlvbnMsICIlcCBB
bmltYXRpb25TdGF0ZSAlcyAtPiAlcyIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0
YXRlKSwgaXNMb29waW5nID8gIkxvb3BpbmciIDogIkVuZGluZyIpOworICAgIG1fYW5pbWF0aW9u
U3RhdGUgPSBpc0xvb3BpbmcgPyBBbmltYXRpb25TdGF0ZTo6TG9vcGluZyA6IEFuaW1hdGlvblN0
YXRlOjpFbmRpbmc7CiB9CiAgIAogdm9pZCBBbmltYXRpb25CYXNlOjpmcmVlemVBdFRpbWUoZG91
YmxlIHQpCiB7Ci0gICAgaWYgKCFtX2NvbXBBbmltKQorICAgIGlmICghbV9jb21wb3NpdGVBbmlt
YXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9zdGFydFRpbWUpIHsKICAgICAg
ICAgLy8gSWYgd2UgaGF2ZW4ndCBzdGFydGVkIHlldCwgbWFrZSBpdCBhcyBpZiB3ZSBzdGFydGVk
LgotICAgICAgICBMT0coQW5pbWF0aW9ucywgIiVwIEFuaW1hdGlvblN0YXRlICVzIC0+IFN0YXJ0
V2FpdFJlc3BvbnNlIiwgdGhpcywgbmFtZUZvclN0YXRlKG1fYW5pbVN0YXRlKSk7Ci0gICAgICAg
IG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVTdGFydFdhaXRSZXNwb25zZTsKKyAgICAgICAg
TE9HKEFuaW1hdGlvbnMsICIlcCBBbmltYXRpb25TdGF0ZSAlcyAtPiBTdGFydFdhaXRSZXNwb25z
ZSIsIHRoaXMsIG5hbWVGb3JTdGF0ZShtX2FuaW1hdGlvblN0YXRlKSk7CisgICAgICAgIG1fYW5p
bWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0UmVzcG9uc2U7CiAgICAgICAg
IG9uQW5pbWF0aW9uU3RhcnRSZXNwb25zZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7
CiAgICAgfQogCkBAIC02NjUsMTAgKzY2NSwxMCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZyZWV6
ZUF0VGltZShkb3VibGUgdCkKIAogZG91YmxlIEFuaW1hdGlvbkJhc2U6OmJlZ2luQW5pbWF0aW9u
VXBkYXRlVGltZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NvbXBBbmltKQorICAgIGlmICghbV9j
b21wb3NpdGVBbmltYXRpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fY29t
cEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7
CisgICAgcmV0dXJuIG1fY29tcG9zaXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCkt
PmJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSgpOwogfQogCiBkb3VibGUgQW5pbWF0aW9uQmFzZTo6
Z2V0RWxhcHNlZFRpbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5oCmluZGV4IDQ5MjA5Y2QwMTg3YWUyZTNmNzZlMzRkMjMzN2JiNDI0ZDU5
YzIzMjQuLjMxY2E5MTMwYzFjYmNiMzFiMmYwZjc1N2RmNjliOWRjM2Y1YmY4MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKQEAgLTM5LDE0ICsz
OSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFuaW1hdGlvbkJhc2U7CiBj
bGFzcyBBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29tcG9zaXRlQW5pbWF0aW9uOwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNs
YXNzIFRpbWluZ0Z1bmN0aW9uOwotCiBjbGFzcyBBbmltYXRpb25CYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8QW5pbWF0aW9uQmFzZT4gewogICAgIGZyaWVuZCBjbGFzcyBDb21wb3NpdGVBbmltYXRp
b247CiAgICAgZnJpZW5kIGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uOwpAQCAtNTgsOSArNTYs
OSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdDsgfQogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAgICAgIGVuZEFuaW1hdGlv
bigpOwotICAgICAgbV9vYmplY3QgPSAwOwotICAgICAgbV9jb21wQW5pbSA9IDA7CisgICAgICAg
IGVuZEFuaW1hdGlvbigpOworICAgICAgICBtX29iamVjdCA9IG51bGxwdHI7CisgICAgICAgIG1f
Y29tcG9zaXRlQW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBkb3VibGUgZHVyYXRp
b24oKSBjb25zdDsKQEAgLTY4LDY4ICs2Niw2OCBAQCBwdWJsaWM6CiAgICAgLy8gQW5pbWF0aW9u
cyBhbmQgVHJhbnNpdGlvbnMgZ28gdGhyb3VnaCB0aGUgc3RhdGVzIGJlbG93LiBXaGVuIGVudGVy
aW5nIHRoZSBTVEFSVEVEIHN0YXRlCiAgICAgLy8gdGhlIGFuaW1hdGlvbiBpcyBzdGFydGVkLiBU
aGlzIG1heSBvciBtYXkgbm90IHJlcXVpcmUgZGVmZXJyZWQgcmVzcG9uc2UgZnJvbSB0aGUgYW5p
bWF0b3IuCiAgICAgLy8gSWYgc28sIHdlIHN0YXkgaW4gdGhpcyBzdGF0ZSB1bnRpbCB0aGF0IHJl
c3BvbnNlIGlzIHJlY2VpdmVkIChhbmQgaXQgcmV0dXJucyB0aGUgc3RhcnQgdGltZSkuCi0gICAg
Ly8gT3RoZXJ3aXNlLCB3ZSB1c2UgdGhlIGN1cnJlbnQgdGltZSBhcyB0aGUgc3RhcnQgdGltZSBh
bmQgZ28gaW1tZWRpYXRlbHkgdG8gQW5pbWF0aW9uU3RhdGVMb29waW5nCi0gICAgLy8gb3IgQW5p
bWF0aW9uU3RhdGVFbmRpbmcuCi0gICAgZW51bSBBbmltU3RhdGUgeyAKLSAgICAgICAgQW5pbWF0
aW9uU3RhdGVOZXcsICAgICAgICAgICAgICAgICAgLy8gYW5pbWF0aW9uIGp1c3QgY3JlYXRlZCwg
YW5pbWF0aW9uIG5vdCBydW5uaW5nIHlldAotICAgICAgICBBbmltYXRpb25TdGF0ZVN0YXJ0V2Fp
dFRpbWVyLCAgICAgICAvLyBzdGFydCB0aW1lciBydW5uaW5nLCB3YWl0aW5nIGZvciBmaXJlCi0g
ICAgICAgIEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0U3R5bGVBdmFpbGFibGUsICAgLy8gd2FpdGlu
ZyBmb3Igc3R5bGUgc2V0dXAgc28gd2UgY2FuIHN0YXJ0IGFuaW1hdGlvbnMKLSAgICAgICAgQW5p
bWF0aW9uU3RhdGVTdGFydFdhaXRSZXNwb25zZSwgICAgLy8gYW5pbWF0aW9uIHN0YXJ0ZWQsIHdh
aXRpbmcgZm9yIHJlc3BvbnNlCi0gICAgICAgIEFuaW1hdGlvblN0YXRlTG9vcGluZywgICAgICAg
ICAgICAgIC8vIHJlc3BvbnNlIHJlY2VpdmVkLCBhbmltYXRpb24gcnVubmluZywgbG9vcCB0aW1l
ciBydW5uaW5nLCB3YWl0aW5nIGZvciBmaXJlCi0gICAgICAgIEFuaW1hdGlvblN0YXRlRW5kaW5n
LCAgICAgICAgICAgICAgIC8vIHJlY2VpdmVkLCBhbmltYXRpb24gcnVubmluZywgZW5kIHRpbWVy
IHJ1bm5pbmcsIHdhaXRpbmcgZm9yIGZpcmUKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVQYXVzZWRO
ZXcsICAgICAgICAgICAgLy8gaW4gcGF1c2UgbW9kZSB3aGVuIGFuaW1hdGlvbiB3YXMgY3JlYXRl
ZAotICAgICAgICBBbmltYXRpb25TdGF0ZVBhdXNlZFdhaXRUaW1lciwgICAgICAvLyBpbiBwYXVz
ZSBtb2RlIHdoZW4gYW5pbWF0aW9uIHN0YXJ0ZWQKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVQYXVz
ZWRXYWl0U3R5bGVBdmFpbGFibGUsIC8vIGluIHBhdXNlIG1vZGUgd2hlbiB3YWl0aW5nIGZvciBz
dHlsZSBzZXR1cAotICAgICAgICBBbmltYXRpb25TdGF0ZVBhdXNlZFdhaXRSZXNwb25zZSwgICAv
LyBhbmltYXRpb24gcGF1c2VkIHdoZW4gaW4gU1RBUlRJTkcgc3RhdGUKLSAgICAgICAgQW5pbWF0
aW9uU3RhdGVQYXVzZWRSdW4sICAgICAgICAgICAgLy8gYW5pbWF0aW9uIHBhdXNlZCB3aGVuIGlu
IExPT1BJTkcgb3IgRU5ESU5HIHN0YXRlCi0gICAgICAgIEFuaW1hdGlvblN0YXRlRG9uZSwgICAg
ICAgICAgICAgICAgIC8vIGVuZCB0aW1lciBmaXJlZCwgYW5pbWF0aW9uIGZpbmlzaGVkIGFuZCBy
ZW1vdmVkCi0gICAgICAgIEFuaW1hdGlvblN0YXRlRmlsbGluZ0ZvcndhcmRzICAgICAgIC8vIGFu
aW1hdGlvbiBoYXMgZW5kZWQgYW5kIGlzIHJldGFpbmluZyBpdHMgZmluYWwgdmFsdWUKKyAgICAv
LyBPdGhlcndpc2UsIHdlIHVzZSB0aGUgY3VycmVudCB0aW1lIGFzIHRoZSBzdGFydCB0aW1lIGFu
ZCBnbyBpbW1lZGlhdGVseSB0byBBbmltYXRpb25TdGF0ZTo6TG9vcGluZworICAgIC8vIG9yIEFu
aW1hdGlvblN0YXRlOjpFbmRpbmcuCisgICAgZW51bSBjbGFzcyBBbmltYXRpb25TdGF0ZSB7Cisg
ICAgICAgIE5ldywgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmltYXRpb24ganVzdCBjcmVh
dGVkLCBhbmltYXRpb24gbm90IHJ1bm5pbmcgeWV0CisgICAgICAgIFN0YXJ0V2FpdFRpbWVyLCAg
ICAgICAgICAgICAvLyBzdGFydCB0aW1lciBydW5uaW5nLCB3YWl0aW5nIGZvciBmaXJlCisgICAg
ICAgIFN0YXJ0V2FpdFN0eWxlQXZhaWxhYmxlLCAgICAvLyB3YWl0aW5nIGZvciBzdHlsZSBzZXR1
cCBzbyB3ZSBjYW4gc3RhcnQgYW5pbWF0aW9ucworICAgICAgICBTdGFydFdhaXRSZXNwb25zZSwg
ICAgICAgICAgLy8gYW5pbWF0aW9uIHN0YXJ0ZWQsIHdhaXRpbmcgZm9yIHJlc3BvbnNlCisgICAg
ICAgIExvb3BpbmcsICAgICAgICAgICAgICAgICAgICAvLyByZXNwb25zZSByZWNlaXZlZCwgYW5p
bWF0aW9uIHJ1bm5pbmcsIGxvb3AgdGltZXIgcnVubmluZywgd2FpdGluZyBmb3IgZmlyZQorICAg
ICAgICBFbmRpbmcsICAgICAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZWQsIGFuaW1hdGlvbiBy
dW5uaW5nLCBlbmQgdGltZXIgcnVubmluZywgd2FpdGluZyBmb3IgZmlyZQorICAgICAgICBQYXVz
ZWROZXcsICAgICAgICAgICAgICAgICAgLy8gaW4gcGF1c2UgbW9kZSB3aGVuIGFuaW1hdGlvbiB3
YXMgY3JlYXRlZAorICAgICAgICBQYXVzZWRXYWl0VGltZXIsICAgICAgICAgICAgLy8gaW4gcGF1
c2UgbW9kZSB3aGVuIGFuaW1hdGlvbiBzdGFydGVkCisgICAgICAgIFBhdXNlZFdhaXRTdHlsZUF2
YWlsYWJsZSwgICAvLyBpbiBwYXVzZSBtb2RlIHdoZW4gd2FpdGluZyBmb3Igc3R5bGUgc2V0dXAK
KyAgICAgICAgUGF1c2VkV2FpdFJlc3BvbnNlLCAgICAgICAgIC8vIGFuaW1hdGlvbiBwYXVzZWQg
d2hlbiBpbiBTVEFSVElORyBzdGF0ZQorICAgICAgICBQYXVzZWRSdW4sICAgICAgICAgICAgICAg
ICAgLy8gYW5pbWF0aW9uIHBhdXNlZCB3aGVuIGluIExPT1BJTkcgb3IgRU5ESU5HIHN0YXRlCisg
ICAgICAgIERvbmUsICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQgdGltZXIgZmlyZWQsIGFu
aW1hdGlvbiBmaW5pc2hlZCBhbmQgcmVtb3ZlZAorICAgICAgICBGaWxsaW5nRm9yd2FyZHMgICAg
ICAgICAgICAgLy8gYW5pbWF0aW9uIGhhcyBlbmRlZCBhbmQgaXMgcmV0YWluaW5nIGl0cyBmaW5h
bCB2YWx1ZQogICAgIH07CiAKLSAgICBlbnVtIEFuaW1TdGF0ZUlucHV0IHsKLSAgICAgICAgQW5p
bWF0aW9uU3RhdGVJbnB1dE1ha2VOZXcsICAgICAgICAgICAvLyByZXNldCBiYWNrIHRvIG5ldyBm
cm9tIGFueSBzdGF0ZQotICAgICAgICBBbmltYXRpb25TdGF0ZUlucHV0U3RhcnRBbmltYXRpb24s
ICAgIC8vIGFuaW1hdGlvbiByZXF1ZXN0cyBhIHN0YXJ0Ci0gICAgICAgIEFuaW1hdGlvblN0YXRl
SW5wdXRSZXN0YXJ0QW5pbWF0aW9uLCAgLy8gZm9yY2UgYSByZXN0YXJ0IGZyb20gYW55IHN0YXRl
Ci0gICAgICAgIEFuaW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVyRmlyZWQsICAgLy8gc3RhcnQg
dGltZXIgZmlyZWQKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVJbnB1dFN0eWxlQXZhaWxhYmxlLCAg
ICAvLyBzdHlsZSBpcyBzZXR1cCwgcmVhZHkgdG8gc3RhcnQgYW5pbWF0aW5nCi0gICAgICAgIEFu
aW1hdGlvblN0YXRlSW5wdXRTdGFydFRpbWVTZXQsICAgICAgLy8gbV9zdGFydFRpbWUgd2FzIHNl
dAotICAgICAgICBBbmltYXRpb25TdGF0ZUlucHV0TG9vcFRpbWVyRmlyZWQsICAgIC8vIGxvb3Ag
dGltZXIgZmlyZWQKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVJbnB1dEVuZFRpbWVyRmlyZWQsICAg
ICAvLyBlbmQgdGltZXIgZmlyZWQKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVJbnB1dFBhdXNlT3Zl
cnJpZGUsICAgICAvLyBwYXVzZSBhbiBhbmltYXRpb24gZHVlIHRvIG92ZXJyaWRlCi0gICAgICAg
IEFuaW1hdGlvblN0YXRlSW5wdXRSZXN1bWVPdmVycmlkZSwgICAgLy8gcmVzdW1lIGFuIG92ZXJy
aWRkZW4gYW5pbWF0aW9uCi0gICAgICAgIEFuaW1hdGlvblN0YXRlSW5wdXRQbGF5U3RhdGVSdW5u
aW5nLCAgLy8gcGxheSBzdGF0ZSBwYXVzZWQgLT4gcnVubmluZwotICAgICAgICBBbmltYXRpb25T
dGF0ZUlucHV0UGxheVN0YXRlUGF1c2VkLCAgIC8vIHBsYXkgc3RhdGUgcnVubmluZyAtPiBwYXVz
ZWQKLSAgICAgICAgQW5pbWF0aW9uU3RhdGVJbnB1dEVuZEFuaW1hdGlvbiAgICAgICAvLyBmb3Jj
ZSBhbiBlbmQgZnJvbSBhbnkgc3RhdGUKKyAgICBlbnVtIEFuaW1hdGlvblN0YXRlSW5wdXQgewor
ICAgICAgICBNYWtlTmV3LCAgICAgICAgICAgLy8gcmVzZXQgYmFjayB0byBuZXcgZnJvbSBhbnkg
c3RhdGUKKyAgICAgICAgU3RhcnRBbmltYXRpb24sICAgIC8vIGFuaW1hdGlvbiByZXF1ZXN0cyBh
IHN0YXJ0CisgICAgICAgIFJlc3RhcnRBbmltYXRpb24sICAvLyBmb3JjZSBhIHJlc3RhcnQgZnJv
bSBhbnkgc3RhdGUKKyAgICAgICAgU3RhcnRUaW1lckZpcmVkLCAgIC8vIHN0YXJ0IHRpbWVyIGZp
cmVkCisgICAgICAgIFN0eWxlQXZhaWxhYmxlLCAgICAvLyBzdHlsZSBpcyBzZXR1cCwgcmVhZHkg
dG8gc3RhcnQgYW5pbWF0aW5nCisgICAgICAgIFN0YXJ0VGltZVNldCwgICAgICAvLyBtX3N0YXJ0
VGltZSB3YXMgc2V0CisgICAgICAgIExvb3BUaW1lckZpcmVkLCAgICAvLyBsb29wIHRpbWVyIGZp
cmVkCisgICAgICAgIEVuZFRpbWVyRmlyZWQsICAgICAvLyBlbmQgdGltZXIgZmlyZWQKKyAgICAg
ICAgUGF1c2VPdmVycmlkZSwgICAgIC8vIHBhdXNlIGFuIGFuaW1hdGlvbiBkdWUgdG8gb3ZlcnJp
ZGUKKyAgICAgICAgUmVzdW1lT3ZlcnJpZGUsICAgIC8vIHJlc3VtZSBhbiBvdmVycmlkZGVuIGFu
aW1hdGlvbgorICAgICAgICBQbGF5U3RhdGVSdW5uaW5nLCAgLy8gcGxheSBzdGF0ZSBwYXVzZWQg
LT4gcnVubmluZworICAgICAgICBQbGF5U3RhdGVQYXVzZWQsICAgLy8gcGxheSBzdGF0ZSBydW5u
aW5nIC0+IHBhdXNlZAorICAgICAgICBFbmRBbmltYXRpb24gICAgICAgLy8gZm9yY2UgYW4gZW5k
IGZyb20gYW55IHN0YXRlCiAgICAgfTsKIAotICAgIC8vIENhbGxlZCB3aGVuIGFuaW1hdGlvbiBp
cyBpbiBBbmltYXRpb25TdGF0ZU5ldyB0byBzdGFydCBhbmltYXRpb24KLSAgICB2b2lkIHVwZGF0
ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCwgZG91YmxlIHBhcmFtKTsKKyAgICAvLyBDYWxs
ZWQgd2hlbiBhbmltYXRpb24gaXMgaW4gQW5pbWF0aW9uU3RhdGU6Ok5ldyB0byBzdGFydCBhbmlt
YXRpb24KKyAgICB2b2lkIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0LCBk
b3VibGUgcGFyYW0pOwogCiAgICAgLy8gQW5pbWF0aW9uIGhhcyBhY3R1YWxseSBzdGFydGVkLCBh
dCBwYXNzZWQgdGltZQogICAgIHZvaWQgb25BbmltYXRpb25TdGFydFJlc3BvbnNlKGRvdWJsZSBz
dGFydFRpbWUpCiAgICAgewotICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uQmFz
ZTo6QW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCwgc3RhcnRUaW1lKTsKKyAgICAgICAg
dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0VGltZVNldCwgc3Rh
cnRUaW1lKTsKICAgICB9CiAKICAgICAvLyBDYWxsZWQgdG8gY2hhbmdlIHRvIG9yIGZyb20gcGF1
c2VkIHN0YXRlCiAgICAgdm9pZCB1cGRhdGVQbGF5U3RhdGUoRUFuaW1QbGF5U3RhdGUpOwogICAg
IGJvb2wgcGxheVN0YXRlUGxheWluZygpIGNvbnN0OwogCi0gICAgYm9vbCB3YWl0aW5nVG9TdGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlTmV3IHx8IG1f
YW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0VGltZXIgfHwgbV9hbmltU3RhdGUg
PT0gQW5pbWF0aW9uU3RhdGVQYXVzZWROZXc7IH0KKyAgICBib29sIHdhaXRpbmdUb1N0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6TmV3IHx8
IG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2FpdFRpbWVyIHx8IG1f
YW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlBhdXNlZE5ldzsgfQogICAgIGJvb2wg
cHJlQWN0aXZlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2FuaW1TdGF0ZSA9PSBB
bmltYXRpb25TdGF0ZU5ldyB8fCBtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZVN0YXJ0V2Fp
dFRpbWVyIHx8IG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0U3R5bGVBdmFp
bGFibGUgfHwgbV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTdGFydFdhaXRSZXNwb25zZTsK
KyAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6Ok5ldyB8
fCBtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRUaW1lciB8fCBt
X2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRTdHlsZUF2YWlsYWJs
ZSB8fCBtX2FuaW1hdGlvblN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpTdGFydFdhaXRSZXNwb25z
ZTsKICAgICB9CiAKLSAgICBib29sIHBvc3RBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1T
dGF0ZSA9PSBBbmltYXRpb25TdGF0ZURvbmU7IH0KLSAgICBib29sIGZpbGxpbmdGb3J3YXJkcygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlRmlsbGluZ0Zvcndh
cmRzOyB9CisgICAgYm9vbCBwb3N0QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25T
dGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6RG9uZTsgfQorICAgIGJvb2wgZmlsbGluZ0ZvcndhcmRz
KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6Rmls
bGluZ0ZvcndhcmRzOyB9CiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiAhcG9zdEFj
dGl2ZSgpICYmICFwcmVBY3RpdmUoKTsgfQogICAgIGJvb2wgcnVubmluZygpIGNvbnN0IHsgcmV0
dXJuICFpc05ldygpICYmICFwb3N0QWN0aXZlKCk7IH0KLSAgICBib29sIHBhdXNlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF1c2VUaW1lID49IDAgfHwgbV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3Rh
dGVQYXVzZWROZXc7IH0KLSAgICBib29sIGluUGF1c2VkU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X2FuaW1TdGF0ZSA+PSBBbmltYXRpb25TdGF0ZVBhdXNlZE5ldyAmJiBtX2FuaW1TdGF0ZSA8PSBB
bmltYXRpb25TdGF0ZVBhdXNlZFJ1bjsgfQotICAgIGJvb2wgaXNOZXcoKSBjb25zdCB7IHJldHVy
biBtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZU5ldyB8fCBtX2FuaW1TdGF0ZSA9PSBBbmlt
YXRpb25TdGF0ZVBhdXNlZE5ldzsgfQotICAgIGJvb2wgd2FpdGluZ0ZvclN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0UmVzcG9u
c2U7IH0KLSAgICBib29sIHdhaXRpbmdGb3JTdHlsZUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0U3R5bGVBdmFpbGFibGU7IH0K
KyAgICBib29sIHBhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VUaW1lID49IDAgfHwgbV9h
bmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6UGF1c2VkTmV3OyB9CisgICAgYm9vbCBp
blBhdXNlZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA+PSBBbmltYXRp
b25TdGF0ZTo6UGF1c2VkTmV3ICYmIG1fYW5pbWF0aW9uU3RhdGUgPD0gQW5pbWF0aW9uU3RhdGU6
OlBhdXNlZFJ1bjsgfQorICAgIGJvb2wgaXNOZXcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlv
blN0YXRlID09IEFuaW1hdGlvblN0YXRlOjpOZXcgfHwgbV9hbmltYXRpb25TdGF0ZSA9PSBBbmlt
YXRpb25TdGF0ZTo6UGF1c2VkTmV3OyB9CisgICAgYm9vbCB3YWl0aW5nRm9yU3RhcnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6U3RhcnRX
YWl0UmVzcG9uc2U7IH0KKyAgICBib29sIHdhaXRpbmdGb3JTdHlsZUF2YWlsYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGU6OlN0YXJ0V2FpdFN0
eWxlQXZhaWxhYmxlOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSgp
OwogCkBAIC0xNDksNyArMTQ3LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0cnVlIGlmIHRo
aXMgYW5pbWF0aW9uIGlzIG92ZXJyaWRkZW4uIFRoaXMgd2lsbCBvbmx5IGJlIHRoZSBjYXNlIGZv
cgogICAgIC8vIEltcGxpY2l0QW5pbWF0aW9ucyBhbmQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hl
dGhlciBvciBub3Qgd2Ugc2hvdWxkIGZvcmNlCiAgICAgLy8gc2V0IHRoZSBzdGFydCB0aW1lLiBJ
ZiBhbiBhbmltYXRpb24gaXMgb3ZlcnJpZGRlbiwgaXQgd2lsbCBwcm9iYWJseSBub3QgZ2V0Ci0g
ICAgLy8gYmFjayB0aGUgQW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCBpbnB1dC4KKyAg
ICAvLyBiYWNrIHRoZSBBbmltYXRpb25TdGF0ZUlucHV0OjpTdGFydFRpbWVTZXQgaW5wdXQuCiAg
ICAgdmlydHVhbCBib29sIG92ZXJyaWRkZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgLy8gRG9lcyB0aGlzIGFuaW1hdGlvbi90cmFuc2l0aW9uIGludm9sdmUgdGhlIGdpdmVuIHBy
b3BlcnR5PwpAQCAtMTc2LDEwICsxNzQsMTAgQEAgcHVibGljOgogICAgICAgICBpZiAoKHJ1bm5p
bmdTdGF0ZSAmIFBhdXNlZCkgJiYgaW5QYXVzZWRTdGF0ZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgaWYgKChydW5uaW5nU3RhdGUgJiBSdW5uaW5nKSAmJiAhaW5QYXVz
ZWRTdGF0ZSgpICYmIChtX2FuaW1TdGF0ZSA+PSBBbmltYXRpb25TdGF0ZVN0YXJ0V2FpdFN0eWxl
QXZhaWxhYmxlICYmIG1fYW5pbVN0YXRlIDw9IEFuaW1hdGlvblN0YXRlRG9uZSkpCisgICAgICAg
IGlmICgocnVubmluZ1N0YXRlICYgUnVubmluZykgJiYgIWluUGF1c2VkU3RhdGUoKSAmJiAobV9h
bmltYXRpb25TdGF0ZSA+PSBBbmltYXRpb25TdGF0ZTo6U3RhcnRXYWl0U3R5bGVBdmFpbGFibGUg
JiYgbV9hbmltYXRpb25TdGF0ZSA8PSBBbmltYXRpb25TdGF0ZTo6RG9uZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiAoKHJ1bm5pbmdTdGF0ZSAmIEZpbGxpbmdGb3dh
cmRzKSAmJiBtX2FuaW1TdGF0ZSA9PSBBbmltYXRpb25TdGF0ZUZpbGxpbmdGb3J3YXJkcykKKyAg
ICAgICAgaWYgKChydW5uaW5nU3RhdGUgJiBGaWxsaW5nRm93YXJkcykgJiYgbV9hbmltYXRpb25T
dGF0ZSA9PSBBbmltYXRpb25TdGF0ZTo6RmlsbGluZ0ZvcndhcmRzKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA3LDcgKzIwNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0eWxlQXZhaWxhYmxlKCkgCiAgICAgewogICAgICAgICBBU1NFUlQo
d2FpdGluZ0ZvclN0eWxlQXZhaWxhYmxlKCkpOwotICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUo
QW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3RhdGVJbnB1dFN0eWxlQXZhaWxhYmxlLCAtMSk7Cisg
ICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0OjpTdHlsZUF2YWls
YWJsZSwgLTEpOwogICAgIH0KIAogICAgIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gKm1fYW5pbWF0aW9uOyB9CkBAIC0yMTYsNyArMjE0LDcgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBvdmVycmlkZUFuaW1hdGlvbnMoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFuaW1hdGlvbnMoKSB7IH0KIAotICAgIENvbXBvc2l0ZUFu
aW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uKCkgeyByZXR1cm4gbV9jb21wQW5pbTsgfQorICAg
IENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uKCkgeyByZXR1cm4gbV9jb21w
b3NpdGVBbmltYXRpb247IH0KIAogICAgIC8vIFRoZXNlIGFyZSBjYWxsZWQgd2hlbiB0aGUgY29y
cmVzcG9uZGluZyB0aW1lciBmaXJlcyBzbyBzdWJjbGFzc2VzIGNhbiBkbyBhbnkgZXh0cmEgd29y
awogICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvblN0YXJ0KGRvdWJsZSAvKmVsYXBzZWRUaW1l
Ki8pIHsgfQpAQCAtMjQwLDcgKzIzOCw3IEBAIHByb3RlY3RlZDoKIAogICAgIGRvdWJsZSBmcmFj
dGlvbmFsVGltZShkb3VibGUgc2NhbGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgZG91YmxlIG9mZnNl
dCkgY29uc3Q7CiAKLSAgICBBbmltU3RhdGUgbV9hbmltU3RhdGU7CisgICAgQW5pbWF0aW9uU3Rh
dGUgbV9hbmltYXRpb25TdGF0ZTsKIAogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkOwogICAgIGJv
b2wgbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZDsKQEAgLTI1Nyw3ICsyNTUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVuZGVyRWxlbWVudCogbV9vYmplY3Q7CiAKICAgICBSZWZQdHI8QW5pbWF0
aW9uPiBtX2FuaW1hdGlvbjsKLSAgICBDb21wb3NpdGVBbmltYXRpb24qIG1fY29tcEFuaW07Cisg
ICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBtX2NvbXBvc2l0ZUFuaW1hdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCA3Nzk2YmY5ODFiOWQxNWMyNmFjZDYxYjgyYzcy
Y2ZmZmNjYTAxMjkwLi42ZDU3N2Y3MDA2YTBhNWI3YjA1NWU0MTg2YmQyYjYxNTc4NzEwNmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRp
b24uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6b25Bbmlt
YXRpb25FbmQoZG91YmxlIGVsYXBzZWRUaW1lKQogICAgIC8vIHJ1bm5pbmcuIEJ1dCBub3cgdGhh
dCB0aGUgdHJhbnNpdGlvbiBoYXMgY29tcGxldGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGlzIHN0
eWxlIHdpdGggaXRzIG5ldwogICAgIC8vIGRlc3RpbmF0aW9uLiBJZiB3ZSBkaWRuJ3QsIHRoZSBu
ZXh0IHRpbWUgdGhyb3VnaCB3ZSB3b3VsZCB0aGluayBhIHRyYW5zaXRpb24gaGFkIHN0YXJ0ZWQK
ICAgICAvLyAoY29tcGFyaW5nIHRoZSBvbGQgdW5hbmltYXRlZCBzdHlsZSB3aXRoIHRoZSBuZXcg
ZmluYWwgc3R5bGUgb2YgdGhlIHRyYW5zaXRpb24pLgotICAgIFJlZlB0cjxLZXlmcmFtZUFuaW1h
dGlvbj4ga2V5ZnJhbWVBbmltID0gbV9jb21wQW5pbS0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHko
bV9hbmltYXRpbmdQcm9wZXJ0eSk7CisgICAgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBrZXlm
cmFtZUFuaW0gPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHko
bV9hbmltYXRpbmdQcm9wZXJ0eSk7CiAgICAgaWYgKGtleWZyYW1lQW5pbSkKICAgICAgICAga2V5
ZnJhbWVBbmltLT5zZXRVbmFuaW1hdGVkU3R5bGUobV90b1N0eWxlKTsKICAgICAKQEAgLTE1NSw3
ICsxNTUsNyBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICAgICAgLy8gU2NoZWR1bGUgZXZlbnQgaGFuZGxpbmcKLSAgICAg
ICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkRXZlbnRUb0Rpc3Bh
dGNoKGVsZW1lbnQsIGV2ZW50VHlwZSwgcHJvcGVydHlOYW1lLCBlbGFwc2VkVGltZSk7CisgICAg
ICAgICAgICBtX2NvbXBvc2l0ZUFuaW1hdGlvbi0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRF
dmVudFRvRGlzcGF0Y2goZWxlbWVudCwgZXZlbnRUeXBlLCBwcm9wZXJ0eU5hbWUsIGVsYXBzZWRU
aW1lKTsKIAogICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQp
IHN0eWxlCiAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS50cmFuc2l0
aW9uZW5kRXZlbnQgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2
b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNldChSZW5kZXJTdHlsZSogdG8pCiAKICAgICAvLyBS
ZXN0YXJ0IHRoZSB0cmFuc2l0aW9uCiAgICAgaWYgKG1fZnJvbVN0eWxlICYmIG1fdG9TdHlsZSkK
LSAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXRSZXN0YXJ0QW5p
bWF0aW9uLCAtMSk7CisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0OjpSZXN0YXJ0QW5pbWF0aW9uLCAtMSk7CiAgICAgICAgIAogICAgIC8vIHNldCB0aGUgdHJh
bnNmb3JtIGFuaW1hdGlvbiBsaXN0CiAgICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3Qo
KTsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpzZXRPdmVycmlk
ZGVuKGJvb2wgYikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vdmVycmlkZGVuID0gYjsKLSAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUobV9vdmVycmlkZGVuID8gQW5pbWF0aW9uU3RhdGVJbnB1dFBh
dXNlT3ZlcnJpZGUgOiBBbmltYXRpb25TdGF0ZUlucHV0UmVzdW1lT3ZlcnJpZGUsIC0xKTsKKyAg
ICB1cGRhdGVTdGF0ZU1hY2hpbmUobV9vdmVycmlkZGVuID8gQW5pbWF0aW9uU3RhdGVJbnB1dDo6
UGF1c2VPdmVycmlkZSA6IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlJlc3VtZU92ZXJyaWRlLCAtMSk7
CiB9CiAKIGJvb2wgSW1wbGljaXRBbmltYXRpb246OmFmZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IGI3NGU2ZDAxNzU4NTY2ZjJmMGE3NmEwNGIx
YzI3NjcxOWVmZDBjN2UuLjY0YzIzNDU5YmFlMzRjYzYzZGIzMjZlNWI3MWQxYWJiM2U4NGE4NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5jcHAKQEAgLTQwLDggKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1LZXlm
cmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRp
b24sIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlv
biogY29tcEFuaW0sIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5bGUpCi0gICAgOiBBbmltYXRp
b25CYXNlKGFuaW1hdGlvbiwgcmVuZGVyZXIsIGNvbXBBbmltKQorS2V5ZnJhbWVBbmltYXRpb246
OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFu
aW1hdGlvbiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKKyAgICA6IEFuaW1hdGlvbkJh
c2UoYW5pbWF0aW9uLCByZW5kZXJlciwgY29tcG9zaXRlQW5pbWF0aW9uKQogICAgICwgbV9rZXlm
cmFtZXMoYW5pbWF0aW9uLm5hbWUoKSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3N0
YXJ0RXZlbnREaXNwYXRjaGVkKGZhbHNlKQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgS2V5ZnJh
bWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRp
b24sIFJlbmRlckVsCiAgICAgCiAgICAgLy8gSWYgd2UgaGF2ZSBub3QgeWV0IHN0YXJ0ZWQsIHdl
IHdpbGwgbm90IGhhdmUgYSB2YWxpZCBzdGFydCB0aW1lLCBzbyBqdXN0IHN0YXJ0IHRoZSBhbmlt
YXRpb24gaWYgbmVlZGVkLgogICAgIGlmIChpc05ldygpICYmIG1fYW5pbWF0aW9uLT5wbGF5U3Rh
dGUoKSA9PSBBbmltUGxheVN0YXRlUGxheWluZyAmJiAhY29tcG9zaXRlQW5pbWF0aW9uLT5pc1N1
c3BlbmRlZCgpKQotICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1
dFN0YXJ0QW5pbWF0aW9uLCAtMSk7CisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRp
b25TdGF0ZUlucHV0OjpTdGFydEFuaW1hdGlvbiwgLTEpOwogCiAgICAgLy8gSWYgd2UgZ2V0IHRo
aXMgZmFyIGFuZCB0aGUgYW5pbWF0aW9uIGlzIGRvbmUsIGl0IG1lYW5zIHdlIGFyZSBjbGVhbmlu
ZyB1cCBhIGp1c3QgZmluaXNoZWQgYW5pbWF0aW9uLgogICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRv
IHNlbmQgYmFjayB0aGUgdGFyZ2V0U3R5bGUuCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1h
dGlvbiwgUmVuZGVyRWwKICAgICAKICAgICAvLyBJZiB3ZSBoYXZlIG5vIGtleWZyYW1lcywgZG9u
J3QgYW5pbWF0ZS4KICAgICBpZiAoIW1fa2V5ZnJhbWVzLnNpemUoKSkgewotICAgICAgICB1cGRh
dGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dEVuZEFuaW1hdGlvbiwgLTEpOworICAg
ICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6RW5kQW5pbWF0aW9u
LCAtMSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4Nyw3ICsyODcsNyBAQCBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGRvdWJsZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IC8vIFNjaGVkdWxlIGV2ZW50IGhhbmRsaW5nCi0gICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlv
bkNvbnRyb2xsZXIoKS0+YWRkRXZlbnRUb0Rpc3BhdGNoKGVsZW1lbnQsIGV2ZW50VHlwZSwgbV9r
ZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCBlbGFwc2VkVGltZSk7CisgICAgICAgIG1fY29tcG9z
aXRlQW5pbWF0aW9uLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZEV2ZW50VG9EaXNwYXRjaChl
bGVtZW50LCBldmVudFR5cGUsIG1fa2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgZWxhcHNlZFRp
bWUpOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHls
ZQogICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRpb25F
bmRFdmVudCAmJiBlbGVtZW50LT5yZW5kZXJlcigpKQo=
</data>
<flag name="review"
          id="257746"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="257751"
          type_id="3"
          status="-"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>