<?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>38313</bug_id>
          
          <creation_ts>2010-04-29 01:01:45 -0700</creation_ts>
          <short_desc>Remove custom bindings for code with simple preconditions</short_desc>
          <delta_ts>2011-10-24 14:51:18 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arv</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>218885</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 01:01:45 -0700</bug_when>
    <thetext>Remove custom bindings for code with simple preconditions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218886</commentid>
    <comment_count>1</comment_count>
      <attachid>54679</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 01:02:14 -0700</bug_when>
    <thetext>Created attachment 54679
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218887</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 01:02:56 -0700</bug_when>
    <thetext>I&apos;m not 100% happy with this patch yet.  Also, I haven&apos;t done the V8 parts properly yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219077</commentid>
    <comment_count>3</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-29 09:52:00 -0700</bug_when>
    <thetext>Wouldn&apos;t it simplify things if these checks are pushed deeper from the bindings into webcore? I understand why this is hard when a method / getter returns a primitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219131</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 12:11:17 -0700</bug_when>
    <thetext>There&apos;s a question of whether we&apos;re supposed to throw these errors before or after coercing the arguments.  I&apos;ll study the feasibility of pushing these checks into WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219179</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 14:21:27 -0700</bug_when>
    <thetext>A patch in that direction is available here:
https://bugs.webkit.org/show_bug.cgi?id=38344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219191</commentid>
    <comment_count>6</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-29 14:36:36 -0700</bug_when>
    <thetext>As for NullIf for members that return primitives (e.g. double), we might need to change the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219221</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-29 15:43:40 -0700</bug_when>
    <thetext>Yeah.  Maybe they should throw?  It&apos;s unclear that null is a valid value for double.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54679</attachid>
            <date>2010-04-29 01:02:14 -0700</date>
            <delta_ts>2010-06-11 11:45:48 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-38313-20100429010213.patch</filename>
            <type>text/plain</type>
            <size>74052</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNkZjgxMDBlOTg4ZDVmMzA2OTlkZGQ1NTU5MGRkOGMxYzY3ZmExZC4uZDM0N2VlYjM2ZWEwNDZl
