<?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>98997</bug_id>
          
          <creation_ts>2012-10-10 23:44:08 -0700</creation_ts>
          <short_desc>IndexingType should not have a bit for each type</short_desc>
          <delta_ts>2012-10-14 15:06:38 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98606</blocked>
    
    <blocked>99261</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739646</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-10 23:44:08 -0700</bug_when>
    <thetext>Right now we test if we have a particular IndexingType by testing a bit.  That&apos;s just silly, since it constrains the number of IndexingTypes we could have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741541</commentid>
    <comment_count>1</comment_count>
      <attachid>168572</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-13 19:45:34 -0700</bug_when>
    <thetext>Created attachment 168572
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741548</commentid>
    <comment_count>2</comment_count>
      <attachid>168575</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-13 22:27:09 -0700</bug_when>
    <thetext>Created attachment 168575
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741616</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 15:06:38 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131276</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168572</attachid>
            <date>2012-10-13 19:45:34 -0700</date>
            <delta_ts>2012-10-13 22:27:09 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>indexingtype_1.patch</filename>
            <type>text/plain</type>
            <size>40951</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEyLTEwLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5kZXhpbmdUeXBlIHNob3VsZCBub3QgaGF2ZSBhIGJpdCBmb3IgZWFjaCB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODk5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3Mu
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdDo6anVtcHMpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxlQnJhbmNoMzIpOgorICAg
ICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVBbHJl
YWR5Q2hlY2tlZCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjpERkc6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVj
ayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlv
bkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6anVtcFNsb3dGb3JV
bndhbnRlZEFycmF5TW9kZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxs
b2NhdGVKU0FycmF5KToKKyAgICAgICAgKEpTQzo6SklUOjpjaG9vc2VBcnJheU1vZGUpOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29udGlndW91c0dldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdENvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3Rv
cmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0
QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9JbmRleGluZ1R5cGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Omhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6aGFzQ29udGlndW91cyk6CisgICAgICAg
IChKU0M6Omhhc0Zhc3RBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpoYXNBcnJheVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpzaG91bGRVc2VTbG93UHV0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaDoKKyAgICAgICAgKEpTQzo6bmV3SW5kZXhpbmdUeXBl
KToKKwogMjAxMi0xMC0xMiAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgRml4IGJ1aWxkIGVycm9yIG9uIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3OSw3ICs1NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2p1bXBzLmNsZWFyKCk7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNvbnN0IEp1bXBWZWN0b3ImIGp1bXBzKCkg
eyByZXR1cm4gbV9qdW1wczsgfQorICAgICAgICBjb25zdCBKdW1wVmVjdG9yJiBqdW1wcygpIGNv
bnN0IHsgcmV0dXJuIG1fanVtcHM7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEp1bXBWZWN0
b3IgbV9qdW1wczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYg
KzI1MywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChi
cmFuY2hUZXN0MzIoY29uZCwgcmVnLCBtYXNrKSk7CiAgICAgfQorICAgIAorICAgIFBhdGNoYWJs
ZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHJlZywgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFi
bGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7CisgICAgfQogI2VuZGlmCiAKICAgICB2
b2lkIGp1bXAoTGFiZWwgdGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsMTMgKzE3MSwx
MyBAQCBib29sIG1vZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgY2FzZSBB
cnJheTo6UG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzVG9UYWlsOgogICAgIGNhc2UgQXJyYXk6
OlBvc3NpYmx5QXJyYXlXaXRoQ29udGlndW91c091dE9mQm91bmRzOgogICAgICAgICByZXR1cm4g
dmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKLSAgICAgICAgICAg
ICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdU
eXBlKCkgJiBIYXNDb250aWd1b3VzKTsKKyAgICAgICAgICAgICYmIGhhc0NvbnRpZ3VvdXModmFs
dWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91czoKICAgICBjYXNl
IEFycmF5OjpBcnJheVdpdGhDb250aWd1b3VzVG9UYWlsOgogICAgIGNhc2UgQXJyYXk6OkFycmF5
V2l0aENvbnRpZ3VvdXNPdXRPZkJvdW5kczoKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVu
dEtub3duU3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCi0gICAgICAgICAgICAmJiAodmFsdWUubV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzQ29u
dGlndW91cykKKyAgICAgICAgICAgICYmIGhhc0NvbnRpZ3VvdXModmFsdWUubV9jdXJyZW50S25v
d25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpKQogICAgICAgICAgICAgJiYg
KHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUo
KSAmIElzQXJyYXkpOwogCiAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgpAQCAtMTg3LDIz
ICsxODcsMjMgQEAgYm9vbCBtb2RlQWxyZWFkeUNoZWNrZWQoQWJzdHJhY3RWYWx1ZSYgdgogICAg
IGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlOgogICAgIGNh
c2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CiAgICAg
ICAgIHJldHVybiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQot
ICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigp
LT5pbmRleGluZ1R5cGUoKSAmIEhhc0FycmF5U3RvcmFnZSk7CisgICAgICAgICAgICAmJiBoYXNG
YXN0QXJyYXlTdG9yYWdlKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigp
LT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJh
eVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlOgogICAgICAgICByZXR1cm4gdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFz
U2luZ2xldG9uKCkKLSAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVy
ZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiAoSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xv
d1B1dEFycmF5U3RvcmFnZSkpOworICAgICAgICAgICAgJiYgaGFzQXJyYXlTdG9yYWdlKHZhbHVl
Lm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSk7CiAg
ICAgICAgIAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGU6CiAgICAgY2FzZSBBcnJheTo6QXJy
YXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiB2YWx1ZS5tX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZhbHVl
Lm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIEhh
c0FycmF5U3RvcmFnZSkKKyAgICAgICAgICAgICYmIGhhc0Zhc3RBcnJheVN0b3JhZ2UodmFsdWUu
bV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpKQogICAg
ICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5p
bmRleGluZ1R5cGUoKSAmIElzQXJyYXkpOwogICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcnJh
eVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICByZXR1cm4gdmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKLSAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiAoSGFzQXJy
YXlTdG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZSkpCisgICAgICAgICAgICAmJiBoYXNB
cnJheVN0b3JhZ2UodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmlu
ZGV4aW5nVHlwZSgpKQogICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0
dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIElzQXJyYXkpOwogICAgICAgICAKICAg
ICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVwYXRjaC5jcHAJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBA
QCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7IAogICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0
LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkpOwotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSB8IEhhc0NvbnRp
Z3VvdXMgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSkpOworICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOwog
ICAgICAgICAKICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAg
ICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBB
cnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MDksMTIgKzI4MDksMTMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVzdWx0UmVnKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFn
ZVJlZyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
ZXN1bHRSZWcsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCByZXN1bHRSZWcpOwor
ICAgICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwg
cmVzdWx0UmVnKTsKICAgICAgICAgICAgIGlmIChwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91
cyhub2RlLmFycmF5TW9kZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5p
c1NldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKEhhc0NvbnRpZ3VvdXMpKTsKKyAgICAgICAgICAgICAgICBmYWxsVGhyb3Vn
aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpOwogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29tcGlsZUNvbnRpZ3VvdXNHZXRCeVZhbChub2RlLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZywgc3RvcmFnZVJlZywgcmVzdWx0UmVnKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAocG9seW1vcnBoaWNJbmNsdWRlc0FycmF5U3RvcmFnZShub2Rl
LmFycmF5TW9kZSgpKSkgewpAQCAtMjgyMiw3ICsyODIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBw
ZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmFsbFRocm91Z2gg
PSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdFJlZywgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKTsKKyAgICAgICAgICAg
ICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgcmVzdWx0UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNo
YXBlKSk7CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChjb21waWxlQXJyYXlTdG9y
YWdlR2V0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0b3JhZ2VSZWcsIHJlc3Vs
dFJlZykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUKGZhbGxUaHJvdWdoLmlz
U2V0KCkpOwpAQCAtMzA1MCwxMiArMzA1MSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wb3JhcnlS
ZWcpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBvcmFyeVJlZywg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBvcmFyeVJlZyk7CisgICAgICAg
ICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wb3Jh
cnlSZWcpOwogICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNDb250aWd1b3VzKG5v
ZGUuYXJyYXlNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkp
OwogICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wb3JhcnlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoSGFzQ29udGlndW91cykpOworICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdo
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wb3JhcnlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKG5vZGUs
IGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzdG9yYWdlUmVnLCB2YWx1ZVJlZywgdGVtcG9yYXJ5UmVn
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocG9seW1vcnBoaWNJbmNsdWRlc0Fy
cmF5U3RvcmFnZShub2RlLmFycmF5TW9kZSgpKSkgewpAQCAtMzA2Myw3ICszMDY1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHRlbXBvcmFyeVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNBcnJheVN0b3Jh
Z2UpKTsKKyAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcG9yYXJ5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChjb21waWxlQXJyYXlTdG9yYWdlUHV0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHN0b3JhZ2VSZWcsIHZhbHVlUmVnLCB0ZW1wb3JhcnlSZWcpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEFTU0VSVChmYWxsVGhyb3VnaC5pc1NldCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAx
MzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0aW9uQ2hlY2soRXgKICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcFRvRmFpbCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1Zh
bHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
IGp1bXBzVG9GYWlsKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5k
ZXgsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0ZhaWwpCiB7CiAgICAg
QVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1l
bnRUeXBlcyk7CiAgICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wLCAxNj4ganVtcFZlY3Rv
ciA9IGp1bXBzVG9GYWlsLmp1bXBzKCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVJbmRleCwganVtcFZlY3RvcltpXSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNv
dXJjZSBqc1ZhbHVlU291cmNlLCBFZGdlIG5vZGVVc2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYganVtcHNUb0ZhaWwpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2RlVXNlLCBj
b25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKQogewogICAgIEFTU0VS
VChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlw
ZXMpOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJjZSwgbm9kZVVzZS5p
bmRleCgpLCBqdW1wc1RvRmFpbCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQwogICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2Fy
ZCh2YWx1ZVJlY292ZXJ5KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1
bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBO
b2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWls
LCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Zm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmIGp1bXBzVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5
KQogewogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVj
a2luZ0FyZ3VtZW50VHlwZXMpOwogICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgMTY+
IGp1bXBWZWN0b3IgPSBqdW1wc1RvRmFpbC5qdW1wcygpOwpAQCAtMzI3LDYgKzMyNyw3NyBAQCBj
b25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciogU3BlY3VsYXRpdmVKCiAgICAgfQogfQogCitKSVRD
b21waWxlcjo6SnVtcExpc3QgU3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJh
eU1vZGUoR1BSUmVnIHRlbXBHUFIsIEFycmF5OjpNb2RlIGFycmF5TW9kZSkKK3sKKyAgICBKSVRD
b21waWxlcjo6SnVtcExpc3QgcmVzdWx0OworICAgIAorICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7
CisgICAgY2FzZSBOT05fQVJSQVlfQ09OVElHVU9VU19NT0RFUzogeworICAgICAgICBtX2ppdC5h
bmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKENvbnRpZ3VvdXNTaGFwZSkpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQVJSQVlfV0lUSF9DT05USUdVT1VTX01PREVT
OiB7CisgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJc0FycmF5IHwgSW5kZXhpbmdT
aGFwZU1hc2spLCB0ZW1wR1BSKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgKKyAgICAgICAgICAg
IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKElzQXJyYXkgfCBDb250aWd1b3VzU2hhcGUpKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE5PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01P
REVTOiB7CisgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFz
ayksIHRlbXBHUFIpOworICAgICAgICBpZiAoaXNTbG93UHV0QWNjZXNzKGFycmF5TW9kZSkpIHsK
KyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSks
IHRlbXBHUFIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
LCB0ZW1wR1BSLAorICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEFycmF5U3Rv
cmFnZVNoYXBlKSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2U6CisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRo
QXJyYXlTdG9yYWdlVG9Ib2xlOgorICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFn
ZU91dE9mQm91bmRzOiB7CisgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJbW0zMihJc0FycmF5
IHwgSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVt
cEdQUiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSkpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogewor
ICAgICAgICByZXN1bHQuYXBwZW5kKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7CisgICAgICAgIG1faml0LmFuZDMyKFRydXN0
ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5zdWIz
MihUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgdGVtcEdQUiwKKyAgICAgICAgICAgICAgICBUcnVzdGVk
SW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBPTFlNT1JQSElDX01PREVTOiB7CisgICAg
ICAgIGlmIChtb2RlSXNKU0FycmF5KGFycmF5TW9kZSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKElzQXJy
YXkpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmFwcGVuZCgKKyAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3QzMigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywg
dGVtcEdQUiwgVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJyYXkoTm9kZSYgbm9kZSkKIHsKICAgICBBU1NFUlQobW9kZUlzU3BlY2lmaWMo
bm9kZS5hcnJheU1vZGUoKSkpOwpAQCAtMzQ3LDk3ICs0MTgsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tBcnJheShOb2RlJiBubwogICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAg
ICAgZXhwZWN0ZWRDbGFzc0luZm8gPSAmSlNTdHJpbmc6OnNfaW5mbzsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBOT05fQVJSQVlfQ09OVElHVU9VU19NT0RFUzogewotICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCB0ZW1wLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEhhc0NvbnRpZ3VvdXMpKSk7Ci0gICAgICAgIAotICAgICAgICBub1Jlc3VsdCht
X2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBBUlJBWV9X
SVRIX0NPTlRJR1VPVVNfTU9ERVM6IHsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9h
ZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDgoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZz
ZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgdHVybmVkIGlu
dG8gYSBzaW5nbGUgYnJhbmNoLiBCdXQgd2UgY3VycmVudGx5IGhhdmUgbm8gZXZpZGVuY2UKLSAg
ICAgICAgLy8gdGhhdCBkb2luZyBzbyB3b3VsZCBiZSBwcm9maXRhYmxlLCBub3IgZG8gSSBmZWVs
IGNvbWZvcnRhYmxlIHdpdGggdGhlIHByZXNlbnQgdGVzdAotICAgICAgICAvLyBjb3ZlcmFnZSBm
b3IgdGhpcyBjb2RlIHBhdGguCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAg
ICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1w
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7Ci0gICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKEhhc0NvbnRpZ3VvdXMpKSk7Ci0gICAgICAgIAotICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBOT05fQVJSQVlfQVJS
QVlfU1RPUkFHRV9NT0RFUzogewotICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wLmdwcigpKTsKLSAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKAotICAgICAgICAg
ICAgICAgICAgICBpc1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkgPyAoSGFzQXJyYXlT
dG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZSkgOiBIYXNBcnJheVN0b3JhZ2UpKSk7Ci0g
ICAgICAgIAotICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQ
UiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAv
LyBGSVhNRTogVGhpcyBjYW4gYmUgdHVybmVkIGludG8gYSBzaW5nbGUgYnJhbmNoLiBCdXQgd2Ug
Y3VycmVudGx5IGhhdmUgbm8gZXZpZGVuY2UKLSAgICAgICAgLy8gdGhhdCBkb2luZyBzbyB3b3Vs
ZCBiZSBwcm9maXRhYmxlLCBub3IgZG8gSSBmZWVsIGNvbWZvcnRhYmxlIHdpdGggdGhlIHByZXNl
bnQgdGVzdAotICAgICAgICAvLyBjb3ZlcmFnZSBmb3IgdGhpcyBjb2RlIHBhdGguCi0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKElzQXJyYXkpKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAg
ICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1w
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKAotICAgICAgICAgICAgICAgICAgICBp
c1Nsb3dQdXRBY2Nlc3Mobm9kZS5hcnJheU1vZGUoKSkgPyAoSGFzQXJyYXlTdG9yYWdlIHwgSGFz
U2xvd1B1dEFycmF5U3RvcmFnZSkgOiBIYXNBcnJheVN0b3JhZ2UpKSk7Ci0gICAgICAgIAotICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgY2FzZSBOT05fQVJSQVlfQ09OVElHVU9VU19NT0RFUzoKKyAgICBjYXNlIEFSUkFZX1dJVEhf
Q09OVElHVU9VU19NT0RFUzoKKyAgICBjYXNlIE5PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVT
OgorICAgIGNhc2UgQVJSQVlfV0lUSF9BUlJBWV9TVE9SQUdFX01PREVTOgogICAgIGNhc2UgUE9M
WU1PUlBISUNfTU9ERVM6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAgICAgbV9qaXQubG9hZFB0cigK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IHRlbXBHUFIpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgdHVybmVkIGludG8gYSBz
aW5nbGUgYnJhbmNoLiBCdXQgd2UgY3VycmVudGx5IGhhdmUgbm8gZXZpZGVuY2UKLSAgICAgICAg
Ly8gdGhhdCBkb2luZyBzbyB3b3VsZCBiZSBwcm9maXRhYmxlLCBub3IgZG8gSSBmZWVsIGNvbWZv
cnRhYmxlIHdpdGggdGhlIHByZXNlbnQgdGVzdAotICAgICAgICAvLyBjb3ZlcmFnZSBmb3IgdGhp
cyBjb2RlIHBhdGguCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKAot
ICAgICAgICAgICAgICAgICAgICAocG9seW1vcnBoaWNJbmNsdWRlc0NvbnRpZ3VvdXMobm9kZS5h
cnJheU1vZGUoKSkgPyBIYXNDb250aWd1b3VzIDogMCkKLSAgICAgICAgICAgICAgICAgICAgfCAo
cG9seW1vcnBoaWNJbmNsdWRlc0FycmF5U3RvcmFnZShub2RlLmFycmF5TW9kZSgpKSA/IEhhc0Fy
cmF5U3RvcmFnZSA6IDApKSkpOworICAgICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5
TW9kZSh0ZW1wR1BSLCBub2RlLmFycmF5TW9kZSgpKSk7CiAgICAgICAgIAogICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4NCwyNCArNDc3LDI0
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUKICAgICBHUFJSZWcg
YmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHku
Z3ByKCk7CiAgICAgCi0gICAgSW5kZXhpbmdUeXBlIGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrOwor
ICAgIEFycmF5OjpNb2RlIGRlc2lyZWRBcnJheU1vZGU7CiAgICAgCiAgICAgc3dpdGNoIChub2Rl
LmFycmF5TW9kZSgpKSB7CiAgICAgY2FzZSBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXM6Ci0gICAg
ICAgIGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrID0gSGFzQ29udGlndW91czsKKyAgICAgICAgZGVz
aXJlZEFycmF5TW9kZSA9IEFycmF5OjpDb250aWd1b3VzOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFycmF5OjpCbGFua1RvQXJyYXlTdG9yYWdlOgotICAgICAgICBkZXNpcmVkSW5kZXhpbmdU
eXBlTWFzayA9IEhhc0FycmF5U3RvcmFnZTsKKyAgICAgICAgZGVzaXJlZEFycmF5TW9kZSA9IEFy
cmF5OjpBcnJheVN0b3JhZ2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXJyYXk6OkJsYW5r
VG9TbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICBkZXNpcmVkSW5kZXhpbmdUeXBlTWFzayA9
IEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2U7CisgICAgICAgIGRlc2ly
ZWRBcnJheU1vZGUgPSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZToKLSAgICAg
ICAgZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sgPSBIYXNDb250aWd1b3VzIHwgSGFzQXJyYXlTdG9y
YWdlOworICAgICAgICBkZXNpcmVkQXJyYXlNb2RlID0gQXJyYXk6OkNvbnRpZ3VvdXNPckFycmF5
U3RvcmFnZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsK
LSAgICAgICAgZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sgPSAwOworICAgICAgICBkZXNpcmVkQXJy
YXlNb2RlID0gQXJyYXk6OlVuZGVjaWRlZDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIApA
QCAtNTEyLDE5ICs1MDUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSYg
bm9kZQogICAgICAgICAKICAgICBtX2ppdC5sb2FkUHRyKAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKKyAgICAKKyAgICBtX2ppdC5sb2FkOCgKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVt
cEdQUik7CiAgICAgICAgIAogICAgIC8vIFdlIGNhbiBza2lwIGFsbCB0aGF0IGNvbWVzIG5leHQg
aWYgd2UgYWxyZWFkeSBoYXZlIGFycmF5IHN0b3JhZ2UuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgc2xvd0Nhc2UgPSBtX2ppdC5icmFuY2hUZXN0OCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Olplcm8sCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoZGVzaXJlZEluZGV4aW5nVHlwZU1hc2spKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzID0KKyAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5
TW9kZSh0ZW1wR1BSLCBkZXNpcmVkQXJyYXlNb2RlKTsKICAgICAgICAgCiAgICAgbV9qaXQubG9h
ZFB0cigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIAotICAgIHNsb3dDYXNlLmxp
bmsoJm1faml0KTsKKyAgICBzbG93Q2FzZXMubGluaygmbV9qaXQpOwogICAgIAogICAgIC8vIElm
IHdlJ3JlIGFsbGVnZWRseSBjcmVhdGluZyBjb250aWd1b3VzIHN0b3JhZ2UgYW5kIHRoZSBpbmRl
eCBpcyBib2d1cywgdGhlbgogICAgIC8vIGp1c3QgZG9uJ3QuCkBAIC01NjgsMTcgKzU2MiwxNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgLy8gYWJvdXQg
YSBsb2FkLgogICAgIG1faml0LmxvYWRQdHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwot
ICAgICAgICAKKyAgICAKICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGtp
bmQgb2YgYXJyYXkgc3RvcmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCiAgICAgLy8gTm90ZSB0
aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdoaWNoIHdpbGwgcmVz
dWx0IGluIHRoZSAKICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0
aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCiAgICAgLy8gVGhhdCdzIGZpbmUs
IHNpbmNlIGFycmF5aWZpY2F0aW9uIGlzIG5vdCB1c2VyLXZpc2libGUuCisgICAgbV9qaXQubG9h
ZDgoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgc3BlY3VsYXRp
b25DaGVjaygKICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAg
ICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVy
bywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrKSkpOworICAgICAgICBqdW1w
U2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHN0cnVjdHVyZUdQUiwgZGVzaXJlZEFycmF5TW9kZSkp
OwogICAgICAgICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICBzdG9yYWdlUmVzdWx0KHRl
bXBHUFIsIG1fY29tcGlsZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMz
Niw4ICsyMzM2LDggQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2lu
ZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9G
YWlsKTsKICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2Us
IEVkZ2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpOwogICAgIC8vIEFkZCBhIHNl
dCBvZiBzcGVjdWxhdGlvbiBjaGVja3Mgd2l0aG91dCBhZGRpdGlvbmFsIHJlY292ZXJ5LgotICAg
IHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsKLSAgICB2b2lkIHNwZWN1
bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIEVkZ2UsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYganVtcHNUb0ZhaWwpOworICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIGp1bXBzVG9GYWlsKTsKKyAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQs
IEpTVmFsdWVTb3VyY2UsIEVkZ2UsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVt
cHNUb0ZhaWwpOwogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrIHdpdGggYWRkaXRpb25h
bCByZWNvdmVyeS4KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVT
b3VyY2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3Qg
U3BlY3VsYXRpb25SZWNvdmVyeSYpOwogICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhFeGl0S2lu
ZCwgSlNWYWx1ZVNvdXJjZSwgRWRnZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwg
Y29uc3QgU3BlY3VsYXRpb25SZWNvdmVyeSYpOwpAQCAtMjM1OCw3ICsyMzU4LDcgQEAgcHVibGlj
OgogICAgIC8vIE5vdGU6IG5vdCBzcGVjaWZ5aW5nIHRoZSB2YWx1ZVJlY292ZXJ5IGFyZ3VtZW50
IChsZWF2aW5nIGl0IGFzIFZhbHVlUmVjb3ZlcnkoKSkgaW1wbGllcwogICAgIC8vIHRoYXQgeW91
J3ZlIGVuc3VyZWQgdGhhdCB0aGVyZSBleGlzdHMgYSBNb3ZIaW50IHByaW9yIHRvIHlvdXIgdXNl
IG9mIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKCkuCiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRp
b25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiA9IFZhbHVlUmVjb3Zlcnko
KSk7Ci0gICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNv
dXJjZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsLCBj
b25zdCBWYWx1ZVJlY292ZXJ5JiA9IFZhbHVlUmVjb3ZlcnkoKSk7CisgICAgdm9pZCBmb3J3YXJk
U3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBjb25z
dCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292
ZXJ5JiA9IFZhbHVlUmVjb3ZlcnkoKSk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrV2l0aENv
bmRpdGlvbmFsRGlyZWN0aW9uKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlSW5kZXgsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGJvb2wgaXNGb3J3YXJkKTsKICAgICAvLyBD
YWxsZWQgd2hlbiB3ZSBzdGF0aWNhbGx5IGRldGVybWluZSB0aGF0IGEgc3BlY3VsYXRpb24gd2ls
bCBmYWlsLgogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oRXhpdEtpbmQs
IEpTVmFsdWVSZWdzLCBOb2RlSW5kZXgpOwpAQCAtMjM3MSw2ICsyMzcxLDcgQEAgcHVibGljOgog
ICAgIAogICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yKiB0eXBlZEFycmF5RGVzY3JpcHRv
cihBcnJheTo6TW9kZSk7CiAgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGp1bXBTbG93
Rm9yVW53YW50ZWRBcnJheU1vZGUoR1BSUmVnIHRlbXBXaXRoSW5kZXhpbmdUeXBlUmVnLCBBcnJh
eTo6TW9kZSBhcnJheU1vZGUpOwogICAgIHZvaWQgY2hlY2tBcnJheShOb2RlJik7CiAgICAgdm9p
ZCBhcnJheWlmeShOb2RlJik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw3
ICs0NTIsOSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTQXJyYXkodW5zCiAgICAg
c2l6ZV90IGluaXRpYWxTdG9yYWdlID0gQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgMCwgdHJ1ZSwg
aW5pdGlhbExlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwogCiAgICAgbG9hZFB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFkZHJlc3NPZkFycmF5U3RydWN0dXJlKCksIHNj
cmF0Y2gpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3Moc2NyYXRj
aCwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihIYXNDb250
aWd1b3VzKSkpOworICAgIGxvYWQ4KEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjppbmRleGlu
Z1R5cGVPZmZzZXQoKSksIHN0b3JhZ2VQdHIpOworICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRl
eGluZ1NoYXBlTWFzayksIHN0b3JhZ2VQdHIpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5v
dEVxdWFsLCBzdG9yYWdlUHRyLCBUcnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBlKSkpOwogCiAg
ICAgLy8gV2UgYWxsb2NhdGUgdGhlIGJhY2tpbmcgc3RvcmUgZmlyc3QgdG8gZW5zdXJlIHRoYXQg
Z2FyYmFnZSBjb2xsZWN0aW9uIAogICAgIC8vIGRvZXNuJ3QgaGFwcGVuIGR1cmluZyBKU0FycmF5
IGluaXRpYWxpemF0aW9uLgpAQCAtNTgxLDcgKzU4Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBh
cnJheVByb2ZpbGVTYXcoQXJyYXkKIAogaW5saW5lIEpJVEFycmF5TW9kZSBKSVQ6OmNob29zZUFy
cmF5TW9kZShBcnJheVByb2ZpbGUqIHByb2ZpbGUpCiB7Ci0gICAgaWYgKGFycmF5UHJvZmlsZVNh
dyhwcm9maWxlLCBIYXNBcnJheVN0b3JhZ2UpKQorICAgIGlmIChhcnJheVByb2ZpbGVTYXcocHJv
ZmlsZSwgQXJyYXlTdG9yYWdlU2hhcGUpKQogICAgICAgICByZXR1cm4gSklUQXJyYXlTdG9yYWdl
OwogICAgIHJldHVybiBKSVRDb250aWd1b3VzOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEzMTI2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxl
KTsKKyAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAK
ICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAt
MTUxLDcgKzE1Miw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0Q29udGlndW91c0dldEJ5VmEK
IHsKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0NvbnRpZ3VvdXMpKTsK
KyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChi
cmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFB0cihCYXNlSW5kZXgocmVnVDIsIHJl
Z1QxLCBTY2FsZVB0ciksIHJlZ1QwKTsKQEAgLTE2Myw4ICsxNjQsOSBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdENvbnRpZ3VvdXNHZXRCeVZhCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5
U3RvcmFnZUdldEJ5VmFsKEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKIHsK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSB8IEhh
c1Nsb3dQdXRBcnJheVN0b3JhZ2UpKTsKKworICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlT
dG9yYWdlU2hhcGUpLCByZWdUMiwgcmVnVDMpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgcmVnVDMsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUg
LSBBcnJheVN0b3JhZ2VTaGFwZSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChi
cmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6
OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjk1LDYgKzI5Nyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDAsIGJhc2UpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJl
Z1QyLCByZWdUMywgcHJvZmlsZSk7CisgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hh
cGVNYXNrKSwgcmVnVDIpOwogICAgIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0zMjcsNyArMzMwLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRDb250aWd1b3VzUHV0QnlWYQogICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNo
YWJsZUJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0NvbnRpZ3VvdXMp
KTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVz
dGVkSW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgSnVtcCBvdXRP
ZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtMzYwLDcgKzM2Myw3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnkKICAgICAKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCi0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFRlc3QzMiha
ZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSkpOworICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihBcnJheVN0
b3JhZ2VTaGFwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKIApAQCAtNzg3LDcgKzc5MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVBhdGNoR2V0QXJyYXlMZW4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZv
ckJ5dGVjb2RlSW5kZXgocmVnVDIsIHJlZ1QxLCBzdHViSW5mby0+Ynl0ZWNvZGVJbmRleCk7CiAg
ICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVk
SW1tMzIoSXNBcnJheSkpOwotICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFRlc3QzMiha
ZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSB8IEhhc0NvbnRpZ3VvdXMp
KTsKKyAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRy
dXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzaykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5
ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIHN0b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QzKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTAxOCw3ICsxMDE4LDcg
QEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0Miwg
SXNBcnJheSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93Ci0gICAgYnRpeiB0MiwgKEhhc0NvbnRpZ3Vv
dXMgfCBIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSwgLm9wR2V0QXJy
YXlMZW5ndGhTbG93CisgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5
TGVuZ3RoU2xvdwogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQxCiAgICAgbG9hZHAgNjRbUEIs
IFBDLCA4XSwgdDIKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MApAQCAt
MTE1MCw3ICsxMTUwLDggQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQogICAgIHN4aTJwIHQxLCB0
MQogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzCi0gICAgYnRpeiB0Miwg
SGFzQ29udGlndW91cywgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCisgICAgYW5kaSBJbmRleGlu
Z1NoYXBlTWFzaywgdDIKKyAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZh
bE5vdENvbnRpZ3VvdXMKIAogICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6Om1fcHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CiAgICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKQEAgLTExNTksNyArMTE2MCw4IEBAIF9sbGludF9vcF9n
ZXRfYnlfdmFsOgogICAgIGptcCAub3BHZXRCeVZhbERvbmUKIAogLm9wR2V0QnlWYWxOb3RDb250
aWd1b3VzOgotICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0
b3JhZ2UsIC5vcEdldEJ5VmFsU2xvdworICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCisg
ICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwg
Lm9wR2V0QnlWYWxTbG93CiAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKICAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRwIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Jb
dDMsIHQxLCA4XSwgdDIKQEAgLTEyNDQsNyArMTI0Niw4IEBAIF9sbGludF9vcF9wdXRfYnlfdmFs
OgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDMsIC5vcFB1dEJ5VmFsU2xv
dykKICAgICBzeGkycCB0MywgdDMKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFd
LCB0MAotICAgIGJ0aXogdDIsIEhhc0NvbnRpZ3VvdXMsIC5vcFB1dEJ5VmFsTm90Q29udGlndW91
cworICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgYmluZXEgdDIsIENvbnRpZ3Vv
dXNTaGFwZSwgLm9wUHV0QnlWYWxOb3RDb250aWd1b3VzCiAgICAgCiAgICAgYmlhZXEgdDMsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5ndGhbdDBd
LCAub3BQdXRCeVZhbENvbnRpZ3VvdXNPdXRPZkJvdW5kcwogLm9wUHV0QnlWYWxDb250aWd1b3Vz
U3RvcmVSZXN1bHQ6CkBAIC0xMjY1LDcgKzEyNjgsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoK
ICAgICBqbXAgLm9wUHV0QnlWYWxDb250aWd1b3VzU3RvcmVSZXN1bHQKIAogLm9wUHV0QnlWYWxO
b3RDb250aWd1b3VzOgotICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxT
bG93CisgICAgYmluZXEgdDIsIEFycmF5U3RvcmFnZVNoYXBlLCAub3BQdXRCeVZhbFNsb3cKICAg
ICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3Zl
Y3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU2xvdwogICAgIGJ0cHogQXJyYXlTdG9yYWdlOjpt
X3ZlY3Rvclt0MCwgdDMsIDhdLCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZUVtcHR5CiAub3BQdXRC
eVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTMxMjYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2MywxMCBAQCBlbmQKIAogIyBDb25zdGFudCBmb3Ig
cmVhc29uaW5nIGFib3V0IGJ1dHRlcmZsaWVzLgogY29uc3QgSXNBcnJheSA9IDEKLWNvbnN0IEhh
c0NvbnRpZ3VvdXMgPSAyCi1jb25zdCBIYXNBcnJheVN0b3JhZ2UgPSA4Ci1jb25zdCBIYXNTbG93
UHV0QXJyYXlTdG9yYWdlID0gMTYKK2NvbnN0IEluZGV4aW5nU2hhcGVNYXNrID0gMzAKK2NvbnN0
IENvbnRpZ3VvdXNTaGFwZSA9IDI2Citjb25zdCBBcnJheVN0b3JhZ2VTaGFwZSA9IDI4Citjb25z
dCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRzLgogY29u
c3QgU3RyaW5nVHlwZSA9IDUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
ZGV4aW5nVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZGV4aW5nVHlwZS5oCShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRleGluZ1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTMg
QEAgdHlwZWRlZiB1aW50OF90IEluZGV4aW5nVHlwZTsKIAogLy8gRmxhZ3MgZm9yIHRlc3Rpbmcg
dGhlIHByZXNlbmNlIG9mIGNhcGFiaWxpdGllcy4KIHN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUg
SXNBcnJheSAgICAgICAgICAgICAgICAgID0gMTsKLXN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUg
SGFzQ29udGlndW91cyAgICAgICAgICAgID0gMjsKLXN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUg
SGFzQXJyYXlTdG9yYWdlICAgICAgICAgID0gODsKLXN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUg
SGFzU2xvd1B1dEFycmF5U3RvcmFnZSAgID0gMTY7CisKKy8vIFRoZSBzaGFwZSBvZiB0aGUgaW5k
ZXhlZCBwcm9wZXJ0eSBzdG9yYWdlLgorc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJbmRleGlu
Z1NoYXBlTWFzayAgICAgICAgPSAzMDsKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgTm9JbmRl
eGluZ1NoYXBlICAgICAgICAgID0gMDsgCitzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIENvbnRp
Z3VvdXNTaGFwZSAgICAgICAgICA9IDI2Oworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJh
eVN0b3JhZ2VTaGFwZSAgICAgICAgPSAyODsKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMzA7CiAKIC8vIEFkZGl0aW9uYWwgZmxhZ3MgZm9yIHRy
YWNraW5nIHRoZSBoaXN0b3J5IG9mIHRoZSB0eXBlLiBUaGVzZSBhcmUgdXN1YWxseQogLy8gbWFz
a2VkIG9mZiB1bmxlc3MgeW91IGFzayBmb3IgdGhlbSBkaXJlY3RseS4KQEAgLTQ0LDEzICs0OCwx
MyBAQCBzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIE1heUhhdmVJbmRleGVkCiAKIC8vIExpc3Qg
b2YgYWNjZXB0YWJsZSBhcnJheSB0eXBlcy4KIHN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgTm9u
QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICA9IDA7Ci1zdGF0aWMgY29uc3QgSW5kZXhpbmdU
eXBlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXMgICAgICAgICAgPSBIYXNDb250aWd1b3VzOwotc3Rh
dGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UgICAgICAgID0g
SGFzQXJyYXlTdG9yYWdlOwotc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlID0gSGFzU2xvd1B1dEFycmF5U3RvcmFnZTsKK3N0YXRpYyBjb25z
dCBJbmRleGluZ1R5cGUgTm9uQXJyYXlXaXRoQ29udGlndW91cyAgICAgICAgICA9IENvbnRpZ3Vv
dXNTaGFwZTsKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlICAgICAgICA9IEFycmF5U3RvcmFnZVNoYXBlOworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlw
ZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlID0gU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlOwogc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheUNsYXNzICAgICAgICAgICAgICAg
ICAgICAgID0gSXNBcnJheTsgLy8gSSdkIHdhbnQgdG8gY2FsbCB0aGlzICJBcnJheSIgYnV0IHRo
aXMgd291bGQgbGVhZCB0byBkaXNhc3Ryb3VzIG5hbWVzcGFjZSBwb2xsdXRpb24uCi1zdGF0aWMg
Y29uc3QgSW5kZXhpbmdUeXBlIEFycmF5V2l0aENvbnRpZ3VvdXMgICAgICAgICAgICAgPSBJc0Fy
cmF5IHwgSGFzQ29udGlndW91czsKLXN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRo
QXJyYXlTdG9yYWdlICAgICAgICAgICA9IElzQXJyYXkgfCBIYXNBcnJheVN0b3JhZ2U7Ci1zdGF0
aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UgICAgPSBJ
c0FycmF5IHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZTsKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5
cGUgQXJyYXlXaXRoQ29udGlndW91cyAgICAgICAgICAgICA9IElzQXJyYXkgfCBDb250aWd1b3Vz
U2hhcGU7CitzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5V2l0aEFycmF5U3RvcmFnZSAg
ICAgICAgICAgPSBJc0FycmF5IHwgQXJyYXlTdG9yYWdlU2hhcGU7CitzdGF0aWMgY29uc3QgSW5k
ZXhpbmdUeXBlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UgICAgPSBJc0FycmF5IHwgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlOwogCiAjZGVmaW5lIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UyBcCiAgICAgTm9uQXJyYXk6ICAgICAgICAgICAgICAgICAgICBcCkBAIC03MSwxMiArNzUsNyBA
QCBzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5V2l0aFNsb3dQCiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNJbmRleGVkUHJvcGVydGllcyhJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQog
ewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7Ci0gICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiBJbmRleGluZ1No
YXBlTWFzaykgIT0gTm9JbmRleGluZ1NoYXBlOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIoSW5kZXhpbmdUeXBlIHR5cGUpCkBAIC04NiwxNyArODUsMjQgQEAgc3Rh
dGljIGlubGluZSBib29sIGhhc0luZGV4aW5nSGVhZGVyKEluZAogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaGFzQ29udGlndW91cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogewotICAgIHJldHVy
biAhIShpbmRleGluZ1R5cGUgJiBIYXNDb250aWd1b3VzKTsKKyAgICByZXR1cm4gKGluZGV4aW5n
VHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBDb250aWd1b3VzU2hhcGU7Cit9CisKKy8vIEZJ
WE1FOiBUaGlzIGlzIGFuIGF3a3dhcmQgbmFtZS4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGNhbGxl
ZCBoYXNBcnJheVN0b3JhZ2UoKQorLy8gYW5kIHRoZW4gbmV4dCBtZXRob2QgZG93biBzaG91bGQg
YmUgY2FsbGVkIGhhc0FueUFycmF5U3RvcmFnZSgpLgorc3RhdGljIGlubGluZSBib29sIGhhc0Zh
c3RBcnJheVN0b3JhZ2UoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKK3sKKyAgICByZXR1cm4g
KGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBBcnJheVN0b3JhZ2VTaGFwZTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIGhhc0FycmF5U3RvcmFnZShJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlKQogewotICAgIHJldHVybiAhIShpbmRleGluZ1R5cGUgJiAoSGFzQXJyYXlTdG9y
YWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFnZSkpOworICAgIHJldHVybiAoaW5kZXhpbmdUeXBl
ICYgSW5kZXhpbmdTaGFwZU1hc2spIC0gQXJyYXlTdG9yYWdlU2hhcGUgPD0gU2xvd1B1dEFycmF5
U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRVc2VTbG93UHV0KEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiB7Ci0gICAgcmV0
dXJuICEhKGluZGV4aW5nVHlwZSAmIEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpOworICAgIHJldHVy
biAoaW5kZXhpbmdUeXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID09IFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZTsKIH0KIAogY29uc3QgY2hhciogaW5kZXhpbmdUeXBlVG9TdHJpbmcoSW5kZXhpbmdU
eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcgKzM1Niw4
IEBAIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Ok9iamVjdHMKIGlubGluZSBib29s
IGhhc0Jyb2tlbkluZGV4aW5nKEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgLy8gVGhpcyB3aWxs
IGNoYW5nZSBpZiB3ZSBoYXZlIG1vcmUgaW5kZXhpbmcgdHlwZXMuCi0gICAgcmV0dXJuICEhKG9i
amVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3RvcmFnZSB8IEhh
c0NvbnRpZ3VvdXMpKTsKKyAgICBJbmRleGluZ1R5cGUgdHlwZSA9IG9iamVjdC0+c3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpOworICAgIHJldHVybiBoYXNDb250aWd1b3VzKHR5cGUpIHx8IGhh
c0Zhc3RBcnJheVN0b3JhZ2UodHlwZSk7CiB9CiAKIHZvaWQgT2JqZWN0c1dpdGhCcm9rZW5JbmRl
eGluZ0ZpbmRlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE2ICs1OSwxNyBA
QCBpbmxpbmUgSW5kZXhpbmdUeXBlIG5ld0luZGV4aW5nVHlwZShJbmRlCiB7CiAgICAgc3dpdGNo
ICh0cmFuc2l0aW9uKSB7CiAgICAgY2FzZSBBbGxvY2F0ZUNvbnRpZ3VvdXM6Ci0gICAgICAgIEFT
U0VSVCghKG9sZFR5cGUgJiAoSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3RvcmFn
ZSkpKTsKLSAgICAgICAgcmV0dXJuIG9sZFR5cGUgfCBIYXNDb250aWd1b3VzOworICAgICAgICBB
U1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIG9s
ZFR5cGUgfCBDb250aWd1b3VzU2hhcGU7CiAgICAgY2FzZSBBbGxvY2F0ZUFycmF5U3RvcmFnZToK
LSAgICAgICAgcmV0dXJuIChvbGRUeXBlICYgfkhhc0NvbnRpZ3VvdXMpIHwgSGFzQXJyYXlTdG9y
YWdlOworICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpIHx8IGhh
c0NvbnRpZ3VvdXMob2xkVHlwZSkpOworICAgICAgICByZXR1cm4gKG9sZFR5cGUgJiB+SW5kZXhp
bmdTaGFwZU1hc2spIHwgQXJyYXlTdG9yYWdlU2hhcGU7CiAgICAgY2FzZSBBbGxvY2F0ZVNsb3dQ
dXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiAob2xkVHlwZSAmIH5IYXNDb250aWd1b3Vz
KSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2U7CisgICAgICAgIEFTU0VSVCghaGFzSW5kZXhlZFBy
b3BlcnRpZXMob2xkVHlwZSkgfHwgaGFzQ29udGlndW91cyhvbGRUeXBlKSk7CisgICAgICAgIHJl
dHVybiAob2xkVHlwZSAmIH5JbmRleGluZ1NoYXBlTWFzaykgfCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGU7CiAgICAgY2FzZSBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIEFT
U0VSVChvbGRUeXBlICYgSGFzQXJyYXlTdG9yYWdlKTsKLSAgICAgICAgQVNTRVJUKCEob2xkVHlw
ZSAmIEhhc0NvbnRpZ3VvdXMpKTsKLSAgICAgICAgcmV0dXJuIChvbGRUeXBlICYgfkhhc0FycmF5
U3RvcmFnZSkgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlOworICAgICAgICBBU1NFUlQoaGFzRmFz
dEFycmF5U3RvcmFnZShvbGRUeXBlKSk7CisgICAgICAgIHJldHVybiAob2xkVHlwZSAmIH5JbmRl
eGluZ1NoYXBlTWFzaykgfCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7CiAgICAgY2FzZSBBZGRJ
bmRleGVkQWNjZXNzb3JzOgogICAgICAgICByZXR1cm4gb2xkVHlwZSB8IE1heUhhdmVJbmRleGVk
QWNjZXNzb3JzOwogICAgIGRlZmF1bHQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168575</attachid>
            <date>2012-10-13 22:27:09 -0700</date>
            <delta_ts>2012-10-14 14:07:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>indexingtype_2.patch</filename>
            <type>text/plain</type>
            <size>53534</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEyLTEwLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5kZXhpbmdUeXBlIHNob3VsZCBub3QgaGF2ZSBhIGJpdCBmb3IgZWFjaCB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODk5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV3aGF0IGluY2lkZW50
