<?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>133821</bug_id>
          
          <creation_ts>2014-06-12 14:18:21 -0700</creation_ts>
          <short_desc>[ftlopt] A DFG inlined ById access variant should not speak of a chain, but only of what structures to test the base for, whether to use a constant as an alternate base for the actual access, and what structures to check on what additional cell constants</short_desc>
          <delta_ts>2014-06-13 14:49:51 -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>133229</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>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015229</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-12 14:18:21 -0700</bug_when>
    <thetext>This will allow better inlining of cases where there are multiple accesses that share different prototype chains but ultimately hit the same prototype in the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015230</commentid>
    <comment_count>1</comment_count>
      <attachid>232986</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-12 14:21:57 -0700</bug_when>
    <thetext>Created attachment 232986
work in progress

Compiles and crashes on launch.  It&apos;s a good start!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015282</commentid>
    <comment_count>2</comment_count>
      <attachid>233006</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-12 16:33:42 -0700</bug_when>
    <thetext>Created attachment 233006
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015529</commentid>
    <comment_count>3</comment_count>
      <attachid>233006</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-13 14:21:33 -0700</bug_when>
    <thetext>Comment on attachment 233006
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015533</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-06-13 14:49:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/169950</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232986</attachid>
            <date>2014-06-12 14:21:57 -0700</date>
            <delta_ts>2014-06-12 16:33:42 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>48223</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5OTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDE0LTA2LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gQSBERkcgaW5saW5lZCBCeUlkIGFjY2VzcyB2YXJpYW50IHNob3VsZCBub3Qgc3Bl