MWJiOGU3YThhZTkzMGYyZmM4NTJlODA0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAxMC0wNC0yOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjdXN0b20gYmluZGluZ3MgZm9yIGNvZGUgd2l0
aCBzaW1wbGUgcHJlY29uZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzgzMTMKKworICAgICAgICBXb3JraW4gaW4gcHJvZ3Jlc3MuLi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29vcmRpbmF0ZXNDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9hd2Vzb21lX3Rocm93X2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9zZXRfYXdlc29tZV90aHJvd19hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X2F3ZXNvbWVfbnVsbF9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X2F3ZXNvbWVfbnVsbF9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F3
ZXNvbWVfdGhyb3dfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F3
ZXNvbWVfdGhyb3dfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F3
ZXNvbWVfbnVsbF9tZXRob2QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXdl
c29tZV9udWxsX21ldGhvZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBd2Vzb21lVGhyb3dBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9iakF3ZXNvbWVOdWxsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpBd2Vzb21lVGhyb3dNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
QXdlc29tZU51bGxNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW50QXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBd2Vz
b21lVGhyb3dBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF3ZXNvbWVOdWxs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBd2Vzb21lVGhyb3dNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXdlc29tZU51bGxNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2RXaXRoQXJncyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkN1c3RvbU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ3VzdG9tQXJnc0FuZEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhE
eW5hbWljRnJhbWVBbmRBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRF
eGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRP
cHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIGF3ZXNv
bWVUaHJvd0F0dHJdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRBd2Vzb21lVGhyb3dBdHRy
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIGF3ZXNvbWVOdWxsQXR0cl0pOgorICAgICAgICAo
LVtET01UZXN0T2JqIHNldEF3ZXNvbWVOdWxsQXR0cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9i
aiBhd2Vzb21lVGhyb3dNZXRob2RdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRBd2Vzb21l
VGhyb3dNZXRob2Q6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogYXdlc29tZU51bGxNZXRob2Rd
KToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRBd2Vzb21lTnVsbE1ldGhvZDpdKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqSW50ZXJuYWw6OmF3ZXNvbWVUaHJvd0F0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpJbnRlcm5hbDo6YXdlc29tZVRocm93QXR0ckF0dHJTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjphd2Vzb21lTnVsbEF0dHJBdHRyR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6YXdlc29tZU51bGxBdHRyQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmF3ZXNvbWVUaHJvd01l
dGhvZEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjphd2Vz
b21lVGhyb3dNZXRob2RBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRl
cm5hbDo6YXdlc29tZU51bGxNZXRob2RBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6YXdlc29tZU51bGxNZXRob2RBdHRyU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Oik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAgICAg
KiBwYWdlL0Nvb3JkaW5hdGVzLmlkbDoKKwogMjAxMC0wNC0yNSAgQW50b25pbyBHb21lcyAgPHRv
bmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb29yZGluYXRlc0N1c3RvbS5jcHAKaW5kZXggNzIwYmI5
Yjk1YzA5YjI5MjJkNmI1ZGFkOTdkMDBiOWMxZDk3MzYyZi4uNTc5OGM3MGQ3NDY5OTdlYmU2MGU3
MDE0NWRjZTAxNTBhNDcwOTAxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nv
b3JkaW5hdGVzQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29vcmRpbmF0
ZXNDdXN0b20uY3BwCkBAIC0zMSwzNyArMzEsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjphbHRpdHVk
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgQ29vcmRpbmF0ZXMqIGltcCA9IGltcGwo
KTsKLSAgICBpZiAoIWltcC0+Y2FuUHJvdmlkZUFsdGl0dWRlKCkpCi0gICAgICAgIHJldHVybiBq
c051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1wLT5hbHRpdHVkZSgpKTsKLX0K
IAotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLXsKLSAgICBDb29yZGluYXRlcyogaW1wID0gaW1wbCgpOwotICAgIGlmICghaW1w
LT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7
Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGltcC0+YWx0aXR1ZGVBY2N1cmFjeSgpKTsKLX0K
LQotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjpoZWFkaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
LXsKLSAgICBDb29yZGluYXRlcyogaW1wID0gaW1wbCgpOwotICAgIGlmICghaW1wLT5jYW5Qcm92
aWRlSGVhZGluZygpKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIGpzTnVt
YmVyKGV4ZWMsIGltcC0+aGVhZGluZygpKTsKLX0KLQotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjpz
cGVlZChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgQ29vcmRpbmF0ZXMqIGltcCA9IGlt
cGwoKTsKLSAgICBpZiAoIWltcC0+Y2FuUHJvdmlkZVNwZWVkKCkpCi0gICAgICAgIHJldHVybiBq
c051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1wLT5zcGVlZCgpKTsKLX0KKy8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlLgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXgg
ZTUxNjZlZWMxZWEzYjBmYWRjNmQwMDdhNzA4YzJiODFlYWI4NGM4OC4uM2ViYmE1N2ViZDg2Mzg5
YTEzZDc2ZTA0ODExMWVmNmU2MzM5M2EwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNjcsNTMgKzY3LDQgQEAgSlNWYWx1ZSBK
U0hUTUxJbnB1dEVsZW1lbnQ6OnR5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCB0eXBlKTsKIH0KIAotSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6
OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbXBsKCkpOwot
ICAgIGlmICghaW5wdXQtPmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLQotICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbnB1
dC0+c2VsZWN0aW9uU3RhcnQoKSk7Ci19Ci0KLXZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25TdGFydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW1w
bCgpKTsKLSAgICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLQotICAgIGlucHV0LT5zZXRTZWxlY3Rpb25TdGFydCh2
YWx1ZS50b0ludDMyKGV4ZWMpKTsKLX0KLQotSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
bGVjdGlvbkVuZChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgSFRNTElucHV0RWxlbWVu
dCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW1wbCgpKTsKLSAgICBp
ZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW5wdXQtPnNl
bGVjdGlvbkVuZCgpKTsKLX0KLQotdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlv
bkVuZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW1wbCgpKTsKLSAg
ICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93RXJyb3IoZXhl
YywgVHlwZUVycm9yKTsKLQotICAgIGlucHV0LT5zZXRTZWxlY3Rpb25FbmQodmFsdWUudG9JbnQz
MihleGVjKSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25S
YW5nZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW1wbCgp
KTsKLSAgICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICBpbnQgc3RhcnQgPSBhcmdzLmF0KDAp
LnRvSW50MzIoZXhlYyk7Ci0gICAgaW50IGVuZCA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsK
LQotICAgIGlucHV0LT5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMjI4ZTE1YTU2MjZmOGM0OTJl
MTI0N2NhZjI2ODlhNTRlZTE5ZGQ4Mi4uNTFkNDk1MjVhMGE4NzIzODQ4ODEyZWNhZTIzNTk3YmU3
OTlmYmYxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0xMzQsNyArMTM0LDcgQEAgc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwKICAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gYXJncy5hdCgxKTsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGltcC0+JHtmdW5jdGlvbk5h
bWV9RXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNTdHJpbmcoYXJncy5hdCgwKS50b1N0cmlu
ZyhleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2Fz
dGVkVGhpc09iaiwgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5n
LCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wLT4ke2Z1bmN0aW9uTmFtZX1F
dmVudExpc3RlbmVyKHVzdHJpbmdUb0F0b21pY1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4
ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRU
aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSRwYXNzUmVmUHRySGFuZGxpbmcsIGFyZ3Mu
YXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIEVORAog
ICAgIHJldHVybiBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKQEAgLTMzMiw2ICszMzIsNTMg
QEAgc3ViIEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcKICAgICB9CiB9CiAKK3N1YiBHZW5lcmF0
ZVNlY3VyaXR5Q2hlY2sKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkbm9k
ZSA9IHNoaWZ0OworICAgIG15ICRzZWN1cml0eUNoZWNrUXVhbGlmaWVyID0gc2hpZnQ7CisKKyAg
ICBteSBAY29kZSA9ICgpOworCisgICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKKyAgICAgICAgcmV0dXJuIEBjb2RlOworICAg
IH0KKyAgICBpZiAoJG5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90
Q2hlY2tEb21haW5TZWN1cml0eSJ9KXsKKyAgICAgICAgcmV0dXJuIEBjb2RlOworICAgIH0KKyAg
ICBpZiAoZGVmaW5lZCAkc2VjdXJpdHlDaGVja1F1YWxpZmllciAmJiAkbm9kZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskc2VjdXJpdHlDaGVja1F1YWxpZmllcn0pIHsKKyAgICAg
ICAgcmV0dXJuIEBjb2RlOworICAgIH0KKworICAgIHB1c2goQGNvZGUsICIgICAgaWYgKCFjYXN0
ZWRUaGlzLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgcHVzaChAY29kZSwgIiAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKKworICAgIHJldHVybiBAY29kZTsKK30K
Kworc3ViIEdlbmVyYXRlUHJlY29uZGl0aW9ucworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0
OworICAgIG15ICRub2RlID0gc2hpZnQ7CisKKyAgICBteSBAY29kZSA9ICgpOworICAgIG15ICRw
cmVjb25kaXRpb247CisKKyAgICAkcHJlY29uZGl0aW9uID0gJG5vZGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlRocm93SWZOb3QifTsKKyAgICBpZiAoJHByZWNvbmRpdGlvbikg
eworICAgICAgICBwdXNoKEBjb2RlLCAiICAgIGlmICghY2FzdGVkVGhpcy0+JHByZWNvbmRpdGlv
bigpKVxuIik7CisgICAgICAgIHB1c2goQGNvZGUsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7XG4iKTsKKyAgICB9CisKKyAgICAkcHJlY29uZGl0aW9uID0gJG5v
ZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bGxJZk5vdCJ9OworICAgIGlm
ICgkcHJlY29uZGl0aW9uKSB7CisgICAgICAgIHB1c2goQGNvZGUsICIgICAgaWYgKCFjYXN0ZWRU
aGlzLT4kcHJlY29uZGl0aW9uKCkpXG4iKTsKKyAgICAgICAgcHVzaChAY29kZSwgIiAgICAgICAg
cmV0dXJuIGpzTnVsbCgpO1xuIik7CisgICAgfQorCisgICAgcmV0dXJuIEBjb2RlOworfQorCiBz
dWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiB7CiAgICAgbXkgKCRkYXRhTm9kZSwg
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lLCAkaGFzQXR0cmlidXRl
cywgJGlubGluZWQpID0gQF87CkBAIC0xMzYzLDEyICsxNDEwLDggQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNv
bnZlcnNpb24gPSAkaW1wbENsYXNzTmFtZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5T
ZWN1cml0eSJ9ICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9ICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5T25HZXQifSkgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMtPmFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZVNlY3Vy
aXR5Q2hlY2soJGRhdGFOb2RlLCAkYXR0cmlidXRlLCAiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5
T25HZXQiKSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlUHJl
Y29uZGl0aW9ucygkZGF0YU5vZGUsICRhdHRyaWJ1dGUpKTsKIAogICAgICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0b20i
fSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21H
ZXR0ZXIifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0NDdXN0b21HZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gY2FzdGVkVGhpcy0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYyk7
XG4iKTsKQEAgLTE1MzMsNyArMTU3Niw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtwdXRGdW5j
dGlvbk5hbWV9KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gJiYgISRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBBYnN0cmFjdCBpbnRvIEdlbmVyYXRl
U2VjdXJpdHlDaGVjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzdGF0aWNf
Y2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTU0MiwxNyArMTU4
NywyMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PCRjbGFzc05h
bWUqPih0aGlzT2JqZWN0KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIEdlbmVyYXRlUHJlY29uZGl0aW9ucygkZGF0YU5vZGUsICRhdHRyaWJ1dGUpKTsK
KwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbVNldHRlciJ9KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8
JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVj
LCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBjYXN0ZWRUaGlzLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVjLCB2
YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJF
dmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICR3aW5kb3dFdmVudExpc3RlbmVyID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiV2luZG93RXZlbnRMaXN0ZW5lciJ9
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkd2luZG93RXZlbnRMaXN0ZW5lcikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPih0
aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGlt
cGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oc3RhdGljX2Nh
c3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpO1xuIik7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSog
aW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJX
b3JrZXJDb250ZXh0IiBhbmQgJG5hbWUgZXEgIm9uZXJyb3IiKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxl
ci5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGNyZWF0ZUpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlcihleGVjLCB2YWx1ZSwgdGhpc09iamVjdCkpO1xuIik7CkBAIC0x
NTcwLDEzICsxNjE4LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTIiAuICRjb25zdHJ1Y3RvclR5
cGUgLiAiLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVj
dCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIG9iamVjdFxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5wdXREaXJl
Y3QoSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3QoSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19j
YXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wID0gc3RhdGljX2Nh
c3Q8JGltcGxUeXBlKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wID0g
c3RhdGljX2Nhc3Q8JGltcGxUeXBlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSBwb2RJbXAoKmlt
cCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVx
ICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCkBAIC0xNTg0LDcgKzE2
MzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcG9kSW1wLnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1l
KCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIp
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaW1wLT5jb21taXRDaGFu
Z2UocG9kSW1wLCBjYXN0ZWRUaGlzT2JqKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXAtPmNvbW1pdENoYW5nZShwb2RJbXAs
IGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1
ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTE2MDIs
NyArMTY0OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0
UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNTVkdDb250ZXh0Q2FjaGU6OnByb3Bh
Z2F0ZVNWR0RPTUNoYW5nZShjYXN0ZWRUaGlzT2JqLCBpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1NWR0NvbnRleHRDYWNoZTo6cHJvcGFnYXRlU1ZHRE9NQ2hhbmdl
KGNhc3RlZFRoaXMsIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE2NTAsMjQgKzE2OTcsMjEgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50
aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
Y2xhc3NOYW1lKiBjYXN0ZWRUaGlzT2JqID0gdG9KU0RPTVdpbmRvdyh0aGlzVmFsdWUudG9UaGlz
T2JqZWN0KGV4ZWMpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghY2FzdGVkVGhpc09iailcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0b0pTRE9NV2luZG93KHRoaXNW
YWx1ZS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IklzV29ya2VyQ29udGV4dCJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpc09iaiA9IHRvJHtjbGFzc05hbWV9KHRo
aXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzT2JqKVxuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtj
bGFzc05hbWV9KHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYykpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzKVxuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJiR7
Y2xhc3NOYW1lfTo6c19pbmZvKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpO1xuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVk
VGhpc09iaiA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihhc09iamVjdCh0aGlzVmFsdWUpKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUq
IGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAKLSAgICAgICAgICAg
ICAgICAhJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENo
ZWNrRG9tYWluU2VjdXJpdHkifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghY2FzdGVkVGhpc09iai0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTtcbiIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIEdlbmVyYXRlU2VjdXJpdHlDaGVjaygkZGF0YU5vZGUsICRmdW5jdGlvbiwgdW5kZWYpKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZVByZWNvbmRpdGlvbnMoJGRh
dGFOb2RlLCAkZnVuY3Rpb24pKTsKIAogICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIEpT
U1ZHTGVuZ3RoTGlzdCAvIEpTU1ZHVHJhbnNmb3JtTGlzdCAvIEpTU1ZHUG9pbnRMaXN0IC8gSlNT
VkdOdW1iZXJMaXN0CiAgICAgICAgICAgICAjIEluc3RlYWQgb2YgaGF2aW5nIEpTU1ZHKkN1c3Rv
bS5jcHAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgU1ZHTGlzdCBpbnRlcmZhY2UgZm9yIGFsbCBv
ZiB0aGVzZQpAQCAtMTY4NSwxNCArMTcyOSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8fCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ0N1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNhc3RlZFRoaXNPYmotPiIgLiAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUgLiAiKGV4ZWMsIGFyZ3MpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUgLiAiKGV4ZWMsIGFyZ3MpO1xuIik7CiAgICAgICAgICAgICB9IGVs
c2lmICgkc3ZnUE9ETGlzdFR5cGUpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJK
UyR7c3ZnUE9ETGlzdFR5cGV9LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNTVkdQT0RMaXN0Q3VzdG9tLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTU1ZHUE9ETGlzdEN1c3RvbTo6JGZ1bmN0aW9uSW1wbGVt
ZW50YXRpb25OYW1lPCRjbGFzc05hbWUsICIgLiBHZXROYXRpdmVUeXBlKCRzdmdQT0RMaXN0VHlw
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIj4oY2FzdGVkVGhpc09iaiwg
ZXhlYywgYXJncywgdG8iIC4gJHN2Z1BPRExpc3RUeXBlIC4gIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC4gIj4oY2FzdGVkVGhpcywgZXhlYywgYXJncywgdG8iIC4g
JHN2Z1BPRExpc3RUeXBlIC4gIik7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXAgPSBzdGF0aWNf
Y2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXAgPSBzdGF0aWNfY2Fz
dDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJHBvZFR5cGUgcG9kSW1wKCppbXApO1xuIikgaWYgJHBv
ZFR5cGU7CiAKICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfTsKQEAgLTE5MTIsMTAgKzE5NTYsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlw
ZSBlcSAidm9pZCIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiJGZ1
bmN0aW9uU3RyaW5nO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
InNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhj
ZXB0aW9uc307Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gImltcC0+Y29t
bWl0Q2hhbmdlKHBvZEltcCwgY2FzdGVkVGhpc09iaik7XG4iKSBpZiAkcG9kVHlwZTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaW1wLT5jb21taXRDaGFuZ2UocG9kSW1w
LCBjYXN0ZWRUaGlzKTtcbiIpIGlmICRwb2RUeXBlOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICJyZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJKU0M6OkpTVmFsdWUg
cmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwgJGlt
cGxDbGFzc05hbWUsICIiLCAkZnVuY3Rpb25TdHJpbmcsICJjYXN0ZWRUaGlzT2JqIikgLiAiO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwg
MSwgJGltcGxDbGFzc05hbWUsICIiLCAkZnVuY3Rpb25TdHJpbmcsICJjYXN0ZWRUaGlzIikgLiAi
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAK
ICAgICAgICAgJGNhbGxXaXRoID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWxsV2l0aCJ9OwpAQCAtMTkyNyw3ICsxOTcxLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAgICAgICBpZiAoJHBvZFR5cGUgYW5kIG5vdCAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltbXV0YWJsZSJ9KSB7
CiAgICAgICAgICAgICAjIEltbXV0YWJsZSBtZXRob2RzIGRvIG5vdCBjb21taXQgY2hhbmdlcyBi
YWNrIHRvIHRoZSBpbnN0YW5jZSwgdGh1cyBwcm9kdWNpbmcKICAgICAgICAgICAgICMgYSBuZXcg
aW5zdGFuY2UgcmF0aGVyIHRoYW4gbXV0YXRpbmcgZXhpc3Rpbmcgb25lLgotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaW1wLT5jb21taXRDaGFuZ2UocG9kSW1wLCBj
YXN0ZWRUaGlzT2JqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiaW1wLT5jb21taXRDaGFuZ2UocG9kSW1wLCBjYXN0ZWRUaGlzKTtcbiIpOwogICAgICAg
ICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAicmV0dXJuIHJlc3Vs
dDtcbiIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5k
ZXggMGQxMjFhZWI1YTI0MmJmOTY3ZDdhOWJjOTk3NDlmMDBiYjc5NWNhMy4uMjkzMTNiZmM3NTcy
YmNlZDVjNGVmNTI5OTkyZjE2MDkxZTQ0OTRkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yMDEsNiArMjAxLDI5IEBAIHN1YiBHZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nCiAgICAgfQogfQogCitzdWIgR2VuZXJhdGVQcmVjb25kaXRpb25zCit7
CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJG5vZGUgPSBzaGlmdDsKKworICAg
IG15IEBjb2RlID0gKCk7CisgICAgbXkgJHByZWNvbmRpdGlvbjsKKworICAgICRwcmVjb25kaXRp
b24gPSAkbm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVGhyb3dJZk5vdCJ9
OworICAgIGlmICgkcHJlY29uZGl0aW9uKSB7CisgICAgICAgIHB1c2goQGNvZGUsICIgICAgaWYg
KCFpbXAtPiRwcmVjb25kaXRpb24oKSlcbiIpOworICAgICAgICBwdXNoKEBjb2RlLCAiICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iKTsKKyAgICB9CisKKyAg
ICAkcHJlY29uZGl0aW9uID0gJG5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik51bGxJZk5vdCJ9OworICAgIGlmICgkcHJlY29uZGl0aW9uKSB7CisgICAgICAgIHB1c2goQGNv
ZGUsICIgICAgaWYgKCFpbXAtPiRwcmVjb25kaXRpb24oKSlcbiIpOworICAgICAgICBwdXNoKEBj
b2RlLCAiICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTtcbiIpOworICAgIH0KKworICAgIHJldHVy
biBAY29kZTsKK30KKwogc3ViIExpbmtPdmVybG9hZGVkRnVuY3Rpb25zCiB7CiAgICAgbXkgJGRh
dGFOb2RlID0gc2hpZnQ7CkBAIC02OTUsNiArNzE4LDggQEAgRU5ECiBFTkQKICAgICB9CiAKKyAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVByZWNvbmRpdGlvbnMoJGRhdGFOb2Rl
LCAkYXR0cmlidXRlKSk7CisKICAgICAjIEdlbmVyYXRlIHNlY3VyaXR5IGNoZWNrcyBpZiBuZWNl
c3NhcnkKICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tOb2RlU2VjdXJpdHkifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNoZWNrTm9kZVNlY3VyaXR5KFY4QmluZGlu
Z1N0YXRlOjpPbmx5KCksIGltcC0+JGF0dHJOYW1lKCkpKVxuICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTtcblxuIik7CkBAIC05MDAsNiArOTI1LDggQEAgRU5ECiBFTkQKICAgICB9
CiAKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVByZWNvbmRpdGlvbnMoJGRh
dGFOb2RlLCAkYXR0cmlidXRlKSk7CisKICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5
cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCk7CiAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgaWYg
KCRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2luZG93IikgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5k
ZXggNGFiZjhhMDAzMDA2Nzk5NmQwNWExNjc0YThlY2E2NTkwMWU1NWZjNC4uMzk3YmM2MzZhOGU0
YTcwYmE1ZjI2Njc4Yzg5MDgwZWUyYzVjM2ExYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC00
MDMsNiArNDAzLDkwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIgKFdl
YktpdERPTVRlc3RPYmogKnNlbGYsIFdlYktpdERPTVRlc3RPYmoqCiAKIH0KIAorZ2NoYXIqIAor
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXdlc29tZV90aHJvd19hdHRyIChXZWJLaXRET01UZXN0
T2JqICpzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmLCAwKTsKKyAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnY2hhciog
IHJlcyA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXdlc29tZVRocm93QXR0cigpKTsKKyAg
ICByZXR1cm4gcmVzOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F3ZXNv
bWVfdGhyb3dfYXR0ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2NoYXIqICB2YWx1ZSkKK3sK
KyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsICh2YWx1ZSk7Cisg
ICAgV2ViQ29yZTo6U3RyaW5nIF9nX3ZhbHVlID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh2
YWx1ZSk7CisgICAgaXRlbS0+c2V0QXdlc29tZVRocm93QXR0cihfZ192YWx1ZSk7CisKK30KKwor
Z2NoYXIqIAord2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXdlc29tZV9udWxsX2F0dHIgKFdlYktp
dERPTVRlc3RPYmogKnNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYsIDAp
OworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IGdjaGFyKiAgcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hd2Vzb21lTnVsbEF0dHIo
KSk7CisgICAgcmV0dXJuIHJlczsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF9hd2Vzb21lX251bGxfYXR0ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2NoYXIqICB2YWx1
ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsICh2YWx1
ZSk7CisgICAgV2ViQ29yZTo6U3RyaW5nIF9nX3ZhbHVlID0gV2ViQ29yZTo6U3RyaW5nOjpmcm9t
VVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0QXdlc29tZU51bGxBdHRyKF9nX3ZhbHVlKTsKKwor
fQorCitnY2hhciogCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hd2Vzb21lX3Rocm93X21ldGhv
ZCAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAo
c2VsZiwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgZ2NoYXIqICByZXMgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmF3ZXNvbWVU
aHJvd01ldGhvZCgpKTsKKyAgICByZXR1cm4gcmVzOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X2F3ZXNvbWVfdGhyb3dfbWV0aG9kIChXZWJLaXRET01UZXN0T2JqICpzZWxm
LCBnY2hhciogIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOworICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwgKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgX2dfdmFsdWUgPSBXZWJDb3Jl
OjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKKyAgICBpdGVtLT5zZXRBd2Vzb21lVGhyb3dNZXRo
b2QoX2dfdmFsdWUpOworCit9CisKK2djaGFyKiAKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F3
ZXNvbWVfbnVsbF9tZXRob2QgKFdlYktpdERPTVRlc3RPYmogKnNlbGYpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwgKHNlbGYsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFyKiAgcmVzID0gY29udmVydFRvVVRGOFN0cmlu
ZyhpdGVtLT5hd2Vzb21lTnVsbE1ldGhvZCgpKTsKKyAgICByZXR1cm4gcmVzOworCit9CisKK3Zv
aWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2F3ZXNvbWVfbnVsbF9tZXRob2QgKFdlYktpdERP
TVRlc3RPYmogKnNlbGYsIGdjaGFyKiAgdmFsdWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbCAo
c2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ19yZXR1cm5faWZfZmFpbCAodmFsdWUpOworICAgIFdlYkNvcmU6OlN0cmluZyBfZ192
YWx1ZSA9IFdlYkNvcmU6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOworICAgIGl0ZW0tPnNldEF3
ZXNvbWVOdWxsTWV0aG9kKF9nX3ZhbHVlKTsKKworfQorCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfYXR0cl93aXRoX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKIHsK
QEAgLTUwNCw2ICs1ODgsMTAgQEAgZW51bSB7CiAgICAgUFJPUF9VTlNJR05FRF9MT05HX0xPTkdf
QVRUUiwKICAgICBQUk9QX1NUUklOR19BVFRSLAogICAgIFBST1BfVEVTVF9PQkpfQVRUUiwKKyAg
ICBQUk9QX0FXRVNPTUVfVEhST1dfQVRUUiwKKyAgICBQUk9QX0FXRVNPTUVfTlVMTF9BVFRSLAor
ICAgIFBST1BfQVdFU09NRV9USFJPV19NRVRIT0QsCisgICAgUFJPUF9BV0VTT01FX05VTExfTUVU
SE9ELAogICAgIFBST1BfQVRUUl9XSVRIX0VYQ0VQVElPTiwKICAgICBQUk9QX0FUVFJfV0lUSF9T
RVRURVJfRVhDRVBUSU9OLAogICAgIFBST1BfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJT04sCkBA
IC01NDgsNiArNjM2LDI2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uCiAgICAgICAgICBjb3Jl
U2VsZi0+c2V0U3RyaW5nQXR0cihXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSkpICk7CiAgICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9Q
X0FXRVNPTUVfVEhST1dfQVRUUjoKKyAgICB7CisgICAgICAgICBjb3JlU2VsZi0+c2V0QXdlc29t
ZVRocm93QXR0cihXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSkpICk7CisgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0FXRVNPTUVf
TlVMTF9BVFRSOgorICAgIHsKKyAgICAgICAgIGNvcmVTZWxmLT5zZXRBd2Vzb21lTnVsbEF0dHIo
V2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKSApOwor
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9BV0VTT01FX1RIUk9XX01FVEhP
RDoKKyAgICB7CisgICAgICAgICBjb3JlU2VsZi0+c2V0QXdlc29tZVRocm93TWV0aG9kKFdlYkNv
cmU6OlN0cmluZzo6ZnJvbVVURjgoZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSkgKTsKKyAgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfQVdFU09NRV9OVUxMX01FVEhPRDoKKyAg
ICB7CisgICAgICAgICBjb3JlU2VsZi0+c2V0QXdlc29tZU51bGxNZXRob2QoV2ViQ29yZTo6U3Ry
aW5nOjpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKSApOworICAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGNhc2UgUFJPUF9BVFRSX1dJVEhfRVhDRVBUSU9OOgogICAgIHsKICAg
ICAgICAgIGNvcmVTZWxmLT5zZXRBdHRyV2l0aEV4Y2VwdGlvbigoZ192YWx1ZV9nZXRfbG9uZyh2
YWx1ZSkpICk7CkBAIC02MjMsNiArNzMxLDI2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7
CiAgICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX0FXRVNPTUVfVEhST1dfQVRU
UjoKKyAgICB7CisgICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9V
VEY4U3RyaW5nKGNvcmVTZWxmLT5hd2Vzb21lVGhyb3dBdHRyKCkpKTsKKyAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFBST1BfQVdFU09NRV9OVUxMX0FUVFI6CisgICAgeworICAgICAg
ICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2Vs
Zi0+YXdlc29tZU51bGxBdHRyKCkpKTsKKyAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFBST1BfQVdFU09NRV9USFJPV19NRVRIT0Q6CisgICAgeworICAgICAgICAgZ192YWx1ZV90YWtl
X3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+YXdlc29tZVRocm93
TWV0aG9kKCkpKTsKKyAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfQVdFU09N
RV9OVUxMX01FVEhPRDoKKyAgICB7CisgICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVl
LCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5hd2Vzb21lTnVsbE1ldGhvZCgpKSk7Cisg
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9QX0FUVFJfV0lUSF9FWENFUFRJT046
CiAgICAgewogICAgICAgICAgZ192YWx1ZV9zZXRfbG9uZyh2YWx1ZSwgY29yZVNlbGYtPmF0dHJX
aXRoRXhjZXB0aW9uKCkpOwpAQCAtNzIyLDYgKzg1MCwzNCBAQCBHX01BWFVJTlQ2NCwgLyogbWlu
ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKICAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9QX0FXRVNPTUVfVEhST1dfQVRUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImF3ZXNvbWUtdGhyb3ctYXR0ciIsIC8qIG5hbWUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3Rfb2JqX2F3ZXNvbWUtdGhyb3ctYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZWFkLXdyaXRlICBnY2hhciogIFRlc3RPYmouYXdlc29tZS10aHJvdy1hdHRyIiwgLyog
bG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIi
LCAvKiBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUk9QX0FXRVNPTUVfTlVMTF9BVFRSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiYXdlc29tZS1udWxs
LWF0dHIiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial9hd2Vzb21lLW51bGwtYXR0ciIsIC8qIHNo
b3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnY2hhciogIFRlc3RPYmouYXdlc29t
ZS1udWxsLWF0dHIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0
dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklU
RSkpOworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVdFU09NRV9USFJPV19N
RVRIT0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
c3RyaW5nKCJhd2Vzb21lLXRocm93LW1ldGhvZCIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX2F3
ZXNvbWUtdGhyb3ctbWV0aG9kIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3Jp
dGUgIGdjaGFyKiAgVGVzdE9iai5hd2Vzb21lLXRocm93LW1ldGhvZCIsIC8qIGxvbmdlciAtIGNv
dWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgLyogZGVmYXVs
dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9BV0VTT01FX05VTExfTUVUSE9ELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiYXdlc29tZS1udWxsLW1ldGhvZCIs
IC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRlc3Rfb2JqX2F3ZXNvbWUtbnVsbC1tZXRob2QiLCAvKiBzaG9ydCBk
ZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgZ2NoYXIqICBUZXN0T2JqLmF3ZXNvbWUtbnVs
bC1tZXRob2QiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZm
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVRUUl9XSVRIX0VYQ0VQVElP
TiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19sb25n
KCJhdHRyLXdpdGgtZXhjZXB0aW9uIiwgLyogbmFtZSAqLwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfYXR0ci13aXRo
LWV4Y2VwdGlvbiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4
IGU1ZTc2OWYxOGU2NDFhNTgzZjc0ZWQyYzJlOWNhODFkY2Q4NTlhOGMuLmNlY2MxZDI1ODY1YzRl
MmM2Nzg5YTY0ZmI1ZWZkZTRiNjJjMTI3ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC0xNTEsNiAr
MTUxLDMwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Rlc3Rfb2JqX2F0dHIgKFdlYktpdERP
TVRlc3RPYmogKnNlbGYpOwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF90ZXN0X29ial9hdHRyIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBXZWJLaXRET01UZXN0T2Jq
KiAgdmFsdWUpOwogCitXRUJLSVRfQVBJIGdjaGFyKiAKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X2F3ZXNvbWVfdGhyb3dfYXR0ciAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZik7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXdlc29tZV90aHJvd19hdHRyIChXZWJL
aXRET01UZXN0T2JqICpzZWxmLCBnY2hhciogIHZhbHVlKTsKKworV0VCS0lUX0FQSSBnY2hhciog
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hd2Vzb21lX251bGxfYXR0ciAoV2ViS2l0RE9NVGVz
dE9iaiAqc2VsZik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRf
YXdlc29tZV9udWxsX2F0dHIgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdjaGFyKiAgdmFsdWUp
OworCitXRUJLSVRfQVBJIGdjaGFyKiAKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F3ZXNvbWVf
dGhyb3dfbWV0aG9kIChXZWJLaXRET01UZXN0T2JqICpzZWxmKTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hd2Vzb21lX3Rocm93X21ldGhvZCAoV2ViS2l0RE9N
VGVzdE9iaiAqc2VsZiwgZ2NoYXIqICB2YWx1ZSk7CisKK1dFQktJVF9BUEkgZ2NoYXIqIAord2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfYXdlc29tZV9udWxsX21ldGhvZCAoV2ViS2l0RE9NVGVzdE9i
aiAqc2VsZik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXdl
c29tZV9udWxsX21ldGhvZCAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2NoYXIqICB2YWx1ZSk7
CisKIFdFQktJVF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9l
eGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNlbGYpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBkZDA4ZWMwMzQ5YjkwYWVlNTQ0
OGUyNDk0NDJlNGZlYzk3ODIxYmJlLi5hZjEyM2UzZGZiZjE3OGRmNDVmNWQwZDM2N2NhYjA5M2Vi
MWZmMjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1Rlc3RP
YmopOwogI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKQogI2VuZGlmCiAKLXN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1sxNF0gPQorc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzWzE4XSA9CiB7CiAgICAg
eyAicmVhZE9ubHlJbnRBdHRyIiwgRG9udERlbGV0ZXxSZWFkT25seSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpSZWFkT25seUludEF0
dHIpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJyZWFkT25seVN0
cmluZ0F0dHIiLCBEb250RGVsZXRlfFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ciksIChp
bnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSB9LApAQCAtNTUsNiArNTUsMTAgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzWzE0XSA9CiAgICAgeyAi
dW5zaWduZWRMb25nTG9uZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyIFRIVU5LX0dFTkVS
QVRPUigwKSB9LAogICAgIHsgInN0cmluZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0dHIp
LCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU3RyaW5nQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkgfSwK
ICAgICB7ICJ0ZXN0T2JqQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVGVzdE9iakF0dHIpLCAoaW50cHRy
X3Qpc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIgVEhVTktfR0VORVJBVE9SKDApIH0sCisgICAgeyAi
YXdlc29tZVRocm93QXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQXdlc29tZVRocm93QXR0ciksIChpbnRw
dHJfdClzZXRKU1Rlc3RPYmpBd2Vzb21lVGhyb3dBdHRyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAor
ICAgIHsgImF3ZXNvbWVOdWxsQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQXdlc29tZU51bGxBdHRyKSwg
KGludHB0cl90KXNldEpTVGVzdE9iakF3ZXNvbWVOdWxsQXR0ciBUSFVOS19HRU5FUkFUT1IoMCkg
fSwKKyAgICB7ICJhd2Vzb21lVGhyb3dNZXRob2QiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakF3ZXNvbWVUaHJv
d01ldGhvZCksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpBd2Vzb21lVGhyb3dNZXRob2QgVEhVTktf
R0VORVJBVE9SKDApIH0sCisgICAgeyAiYXdlc29tZU51bGxNZXRob2QiLCBEb250RGVsZXRlLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
akF3ZXNvbWVOdWxsTWV0aG9kKSwgKGludHB0cl90KXNldEpTVGVzdE9iakF3ZXNvbWVOdWxsTWV0
aG9kIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgImF0dHJXaXRoRXhjZXB0aW9uIiwgRG9u
dERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpBdHRyV2l0aEV4Y2VwdGlvbiksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpBdHRy
V2l0aEV4Y2VwdGlvbiBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pLCAoaW50
cHRyX3Qpc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24gVEhVTktfR0VORVJBVE9S
KDApIH0sCiAgICAgeyAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBEb250RGVsZXRlLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKSwgKGludHB0cl90KXNldEpTVGVzdE9iakF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIFRIVU5LX0dFTkVSQVRPUigwKSB9LApAQCAtNjgsNyArNzIsNyBAQCBzdGF0
aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPQogI2lmIEVO
QUJMRShQRVJGRUNUX0hBU0hfU0laRSkKICAgICB7IDEyNywgSlNUZXN0T2JqVGFibGVWYWx1ZXMs
IDAgfTsKICNlbHNlCi0gICAgeyAzNCwgMzEsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07Cisg
ICAgeyA2NywgNjMsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CiAjZW5kaWYKIAogLyogSGFz
aCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KQEAgLTI4NSw2ICsyODksNTAgQEAgSlNWYWx1ZSBq
c1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitKU1ZhbHVlIGpzVGVzdE9i
akF3ZXNvbWVUaHJvd0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25z
dCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIGlmICghY2FzdGVkVGhpcy0+
Y2FuQmVBd2Vzb21lKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmcoZXhlYywgaW1wLT5hd2Vzb21lVGhyb3dBdHRyKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0pTVmFsdWUganNUZXN0T2JqQXdlc29tZU51bGxBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKKyAgICBpZiAoIWNhc3RlZFRoaXMtPmNhbkJlQXdlc29tZSgpKQorICAgICAgICByZXR1cm4g
anNOdWxsKCk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoqIGltcCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmcoZXhlYywgaW1wLT5hd2Vzb21lTnVsbEF0dHIoKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworSlNWYWx1ZSBqc1Rlc3RPYmpBd2Vzb21lVGhyb3dNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChz
bG90QmFzZSkpOworICAgIGlmICghY2FzdGVkVGhpcy0+Y2FuQmVBd2Vzb21lKCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wLT5hd2Vz
b21lVGhyb3dNZXRob2QoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZSBqc1Rl
c3RPYmpBd2Vzb21lTnVsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgaWYgKCFjYXN0ZWRU
aGlzLT5jYW5CZUF3ZXNvbWUoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMs
IGltcC0+YXdlc29tZU51bGxNZXRob2QoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSlNW
YWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0zMzAs
NjMgKzM3OCwxMDAgQEAgdm9pZCBKU1Rlc3RPYmo6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWwKIAogdm9pZCBzZXRKU1Rlc3RP
YmpJbnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc09iamVjdCk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1w
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaW1wLT5z
ZXRJbnRBdHRyKHZhbHVlLnRvSW50MzIoZXhlYykpOwogfQogCiB2b2lkIHNldEpTVGVzdE9iakxv
bmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQogewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KHRoaXNPYmplY3QpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+
c2V0TG9uZ0xvbmdBdHRyKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmFsdWUudG9JbnRlZ2VyKGV4
ZWMpKSk7CiB9CiAKIHZvaWQgc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2Jq
ZWN0KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
c09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbXAtPnNldFVuc2lnbmVkTG9uZ0xv
bmdBdHRyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odmFsdWUudG9JbnRlZ2VyKGV4
ZWMpKSk7CiB9CiAKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwotICAg
IFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBs
KCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+c2V0U3RyaW5nQXR0cih1c3RyaW5nVG9TdHJp
bmcodmFsdWUudG9TdHJpbmcoZXhlYykpKTsKIH0KIAogdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2Jq
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+c2V0VGVz
dE9iakF0dHIodG9UZXN0T2JqKHZhbHVlKSk7CiB9CiAKK3ZvaWQgc2V0SlNUZXN0T2JqQXdlc29t
ZVRocm93QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KHRoaXNPYmplY3QpOworICAgIGlmICghY2FzdGVkVGhpcy0+Y2FuQmVBd2Vzb21lKCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgVGVzdE9i
aiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAg
aW1wLT5zZXRBd2Vzb21lVGhyb3dBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhl
eGVjKSkpOworfQorCit2b2lkIHNldEpTVGVzdE9iakF3ZXNvbWVOdWxsQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwor
ICAgIGlmICghY2FzdGVkVGhpcy0+Y2FuQmVBd2Vzb21lKCkpCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBpbXAtPnNldEF3ZXNvbWVOdWxsQXR0cih1c3RyaW5nVG9TdHJpbmco
dmFsdWUudG9TdHJpbmcoZXhlYykpKTsKK30KKwordm9pZCBzZXRKU1Rlc3RPYmpBd2Vzb21lVGhy
b3dNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RP
YmoqPih0aGlzT2JqZWN0KTsKKyAgICBpZiAoIWNhc3RlZFRoaXMtPmNhbkJlQXdlc29tZSgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgIFRlc3RPYmoq
IGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlt
cC0+c2V0QXdlc29tZVRocm93TWV0aG9kKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhl
eGVjKSkpOworfQorCit2b2lkIHNldEpTVGVzdE9iakF3ZXNvbWVOdWxsTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7
CisgICAgaWYgKCFjYXN0ZWRUaGlzLT5jYW5CZUF3ZXNvbWUoKSkKKyAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIGltcC0+c2V0QXdlc29tZU51bGxNZXRob2QodXN0cmluZ1RvU3Ry
aW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldp
dGhFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbXAt
PnNldEF0dHJXaXRoRXhjZXB0aW9uKHZhbHVlLnRvSW50MzIoZXhlYykpOwogfQogCiB2b2lkIHNl
dEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7Ci0gICAgVGVzdE9i
aiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7Cisg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09i
amVjdCk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgaW1wLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2YWx1ZS50
b0ludDMyKGV4ZWMpKTsKIH0KIAogdm9pZCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGltcC0+c2V0QXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24odmFsdWUudG9JbnQzMihleGVjKSk7CiB9CiAKIHZvaWQgc2V0
SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmpl
Y3QpLT5zZXRDdXN0b21BdHRyKGV4ZWMsIHZhbHVlKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBjYXN0ZWRUaGlz
LT5zZXRDdXN0b21BdHRyKGV4ZWMsIHZhbHVlKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3RPYmo6Omdl
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKQEAgLTM5OSw4ICs0ODQsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNPYgogICAgIFVOVVNF
RF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoq
IGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCiAgICAg
aW1wLT52b2lkTWV0aG9kKCk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00MTEsOCAr
NDk2LDggQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Vm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogZXgKICAgICBVTlVTRURfUEFSQU0oYXJncyk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09i
ai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpbnQgaW50QXJnID0gYXJn
cy5hdCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnID0gdXN0cmlu
Z1RvU3RyaW5nKGFyZ3MuYXQoMSkudG9TdHJpbmcoZXhlYykpOwogICAgIFRlc3RPYmoqIG9iakFy
ZyA9IHRvVGVzdE9iaihhcmdzLmF0KDIpKTsKQEAgLTQyNiw4ICs1MTEsOCBAQCBKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2QoRXhlY1N0YXRl
KiBleGVjLCBKU09iagogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRo
aXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwogCiAKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
ZXhlYywgaW1wLT5pbnRNZXRob2QoKSk7CkBAIC00MzksOCArNTI0LDggQEAgSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW50TWV0aG9kV2l0aEFyZ3MoRXhl
Y1N0YXRlKiBleGUKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlz
VmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTsKICAgICBpbnQgaW50QXJnID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMp
OwogICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnID0gdXN0cmluZ1RvU3RyaW5nKGFyZ3MuYXQoMSku
dG9TdHJpbmcoZXhlYykpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IHRvVGVzdE9iaihhcmdzLmF0
KDIpKTsKQEAgLTQ1NSwxMSArNTQwLDExIEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAg
VU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RP
Ymo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAK
IAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAtPm9iak1ldGhvZCgpKSk7CisgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGltcC0+b2JqTWV0aG9kKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC00NjgsMTQgKzU1MywxNCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4ZQogICAgIFVOVVNFRF9Q
QVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2lu
Zm8pKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGludCBp
bnRBcmcgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHJB
cmcgPSB1c3RyaW5nVG9TdHJpbmcoYXJncy5hdCgxKS50b1N0cmluZyhleGVjKSk7CiAgICAgVGVz
dE9iaiogb2JqQXJnID0gdG9UZXN0T2JqKGFyZ3MuYXQoMikpOwogCiAKLSAgICBKU0M6OkpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wLT5vYmpNZXRob2RXaXRoQXJncyhpbnRBcmcsIHN0ckFyZywgb2JqQXJnKSkp
OworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAtPm9iak1ldGhvZFdpdGhBcmdzKGludEFyZywgc3Ry
QXJnLCBvYmpBcmcpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDg0LDggKzU2OSw4
IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0g
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmlt
cGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKICAgICBpbXAtPm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwpAQCAtNDk4LDggKzU4Myw4IEBA
IEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
T2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAg
cmV0dXJuIGNhc3RlZFRoaXNPYmotPmN1c3RvbU1ldGhvZChleGVjLCBhcmdzKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kKGV4ZWMsIGFyZ3Mp
OwogfQogCiBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
dXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCkBAIC01MDcsOCArNTkyLDggQEAgSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0YXRlKgogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIHJldHVybiBj
YXN0ZWRUaGlzT2JqLT5jdXN0b21NZXRob2RXaXRoQXJncyhleGVjLCBhcmdzKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4gY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoZXhl
YywgYXJncyk7CiB9CiAKIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpAQCAtNTE2LDggKzYwMSw4
IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bUFyZ3NBbmRFeGNlcHRpb24oRXhlY1N0YXRlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0g
ICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmlt
cGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCBhcmdzLCAxKTsKICAgICBsb2cq
IGludEFyZyA9IHRvbG9nKGFyZ3MuYXQoMCkpOwpAQCAtNTMyLDEyICs2MTcsMTIgQEAgSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUqIGV4ZWMKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBz
dGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2Jq
KiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gYXJncy5hdCgxKTsK
ICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgIGltcC0+YWRkRXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNTdHJpbmcoYXJn
cy5hdCgwKS50b1N0cmluZyhleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0
KGxpc3RlbmVyKSwgY2FzdGVkVGhpc09iaiwgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSksIGFy
Z3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXAtPmFkZEV2ZW50TGlzdGVuZXIodXN0
cmluZ1RvQXRvbWljU3RyaW5nKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpLCBKU0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGZhbHNlLCBjdXJy
ZW50V29ybGQoZXhlYykpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTU0NiwxMiArNjMxLDEyIEBAIEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nh
c3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGFyZ3MuYXQoMSk7CiAgICAgaWYg
KCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBpbXAtPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYykpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIGNhc3RlZFRoaXNPYmosIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLmdldCgpLCBh
cmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wLT5yZW1vdmVFdmVudExpc3RlbmVy
KHVzdHJpbmdUb0F0b21pY1N0cmluZyhhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKSwgSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBmYWxzZSwg
Y3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC01NjAsOCArNjQ1LDggQEAgSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFt
ZShFeGVjU3RhdGUqIGV4ZWMKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBz
dGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2Jq
KiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWlj
RnJhbWUoZXhlYyk7CiAgICAgaWYgKCFkeW5hbWljRnJhbWUpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNTc1LDggKzY2MCw4IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcoRXhlY1N0YXRlCiAg
ICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rl
c3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJv
cik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAg
VGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlm
ICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTU5MSw4
ICs2NzYsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoRQogICAgIFVOVVNFRF9QQVJBTShhcmdz
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
T2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIEZyYW1lKiBkeW5hbWlj
RnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWR5bmFtaWNGcmFtZSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC02MTUsOCArNzAwLDggQEAgSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFu
ZFVzZXJHZXN0dXJlKEUKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2Fz
dGVkVGhpcy0+aW1wbCgpKTsKICAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJh
bWUoZXhlYyk7CiAgICAgaWYgKCFkeW5hbWljRnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpAQCAtNjMxLDggKzcxNiw4IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTCiAgICAg
VU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RP
Ymo6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAg
ICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlmICgh
ZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTY1NSw4ICs3
NDAsOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTdGF0ZSogZQogICAgIFVOVVNFRF9QQVJBTShhcmdzKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQogICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2Jq
LT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCiAgICAgaW1wLT53aXRoU2NyaXB0
U3RhdGVWb2lkKGV4ZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNjY3LDExICs3
NTIsMTEgQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdGF0ZSogZXgKICAgICBVTlVTRURfUEFSQU0oYXJncyk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09i
ai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKIAogCi0gICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcC0+d2l0aFNjcmlwdFN0YXRlT2JqKGV4ZWMpKSk7CisgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcC0+d2l0aFNjcmlwdFN0YXRlT2JqKGV4ZWMpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtNjgyLDggKzc2Nyw4IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oRXhlCiAgICAgVU5V
U0VEX1BBUkFNKGFyZ3MpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6
OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0g
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
c3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9i
aiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBpbXAtPndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNl
cHRpb24oZXhlYywgZWMpOwpAQCAtNjk2LDEyICs3ODEsMTIgQEAgSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9u
KEV4ZWMKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
VHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogCi0gICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcC0+d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGV4ZWMsIGVjKSkpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXAtPndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihleGVjLCBl
YykpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC03MTMsOCArNzk4
LDggQEAgSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSoKICAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
LSAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+
aW1wbCgpKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKIAogICAgIGludCBhcmdzQ291bnQgPSBh
cmdzLnNpemUoKTsKICAgICBpZiAoYXJnc0NvdW50IDwgMSkgewpAQCAtNzMzLDggKzgxOCw4IEBA
IEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCiAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
T2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAg
VGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwo
KSk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaW50IG5vbk9wdCA9IGFyZ3MuYXQoMCku
dG9JbnQzMihleGVjKTsKIAogICAgIGludCBhcmdzQ291bnQgPSBhcmdzLnNpemUoKTsKQEAgLTc1
NCw4ICs4MzksOCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcAogICAgIFVOVVNFRF9QQVJBTShh
cmdzKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQog
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzT2JqLT5pbXBsKCkpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGludCBub25PcHQg
PSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CiAKICAgICBpbnQgYXJnc0NvdW50ID0gYXJncy5z
aXplKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmlu
ZGV4IDE1MGUwYmRkODY1N2RmNGM2ZWEzNmY1MzlhYzA3MTE4Y2YzM2JiN2MuLjQwMjVhNDAyMDdj
MWQxY2YwNDgxZTFkMjhmNWM4MDdmZTIxNmMzN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0xMjQsNiArMTI0LDE0IEBAIEpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50CiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpU
ZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJik7CiB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqQXdl
c29tZVRocm93QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9iakF3ZXNvbWVUaHJvd0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpBd2Vzb21lTnVsbEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rlc3RPYmpBd2Vzb21lTnVsbEF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpBd2Vzb21lVGhyb3dNZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rlc3RPYmpBd2Vzb21lVGhy
b3dNZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsK
K0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpBd2Vzb21lTnVsbE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9i
akF3ZXNvbWVOdWxsTWV0aG9kKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6
SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwogdm9pZCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
T2JqLmgKaW5kZXggOWNiNjEyMWRjODFiMWNmMTQ1YTNkZWViMTIzOTlmYzUzNDMyMjVkNS4uMDFh
ZmM5MjVhY2JlZGNiZTUyMjNmMDBiYWQxYjEwZjgxNjBjOGE5MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTQ3LDYgKzQ3LDE0IEBA
CiAtICh2b2lkKXNldFN0cmluZ0F0dHI6KE5TU3RyaW5nICopbmV3U3RyaW5nQXR0cjsKIC0gKERP
TVRlc3RPYmogKil0ZXN0T2JqQXR0cjsKIC0gKHZvaWQpc2V0VGVzdE9iakF0dHI6KERPTVRlc3RP
YmogKiluZXdUZXN0T2JqQXR0cjsKKy0gKE5TU3RyaW5nICopYXdlc29tZVRocm93QXR0cjsKKy0g
KHZvaWQpc2V0QXdlc29tZVRocm93QXR0cjooTlNTdHJpbmcgKiluZXdBd2Vzb21lVGhyb3dBdHRy
OworLSAoTlNTdHJpbmcgKilhd2Vzb21lTnVsbEF0dHI7CistICh2b2lkKXNldEF3ZXNvbWVOdWxs
QXR0cjooTlNTdHJpbmcgKiluZXdBd2Vzb21lTnVsbEF0dHI7CistIChOU1N0cmluZyAqKWF3ZXNv
bWVUaHJvd01ldGhvZDsKKy0gKHZvaWQpc2V0QXdlc29tZVRocm93TWV0aG9kOihOU1N0cmluZyAq
KW5ld0F3ZXNvbWVUaHJvd01ldGhvZDsKKy0gKE5TU3RyaW5nICopYXdlc29tZU51bGxNZXRob2Q7
CistICh2b2lkKXNldEF3ZXNvbWVOdWxsTWV0aG9kOihOU1N0cmluZyAqKW5ld0F3ZXNvbWVOdWxs
TWV0aG9kOwogLSAoaW50KWF0dHJXaXRoRXhjZXB0aW9uOwogLSAodm9pZClzZXRBdHRyV2l0aEV4
Y2VwdGlvbjooaW50KW5ld0F0dHJXaXRoRXhjZXB0aW9uOwogLSAoaW50KWF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCmluZGV4IGM2NTNkN2RlNDk2YTRkZGU0NzRiYzIyZDJjYWU2MjYzNTkzOWNmZGMu
LjUwZmI5NWYwYjIzMTdiYjY4NzA5MjBiYTM5ZTViOTgzNGIzZTNjN2UgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTEzNiw2ICsx
MzYsNDYgQEAKICAgICBJTVBMLT5zZXRUZXN0T2JqQXR0cihjb3JlKG5ld1Rlc3RPYmpBdHRyKSk7
CiB9CiAKKy0gKE5TU3RyaW5nICopYXdlc29tZVRocm93QXR0cgoreworICAgIHJldHVybiBJTVBM
LT5hd2Vzb21lVGhyb3dBdHRyKCk7Cit9CisKKy0gKHZvaWQpc2V0QXdlc29tZVRocm93QXR0cjoo
TlNTdHJpbmcgKiluZXdBd2Vzb21lVGhyb3dBdHRyCit7CisgICAgSU1QTC0+c2V0QXdlc29tZVRo
cm93QXR0cihuZXdBd2Vzb21lVGhyb3dBdHRyKTsKK30KKworLSAoTlNTdHJpbmcgKilhd2Vzb21l
TnVsbEF0dHIKK3sKKyAgICByZXR1cm4gSU1QTC0+YXdlc29tZU51bGxBdHRyKCk7Cit9CisKKy0g
KHZvaWQpc2V0QXdlc29tZU51bGxBdHRyOihOU1N0cmluZyAqKW5ld0F3ZXNvbWVOdWxsQXR0cgor
eworICAgIElNUEwtPnNldEF3ZXNvbWVOdWxsQXR0cihuZXdBd2Vzb21lTnVsbEF0dHIpOworfQor
CistIChOU1N0cmluZyAqKWF3ZXNvbWVUaHJvd01ldGhvZAoreworICAgIHJldHVybiBJTVBMLT5h
d2Vzb21lVGhyb3dNZXRob2QoKTsKK30KKworLSAodm9pZClzZXRBd2Vzb21lVGhyb3dNZXRob2Q6
KE5TU3RyaW5nICopbmV3QXdlc29tZVRocm93TWV0aG9kCit7CisgICAgSU1QTC0+c2V0QXdlc29t
ZVRocm93TWV0aG9kKG5ld0F3ZXNvbWVUaHJvd01ldGhvZCk7Cit9CisKKy0gKE5TU3RyaW5nICop
YXdlc29tZU51bGxNZXRob2QKK3sKKyAgICByZXR1cm4gSU1QTC0+YXdlc29tZU51bGxNZXRob2Qo
KTsKK30KKworLSAodm9pZClzZXRBd2Vzb21lTnVsbE1ldGhvZDooTlNTdHJpbmcgKiluZXdBd2Vz
b21lTnVsbE1ldGhvZAoreworICAgIElNUEwtPnNldEF3ZXNvbWVOdWxsTWV0aG9kKG5ld0F3ZXNv
bWVOdWxsTWV0aG9kKTsKK30KKwogLSAoaW50KWF0dHJXaXRoRXhjZXB0aW9uCiB7CiAgICAgcmV0
dXJuIElNUEwtPmF0dHJXaXRoRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDkzMmU4YTdmZmI4NTIxNWMzZjBkODA1NjVmZjJkZjBkMDlk
MGJiZWEuLmFjMzEzMDBjMzBkODhiMTc3YmY2NGE4ZGI5YzQ2ODVhN2JkYzg3MDkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zOSw2ICszOSwxMCBAQCBt
b2R1bGUgdGVzdCB7CiAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAg
dW5zaWduZWRMb25nTG9uZ0F0dHI7CiAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAg
ICAgICAgICAgc3RyaW5nQXR0cjsKICAgICAgICAgYXR0cmlidXRlIFRlc3RPYmogICAgICAgICAg
ICAgICAgICB0ZXN0T2JqQXR0cjsKKyAgICAgICAgYXR0cmlidXRlIFtUaHJvd0lmTm90PWNhbkJl
QXdlc29tZV0gRE9NU3RyaW5nIGF3ZXNvbWVUaHJvd0F0dHI7CisgICAgICAgIGF0dHJpYnV0ZSBb
TnVsbElmTm90PWNhbkJlQXdlc29tZV0gRE9NU3RyaW5nIGF3ZXNvbWVOdWxsQXR0cjsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUaHJvd0lmTm90PWNhbkJlQXdlc29tZV0gRE9NU3RyaW5n
IGF3ZXNvbWVSZWFkb25seVRocm93QXR0cjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtO
dWxsSWZOb3Q9Y2FuQmVBd2Vzb21lXSBET01TdHJpbmcgYXdlc29tZVJlYWRvbmx5TnVsbEF0dHI7
CiAKICAgICAgICAgLy8gTWV0aG9kcwogICAgICAgICB2b2lkICAgIHZvaWRNZXRob2QoKTsKQEAg
LTQ3LDYgKzUxLDggQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBsb25nICAgIGludE1ldGhvZFdp
dGhBcmdzKGluIGxvbmcgaW50QXJnLCBpbiBET01TdHJpbmcgc3RyQXJnLCBpbiBUZXN0T2JqIG9i
akFyZyk7CiAgICAgICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7CiAgICAgICAgIFRlc3RPYmogb2Jq
TWV0aG9kV2l0aEFyZ3MoaW4gbG9uZyBpbnRBcmcsIGluIERPTVN0cmluZyBzdHJBcmcsIGluIFRl
c3RPYmogb2JqQXJnKTsKKyAgICAgICAgYXR0cmlidXRlIFtUaHJvd0lmTm90PWNhbkJlQXdlc29t
ZV0gRE9NU3RyaW5nIGF3ZXNvbWVUaHJvd01ldGhvZChpbiBsb25nIGludEFyZywgaW4gRE9NU3Ry
aW5nIHN0ckFyZywgaW4gVGVzdE9iaiBvYmpBcmcpOworICAgICAgICBhdHRyaWJ1dGUgW051bGxJ
Zk5vdD1jYW5CZUF3ZXNvbWVdIERPTVN0cmluZyBhd2Vzb21lTnVsbE1ldGhvZChpbiBsb25nIGlu
dEFyZywgaW4gRE9NU3RyaW5nIHN0ckFyZywgaW4gVGVzdE9iaiBvYmpBcmcpOwogCiAgICAgICAg
IC8vIEV4Y2VwdGlvbnMKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoRXhjZXB0aW9uKCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcAppbmRleCBhYzcyYTNjM2U1NjQ0NTQyMDBjYzAwZDY1MjQ2MGFlZThjZWY3
NDUwLi45MGM4YmFkYmQwMDgzODVkMGU4OWNhZjlmZmIwNWQ0NGU1Mjc5MTRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTE1MCw2ICsx
NTAsNzAgQEAgc3RhdGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHUKICAgICByZXR1cm47CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXdlc29tZVRocm93QXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5hd2Vzb21lVGhyb3dBdHRyLl9nZXQiKTsKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPmF3ZXNvbWVUaHJvd0F0dHIoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGF3ZXNvbWVUaHJvd0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmF3ZXNvbWVUaHJvd0F0dHIuX3NldCIpOwor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgVjhQYXJhbWV0ZXI8PiB2ID0gdmFsdWU7CisgICAgaW1wLT5zZXRBd2Vzb21lVGhyb3dBdHRy
KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhd2Vz
b21lTnVsbEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouYXdl
c29tZU51bGxBdHRyLl9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF3ZXNvbWVOdWxs
QXR0cigpKTsKK30KKworc3RhdGljIHZvaWQgYXdlc29tZU51bGxBdHRyQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5h
d2Vzb21lTnVsbEF0dHIuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhQYXJhbWV0ZXI8PiB2ID0gdmFsdWU7CisgICAg
aW1wLT5zZXRBd2Vzb21lTnVsbEF0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGF3ZXNvbWVUaHJvd01ldGhvZEF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5hd2Vzb21lVGhyb3dNZXRob2QuX2dldCIpOworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIHY4U3RyaW5nKGltcC0+YXdlc29tZVRocm93TWV0aG9kKCkpOworfQorCitzdGF0aWMgdm9p
ZCBhd2Vzb21lVGhyb3dNZXRob2RBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmF3ZXNvbWVUaHJvd01ldGhvZC5fc2V0
Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICBWOFBhcmFtZXRlcjw+IHYgPSB2YWx1ZTsKKyAgICBpbXAtPnNldEF3ZXNvbWVUaHJv
d01ldGhvZCh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXdlc29tZU51bGxNZXRob2RBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouYXdlc29tZU51bGxNZXRob2QuX2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+
YXdlc29tZU51bGxNZXRob2QoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGF3ZXNvbWVOdWxsTWV0aG9k
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5hd2Vzb21lTnVsbE1ldGhvZC5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFBhcmFtZXRlcjw+
IHYgPSB2YWx1ZTsKKyAgICBpbXAtPnNldEF3ZXNvbWVOdWxsTWV0aG9kKHYpOworICAgIHJldHVy
bjsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEV4Y2VwdGlvbkF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5hdHRyV2l0aEV4Y2VwdGlv
bi5fZ2V0Iik7CkBAIC01NjIsNiArNjI2LDE0IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmli
dXRlIFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsic3RyaW5nQXR0ciIsIFRlc3RPYmpJbnRlcm5h
bDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAndGVzdE9iakF0dHInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7InRlc3RPYmpBdHRyIiwgVGVzdE9i
akludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F3ZXNv
bWVUaHJvd0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVGhyb3dJZk5vdCcpCisg
ICAgeyJhd2Vzb21lVGhyb3dBdHRyIiwgVGVzdE9iakludGVybmFsOjphd2Vzb21lVGhyb3dBdHRy
QXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjphd2Vzb21lVGhyb3dBdHRyQXR0clNldHRlciwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdhd2Vzb21lTnVsbEF0dHInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnTnVsbElmTm90JykKKyAgICB7ImF3ZXNvbWVOdWxsQXR0
ciIsIFRlc3RPYmpJbnRlcm5hbDo6YXdlc29tZU51bGxBdHRyQXR0ckdldHRlciwgVGVzdE9iaklu
dGVybmFsOjphd2Vzb21lTnVsbEF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAv
LyBBdHRyaWJ1dGUgJ2F3ZXNvbWVUaHJvd01ldGhvZCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdUaHJvd0lmTm90JykKKyAgICB7ImF3ZXNvbWVUaHJvd01ldGhvZCIsIFRlc3RPYmpJbnRl
cm5hbDo6YXdlc29tZVRocm93TWV0aG9kQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjphd2Vz
b21lVGhyb3dNZXRob2RBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1
dGUgJ2F3ZXNvbWVOdWxsTWV0aG9kJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ051bGxJ
Zk5vdCcpCisgICAgeyJhd2Vzb21lTnVsbE1ldGhvZCIsIFRlc3RPYmpJbnRlcm5hbDo6YXdlc29t
ZU51bGxNZXRob2RBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmF3ZXNvbWVOdWxsTWV0aG9k
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aEV4
Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiYXR0cldpdGhF
eGNlcHRpb24iLCBUZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoRXhjZXB0aW9uQXR0ckdldHRlciwg
VGVzdE9iakludGVybmFsOjphdHRyV2l0aEV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRleCA0
NTYzMTIwZDllZjUwMzc3NjM5Yjk2OGFiOTI4ODllYWIzN2NkZWNmLi42Mzc5ODhiNWE3MmM4YWU4
NzQyYTQ2ODA1NmY2ODg1YmNhZDY5NzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBA
IC04NCw5ICs4NCw5IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyBXaW5JRSAmIEZpcmVG
b3ggZXh0ZW5zaW9uOgogCi0gICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBsb25n
IHNlbGVjdGlvblN0YXJ0OwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gbG9u
ZyBzZWxlY3Rpb25FbmQ7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2Uo
aW4gbG9uZyBzdGFydCwgaW4gbG9uZyBlbmQpOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
W1ByZWNvbmRpdGlvbj1jYW5IYXZlU2VsZWN0aW9uLCBUaHJvd09uRmFpbGVkUHJlY29uZGl0aW9u
XSBsb25nIHNlbGVjdGlvblN0YXJ0OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1ByZWNv
bmRpdGlvbj1jYW5IYXZlU2VsZWN0aW9uLCBUaHJvd09uRmFpbGVkUHJlY29uZGl0aW9uXSBsb25n
IHNlbGVjdGlvbkVuZDsKKyAgICAgICAgW1ByZWNvbmRpdGlvbj1jYW5IYXZlU2VsZWN0aW9uLCBU
aHJvd09uRmFpbGVkUHJlY29uZGl0aW9uXSB2b2lkIHNldFNlbGVjdGlvblJhbmdlKGluIGxvbmcg
c3RhcnQsIGluIGxvbmcgZW5kKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0Mp
CiAgICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9Db29yZGluYXRlcy5pZGwgYi9XZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaWRsCmluZGV4
IDVhNWExNDE5Y2UxN2VjYzJmN2Y3MjNhMzRhYmQyZGM3NjZhN2EyM2MuLjgwMzE5NGQ5NzAwYTAy
ZmYxYzE5YzA1NDA0ZmFhYTlmZTMzOWEwZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db29y
ZGluYXRlcy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0Nvb3JkaW5hdGVzLmlkbApAQCAtMjgsMTAg
KzI4LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICBpbnRlcmZhY2UgW09taXRDb25zdHJ1Y3Rvcl0g
Q29vcmRpbmF0ZXMgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGxhdGl0dWRl
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGxvbmdpdHVkZTsKLSAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21dIGRvdWJsZSBhbHRpdHVkZTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtOdWxsSWZOb3Q9Y2FuUHJvdmlkZUFsdGl0dWRlXSBkb3VibGUgYWx0
aXR1ZGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWNjdXJhY3k7Ci0gICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21dIGRvdWJsZSBoZWFkaW5nOwotICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbV0gZG91YmxlIHNwZWVkOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgW051bGxJZk5vdD1jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeV0g
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbTnVs
bElmTm90PWNhblByb3ZpZGVIZWFkaW5nXSBkb3VibGUgaGVhZGluZzsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtOdWxsSWZOb3Q9Y2FuUHJvdmlkZVNwZWVkXSBkb3VibGUgc3BlZWQ7CiAg
ICAgfTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>