<?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>220346</bug_id>
          
          <creation_ts>2021-01-05 16:45:03 -0800</creation_ts>
          <short_desc>Use sendWithAsyncReply instead of iOS-specific GenericCallbacks</short_desc>
          <delta_ts>2021-01-06 09:33:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717538</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-05 16:45:03 -0800</bug_when>
    <thetext>Use sendWithAsyncReply instead of iOS-specific GenericCallbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717541</commentid>
    <comment_count>1</comment_count>
      <attachid>417053</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-05 16:45:38 -0800</bug_when>
    <thetext>Created attachment 417053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717676</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-06 09:32:52 -0800</bug_when>
    <thetext>Committed r271201: &lt;https://trac.webkit.org/changeset/271201&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417053.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717678</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-06 09:33:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/72854710&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417053</attachid>
            <date>2021-01-05 16:45:38 -0800</date>
            <delta_ts>2021-01-06 09:32:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220346-20210105164537.patch</filename>
            <type>text/plain</type>
            <size>44177</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwOTJmYzhiNDRjMGMzODhj
NTg2ZjVjZGFhOTExZjdjYjBhMDE3NGQuLmJmZGVjZTEzMDM4YzRkZDRiNzlmOWJhMWUxOGZmNTYx
MGEzNDAyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjEtMDEtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFja3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDM0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVJlY3Rz
RW5jbG9zaW5nU2VsZWN0aW9uT2Zmc2V0OndpdGhHcmFudWxhcml0eTpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfYWNjZXNzaWJpbGl0eVJldHJpZXZlUmVjdHNBdFNlbGVjdGlvbk9mZnNl
dDp3aXRoVGV4dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHNlbGVjdGlvbkNoYW5n
ZWRXaXRoR2VzdHVyZSk6CisgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OndpdGhH
ZXN0dXJlOndpdGhTdGF0ZTp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
Y2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVjdGlvblRvdWNoOmJhc2VJc1N0YXJ0
OndpdGhGbGFnczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxlY3Rpb25X
aXRoVG91Y2hlc0Zyb206dG86d2l0aEdlc3R1cmU6d2l0aFN0YXRlOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHVwZGF0ZUN1cnJlbnRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhT
ZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RS
ZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6Omdlc3R1cmVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uQ2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZWxlY3RXaXRoVHdvVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KToKKwogMjAyMS0wMS0wNSAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI3MTE2OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggMjAyYjY5NzA1ZGQxMTA3MWE4NGZhODMwYmZiMjg0YWE3OTE1NzA4YS4uYzMwZjM5Njgx
MGM2YjY4NzZmNzM2MjUwNWJjOGY3NmE1ZTdlZGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTQwNCwxMyArNDA0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSY+
IEEKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29s
PiBGb250QXRTZWxlY3Rpb25DYWxsYmFjazsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
R2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25G
bGFncz4+IEdlc3R1cmVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFn
cz4+IFRvdWNoZXNDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiY+IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2s7Ci10eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJj4gRm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbkNhbGxiYWNrOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShD
T0NPQSkKIHVzaW5nIERyYXdUb1BERkNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrPGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSY+OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Ym9vbCwgYm9vbCwg
U3RyaW5nLCBkb3VibGUsIGRvdWJsZSwgdWludDY0X3Q+IE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2s7
CkBAIC03NjYsOSArNzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50cyhjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4mKTsK
ICAgICB2b2lkIHdpbGxDb21taXRMYXllclRyZWUoVHJhbnNhY3Rpb25JRCk7CiAKLSAgICB2b2lk
IHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBHZXN0dXJlVHlwZSwg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJl
VHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRv
dWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFNlbGVjdGlvblRvdWNoLCBib29sIGJhc2VJ
c1N0YXJ0LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9u
VG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdl
c3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxh
Z3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVy
U3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJl
UmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+KT4mJik7CisgICAgdm9p
ZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgU2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlv
bkZsYWdzPik+JiYpOworICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBl
LCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4pPiYmKTsKICAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbihX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiA9IHsg
fSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxlY3Rp
b25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTgyMCw4ICs4MTMsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG1pbmltdW1FZmZlY3RpdmVE
ZXZpY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11
bUVmZmVjdGl2ZURldmljZVdpZHRoOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVtRWZmZWN0aXZlRGV2
aWNlV2lkdGhXaXRob3V0Vmlld3BvcnRDb25maWd1cmF0aW9uVXBkYXRlKGRvdWJsZSBtaW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgpIHsgbV92aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtRWZm
ZWN0aXZlRGV2aWNlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGg7IH0KICAgICB2
b2lkIHNldElzU2Nyb2xsaW5nT3Jab29taW5nKGJvb2wpOwotICAgIHZvaWQgcmVxdWVzdFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSwgdWludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQg
cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29u
c3QgU3RyaW5nJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RS
ZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHksIHVpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVjdHNB
dFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiYpPiYmKTsKICAgICB2b2lkIGF1dG9maWxsTG9naW5DcmVkZW50aWFscyhjb25zdCBTdHJpbmcm
IHVzZXJuYW1lLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKICAgICB2b2lkIHN0b3JlU2VsZWN0
aW9uRm9yQWNjZXNzaWJpbGl0eShib29sKTsKICAgICB2b2lkIHN0YXJ0QXV0b3Njcm9sbEF0UG9z
aXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb25JbldpbmRvdyk7CkBAIC0x
NDIzLDcgKzE0MTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRBdXRvbWF0aWNOYXZpZ2F0
aW9uU25hcHNob3QoKTsKICAgICB2b2lkIHN1cHByZXNzTmV4dEF1dG9tYXRpY05hdmlnYXRpb25T
bmFwc2hvdCgpIHsgbV9zaG91bGRTdXBwcmVzc05leHRBdXRvbWF0aWNOYXZpZ2F0aW9uU25hcHNo
b3QgPSB0cnVlOyB9CiAgICAgdm9pZCByZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpOwotICAgIHZvaWQgcmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24oRnVuY3Rpb248dm9pZChjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJik+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICBS
ZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFJlY3Q+JiYpOwpAQCAtMjE2MiwxMSArMjE1NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250
QXRTZWxlY3Rpb25DYWxsYmFjayhjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJh
Y2tJRCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2VzdHVy
ZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0
aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVt
ZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+JiwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHVwZGF0ZVN0cmluZ0ZvckZpbmQo
Y29uc3QgU3RyaW5nJik7CiAjZW5kaWYKQEAgLTIyMzEsNyArMjIyMSw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsKICAgICB2b2lkIGRpc2FibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKCk7Ci0gICAgdm9pZCBmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
Q2FsbGJhY2soY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYsIENhbGxiYWNrSUQpOwog
I2Vsc2UKICAgICB2b2lkIGRpZFJlbGVhc2VBbGxUb3VjaFBvaW50cygpIHsgfQogI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOTE2NTk2NjBmZWRiZjRhMzk2ZDAzODk5NmUyMjNi
Yzg0NWU4ZTg0My4uNzIxOGU3YzdlYzM3NzdiNzg1NmQzZmQ2YjMyMTJhNTc2YjljZjYwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTc4LDggKzE3OCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRm9udEF0
U2VsZWN0aW9uQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6Rm9udEluZm8gZm9udEluZm8sIGRvdWJs
ZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
R2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlv
bkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVG91Y2hl
c0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
ZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4g
ZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2
ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAt
PiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGlu
Zm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGhhbmRsZSkKQEAgLTE4OSw3ICsxODcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIERpZENvbXBsZXRlU3ludGhldGljQ2xpY2soKQogICAgIERpc2FibGVEb3Vi
bGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCkKICAg
ICBIYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcCh1aW50
NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBib29sIGZpdEVu
dGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4
aW11bVNjYWxlLCBib29sIG5vZGVJc1Jvb3RMZXZlbCkKLSAgICBTZWxlY3Rpb25SZWN0c0NhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVj
dGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0KQpAQCAtNDA1LDcgKzQwMiw2IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2Nyb2xsaW5nTm9kZVNjcm9sbERpZEVuZFNjcm9s
bCgpCiAgICAgU2hvd0luc3BlY3RvckhpZ2hsaWdodChzdHJ1Y3QgV2ViQ29yZTo6SW5zcGVjdG9y
T3ZlcmxheTo6SGlnaGxpZ2h0IGhpZ2hsaWdodCkKICAgICBIaWRlSW5zcGVjdG9ySGlnaGxpZ2h0
KCkKLSAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6
Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZvcm1hdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAKICAgICBTaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpCiAgICAgSGlkZUlu
c3BlY3RvckluZGljYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZTgyMzQ4MzNkNjg4NWQwZTFm
NWEyNWFlZTgwYzM0NzkxOWExYzQ5MC4uYjFkZWE2OWM3Y2RkMmMxODNiYzAwMGM5YmEyYzI0ZDFi
YTRjNjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zNzMxLDEwICszNzMxLDcgQEAgV0VCQ09SRV9D
T01NQU5EX0ZPUl9XRUJWSUVXKHBhc3RlQW5kTWF0Y2hTdHlsZSk7CiAKIC0gKHZvaWQpX2FjY2Vz
c2liaWxpdHlSZXRyaWV2ZVJlY3RzRW5jbG9zaW5nU2VsZWN0aW9uT2Zmc2V0OihOU0ludGVnZXIp
b2Zmc2V0IHdpdGhHcmFudWxhcml0eTooVUlUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKIHsK
LSAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgX3BhZ2UtPnJl
cXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh0b1dLVGV4dEdyYW51
bGFyaXR5KGdyYW51bGFyaXR5KSwgb2Zmc2V0ICwgW3ZpZXcsIG9mZnNldCwgZ3JhbnVsYXJpdHld
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBpZiAoZXJyb3IgIT0g
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgIF9wYWdlLT5yZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQo
dG9XS1RleHRHcmFudWxhcml0eShncmFudWxhcml0eSksIG9mZnNldCwgW3ZpZXcgPSByZXRhaW5Q
dHIoc2VsZiksIG9mZnNldCwgZ3JhbnVsYXJpdHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxl
Y3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMpIHsKICAgICAgICAgaWYgKFt2aWV3IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2FjY2Vzc2liaWxpdHlEaWRHZXRTZWxlY3Rpb25SZWN0czp3
aXRoR3JhbnVsYXJpdHk6YXRPZmZzZXQ6KV0pCiAgICAgICAgICAgICBbdmlldyBfYWNjZXNzaWJp
bGl0eURpZEdldFNlbGVjdGlvblJlY3RzOlt2aWV3IHdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0
aW9uUmVjdHM6c2VsZWN0aW9uUmVjdHNdIHdpdGhHcmFudWxhcml0eTpncmFudWxhcml0eSBhdE9m
ZnNldDpvZmZzZXRdOwogICAgIH0pOwpAQCAtMzc0OCwxMiArMzc0NSwxMCBAQCBXRUJDT1JFX0NP
TU1BTkRfRk9SX1dFQlZJRVcocGFzdGVBbmRNYXRjaFN0eWxlKTsKIC0gKHZvaWQpX2FjY2Vzc2li
aWxpdHlSZXRyaWV2ZVJlY3RzQXRTZWxlY3Rpb25PZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQgd2l0
aFRleHQ6KE5TU3RyaW5nICopdGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiByZWN0cykpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBSZXRhaW5QdHI8V0tDb250ZW50Vmlldz4gdmlldyA9IHNlbGY7Ci0gICAgX3BhZ2Ut
PnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBbdmll
dywgb2Zmc2V0LCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxl
Y3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3Bh
Z2UtPnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0LCBb
dmlldywgb2Zmc2V0LCBjYXB0dXJlZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBz
ZWxlY3Rpb25SZWN0cykgewogICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkhhbmRsZXIoc2VsZWN0aW9uUmVjdHMpOwog
Ci0gICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChbdmlldyByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9hY2Nlc3NpYmlsaXR5RGlkR2V0U2VsZWN0aW9uUmVjdHM6d2l0aEdyYW51
bGFyaXR5OmF0T2Zmc2V0OildKQogICAgICAgICAgICAgW3ZpZXcgX2FjY2Vzc2liaWxpdHlEaWRH
ZXRTZWxlY3Rpb25SZWN0czpbdmlldyB3ZWJTZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGlvblJlY3Rz
OnNlbGVjdGlvblJlY3RzXSB3aXRoR3JhbnVsYXJpdHk6VUlUZXh0R3JhbnVsYXJpdHlXb3JkIGF0
T2Zmc2V0Om9mZnNldF07CiAgICAgfSk7CkBAIC0zOTk4LDE3ICszOTkzLDEzIEBAIHN0YXRpYyBp
bmxpbmUgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIHRvV0tTZWxlY3Rpb25EaXJlY3Rpb24o
VUlUZXh0RGlyZWN0aW9uCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2Vk
V2l0aEdlc3R1cmUoV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25G
bGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKK3N0YXRpYyB2
b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNl
dDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykKIHsKLSAgICBpZiAoZXJyb3IgIT0gV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICByZXR1cm47CiAgICAgWyhV
SVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRd
IHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJl
OnRvVUlXS0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNv
Z25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3Mo
ZmxhZ3MpXTsKIH0KIAotc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0Nv
bnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6
U2VsZWN0aW9uVG91Y2ggdG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBm
bGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQgc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gsIE9wdGlvblNl
dDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykKIHsKLSAgICBpZiAoZXJyb3IgIT0gV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQotICAgICAgICByZXR1cm47CiAgICAgWyhV
SVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRd
IHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9u
VG91Y2g6dG9VSVdLU2VsZWN0aW9uVG91Y2goKFdlYktpdDo6U2VsZWN0aW9uVG91Y2gpdG91Y2gp
IHdpdGhGbGFnczp0b1VJV0tTZWxlY3Rpb25GbGFncyhmbGFncyldOwogfQogCkBAIC00MDI1LDgg
KzQwMTYsOCBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVu
dFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaQogLSAodm9pZCljaGFuZ2VTZWxlY3Rp
b25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5
cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGUg
d2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3MKIHsKICAgICBfdXNpbmdHZXN0dXJl
Rm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3Jl
OjpJbnRQb2ludChwb2ludCksIHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpLCB0b0dlc3R1cmVS
ZWNvZ25pemVyU3RhdGUoc3RhdGUpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3NlbGYsIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIHN0YXRlLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBXZWJLaXQ6
Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpT
ZWxlY3Rpb25GbGFncz4gaW5uZXJGbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwg
Z2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgdG9TZWxlY3Rpb25GbGFncyhmbGFncykgfCBpbm5l
ckZsYWdzLCBlcnJvcik7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6Oklu
dFBvaW50KHBvaW50KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRvR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZShzdGF0ZSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RhdGUsIGZsYWdzXShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktpdDo6R2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVj
dGlvbkZsYWdzPiBpbm5lckZsYWdzKSB7CisgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2Vz
dHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgdG9TZWxlY3Rpb25G
bGFncyhmbGFncykgfCBpbm5lckZsYWdzKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZUVuZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZUNhbmNlbGxlZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsK
ICAgICB9KTsKQEAgLTQwMzUsOCArNDAyNiw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5n
ZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxl
Y3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09MKWJh
c2VJc1N0YXJ0IHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzCiB7CiAgICAgX3Vz
aW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1NlbGVjdGlvblRvdWNoKHRv
dWNoKSwgYmFzZUlzU3RhcnQsIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBm
bGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6OlNlbGVjdGlvblRv
dWNoIHRvdWNoLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gaW5uZXJGbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNo
YW5nZWRXaXRoVG91Y2goc2VsZiwgcG9pbnQsIHRvdWNoLCB0b1NlbGVjdGlvbkZsYWdzKGZsYWdz
KSB8IGlubmVyRmxhZ3MsIGVycm9yKTsKKyAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aFRv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSwg
YmFzZUlzU3RhcnQsIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBmbGFnc10o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoIHRv
dWNoLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gaW5uZXJGbGFncykgeworICAg
ICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50LCB0b3VjaCwgdG9TZWxl
Y3Rpb25GbGFncyhmbGFncykgfCBpbm5lckZsYWdzKTsKICAgICAgICAgaWYgKHRvVUlXS1NlbGVj
dGlvblRvdWNoKHRvdWNoKSAhPSBVSVdLU2VsZWN0aW9uVG91Y2hTdGFydGVkICYmIHRvVUlXS1Nl
bGVjdGlvblRvdWNoKHRvdWNoKSAhPSBVSVdLU2VsZWN0aW9uVG91Y2hNb3ZlZCkKICAgICAgICAg
ICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsKQEAgLTQwNDUsOCAr
NDAzNiw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50
VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlv
bldpdGhUb3VjaGVzRnJvbTooQ0dQb2ludClmcm9tIHRvOihDR1BvaW50KXRvIHdpdGhHZXN0dXJl
OihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGUpZ2VzdHVyZVN0YXRlCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9
IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQo
ZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRvKSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSks
IHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpLCBbc2VsZiwgc3Ryb25nU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJL
aXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBzZWxlY3Rpb25D
aGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IGZsYWdzLCBlcnJvcik7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6
OkludFBvaW50KGZyb20pLCBXZWJDb3JlOjpJbnRQb2ludCh0byksIHRvR2VzdHVyZVR5cGUoZ2Vz
dHVyZVR5cGUpLCB0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSwgW3NlbGYs
IHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0OjpHZXN0dXJlUmVj
b2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxh
Z3M+IGZsYWdzKSB7CisgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBw
b2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogICAgICAgICBpZiAodG9V
SUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSA9PSBVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGVFbmRlZCB8fCB0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUp
ID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKICAgICAgICAgICAgIF91c2lu
Z0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsKQEAgLTYzMjAsOCArNjMxMSw4IEBA
IHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgY29uc3QKIHsKICAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiB3ZWFrU2VsZiB7IHNlbGYgfTsKICAgICBhdXRvIGlkZW50aWZpZXJCZWZvcmVVcGRhdGUgPSBf
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5mb2N1c2VkRWxlbWVudElkZW50aWZpZXI7Ci0gICAg
X3BhZ2UtPnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBpZGVudGlmaWVyQmVmb3JlVXBkYXRlLCB3ZWFrU2VsZl0gKGF1dG8mIGlu
Zm8sIGF1dG8gZXJyb3IpIHsKLSAgICAgICAgaWYgKCF3ZWFrU2VsZiB8fCBlcnJvciAhPSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgfHwgaW5mby5mb2N1c2VkRWxlbWVudElkZW50
aWZpZXIgIT0gaWRlbnRpZmllckJlZm9yZVVwZGF0ZSkgeworICAgIF9wYWdlLT5yZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaWRl
bnRpZmllckJlZm9yZVVwZGF0ZSwgd2Vha1NlbGZdIChhdXRvJiBpbmZvKSB7CisgICAgICAgIGlm
ICghd2Vha1NlbGYgfHwgaW5mby5mb2N1c2VkRWxlbWVudElkZW50aWZpZXIgIT0gaWRlbnRpZmll
ckJlZm9yZVVwZGF0ZSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIGZvY3VzZWQgZWxlbWVudCBt
YXkgaGF2ZSBjaGFuZ2VkIGluIHRoZSBtZWFudGltZSwgZG9uJ3Qgb3ZlcndyaXRlIGZvY3VzZWQg
ZWxlbWVudCBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IDY4MjI5MWRhYzM4YTcyOGVkMDEzNWIwYzk3MzcxZTJkZWExMGExMWQu
LjU2ZjViMDc0MjQwMDkzYjk0OTAxOWQ3ODkwNzEyNTQxYjJjYjEzOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTQ5LDU5ICsxNDks
MTIgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdl
c3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBl
IGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9u
U2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpPiYmIGNhbGxiYWNr
KQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEdlc3R1cmVDYWxsYmFj
az4oY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVy
ZVN0YXRlLCBmbGFncyk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2so
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBP
cHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17
Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihj
YWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2ludCwgdG91Y2hlcywgZmxhZ3MpOwotfQotCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U2VsZWN0aW9uUmVjdHND
YWxsYmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHNlbGVjdGlvblJlY3RzKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjayhj
b25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Rm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbkNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShpbmZvKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZ1
bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQotewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBjYWxsYmFjayh7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52
YWxpZGF0ZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHsgfSk7CiAKLSAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uIl9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSwgbV93
ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVx
dWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUsIGJvb2wg
c2VuZEV2ZW5JZlVuY2hhbmdlZCkKQEAgLTQyMiwyNiArMzc1LDIwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpsYXllclRyZWVDb21taXRDb21wbGV0ZSgpCiAgICAgcGFnZUNsaWVudCgpLmxheWVyVHJl
ZUNvbW1pdENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8
V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVj
b2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRF
bGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
R2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNl
bGVjdGlvbkZsYWdzPik+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgR2Vz
dHVyZVR5cGU6OkxvdXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZSwgeyB9LCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJldHVybiBjYWxsYmFjayh7IH0s
IEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2libGUsIHsg
fSk7CiAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUiX3MpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCBnZXN0dXJlVHlw
ZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgU2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgYm9vbCBiYXNl
SXNTdGFydCwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlv
blRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBTZWxlY3Rpb25Ub3VjaCB0
b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFn
cz4pPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIFNlbGVjdGlvblRvdWNo
OjpTdGFydGVkLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgcmV0
dXJuIGNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50KCksIFNlbGVjdGlvblRvdWNoOjpTdGFydGVk
LCB7IH0pOwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzIl9zKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQpLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZURpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKQEAgLTYxMiwx
NSArNTU5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgT3B0CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgbW9kaWZpZXJzLCByZXF1
ZXN0SUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCBH
ZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3Rh
dGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCB0bywgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNv
Z25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4pPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBv
aW50KCksIEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2li
bGUsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2soeyB9LCBHZXN0dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBv
c3NpYmxlLCB7IH0pOwogCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzIl9zKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhm
cm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJRCksIG1fd2ViUGFn
ZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdp
dGhUd29Ub3VjaGVzKGZyb20sIHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVBvc2l0aW9u
SW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8p
CkBAIC03NDUsMjYgKzY4OSwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3
YXJkKCkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdvcmRC
YWNrd2FyZCgpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihWZWN0
b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4oKSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQorICAgICAgICByZXR1cm4gY2FsbGJhY2soeyB9KTsKICAgICAKLSAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdFJl
Y3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0Il9zKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldChncmFudWxhcml0eSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JH
cmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZ3JhbnVsYXJpdHksIG9mZnNldCksIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFZlY3RvcjxXZWJD
b3JlOjpTZWxlY3Rpb25SZWN0PigpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayh7IH0pOwogICAgIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0Il9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQob2Zmc2V0LCB0ZXh0
LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwg
dGV4dCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3Jl
U2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3JlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGI2ZThmZWEwZjk0NDNhMzRlZjhl
YjhlMTMwZDM1YjEwZmEwZTdiMjAuLjNhZThhZDRiZjI0Mzg5MjFlMThlMjUwZTdmZmJhZjI4NWFi
NjdlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTcyNSwxMCArNzI1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3Rvck5vZGVTZWFyY2hF
bmRlZEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCiAgICAgdm9pZCBi
bHVyRm9jdXNlZEVsZW1lbnQoKTsKLSAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKLSAgICB2b2lk
IHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJik+
JiYpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNl
dDxTZWxlY3Rpb25GbGFncz4pPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlz
U3RhcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBT
ZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPik+JiYpOworICAgIHZvaWQg
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0
dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdz
Pik+JiYpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNr
d2FyZCgpOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtNzYyLDggKzc2Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2UoKTsKICAgICB2b2lkIGdldFNlbGVj
dGlvbkNvbnRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZl
bnQ6Ok1vZGlmaWVyPiwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGdldFJlY3RzRm9y
R3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
aW50MzJfdCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0
V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHksIGludDMyX3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlv
bk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYpOwogICAgIHZv
aWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwogICAgIHZvaWQgc3RhcnRB
dXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9p
ZCBjYW5jZWxBdXRvc2Nyb2xsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwMzc2YWQ0MDcxMjU1OTM5YWVmYjVm
YzRkMWE0MDdjN2I1NjRkNGZiLi5iNjg0OGY3ZWY5YTBkMmEzYzMzZjMxMzM1YjVjMjRkYWUxYjA2
Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTY1LDkgKzY1LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihXZWJD
b3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9z
aXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyRm9jdXNlZEVsZW1lbnQo
KQotICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktp
dDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAg
VXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06
dWludDhfdCBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoIHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVz
KFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCBlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50
OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50
OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNl
dDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykgQXN5bmMKKyAgICBVcGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90IFdlYktp
dDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCkgLT4gKFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3Vj
aCwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IHNlbGVjdGlvbkZsYWdzKSBBc3lu
YworICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNv
cmU6OkludFBvaW50IHRvLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJl
VHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJl
U3RhdGUpIC0+IChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90IFdlYktpdDo6
R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFn
cz4gc2VsZWN0aW9uRmxhZ3MpIEFzeW5jCiAgICAgRXh0ZW5kU2VsZWN0aW9uKGVudW06dWludDhf
dCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpIC0+ICgpIEFzeW5jCiAgICAg
U2VsZWN0V29yZEJhY2t3YXJkKCkKICAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBv
ZmZzZXQpIC0+ICgpIEFzeW5jCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxh
eWJhY2soYm9vbCBhbGxvd3MpCiAgICAgSGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiBt
b2RpZmllcnMsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0g
ICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJp
bmcgdGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVjdHNGb3JH
cmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6U2VsZWN0aW9uUmVjdD4gcmVjdCkgQXN5bmMKKyAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zm
c2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0KSAtPiAoVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+IHJlY3QpIEFzeW5jCiAgICAgU3RvcmVTZWxlY3Rpb25Gb3JBY2Nl
c3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAgICAgU3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlv
bihXZWJDb3JlOjpGbG9hdFBvaW50IHBvc2l0aW9uSW5XaW5kb3cpCiAgICAgQ2FuY2VsQXV0b3Nj
cm9sbCgpCi0gICAgUmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
KSAtPiAoc3RydWN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZvKSBBc3lu
YwogICAgIEhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wga2V5Ym9hcmRJ
c0F0dGFjaGVkKQogICAgIFNldElzU2hvd2luZ0lucHV0Vmlld0ZvckZvY3VzZWRFbGVtZW50KGJv
b2wgc2hvd2luZ0lucHV0VmlldykKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRf
dCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0aERlbHRhKSAtPiAoKSBBc3luYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBmMzY0ZTQyMDY1YmE3YWVhZTk2NmI5MjljYjA2ZDNjMjkxMThkYjcwLi4wMDZiODVhYzUyYjU0
OGQ0YjM1OGU0YTAwZTMxZTYxZGIwMmZjNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTIyLDEzICs5MjIsMTMgQEAg
dm9pZCBXZWJQYWdlOjpoYW5kbGVEb3VibGVUYXBGb3JEb3VibGVDbGlja0F0UG9pbnQoY29uc3Qg
SW50UG9pbnQmIHBvaW50LCBPcHRpb24KICAgICBub2RlUmVzcG9uZGluZ1RvRG91YmxlQ2xpY2st
PmRvY3VtZW50KCkuZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoUGxhdGZvcm1Nb3VzZUV2ZW50KHJvdW5kZWRBZGp1c3RlZFBvaW50LCByb3VuZGVkQWRqdXN0
ZWRQb2ludCwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZCwgMiwgc2hp
ZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgV2FsbFRpbWU6Om5vdygpLCAwLCBXZWJD
b3JlOjpPbmVGaW5nZXJUYXApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZvOwogICAgIGlmIChtX2Zv
Y3VzZWRFbGVtZW50KQogICAgICAgICBnZXRGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGluZm8p
OwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uQ2FsbGJhY2soaW5mbywgY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KGluZm8pOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTEzMzksNyArMTMzOSw3
IEBAIHN0YXRpYyBJbnRQb2ludCBjb25zdHJhaW5Qb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQs
IGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QKICAgICByZXR1cm4gY29uc3RyYWluZWRQb2ludDsK
IH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9p
bnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1
cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBv
aW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PEdlc3R1cmVSZWNvZ25p
emVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkgPT0gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6QmVnYW4p
CiAgICAgICAgIHNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKHBv
aW50KTsKQEAgLTEzNDgsNyArMTM0OCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9y
UG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKIAog
ICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0
ZSwgeyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvaW50LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHZv
aWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0
dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAgICBpZiAocmFuZ2UpCiAgICAgICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVk
KTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBv
aW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgY2FsbGJhY2tJRCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFn
cyk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQb2ludEluUm9v
dFZpZXdDb29yZGluYXRlcyhGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiBwb2ludEluUm9v
dFZpZXdDb29yZGluYXRlcywgYm9vbCBiYXNlSXNTdGFydCkKQEAgLTE2ODcsMTUgKzE2ODcsMTMg
QEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9u
R2VzdHVyZShTZWxlY3Rpb25Ub3VjaCB0b3UKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25U
b3VjaCBzZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQ
b2ludCYgcG9pbnQsIFNlbGVjdGlvblRvdWNoIHNlbGVjdGlvblRvdWNoLCBib29sIGJhc2VJc1N0
YXJ0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgSW50UG9pbnQgcG9pbnRJbkRvY3VtZW50ID0gZnJhbWUu
dmlldygpLT5yb290Vmlld1RvQ29udGVudHMocG9pbnQpOwogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbiA9IGZyYW1lLnZpc2libGVQb3NpdGlvbkZvclBvaW50KHBvaW50SW5Eb2N1bWVudCk7
Ci0gICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6VG91Y2hlc0NhbGxiYWNrKHBvaW50LCBzZWxlY3Rpb25Ub3VjaCwgeyB9LCBj
YWxsYmFja0lEKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHBvc2l0aW9uLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIocG9pbnQsIHNlbGVjdGlv
blRvdWNoLCB7IH0pOwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VFdmVu
dHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3ludGhldGljTW91
c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2ludCk7CkBAIC0x
NzMxLDEwICsxNzI5LDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25Ub3VjaCBzCiAgICAgaWYgKHJhbmdl
KQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBwb3Np
dGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgc2VsZWN0aW9uVG91Y2gsIGZsYWdzLCBjYWxsYmFj
a0lEKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocG9pbnQsIHNlbGVjdGlvblRvdWNoLCBmbGFn
cyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5
cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8s
IEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVT
dGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdl
c3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxh
Z3M+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGF1dG8gZnJvbVBv
c2l0aW9uID0gZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWUudmlldygpLT5yb290
Vmlld1RvQ29udGVudHMoZnJvbSkpOwpAQCAtMTc0Niw3ICsxNzQ0LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29u
c3QgV2ViQ29yZToKICAgICB9CiAKICAgICAvLyBXZSBjYW4gdXNlIHRoZSBzYW1lIGNhbGxiYWNr
IGZvciB0aGUgZ2VzdHVyZXMgd2l0aCBvbmUgcG9pbnQuCi0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2soZnJvbSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0
ZSwgeyB9LCBjYWxsYmFja0lEKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZnJvbSwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpleHRlbmRTZWxl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xOTUxLDcgKzE5NDksNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFZlYwogICAgIHJlcGx5KFdURk1vdmUocmVjdHNUb0F2b2lkSW5S
b290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTE5NjAsMTMgKzE5NTgsMTMgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkKICAgICBhdXRvIGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
OwogICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmNv
bGxhcHNlZCgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0
aW9uUmVjdHNDYWxsYmFjayh7IH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gc2VsZWN0aW9u
UmVjdHMgPSBSZW5kZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVbmlvbklu
dGVyaW9yTGluZXMoKnJhbmdlKTsKICAgICBjb252ZXJ0Q29udGVudFRvUm9vdFZpZXdTZWxlY3Rp
b25SZWN0cygqZnJhbWUudmlldygpLCBzZWxlY3Rpb25SZWN0cyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKHNlbGVjdGlvblJlY3RzLCBj
YWxsYmFja0lEKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0aW9uUmVjdHMpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3Vs
ZFN0b3JlKQpAQCAtMTk5MSwxNCArMTk4OSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJgog
ICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dChyYW5nZSwgbWF0Y2hUZXh0LCB7IH0sIGNo
YXJhY3RlckNvdW50KHsgcmFuZ2Uuc3RhcnQsICpib3VuZGFyeVBvaW50IH0sIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTdHJpbmcmIHRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25z
dCBTdHJpbmcmIHRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBhdXRvJiBzZWxlY3Rpb24gPSBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHku
aXNOb25lKCkgPyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSA6IG1fc3RvcmVkU2VsZWN0
aW9uRm9yQWNjZXNzaWJpbGl0eTsKICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSB2aXNpYmxlUG9z
aXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBvZmZz
ZXQpOwogICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgdmlz
aWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KHN0YXJ0UG9zaXRpb24sIHRleHQubGVu
Z3RoKCkpKTsKICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkgewotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlbGVjdGlvblJlY3RzQ2FsbGJhY2soeyB9
LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIwMTIsNyArMjAxMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJp
bmcmIHRlCiAKICAgICBhdXRvIHNlbGVjdGlvblJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0
U2VsZWN0aW9uUmVjdHNXaXRob3V0VW5pb25JbnRlcmlvckxpbmVzKCpyYW5nZSk7CiAgICAgY29u
dmVydENvbnRlbnRUb1Jvb3RWaWV3U2VsZWN0aW9uUmVjdHMoKmZyYW1lLnZpZXcoKSwgc2VsZWN0
aW9uUmVjdHMpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0aW9uUmVj
dHNDYWxsYmFjayhzZWxlY3Rpb25SZWN0cywgY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKHNlbGVjdGlvblJlY3RzKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIFdlYlBhZ2U6OnZp
c2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>