YWsgb2YgYSBjaGFpbiwgYnV0IG9ubHkgb2Ygd2hhdCBzdHJ1Y3R1cmVzIHRvIHRlc3QgdGhlIGJh
c2UgZm9yLCB3aGV0aGVyIHRvIHVzZSBhIGNvbnN0YW50IGFzIGFuIGFsdGVybmF0ZSBiYXNlIGZv
ciB0aGUgYWN0dWFsIGFjY2VzcywgYW5kIHdoYXQgc3RydWN0dXJlcyB0byBjaGVjayBvbiB3aGF0
IGFkZGl0aW9uYWwgY2VsbCBjb25zdGFudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzgyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkNvbnN0YW50U3RydWN0dXJlQ2hlY2s6OmR1bXBJbkNvbnRleHQp
OgorICAgICAgICAoSlNDOjpDb25zdGFudFN0cnVjdHVyZUNoZWNrOjpkdW1wKToKKyAgICAgICAg
KEpTQzo6c3RydWN0dXJlRm9yKToKKyAgICAgICAgKEpTQzo6YXJlQ29tcGF0aWJsZSk6CisgICAg
ICAgIChKU0M6Om1lcmdlSW50byk6CisgICAgICAgICogYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1
cmVDaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjazo6
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgIChKU0M6OkNvbnN0YW50U3RydWN0dXJl
Q2hlY2s6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkNvbnN0YW50U3RydWN0dXJlQ2hlY2s6
OmNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjazo6c3RydWN0
dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50OjpHZXRC
eUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6OmNvbnN0YW50
Q2hlY2tzKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6OmFsdGVybmF0ZUJhc2UpOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6Y2hhaW4pOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlh
bnQ6OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50Lmg6
CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50Ojp0cmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6UHV0QnlJZFZhcmlhbnQ6OmNvbnN0YW50Q2hlY2tzKToKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFZhcmlhbnQ6OnN0cnVjdHVyZUNoYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmVtaXRDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFu
dFdpdGhTdHJ1Y3R1cmVDaGVjayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdFByb3RvdHlwZUNoZWNrcyk6IERlbGV0ZWQu
CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRHZXRCeU9mZnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRQdXRCeU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRp
b25DaGVjayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmg6IFJlbW92
ZWQuCisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OndhdGNocG9pbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2hhaW5zKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6
aXNTdGlsbFZhbGlkKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVuZXNzQW5k
VmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y2FuY2VsKToKKyAgICAg
ICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aUdldEJ5T2Zm
c2V0KToKKyAgICAgICAgKiBydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpnYXRoZXJDaGVja3MpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDOjpJbnRl
bmRlZFN0cnVjdHVyZUNoYWluOjphdCk6CisgICAgICAgIChKU0M6OkludGVuZGVkU3RydWN0dXJl
Q2hhaW46Om9wZXJhdG9yW10pOgorCiAyMDE0LTA2LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW2Z0bG9wdF0gREZHIGdldF9ieV9pZCBzaG91bGQgaW5saW5l
IGNoYWluIGFjY2Vzc2VzIHdpdGggYSBzbGlnaHRseSBwb2x5bW9ycGhpYyBiYXNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsOCBAQAogCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQw
RkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjUxNTQ0Qzk5MTAwM0VEMEZGIC8qIERGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNB
MjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCAqLzsgfTsKIAkJMEYzQjNBMkMx
NTQ3NTAwMjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFs
aWRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjNEMEJCQzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi87IH07CisJCTBG
M0QwQkJEMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNEMEJCQjE5NEE0MTQz
MDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAv
KiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTQ5MTQ2
MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0
dWFsUmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjQyNkE0QjE0NjBDRDZFMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNEExNDYwQ0Q2QjAw
MTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTcyMyw4ICsxNzI1LDYgQEAKIAkJQTczODY1NTYxMTg2OTdCNDAw
NTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJh
dG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3M0E1MzVBMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNBNTM1ODE3OTlDRDVEMDAx
NzBDMTkgLyogREZHTGF6eUpTVmFsdWUuY3BwICovOyB9OwogCQlBNzNBNTM1QjE3OTlDRDVEMDAx
NzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3M0E1MzU5MTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3
M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0UxMzJDMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCAqLzsgfTsKLQkJ
QTczRTEzMzExNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0UxMzJEMTc5
NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc0MTAxN0YxNzlEQUY4MDAw
MkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQxMDE3RTE3OURBRjgw
MDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzQ4MkI5MzEx
NjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0ODJCNzkxMTY2Q0RFQTAwM0Iw
NzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyog
SlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4MkI3QTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2Jq
ZWN0TWFwUmVmUHJpdmF0ZS5jcHAgKi87IH07CkBAIC0yNDE1LDYgKzI0MTUsOCBAQAogCQkwRjNC
M0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7
IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjNCM0EyOTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFsaWRhdGUuY3BwOyBw
YXRoID0gZGZnL0RGR1ZhbGlkYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbGlkYXRlLmg7IHBhdGggPSBkZmcvREZHVmFsaWRhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzRDBCQkExOTRBNDE0MzAwRkM5Q0Y5
IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVy
ZUNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0YW50U3RydWN0
dXJlQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDUxNDYwQ0JB
QjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQy
NkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMzY2LDggKzMzNjgsNiBAQAogCQlBNzM4NjU1MzExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRodW5rR2VuZXJhdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNB
NTM1ODE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTGF6eUpTVmFsdWUuY3BwOyBwYXRoID0gZGZnL0RG
R0xhenlKU1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTczQTUzNTkx
Nzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR0xhenlKU1ZhbHVlLmg7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTczRTEzMkMxNzk2MjRDRDAwRTRERUE4
IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHA7IHBhdGggPSBkZmcv
REZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUE3M0UxMzJEMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRTdHJ1Y3R1cmVD
aGFpbnMuaDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NDEwMTdFMTc5REFGODAwMDJFQjhCQSAvKiBERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRo
ID0gZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NDgyQjc5MTE2NkNERUEwMDNCMDcxMiAvKiBKU1dlYWtP
YmplY3RNYXBSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2Vha09iamVjdE1hcFJlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTc0ODJCN0ExMTY2Q0RFQTAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDM4LDggKzUwMzgs
NiBAQAogCQkJCTBGMkZDNzcxMTZFMTJGNkYwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5oICovLAog
CQkJCTBGOEYyQjk3MTcyRjA0RkQwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3Bw
ICovLAogCQkJCTBGOEYyQjk4MTcyRjA0RkQwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmll
cnMuaCAqLywKLQkJCQlBNzNFMTMyQzE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVj
dHVyZUNoYWlucy5jcHAgKi8sCi0JCQkJQTczRTEzMkQxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rl
c2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCAqLywKIAkJCQlDMkMwRjdDQjE3QkJGQzVCMDA0NjRGRTQg
LyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCAqLywKIAkJCQlDMkMwRjdDQzE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmggKi8sCiAJCQkJMEZFODUzNDkxNzIzQ0RB
NTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi8sCkBAIC01MzUyLDYgKzUz
NTAsOCBAQAogCQkJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8s
CiAJCQkJMEY4Rjk0M0YxNjY3NjMyRDAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCAqLywKIAkJCQkw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLywKKwkJCQkwRjNEMEJCQTE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8sCisJCQkJMEYz
RDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCAqLywKIAkJ
CQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovLAogCQkJCTBGQzcx
MkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICov
LAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCAqLywKQEAgLTYwMzIsNyArNjAzMiw2IEBACiAJCQkJMEZGRkM5NUExNEVGOTBBOTAw
QzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQzc3MzE2RTEy
Rjc0MDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEYyQjlB
MTcyRjA1MDEwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUE3M0UxMzMxMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hh
aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZH
RGVzaXJlZFRyYW5zaXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
Mjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKQEAgLTY0ODMsNiArNjQ4Miw3IEBACiAJCQkJQkMxOEM0M0MwRTE2RjVDRDAw
QjM0NDYwIC8qIE1hdGhPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwMjEzRTNFMTIzQTQw
QzIwMEQ0MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI1
NDY3QjE0RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYzRDBCQkQxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3Ry
dWN0dXJlQ2hlY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMy
NCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVCRjMwMDE1NjBG
MDZBMDA4RTkyMjIgLyogTmFtZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MTgs
NyArNzYxOCw2IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdE
Q0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUg
LyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3M0UxMzMw
MTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNp
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8q
IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZEODE3
QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzg1Niw2ICs3ODU1LDcgQEAKIAkJCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MDNGQTFE
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzUxMDdFQzEzRTAwMTNFN0IyIC8qIEpTTG9jay5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjNEMEJCQzE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRT
dHJ1Y3R1cmVDaGVjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjVENzA5QjE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNzAwODc0MTE3
Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0REVGOTUx
ODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbnN0YW50
U3RydWN0dXJlQ2hlY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnN0YW50U3RydWN0dXJlQ2hlY2su
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjazo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
K3sKKyAgICBvdXQucHJpbnQoCisgICAgICAgICIoQ2hlY2sgaWYgIiwgaW5Db250ZXh0KEpTVmFs
dWUobV9jb25zdGFudCksIGNvbnRleHQpLCAiIGhhcyBzdHJ1Y3R1cmUgIiwKKyAgICAgICAgcG9p
bnRlckR1bXBJbkNvbnRleHQobV9zdHJ1Y3R1cmUsIGNvbnRleHQpLCAiKSIpOworfQorCit2b2lk
IENvbnN0YW50U3RydWN0dXJlQ2hlY2s6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7Cit9CisKK1N0cnVjdHVyZSogc3RydWN0
dXJlRm9yKGNvbnN0IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImIHZlY3RvciwgSlNDZWxs
KiBjb25zdGFudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSB2ZWN0b3Iuc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgIGlmICh2ZWN0b3JbaV0uY29uc3RhbnQoKSA9PSBjb25zdGFudCkKKyAgICAg
ICAgICAgIHJldHVybiB2ZWN0b3JbaV0uc3RydWN0dXJlKCk7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCitib29sIGFyZUNvbXBhdGlibGUoY29uc3QgQ29uc3RhbnRTdHJ1Y3R1cmVD
aGVja1ZlY3RvciYgYSwgY29uc3QgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgYikKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBhLnNpemUoKTsgaS0tOykgeworICAgICAgICBTdHJ1Y3R1
cmUqIG90aGVyU3RydWN0dXJlID0gc3RydWN0dXJlRm9yKGIsIGFbaV0uY29uc3RhbnQoKSk7Cisg
ICAgICAgIGlmICghb3RoZXJTdHJ1Y3R1cmUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKGFbaV0uc3RydWN0dXJlKCkgIT0gb3RoZXJTdHJ1Y3R1cmUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIG1lcmdlSW50
byhjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yJiBzb3VyY2UsIENvbnN0YW50U3Ry
dWN0dXJlQ2hlY2tWZWN0b3ImIHRhcmdldCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzb3Vy
Y2Uuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmVGb3IodGFyZ2V0LCBzb3Vy
Y2VbaV0uY29uc3RhbnQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGFyZ2V0
LmFwcGVuZChzb3VyY2VbaV0pOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db25zdGFudFN0cnVjdHVyZUNoZWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbnN0YW50
U3RydWN0dXJlQ2hlY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db25zdGFudFN0cnVjdHVyZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENvbnN0YW50U3RydWN0dXJlQ2hlY2tfaAorI2RlZmluZSBDb25zdGFudFN0cnVjdHVy
ZUNoZWNrX2gKKworI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVjayB7CitwdWJsaWM6CisgICAgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjaygp
CisgICAgICAgIDogbV9jb25zdGFudChudWxscHRyKQorICAgICAgICAsIG1fc3RydWN0dXJlKG51
bGxwdHIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBDb25zdGFudFN0cnVjdHVyZUNoZWNrKEpT
Q2VsbCogY29uc3RhbnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IG1fY29uc3Rh
bnQoY29uc3RhbnQpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCEhbV9jb25zdGFudCA9PSAhIW1fc3RydWN0dXJlKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jb25zdGFudDsgfQorICAg
IAorICAgIEpTQ2VsbCogY29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50OyB9Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQor
ICAgIAorICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0Kikg
Y29uc3Q7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwcml2YXRl
OgorICAgIEpTQ2VsbCogbV9jb25zdGFudDsKKyAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwor
fTsKKwordHlwZWRlZiBWZWN0b3I8Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjaywgMj4gQ29uc3RhbnRT
dHJ1Y3R1cmVDaGVja1ZlY3RvcjsKKworU3RydWN0dXJlKiBzdHJ1Y3R1cmVGb3IoY29uc3QgQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgdmVjdG9yLCBKU0NlbGwqIGNvbnN0YW50KTsKK2Jv
b2wgYXJlQ29tcGF0aWJsZShjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yJiwgY29u
c3QgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYpOwordm9pZCBtZXJnZUludG8oY29uc3Qg
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgc291cmNlLCBDb25zdGFudFN0cnVjdHVyZUNo
ZWNrVmVjdG9yJiB0YXJnZXQpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENv
bnN0YW50U3RydWN0dXJlQ2hlY2tfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxNjk5MDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3JTCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdldEJ5SWRW
YXJpYW50IHZhcmlhbnQoCi0gICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSks
IG15T2Zmc2V0LCBzcGVjaWZpY1ZhbHVlLCBjaGFpbiwKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVTZXQoc3RydWN0dXJlKSwgbXlPZmZzZXQsIHNwZWNpZmljVmFsdWUsIGNoYWluLmdldCgpLAog
ICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShjYWxsTGlua1N0YXR1cykpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3Bw
CShyZXZpc2lvbiAxNjk5MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwzMCBAQAogCiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkVmFyaWFudDo6
R2V0QnlJZFZhcmlhbnQoCisgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlLAorICAgIGNvbnN0IElu
dGVuZGVkU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0
dXM+IGNhbGxMaW5rU3RhdHVzKQorICAgIDogbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQor
ICAgICwgbV9zcGVjaWZpY1ZhbHVlKHNwZWNpZmljVmFsdWUpCisgICAgLCBtX29mZnNldChvZmZz
ZXQpCisgICAgLCBtX2NhbGxMaW5rU3RhdHVzKHN0ZDo6bW92ZShjYWxsTGlua1N0YXR1cykpCit7
CisgICAgaWYgKCFzdHJ1Y3R1cmVTZXQuc2l6ZSgpKSB7CisgICAgICAgIEFTU0VSVChvZmZzZXQg
PT0gaW52YWxpZE9mZnNldCk7CisgICAgICAgIEFTU0VSVCghc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIEFTU0VSVCghY2hhaW4pOworICAgIH0KKyAgICAKKyAgICBpZiAoY2hhaW4gJiYgY2hhaW4t
PnNpemUoKSkgeworICAgICAgICBtX2FsdGVybmF0ZUJhc2UgPSBjaGFpbi0+dGVybWluYWxQcm90
b3R5cGUoKTsKKyAgICAgICAgY2hhaW4tPmdhdGhlckNoZWNrcyhtX2NvbnN0YW50Q2hlY2tzKTsK
KyAgICB9Cit9CisKIEdldEJ5SWRWYXJpYW50Ojp+R2V0QnlJZFZhcmlhbnQoKSB7IH0KIAogR2V0
QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcikK
QEAgLTQxLDcgKzYyLDggQEAgR2V0QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KGNvbnN0IEdl
dAogR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmIG90aGVyKQogewogICAgIG1fc3RydWN0dXJlU2V0ID0gb3RoZXIubV9zdHJ1Y3R1
cmVTZXQ7Ci0gICAgbV9jaGFpbiA9IG90aGVyLm1fY2hhaW47CisgICAgbV9jb25zdGFudENoZWNr
cyA9IG90aGVyLm1fY29uc3RhbnRDaGVja3M7CisgICAgbV9hbHRlcm5hdGVCYXNlID0gb3RoZXIu
bV9hbHRlcm5hdGVCYXNlOwogICAgIG1fc3BlY2lmaWNWYWx1ZSA9IG90aGVyLm1fc3BlY2lmaWNW
YWx1ZTsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlmIChvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKQpAQCAtNTMsMTggKzc1LDE5IEBAIEdldEJ5SWRWYXJpYW50JiBHZXRCeUlk
VmFyaWFudDo6b3BlcmF0b3IKIAogYm9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogewotICAgIGlmICghIW1fY2hhaW4gIT0gISFv
dGhlci5tX2NoYWluKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fY2hhaW4gJiYg
Km1fY2hhaW4gIT0gKm90aGVyLm1fY2hhaW4pCisgICAgaWYgKG1fYWx0ZXJuYXRlQmFzZSAhPSBv
dGhlci5tX2FsdGVybmF0ZUJhc2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV9v
ZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
bV9jYWxsTGlua1N0YXR1cyB8fCBvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFhcmVDb21wYXRpYmxlKG1fY29uc3RhbnRDaGVja3MsIG90aGVy
Lm1fY29uc3RhbnRDaGVja3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYg
KG1fc3BlY2lmaWNWYWx1ZSAhPSBvdGhlci5tX3NwZWNpZmljVmFsdWUpCiAgICAgICAgIG1fc3Bl
Y2lmaWNWYWx1ZSA9IEpTVmFsdWUoKTsKIAorICAgIG1lcmdlSW50byhvdGhlci5tX2NvbnN0YW50
Q2hlY2tzLCBtX2NvbnN0YW50Q2hlY2tzKTsKICAgICBtX3N0cnVjdHVyZVNldC5tZXJnZShvdGhl
ci5tX3N0cnVjdHVyZVNldCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC04NCwxMCArMTA3
LDEyIEBAIHZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnQKICAgICAKICAg
ICBvdXQucHJpbnQoCiAgICAgICAgICI8IiwgaW5Db250ZXh0KHN0cnVjdHVyZVNldCgpLCBjb250
ZXh0KSwgIiwgIiwKLSAgICAgICAgcG9pbnRlckR1bXBJbkNvbnRleHQoY2hhaW4oKSwgY29udGV4
dCksICIsICIsCi0gICAgICAgIGluQ29udGV4dChzcGVjaWZpY1ZhbHVlKCksIGNvbnRleHQpLCAi
LCAiLCBvZmZzZXQoKSk7CisgICAgICAgICJbIiwgbGlzdER1bXBJbkNvbnRleHQobV9jb25zdGFu
dENoZWNrcywgY29udGV4dCksICJdLCAiLAorICAgICAgICAiYWx0ZXJuYXRlQmFzZSA9ICIsIGlu
Q29udGV4dChKU1ZhbHVlKG1fYWx0ZXJuYXRlQmFzZSksIGNvbnRleHQpLCAiLCAiLAorICAgICAg
ICAic3BlY2lmaWNWYWx1ZSA9ICIsIGluQ29udGV4dChzcGVjaWZpY1ZhbHVlKCksIGNvbnRleHQp
LCAiLCAiLAorICAgICAgICAib2Zmc2V0ID0gIiwgb2Zmc2V0KCkpOwogICAgIGlmIChtX2NhbGxM
aW5rU3RhdHVzKQotICAgICAgICBvdXQucHJpbnQoImNhbGw6ICIsICptX2NhbGxMaW5rU3RhdHVz
KTsKKyAgICAgICAgb3V0LnByaW50KCJjYWxsID0gIiwgKm1fY2FsbExpbmtTdGF0dXMpOwogICAg
IG91dC5wcmludCgiPiIpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMTY5OTAyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgR2V0QnlJZFZhcmlhbnRfaAogCiAjaW5jbHVkZSAiQ2Fs
bExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb25zdGFudFN0cnVjdHVyZUNoZWNrLmgiCiAjaW5j
bHVkZSAiSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgpAQCAtNDMsMjAgKzQ0LDggQEAgcHVibGljOgog
ICAgIEdldEJ5SWRWYXJpYW50KAogICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCA9IFN0cnVjdHVyZVNldCgpLAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBp
bnZhbGlkT2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksCi0gICAgICAg
IFBhc3NSZWZQdHI8SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbj4gY2hhaW4gPSBudWxscHRyLAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0gbnVs
bHB0cikKLSAgICAgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCi0gICAgICAgICwg
bV9jaGFpbihjaGFpbikKLSAgICAgICAgLCBtX3NwZWNpZmljVmFsdWUoc3BlY2lmaWNWYWx1ZSkK
LSAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgICAgICwgbV9jYWxsTGlua1N0YXR1cyhz
dGQ6Om1vdmUoY2FsbExpbmtTdGF0dXMpKQotICAgIHsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmVT
ZXQuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
OwotICAgICAgICAgICAgQVNTRVJUKCFzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgICAgIEFTU0VS
VCghY2hhaW4pOwotICAgICAgICB9Ci0gICAgfQorICAgICAgICBjb25zdCBJbnRlbmRlZFN0cnVj
dHVyZUNoYWluKiBjaGFpbiA9IG51bGxwdHIsCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxs
TGlua1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPSBudWxscHRyKTsKICAgICAKICAgICB+R2V0QnlJ
ZFZhcmlhbnQoKTsKICAgICAKQEAgLTY2LDcgKzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsgfQogICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9Ci0g
ICAgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiogY2hhaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PEludGVuZGVkU3RydWN0dXJlQ2hhaW4qPihtX2NoYWluLmdldCgpKTsgfQorICAgIGNvbnN0
IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImIGNvbnN0YW50Q2hlY2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zdGFudENoZWNrczsgfQorICAgIEpTT2JqZWN0KiBhbHRlcm5hdGVCYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHRlcm5hdGVCYXNlOyB9CiAgICAgSlNWYWx1ZSBzcGVjaWZpY1Zh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9CiAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBDYWxsTGlua1N0YXR1
cyogY2FsbExpbmtTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rU3RhdHVzLmdldCgp
OyB9CkBAIC04MCw3ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdldEJ5SWRT
dGF0dXM7CiAgICAgCiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwotICAgIFJlZlB0
cjxJbnRlbmRlZFN0cnVjdHVyZUNoYWluPiBtX2NoYWluOworICAgIENvbnN0YW50U3RydWN0dXJl
Q2hlY2tWZWN0b3IgbV9jb25zdGFudENoZWNrczsKKyAgICBKU09iamVjdCogbV9hbHRlcm5hdGVC
YXNlOwogICAgIEpTVmFsdWUgbV9zcGVjaWZpY1ZhbHVlOwogICAgIFByb3BlcnR5T2Zmc2V0IG1f
b2Zmc2V0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gbV9jYWxsTGlua1N0
YXR1czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAK
KyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgUHV0
QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKQEAgLTQ4LDggKzUwLDgg
QEAgdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludAogICAgIGNhc2UgVHJh
bnNpdGlvbjoKICAgICAgICAgb3V0LnByaW50KAogICAgICAgICAgICAgIjxUcmFuc2l0aW9uOiAi
LCBwb2ludGVyRHVtcEluQ29udGV4dChvbGRTdHJ1Y3R1cmUoKSwgY29udGV4dCksICIgLT4gIiwK
LSAgICAgICAgICAgIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5ld1N0cnVjdHVyZSgpLCBjb250ZXh0
KSwgIiwgIiwKLSAgICAgICAgICAgIHBvaW50ZXJEdW1wSW5Db250ZXh0KHN0cnVjdHVyZUNoYWlu
KCksIGNvbnRleHQpLCAiLCAiLCBvZmZzZXQoKSwgIj4iKTsKKyAgICAgICAgICAgIHBvaW50ZXJE
dW1wSW5Db250ZXh0KG5ld1N0cnVjdHVyZSgpLCBjb250ZXh0KSwgIiwgWyIsCisgICAgICAgICAg
ICBsaXN0RHVtcEluQ29udGV4dChjb25zdGFudENoZWNrcygpLCBjb250ZXh0KSwgIl0sICIsIG9m
ZnNldCgpLCAiPiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9u
IDE2OTkwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmVz
dWx0Lm1fa2luZCA9IFRyYW5zaXRpb247CiAgICAgICAgIHJlc3VsdC5tX29sZFN0cnVjdHVyZSA9
IG9sZFN0cnVjdHVyZTsKICAgICAgICAgcmVzdWx0Lm1fbmV3U3RydWN0dXJlID0gbmV3U3RydWN0
dXJlOwotICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVDaGFpbiA9IHN0cnVjdHVyZUNoYWluOwor
ICAgICAgICBpZiAoc3RydWN0dXJlQ2hhaW4pCisgICAgICAgICAgICBzdHJ1Y3R1cmVDaGFpbi0+
Z2F0aGVyQ2hlY2tzKHJlc3VsdC5tX2NvbnN0YW50Q2hlY2tzKTsKICAgICAgICAgcmVzdWx0Lm1f
b2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTkyLDEw
ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX25ld1N0cnVjdHVyZTsKICAgICB9
CiAgICAgCi0gICAgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4oKSBjb25z
dAorICAgIGNvbnN0IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImIGNvbnN0YW50Q2hlY2tz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBtX3N0cnVjdHVyZUNoYWluLmdldCgpOworICAgICAgICByZXR1cm4gbV9j
b25zdGFudENoZWNrczsKICAgICB9CiAgICAgCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkg
Y29uc3QKQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIEtpbmQgbV9raW5kOwogICAg
IFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVy
ZTsKLSAgICBSZWZQdHI8SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbj4gbV9zdHJ1Y3R1cmVDaGFpbjsK
KyAgICBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yIG1fY29uc3RhbnRDaGVja3M7CiAgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShy
ZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NzEsNyArMTQ3MSw4IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAg
ICAgICAgLy8gQXNzZXJ0IHRoaW5ncyB0aGF0IHdlIGNhbid0IGhhbmRsZSBhbmQgdGhhdCB0aGUg
Y29tcHV0ZUZvcigpIG1ldGhvZAogICAgICAgICAgICAgICAgICAgICAvLyBhYm92ZSB3b24ndCBi
ZSBhYmxlIHRvIHJldHVybi4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXR1c1swXS5z
dHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
c3RhdHVzWzBdLmNoYWluKCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzWzBd
LmNvbnN0YW50Q2hlY2tzKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFzdGF0dXNbMF0uYWx0ZXJuYXRlQmFzZSgpKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdGF0dXNbMF0uc3BlY2lmaWNWYWx1ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzWzBdLnNwZWNpZmljVmFsdWUoKS5pc0NlbGwoKSkg
ewpAQCAtMTY3OSw3ICsxNjgwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgIGlmICghdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5jb250
YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5jaGFpbigpKQorICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50LmFsdGVybmF0ZUJhc2UoKSkKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmlsdGVyKHZhbHVlLCBz
dHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTky
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJh
c2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlk
U3RhdHVzJiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCk7Ci0gICAgTm9kZSogZW1pdFByb3RvdHlw
ZUNoZWNrcyhJbnRlbmRlZFN0cnVjdHVyZUNoYWluKik7CisgICAgdm9pZCBlbWl0Q2hlY2tzKGNv
bnN0IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImKTsKIAogICAgIE5vZGUqIGdldFNjb3Bl
KGJvb2wgc2tpcFRvcCwgdW5zaWduZWQgc2tpcENvdW50KTsKICAgICAKQEAgLTY2NSwxMSArNjY1
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9iamVjdE5vZGU7CiAgICAgfQogICAgIAot
ICAgIE5vZGUqIGNlbGxDb25zdGFudFdpdGhTdHJ1Y3R1cmVDaGVjayhKU0NlbGwqIG9iamVjdCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBjZWxsQ29uc3RhbnRXaXRoU3RydWN0dXJlQ2hlY2sob2Jq
ZWN0LCBtX2dyYXBoLmZyZWV6ZShvYmplY3QpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgfQotCiAgICAg
U3BlY3VsYXRlZFR5cGUgZ2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpCiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CkBAIC03OTgsMjIgKzc5Myw2
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KICAgICAKLSAgICBib29s
IHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKGJvb2wgZGlyZWN0LCBTdHJ1Y3R1cmUqIHByZXZp
b3VzU3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCi0gICAgewotICAgICAgICBpZiAo
ZGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBpZiAo
IXByZXZpb3VzU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSAmJiBwcmV2aW91
c1N0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkuYXNDZWxsKCktPnN0cnVjdHVyZSgpICE9IGNo
YWluLT5oZWFkKCktPmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAK
LSAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgp
OyAqaXQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghKCppdCktPnN0b3JlZFByb3RvdHlwZSgp
LmlzTnVsbCgpICYmICgqaXQpLT5zdG9yZWRQcm90b3R5cGUoKS5hc0NlbGwoKS0+c3RydWN0dXJl
KCkgIT0gaXRbMV0uZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgdm9p
ZCBidWlsZE9wZXJhbmRNYXBzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBWTSogbV92bTsKQEAg
LTE3MDUsMjAgKzE2ODQsMTAgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5T2Zm
c2V0KAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5vZGUqIEJ5dGVDb2RlUGFyc2VyOjplbWl0
UHJvdG90eXBlQ2hlY2tzKEludGVuZGVkU3RydWN0dXJlQ2hhaW4qIGNoYWluKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6ZW1pdENoZWNrcyhjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9y
JiB2ZWN0b3IpCiB7Ci0gICAgbV9ncmFwaC5jaGFpbnMoKS5hZGRMYXppbHkoY2hhaW4pOwotICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gY2hhaW4tPnByb3RvdHlwZSgpOwotICAgIGlmIChwcm90b3R5
cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIE5vZGUqIGJhc2UgPSBu
dWxscHRyOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGFpbi0+c2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUp
OwotICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRTdHJ1Y3R1cmUgPSBjaGFpbi0+YXQoaSk7Ci0g
ICAgICAgIGJhc2UgPSBjZWxsQ29uc3RhbnRXaXRoU3RydWN0dXJlQ2hlY2soY3VycmVudE9iamVj
dCwgY3VycmVudFN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZSA9IGN1cnJlbnRTdHJ1Y3R1
cmUtPnByb3RvdHlwZUZvckxvb2t1cChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jayk7Ci0g
ICAgfQotICAgIHJldHVybiBiYXNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWN0
b3Iuc2l6ZSgpOyArK2kpCisgICAgICAgIGNlbGxDb25zdGFudFdpdGhTdHJ1Y3R1cmVDaGVjayh2
ZWN0b3JbaV0uY29uc3RhbnQoKSwgdmVjdG9yW2ldLnN0cnVjdHVyZSgpKTsKIH0KIAogdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKQEAgLTE3NDcsMTAgKzE3MTYsOCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAvLyAxKSBFbWl0IHByb3Rv
dHlwZSBzdHJ1Y3R1cmUgY2hlY2tzIGZvciBhbGwgY2hhaW5zLiBUaGlzIGNvdWxkIHNvcnQgb2Yg
bWF5YmUgbm90IGJlCiAgICAgICAgIC8vICAgIG9wdGltYWwsIGlmIHRoZXJlIGlzIHNvbWUgcmFy
ZWx5IGV4ZWN1dGVkIGNhc2UgaW4gdGhlIGNoYWluIHRoYXQgcmVxdWlyZXMgYSBsb3QKICAgICAg
ICAgLy8gICAgb2YgY2hlY2tzIGFuZCB0aG9zZSBjaGVja3MgYXJlIG5vdCB3YXRjaHBvaW50YWJs
ZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCB2YXJpYW50SW5kZXggPSBnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCk7IHZhcmlhbnRJbmRleC0tOykgewotICAgICAgICAgICAgaWYgKGdldEJ5SWRT
dGF0dXNbdmFyaWFudEluZGV4XS5jaGFpbigpKQotICAgICAgICAgICAgICAgIGVtaXRQcm90b3R5
cGVDaGVja3MoZ2V0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLmNoYWluKCkpOwotICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgdmFyaWFudEluZGV4ID0gZ2V0QnlJZFN0YXR1cy5udW1W
YXJpYW50cygpOyB2YXJpYW50SW5kZXgtLTspCisgICAgICAgICAgICBlbWl0Q2hlY2tzKGdldEJ5
SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25zdGFudENoZWNrcygpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIDIpIEVtaXQgYSBNdWx0aUdldEJ5T2Zmc2V0CiAgICAgICAgIE11bHRpR2V0QnlPZmZz
ZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwpAQCAt
MTc3MSw4ICsxNzM4LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CiAg
ICAgCi0gICAgaWYgKHZhcmlhbnQuY2hhaW4oKSkKLSAgICAgICAgYmFzZSA9IGVtaXRQcm90b3R5
cGVDaGVja3ModmFyaWFudC5jaGFpbigpKTsKKyAgICBlbWl0Q2hlY2tzKHZhcmlhbnQuY29uc3Rh
bnRDaGVja3MoKSk7CisKKyAgICBpZiAodmFyaWFudC5hbHRlcm5hdGVCYXNlKCkpCisgICAgICAg
IGJhc2UgPSB3ZWFrSlNDb25zdGFudCh2YXJpYW50LmFsdGVybmF0ZUJhc2UoKSk7CiAgICAgCiAg
ICAgLy8gVW5sZXNzIHdlIHdhbnQgYnVncyBsaWtlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODc4Mywgd2UgbmVlZCB0bwogICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBi
YXNlIG9mIHRoZSBvcmlnaW5hbCBnZXRfYnlfaWQgaXMga2VwdCBhbGl2ZSB1bnRpbCB3ZSdyZSBk
b25lIHdpdGgKQEAgLTE4NjksOSArMTgzOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHZhcmlhbnRJbmRleCA9IHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKTsgdmFyaWFudEluZGV4LS07KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHB1dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5raW5kKCkgIT0gUHV0QnlJZFZhcmlh
bnQ6OlRyYW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGlmICghcHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLnN0cnVjdHVyZUNoYWluKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGVtaXRQcm90
b3R5cGVDaGVja3MocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhdLnN0cnVjdHVyZUNoYWluKCkp
OworICAgICAgICAgICAgICAgIGVtaXRDaGVja3MocHV0QnlJZFN0YXR1c1t2YXJpYW50SW5kZXhd
LmNvbnN0YW50Q2hlY2tzKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApA
QCAtMTg5OCwxNiArMTg2NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodmFyaWFudC5zdHJ1Y3R1cmVDaGFp
bigpICYmICF2YXJpYW50LnN0cnVjdHVyZUNoYWluKCktPmlzU3RpbGxWYWxpZCgpKSB7Ci0gICAg
ICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBpc0RpcmVjdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgbV9ncmFw
aC5jaGFpbnMoKS5hZGRMYXppbHkodmFyaWFudC5zdHJ1Y3R1cmVDaGFpbigpKTsKLSAgICAgICAg
ICAgICAgICAKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKLSAgICBpZiAo
IWlzRGlyZWN0KQotICAgICAgICBlbWl0UHJvdG90eXBlQ2hlY2tzKHZhcmlhbnQuc3RydWN0dXJl
Q2hhaW4oKSk7CisgICAgZW1pdENoZWNrcyh2YXJpYW50LmNvbnN0YW50Q2hlY2tzKCkpOwogCiAg
ICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2
OTkwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCF2YXJpYW50LnN0cnVjdHVyZVNldCgpLmNvbnRhaW5zKHN0cnVj
dHVyZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LmNoYWluKCkpCisgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmFsdGVybmF0ZUJhc2UoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEdldEJ5T2Zmc2V0KGluZGV4SW5CbG9jaywgbm9kZSwgc3RydWN0dXJlLCB2YXJpYW50
LCBkYXRhLmlkZW50aWZpZXJOdW1iZXIpOwpAQCAtMTk3LDcgKzE5Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBzdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgICAgICAgICAgICAgICAgICB2bSgpLCBzdHJ1Y3R1cmUsIG1fZ3JhcGguaWRl
bnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSB8fCBzdGF0dXMubnVtVmFyaWFudHMoKSAh
PSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdGF0dXMuaXNTaW1wbGUoKSB8fCBzdGF0dXMu
bnVtVmFyaWFudHMoKSAhPSAxIHx8CisgICAgICAgICAgICAgICAgICAgICFzdGF0dXNbMF0uY29u
c3RhbnRDaGVja3MoKS5pc0VtcHR5KCkgfHwgc3RhdHVzWzBdLmFsdGVybmF0ZUJhc2UoKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgaGFuZGxlIHByb3RvdHlwZSBj
YXNlcy4KICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDM4NgogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMxOSw3
ICszMjAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGJvb2wgbmVlZHNDZWxsQ2hlY2sgPSBtX3N0
YXRlLmZvck5vZGUoY2hpbGQpLm1fdHlwZSAmIH5TcGVjQ2VsbDsKICAgICAgICAgCi0gICAgICAg
IEFTU0VSVCghdmFyaWFudC5jaGFpbigpKTsKKyAgICAgICAgQVNTRVJUKCF2YXJpYW50LmFsdGVy
bmF0ZUJhc2UoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCB2YXJpYW50LnN0
cnVjdHVyZVNldCgpLmNvbnRhaW5zKHN0cnVjdHVyZSkpOwogICAgICAgICAKICAgICAgICAgLy8g
Tm93IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLCBwdXNoIHRoZSBDRkEgZm9yd2FyZCBvdmVy
IHRoZSBHZXRCeUlkCkBAIC0zODIsMjMgKzM4MywxMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
dmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAgICAgICAg
ICAgIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKHN0cnVjdHVyZSwgdmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CiAKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1
dEJ5SWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBl
KCkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLCBpbmRleEluQmxvY2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLmFzQ2Vs
bCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNoYWlu
cygpLmFkZExhemlseSh2YXJpYW50LnN0cnVjdHVyZUNoYWluKCkpOwotCi0gICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhcmlhbnQuc3RydWN0dXJlQ2hhaW4oKS0+c2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB2YXJp
YW50LnN0cnVjdHVyZUNoYWluKCktPmF0KGkpLT5zdG9yZWRQcm90b3R5cGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlLmlzQ2Vs
bCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAot
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLCBpbmRleEluQmxvY2ssIHByb3RvdHlwZS5h
c0NlbGwoKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHZhcmlhbnQuY29uc3RhbnRDaGVja3MoKS5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICAg
ICAgb3JpZ2luLCBpbmRleEluQmxvY2ssCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuY29u
c3RhbnRDaGVja3MoKVtpXS5jb25zdGFudCgpLAorICAgICAgICAgICAgICAgICAgICB2YXJpYW50
LmNvbnN0YW50Q2hlY2tzKClbaV0uc3RydWN0dXJlKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKQEAgLTQ1MCw3ICs0MzksNyBAQCBwcml2YXRlOgogICAgICAgICBtX2dyYXBoLm1fc3Rv
cmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKICAgICB9CiAKLSAgICB2
b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhOb2RlT3JpZ2luIG9yaWdpbiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwpCisgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFu
c2l0aW9uQ2hlY2soTm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgSlND
ZWxsKiBjZWxsLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIGlmIChtX2dy
YXBoLndhdGNocG9pbnRzKCkuY29uc2lkZXIoY2VsbC0+c3RydWN0dXJlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDYxLDcgKzQ1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBT
cGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChjZWxsLT5zdHJ1Y3R1cmUoKSkpLCBFZGdlKHdlYWtDb25zdGFu
dCwgQ2VsbFVzZSkpOworICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSkpLCBFZGdlKHdlYWtDb25zdGFudCwgQ2VsbFVzZSkpOwogICAgIH0KICAgICAK
ICAgICBJblBsYWNlQWJzdHJhY3RTdGF0ZSBtX3N0YXRlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwCShy
ZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRT
dHJ1Y3R1cmVDaGFpbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCIKLQotI2lm
IEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLURlc2lyZWRTdHJ1Y3R1cmVDaGFpbnM6OkRlc2lyZWRT
dHJ1Y3R1cmVDaGFpbnMoKSB7IH0KLURlc2lyZWRTdHJ1Y3R1cmVDaGFpbnM6On5EZXNpcmVkU3Ry
dWN0dXJlQ2hhaW5zKCkgeyB9Ci0KLWJvb2wgRGVzaXJlZFN0cnVjdHVyZUNoYWluczo6YXJlU3Rp
bGxWYWxpZCgpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVjdG9y
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghbV92ZWN0b3JbaV0tPmlzU3RpbGxWYWxpZCgp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdm9pZCBEZXNpcmVkU3RydWN0dXJlQ2hhaW5zOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IG1fdmVjdG9yLnNpemUoKTsgaS0t
OykKLSAgICAgICAgbV92ZWN0b3JbaV0tPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7Ci19Ci0KLX0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRTdHJ1
Y3R1cmVDaGFpbnMuaAkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaWZuZGVmIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnNfaAotI2RlZmluZSBERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zX2gKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAi
SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBEZXNpcmVkU3RydWN0dXJlQ2hh
aW5zIHsKLXB1YmxpYzoKLSAgICBEZXNpcmVkU3RydWN0dXJlQ2hhaW5zKCk7Ci0gICAgfkRlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnMoKTsKLSAgICAKLSAgICB2b2lkIGFkZExhemlseShQYXNzUmVmUHRy
PEludGVuZGVkU3RydWN0dXJlQ2hhaW4+IGNoYWluKQotICAgIHsKLSAgICAgICAgbV92ZWN0b3Iu
YXBwZW5kKGNoYWluKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBhcmVTdGlsbFZhbGlkKCkgY29u
c3Q7Ci0gICAgCi0gICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7Ci0gICAgCi1w
cml2YXRlOgotICAgIFZlY3RvcjxSZWZQdHI8SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbj4+IG1fdmVj
dG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0KLSNlbmRpZiAvLyBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zX2gKLQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTY5OTAxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NzEsNyArNjcxLDYgQEAgcHVibGljOgogICAgIAogICAgIERlc2lyZWRJZGVudGlmaWVycyYgaWRl
bnRpZmllcnMoKSB7IHJldHVybiBtX3BsYW4uaWRlbnRpZmllcnM7IH0KICAgICBEZXNpcmVkV2F0
Y2hwb2ludHMmIHdhdGNocG9pbnRzKCkgeyByZXR1cm4gbV9wbGFuLndhdGNocG9pbnRzOyB9Ci0g
ICAgRGVzaXJlZFN0cnVjdHVyZUNoYWlucyYgY2hhaW5zKCkgeyByZXR1cm4gbV9wbGFuLmNoYWlu
czsgfQogICAgIAogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBsaXZlbmVzc0ZvcihDb2RlQmxv
Y2sqKTsKICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgbGl2ZW5lc3NGb3IoSW5saW5lQ2FsbEZy
YW1lKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9u
IDE2OTkwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMCw4ICs0MDAsNiBAQCBib29sIFBsYW46OmlzU3RpbGxWYWxpZCgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXdhdGNocG9pbnRzLmFyZVN0aWxsVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghY2hhaW5zLmFyZVN0aWxsVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NzEs
NyArNDY5LDYgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAg
IGNvZGVCbG9ja3MubWFyayhjb2RlQmxvY2suZ2V0KCkpOwogICAgIGNvZGVCbG9ja3MubWFyayhw
cm9maWxlZERGR0NvZGVCbG9jay5nZXQoKSk7CiAgICAgCi0gICAgY2hhaW5zLnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CiAgICAgd2Vha1JlZmVyZW5jZXMudmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
ICAgICB3cml0ZUJhcnJpZXJzLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgdHJhbnNpdGlv
bnMudmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKQEAgLTUwMCw3ICs0OTcsNiBAQCB2b2lkIFBsYW46
OmNhbmNlbCgpCiAgICAgaW5saW5lQ2FsbEZyYW1lcyA9IG51bGxwdHI7CiAgICAgd2F0Y2hwb2lu
dHMgPSBEZXNpcmVkV2F0Y2hwb2ludHMoKTsKICAgICBpZGVudGlmaWVycyA9IERlc2lyZWRJZGVu
dGlmaWVycygpOwotICAgIGNoYWlucyA9IERlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMoKTsKICAgICB3
ZWFrUmVmZXJlbmNlcyA9IERlc2lyZWRXZWFrUmVmZXJlbmNlcygpOwogICAgIHdyaXRlQmFycmll
cnMgPSBEZXNpcmVkV3JpdGVCYXJyaWVycygpOwogICAgIHRyYW5zaXRpb25zID0gRGVzaXJlZFRy
YW5zaXRpb25zKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNp
b24gMTY5OTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJERkdDb21waWxhdGlvbktleS5o
IgogI2luY2x1ZGUgIkRGR0NvbXBpbGF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkRGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5oIgotI2luY2x1ZGUgIkRGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCIKICNp
bmNsdWRlICJERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCIKICNpbmNsdWRlICJERkdEZXNpcmVkV2F0
Y2hwb2ludHMuaCIKICNpbmNsdWRlICJERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCIKQEAgLTky
LDcgKzkxLDYgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAg
IFJlZlB0cjxJbmxpbmVDYWxsRnJhbWVTZXQ+IGlubGluZUNhbGxGcmFtZXM7CiAgICAgRGVzaXJl
ZFdhdGNocG9pbnRzIHdhdGNocG9pbnRzOwogICAgIERlc2lyZWRJZGVudGlmaWVycyBpZGVudGlm
aWVyczsKLSAgICBEZXNpcmVkU3RydWN0dXJlQ2hhaW5zIGNoYWluczsKICAgICBEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFdyaXRlQmFycmllcnMgd3Jp
dGVCYXJyaWVyczsKICAgICBEZXNpcmVkVHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2
aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNDAsOCArMzI0MCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUo
dmFyaWFudC5zcGVjaWZpY1ZhbHVlKCkpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIExWYWx1ZSBwcm9wZXJ0eUJhc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQu
Y2hhaW4oKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlCYXNlID0gd2Vha1BvaW50ZXIo
dmFyaWFudC5jaGFpbigpLT50ZXJtaW5hbFByb3RvdHlwZSgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAodmFyaWFudC5hbHRlcm5hdGVCYXNlKCkpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5
QmFzZSA9IHdlYWtQb2ludGVyKHZhcmlhbnQuYWx0ZXJuYXRlQmFzZSgpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5QmFzZSA9IGJhc2U7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAxNjk5MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ1LDYgKzE0NSwxNyBAQCBib29sIEludGVuZGVkU3RydWN0dXJlQ2hhaW46Om9wZXJhdG9yPT0o
CiAgICAgICAgICYmIG1fdmVjdG9yID09IG90aGVyLm1fdmVjdG9yOwogfQogCit2b2lkIEludGVu
ZGVkU3RydWN0dXJlQ2hhaW46OmdhdGhlckNoZWNrcyhDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVj
dG9yJiB2ZWN0b3IpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSBjdXJyZW50UHJvdG90eXBlID0gbV9w
cm90b3R5cGU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEpTT2JqZWN0KiBjdXJyZW50T2JqZWN0ID0gYXNPYmplY3QoY3VycmVudFByb3RvdHlw
ZSk7CisgICAgICAgIFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IGF0KGkpOworICAgICAg
ICB2ZWN0b3IuYXBwZW5kKENvbnN0YW50U3RydWN0dXJlQ2hlY2soY3VycmVudE9iamVjdCwgY3Vy
cmVudFN0cnVjdHVyZSkpOworICAgICAgICBjdXJyZW50UHJvdG90eXBlID0gY3VycmVudFN0cnVj
dHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICB9Cit9CisKIHZv
aWQgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9nbG9iYWxP
YmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTY5OTAyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEludGVuZGVkU3RydWN0dXJlQ2hhaW5faAog
I2RlZmluZSBJbnRlbmRlZFN0cnVjdHVyZUNoYWluX2gKIAorI2luY2x1ZGUgIkNvbnN0YW50U3Ry
dWN0dXJlQ2hlY2suaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCkBAIC01NCw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlOyB9CiAgICAgCiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KLSAgICBTdHJ1Y3R1cmUqIGF0
KHNpemVfdCBpbmRleCkgeyByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOyB9Ci0gICAgU3RydWN0dXJl
KiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisgICAgU3Ry
dWN0dXJlKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsg
fQorICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGF0KGluZGV4KTsgfQogICAgIAogICAgIEpTT2JqZWN0KiB0ZXJtaW5hbFByb3RvdHlwZSgpIGNv
bnN0OwogICAgIApAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBnYXRoZXJDaGVja3MoQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYpIGNvbnN0OworICAgIAogICAgIHZvaWQgdmlzaXRDaGls
ZHJlbihTbG90VmlzaXRvciYpOwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233006</attachid>
            <date>2014-06-12 16:33:42 -0700</date>
            <delta_ts>2014-06-13 14:21:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58460</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5OTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDE0LTA2LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gQSBERkcgaW5saW5lZCBCeUlkIGFjY2VzcyB2YXJpYW50IHNob3VsZCBub3Qgc3Bl