YWxseSwgdGhlIGludHJvZHVjdGlvbiBvZiBidXR0ZXJmbGllcyBsZWQgdG8gZWFjaCBpbmRleGlu
ZworICAgICAgICB0eXBlIGJlaW5nIHJlcHJlc2VudGVkIGJ5IGEgdW5pcXVlIGJpdC4gVGhpcyBp
cyBzdXBlcmZpY2lhbGx5IG5pY2Ugc2luY2UgaXQKKyAgICAgICAgYWxsb3dzIHlvdSB0byB0ZXN0
IGlmIGEgc3RydWN0dXJlIGNvcnJlc3BvbmRzIHRvIGEgcGFydGljdWxhciBpbmRleGluZyB0eXBl
CisgICAgICAgIGJ5IHNheWluZyAhIShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgVGhlVHlw
ZSkuIEJ1dCB0aGUgZG93bnNpZGUgaXMgdGhhdAorICAgICAgICBnaXZlbiB0aGUgOCBiaXRzIHdl
IGhhdmUgZm9yIHRoZSBtX2luZGV4aW5nVHlwZSBmaWVsZCwgdGhhdCBsZWF2ZXMgb25seSBhCisg
ICAgICAgIHNtYWxsIG51bWJlciBvZiBwb3NzaWJsZSBpbmRleGluZyB0eXBlcyBpZiB3ZSBoYXZl
IG9uZSBwZXIgYml0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2VzZXQgY2hhbmdlcyB0
aGUgaW5kZXhpbmcgdHlwZSB0byBiZToKKyAgICAgICAgCisgICAgICAgIEJpdCAjMTogVGVsbHMg
eW91IGlmIHlvdSdyZSBhbiBhcnJheS4KKyAgICAgICAgCisgICAgICAgIEJpdHMgIzIgLSAjNTog
MTYgcG9zc2libGUgaW5kZXhpbmcgdHlwZXMsIGluY2x1ZGluZyB0aGUgYmxhbmsgdHlwZSBmb3IK
KyAgICAgICAgICAgIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGluZGV4ZWQgcHJvcGVydGllcy4K
KyAgICAgICAgCisgICAgICAgIEJpdHMgIzYtODogQXV4aWxpYXJ5IGJpdHMgdGhhdCB3ZSBjb3Vs
ZCB1c2UgZm9yIG90aGVyIHRoaW5ncy4gQ3VycmVudGx5IHdlCisgICAgICAgICAgICBqdXN0IHVz
ZSBvbmUgb2YgdGhvc2UgYml0cywgZm9yIE1heUhhdmVJbmRleGVkQWNjZXNzb3JzLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpcyBwZXJmb3JtYW5jZS1uZXV0cmFsLCBhbmQgaXMgcHJpbWFyaWx5
IGludGVuZGVkIHRvIGdpdmUgdXMgbW9yZQorICAgICAgICBicmVhdGhpbmcgcm9vbSBmb3IgaW50
cm9kdWNpbmcgbmV3IGluZmVycmVkIGFycmF5IG1vZGVzLgorCisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Q6Omp1bXBzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpwYXRj
aGFibGVCcmFuY2gzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTXY3KToKKyAgICAgICAg
KiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptb2RlQWxyZWFkeUNo
ZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2spOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25DaGVj
ayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50
ZWRBcnJheU1vZGUpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmFycmF5aWZ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU0FycmF5KToKKyAgICAgICAgKEpTQzo6
SklUOjpjaG9vc2VBcnJheU1vZGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0Q29udGlndW91c0dldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
QXJyYXlTdG9yYWdlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdENvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dl
dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRDb250aWd1b3VzR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VHZXRCeVZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxl
bmd0aCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSW5kZXhpbmdUeXBl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpoYXNJbmRleGVkUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Omhhc0NvbnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpoYXNGYXN0QXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6aGFzQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpT
Qzo6c2hvdWxkVXNlU2xvd1B1dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisgICAgICAgIChKU0M6Om5ld0luZGV4aW5nVHlwZSk6CisKIDIwMTItMTAtMTIg
IEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBidWls
ZCBlcnJvciBvbiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgbV9qdW1wcy5jbGVhcigpOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBjb25zdCBKdW1wVmVjdG9yJiBqdW1wcygpIHsgcmV0dXJuIG1fanVtcHM7
IH0KKyAgICAgICAgY29uc3QgSnVtcFZlY3RvciYganVtcHMoKSBjb25zdCB7IHJldHVybiBtX2p1
bXBzOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBKdW1wVmVjdG9yIG1fanVtcHM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsMTEgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoVGVzdDMyKGNvbmQs
IHJlZywgbWFzaykpOwogICAgIH0KKyAgICAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJ
bW0zMiBpbW0pCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihj
b25kLCByZWcsIGltbSkpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBqdW1wKExhYmVsIHRh
cmdldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpA
QCAtMTcwMSw2ICsxNzAxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAocmVzdWx0KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBp
bW0pCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKKyAgICAgICAg
SnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCByZWcsIGltbSk7CisgICAgICAgIG1fbWFrZUp1
bXBQYXRjaGFibGUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0
KTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRy
KDApKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAxMzEy
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3MSwxMyArMTcxLDEzIEBAIGJvb2wgbW9kZUFscmVhZHlDaGVja2VkKEFi
c3RyYWN0VmFsdWUmIHYKICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aENvbnRpZ3Vv
dXNUb1RhaWw6CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzT3V0
T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5o
YXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0
dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAmIEhhc0NvbnRpZ3VvdXMpOworICAgICAg
ICAgICAgJiYgaGFzQ29udGlndW91cyh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5n
bGV0b24oKS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcnJh
eVdpdGhDb250aWd1b3VzOgogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aENvbnRpZ3VvdXNUb1Rh
aWw6CiAgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c091dE9mQm91bmRzOgogICAg
ICAgICByZXR1cm4gdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkK
LSAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24o
KS0+aW5kZXhpbmdUeXBlKCkgJiBIYXNDb250aWd1b3VzKQorICAgICAgICAgICAgJiYgaGFzQ29u
dGlndW91cyh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhp
bmdUeXBlKCkpCiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUu
c2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSXNBcnJheSk7CiAKICAgICBjYXNlIEFycmF5
OjpBcnJheVN0b3JhZ2U6CkBAIC0xODcsMjMgKzE4NywyMyBAQCBib29sIG1vZGVBbHJlYWR5Q2hl
Y2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhB
cnJheVN0b3JhZ2VUb0hvbGU6CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJh
eVN0b3JhZ2VPdXRPZkJvdW5kczoKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtub3du
U3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCi0gICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzQXJyYXlTdG9y
YWdlKTsKKyAgICAgICAgICAgICYmIGhhc0Zhc3RBcnJheVN0b3JhZ2UodmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpKTsKICAgICAgICAgCiAg
ICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5OjpQb3Nz
aWJseUFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiB2YWx1ZS5t
X2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQotICAgICAgICAgICAgJiYgKHZh
bHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigpLT5pbmRleGluZ1R5cGUoKSAm
IChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSk7CisgICAgICAgICAg
ICAmJiBoYXNBcnJheVN0b3JhZ2UodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xl
dG9uKCktPmluZGV4aW5nVHlwZSgpKTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJyYXlX
aXRoQXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZVRv
SG9sZToKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczoK
ICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmhhc1NpbmdsZXRv
bigpCi0gICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xl
dG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzQXJyYXlTdG9yYWdlKQorICAgICAgICAgICAgJiYg
aGFzRmFzdEFycmF5U3RvcmFnZSh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0
b24oKS0+aW5kZXhpbmdUeXBlKCkpCiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25v
d25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSXNBcnJheSk7CiAgICAg
ICAgIAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAg
ICAgIHJldHVybiB2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKQot
ICAgICAgICAgICAgJiYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLnNpbmdsZXRvbigp
LT5pbmRleGluZ1R5cGUoKSAmIChIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9y
YWdlKSkKKyAgICAgICAgICAgICYmIGhhc0FycmF5U3RvcmFnZSh2YWx1ZS5tX2N1cnJlbnRLbm93
blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkpCiAgICAgICAgICAgICAmJiAo
dmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgp
ICYgSXNBcnJheSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gMTMx
MjYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChF
eGVjU3RhdGUqIGUKICAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsgCiAg
ICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7
Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
SGFzQXJyYXlTdG9yYWdlIHwgSGFzQ29udGlndW91cyB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2Up
KSk7CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoSW5kZXhpbmdTaGFwZU1hc2spKSk7CiAgICAgICAgIAogICAgICAgICBzdHViSml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpLCBz
Y3JhdGNoR1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgwNSwxMiArMjgwNSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRUYWdSZWcpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFRhZ1JlZywgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHJlc3VsdFRhZ1JlZyk7CisgICAgICAgICAgICBt
X2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZXN1bHRUYWdSZWcp
OwogICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNDb250aWd1b3VzKG5vZGUuYXJy
YXlNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAg
ICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRUYWdSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoSGFzQ29udGlndW91cykpOworICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHRUYWdSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChjb21waWxlQ29udGlndW91c0dldEJ5VmFsKG5vZGUsIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCBzdG9yYWdlUmVnLCByZXN1bHRUYWdSZWcsIHJlc3VsdFBheWxvYWRS
ZWcpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChwb2x5bW9ycGhpY0luY2x1ZGVz
QXJyYXlTdG9yYWdlKG5vZGUuYXJyYXlNb2RlKCkpKSB7CkBAIC0yODE4LDcgKzI4MTksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAg
ICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgICAgICAgICAg
ZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0VGFnUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEhhc0FycmF5U3Rv
cmFnZSkpOworICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1bHRUYWdSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGNvbXBpbGVBcnJheVN0b3JhZ2VHZXRCeVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZywgc3RvcmFnZVJlZywgcmVzdWx0VGFnUmVnLCByZXN1bHRQYXlsb2FkUmVnKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZmFsbFRocm91Z2guaXNTZXQoKSk7CkBAIC0z
MDQwLDEyICszMDQxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhbGxUaHJvdWdoOwogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgICAgICAgICBtX2ppdC5s
b2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CisgICAgICAgICAgICBtX2ppdC5hbmQzMihU
cnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBzdG9yYWdlUmVnKTsKICAgICAgICAgICAg
IGlmIChwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91cyhub2RlLmFycmF5TW9kZSgpKSkgewog
ICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5pc1NldCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgc3RvcmFnZVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNDb250aWd1
b3VzKSk7CisgICAgICAgICAgICAgICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHN0b3JhZ2VSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoQ29udGlndW91c1NoYXBlKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0
KCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBp
bGVDb250aWd1b3VzUHV0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0b3JhZ2VS
ZWcsIHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpKTsKICAgICAgICAgICAgIH0KQEAgLTMw
NTQsNyArMzA1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAg
ICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBzdG9yYWdlUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKEhhc0FycmF5U3RvcmFnZSkpOworICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzdG9yYWdlUmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKGNvbXBpbGVBcnJheVN0b3JhZ2VQdXRCeVZhbChub2RlLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZywgc3RvcmFnZVJlZywgdmFsdWVUYWdSZWcsIHZhbHVlUGF5bG9hZFJlZykpOwog
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODA5LDEyICsyODA5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdFJlZyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0UmVnLCBTdHJ1Y3R1cmU6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgcmVzdWx0UmVnKTsKKyAgICAgICAgICAgIG1faml0LmFuZDMyKFRydXN0
ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlc3VsdFJlZyk7CiAgICAgICAgICAgICBpZiAo
cG9seW1vcnBoaWNJbmNsdWRlc0NvbnRpZ3VvdXMobm9kZS5hcnJheU1vZGUoKSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoZmFsbFRocm91Z2guaXNTZXQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNDb250aWd1b3VzKSk7
CisgICAgICAgICAgICAgICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihD
b250aWd1b3VzU2hhcGUpKTsKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBp
bGVDb250aWd1b3VzR2V0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0b3JhZ2VS
ZWcsIHJlc3VsdFJlZykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHBvbHltb3Jw
aGljSW5jbHVkZXNBcnJheVN0b3JhZ2Uobm9kZS5hcnJheU1vZGUoKSkpIHsKQEAgLTI4MjIsNyAr
MjgyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAg
ICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSGFz
QXJyYXlTdG9yYWdlKSk7CisgICAgICAgICAgICAgICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoY29tcGlsZUFycmF5U3RvcmFnZUdldEJ5VmFsKG5vZGUsIGJhc2VSZWcsIHBy
b3BlcnR5UmVnLCBzdG9yYWdlUmVnLCByZXN1bHRSZWcpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEFTU0VSVChmYWxsVGhyb3VnaC5pc1NldCgpKTsKQEAgLTMwNTAsMTIgKzMwNTEsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgdGVtcG9yYXJ5UmVnKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wb3JhcnlSZWcsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpLCB0ZW1wb3JhcnlSZWcpOworICAgICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMy
KEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcG9yYXJ5UmVnKTsKICAgICAgICAgICAgIGlmIChwb2x5
bW9ycGhpY0luY2x1ZGVzQ29udGlndW91cyhub2RlLmFycmF5TW9kZSgpKSkgewogICAgICAgICAg
ICAgICAgIGlmIChmYWxsVGhyb3VnaC5pc1NldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRv
bmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgICAgICAgICAgZmFsbFRo
cm91Z2gubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBm
YWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVt
cG9yYXJ5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEhhc0NvbnRpZ3VvdXMpKTsK
KyAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcG9yYXJ5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KENvbnRpZ3VvdXNTaGFwZSkpOwogICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29t
cGlsZUNvbnRpZ3VvdXNQdXRCeVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc3RvcmFn
ZVJlZywgdmFsdWVSZWcsIHRlbXBvcmFyeVJlZykpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNBcnJheVN0b3JhZ2Uobm9kZS5hcnJheU1vZGUoKSkp
IHsKQEAgLTMwNjMsNyArMzA2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1w
KCkpOwogICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNo
VGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wb3JhcnlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSk7CisgICAgICAgICAgICAgICAgZmFsbFRo
cm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBvcmFy
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwog
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29tcGlsZUFycmF5U3RvcmFnZVB1dEJ5
VmFsKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzdG9yYWdlUmVnLCB2YWx1ZVJlZywgdGVt
cG9yYXJ5UmVnKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZmFsbFRocm91
Z2guaXNTZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAgICAgc3Bl
Y3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlVXNlLmluZGV4KCksIGp1bXBU
b0ZhaWwpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4aXRL
aW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRl
eCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1Zh
bHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIGp1bXBzVG9GYWlsKQogewogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2Fu
RXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwogICAgIFZlY3RvcjxNYWNyb0Fz
c2VtYmxlcjo6SnVtcCwgMTY+IGp1bXBWZWN0b3IgPSBqdW1wc1RvRmFpbC5qdW1wcygpOwpAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXgK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5kZXgs
IGp1bXBWZWN0b3JbaV0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNo
ZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgRWRnZSBub2Rl
VXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKQordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
JiBqdW1wc1RvRmFpbCkKIHsKICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQo
KSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVVc2UuaW5kZXgoKSwganVtcHNUb0ZhaWwpOwpAQCAtMjIy
LDcgKzIyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkMKICAg
ICBjb252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQodmFsdWVSZWNvdmVyeSk7CiB9CiAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpT
VmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVS
ZWNvdmVyeSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJ
bmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCwgY29uc3Qg
VmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKIHsKICAgICBBU1NFUlQoYXQobV9jb21waWxl
SW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKICAgICBWZWN0
b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIDE2PiBqdW1wVmVjdG9yID0ganVtcHNUb0ZhaWwuanVt
cHMoKTsKQEAgLTMyNyw2ICszMjcsNzcgQEAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3IqIFNw
ZWN1bGF0aXZlSgogICAgIH0KIH0KIAorSklUQ29tcGlsZXI6Okp1bXBMaXN0IFNwZWN1bGF0aXZl
SklUOjpqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKEdQUlJlZyB0ZW1wR1BSLCBBcnJheTo6
TW9kZSBhcnJheU1vZGUpCit7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHJlc3VsdDsKKyAg
ICAKKyAgICBzd2l0Y2ggKGFycmF5TW9kZSkgeworICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VP
VVNfTU9ERVM6IHsKKyAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hh
cGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihDb250aWd1b3VzU2hhcGUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IEFSUkFZX1dJVEhfQ09OVElHVU9VU19NT0RFUzogeworICAgICAgICBtX2ppdC5hbmQzMihUcnVz
dGVkSW1tMzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQUik7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihJc0Fy
cmF5IHwgQ29udGlndW91c1NoYXBlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBOT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzogeworICAgICAgICBtX2ppdC5hbmQzMihU
cnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wR1BSKTsKKyAgICAgICAgaWYgKGlz
U2xvd1B1dEFjY2VzcyhhcnJheU1vZGUpKSB7CisgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVz
dGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgdGVtcEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNo
YXBlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRl
bXBHUFIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdl
OgorICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZToKKyAgICBjYXNl
IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczogeworICAgICAgICBtX2pp
dC5hbmQzMihUcnVzdGVkSW1tMzIoSXNBcnJheSB8IEluZGV4aW5nU2hhcGVNYXNrKSwgdGVtcEdQ
Uik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihBcnJheVN0b3Jh
Z2VTaGFwZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQXJyYXk6OkFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6WmVybywgdGVtcEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkp
OworICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCB0
ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNo
YXBlKSwgdGVtcEdQUik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICBtX2pp
dC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHRlbXBH
UFIsCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBQT0xZTU9SUEhJQ19NT0RFUzogeworICAgICAgICBpZiAobW9kZUlzSlNBcnJheShhcnJheU1v
ZGUpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKAorICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3QzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHRlbXBHUFIsIFRydXN0ZWRJbW0zMihJc0FycmF5KSkpOworICAgICAgICB9CisgICAgICAgIHJl
c3VsdC5hcHBlbmQoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0MzIoCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihJbmRleGlu
Z1NoYXBlTWFzaykpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUmIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG1vZGVJc1NwZWNpZmljKG5vZGUuYXJyYXlNb2RlKCkpKTsKQEAgLTM0Nyw5
NyArNDE4LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSYgbm8KICAg
ICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgIGV4cGVjdGVkQ2xhc3NJbmZvID0gJkpTU3Ry
aW5nOjpzX2luZm87CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VP
VVNfTU9ERVM6IHsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIG1f
aml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Olplcm8sCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNDb250aWd1b3VzKSkpOwot
ICAgICAgICAKLSAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQVJSQVlfV0lUSF9DT05USUdVT1VTX01PREVTOiB7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRl
bXAuZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQ
Uik7Ci0gICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIs
IFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgY2FuIGJlIHR1cm5lZCBpbnRvIGEgc2luZ2xlIGJyYW5jaC4gQnV0IHdlIGN1
cnJlbnRseSBoYXZlIG5vIGV2aWRlbmNlCi0gICAgICAgIC8vIHRoYXQgZG9pbmcgc28gd291bGQg
YmUgcHJvZml0YWJsZSwgbm9yIGRvIEkgZmVlbCBjb21mb3J0YWJsZSB3aXRoIHRoZSBwcmVzZW50
IHRlc3QKLSAgICAgICAgLy8gY292ZXJhZ2UgZm9yIHRoaXMgY29kZSBwYXRoLgotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihJc0FycmF5KSkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAg
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3QzMigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihIYXNDb250aWd1b3VzKSkpOwotICAgICAg
ICAKLSAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgTk9OX0FSUkFZX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKLSAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAg
ICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigKLSAgICAgICAgICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5v
ZGUuYXJyYXlNb2RlKCkpID8gKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3Jh
Z2UpIDogSGFzQXJyYXlTdG9yYWdlKSkpOwotICAgICAgICAKLSAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQVJSQVlfV0lU
SF9BUlJBWV9TVE9SQUdFX01PREVTOiB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwotICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgIG1faml0LmxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHR1cm5lZCBp
bnRvIGEgc2luZ2xlIGJyYW5jaC4gQnV0IHdlIGN1cnJlbnRseSBoYXZlIG5vIGV2aWRlbmNlCi0g
ICAgICAgIC8vIHRoYXQgZG9pbmcgc28gd291bGQgYmUgcHJvZml0YWJsZSwgbm9yIGRvIEkgZmVl
bCBjb21mb3J0YWJsZSB3aXRoIHRoZSBwcmVzZW50IHRlc3QKLSAgICAgICAgLy8gY292ZXJhZ2Ug
Zm9yIHRoaXMgY29kZSBwYXRoLgotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAg
ICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVt
cEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkpOwotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigKLSAgICAgICAgICAgICAgICAgICAgaXNTbG93UHV0QWNjZXNzKG5vZGUuYXJyYXlNb2Rl
KCkpID8gKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpIDogSGFzQXJy
YXlTdG9yYWdlKSkpOwotICAgICAgICAKLSAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VPVVNf
TU9ERVM6CisgICAgY2FzZSBBUlJBWV9XSVRIX0NPTlRJR1VPVVNfTU9ERVM6CisgICAgY2FzZSBO
T05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICBjYXNlIEFSUkFZX1dJVEhfQVJSQVlf
U1RPUkFHRV9NT0RFUzoKICAgICBjYXNlIFBPTFlNT1JQSElDX01PREVTOiB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgLy8gRklYTUU6
IFRoaXMgY2FuIGJlIHR1cm5lZCBpbnRvIGEgc2luZ2xlIGJyYW5jaC4gQnV0IHdlIGN1cnJlbnRs
eSBoYXZlIG5vIGV2aWRlbmNlCi0gICAgICAgIC8vIHRoYXQgZG9pbmcgc28gd291bGQgYmUgcHJv
Zml0YWJsZSwgbm9yIGRvIEkgZmVlbCBjb21mb3J0YWJsZSB3aXRoIHRoZSBwcmVzZW50IHRlc3QK
LSAgICAgICAgLy8gY292ZXJhZ2UgZm9yIHRoaXMgY29kZSBwYXRoLgotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJ
c0FycmF5KSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3QzMigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigKLSAgICAgICAgICAgICAgICAgICAgKHBvbHltb3Jw
aGljSW5jbHVkZXNDb250aWd1b3VzKG5vZGUuYXJyYXlNb2RlKCkpID8gSGFzQ29udGlndW91cyA6
IDApCi0gICAgICAgICAgICAgICAgICAgIHwgKHBvbHltb3JwaGljSW5jbHVkZXNBcnJheVN0b3Jh
Z2Uobm9kZS5hcnJheU1vZGUoKSkgPyBIYXNBcnJheVN0b3JhZ2UgOiAwKSkpKTsKKyAgICAgICAg
ICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS5hcnJheU1vZGUo
KSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAg
ICByZXR1cm47CkBAIC00ODQsMjQgKzQ3NywyNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJh
eWlmeShOb2RlJiBub2RlCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIEdQ
UlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIAotICAgIEluZGV4aW5nVHlw
ZSBkZXNpcmVkSW5kZXhpbmdUeXBlTWFzazsKKyAgICBBcnJheTo6TW9kZSBkZXNpcmVkQXJyYXlN
b2RlOwogICAgIAogICAgIHN3aXRjaCAobm9kZS5hcnJheU1vZGUoKSkgewogICAgIGNhc2UgQXJy
YXk6OkJsYW5rVG9Db250aWd1b3VzOgotICAgICAgICBkZXNpcmVkSW5kZXhpbmdUeXBlTWFzayA9
IEhhc0NvbnRpZ3VvdXM7CisgICAgICAgIGRlc2lyZWRBcnJheU1vZGUgPSBBcnJheTo6Q29udGln
dW91czsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheTo6QmxhbmtUb0FycmF5U3RvcmFn
ZToKLSAgICAgICAgZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sgPSBIYXNBcnJheVN0b3JhZ2U7Cisg
ICAgICAgIGRlc2lyZWRBcnJheU1vZGUgPSBBcnJheTo6QXJyYXlTdG9yYWdlOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFycmF5OjpCbGFua1RvU2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAg
ICAgZGVzaXJlZEluZGV4aW5nVHlwZU1hc2sgPSBIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0
QXJyYXlTdG9yYWdlOworICAgICAgICBkZXNpcmVkQXJyYXlNb2RlID0gQXJyYXk6OlNsb3dQdXRB
cnJheVN0b3JhZ2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9Db250
aWd1b3VzT3JBcnJheVN0b3JhZ2U6Ci0gICAgICAgIGRlc2lyZWRJbmRleGluZ1R5cGVNYXNrID0g
SGFzQ29udGlndW91cyB8IEhhc0FycmF5U3RvcmFnZTsKKyAgICAgICAgZGVzaXJlZEFycmF5TW9k
ZSA9IEFycmF5OjpDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGRlc2lyZWRJbmRleGluZ1R5cGVN
YXNrID0gMDsKKyAgICAgICAgZGVzaXJlZEFycmF5TW9kZSA9IEFycmF5OjpVbmRlY2lkZWQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAgLTUxMiwxOSArNTA1LDIwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUKICAgICAgICAgCiAgICAgbV9qaXQubG9h
ZFB0cigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgCisgICAgbV9qaXQubG9hZDgo
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICAKICAgICAvLyBXZSBj
YW4gc2tpcCBhbGwgdGhhdCBjb21lcyBuZXh0IGlmIHdlIGFscmVhZHkgaGF2ZSBhcnJheSBzdG9y
YWdlLgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuYnJhbmNoVGVz
dDgoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
LAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGRlc2lyZWRJbmRleGluZ1R5
cGVNYXNrKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlcyA9CisgICAg
ICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgZGVzaXJlZEFycmF5TW9k
ZSk7CiAgICAgICAgIAogICAgIG1faml0LmxvYWRQdHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHRlbXBHUFIp
OwogICAgICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgp
OwogICAgICAgICAKLSAgICBzbG93Q2FzZS5saW5rKCZtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmxp
bmsoJm1faml0KTsKICAgICAKICAgICAvLyBJZiB3ZSdyZSBhbGxlZ2VkbHkgY3JlYXRpbmcgY29u
dGlndW91cyBzdG9yYWdlIGFuZCB0aGUgaW5kZXggaXMgYm9ndXMsIHRoZW4KICAgICAvLyBqdXN0
IGRvbid0LgpAQCAtNTY4LDE3ICs1NjIsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlp
ZnkoTm9kZSYgbm9kZQogICAgIC8vIGFib3V0IGEgbG9hZC4KICAgICBtX2ppdC5sb2FkUHRyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAgICAgCisgICAgCiAgICAgLy8gRmluYWxs
eSwgY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBraW5kIG9mIGFycmF5IHN0b3JhZ2UgdGhhdCB3ZSB3
YW50ZWQgdG8gZ2V0LgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1
bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgLy8gYnl0ZWNvZGUg
b3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4
ZWN1dGVkLgogICAgIC8vIFRoYXQncyBmaW5lLCBzaW5jZSBhcnJheWlmaWNhdGlvbiBpcyBub3Qg
dXNlci12aXNpYmxlLgorICAgIG1faml0LmxvYWQ4KAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVHUFIpOwogICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgIFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
LAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihkZXNpcmVkSW5kZXhp
bmdUeXBlTWFzaykpKTsKKyAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShzdHJ1
Y3R1cmVHUFIsIGRlc2lyZWRBcnJheU1vZGUpKTsKICAgICAgICAgCiAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CiAgICAgc3RvcmFnZVJlc3VsdCh0ZW1wR1BSLCBtX2NvbXBpbGVJbmRleCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMzYsOCArMjMzNiw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCk7CiAgICAgdm9pZCBzcGVjdWxhdGlvbkNo
ZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBFZGdlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBq
dW1wVG9GYWlsKTsKICAgICAvLyBBZGQgYSBzZXQgb2Ygc3BlY3VsYXRpb24gY2hlY2tzIHdpdGhv
dXQgYWRkaXRpb25hbCByZWNvdmVyeS4KLSAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtp
bmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBq
dW1wc1RvRmFpbCk7Ci0gICAgdm9pZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVl
U291cmNlLCBFZGdlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsKKyAg
ICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRl
eCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCk7CisgICAgdm9p
ZCBzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBFZGdlLCBjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWlsKTsKICAgICAvLyBBZGQgYSBzcGVj
dWxhdGlvbiBjaGVjayB3aXRoIGFkZGl0aW9uYWwgcmVjb3ZlcnkuCiAgICAgdm9pZCBzcGVjdWxh
dGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlSW5kZXgsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFNwZWN1bGF0aW9uUmVjb3ZlcnkmKTsKICAgICB2
b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIEVkZ2UsIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFNwZWN1bGF0aW9uUmVjb3ZlcnkmKTsK
QEAgLTIzNTgsNyArMjM1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlOiBub3Qgc3BlY2lmeWlu
ZyB0aGUgdmFsdWVSZWNvdmVyeSBhcmd1bWVudCAobGVhdmluZyBpdCBhcyBWYWx1ZVJlY292ZXJ5
KCkpIGltcGxpZXMKICAgICAvLyB0aGF0IHlvdSd2ZSBlbnN1cmVkIHRoYXQgdGhlcmUgZXhpc3Rz
IGEgTW92SGludCBwcmlvciB0byB5b3VyIHVzZSBvZiBmb3J3YXJkU3BlY3VsYXRpb25DaGVjaygp
LgogICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3Vy
Y2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFs
dWVSZWNvdmVyeSYgPSBWYWx1ZVJlY292ZXJ5KCkpOwotICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0
aW9uQ2hlY2soRXhpdEtpbmQsIEpTVmFsdWVTb3VyY2UsIE5vZGVJbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgPSBWYWx1ZVJl
Y292ZXJ5KCkpOworICAgIHZvaWQgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQsIEpT
VmFsdWVTb3VyY2UsIE5vZGVJbmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBq
dW1wc1RvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgPSBWYWx1ZVJlY292ZXJ5KCkpOwogICAg
IHZvaWQgc3BlY3VsYXRpb25DaGVja1dpdGhDb25kaXRpb25hbERpcmVjdGlvbihFeGl0S2luZCwg
SlNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWls
LCBib29sIGlzRm9yd2FyZCk7CiAgICAgLy8gQ2FsbGVkIHdoZW4gd2Ugc3RhdGljYWxseSBkZXRl
cm1pbmUgdGhhdCBhIHNwZWN1bGF0aW9uIHdpbGwgZmFpbC4KICAgICB2b2lkIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKEV4aXRLaW5kLCBKU1ZhbHVlUmVncywgTm9kZUluZGV4KTsKQEAg
LTIzNzEsNiArMjM3MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBUeXBlZEFycmF5RGVz
Y3JpcHRvciogdHlwZWRBcnJheURlc2NyaXB0b3IoQXJyYXk6Ok1vZGUpOwogICAgIAorICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKEdQUlJlZyB0
ZW1wV2l0aEluZGV4aW5nVHlwZVJlZywgQXJyYXk6Ok1vZGUgYXJyYXlNb2RlKTsKICAgICB2b2lk
IGNoZWNrQXJyYXkoTm9kZSYpOwogICAgIHZvaWQgYXJyYXlpZnkoTm9kZSYpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlz
aW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDkgQEAgaW5saW5lIHZvaWQgSklUOjpl
bWl0QWxsb2NhdGVKU0FycmF5KHVucwogICAgIHNpemVfdCBpbml0aWFsU3RvcmFnZSA9IEJ1dHRl
cmZseTo6dG90YWxTaXplKDAsIDAsIHRydWUsIGluaXRpYWxMZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKTsKIAogICAgIGxvYWRQdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5h
ZGRyZXNzT2ZBcnJheVN0cnVjdHVyZSgpLCBzY3JhdGNoKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoSGFzQ29udGlndW91cykpKTsKKyAgICBsb2FkOChBZGRyZXNz
KHNjcmF0Y2gsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzdG9yYWdlUHRyKTsK
KyAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBzdG9yYWdlUHRyKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgc3RvcmFnZVB0ciwgVHJ1c3RlZElt
bTMyKENvbnRpZ3VvdXNTaGFwZSkpKTsKIAogICAgIC8vIFdlIGFsbG9jYXRlIHRoZSBiYWNraW5n
IHN0b3JlIGZpcnN0IHRvIGVuc3VyZSB0aGF0IGdhcmJhZ2UgY29sbGVjdGlvbiAKICAgICAvLyBk
b2Vzbid0IGhhcHBlbiBkdXJpbmcgSlNBcnJheSBpbml0aWFsaXphdGlvbi4KQEAgLTU4MSw3ICs1
ODMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXJyYXlQcm9maWxlU2F3KEFycmF5CiAKIGlubGlu
ZSBKSVRBcnJheU1vZGUgSklUOjpjaG9vc2VBcnJheU1vZGUoQXJyYXlQcm9maWxlKiBwcm9maWxl
KQogewotICAgIGlmIChhcnJheVByb2ZpbGVTYXcocHJvZmlsZSwgSGFzQXJyYXlTdG9yYWdlKSkK
KyAgICBpZiAoYXJyYXlQcm9maWxlU2F3KHByb2ZpbGUsIEFycmF5U3RvcmFnZVNoYXBlKSkKICAg
ICAgICAgcmV0dXJuIEpJVEFycmF5U3RvcmFnZTsKICAgICByZXR1cm4gSklUQ29udGlndW91czsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTMxMjYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEy
LDYgKzIxMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBl
bWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CisgICAgYW5kMzIo
VHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogCiAgICAgUGF0Y2hhYmxl
SnVtcCBiYWRUeXBlOwogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTI1MCw3ICsyNTEsNyBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNHZXRCeVZhCiB7CiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hUZXN0MzIo
WmVybywgcmVnVDEsIFRydXN0ZWRJbW0zMihIYXNDb250aWd1b3VzKSk7CisgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKENvbnRpZ3Vv
dXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpKSkpOwpAQCAtMjY2LDcgKzI2Nyw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0QXJyYXlTdG9yYWdlR2V0QnkKIHsKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0g
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpKTsKKyAgICBhZGQz
MihUcnVzdGVkSW1tMzIoLUFycmF5U3RvcmFnZVNoYXBlKSwgcmVnVDEsIHJlZ1QzKTsKKyAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUpKTsKICAgICAKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1Qz
KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFk
ZHJlc3MocmVnVDMsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0z
MjcsNiArMzI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwogICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBhbmQz
MihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMSk7CiAgICAgCiAgICAgUGF0
Y2hhYmxlSnVtcCBiYWRUeXBlOwogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTM1OSw3ICsz
NjIsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdENvbnRpZ3VvdXNQdXRCeVZhCiAgICAgCiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2hUZXN0MzIoWmVybywgcmVnVDEsIFRydXN0ZWRJbW0zMihIYXNDb250aWd1b3VzKSk7CisgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMy
KENvbnRpZ3VvdXNTaGFwZSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwogICAgIEp1bXAgb3V0T2ZCb3VuZHMg
PSBicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTM5Myw3ICszOTYsNyBAQCBKSVQ6Okp1bXBM
aXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hUZXN0MzIoWmVybywgcmVn
VDEsIFRydXN0ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hh
YmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hh
cGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHJlZ1QzKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3Zl
T3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3Ro
T2Zmc2V0KCkpKSk7CkBAIC03NTAsNyArNzUzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0
ZWNvZGVJbmRleChyZWdUMiwgcmVnVDMsIHN0dWJJbmZvLT5ieXRlY29kZUluZGV4KTsKICAgICBK
dW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRydXN0ZWRJbW0z
MihJc0FycmF5KSk7Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gYnJhbmNoVGVzdDMyKFplcm8s
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSk7CisgICAgSnVtcCBmYWlsdXJl
Q2FzZXMyID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSW5kZXhpbmdT
aGFwZU1hc2spKTsKICAgICAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBsZW5n
dGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTMxMjYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw2ICsxMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3Ry
dWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7CiAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOwor
ICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKIAogICAg
IFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xNTEs
NyArMTUyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRDb250aWd1b3VzR2V0QnlWYQogewog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQ29udGlndW91cykpOworICAg
IGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0z
MihDb250aWd1b3VzU2hhcGUpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEJhc2VJbmRleChyZWdUMiwgcmVnVDEs
IFNjYWxlUHRyKSwgcmVnVDApOwpAQCAtMTYzLDggKzE2NCw5IEBAIEpJVDo6SnVtcExpc3QgSklU
OjplbWl0Q29udGlndW91c0dldEJ5VmEKIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9y
YWdlR2V0QnlWYWwoSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewogICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
VGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xv
d1B1dEFycmF5U3RvcmFnZSkpOworCisgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJheVN0b3Jh
Z2VTaGFwZSksIHJlZ1QyLCByZWdUMyk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KEFib3ZlLCByZWdUMywgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFy
cmF5U3RvcmFnZVNoYXBlKSk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVj
dG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yOTUsNiArMjk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChyZWdUMCwgYmFzZSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIs
IHJlZ1QzLCBwcm9maWxlKTsKKyAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1h
c2spLCByZWdUMik7CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwogICAgIEp1bXBM
aXN0IHNsb3dDYXNlczsKQEAgLTMyNyw3ICszMzAsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dENvbnRpZ3VvdXNQdXRCeVZhCiAgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxl
QnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQ29udGlndW91cykpOwor
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIFRydXN0ZWRJ
bW0zMihDb250aWd1b3VzU2hhcGUpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91
bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC0zNjAsNyArMzYzLDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeQogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoVGVzdDMyKFplcm8s
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSk7CisgICAgYmFkVHlwZSA9IHBh
dGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFn
ZVNoYXBlKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9y
RXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9m
ZnNldCgpKSkpOwogCkBAIC03ODcsNyArNzkwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
UGF0Y2hHZXRBcnJheUxlbgogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0
ZWNvZGVJbmRleChyZWdUMiwgcmVnVDEsIHN0dWJJbmZvLT5ieXRlY29kZUluZGV4KTsKICAgICBK
dW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRydXN0ZWRJbW0z
MihJc0FycmF5KSk7Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gYnJhbmNoVGVzdDMyKFplcm8s
IHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlIHwgSGFzQ29udGlndW91cykpOwor
ICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3Rl
ZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0g
Z2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDMpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20JKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcxLDcgKzEx
NzEsNyBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QzXSwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBidGl6
IHQyLCBJc0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKLSAgICBidGl6IHQyLCAoSGFzQ29u
dGlndW91cyB8IEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpLCAub3BH
ZXRBcnJheUxlbmd0aFNsb3cKKyAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0
QXJyYXlMZW5ndGhTbG93CiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgbG9hZHAgMzJbUENdLCB0
MgogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCkBAIC0xMzAyLDExICsx
MzAyLDExIEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgogICAgIGxvYWRwIDE2W1BDXSwgdDMKICAgICBhcnJheVByb2ZpbGUodDIs
IHQzLCB0MSkKLSAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdldEJ5VmFsU2xvdwog
ICAgIGxvYWRpIDEyW1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgbG9hZHAgSlNPYmplY3Q6Om1f
YnV0dGVyZmx5W3QwXSwgdDMKLSAgICBidGl6IHQyLCBIYXNDb250aWd1b3VzLCAub3BHZXRCeVZh
bE5vdENvbnRpZ3VvdXMKKyAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgIGJpbmVx
IHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwogICAgIAogICAg
IGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fcHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0
MSwgOF0sIHQyCkBAIC0xMzE0LDcgKzEzMTQsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAg
ICBqbXAgLm9wR2V0QnlWYWxEb25lCiAKIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKLSAgICBi
dGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlLCAub3BHZXRC
eVZhbFNsb3cKKyAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgIGJpYSB0MiwgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xv
dwogICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6
Om1fdmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZGkgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgogICAgIGxvYWRpIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCkBAIC0xNDAw
LDcgKzE0MDEsOCBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBsb2FkaSA4W1BDXSwgdDAK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQzLCAub3BQ
dXRCeVZhbFNsb3cpCiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QxXSwgdDAKLSAg
ICBidGl6IHQyLCBIYXNDb250aWd1b3VzLCAub3BQdXRCeVZhbE5vdENvbnRpZ3VvdXMKKyAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUs
IC5vcFB1dEJ5VmFsTm90Q29udGlndW91cwogCiAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5ndGhbdDBdLCAub3BQdXRCeVZh
bENvbnRpZ3VvdXNPdXRPZkJvdW5kcwogLm9wUHV0QnlWYWxDb250aWd1b3VzU3RvcmVSZXN1bHQ6
CkBAIC0xNDIyLDcgKzE0MjQsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBqbXAgLm9w
UHV0QnlWYWxDb250aWd1b3VzU3RvcmVSZXN1bHQKIAogLm9wUHV0QnlWYWxOb3RDb250aWd1b3Vz
OgotICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlu
ZXEgdDIsIEFycmF5U3RvcmFnZVNoYXBlLCAub3BQdXRCeVZhbFNsb3cKICAgICBiaWFlcSB0Mywg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0
MF0sIC5vcFB1dEJ5VmFsU2xvdwogICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRh
Z09mZnNldFt0MCwgdDMsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEFycmF5U3RvcmFn
ZUVtcHR5CiAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0OgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20JKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE4LDcgKzEwMTgsNyBA
QCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBidGl6IHQyLCBJ
c0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKLSAgICBidGl6IHQyLCAoSGFzQ29udGlndW91
cyB8IEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpLCAub3BHZXRBcnJh
eUxlbmd0aFNsb3cKKyAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QXJyYXlM
ZW5ndGhTbG93CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkcCA2NFtQQiwg
UEMsIDhdLCB0MgogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCkBAIC0x
MTUwLDcgKzExNTAsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlSW50MzIodDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgc3hpMnAgdDEsIHQx
CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMKLSAgICBidGl6IHQyLCBI
YXNDb250aWd1b3VzLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKyAgICBhbmRpIEluZGV4aW5n
U2hhcGVNYXNrLCB0MgorICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFs
Tm90Q29udGlndW91cwogCiAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKICAgICBs
b2FkaXMgOFtQQiwgUEMsIDhdLCB0MApAQCAtMTE1OSw3ICsxMTYwLDggQEAgX2xsaW50X29wX2dl
dF9ieV92YWw6CiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQogCiAub3BHZXRCeVZhbE5vdENvbnRp
Z3VvdXM6Ci0gICAgYnRpeiB0MiwgSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xvd1B1dEFycmF5U3Rv
cmFnZSwgLm9wR2V0QnlWYWxTbG93CisgICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAg
ICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAu
b3BHZXRCeVZhbFNsb3cKICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwogICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZHAgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0
MywgdDEsIDhdLCB0MgpAQCAtMTI0NCw3ICsxMjQ2LDggQEAgX2xsaW50X29wX3B1dF9ieV92YWw6
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQwLCB0MywgLm9wUHV0QnlWYWxTbG93
KQogICAgIHN4aTJwIHQzLCB0MwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0s
IHQwCi0gICAgYnRpeiB0MiwgSGFzQ29udGlndW91cywgLm9wUHV0QnlWYWxOb3RDb250aWd1b3Vz
CisgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKKyAgICBiaW5lcSB0MiwgQ29udGlndW91
c1NoYXBlLCAub3BQdXRCeVZhbE5vdENvbnRpZ3VvdXMKICAgICAKICAgICBiaWFlcSB0MywgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0MF0s
IC5vcFB1dEJ5VmFsQ29udGlndW91c091dE9mQm91bmRzCiAub3BQdXRCeVZhbENvbnRpZ3VvdXNT
dG9yZVJlc3VsdDoKQEAgLTEyNjUsNyArMTI2OCw3IEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgog
ICAgIGptcCAub3BQdXRCeVZhbENvbnRpZ3VvdXNTdG9yZVJlc3VsdAogCiAub3BQdXRCeVZhbE5v
dENvbnRpZ3VvdXM6Ci0gICAgYnRpeiB0MiwgSGFzQXJyYXlTdG9yYWdlLCAub3BQdXRCeVZhbFNs
b3cKKyAgICBiaW5lcSB0MiwgQXJyYXlTdG9yYWdlU2hhcGUsIC5vcFB1dEJ5VmFsU2xvdwogICAg
IGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVj
dG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTbG93CiAgICAgYnRweiBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yW3QwLCB0MywgOF0sIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHkKIC5vcFB1dEJ5
VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMzEyNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDEwIEBAIGVuZAogCiAjIENvbnN0YW50IGZvciBy
ZWFzb25pbmcgYWJvdXQgYnV0dGVyZmxpZXMuCiBjb25zdCBJc0FycmF5ID0gMQotY29uc3QgSGFz
Q29udGlndW91cyA9IDIKLWNvbnN0IEhhc0FycmF5U3RvcmFnZSA9IDgKLWNvbnN0IEhhc1Nsb3dQ
dXRBcnJheVN0b3JhZ2UgPSAxNgorY29uc3QgSW5kZXhpbmdTaGFwZU1hc2sgPSAzMAorY29uc3Qg
Q29udGlndW91c1NoYXBlID0gMjYKK2NvbnN0IEFycmF5U3RvcmFnZVNoYXBlID0gMjgKK2NvbnN0
IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSA9IDMwCiAKICMgVHlwZSBjb25zdGFudHMuCiBjb25z
dCBTdHJpbmdUeXBlID0gNQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5k
ZXhpbmdUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5kZXhpbmdUeXBlLmgJKHJldmlzaW9uIDEzMTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGV4aW5nVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCwxMyBA
QCB0eXBlZGVmIHVpbnQ4X3QgSW5kZXhpbmdUeXBlOwogCiAvLyBGbGFncyBmb3IgdGVzdGluZyB0
aGUgcHJlc2VuY2Ugb2YgY2FwYWJpbGl0aWVzLgogc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJ
c0FycmF5ICAgICAgICAgICAgICAgICAgPSAxOwotc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBI
YXNDb250aWd1b3VzICAgICAgICAgICAgPSAyOwotc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBI
YXNBcnJheVN0b3JhZ2UgICAgICAgICAgPSA4Owotc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBI
YXNTbG93UHV0QXJyYXlTdG9yYWdlICAgPSAxNjsKKworLy8gVGhlIHNoYXBlIG9mIHRoZSBpbmRl
eGVkIHByb3BlcnR5IHN0b3JhZ2UuCitzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEluZGV4aW5n
U2hhcGVNYXNrICAgICAgICA9IDMwOworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb0luZGV4
aW5nU2hhcGUgICAgICAgICAgPSAwOyAKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQ29udGln
dW91c1NoYXBlICAgICAgICAgID0gMjY7CitzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5
U3RvcmFnZVNoYXBlICAgICAgICA9IDI4Oworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBTbG93
UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMDsKIAogLy8gQWRkaXRpb25hbCBmbGFncyBmb3IgdHJh
Y2tpbmcgdGhlIGhpc3Rvcnkgb2YgdGhlIHR5cGUuIFRoZXNlIGFyZSB1c3VhbGx5CiAvLyBtYXNr
ZWQgb2ZmIHVubGVzcyB5b3UgYXNrIGZvciB0aGVtIGRpcmVjdGx5LgpAQCAtNDQsMTMgKzQ4LDEz
IEBAIHN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgTWF5SGF2ZUluZGV4ZWQKIAogLy8gTGlzdCBv
ZiBhY2NlcHRhYmxlIGFycmF5IHR5cGVzLgogc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25B
cnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLXN0YXRpYyBjb25zdCBJbmRleGluZ1R5
cGUgTm9uQXJyYXlXaXRoQ29udGlndW91cyAgICAgICAgICA9IEhhc0NvbnRpZ3VvdXM7Ci1zdGF0
aWMgY29uc3QgSW5kZXhpbmdUeXBlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSAgICAgICAgPSBI
YXNBcnJheVN0b3JhZ2U7Ci1zdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIE5vbkFycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2UgPSBIYXNTbG93UHV0QXJyYXlTdG9yYWdlOworc3RhdGljIGNvbnN0
IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhDb250aWd1b3VzICAgICAgICAgID0gQ29udGlndW91
c1NoYXBlOworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhBcnJheVN0b3Jh
Z2UgICAgICAgID0gQXJyYXlTdG9yYWdlU2hhcGU7CitzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBl
IE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UgPSBTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGU7CiBzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5Q2xhc3MgICAgICAgICAgICAgICAg
ICAgICAgPSBJc0FycmF5OyAvLyBJJ2Qgd2FudCB0byBjYWxsIHRoaXMgIkFycmF5IiBidXQgdGhp
cyB3b3VsZCBsZWFkIHRvIGRpc2FzdHJvdXMgbmFtZXNwYWNlIHBvbGx1dGlvbi4KLXN0YXRpYyBj
b25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoQ29udGlndW91cyAgICAgICAgICAgICA9IElzQXJy
YXkgfCBIYXNDb250aWd1b3VzOwotc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheVdpdGhB
cnJheVN0b3JhZ2UgICAgICAgICAgID0gSXNBcnJheSB8IEhhc0FycmF5U3RvcmFnZTsKLXN0YXRp
YyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSAgICA9IElz
QXJyYXkgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlOworc3RhdGljIGNvbnN0IEluZGV4aW5nVHlw
ZSBBcnJheVdpdGhDb250aWd1b3VzICAgICAgICAgICAgID0gSXNBcnJheSB8IENvbnRpZ3VvdXNT
aGFwZTsKK3N0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoQXJyYXlTdG9yYWdlICAg
ICAgICAgICA9IElzQXJyYXkgfCBBcnJheVN0b3JhZ2VTaGFwZTsKK3N0YXRpYyBjb25zdCBJbmRl
eGluZ1R5cGUgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSAgICA9IElzQXJyYXkgfCBTbG93
UHV0QXJyYXlTdG9yYWdlU2hhcGU7CiAKICNkZWZpbmUgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVT
IFwKICAgICBOb25BcnJheTogICAgICAgICAgICAgICAgICAgIFwKQEAgLTcxLDEyICs3NSw3IEBA
IHN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoU2xvd1AKIAogc3RhdGljIGlubGlu
ZSBib29sIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiB7
Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKLSAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KKyAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hh
cGVNYXNrKSAhPSBOb0luZGV4aW5nU2hhcGU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlcihJbmRleGluZ1R5cGUgdHlwZSkKQEAgLTg2LDE3ICs4NSwyNCBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoSW5kCiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBoYXNDb250aWd1b3VzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiB7Ci0gICAgcmV0dXJu
ICEhKGluZGV4aW5nVHlwZSAmIEhhc0NvbnRpZ3VvdXMpOworICAgIHJldHVybiAoaW5kZXhpbmdU
eXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID09IENvbnRpZ3VvdXNTaGFwZTsKK30KKworLy8gRklY
TUU6IFRoaXMgaXMgYW4gYXdrd2FyZCBuYW1lLiBUaGlzIHNob3VsZCByZWFsbHkgYmUgY2FsbGVk
IGhhc0FycmF5U3RvcmFnZSgpCisvLyBhbmQgdGhlbiBuZXh0IG1ldGhvZCBkb3duIHNob3VsZCBi
ZSBjYWxsZWQgaGFzQW55QXJyYXlTdG9yYWdlKCkuCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzRmFz
dEFycmF5U3RvcmFnZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQoreworICAgIHJldHVybiAo
aW5kZXhpbmdUeXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID09IEFycmF5U3RvcmFnZVNoYXBlOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXJyYXlTdG9yYWdlKEluZGV4aW5nVHlwZSBpbmRl
eGluZ1R5cGUpCiB7Ci0gICAgcmV0dXJuICEhKGluZGV4aW5nVHlwZSAmIChIYXNBcnJheVN0b3Jh
Z2UgfCBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KChpbmRleGluZ1R5cGUgJiBJbmRleGluZ1NoYXBlTWFzaykgLSBBcnJheVN0b3JhZ2VT
aGFwZSkgPD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0g
QXJyYXlTdG9yYWdlU2hhcGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlU2xv
d1B1dChJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogewotICAgIHJldHVybiAhIShpbmRleGlu
Z1R5cGUgJiBIYXNTbG93UHV0QXJyYXlTdG9yYWdlKTsKKyAgICByZXR1cm4gKGluZGV4aW5nVHlw
ZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7CiB9CiAK
IGNvbnN0IGNoYXIqIGluZGV4aW5nVHlwZVRvU3RyaW5nKEluZGV4aW5nVHlwZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAxMzEyNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw3ICszNTYsOCBAQCBPYmplY3RzV2l0
aEJyb2tlbkluZGV4aW5nRmluZGVyOjpPYmplY3RzCiBpbmxpbmUgYm9vbCBoYXNCcm9rZW5JbmRl
eGluZyhKU09iamVjdCogb2JqZWN0KQogewogICAgIC8vIFRoaXMgd2lsbCBjaGFuZ2UgaWYgd2Ug
aGF2ZSBtb3JlIGluZGV4aW5nIHR5cGVzLgotICAgIHJldHVybiAhIShvYmplY3QtPnN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSAmIChIYXNBcnJheVN0b3JhZ2UgfCBIYXNDb250aWd1b3VzKSk7
CisgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKTsKKyAgICByZXR1cm4gaGFzQ29udGlndW91cyh0eXBlKSB8fCBoYXNGYXN0QXJyYXlTdG9y
YWdlKHR5cGUpOwogfQogCiB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Om9w
ZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlzaW9uIDEz
MTI2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxNiArNTksMTcgQEAgaW5saW5lIEluZGV4
aW5nVHlwZSBuZXdJbmRleGluZ1R5cGUoSW5kZQogewogICAgIHN3aXRjaCAodHJhbnNpdGlvbikg
ewogICAgIGNhc2UgQWxsb2NhdGVDb250aWd1b3VzOgotICAgICAgICBBU1NFUlQoIShvbGRUeXBl
ICYgKEhhc0FycmF5U3RvcmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpKSk7Ci0gICAgICAg
IHJldHVybiBvbGRUeXBlIHwgSGFzQ29udGlndW91czsKKyAgICAgICAgQVNTRVJUKCFoYXNJbmRl
eGVkUHJvcGVydGllcyhvbGRUeXBlKSk7CisgICAgICAgIHJldHVybiBvbGRUeXBlIHwgQ29udGln
dW91c1NoYXBlOwogICAgIGNhc2UgQWxsb2NhdGVBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVy
biAob2xkVHlwZSAmIH5IYXNDb250aWd1b3VzKSB8IEhhc0FycmF5U3RvcmFnZTsKKyAgICAgICAg
QVNTRVJUKCFoYXNJbmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSB8fCBoYXNDb250aWd1b3VzKG9s
ZFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIChvbGRUeXBlICYgfkluZGV4aW5nU2hhcGVNYXNrKSB8
IEFycmF5U3RvcmFnZVNoYXBlOwogICAgIGNhc2UgQWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdl
OgotICAgICAgICByZXR1cm4gKG9sZFR5cGUgJiB+SGFzQ29udGlndW91cykgfCBIYXNTbG93UHV0
QXJyYXlTdG9yYWdlOworICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5
cGUpIHx8IGhhc0NvbnRpZ3VvdXMob2xkVHlwZSkpOworICAgICAgICByZXR1cm4gKG9sZFR5cGUg
JiB+SW5kZXhpbmdTaGFwZU1hc2spIHwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlOwogICAgIGNh
c2UgU3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlOgotICAgICAgICBBU1NFUlQob2xkVHlwZSAm
IEhhc0FycmF5U3RvcmFnZSk7Ci0gICAgICAgIEFTU0VSVCghKG9sZFR5cGUgJiBIYXNDb250aWd1
b3VzKSk7Ci0gICAgICAgIHJldHVybiAob2xkVHlwZSAmIH5IYXNBcnJheVN0b3JhZ2UpIHwgSGFz
U2xvd1B1dEFycmF5U3RvcmFnZTsKKyAgICAgICAgQVNTRVJUKGhhc0Zhc3RBcnJheVN0b3JhZ2Uo
b2xkVHlwZSkpOworICAgICAgICByZXR1cm4gKG9sZFR5cGUgJiB+SW5kZXhpbmdTaGFwZU1hc2sp
IHwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlOwogICAgIGNhc2UgQWRkSW5kZXhlZEFjY2Vzc29y
czoKICAgICAgICAgcmV0dXJuIG9sZFR5cGUgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29yczsKICAg
ICBkZWZhdWx0Ogo=
</data>
<flag name="review"
          id="181597"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>