YWsgb2YgYSBjaGFpbiwgYnV0IG9ubHkgb2Ygd2hhdCBzdHJ1Y3R1cmVzIHRvIHRlc3QgdGhlIGJh
c2UgZm9yLCB3aGV0aGVyIHRvIHVzZSBhIGNvbnN0YW50IGFzIGFuIGFsdGVybmF0ZSBiYXNlIGZv
ciB0aGUgYWN0dWFsIGFjY2VzcywgYW5kIHdoYXQgc3RydWN0dXJlcyB0byBjaGVjayBvbiB3aGF0
IGFkZGl0aW9uYWwgY2VsbCBjb25zdGFudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzgyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gZWZmaWNpZW50bHkg
Y2FjaGUgYWNjZXNzZXMgdGhhdCBkaWZmZXIgb25seSBpbiB0aGUgcHJvdG90eXBlcyBvbiB0aGUg
cGF0aAorICAgICAgICBmcm9tIHRoZSBiYXNlIHRvIHRoZSBwcm90b3R5cGUgdGhhdCBoYXMgdGhl
IGZpZWxkLgorICAgICAgICAKKyAgICAgICAgSXQgYWxzbyBzaW1wbGlmaWVzIGEgYnVuY2ggb2Yg
Y29kZSAtIEludGVuZGVkU3RydWN0dXJlQ2hhaW4gaXMgbm93IGp1c3QgYW4gaW50ZXJtZWRpYXRl
CisgICAgICAgIGRhdGEgc3RydWN0dXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpDb25zdGFudFN0cnVjdHVyZUNoZWNrOjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6Q29uc3RhbnRTdHJ1Y3R1cmVDaGVjazo6ZHVtcCk6CisgICAgICAgIChKU0M6OnN0cnVj
dHVyZUZvcik6CisgICAgICAgIChKU0M6OmFyZUNvbXBhdGlibGUpOgorICAgICAgICAoSlNDOjpt
ZXJnZUludG8pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvbnN0YW50U3RydWN0dXJlQ2hlY2suaDog
QWRkZWQuCisgICAgICAgIChKU0M6OkNvbnN0YW50U3RydWN0dXJlQ2hlY2s6OkNvbnN0YW50U3Ry
dWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpDb25zdGFudFN0cnVjdHVyZUNoZWNrOjpvcGVy
YXRvciEpOgorICAgICAgICAoSlNDOjpDb25zdGFudFN0cnVjdHVyZUNoZWNrOjpjb25zdGFudCk6
CisgICAgICAgIChKU0M6OkNvbnN0YW50U3RydWN0dXJlQ2hlY2s6OnN0cnVjdHVyZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQp
OgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6R2V0QnlJ
ZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJp
YW50Lmg6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50Ojpjb25zdGFudENoZWNrcyk6Cisg
ICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50OjphbHRlcm5hdGVCYXNlKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6R2V0QnlJZFZhcmlhbnQ6OmNoYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpkdW1wSW5D
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oOgorICAgICAgICAo
SlNDOjpQdXRCeUlkVmFyaWFudDo6dHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlB1dEJ5SWRW
YXJpYW50Ojpjb25zdGFudENoZWNrcyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50Ojpz
dHJ1Y3R1cmVDaGFpbik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjplbWl0
Q2hlY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpjZWxsQ29uc3RhbnRXaXRoU3RydWN0
dXJlQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpz
dHJ1Y3R1cmVDaGFpbklzU3RpbGxWYWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmVtaXRQcm90b3R5cGVDaGVja3MpOiBEZWxldGVkLgorICAgICAgICAq
IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29u
c3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNv
bnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0R2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgor
ICAgICAgICAqIGRmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBkZmcvREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaHBvaW50
cyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNoYWlucyk6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmlzU3RpbGxWYWxp
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNhbmNlbCk6CisgICAgICAgICogZGZnL0RG
R1BsYW4uaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTXVsdGlHZXRCeU9mZnNldCk6CisgICAg
ICAgICogcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbjo6Z2F0aGVyQ2hlY2tzKToKKyAgICAgICAgKiBydW50aW1l
L0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6SW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbjo6YXQpOgorICAgICAgICAoSlNDOjpJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpvcGVy
YXRvcltdKToKKwogMjAxNC0wNi0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIFtmdGxvcHRdIERGRyBnZXRfYnlfaWQgc2hvdWxkIGlubGluZSBjaGFpbiBhY2Nl
c3NlcyB3aXRoIGEgc2xpZ2h0bHkgcG9seW1vcnBoaWMgYmFzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAogICAgIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCiAgICAgYnl0ZWNv
ZGUvQ29kZVR5cGUuY3BwCisgICAgYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9EZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwCiAgICAgYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAK
QEAgLTEzMSw3ICsxMzIsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9E
RkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAogICAgIGRmZy9ERkdEQ0VQaGFzZS5jcHAK
ICAgICBkZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcAotICAgIGRmZy9ERkdEZXNpcmVkU3Ry
dWN0dXJlQ2hhaW5zLmNwcAogICAgIGRmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwCiAgICAg
ZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAKICAgICBkZmcvREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNiAr
MzIxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxDb2RlT3JpZ2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXENvZGVUeXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXERGR0V4aXRQcm9maWxlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEV4ZWN1dGlvbkNvdW50ZXIuY3BwIiAv
PgpAQCAtMzgyLDcgKzM4Myw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZH
Q1NFUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0RDRVBo
YXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdEZXNpcmVkSWRl
bnRpZmllcnMuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR0Rlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZn
XERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkZmdcREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwIiAvPgpAQCAtODU2LDYgKzg1
Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlT3JpZ2luLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDb2RlVHlwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29tbWVudC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcRGF0YUZvcm1hdC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxERkdFeGl0
UHJvZmlsZS5oIiAvPgpAQCAtOTQzLDcgKzk0NCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxkZmdcREZHQ1NFUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdEQ0VQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0Rl
c2lyZWRJZGVudGlmaWVycy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCIgLz4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjUxLDYgKzI1MSw4IEBACiAJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBGRiAvKiBE
RkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0EyOTE1NDc0
RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovOyB9OwogCQkwRjNCM0EyQzE1NDc1MDAy
MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGM0IzQTJBMTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGM0Qw
QkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0QwQkJBMTk0QTQxNDMw
MEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLzsgfTsKKwkJMEYzRDBCQkQx
OTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0QwQkJCMTk0QTQxNDMwMEZDOUNG
OSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVl
UmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNDkxNDYwQ0JCNzAw
MTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdp
c3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYg
LyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xNzIzLDggKzE3MjUsNiBAQAogCQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkg
LyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzM4NjU1MzExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTczQTUz
NUExNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3M0E1MzU4MTc5OUNENUQwMDE3MEMxOSAv
KiBERkdMYXp5SlNWYWx1ZS5jcHAgKi87IH07CiAJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAv
KiBERkdMYXp5SlNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczQTUzNTkxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTczRTEzMzAx
Nzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRTEzMkMxNzk2MjRDRDAw
RTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwICovOyB9OwotCQlBNzNFMTMz
MTE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRTEzMkQxNzk2MjRDRDAw
RTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzQxMDE3RjE3OURBRjgwMDAyRUI4QkEg
LyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDEwMTdFMTc5REFGODAwMDJFQjhC
QSAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NDgyQjkzMTE2NzExNDcw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzQ4MkI3OTExNjZDREVBMDAzQjA3MTIgLyog
SlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE3NDgyQjk0MTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtP
YmplY3RNYXBSZWZQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3NDgyQjdBMTE2NkNERUEwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmNwcCAqLzsgfTsKQEAgLTI0MTUsNiArMjQxNSw4IEBACiAJCTBGM0IzQTI1MTU0
NEM5OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdWYWxpZGF0ZS5jcHA7IHBhdGggPSBk
ZmcvREZHVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0Ey
QTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHVmFsaWRhdGUuaDsgcGF0aCA9IGRmZy9ERkdWYWxpZGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNEMEJCQTE5NEE0MTQzMDBGQzlDRjkgLyogQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYzRDBCQkIxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFG
OEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2
MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMzNjYsOCArMzM2OCw2IEBACiAJCUE3Mzg2NTUzMTE4Njk3QjQwMDU0MDI3OSAv
KiBUaHVua0dlbmVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGh1
bmtHZW5lcmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3M0E1MzU4MTc5
OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdMYXp5SlNWYWx1ZS5jcHA7IHBhdGggPSBkZmcvREZHTGF6eUpT
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNBNTM1OTE3OTlDRDVE
MDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHTGF6eUpTVmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdMYXp5SlNWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzNFMTMyQzE3OTYyNENEMDBFNERFQTggLyogREZH
RGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcz
RTEzMkQxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5o
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc0MTAxN0UxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcv
REZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc0ODJCNzkxMTY2Q0RFQTAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1h
cFJlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrT2Jq
ZWN0TWFwUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzQ4MkI3
QTExNjZDREVBMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMzgsOCArNTAzOCw2IEBACiAJ
CQkJMEYyRkM3NzExNkUxMkY2RjAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggKi8sCiAJCQkJMEY4
RjJCOTcxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgKi8sCiAJ
CQkJMEY4RjJCOTgxNzJGMDRGRDAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oICov
LAotCQkJCUE3M0UxMzJDMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hh
aW5zLmNwcCAqLywKLQkJCQlBNzNFMTMyRDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0
cnVjdHVyZUNoYWlucy5oICovLAogCQkJCUMyQzBGN0NCMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdE
ZXNpcmVkVHJhbnNpdGlvbnMuY3BwICovLAogCQkJCUMyQzBGN0NDMTdCQkZDNUIwMDQ2NEZFNCAv
KiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCAqLywKIAkJCQkwRkU4NTM0OTE3MjNDREE1MDBCNjE4
RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCAqLywKQEAgLTUzNTIsNiArNTM1MCw4IEBA
CiAJCQkJMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLywKIAkJCQkw
RjhGOTQzRjE2Njc2MzJEMDBENjE5NzEgLyogQ29kZVR5cGUuY3BwICovLAogCQkJCTBGMEI4M0E1
MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovLAorCQkJCTBGM0QwQkJBMTk0QTQxNDMw
MEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLywKKwkJCQkwRjNEMEJCQjE5
NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oICovLAogCQkJCTBGNDI2
QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8sCiAJCQkJMEZDNzEyREMxN0NE
ODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8sCiAJCQkJ
MEZDNzEyREQxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
ICovLApAQCAtNjAzMiw3ICs2MDMyLDYgQEAKIAkJCQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIg
LyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDNzczMTZFMTJGNzQwMDM4
RDk3NiAvKiBERkdEQ0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOUExNzJGMDUw
MTAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTczRTEzMzExNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVk
VHJhbnNpdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThG
NSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyOTgxRkQ5
MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjQ4Myw2ICs2NDgyLDcgQEAKIAkJCQlCQzE4QzQzQzBFMTZGNUNEMDBCMzQ0NjAg
LyogTWF0aE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTAyMTNFM0UxMjNBNDBDMjAwRDQy
MkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0NjdCMTRG
NUM3RTEwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjNEMEJCRDE5NEE0MTQzMDBGQzlDRjkgLyogQ29uc3RhbnRTdHJ1Y3R1cmVD
aGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1p
Y3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUJGMzAwMTU2MEYwNkEwMDhF
OTIyMiAvKiBOYW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNzYxOCw3ICs3NjE4
LDYgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdE
ZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTczRTEzMzAxNzk2MjRD
RDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVz
aXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyOTgxRkQ4MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03ODU2LDYgKzc4NTUsNyBAQAogCQkJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwM0ZBMUQxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVy
ZUNoZWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAv
KiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIw
MEMzRTY0MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5OTE0
MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1
cmVDaGVjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKwordm9pZCBDb25zdGFudFN0cnVjdHVyZUNoZWNrOjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAoreworICAg
IG91dC5wcmludCgKKyAgICAgICAgIihDaGVjayBpZiAiLCBpbkNvbnRleHQoSlNWYWx1ZShtX2Nv
bnN0YW50KSwgY29udGV4dCksICIgaGFzIHN0cnVjdHVyZSAiLAorICAgICAgICBwb2ludGVyRHVt
cEluQ29udGV4dChtX3N0cnVjdHVyZSwgY29udGV4dCksICIpIik7Cit9CisKK3ZvaWQgQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVjazo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1
bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKK30KKworU3RydWN0dXJlKiBzdHJ1Y3R1cmVGb3Io
Y29uc3QgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgdmVjdG9yLCBKU0NlbGwqIGNvbnN0
YW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHZlY3Rvci5zaXplKCk7IGktLTspIHsKKyAg
ICAgICAgaWYgKHZlY3RvcltpXS5jb25zdGFudCgpID09IGNvbnN0YW50KQorICAgICAgICAgICAg
cmV0dXJuIHZlY3RvcltpXS5zdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2Jvb2wgYXJlQ29tcGF0aWJsZShjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVj
dG9yJiBhLCBjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yJiBiKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IGEuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFN0cnVjdHVyZSogb3Ro
ZXJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVGb3IoYiwgYVtpXS5jb25zdGFudCgpKTsKKyAgICAgICAg
aWYgKCFvdGhlclN0cnVjdHVyZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
YVtpXS5zdHJ1Y3R1cmUoKSAhPSBvdGhlclN0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgbWVyZ2VJbnRvKGNvbnN0
IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImIHNvdXJjZSwgQ29uc3RhbnRTdHJ1Y3R1cmVD
aGVja1ZlY3RvciYgdGFyZ2V0KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IHNvdXJjZS5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgaWYgKHN0cnVjdHVyZUZvcih0YXJnZXQsIHNvdXJjZVtpXS5j
b25zdGFudCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB0YXJnZXQuYXBwZW5k
KHNvdXJjZVtpXSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvbnN0YW50U3RydWN0dXJlQ2hlY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29uc3RhbnRTdHJ1Y3R1
cmVDaGVjay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvbnN0YW50U3RydWN0dXJlQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVja19oCisjZGVmaW5lIENvbnN0YW50U3RydWN0dXJlQ2hlY2tf
aAorCisjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb25zdGFudFN0cnVj
dHVyZUNoZWNrIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudFN0cnVjdHVyZUNoZWNrKCkKKyAgICAg
ICAgOiBtX2NvbnN0YW50KG51bGxwdHIpCisgICAgICAgICwgbV9zdHJ1Y3R1cmUobnVsbHB0cikK
KyAgICB7CisgICAgfQorICAgIAorICAgIENvbnN0YW50U3RydWN0dXJlQ2hlY2soSlNDZWxsKiBj
b25zdGFudCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogbV9jb25zdGFudChjb25z
dGFudCkKKyAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBB
U1NFUlQoISFtX2NvbnN0YW50ID09ICEhbV9zdHJ1Y3R1cmUpOworICAgIH0KKyAgICAKKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0YW50OyB9CisgICAgCisgICAg
SlNDZWxsKiBjb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnQ7IH0KKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CisgICAgCisg
ICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAg
SlNDZWxsKiBtX2NvbnN0YW50OworICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Cit9OworCit0
eXBlZGVmIFZlY3RvcjxDb25zdGFudFN0cnVjdHVyZUNoZWNrLCAyPiBDb25zdGFudFN0cnVjdHVy
ZUNoZWNrVmVjdG9yOworCitTdHJ1Y3R1cmUqIHN0cnVjdHVyZUZvcihjb25zdCBDb25zdGFudFN0
cnVjdHVyZUNoZWNrVmVjdG9yJiB2ZWN0b3IsIEpTQ2VsbCogY29uc3RhbnQpOworYm9vbCBhcmVD
b21wYXRpYmxlKGNvbnN0IENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImLCBjb25zdCBDb25z
dGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yJik7Cit2b2lkIG1lcmdlSW50byhjb25zdCBDb25zdGFu
dFN0cnVjdHVyZUNoZWNrVmVjdG9yJiBzb3VyY2UsIENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0
b3ImIHRhcmdldCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29uc3RhbnRT
dHJ1Y3R1cmVDaGVja19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDE2OTkwMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUzLDcgKzI1Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgR2V0QnlJZFZhcmlhbnQg
dmFyaWFudCgKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgbXlPZmZz
ZXQsIHNwZWNpZmljVmFsdWUsIGNoYWluLAorICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldChz
dHJ1Y3R1cmUpLCBteU9mZnNldCwgc3BlY2lmaWNWYWx1ZSwgY2hhaW4uZ2V0KCksCiAgICAgICAg
ICAgICAgICAgc3RkOjptb3ZlKGNhbGxMaW5rU3RhdHVzKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHJldmlz
aW9uIDE2OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDMxIEBACiAKICNpbmNsdWRlICJD
YWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRWYXJpYW50OjpHZXRCeUlk
VmFyaWFudCgKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUsCisgICAgY29uc3QgSW50ZW5kZWRT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2Fs
bExpbmtTdGF0dXMpCisgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCisgICAgLCBt
X2FsdGVybmF0ZUJhc2UobnVsbHB0cikKKyAgICAsIG1fc3BlY2lmaWNWYWx1ZShzcGVjaWZpY1Zh
bHVlKQorICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9jYWxsTGlua1N0YXR1cyhzdGQ6
Om1vdmUoY2FsbExpbmtTdGF0dXMpKQoreworICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkg
eworICAgICAgICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpOworICAgICAgICBBU1NF
UlQoIXNwZWNpZmljVmFsdWUpOworICAgICAgICBBU1NFUlQoIWNoYWluKTsKKyAgICB9CisgICAg
CisgICAgaWYgKGNoYWluICYmIGNoYWluLT5zaXplKCkpIHsKKyAgICAgICAgbV9hbHRlcm5hdGVC
YXNlID0gY2hhaW4tPnRlcm1pbmFsUHJvdG90eXBlKCk7CisgICAgICAgIGNoYWluLT5nYXRoZXJD
aGVja3MobV9jb25zdGFudENoZWNrcyk7CisgICAgfQorfQorCiBHZXRCeUlkVmFyaWFudDo6fkdl
dEJ5SWRWYXJpYW50KCkgeyB9CiAKIEdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudChjb25z
dCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCkBAIC00MSw3ICs2Myw4IEBAIEdldEJ5SWRWYXJpYW50
OjpHZXRCeUlkVmFyaWFudChjb25zdCBHZXQKIEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFu
dDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcikKIHsKICAgICBtX3N0cnVj
dHVyZVNldCA9IG90aGVyLm1fc3RydWN0dXJlU2V0OwotICAgIG1fY2hhaW4gPSBvdGhlci5tX2No
YWluOworICAgIG1fY29uc3RhbnRDaGVja3MgPSBvdGhlci5tX2NvbnN0YW50Q2hlY2tzOworICAg
IG1fYWx0ZXJuYXRlQmFzZSA9IG90aGVyLm1fYWx0ZXJuYXRlQmFzZTsKICAgICBtX3NwZWNpZmlj
VmFsdWUgPSBvdGhlci5tX3NwZWNpZmljVmFsdWU7CiAgICAgbV9vZmZzZXQgPSBvdGhlci5tX29m
ZnNldDsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKQEAgLTUzLDE4ICs3NiwxOSBA
QCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yCiAKIGJvb2wgR2V0QnlJ
ZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcikKIHsK
LSAgICBpZiAoISFtX2NoYWluICE9ICEhb3RoZXIubV9jaGFpbikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChtX2NoYWluICYmICptX2NoYWluICE9ICpvdGhlci5tX2NoYWluKQorICAg
IGlmIChtX2FsdGVybmF0ZUJhc2UgIT0gb3RoZXIubV9hbHRlcm5hdGVCYXNlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fb2Zmc2V0ICE9IG90aGVyLm1fb2Zmc2V0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgfHwgb3RoZXIubV9jYWxs
TGlua1N0YXR1cykKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghYXJlQ29tcGF0aWJs
ZShtX2NvbnN0YW50Q2hlY2tzLCBvdGhlci5tX2NvbnN0YW50Q2hlY2tzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChtX3NwZWNpZmljVmFsdWUgIT0gb3RoZXIubV9zcGVj
aWZpY1ZhbHVlKQogICAgICAgICBtX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCk7CiAKKyAgICBt
ZXJnZUludG8ob3RoZXIubV9jb25zdGFudENoZWNrcywgbV9jb25zdGFudENoZWNrcyk7CiAgICAg
bV9zdHJ1Y3R1cmVTZXQubWVyZ2Uob3RoZXIubV9zdHJ1Y3R1cmVTZXQpOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtODQsMTAgKzEwOCwxMiBAQCB2b2lkIEdldEJ5SWRWYXJpYW50OjpkdW1w
SW5Db250ZXh0KFByaW50CiAgICAgCiAgICAgb3V0LnByaW50KAogICAgICAgICAiPCIsIGluQ29u
dGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICIsICIsCi0gICAgICAgIHBvaW50ZXJEdW1w
SW5Db250ZXh0KGNoYWluKCksIGNvbnRleHQpLCAiLCAiLAotICAgICAgICBpbkNvbnRleHQoc3Bl
Y2lmaWNWYWx1ZSgpLCBjb250ZXh0KSwgIiwgIiwgb2Zmc2V0KCkpOworICAgICAgICAiWyIsIGxp
c3REdW1wSW5Db250ZXh0KG1fY29uc3RhbnRDaGVja3MsIGNvbnRleHQpLCAiXSwgIiwKKyAgICAg
ICAgImFsdGVybmF0ZUJhc2UgPSAiLCBpbkNvbnRleHQoSlNWYWx1ZShtX2FsdGVybmF0ZUJhc2Up
LCBjb250ZXh0KSwgIiwgIiwKKyAgICAgICAgInNwZWNpZmljVmFsdWUgPSAiLCBpbkNvbnRleHQo
c3BlY2lmaWNWYWx1ZSgpLCBjb250ZXh0KSwgIiwgIiwKKyAgICAgICAgIm9mZnNldCA9ICIsIG9m
ZnNldCgpKTsKICAgICBpZiAobV9jYWxsTGlua1N0YXR1cykKLSAgICAgICAgb3V0LnByaW50KCJj
YWxsOiAiLCAqbV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG91dC5wcmludCgiY2FsbCA9ICIs
ICptX2NhbGxMaW5rU3RhdHVzKTsKICAgICBvdXQucHJpbnQoIj4iKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHJldmlz
aW9uIDE2OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEdldEJ5SWRW
YXJpYW50X2gKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ29uc3Rh
bnRTdHJ1Y3R1cmVDaGVjay5oIgogI2luY2x1ZGUgIkludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKQEAg
LTQzLDIwICs0NCw4IEBAIHB1YmxpYzoKICAgICBHZXRCeUlkVmFyaWFudCgKICAgICAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQgPSBTdHJ1Y3R1cmVTZXQoKSwKICAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgSlNWYWx1ZSBzcGVjaWZpY1Zh
bHVlID0gSlNWYWx1ZSgpLAotICAgICAgICBQYXNzUmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hh
aW4+IGNoYWluID0gbnVsbHB0ciwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3Rh
dHVzPiBjYWxsTGlua1N0YXR1cyA9IG51bGxwdHIpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmVTZXQo
c3RydWN0dXJlU2V0KQotICAgICAgICAsIG1fY2hhaW4oY2hhaW4pCi0gICAgICAgICwgbV9zcGVj
aWZpY1ZhbHVlKHNwZWNpZmljVmFsdWUpCi0gICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAg
ICAgICAsIG1fY2FsbExpbmtTdGF0dXMoc3RkOjptb3ZlKGNhbGxMaW5rU3RhdHVzKSkKLSAgICB7
Ci0gICAgICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkgewotICAgICAgICAgICAgQVNTRVJU
KG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIEFTU0VSVCghc3BlY2lmaWNW
YWx1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWNoYWluKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICAgICAgY29uc3QgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBudWxscHRyLAorICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0gbnVs
bHB0cik7CiAgICAgCiAgICAgfkdldEJ5SWRWYXJpYW50KCk7CiAgICAgCkBAIC02Niw3ICs1NSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX3N0cnVjdHVy
ZVNldC5zaXplKCk7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1Nl
dCgpOyB9CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cnVjdHVyZVNldDsgfQotICAgIEludGVuZGVkU3RydWN0dXJlQ2hhaW4qIGNoYWlu
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxJbnRlbmRlZFN0cnVjdHVyZUNoYWluKj4obV9j
aGFpbi5nZXQoKSk7IH0KKyAgICBjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yJiBj
b25zdGFudENoZWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRDaGVja3M7IH0KKyAgICBK
U09iamVjdCogYWx0ZXJuYXRlQmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0ZXJuYXRlQmFzZTsg
fQogICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNW
YWx1ZTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CiAgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsTGlua1N0YXR1cy5nZXQoKTsgfQpAQCAtODAsNyArNzAsOCBAQCBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBHZXRCeUlkU3RhdHVzOwogICAgIAogICAgIFN0cnVjdHVyZVNldCBt
X3N0cnVjdHVyZVNldDsKLSAgICBSZWZQdHI8SW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbj4gbV9jaGFp
bjsKKyAgICBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9yIG1fY29uc3RhbnRDaGVja3M7Cisg
ICAgSlNPYmplY3QqIG1fYWx0ZXJuYXRlQmFzZTsKICAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1
ZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bExpbmtTdGF0dXM+IG1fY2FsbExpbmtTdGF0dXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDE2OTkwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQdXRCeUlkVmFyaWFudC5oIgogCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKIG5h
bWVzcGFjZSBKU0MgewogCiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CkBAIC00OCw4ICs1MCw4IEBAIHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXBJbkNv
bnRleHQoUHJpbnQKICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAgICAgIG91dC5wcmludCgKICAg
ICAgICAgICAgICI8VHJhbnNpdGlvbjogIiwgcG9pbnRlckR1bXBJbkNvbnRleHQob2xkU3RydWN0
dXJlKCksIGNvbnRleHQpLCAiIC0+ICIsCi0gICAgICAgICAgICBwb2ludGVyRHVtcEluQ29udGV4
dChuZXdTdHJ1Y3R1cmUoKSwgY29udGV4dCksICIsICIsCi0gICAgICAgICAgICBwb2ludGVyRHVt
cEluQ29udGV4dChzdHJ1Y3R1cmVDaGFpbigpLCBjb250ZXh0KSwgIiwgIiwgb2Zmc2V0KCksICI+
Iik7CisgICAgICAgICAgICBwb2ludGVyRHVtcEluQ29udGV4dChuZXdTdHJ1Y3R1cmUoKSwgY29u
dGV4dCksICIsIFsiLAorICAgICAgICAgICAgbGlzdER1bXBJbkNvbnRleHQoY29uc3RhbnRDaGVj
a3MoKSwgY29udGV4dCksICJdLCAiLCBvZmZzZXQoKSwgIj4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
OCBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBUcmFuc2l0aW9uOwogICAgICAg
ICByZXN1bHQubV9vbGRTdHJ1Y3R1cmUgPSBvbGRTdHJ1Y3R1cmU7CiAgICAgICAgIHJlc3VsdC5t
X25ld1N0cnVjdHVyZSA9IG5ld1N0cnVjdHVyZTsKLSAgICAgICAgcmVzdWx0Lm1fc3RydWN0dXJl
Q2hhaW4gPSBzdHJ1Y3R1cmVDaGFpbjsKKyAgICAgICAgaWYgKHN0cnVjdHVyZUNoYWluKQorICAg
ICAgICAgICAgc3RydWN0dXJlQ2hhaW4tPmdhdGhlckNoZWNrcyhyZXN1bHQubV9jb25zdGFudENo
ZWNrcyk7CiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC05MiwxMCArOTMsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9uZXdTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4qIHN0cnVjdHVyZUNoYWluKCkgY29uc3QKKyAgICBjb25zdCBDb25zdGFudFN0cnVjdHVyZUNo
ZWNrVmVjdG9yJiBjb25zdGFudENoZWNrcygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
a2luZCgpID09IFRyYW5zaXRpb24pOwotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVDaGFpbi5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fY29uc3RhbnRDaGVja3M7CiAgICAgfQogICAgIAogICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0CkBAIC0xMTEsNyArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAg
IFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7Ci0gICAgUmVmUHRyPEludGVuZGVkU3RydWN0dXJl
Q2hhaW4+IG1fc3RydWN0dXJlQ2hhaW47CisgICAgQ29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3Rv
ciBtX2NvbnN0YW50Q2hlY2tzOwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDcxLDcgKzE0NzEsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIC8vIEFzc2VydCB0aGluZ3MgdGhhdCB3ZSBj
YW4ndCBoYW5kbGUgYW5kIHRoYXQgdGhlIGNvbXB1dGVGb3IoKSBtZXRob2QKICAgICAgICAgICAg
ICAgICAgICAgLy8gYWJvdmUgd29uJ3QgYmUgYWJsZSB0byByZXR1cm4uCiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChzdGF0dXNbMF0uc3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIXN0YXR1c1swXS5jaGFpbigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXR1c1swXS5jb25zdGFudENoZWNrcygpLmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghc3RhdHVzWzBdLmFsdGVybmF0ZUJhc2UoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzWzBdLnNw
ZWNpZmljVmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c1swXS5z
cGVjaWZpY1ZhbHVlKCkuaXNDZWxsKCkpIHsKQEAgLTE2NzksNyArMTY4MCw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBpZiAoIXZh
cmlhbnQuc3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3RydWN0dXJlKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHZh
cmlhbnQuY2hhaW4oKSkKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5hbHRlcm5hdGVCYXNl
KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZpbHRlcih2YWx1ZSwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNjk5MDIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVQ
dXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBO
b2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3Qp
OwotICAgIE5vZGUqIGVtaXRQcm90b3R5cGVDaGVja3MoSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbiop
OworICAgIHZvaWQgZW1pdENoZWNrcyhjb25zdCBDb25zdGFudFN0cnVjdHVyZUNoZWNrVmVjdG9y
Jik7CiAKICAgICBOb2RlKiBnZXRTY29wZShib29sIHNraXBUb3AsIHVuc2lnbmVkIHNraXBDb3Vu
dCk7CiAgICAgCkBAIC02NjUsMTEgKzY2NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBv
YmplY3ROb2RlOwogICAgIH0KICAgICAKLSAgICBOb2RlKiBjZWxsQ29uc3RhbnRXaXRoU3RydWN0
dXJlQ2hlY2soSlNDZWxsKiBvYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gY2VsbENvbnN0
YW50V2l0aFN0cnVjdHVyZUNoZWNrKG9iamVjdCwgbV9ncmFwaC5mcmVlemUob2JqZWN0KS0+c3Ry
dWN0dXJlKCkpOwotICAgIH0KLQogICAgIFNwZWN1bGF0ZWRUeXBlIGdldFByZWRpY3Rpb25XaXRo
b3V0T1NSRXhpdCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5t
X2xvY2spOwpAQCAtNzk4LDIyICs3OTMsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzdHJ1Y3R1cmVDaGFpbklzU3RpbGxWYWxpZChib29s
IGRpcmVjdCwgU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluKQotICAgIHsKLSAgICAgICAgaWYgKGRpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAKLSAgICAgICAgaWYgKCFwcmV2aW91c1N0cnVjdHVyZS0+c3RvcmVkUHJvdG90
eXBlKCkuaXNOdWxsKCkgJiYgcHJldmlvdXNTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKSAhPSBjaGFpbi0+aGVhZCgpLT5nZXQoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsgKml0OyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAo
ISgqaXQpLT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSAmJiAoKml0KS0+c3RvcmVkUHJvdG90
eXBlKCkuYXNDZWxsKCktPnN0cnVjdHVyZSgpICE9IGl0WzFdLmdldCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIAogICAgIHZvaWQgYnVpbGRPcGVyYW5kTWFwc0lmTmVjZXNzYXJ5KCk7
CiAgICAgCiAgICAgVk0qIG1fdm07CkBAIC0xNzA1LDIwICsxNjg0LDEwIEBAIE5vZGUqIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeU9mZnNldCgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1O
b2RlKiBCeXRlQ29kZVBhcnNlcjo6ZW1pdFByb3RvdHlwZUNoZWNrcyhJbnRlbmRlZFN0cnVjdHVy
ZUNoYWluKiBjaGFpbikKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRDaGVja3MoY29uc3QgQ29u
c3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgdmVjdG9yKQogewotICAgIG1fZ3JhcGguY2hhaW5z
KCkuYWRkTGF6aWx5KGNoYWluKTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNoYWluLT5wcm90
b3R5cGUoKTsKLSAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBOb2RlKiBiYXNlID0gbnVsbHB0cjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2hhaW4tPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEpTT2JqZWN0KiBjdXJyZW50T2Jq
ZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAgICAgICAgU3RydWN0dXJlKiBjdXJyZW50U3Ry
dWN0dXJlID0gY2hhaW4tPmF0KGkpOwotICAgICAgICBiYXNlID0gY2VsbENvbnN0YW50V2l0aFN0
cnVjdHVyZUNoZWNrKGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpOwotICAgICAgICBw
cm90b3R5cGUgPSBjdXJyZW50U3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAobV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2spOwotICAgIH0KLSAgICByZXR1cm4gYmFzZTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKQorICAgICAgICBjZWxsQ29u
c3RhbnRXaXRoU3RydWN0dXJlQ2hlY2sodmVjdG9yW2ldLmNvbnN0YW50KCksIHZlY3RvcltpXS5z
dHJ1Y3R1cmUoKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCkBA
IC0xNzQ3LDEwICsxNzE2LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgK
ICAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNo
YWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQogICAgICAgICAvLyAgICBvcHRp
bWFsLCBpZiB0aGVyZSBpcyBzb21lIHJhcmVseSBleGVjdXRlZCBjYXNlIGluIHRoZSBjaGFpbiB0
aGF0IHJlcXVpcmVzIGEgbG90CiAgICAgICAgIC8vICAgIG9mIGNoZWNrcyBhbmQgdGhvc2UgY2hl
Y2tzIGFyZSBub3Qgd2F0Y2hwb2ludGFibGUuCi0gICAgICAgIGZvciAodW5zaWduZWQgdmFyaWFu
dEluZGV4ID0gZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpOyB2YXJpYW50SW5kZXgtLTspIHsK
LSAgICAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uY2hhaW4oKSkKLSAg
ICAgICAgICAgICAgICBlbWl0UHJvdG90eXBlQ2hlY2tzKGdldEJ5SWRTdGF0dXNbdmFyaWFudElu
ZGV4XS5jaGFpbigpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIHZhcmlhbnRJ
bmRleCA9IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKTsgdmFyaWFudEluZGV4LS07KQorICAg
ICAgICAgICAgZW1pdENoZWNrcyhnZXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRleF0uY29uc3RhbnRD
aGVja3MoKSk7CiAgICAgICAgIAogICAgICAgICAvLyAyKSBFbWl0IGEgTXVsdGlHZXRCeU9mZnNl
dAogICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdl
dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKQEAgLTE3NzEsOCArMTczOCwxMCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIAogICAgIGFkZFRvR3JhcGgo
Q2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0
cnVjdHVyZVNldCgpKSksIGJhc2UpOwogICAgIAotICAgIGlmICh2YXJpYW50LmNoYWluKCkpCi0g
ICAgICAgIGJhc2UgPSBlbWl0UHJvdG90eXBlQ2hlY2tzKHZhcmlhbnQuY2hhaW4oKSk7CisgICAg
ZW1pdENoZWNrcyh2YXJpYW50LmNvbnN0YW50Q2hlY2tzKCkpOworCisgICAgaWYgKHZhcmlhbnQu
YWx0ZXJuYXRlQmFzZSgpKQorICAgICAgICBiYXNlID0gd2Vha0pTQ29uc3RhbnQodmFyaWFudC5h
bHRlcm5hdGVCYXNlKCkpOwogICAgIAogICAgIC8vIFVubGVzcyB3ZSB3YW50IGJ1Z3MgbGlrZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg3ODMsIHdlIG5lZWQgdG8K
ICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYmFzZSBvZiB0aGUgb3JpZ2luYWwgZ2V0X2J5X2lkIGlz
IGtlcHQgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoCkBAIC0xODY5LDkgKzE4MzgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCB2YXJpYW50SW5kZXggPSBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCk7IHZhcmlhbnRJ
bmRleC0tOykgewogICAgICAgICAgICAgICAgIGlmIChwdXRCeUlkU3RhdHVzW3ZhcmlhbnRJbmRl
eF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoIXB1dEJ5SWRTdGF0dXNbdmFyaWFu
dEluZGV4XS5zdHJ1Y3R1cmVDaGFpbigpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBlbWl0UHJvdG90eXBlQ2hlY2tzKHB1dEJ5SWRTdGF0dXNbdmFyaWFu
dEluZGV4XS5zdHJ1Y3R1cmVDaGFpbigpKTsKKyAgICAgICAgICAgICAgICBlbWl0Q2hlY2tzKHB1
dEJ5SWRTdGF0dXNbdmFyaWFudEluZGV4XS5jb25zdGFudENoZWNrcygpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTE4OTgsMTYgKzE4NjUsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHZhcmlhbnQuc3RydWN0dXJlQ2hhaW4oKSAmJiAhdmFyaWFudC5zdHJ1Y3R1cmVDaGFpbigp
LT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIG1fZ3JhcGguY2hhaW5zKCkuYWRkTGF6aWx5KHZhcmlhbnQuc3Ry
dWN0dXJlQ2hhaW4oKSk7Ci0gICAgICAgICAgICAgICAgCiAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7Ci0gICAgaWYgKCFpc0RpcmVjdCkKLSAgICAgICAgZW1pdFByb3RvdHlw
ZUNoZWNrcyh2YXJpYW50LnN0cnVjdHVyZUNoYWluKCkpOworICAgIGVtaXRDaGVja3ModmFyaWFu
dC5jb25zdGFudENoZWNrcygpKTsKIAogICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
LT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFudC5zdHJ1
Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
dmFyaWFudC5jaGFpbigpKQorICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5hbHRlcm5h
dGVCYXNlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRleEluQmxvY2ss
IG5vZGUsIHN0cnVjdHVyZSwgdmFyaWFudCwgZGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKQEAgLTE5
Nyw3ICsxOTcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgc3Rh
dHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgdm0o
KSwgc3RydWN0dXJlLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICghc3RhdHVzLmlzU2ltcGxlKCkg
fHwgc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMSkgeworICAgICAgICAgICAgICAgIGlmICghc3Rh
dHVzLmlzU2ltcGxlKCkgfHwgc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMSB8fAorICAgICAgICAg
ICAgICAgICAgICAhc3RhdHVzWzBdLmNvbnN0YW50Q2hlY2tzKCkuaXNFbXB0eSgpIHx8IHN0YXR1
c1swXS5hbHRlcm5hdGVCYXNlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIGhhbmRsZSBwcm90b3R5cGUgY2FzZXMuCiAgICAgICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzODYKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zMTksNyArMzIwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBi
b29sIG5lZWRzQ2VsbENoZWNrID0gbV9zdGF0ZS5mb3JOb2RlKGNoaWxkKS5tX3R5cGUgJiB+U3Bl
Y0NlbGw7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoIXZhcmlhbnQuY2hhaW4oKSk7CisgICAg
ICAgIEFTU0VSVCghdmFyaWFudC5hbHRlcm5hdGVCYXNlKCkpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHN0cnVjdHVyZSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZSwg
cHVzaCB0aGUgQ0ZBIGZvcndhcmQgb3ZlciB0aGUgR2V0QnlJZApAQCAtMzgyLDIzICszODMsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50
OjpUcmFuc2l0aW9uKSB7CiAgICAgICAgICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5z
aXRpb25zLmFkZChzdHJ1Y3R1cmUsIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwogCi0gICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeUlkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdpbiwgaW5kZXhJbkJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5zdG9yZWRQcm90b3R5cGUoKS5hc0NlbGwoKSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5jaGFpbnMoKS5hZGRMYXppbHkodmFyaWFudC5zdHJ1Y3R1cmVD
aGFpbigpKTsKLQotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YXJp
YW50LnN0cnVjdHVyZUNoYWluKCktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdmFyaWFudC5zdHJ1Y3R1cmVDaGFpbigpLT5hdChpKS0+c3Rv
cmVkUHJvdG90eXBlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKHByb3RvdHlwZS5pc0NlbGwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFN0
cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbiwg
aW5kZXhJbkJsb2NrLCBwcm90b3R5cGUuYXNDZWxsKCkpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YXJpYW50LmNvbnN0YW50Q2hlY2tz
KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9u
Q2hlY2soCisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiwgaW5kZXhJbkJsb2NrLAorICAgICAg
ICAgICAgICAgICAgICB2YXJpYW50LmNvbnN0YW50Q2hlY2tzKClbaV0uY29uc3RhbnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgdmFyaWFudC5jb25zdGFudENoZWNrcygpW2ldLnN0cnVjdHVyZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00NTAsNyArNDM5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNj
ZXNzRGF0YSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2so
Tm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgSlNDZWxsKiBjZWxsKQor
ICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKE5vZGVPcmlnaW4gb3JpZ2luLCB1
bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgewogICAgICAgICBpZiAobV9ncmFwaC53YXRjaHBvaW50cygpLmNvbnNpZGVyKGNlbGwt
PnN0cnVjdHVyZSgpKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ2MSw3ICs0NTAsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAg
ICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrU3RydWN0dXJlLCBvcmlnaW4s
Ci0gICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY2VsbC0+c3RydWN0
dXJlKCkpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxVc2UpKTsKKyAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSwgRWRnZSh3ZWFrQ29uc3RhbnQs
IENlbGxVc2UpKTsKICAgICB9CiAgICAgCiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFN0cnVjdHVyZUNo
YWlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zLmNwcAkocmV2aXNpb24gMTY5OTAxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdEZXNpcmVk
U3RydWN0dXJlQ2hhaW5zLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1EZXNpcmVk
U3RydWN0dXJlQ2hhaW5zOjpEZXNpcmVkU3RydWN0dXJlQ2hhaW5zKCkgeyB9Ci1EZXNpcmVkU3Ry
dWN0dXJlQ2hhaW5zOjp+RGVzaXJlZFN0cnVjdHVyZUNoYWlucygpIHsgfQotCi1ib29sIERlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnM6OmFyZVN0aWxsVmFsaWQoKSBjb25zdAotewotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3ZlY3Rvci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1f
dmVjdG9yW2ldLT5pc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRGVzaXJlZFN0cnVjdHVyZUNoYWluczo6
dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX3ZlY3Rvci5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdmVjdG9yW2ldLT52aXNpdENo
aWxkcmVuKHZpc2l0b3IpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmgJKHJldmlzaW9uIDE2OTkwMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBERkdEZXNpcmVkU3RydWN0dXJl
Q2hhaW5zX2gKLSNkZWZpbmUgREZHRGVzaXJlZFN0cnVjdHVyZUNoYWluc19oCi0KLSNpZiBFTkFC
TEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQot
Y2xhc3MgRGVzaXJlZFN0cnVjdHVyZUNoYWlucyB7Ci1wdWJsaWM6Ci0gICAgRGVzaXJlZFN0cnVj
dHVyZUNoYWlucygpOwotICAgIH5EZXNpcmVkU3RydWN0dXJlQ2hhaW5zKCk7Ci0gICAgCi0gICAg
dm9pZCBhZGRMYXppbHkoUGFzc1JlZlB0cjxJbnRlbmRlZFN0cnVjdHVyZUNoYWluPiBjaGFpbikK
LSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmFwcGVuZChjaGFpbik7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgYXJlU3RpbGxWYWxpZCgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgdmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpOwotICAgIAotcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmUHRyPEludGVu
ZGVkU3RydWN0dXJlQ2hhaW4+PiBtX3ZlY3RvcjsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCi0jZW5kaWYgLy8gREZHRGVzaXJl
ZFN0cnVjdHVyZUNoYWluc19oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHJldmlzaW9uIDE2OTkwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkod29ya2luZyBjb3B5KQpAQCAtNjcxLDcgKzY3MSw2IEBAIHB1YmxpYzoKICAgICAKICAg
ICBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKCkgeyByZXR1cm4gbV9wbGFuLmlkZW50
aWZpZXJzOyB9CiAgICAgRGVzaXJlZFdhdGNocG9pbnRzJiB3YXRjaHBvaW50cygpIHsgcmV0dXJu
IG1fcGxhbi53YXRjaHBvaW50czsgfQotICAgIERlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMmIGNoYWlu
cygpIHsgcmV0dXJuIG1fcGxhbi5jaGFpbnM7IH0KICAgICAKICAgICBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgbGl2ZW5lc3NGb3IoQ29kZUJsb2NrKik7CiAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mm
IGxpdmVuZXNzRm9yKElubGluZUNhbGxGcmFtZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAxNjk5MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDAsOCArNDAwLDYgQEAgYm9v
bCBQbGFuOjppc1N0aWxsVmFsaWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCF3
YXRjaHBvaW50cy5hcmVTdGlsbFZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWNoYWlucy5hcmVTdGlsbFZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDcxLDcgKzQ2OSw2IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZl
bmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICBjb2RlQmxvY2tzLm1hcmsoY29kZUJsb2NrLmdldCgp
KTsKICAgICBjb2RlQmxvY2tzLm1hcmsocHJvZmlsZWRERkdDb2RlQmxvY2suZ2V0KCkpOwogICAg
IAotICAgIGNoYWlucy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogICAgIHdlYWtSZWZlcmVuY2Vz
LnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgd3JpdGVCYXJyaWVycy52aXNpdENoaWxkcmVu
KHZpc2l0b3IpOwogICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CkBAIC01
MDAsNyArNDk3LDYgQEAgdm9pZCBQbGFuOjpjYW5jZWwoKQogICAgIGlubGluZUNhbGxGcmFtZXMg
PSBudWxscHRyOwogICAgIHdhdGNocG9pbnRzID0gRGVzaXJlZFdhdGNocG9pbnRzKCk7CiAgICAg
aWRlbnRpZmllcnMgPSBEZXNpcmVkSWRlbnRpZmllcnMoKTsKLSAgICBjaGFpbnMgPSBEZXNpcmVk
U3RydWN0dXJlQ2hhaW5zKCk7CiAgICAgd2Vha1JlZmVyZW5jZXMgPSBEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMoKTsKICAgICB3cml0ZUJhcnJpZXJzID0gRGVzaXJlZFdyaXRlQmFycmllcnMoKTsKICAg
ICB0cmFuc2l0aW9ucyA9IERlc2lyZWRUcmFuc2l0aW9ucygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmgJKHJldmlzaW9uIDE2OTkwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiREZHQ29tcGlsYXRpb25LZXkuaCIKICNpbmNsdWRlICJERkdDb21waWxhdGlvbk1vZGUu
aCIKICNpbmNsdWRlICJERkdEZXNpcmVkSWRlbnRpZmllcnMuaCIKLSNpbmNsdWRlICJERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zLmgiCiAjaW5jbHVkZSAiREZHRGVzaXJlZFRyYW5zaXRpb25zLmgi
CiAjaW5jbHVkZSAiREZHRGVzaXJlZFdhdGNocG9pbnRzLmgiCiAjaW5jbHVkZSAiREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmgiCkBAIC05Miw3ICs5MSw2IEBAIHN0cnVjdCBQbGFuIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGUKICAgICBSZWZQdHI8SW5saW5lQ2FsbEZyYW1lU2V0PiBpbmxp
bmVDYWxsRnJhbWVzOwogICAgIERlc2lyZWRXYXRjaHBvaW50cyB3YXRjaHBvaW50czsKICAgICBE
ZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7Ci0gICAgRGVzaXJlZFN0cnVjdHVyZUNoYWlu
cyBjaGFpbnM7CiAgICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAg
IERlc2lyZWRXcml0ZUJhcnJpZXJzIHdyaXRlQmFycmllcnM7CiAgICAgRGVzaXJlZFRyYW5zaXRp
b25zIHRyYW5zaXRpb25zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2OTkwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQw
LDggKzMyNDAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmNv
bnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKHZhcmlhbnQuc3BlY2lmaWNWYWx1ZSgpKSk7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHlCYXNlOwotICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmNoYWluKCkpCi0gICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5QmFzZSA9IHdlYWtQb2ludGVyKHZhcmlhbnQuY2hhaW4oKS0+dGVybWluYWxQcm90b3R5
cGUoKSk7CisgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuYWx0ZXJuYXRlQmFzZSgpKQorICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eUJhc2UgPSB3ZWFrUG9pbnRlcih2YXJpYW50LmFsdGVy
bmF0ZUJhc2UoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eUJhc2UgPSBiYXNlOwogICAgICAgICAgICAgICAgIGlmICghaXNJbmxpbmVPZmZzZXQo
dmFyaWFudC5vZmZzZXQoKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gMTY5OTAy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsMTcgQEAgYm9vbCBJbnRlbmRlZFN0
cnVjdHVyZUNoYWluOjpvcGVyYXRvcj09KAogICAgICAgICAmJiBtX3ZlY3RvciA9PSBvdGhlci5t
X3ZlY3RvcjsKIH0KIAordm9pZCBJbnRlbmRlZFN0cnVjdHVyZUNoYWluOjpnYXRoZXJDaGVja3Mo
Q29uc3RhbnRTdHJ1Y3R1cmVDaGVja1ZlY3RvciYgdmVjdG9yKSBjb25zdAoreworICAgIEpTVmFs
dWUgY3VycmVudFByb3RvdHlwZSA9IG1fcHJvdG90eXBlOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplKCk7ICsraSkgeworICAgICAgICBKU09iamVjdCogY3VycmVudE9iamVjdCA9
IGFzT2JqZWN0KGN1cnJlbnRQcm90b3R5cGUpOworICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJlbnRT
dHJ1Y3R1cmUgPSBhdChpKTsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChDb25zdGFudFN0cnVjdHVy
ZUNoZWNrKGN1cnJlbnRPYmplY3QsIGN1cnJlbnRTdHJ1Y3R1cmUpKTsKKyAgICAgICAgY3VycmVu
dFByb3RvdHlwZSA9IGN1cnJlbnRTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChtX2dsb2Jh
bE9iamVjdCk7CisgICAgfQorfQorCiB2b2lkIEludGVuZGVkU3RydWN0dXJlQ2hhaW46OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZFBvaW50ZXIoJm1fZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmgJKHJldmlz
aW9uIDE2OTkwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBJ
bnRlbmRlZFN0cnVjdHVyZUNoYWluX2gKICNkZWZpbmUgSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbl9o
CiAKKyNpbmNsdWRlICJDb25zdGFudFN0cnVjdHVyZUNoZWNrLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNTQsOCArNTUsOCBAQCBw
dWJsaWM6CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlw
ZTsgfQogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6
ZSgpOyB9Ci0gICAgU3RydWN0dXJlKiBhdChzaXplX3QgaW5kZXgpIHsgcmV0dXJuIG1fdmVjdG9y
W2luZGV4XTsgfQotICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIHsgcmV0
dXJuIGF0KGluZGV4KTsgfQorICAgIFN0cnVjdHVyZSogYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX3ZlY3RvcltpbmRleF07IH0KKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yW10oc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKICAgICBKU09iamVj
dCogdGVybWluYWxQcm90b3R5cGUoKSBjb25zdDsKICAgICAKQEAgLTY3LDYgKzY4LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogICAgIAorICAg
IHZvaWQgZ2F0aGVyQ2hlY2tzKENvbnN0YW50U3RydWN0dXJlQ2hlY2tWZWN0b3ImKSBjb25zdDsK
KyAgICAKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwpJbmRleDogU291cmNlL1dURi93dGYvTGlzdER1bXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXN0RHVtcC5oCShyZXZpc2lvbiAxNjk5
MDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9MaXN0RHVtcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
MTIgKzExOSw0MiBAQCBDU3RyaW5nIHNvcnRlZE1hcER1bXAoY29uc3QgVCYgbWFwLCBjb25zCiAg
ICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK2NsYXNzIExpc3REdW1wSW5Db250ZXh0IHsKK3B1YmxpYzoKKyAgICBMaXN0RHVt
cEluQ29udGV4dChjb25zdCBUJiBsaXN0LCBVKiBjb250ZXh0LCBjb25zdCBjaGFyKiBjb21tYSkK
KyAgICAgICAgOiBtX2xpc3QobGlzdCkKKyAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAgICAgLCBtX2NvbW1hKGNvbW1hKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIFQ6
OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2xpc3QuYmVnaW4oKTsgaXRlciAhPSBtX2xpc3QuZW5k
KCk7ICsraXRlcikKKyAgICAgICAgICAgIG91dC5wcmludChtX2NvbW1hLCBpbkNvbnRleHQoKml0
ZXIsIG1fY29udGV4dCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUJiBtX2xpc3Q7
CisgICAgVSogbV9jb250ZXh0OworICAgIENvbW1hUHJpbnRlciBtX2NvbW1hOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK0xpc3REdW1wSW5Db250ZXh0PFQsIFU+IGxp
c3REdW1wSW5Db250ZXh0KAorICAgIGNvbnN0IFQmIGxpc3QsIFUqIGNvbnRleHQsIGNvbnN0IGNo
YXIqIGNvbW1hID0gIiwgIikKK3sKKyAgICByZXR1cm4gTGlzdER1bXBJbkNvbnRleHQ8VCwgVT4o
bGlzdCwgY29udGV4dCwgY29tbWEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpsaXN0RHVtcDsKIHVzaW5nIFdURjo6c29ydGVkTGlzdER1bXA7CiB1c2luZyBXVEY6Om1h
cER1bXA7CiB1c2luZyBXVEY6OnNvcnRlZE1hcER1bXA7Cit1c2luZyBXVEY6Omxpc3REdW1wSW5D
b250ZXh0OwogCiAjZW5kaWYgLy8gTGlzdER1bXBfaAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjk5
MTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxNC0wNi0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIFtmdGxvcHRdIEEgREZHIGlubGluZWQgQnlJZCBhY2Nlc3MgdmFyaWFudCBzaG91bGQgbm90
IHNwZWFrIG9mIGEgY2hhaW4sIGJ1dCBvbmx5IG9mIHdoYXQgc3RydWN0dXJlcyB0byB0ZXN0IHRo
ZSBiYXNlIGZvciwgd2hldGhlciB0byB1c2UgYSBjb25zdGFudCBhcyBhbiBhbHRlcm5hdGUgYmFz
ZSBmb3IgdGhlIGFjdHVhbCBhY2Nlc3MsIGFuZCB3aGF0IHN0cnVjdHVyZXMgdG8gY2hlY2sgb24g
d2hhdCBhZGRpdGlvbmFsIGNlbGwgY29uc3RhbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MtZGlm
ZmVyZW50LXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3BvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MtZGlm
ZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVy
ZW50LXByb3RvdHlwZXMtc2ltcGxlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9wb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy5qczogQWRk
ZWQuCisKIDIwMTQtMDYtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbZnRsb3B0XSBERkcgZ2V0X2J5X2lkIHNob3VsZCBpbmxpbmUgY2hhaW4gYWNjZXNzZXMg
d2l0aCBhIHNsaWdodGx5IHBvbHltb3JwaGljIGJhc2UKSW5kZXg6IExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3Mt
ZGlmZmVyZW50LXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3Bv
bHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3BvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9wb2x5LWNoYWlu
LWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1zaW1wbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJl
bnQtcHJvdG90eXBlcy1zaW1wbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBl
cy1zaW1wbGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1hY2Nlc3MtZGlm
ZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9wb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1zaW1wbGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcG9seS1jaGFpbi1h
Y2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
cG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3BvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90
b3R5cGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3BvbHkt
Y2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3BvbHktY2hh
aW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZS5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3BvbHktY2hhaW4tYWNjZXNzLWRp
ZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0
IEBACisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkgeyB9CisgICAgRm9vLnByb3Rv
dHlwZS5mID0gNDI7CisgICAgZnVuY3Rpb24gQmFyKCkgeyB9CisgICAgQmFyLnByb3RvdHlwZSA9
IG5ldyBGb28oKTsKKyAgICBmdW5jdGlvbiBCYXooKSB7IH0KKyAgICBCYXoucHJvdG90eXBlID0g
bmV3IEZvbygpOworICAgIAorICAgIGZ1bmN0aW9uIGZvbyhvLCBwKSB7CisgICAgICAgIHZhciBu
ID0gMTAwMDAwMDsKKyAgICAgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gby5mOworICAgICAgICAg
ICAgdmFyIHRtcCA9IG87CisgICAgICAgICAgICBvID0gcDsKKyAgICAgICAgICAgIHAgPSB0bXA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQgIT0gbiAqIDQyKQorICAg
ICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIH0KKwor
ICAgIGZvbyhuZXcgQmFyKCksIG5ldyBCYXooKSk7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3Rv
dHlwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9wb2x5LWNoYWluLWFjY2Vz
cy1kaWZmZXJlbnQtcHJvdG90eXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBA
CisoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gRm9vKCkgeyB9CisgICAgRm9vLnByb3RvdHlw
ZS5mID0gNDI7CisgICAgZnVuY3Rpb24gQmFyKCkgeyB9CisgICAgQmFyLnByb3RvdHlwZSA9IG5l
dyBGb28oKTsKKyAgICBmdW5jdGlvbiBCYXooKSB7IH0KKyAgICBCYXoucHJvdG90eXBlID0gbmV3
IEZvbygpOworICAgIAorICAgIHZhciBvID0gbmV3IEJhcigpOworICAgIHZhciBwID0gbmV3IEJh
eigpOworICAgIAorICAgIHZhciBuID0gMTAwMDAwMDsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICByZXN1bHQgKz0gby5mOwor
ICAgICAgICB2YXIgdG1wID0gbzsKKyAgICAgICAgbyA9IHA7CisgICAgICAgIHAgPSB0bXA7Cisg
ICAgfQorICAgIAorICAgIGlmIChyZXN1bHQgIT0gbiAqIDQyKQorICAgICAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwo=
</data>
<flag name="review"
          id="257504"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>