<?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>47015</bug_id>
          
          <creation_ts>2010-10-01 13:57:17 -0700</creation_ts>
          <short_desc>Change FloatingObject to store its dimensions as a rect.</short_desc>
          <delta_ts>2010-10-01 14:25:49 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288457</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 13:57:17 -0700</bug_when>
    <thetext>Change FloatingObject to store its dimensions as a rect.  This will make it easier for logical access for block-flow later on if top/bottom is no different from left/width.  This change also simplifies calling code a bit in places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288458</commentid>
    <comment_count>1</comment_count>
      <attachid>69513</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 13:58:19 -0700</bug_when>
    <thetext>Created attachment 69513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288462</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-01 14:01:41 -0700</bug_when>
    <thetext>Attachment 69513 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderBlock.cpp:3224:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/RenderBlock.cpp:3228:  Extra space after ( in if  [whitespace/parens] [5]
WebCore/rendering/RenderBlock.cpp:3228:  Extra space before ) in if  [whitespace/parens] [5]
WebCore/rendering/RenderBlock.cpp:3228:  More than one command on the same line in if  [whitespace/parens] [4]
WebCore/rendering/RenderBlock.cpp:3253:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/RenderBlock.cpp:3257:  Extra space after ( in if  [whitespace/parens] [5]
WebCore/rendering/RenderBlock.cpp:3257:  Extra space before ) in if  [whitespace/parens] [5]
WebCore/rendering/RenderBlock.cpp:3257:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 8 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288464</commentid>
    <comment_count>3</comment_count>
      <attachid>69514</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 14:04:31 -0700</bug_when>
    <thetext>Created attachment 69514
Fix this crappy ancient code to pass the style checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288481</commentid>
    <comment_count>4</comment_count>
      <attachid>69514</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-01 14:21:42 -0700</bug_when>
    <thetext>Comment on attachment 69514
Fix this crappy ancient code to pass the style checks

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288486</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 14:25:49 -0700</bug_when>
    <thetext>Fixed in r68926.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69513</attachid>
            <date>2010-10-01 13:58:19 -0700</date>
            <delta_ts>2010-10-01 14:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>28159</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMTAtMTAtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAxNQorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIEZsb2F0aW5nT2JqZWN0IHRvIHN0b3JlIGl0cyBkaW1lbnNpb25zIGFzIGEgcmVj
dC4KKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgZWFzaWVyIGZvciBsb2dpY2FsIGFjY2VzcyBm
b3IgYmxvY2stZmxvdyBsYXRlciBvbiBpZgorICAgICAgICB0b3AvYm90dG9tIGlzIG5vIGRpZmZl
cmVudCBmcm9tIGxlZnQvd2lkdGguICBUaGlzIGNoYW5nZSBhbHNvIHNpbXBsaWZpZXMKKyAgICAg
ICAgY2FsbGluZyBjb2RlIGEgYml0IGluIHBsYWNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tRmxvYXRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpmaWxsU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bmV4dEZsb2F0Qm90dG9tQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmZsb2F0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb3dl
c3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRtb3N0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxlZnRtb3N0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxlZnRCb3R0b20pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJpZ2h0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjbGVhckZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YWRkT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFk
ZEludHJ1ZGluZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aGl0VGVz
dEZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0Rm9yQm9yZGVy
Rml0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpsZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6cmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojpib3R0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp3aWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldExlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRUb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldEhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OmZyYW1lUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldEZyYW1lUmVjdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hdGNoZWRFbmRMaW5lKToKKwogMjAxMC0xMC0wMSAgRW5y
aWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNjg5
MDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZs
b2F0cygKICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgq
bV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQp
IHsKICAgICAgICAgaWYgKHItPm1fc2hvdWxkUGFpbnQgJiYgIXItPm1fcmVuZGVyZXItPmhhc1Nl
bGZQYWludGluZ0xheWVyKCkpCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5t
X3JlbmRlcmVyLCBJbnRTaXplKHItPm1fbGVmdCArIHItPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQo
KSwgci0+bV90b3AgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSkpOworICAgICAgICAgICAg
YWRkT3ZlcmZsb3dGcm9tQ2hpbGQoci0+bV9yZW5kZXJlciwgSW50U2l6ZShyLT5sZWZ0KCkgKyBy
LT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCksIHItPnRvcCgpICsgci0+bV9yZW5kZXJlci0+bWFy
Z2luVG9wKCkpKTsKICAgICB9CiAgICAgcmV0dXJuOwogfQpAQCAtMjA3NSw3ICsyMDc1LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYQogICAgICAgICAgICAgLy8g
T25seSByZXBhaW50IHRoZSBvYmplY3QgaWYgaXQgaXMgb3ZlcmhhbmdpbmcsIGlzIG5vdCBpbiBp
dHMgb3duIGxheWVyLCBhbmQKICAgICAgICAgICAgIC8vIGlzIG91ciByZXNwb25zaWJpbGl0eSB0
byBwYWludCAobV9zaG91bGRQYWludCBpcyBzZXQpLiBXaGVuIHBhaW50QWxsRGVzY2VuZGFudHMg
aXMgdHJ1ZSwgdGhlIGxhdHRlcgogICAgICAgICAgICAgLy8gY29uZGl0aW9uIGlzIHJlcGxhY2Vk
IHdpdGggYmVpbmcgYSBkZXNjZW5kYW50IG9mIHVzLgotICAgICAgICAgICAgaWYgKHItPm1fYm90
dG9tID4gaGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVuZGVyZXIt
PmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5tX3Nob3VsZFBhaW50KSAmJiAhci0+bV9yZW5k
ZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgaWYgKHItPmJvdHRv
bSgpID4gaGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVuZGVyZXIt
PmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5tX3Nob3VsZFBhaW50KSAmJiAhci0+bV9yZW5k
ZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIHItPm1fcmVu
ZGVyZXItPnJlcGFpbnQoKTsKICAgICAgICAgICAgICAgICByLT5tX3JlbmRlcmVyLT5yZXBhaW50
T3ZlcmhhbmdpbmdGbG9hdHMoKTsKICAgICAgICAgICAgIH0KQEAgLTIzODcsOCArMjM4Nyw4IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50RmxvYXRzKFBhaW50SW5mbyYKICAgICAgICAgaWYgKHIt
Pm1fc2hvdWxkUGFpbnQgJiYgIXItPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkp
IHsKICAgICAgICAgICAgIFBhaW50SW5mbyBjdXJyZW50UGFpbnRJbmZvKHBhaW50SW5mbyk7CiAg
ICAgICAgICAgICBjdXJyZW50UGFpbnRJbmZvLnBoYXNlID0gcHJlc2VydmVQaGFzZSA/IHBhaW50
SW5mby5waGFzZSA6IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQ7Ci0gICAgICAgICAgICBpbnQg
Y3VycmVudFRYID0gdHggKyByLT5tX2xlZnQgLSByLT5tX3JlbmRlcmVyLT54KCkgKyByLT5tX3Jl
bmRlcmVyLT5tYXJnaW5MZWZ0KCk7Ci0gICAgICAgICAgICBpbnQgY3VycmVudFRZID0gdHkgKyBy
LT5tX3RvcCAtIHItPm1fcmVuZGVyZXItPnkoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpblRvcCgp
OworICAgICAgICAgICAgaW50IGN1cnJlbnRUWCA9IHR4ICsgci0+bGVmdCgpIC0gci0+bV9yZW5k
ZXJlci0+eCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpOworICAgICAgICAgICAgaW50
IGN1cnJlbnRUWSA9IHR5ICsgci0+dG9wKCkgLSByLT5tX3JlbmRlcmVyLT55KCkgKyByLT5tX3Jl
bmRlcmVyLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1
cnJlbnRQYWludEluZm8sIGN1cnJlbnRUWCwgY3VycmVudFRZKTsKICAgICAgICAgICAgIGlmICgh
cHJlc2VydmVQaGFzZSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2Ug
PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwpAQCAtMjU5Nyw4ICsyNTk3LDggQEAg
R2FwUmVjdHMgUmVuZGVyQmxvY2s6OmZpbGxTZWxlY3Rpb25HYXBzKAogICAgICAgICBpZiAobV9m
bG9hdGluZ09iamVjdHMpIHsKICAgICAgICAgICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJdGVy
YXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsgaXQuY3VycmVudCgp
OyArK2l0KSB7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSBpdC5jdXJyZW50
KCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwT3V0KEludFJlY3Qo
dHggKyByLT5tX2xlZnQgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCksIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5ICsgci0+bV90b3Ag
KyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSwKKyAgICAgICAgICAgICAgICBwYWludEluZm8t
PmNvbnRleHQtPmNsaXBPdXQoSW50UmVjdCh0eCArIHItPmxlZnQoKSArIHItPm1fcmVuZGVyZXIt
Pm1hcmdpbkxlZnQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHkgKyByLT50b3AoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpblRvcCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPm1f
cmVuZGVyZXItPndpZHRoKCksIHItPm1fcmVuZGVyZXItPmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTI5MjgsOCArMjkyOCw3IEBAIFJlbmRlckJsb2NrOjpGbG9hdGlu
Z09iamVjdCogUmVuZGVyQmxvY2sKIAogICAgIEZsb2F0aW5nT2JqZWN0KiBuZXdPYmogPSBuZXcg
RmxvYXRpbmdPYmplY3Qoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSA9PSBGTEVGVCA/IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdExlZnQgOiBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodCk7CiAKLSAgICBu
ZXdPYmotPm1fdG9wID0gLTE7Ci0gICAgbmV3T2JqLT5tX2JvdHRvbSA9IC0xOworICAgIG5ld09i
ai0+c2V0VG9wKC0xKTsKICAgICAKICAgICAvLyBPdXIgbG9jYXRpb24gaXMgaXJyZWxldmFudCBp
ZiB3ZSdyZSB1bnNwbGl0dGFibGUgb3Igbm8gcGFnaW5hdGlvbiBpcyBpbiBlZmZlY3QuCiAgICAg
Ly8gSnVzdCBnbyBhaGVhZCBhbmQgbGF5IG91dCB0aGUgZmxvYXQuCkBAIC0yOTQwLDcgKzI5Mzks
NyBAQCBSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrCiAgICAgICAgIG8t
PmNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgby0+Y29tcHV0ZUJsb2NrRGlyZWN0aW9u
TWFyZ2lucyh0aGlzKTsKICAgICB9Ci0gICAgbmV3T2JqLT5tX3dpZHRoID0gby0+d2lkdGgoKSAr
IG8tPm1hcmdpbkxlZnQoKSArIG8tPm1hcmdpblJpZ2h0KCk7CisgICAgbmV3T2JqLT5zZXRXaWR0
aChvLT53aWR0aCgpICsgby0+bWFyZ2luTGVmdCgpICsgby0+bWFyZ2luUmlnaHQoKSk7CiAKICAg
ICBuZXdPYmotPm1fc2hvdWxkUGFpbnQgPSAhby0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKTsgLy8g
SWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gIE90aGVyd2lz
ZSBzb21lb25lIGVsc2Ugd2lsbC4KICAgICBuZXdPYmotPm1faXNEZXNjZW5kYW50ID0gdHJ1ZTsK
QEAgLTI5NTgsMTEgKzI5NTcsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdP
YmplY3QoUgogICAgICAgICB3aGlsZSAoaXQuY3VycmVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
aXQuY3VycmVudCgpLT5tX3JlbmRlcmVyID09IG8pIHsKICAgICAgICAgICAgICAgICBpZiAoY2hp
bGRyZW5JbmxpbmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgYm90dG9tID0gaXQuY3Vy
cmVudCgpLT5tX2JvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJvdHRvbSA9IGl0LmN1
cnJlbnQoKS0+Ym90dG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSB6
ZXJvLSBhbmQgbGVzcy10aGFuLXplcm8taGVpZ2h0IGZsb2F0czogdGhvc2UgZG9uJ3QgdG91Y2gK
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGxpbmUgdGhhdCB0aGV5J3JlIG9uLCBidXQgaXQg
c3RpbGwgbmVlZHMgdG8gYmUgZGlydGllZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAv
LyBhY2NvbXBsaXNoZWQgYnkgcHJldGVuZGluZyB0aGV5IGhhdmUgYSBoZWlnaHQgb2YgMS4KLSAg
ICAgICAgICAgICAgICAgICAgYm90dG9tID0gbWF4KGJvdHRvbSwgaXQuY3VycmVudCgpLT5tX3Rv
cCArIDEpOworICAgICAgICAgICAgICAgICAgICBib3R0b20gPSBtYXgoYm90dG9tLCBpdC5jdXJy
ZW50KCktPnRvcCgpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5SW5W
ZXJ0aWNhbFJhbmdlKDAsIGJvdHRvbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1fZmxvYXRpbmdPYmplY3RzLT5yZW1vdmVSZWYoaXQuY3VycmVudCgpKTsKQEAgLTI5Nzgs
NyArMjk3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0IKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIEZsb2F0aW5nT2JqZWN0KiBjdXJyID0gbV9mbG9hdGlu
Z09iamVjdHMtPmxhc3QoKTsKLSAgICB3aGlsZSAoY3VyciAhPSBsYXN0RmxvYXQgJiYgKGN1cnIt
Pm1fdG9wID09IC0xIHx8IGN1cnItPm1fdG9wID49IHkpKSB7CisgICAgd2hpbGUgKGN1cnIgIT0g
bGFzdEZsb2F0ICYmIChjdXJyLT50b3AoKSA9PSAtMSB8fCBjdXJyLT50b3AoKSA+PSB5KSkgewog
ICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlTGFzdCgpOwogICAgICAgICBjdXJyID0g
bV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICB9CkBAIC0yOTkyLDE0ICsyOTkxLDE0IEBA
IGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICBGbG9hdGluZ09iamVj
dCogZiA9IG1fZmxvYXRpbmdPYmplY3RzLT5sYXN0KCk7CiAKICAgICAvLyBJZiBhbGwgZmxvYXRz
IGhhdmUgYWxyZWFkeSBiZWVuIHBvc2l0aW9uZWQsIHRoZW4gd2UgaGF2ZSBubyB3b3JrIHRvIGRv
LgotICAgIGlmICghZiB8fCBmLT5tX3RvcCAhPSAtMSkKKyAgICBpZiAoIWYgfHwgZi0+dG9wKCkg
IT0gLTEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1vdmUgYmFja3dhcmRzIHRo
cm91Z2ggb3VyIGZsb2F0aW5nIG9iamVjdCBsaXN0IHVudGlsIHdlIGZpbmQgYSBmbG9hdCB0aGF0
IGhhcwogICAgIC8vIGFscmVhZHkgYmVlbiBwb3NpdGlvbmVkLiAgVGhlbiB3ZSdsbCBiZSBhYmxl
IHRvIG1vdmUgZm9yd2FyZCwgcG9zaXRpb25pbmcgYWxsIG9mCiAgICAgLy8gdGhlIG5ldyBmbG9h
dHMgdGhhdCBuZWVkIGl0LgogICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+Z2V0UHJldigpOwotICAgIHdoaWxlIChsYXN0RmxvYXQgJiYgbGFzdEZsb2F0
LT5tX3RvcCA9PSAtMSkgeworICAgIHdoaWxlIChsYXN0RmxvYXQgJiYgbGFzdEZsb2F0LT50b3Ao
KSA9PSAtMSkgewogICAgICAgICBmID0gbV9mbG9hdGluZ09iamVjdHMtPnByZXYoKTsKICAgICAg
ICAgbGFzdEZsb2F0ID0gbV9mbG9hdGluZ09iamVjdHMtPmdldFByZXYoKTsKICAgICB9CkBAIC0z
MDA4LDcgKzMwMDcsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cygpCiAg
ICAgCiAgICAgLy8gVGhlIGZsb2F0IGNhbm5vdCBzdGFydCBhYm92ZSB0aGUgeSBwb3NpdGlvbiBv
ZiB0aGUgbGFzdCBwb3NpdGlvbmVkIGZsb2F0LgogICAgIGlmIChsYXN0RmxvYXQpCi0gICAgICAg
IHkgPSBtYXgobGFzdEZsb2F0LT5tX3RvcCwgeSk7CisgICAgICAgIHkgPSBtYXgobGFzdEZsb2F0
LT50b3AoKSwgeSk7CiAKICAgICAvLyBOb3cgd2FsayB0aHJvdWdoIHRoZSBzZXQgb2YgdW5wb3Np
dGlvbmVkIGZsb2F0cyBhbmQgcGxhY2UgdGhlbS4KICAgICB3aGlsZSAoZikgewpAQCAtMzAyMyw3
ICszMDIyLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogCiAgICAg
ICAgIGludCBybyA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoKTsgLy8gQ29uc3RhbnQg
cGFydCBvZiByaWdodCBvZmZzZXQuCiAgICAgICAgIGludCBsbyA9IGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yQ29udGVudCgpOyAvLyBDb25zdGFudCBwYXJ0IG9mIGxlZnQgb2Zmc2V0LgotICAgICAgICBp
bnQgZndpZHRoID0gZi0+bV93aWR0aDsgLy8gVGhlIHdpZHRoIHdlIGxvb2sgZm9yLgorICAgICAg
ICBpbnQgZndpZHRoID0gZi0+d2lkdGgoKTsgLy8gVGhlIHdpZHRoIHdlIGxvb2sgZm9yLgogICAg
ICAgICBpZiAocm8gLSBsbyA8IGZ3aWR0aCkKICAgICAgICAgICAgIGZ3aWR0aCA9IHJvIC0gbG87
IC8vIE5ldmVyIGxvb2sgZm9yIG1vcmUgdGhhbiB3aGF0IHdpbGwgYmUgYXZhaWxhYmxlLgogICAg
ICAgICAKQEAgLTMwNDMsNyArMzA0Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3
RmxvYXRzKCkKICAgICAgICAgICAgICAgICBmeCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSh5
LCBsbywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdMZWZ0KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZ4ID0gbWF4KDAsIGZ4KTsKLSAgICAgICAgICAgIGYtPm1fbGVmdCA9IGZ4OworICAg
ICAgICAgICAgZi0+c2V0TGVmdChmeCk7CiAgICAgICAgICAgICBvLT5zZXRMb2NhdGlvbihmeCAr
IG8tPm1hcmdpbkxlZnQoKSwgeSArIG8tPm1hcmdpblRvcCgpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGludCBoZWlnaHRSZW1haW5pbmdMZWZ0ID0gMTsKQEAgLTMwNTMsNyArMzA1
Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgICAg
ICAgICB5ICs9IG1pbihoZWlnaHRSZW1haW5pbmdMZWZ0LCBoZWlnaHRSZW1haW5pbmdSaWdodCk7
CiAgICAgICAgICAgICAgICAgZnggPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHksIHJvLCBm
YWxzZSwgJmhlaWdodFJlbWFpbmluZ1JpZ2h0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGYtPm1fbGVmdCA9IGZ4IC0gZi0+bV93aWR0aDsKKyAgICAgICAgICAgIGYtPnNldExlZnQoZngg
LSBmLT53aWR0aCgpKTsKICAgICAgICAgICAgIG8tPnNldExvY2F0aW9uKGZ4IC0gby0+bWFyZ2lu
UmlnaHQoKSAtIG8tPndpZHRoKCksIHkgKyBvLT5tYXJnaW5Ub3AoKSk7CiAgICAgICAgIH0KIApA
QCAtMzA4Niw5ICszMDg1LDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMo
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZi0+bV90b3AgPSB5OwotICAg
ICAgICBmLT5tX2JvdHRvbSA9IGYtPm1fdG9wICsgby0+bWFyZ2luVG9wKCkgKyBvLT5oZWlnaHQo
KSArIG8tPm1hcmdpbkJvdHRvbSgpOwotICAgICAgICAKKyAgICAgICAgZi0+c2V0VG9wKHkpOwor
ICAgICAgICBmLT5zZXRIZWlnaHQoby0+bWFyZ2luVG9wKCkgKyBvLT5oZWlnaHQoKSArIG8tPm1h
cmdpbkJvdHRvbSgpKTsKKwogICAgICAgICAvLyBJZiB0aGUgY2hpbGQgbW92ZWQsIHdlIGhhdmUg
dG8gcmVwYWludCBpdC4KICAgICAgICAgaWYgKG8tPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91
dCgpKQogICAgICAgICAgICAgby0+cmVwYWludER1cmluZ0xheW91dElmTW92ZWQob2xkUmVjdCk7
CkBAIC0zMTA0LDcgKzMxMDMsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lCiAgICAgaWYgKCFkaWRQb3NpdGlvbiB8fCAhbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0
cnV0KQogICAgICAgICByZXR1cm4gZGlkUG9zaXRpb247CiAgICAgCi0gICAgaW50IGZsb2F0VG9w
ID0gbmV3RmxvYXQtPm1fdG9wOworICAgIGludCBmbG9hdFRvcCA9IG5ld0Zsb2F0LT50b3AoKTsK
ICAgICBpbnQgcGFnaW5hdGlvblN0cnV0ID0gbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0cnV0Owog
ICAgIEZsb2F0aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICAK
QEAgLTMxMTQsNyArMzExMyw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRP
bkxpbmUKICAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOwogCiAgICAgZm9yIChmID0gbV9mbG9h
dGluZ09iamVjdHMtPnByZXYoKTsgZiAmJiBmICE9IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmU7
IGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+cHJldigpKSB7Ci0gICAgICAgIGlmIChmLT5tX3RvcCA9
PSBoZWlnaHQoKSkgeworICAgICAgICBpZiAoZi0+dG9wKCkgPT0gaGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghZi0+bV9wYWdpbmF0aW9uU3RydXQpOwogICAgICAgICAgICAgZi0+bV9w
YWdpbmF0aW9uU3RydXQgPSBwYWdpbmF0aW9uU3RydXQ7CiAgICAgICAgICAgICBSZW5kZXJCb3gq
IG8gPSBmLT5tX3JlbmRlcmVyOwpAQCAtMzEyMiw4ICszMTIxLDcgQEAgYm9vbCBSZW5kZXJCbG9j
azo6cG9zaXRpb25OZXdGbG9hdE9uTGluZQogICAgICAgICAgICAgaWYgKG8tPmlzUmVuZGVyQmxv
Y2soKSkKICAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2NrKG8pLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgIG8tPmxheW91dElmTmVlZGVkKCk7Ci0gICAg
ICAgICAgICBmLT5tX3RvcCArPSBmLT5tX3BhZ2luYXRpb25TdHJ1dDsKLSAgICAgICAgICAgIGYt
Pm1fYm90dG9tICs9IGYtPm1fcGFnaW5hdGlvblN0cnV0OworICAgICAgICAgICAgZi0+c2V0VG9w
KGYtPnRvcCgpICsgZi0+bV9wYWdpbmF0aW9uU3RydXQpOwogICAgICAgICB9CiAgICAgfQogICAg
ICAgICAKQEAgLTMyMjMsMTEgKzMyMjEsMTEgQEAgaW50IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVm
dE9mZnNldEZvckxpbgogICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5n
T2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwogICAgICAgICBmb3IgKCA7IChyID0gaXQu
Y3VycmVudCgpKTsgKytpdCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyLT5tX3RvcCA8
PSB5ICYmIHItPm1fYm90dG9tID4geSAmJgorICAgICAgICAgICAgaWYgKHItPnRvcCgpIDw9IHkg
JiYgci0+Ym90dG9tKCkgPiB5ICYmCiAgICAgICAgICAgICAgICAgci0+dHlwZSgpID09IEZsb2F0
aW5nT2JqZWN0OjpGbG9hdExlZnQgJiYKLSAgICAgICAgICAgICAgICByLT5tX2xlZnQgKyByLT5t
X3dpZHRoID4gbGVmdCkgewotICAgICAgICAgICAgICAgIGxlZnQgPSByLT5tX2xlZnQgKyByLT5t
X3dpZHRoOwotICAgICAgICAgICAgICAgIGlmICggaGVpZ2h0UmVtYWluaW5nICkgKmhlaWdodFJl
bWFpbmluZyA9IHItPm1fYm90dG9tIC0geTsKKyAgICAgICAgICAgICAgICByLT5yaWdodCgpID4g
bGVmdCkgeworICAgICAgICAgICAgICAgIGxlZnQgPSByLT5yaWdodCgpOworICAgICAgICAgICAg
ICAgIGlmICggaGVpZ2h0UmVtYWluaW5nICkgKmhlaWdodFJlbWFpbmluZyA9IHItPmJvdHRvbSgp
IC0geTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTMyNTIsMTEgKzMyNTAs
MTEgQEAgaW50IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaQogICAgICAgICBE
ZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09i
amVjdHMpOwogICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChyLT5tX3RvcCA8PSB5ICYmIHItPm1fYm90dG9tID4geSAm
JgorICAgICAgICAgICAgaWYgKHItPnRvcCgpIDw9IHkgJiYgci0+Ym90dG9tKCkgPiB5ICYmCiAg
ICAgICAgICAgICAgICAgci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0ICYm
Ci0gICAgICAgICAgICAgICAgci0+bV9sZWZ0IDwgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBy
aWdodCA9IHItPm1fbGVmdDsKLSAgICAgICAgICAgICAgICBpZiAoIGhlaWdodFJlbWFpbmluZyAp
ICpoZWlnaHRSZW1haW5pbmcgPSByLT5tX2JvdHRvbSAtIHk7CisgICAgICAgICAgICAgICAgci0+
bGVmdCgpIDwgcmlnaHQpIHsKKyAgICAgICAgICAgICAgICByaWdodCA9IHItPmxlZnQoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIGhlaWdodFJlbWFpbmluZyApICpoZWlnaHRSZW1haW5pbmcgPSBy
LT5ib3R0b20oKSAtIHk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjg3
LDggKzMyODUsOCBAQCBpbnQgUmVuZGVyQmxvY2s6Om5leHRGbG9hdEJvdHRvbUJlbG93KGluCiAg
ICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxGbG9h
dGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICBmb3IgKCA7IChyID0gaXQu
Y3VycmVudCgpKTsgKytpdCkgewotICAgICAgICBpZiAoci0+bV9ib3R0b20gPiBoZWlnaHQpCi0g
ICAgICAgICAgICBib3R0b20gPSBtaW4oci0+bV9ib3R0b20sIGJvdHRvbSk7CisgICAgICAgIGlm
IChyLT5ib3R0b20oKSA+IGhlaWdodCkKKyAgICAgICAgICAgIGJvdHRvbSA9IG1pbihyLT5ib3R0
b20oKSwgYm90dG9tKTsKICAgICB9CiAKICAgICByZXR1cm4gYm90dG9tID09IElOVF9NQVggPyAw
IDogYm90dG9tOwpAQCAtMzMwMiw4ICszMzAwLDggQEAgUmVuZGVyQmxvY2s6OmZsb2F0Qm90dG9t
KCkgY29uc3QKICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICBEZXByZWNhdGVkUHRyTGlzdEl0
ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAo
IDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkKLSAgICAgICAgaWYgKHItPm1fYm90dG9tPmJv
dHRvbSkKLSAgICAgICAgICAgIGJvdHRvbSA9IHItPm1fYm90dG9tOworICAgICAgICBpZiAoci0+
Ym90dG9tKCkgPiBib3R0b20pCisgICAgICAgICAgICBib3R0b20gPSByLT5ib3R0b20oKTsKICAg
ICByZXR1cm4gYm90dG9tOwogfQogCkBAIC0zMzczLDcgKzMzNzEsNyBAQCBpbnQgUmVuZGVyQmxv
Y2s6Omxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jCiAgICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRl
cmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7CiAgICAgICAgIGZv
ciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkgewogICAgICAgICAgICAgaWYgKHItPm1f
c2hvdWxkUGFpbnQgfHwgci0+bV9yZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewot
ICAgICAgICAgICAgICAgIGludCBscCA9IHItPm1fdG9wICsgci0+bV9yZW5kZXJlci0+bWFyZ2lu
VG9wKCkgKyByLT5tX3JlbmRlcmVyLT5sb3dlc3RQb3NpdGlvbihmYWxzZSk7CisgICAgICAgICAg
ICAgICAgaW50IGxwID0gci0+dG9wKCkgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSArIHIt
Pm1fcmVuZGVyZXItPmxvd2VzdFBvc2l0aW9uKGZhbHNlKTsKICAgICAgICAgICAgICAgICBib3R0
b20gPSBtYXgoYm90dG9tLCBscCArIHJlbGF0aXZlT2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMzQ3MCw3ICszNDY4LDcgQEAgaW50IFJlbmRlckJsb2NrOjpyaWdodG1vc3RQ
b3NpdGlvbihib29sIAogICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5n
T2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwogICAgICAgICBmb3IgKCA7IChyID0gaXQu
Y3VycmVudCgpKTsgKytpdCApIHsKICAgICAgICAgICAgIGlmIChyLT5tX3Nob3VsZFBhaW50IHx8
IHItPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAg
ICBpbnQgcnAgPSByLT5tX2xlZnQgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyByLT5t
X3JlbmRlcmVyLT5yaWdodG1vc3RQb3NpdGlvbihmYWxzZSk7CisgICAgICAgICAgICAgICAgaW50
IHJwID0gci0+bGVmdCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgci0+bV9yZW5k
ZXJlci0+cmlnaHRtb3N0UG9zaXRpb24oZmFsc2UpOwogICAgICAgICAgICAgICAgIHJpZ2h0ID0g
bWF4KHJpZ2h0LCBycCArIHJlbGF0aXZlT2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMzU3MSw3ICszNTY5LDcgQEAgaW50IFJlbmRlckJsb2NrOjpsZWZ0bW9zdFBvc2l0aW9u
KGJvb2wgaQogICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0
PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwogICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVu
dCgpKTsgKytpdCApIHsKICAgICAgICAgICAgIGlmIChyLT5tX3Nob3VsZFBhaW50IHx8IHItPm1f
cmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQg
bHAgPSByLT5tX2xlZnQgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyByLT5tX3JlbmRl
cmVyLT5sZWZ0bW9zdFBvc2l0aW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpbnQgbHAgPSBy
LT5sZWZ0KCkgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyByLT5tX3JlbmRlcmVyLT5s
ZWZ0bW9zdFBvc2l0aW9uKGZhbHNlKTsKICAgICAgICAgICAgICAgICBsZWZ0ID0gbWluKGxlZnQs
IGxwICsgcmVsYXRpdmVPZmZzZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNTg1
LDMwICszNTgzLDI4IEBAIGludCBSZW5kZXJCbG9jazo6bGVmdG1vc3RQb3NpdGlvbihib29sIGkK
ICAgICByZXR1cm4gbGVmdDsKIH0KIAotaW50Ci1SZW5kZXJCbG9jazo6bGVmdEJvdHRvbSgpCitp
bnQgUmVuZGVyQmxvY2s6OmxlZnRCb3R0b20oKQogewogICAgIGlmICghbV9mbG9hdGluZ09iamVj
dHMpIHJldHVybiAwOwogICAgIGludCBib3R0b20gPSAwOwogICAgIEZsb2F0aW5nT2JqZWN0KiBy
OwogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zs
b2F0aW5nT2JqZWN0cyk7Ci0gICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKQot
ICAgICAgICBpZiAoci0+bV9ib3R0b20gPiBib3R0b20gJiYgci0+dHlwZSgpID09IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdExlZnQpCi0gICAgICAgICAgICBib3R0b20gPSByLT5tX2JvdHRvbTsKKyAg
ICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkKKyAgICAgICAgaWYgKHItPmJvdHRv
bSgpID4gYm90dG9tICYmIHItPnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0KQor
ICAgICAgICAgICAgYm90dG9tID0gci0+Ym90dG9tKCk7CiAKICAgICByZXR1cm4gYm90dG9tOwog
fQogCi1pbnQKLVJlbmRlckJsb2NrOjpyaWdodEJvdHRvbSgpCitpbnQgUmVuZGVyQmxvY2s6OnJp
Z2h0Qm90dG9tKCkKIHsKICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKSByZXR1cm4gMDsKICAg
ICBpbnQgYm90dG9tID0gMDsKICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICBEZXByZWNhdGVk
UHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwot
ICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkKLSAgICAgICAgaWYgKHItPm1f
Ym90dG9tPmJvdHRvbSAmJiByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQp
Ci0gICAgICAgICAgICBib3R0b20gPSByLT5tX2JvdHRvbTsKKyAgICBmb3IgKCA7IChyID0gaXQu
Y3VycmVudCgpKTsgKytpdCkKKyAgICAgICAgaWYgKHItPmJvdHRvbSgpID4gYm90dG9tICYmIHIt
PnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodCkKKyAgICAgICAgICAgIGJvdHRv
bSA9IHItPmJvdHRvbSgpOwogCiAgICAgcmV0dXJuIGJvdHRvbTsKIH0KQEAgLTM2OTksMTkgKzM2
OTUsMTkgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMoKQogICAgICAgICAgICAgZm9y
IChGbG9hdGluZ09iamVjdCogZiA9IG1fZmxvYXRpbmdPYmplY3RzLT5maXJzdCgpOyBmOyBmID0g
bV9mbG9hdGluZ09iamVjdHMtPm5leHQoKSkgewogICAgICAgICAgICAgICAgIEZsb2F0aW5nT2Jq
ZWN0KiBvbGRGbG9hdGluZ09iamVjdCA9IGZsb2F0TWFwLmdldChmLT5tX3JlbmRlcmVyKTsKICAg
ICAgICAgICAgICAgICBpZiAob2xkRmxvYXRpbmdPYmplY3QpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGYtPm1fd2lkdGggIT0gb2xkRmxvYXRpbmdPYmplY3QtPm1fd2lkdGggfHwgZi0+bV9s
ZWZ0ICE9IG9sZEZsb2F0aW5nT2JqZWN0LT5tX2xlZnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGYtPndpZHRoKCkgIT0gb2xkRmxvYXRpbmdPYmplY3QtPndpZHRoKCkgfHwgZi0+bGVmdCgp
ICE9IG9sZEZsb2F0aW5nT2JqZWN0LT5sZWZ0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZVRvcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBt
YXgoY2hhbmdlQm90dG9tLCBtYXgoZi0+bV9ib3R0b20sIG9sZEZsb2F0aW5nT2JqZWN0LT5tX2Jv
dHRvbSkpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYtPm1fYm90dG9tICE9IG9s
ZEZsb2F0aW5nT2JqZWN0LT5tX2JvdHRvbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlVG9wID0gbWluKGNoYW5nZVRvcCwgbWluKGYtPm1fYm90dG9tLCBvbGRGbG9hdGluZ09iamVj
dC0+bV9ib3R0b20pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUJvdHRvbSA9IG1h
eChjaGFuZ2VCb3R0b20sIG1heChmLT5tX2JvdHRvbSwgb2xkRmxvYXRpbmdPYmplY3QtPm1fYm90
dG9tKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBtYXgoY2hhbmdl
Qm90dG9tLCBtYXgoZi0+Ym90dG9tKCksIG9sZEZsb2F0aW5nT2JqZWN0LT5ib3R0b20oKSkpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYtPmJvdHRvbSgpICE9IG9sZEZsb2F0aW5n
T2JqZWN0LT5ib3R0b20oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlVG9wID0g
bWluKGNoYW5nZVRvcCwgbWluKGYtPmJvdHRvbSgpLCBvbGRGbG9hdGluZ09iamVjdC0+Ym90dG9t
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUJvdHRvbSA9IG1heChjaGFuZ2VC
b3R0b20sIG1heChmLT5ib3R0b20oKSwgb2xkRmxvYXRpbmdPYmplY3QtPmJvdHRvbSgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBmbG9hdE1hcC5yZW1v
dmUoZi0+bV9yZW5kZXJlcik7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvbGRGbG9hdGlu
Z09iamVjdDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VUb3AgPSAwOwotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBtYXgoY2hh
bmdlQm90dG9tLCBmLT5tX2JvdHRvbSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZUJvdHRv
bSA9IG1heChjaGFuZ2VCb3R0b20sIGYtPmJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM3MjEsNyArMzcxNyw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGlu
Z09iamVjdCA9ICgqaXQpLnNlY29uZDsKICAgICAgICAgICAgIGlmICghZmxvYXRpbmdPYmplY3Qt
Pm1faXNEZXNjZW5kYW50KSB7CiAgICAgICAgICAgICAgICAgY2hhbmdlVG9wID0gMDsKLSAgICAg
ICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBtYXgoY2hhbmdlQm90dG9tLCBmbG9hdGluZ09iamVj
dC0+bV9ib3R0b20pOworICAgICAgICAgICAgICAgIGNoYW5nZUJvdHRvbSA9IG1heChjaGFuZ2VC
b3R0b20sIGZsb2F0aW5nT2JqZWN0LT5ib3R0b20oKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKGZsb2F0TWFwKTsKQEAgLTM3NDIsMTcgKzM3Mzgs
MTMgQEAgaW50IFJlbmRlckJsb2NrOjphZGRPdmVyaGFuZ2luZ0Zsb2F0cyhSZQogICAgIC8vIG92
ZXJmbG93LgogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0
KCpjaGlsZC0+bV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoRmxvYXRpbmdPYmplY3QqIHI7
IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkgewotICAgICAgICBpbnQgYm90dG9tID0gY2hpbGQt
PnkoKSArIHItPm1fYm90dG9tOworICAgICAgICBpbnQgYm90dG9tID0gY2hpbGQtPnkoKSArIHIt
PmJvdHRvbSgpOwogICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IG1heChsb3dlc3RGbG9hdEJv
dHRvbSwgYm90dG9tKTsKIAogICAgICAgICBpZiAoYm90dG9tID4gaGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgIC8vIElmIHRoZSBvYmplY3QgaXMgbm90IGluIHRoZSBsaXN0LCB3ZSBhZGQgaXQgbm93
LgogICAgICAgICAgICAgaWYgKCFjb250YWluc0Zsb2F0KHItPm1fcmVuZGVyZXIpKSB7Ci0gICAg
ICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QgKmZsb2F0aW5nT2JqID0gbmV3IEZsb2F0aW5nT2Jq
ZWN0KHItPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgZmxvYXRpbmdPYmotPm1fdG9wID0gci0+
bV90b3AgLSB5b2ZmOwotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX2JvdHRvbSA9IHIt
Pm1fYm90dG9tIC0geW9mZjsKLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV9sZWZ0ID0g
ci0+bV9sZWZ0IC0geG9mZjsKLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV93aWR0aCA9
IHItPm1fd2lkdGg7CisgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2Jq
ID0gbmV3IEZsb2F0aW5nT2JqZWN0KHItPnR5cGUoKSwgSW50UmVjdChyLT5sZWZ0KCkgLSB4b2Zm
LCByLT50b3AoKSAtIHlvZmYsIHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICAgICAgZmxvYXRpbmdPYmotPm1fcmVuZGVyZXIgPSByLT5tX3JlbmRlcmVyOwogCiAgICAgICAg
ICAgICAgICAgLy8gVGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxheWVyIGFsd2F5cyBwYWludHMgdGhl
IGZsb2F0IChzbyB0aGF0IHppbmRleCBhbmQgc3RhY2tpbmcKQEAgLTM3ODEsNyArMzc3Myw3IEBA
IGludCBSZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmUKICAgICAgICAgICAgIHIt
Pm1fc2hvdWxkUGFpbnQgPSB0cnVlOwogCiAgICAgICAgIGlmIChyLT5tX3Nob3VsZFBhaW50ICYm
ICFyLT5tX3JlbmRlcmVyLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKQotICAgICAgICAgICAgY2hp
bGQtPmFkZE92ZXJmbG93RnJvbUNoaWxkKHItPm1fcmVuZGVyZXIsIEludFNpemUoci0+bV9sZWZ0
ICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpLCByLT5tX3RvcCArIHItPm1fcmVuZGVyZXIt
Pm1hcmdpblRvcCgpKSk7CisgICAgICAgICAgICBjaGlsZC0+YWRkT3ZlcmZsb3dGcm9tQ2hpbGQo
ci0+bV9yZW5kZXJlciwgSW50U2l6ZShyLT5sZWZ0KCkgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5M
ZWZ0KCksIHItPnRvcCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2luVG9wKCkpKTsKICAgICB9CiAg
ICAgcmV0dXJuIGxvd2VzdEZsb2F0Qm90dG9tOwogfQpAQCAtMzc5NCw3ICszNzg2LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6YWRkSW50cnVkaW5nRmxvYXRzKFJlbgogCiAgICAgRGVwcmVjYXRlZFB0
ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKnByZXYtPm1fZmxvYXRpbmdPYmplY3Rz
KTsKICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0ICpyOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQp
IHsKLSAgICAgICAgaWYgKHItPm1fYm90dG9tID4geW9mZikgeworICAgICAgICBpZiAoci0+Ym90
dG9tKCkgPiB5b2ZmKSB7CiAgICAgICAgICAgICAvLyBUaGUgb2JqZWN0IG1heSBhbHJlYWR5IGJl
IGluIG91ciBsaXN0LiBDaGVjayBmb3IgaXQgdXAgZnJvbnQgdG8gYXZvaWQKICAgICAgICAgICAg
IC8vIGNyZWF0aW5nIGR1cGxpY2F0ZSBlbnRyaWVzLgogICAgICAgICAgICAgRmxvYXRpbmdPYmpl
Y3QqIGYgPSAwOwpAQCAtMzgwNiwyMCArMzc5OCwxNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRJ
bnRydWRpbmdGbG9hdHMoUmVuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFmKSB7Ci0gICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QgKmZsb2F0
aW5nT2JqID0gbmV3IEZsb2F0aW5nT2JqZWN0KHItPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAg
ZmxvYXRpbmdPYmotPm1fdG9wID0gci0+bV90b3AgLSB5b2ZmOwotICAgICAgICAgICAgICAgIGZs
b2F0aW5nT2JqLT5tX2JvdHRvbSA9IHItPm1fYm90dG9tIC0geW9mZjsKLSAgICAgICAgICAgICAg
ICBmbG9hdGluZ09iai0+bV9sZWZ0ID0gci0+bV9sZWZ0IC0geG9mZjsKKyAgICAgICAgICAgICAg
ICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmogPSBuZXcgRmxvYXRpbmdPYmplY3Qoci0+dHlw
ZSgpLCBJbnRSZWN0KHItPmxlZnQoKSAtIHhvZmYgLSBtYXJnaW5MZWZ0KCksIHItPnRvcCgpIC0g
eW9mZiwgci0+d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKKwogICAgICAgICAgICAgICAgIC8vIEFw
cGx5aW5nIHRoZSBjaGlsZCdzIG1hcmdpbiBtYWtlcyBubyBzZW5zZSBpbiB0aGUgY2FzZSB3aGVy
ZSB0aGUgY2hpbGQgd2FzIHBhc3NlZCBpbi4KICAgICAgICAgICAgICAgICAvLyBzaW5jZSBoaXMg
b3duIG1hcmdpbiB3YXMgYWRkZWQgYWxyZWFkeSB0aHJvdWdoIHRoZSBzdWJ0cmFjdGlvbiBvZiB0
aGUgfHhvZmZ8IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgLy8gYWJvdmUuICB8eG9mZnwgd2ls
bCBlcXVhbCAtZmxvdy0+bWFyZ2luTGVmdCgpIGluIHRoaXMgY2FzZSwgc28gaXQncyBhbHJlYWR5
IGJlZW4gdGFrZW4KICAgICAgICAgICAgICAgICAvLyBpbnRvIGFjY291bnQuICBPbmx5IGFwcGx5
IHRoaXMgY29kZSBpZiB8Y2hpbGR8IGlzIGZhbHNlLCBzaW5jZSBvdGhlcndpc2UgdGhlIGxlZnQg
bWFyZ2luCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBnZXQgYXBwbGllZCB0d2ljZS4KICAgICAg
ICAgICAgICAgICBpZiAocHJldiAhPSBwYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgZmxv
YXRpbmdPYmotPm1fbGVmdCArPSBwcmV2LT5tYXJnaW5MZWZ0KCk7Ci0gICAgICAgICAgICAgICAg
ZmxvYXRpbmdPYmotPm1fbGVmdCAtPSBtYXJnaW5MZWZ0KCk7CisgICAgICAgICAgICAgICAgICAg
IGZsb2F0aW5nT2JqLT5zZXRMZWZ0KGZsb2F0aW5nT2JqLT5sZWZ0KCkgKyBwcmV2LT5tYXJnaW5M
ZWZ0KCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5t
X3Nob3VsZFBhaW50ID0gZmFsc2U7ICAvLyBXZSBhcmUgbm90IGluIHRoZSBkaXJlY3QgaW5oZXJp
dGFuY2UgY2hhaW4gZm9yIHRoaXMgZmxvYXQuIFdlIHdpbGwgbmV2ZXIgcGFpbnQgaXQuCi0gICAg
ICAgICAgICAgICAgZmxvYXRpbmdPYmotPm1fd2lkdGggPSByLT5tX3dpZHRoOwogICAgICAgICAg
ICAgICAgIGZsb2F0aW5nT2JqLT5tX3JlbmRlcmVyID0gci0+bV9yZW5kZXJlcjsKICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIGZsb2F0aW5nIG9iamVj
dCBsaXN0IGxhemlseS4KQEAgLTQwNTAsOCArNDAzOSw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhp
dFRlc3RGbG9hdHMoY29uc3QgSGkKICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0
aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoaXQudG9MYXN0KCk7
IChmbG9hdGluZ09iamVjdCA9IGl0LmN1cnJlbnQoKSk7IC0taXQpIHsKICAgICAgICAgaWYgKGZs
b2F0aW5nT2JqZWN0LT5tX3Nob3VsZFBhaW50ICYmICFmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJl
ci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgaW50IHhPZmZzZXQgPSB0
eCArIGZsb2F0aW5nT2JqZWN0LT5tX2xlZnQgKyBmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJlci0+
bWFyZ2luTGVmdCgpIC0gZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXItPngoKTsKLSAgICAgICAg
ICAgIGludCB5T2Zmc2V0ID0gIHR5ICsgZmxvYXRpbmdPYmplY3QtPm1fdG9wICsgZmxvYXRpbmdP
YmplY3QtPm1fcmVuZGVyZXItPm1hcmdpblRvcCgpIC0gZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVy
ZXItPnkoKTsKKyAgICAgICAgICAgIGludCB4T2Zmc2V0ID0gdHggKyBmbG9hdGluZ09iamVjdC0+
bGVmdCgpICsgZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQoKSAtIGZsb2F0
aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT54KCk7CisgICAgICAgICAgICBpbnQgeU9mZnNldCA9ICB0
eSArIGZsb2F0aW5nT2JqZWN0LT50b3AoKSArIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT5t
YXJnaW5Ub3AoKSAtIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT55KCk7CiAgICAgICAgICAg
ICBpZiAoZmxvYXRpbmdPYmplY3QtPm1fcmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
LCBJbnRQb2ludCh4LCB5KSwgeE9mZnNldCwgeU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICB1
cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgSW50UG9pbnQoeCAtIHhPZmZzZXQsIHkgLSB5T2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NTM3LDcgKzU1MjYsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjphZGp1c3RGb3JCb3JkZXJGaXQoaW50CiAgICAgICAgICAgICBm
b3IgKDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgLy8gT25s
eSBleGFtaW5lIHRoZSBvYmplY3QgaWYgb3VyIG1fc2hvdWxkUGFpbnQgZmxhZyBpcyBzZXQuCiAg
ICAgICAgICAgICAgICAgaWYgKHItPm1fc2hvdWxkUGFpbnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaW50IGZsb2F0TGVmdCA9IHItPm1fbGVmdCAtIHItPm1fcmVuZGVyZXItPngoKSArIHItPm1f
cmVuZGVyZXItPm1hcmdpbkxlZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZsb2F0TGVm
dCA9IHItPmxlZnQoKSAtIHItPm1fcmVuZGVyZXItPngoKSArIHItPm1fcmVuZGVyZXItPm1hcmdp
bkxlZnQoKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGZsb2F0UmlnaHQgPSBmbG9hdExlZnQg
KyByLT5tX3JlbmRlcmVyLT53aWR0aCgpOwogICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbWlu
KGxlZnQsIGZsb2F0TGVmdCk7CiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWF4KHJpZ2h0
LCBmbG9hdFJpZ2h0KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gNjg4
NDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjQsMTIgKzM2NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBGbG9hdFJpZ2h0CiAgICAg
ICAgIH07CiAKLSAgICAgICAgRmxvYXRpbmdPYmplY3QoVHlwZSB0eXBlKQorICAgICAgICBGbG9h
dGluZ09iamVjdChUeXBlIHR5cGUsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCA9IEludFJlY3Qo
KSkKICAgICAgICAgICAgIDogbV9yZW5kZXJlcigwKQotICAgICAgICAgICAgLCBtX3RvcCgwKQot
ICAgICAgICAgICAgLCBtX2JvdHRvbSgwKQotICAgICAgICAgICAgLCBtX2xlZnQoMCkKLSAgICAg
ICAgICAgICwgbV93aWR0aCgwKQorICAgICAgICAgICAgLCBtX2ZyYW1lUmVjdChmcmFtZVJlY3Qp
CiAgICAgICAgICAgICAsIG1fcGFnaW5hdGlvblN0cnV0KDApCiAgICAgICAgICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICAgICAgICAgLCBtX3Nob3VsZFBhaW50KHRydWUpCkBAIC0zNzksMTEgKzM3
NiwyMyBAQCBwcml2YXRlOgogCiAgICAgICAgIFR5cGUgdHlwZSgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGU+KG1fdHlwZSk7IH0KIAorICAgICAgICBpbnQgbGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVSZWN0LngoKTsgfQorICAgICAgICBpbnQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lUmVjdC5yaWdodCgpOyB9CisgICAgICAgIGludCB0b3AoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lUmVjdC55KCk7IH0KKyAgICAgICAgaW50IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVSZWN0LmJvdHRvbSgpOyB9CisgICAgICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVSZWN0LndpZHRoKCk7IH0KKyAgICAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9CisgICAgCisgICAgICAgIHZvaWQgc2V0TGVmdChp
bnQgbGVmdCkgeyBtX2ZyYW1lUmVjdC5zZXRYKGxlZnQpOyB9CisgICAgICAgIHZvaWQgc2V0VG9w
KGludCB0b3ApIHsgbV9mcmFtZVJlY3Quc2V0WSh0b3ApOyB9CisgICAgICAgIHZvaWQgc2V0V2lk
dGgoaW50IHdpZHRoKSB7IG1fZnJhbWVSZWN0LnNldFdpZHRoKHdpZHRoKTsgfQorICAgICAgICB2
b2lkIHNldEhlaWdodChpbnQgaGVpZ2h0KSB7IG1fZnJhbWVSZWN0LnNldEhlaWdodChoZWlnaHQp
OyB9CisKKyAgICAgICAgY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZVJlY3Q7IH0KKyAgICAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYg
ZnJhbWVSZWN0KSB7IG1fZnJhbWVSZWN0ID0gZnJhbWVSZWN0OyB9CisKICAgICAgICAgUmVuZGVy
Qm94KiBtX3JlbmRlcmVyOwotICAgICAgICBpbnQgbV90b3A7Ci0gICAgICAgIGludCBtX2JvdHRv
bTsKLSAgICAgICAgaW50IG1fbGVmdDsKLSAgICAgICAgaW50IG1fd2lkdGg7CisgICAgICAgIElu
dFJlY3QgbV9mcmFtZVJlY3Q7CiAgICAgICAgIGludCBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICAg
ICAgdW5zaWduZWQgbV90eXBlIDogMTsgLy8gVHlwZSAobGVmdCBvciByaWdodCBhbGlnbmVkKQog
ICAgICAgICBib29sIG1fc2hvdWxkUGFpbnQgOiAxOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiA2ODgxNykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
MCw3ICs4MTAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihiCiAg
ICAgICAgICAgICAgICAgICAgIGxhc3RSb290Qm94KCktPmZsb2F0cygpLmFwcGVuZChmLT5tX3Jl
bmRlcmVyKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGYtPm1fcmVuZGVyZXIgPT0gZmxv
YXRzW2Zsb2F0SW5kZXhdLm9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIGEgZmxv
YXQncyBnZW9tZXRyeSBoYXMgY2hhbmdlZCwgZ2l2ZSB1cCBvbiBzeW5jaW5nIHdpdGggY2xlYW4g
bGluZXMuCi0gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdHNbZmxvYXRJbmRleF0ucmVjdCAh
PSBJbnRSZWN0KGYtPm1fbGVmdCwgZi0+bV90b3AsIGYtPm1fd2lkdGgsIGYtPm1fYm90dG9tIC0g
Zi0+bV90b3ApKQorICAgICAgICAgICAgICAgICAgICBpZiAoZmxvYXRzW2Zsb2F0SW5kZXhdLnJl
Y3QgIT0gZi0+ZnJhbWVSZWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ZvckVu
ZExpbmVNYXRjaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBmbG9hdEluZGV4Kys7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6
bWF0Y2hlZEVuZExpbmUoY29uc3QgSQogICAgICAgICBpbnQgYm90dG9tID0gbGFzdExpbmUtPmJs
b2NrSGVpZ2h0KCkgKyBhYnMoZGVsdGEpOwogCiAgICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3Qq
IGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+Zmlyc3QoKTsgZjsgZiA9IG1fZmxvYXRpbmdPYmplY3Rz
LT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChmLT5tX2JvdHRvbSA+PSB0b3AgJiYgZi0+bV9i
b3R0b20gPCBib3R0b20pCisgICAgICAgICAgICBpZiAoZi0+Ym90dG9tKCkgPj0gdG9wICYmIGYt
PmJvdHRvbSgpIDwgYm90dG9tKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBib29sIFJlbmRlckJsb2NrOjptYXRjaGVkRW5k
TGluZShjb25zdCBJCiAgICAgICAgICAgICAgICAgaW50IGJvdHRvbSA9IGxhc3RMaW5lLT5ibG9j
a0hlaWdodCgpICsgYWJzKGRlbHRhKTsKIAogICAgICAgICAgICAgICAgIGZvciAoRmxvYXRpbmdP
YmplY3QqIGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+Zmlyc3QoKTsgZjsgZiA9IG1fZmxvYXRpbmdP
YmplY3RzLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGYtPm1fYm90dG9tID49
IHRvcCAmJiBmLT5tX2JvdHRvbSA8IGJvdHRvbSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGYt
PmJvdHRvbSgpID49IHRvcCAmJiBmLT5ib3R0b20oKSA8IGJvdHRvbSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Cg==
</data>
<flag name="review"
          id="59220"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69514</attachid>
            <date>2010-10-01 14:04:31 -0700</date>
            <delta_ts>2010-10-01 14:21:42 -0700</delta_ts>
            <desc>Fix this crappy ancient code to pass the style checks</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>28568</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMTAtMTAtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzAxNQorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIEZsb2F0aW5nT2JqZWN0IHRvIHN0b3JlIGl0cyBkaW1lbnNpb25zIGFzIGEgcmVj
dC4KKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgZWFzaWVyIGZvciBsb2dpY2FsIGFjY2VzcyBm
b3IgYmxvY2stZmxvdyBsYXRlciBvbiBpZgorICAgICAgICB0b3AvYm90dG9tIGlzIG5vIGRpZmZl
cmVudCBmcm9tIGxlZnQvd2lkdGguICBUaGlzIGNoYW5nZSBhbHNvIHNpbXBsaWZpZXMKKyAgICAg
ICAgY2FsbGluZyBjb2RlIGEgYml0IGluIHBsYWNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tRmxvYXRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpmaWxsU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bmV4dEZsb2F0Qm90dG9tQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmZsb2F0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb3dl
c3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRtb3N0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxlZnRtb3N0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxlZnRCb3R0b20pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJpZ2h0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjbGVhckZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YWRkT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFk
ZEludHJ1ZGluZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aGl0VGVz
dEZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0Rm9yQm9yZGVy
Rml0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpsZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6cmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojpib3R0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Ojp3aWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldExlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRUb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldEhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OmZyYW1lUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldEZyYW1lUmVjdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hdGNoZWRFbmRMaW5lKToKKwogMjAxMC0xMC0wMSAgRW5y
aWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNjg5
MDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMTAsNyArMTMxMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUZs
b2F0cygKICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgq
bV9mbG9hdGluZ09iamVjdHMpOwogICAgIGZvciAoOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQp
IHsKICAgICAgICAgaWYgKHItPm1fc2hvdWxkUGFpbnQgJiYgIXItPm1fcmVuZGVyZXItPmhhc1Nl
bGZQYWludGluZ0xheWVyKCkpCi0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5t
X3JlbmRlcmVyLCBJbnRTaXplKHItPm1fbGVmdCArIHItPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQo
KSwgci0+bV90b3AgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSkpOworICAgICAgICAgICAg
YWRkT3ZlcmZsb3dGcm9tQ2hpbGQoci0+bV9yZW5kZXJlciwgSW50U2l6ZShyLT5sZWZ0KCkgKyBy
LT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCksIHItPnRvcCgpICsgci0+bV9yZW5kZXJlci0+bWFy
Z2luVG9wKCkpKTsKICAgICB9CiAgICAgcmV0dXJuOwogfQpAQCAtMjA3NSw3ICsyMDc1LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxvYQogICAgICAgICAgICAgLy8g
T25seSByZXBhaW50IHRoZSBvYmplY3QgaWYgaXQgaXMgb3ZlcmhhbmdpbmcsIGlzIG5vdCBpbiBp
dHMgb3duIGxheWVyLCBhbmQKICAgICAgICAgICAgIC8vIGlzIG91ciByZXNwb25zaWJpbGl0eSB0
byBwYWludCAobV9zaG91bGRQYWludCBpcyBzZXQpLiBXaGVuIHBhaW50QWxsRGVzY2VuZGFudHMg
aXMgdHJ1ZSwgdGhlIGxhdHRlcgogICAgICAgICAgICAgLy8gY29uZGl0aW9uIGlzIHJlcGxhY2Vk
IHdpdGggYmVpbmcgYSBkZXNjZW5kYW50IG9mIHVzLgotICAgICAgICAgICAgaWYgKHItPm1fYm90
dG9tID4gaGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVuZGVyZXIt
PmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5tX3Nob3VsZFBhaW50KSAmJiAhci0+bV9yZW5k
ZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgaWYgKHItPmJvdHRv
bSgpID4gaGVpZ2h0KCkgJiYgKChwYWludEFsbERlc2NlbmRhbnRzICYmIHItPm1fcmVuZGVyZXIt
PmlzRGVzY2VuZGFudE9mKHRoaXMpKSB8fCByLT5tX3Nob3VsZFBhaW50KSAmJiAhci0+bV9yZW5k
ZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIHItPm1fcmVu
ZGVyZXItPnJlcGFpbnQoKTsKICAgICAgICAgICAgICAgICByLT5tX3JlbmRlcmVyLT5yZXBhaW50
T3ZlcmhhbmdpbmdGbG9hdHMoKTsKICAgICAgICAgICAgIH0KQEAgLTIzODcsOCArMjM4Nyw4IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50RmxvYXRzKFBhaW50SW5mbyYKICAgICAgICAgaWYgKHIt
Pm1fc2hvdWxkUGFpbnQgJiYgIXItPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkp
IHsKICAgICAgICAgICAgIFBhaW50SW5mbyBjdXJyZW50UGFpbnRJbmZvKHBhaW50SW5mbyk7CiAg
ICAgICAgICAgICBjdXJyZW50UGFpbnRJbmZvLnBoYXNlID0gcHJlc2VydmVQaGFzZSA/IHBhaW50
SW5mby5waGFzZSA6IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQ7Ci0gICAgICAgICAgICBpbnQg
Y3VycmVudFRYID0gdHggKyByLT5tX2xlZnQgLSByLT5tX3JlbmRlcmVyLT54KCkgKyByLT5tX3Jl
bmRlcmVyLT5tYXJnaW5MZWZ0KCk7Ci0gICAgICAgICAgICBpbnQgY3VycmVudFRZID0gdHkgKyBy
LT5tX3RvcCAtIHItPm1fcmVuZGVyZXItPnkoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpblRvcCgp
OworICAgICAgICAgICAgaW50IGN1cnJlbnRUWCA9IHR4ICsgci0+bGVmdCgpIC0gci0+bV9yZW5k
ZXJlci0+eCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpOworICAgICAgICAgICAgaW50
IGN1cnJlbnRUWSA9IHR5ICsgci0+dG9wKCkgLSByLT5tX3JlbmRlcmVyLT55KCkgKyByLT5tX3Jl
bmRlcmVyLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgIHItPm1fcmVuZGVyZXItPnBhaW50KGN1
cnJlbnRQYWludEluZm8sIGN1cnJlbnRUWCwgY3VycmVudFRZKTsKICAgICAgICAgICAgIGlmICgh
cHJlc2VydmVQaGFzZSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRQYWludEluZm8ucGhhc2Ug
PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwpAQCAtMjU5Nyw4ICsyNTk3LDggQEAg
R2FwUmVjdHMgUmVuZGVyQmxvY2s6OmZpbGxTZWxlY3Rpb25HYXBzKAogICAgICAgICBpZiAobV9m
bG9hdGluZ09iamVjdHMpIHsKICAgICAgICAgICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJdGVy
YXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsgaXQuY3VycmVudCgp
OyArK2l0KSB7CiAgICAgICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSBpdC5jdXJyZW50
KCk7Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwT3V0KEludFJlY3Qo
dHggKyByLT5tX2xlZnQgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCksIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5ICsgci0+bV90b3Ag
KyByLT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSwKKyAgICAgICAgICAgICAgICBwYWludEluZm8t
PmNvbnRleHQtPmNsaXBPdXQoSW50UmVjdCh0eCArIHItPmxlZnQoKSArIHItPm1fcmVuZGVyZXIt
Pm1hcmdpbkxlZnQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHkgKyByLT50b3AoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpblRvcCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPm1f
cmVuZGVyZXItPndpZHRoKCksIHItPm1fcmVuZGVyZXItPmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTI5MjgsOCArMjkyOCw3IEBAIFJlbmRlckJsb2NrOjpGbG9hdGlu
Z09iamVjdCogUmVuZGVyQmxvY2sKIAogICAgIEZsb2F0aW5nT2JqZWN0KiBuZXdPYmogPSBuZXcg
RmxvYXRpbmdPYmplY3Qoby0+c3R5bGUoKS0+ZmxvYXRpbmcoKSA9PSBGTEVGVCA/IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdExlZnQgOiBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodCk7CiAKLSAgICBu
ZXdPYmotPm1fdG9wID0gLTE7Ci0gICAgbmV3T2JqLT5tX2JvdHRvbSA9IC0xOworICAgIG5ld09i
ai0+c2V0VG9wKC0xKTsKICAgICAKICAgICAvLyBPdXIgbG9jYXRpb24gaXMgaXJyZWxldmFudCBp
ZiB3ZSdyZSB1bnNwbGl0dGFibGUgb3Igbm8gcGFnaW5hdGlvbiBpcyBpbiBlZmZlY3QuCiAgICAg
Ly8gSnVzdCBnbyBhaGVhZCBhbmQgbGF5IG91dCB0aGUgZmxvYXQuCkBAIC0yOTQwLDcgKzI5Mzks
NyBAQCBSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrCiAgICAgICAgIG8t
PmNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgby0+Y29tcHV0ZUJsb2NrRGlyZWN0aW9u
TWFyZ2lucyh0aGlzKTsKICAgICB9Ci0gICAgbmV3T2JqLT5tX3dpZHRoID0gby0+d2lkdGgoKSAr
IG8tPm1hcmdpbkxlZnQoKSArIG8tPm1hcmdpblJpZ2h0KCk7CisgICAgbmV3T2JqLT5zZXRXaWR0
aChvLT53aWR0aCgpICsgby0+bWFyZ2luTGVmdCgpICsgby0+bWFyZ2luUmlnaHQoKSk7CiAKICAg
ICBuZXdPYmotPm1fc2hvdWxkUGFpbnQgPSAhby0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKTsgLy8g
SWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gIE90aGVyd2lz
ZSBzb21lb25lIGVsc2Ugd2lsbC4KICAgICBuZXdPYmotPm1faXNEZXNjZW5kYW50ID0gdHJ1ZTsK
QEAgLTI5NTgsMTEgKzI5NTcsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdP
YmplY3QoUgogICAgICAgICB3aGlsZSAoaXQuY3VycmVudCgpKSB7CiAgICAgICAgICAgICBpZiAo
aXQuY3VycmVudCgpLT5tX3JlbmRlcmVyID09IG8pIHsKICAgICAgICAgICAgICAgICBpZiAoY2hp
bGRyZW5JbmxpbmUoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgYm90dG9tID0gaXQuY3Vy
cmVudCgpLT5tX2JvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJvdHRvbSA9IGl0LmN1
cnJlbnQoKS0+Ym90dG9tKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSB6
ZXJvLSBhbmQgbGVzcy10aGFuLXplcm8taGVpZ2h0IGZsb2F0czogdGhvc2UgZG9uJ3QgdG91Y2gK
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGxpbmUgdGhhdCB0aGV5J3JlIG9uLCBidXQgaXQg
c3RpbGwgbmVlZHMgdG8gYmUgZGlydGllZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAv
LyBhY2NvbXBsaXNoZWQgYnkgcHJldGVuZGluZyB0aGV5IGhhdmUgYSBoZWlnaHQgb2YgMS4KLSAg
ICAgICAgICAgICAgICAgICAgYm90dG9tID0gbWF4KGJvdHRvbSwgaXQuY3VycmVudCgpLT5tX3Rv
cCArIDEpOworICAgICAgICAgICAgICAgICAgICBib3R0b20gPSBtYXgoYm90dG9tLCBpdC5jdXJy
ZW50KCktPnRvcCgpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5SW5W
ZXJ0aWNhbFJhbmdlKDAsIGJvdHRvbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1fZmxvYXRpbmdPYmplY3RzLT5yZW1vdmVSZWYoaXQuY3VycmVudCgpKTsKQEAgLTI5Nzgs
NyArMjk3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZsb2F0aW5nT2JqZWN0c0IKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIEZsb2F0aW5nT2JqZWN0KiBjdXJyID0gbV9mbG9hdGlu
Z09iamVjdHMtPmxhc3QoKTsKLSAgICB3aGlsZSAoY3VyciAhPSBsYXN0RmxvYXQgJiYgKGN1cnIt
Pm1fdG9wID09IC0xIHx8IGN1cnItPm1fdG9wID49IHkpKSB7CisgICAgd2hpbGUgKGN1cnIgIT0g
bGFzdEZsb2F0ICYmIChjdXJyLT50b3AoKSA9PSAtMSB8fCBjdXJyLT50b3AoKSA+PSB5KSkgewog
ICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cmVtb3ZlTGFzdCgpOwogICAgICAgICBjdXJyID0g
bV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICB9CkBAIC0yOTkyLDE0ICsyOTkxLDE0IEBA
IGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICBGbG9hdGluZ09iamVj
dCogZiA9IG1fZmxvYXRpbmdPYmplY3RzLT5sYXN0KCk7CiAKICAgICAvLyBJZiBhbGwgZmxvYXRz
IGhhdmUgYWxyZWFkeSBiZWVuIHBvc2l0aW9uZWQsIHRoZW4gd2UgaGF2ZSBubyB3b3JrIHRvIGRv
LgotICAgIGlmICghZiB8fCBmLT5tX3RvcCAhPSAtMSkKKyAgICBpZiAoIWYgfHwgZi0+dG9wKCkg
IT0gLTEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1vdmUgYmFja3dhcmRzIHRo
cm91Z2ggb3VyIGZsb2F0aW5nIG9iamVjdCBsaXN0IHVudGlsIHdlIGZpbmQgYSBmbG9hdCB0aGF0
IGhhcwogICAgIC8vIGFscmVhZHkgYmVlbiBwb3NpdGlvbmVkLiAgVGhlbiB3ZSdsbCBiZSBhYmxl
IHRvIG1vdmUgZm9yd2FyZCwgcG9zaXRpb25pbmcgYWxsIG9mCiAgICAgLy8gdGhlIG5ldyBmbG9h
dHMgdGhhdCBuZWVkIGl0LgogICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+Z2V0UHJldigpOwotICAgIHdoaWxlIChsYXN0RmxvYXQgJiYgbGFzdEZsb2F0
LT5tX3RvcCA9PSAtMSkgeworICAgIHdoaWxlIChsYXN0RmxvYXQgJiYgbGFzdEZsb2F0LT50b3Ao
KSA9PSAtMSkgewogICAgICAgICBmID0gbV9mbG9hdGluZ09iamVjdHMtPnByZXYoKTsKICAgICAg
ICAgbGFzdEZsb2F0ID0gbV9mbG9hdGluZ09iamVjdHMtPmdldFByZXYoKTsKICAgICB9CkBAIC0z
MDA4LDcgKzMwMDcsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0cygpCiAg
ICAgCiAgICAgLy8gVGhlIGZsb2F0IGNhbm5vdCBzdGFydCBhYm92ZSB0aGUgeSBwb3NpdGlvbiBv
ZiB0aGUgbGFzdCBwb3NpdGlvbmVkIGZsb2F0LgogICAgIGlmIChsYXN0RmxvYXQpCi0gICAgICAg
IHkgPSBtYXgobGFzdEZsb2F0LT5tX3RvcCwgeSk7CisgICAgICAgIHkgPSBtYXgobGFzdEZsb2F0
LT50b3AoKSwgeSk7CiAKICAgICAvLyBOb3cgd2FsayB0aHJvdWdoIHRoZSBzZXQgb2YgdW5wb3Np
dGlvbmVkIGZsb2F0cyBhbmQgcGxhY2UgdGhlbS4KICAgICB3aGlsZSAoZikgewpAQCAtMzAyMyw3
ICszMDIyLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMoKQogCiAgICAg
ICAgIGludCBybyA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQoKTsgLy8gQ29uc3RhbnQg
cGFydCBvZiByaWdodCBvZmZzZXQuCiAgICAgICAgIGludCBsbyA9IGxvZ2ljYWxMZWZ0T2Zmc2V0
Rm9yQ29udGVudCgpOyAvLyBDb25zdGFudCBwYXJ0IG9mIGxlZnQgb2Zmc2V0LgotICAgICAgICBp
bnQgZndpZHRoID0gZi0+bV93aWR0aDsgLy8gVGhlIHdpZHRoIHdlIGxvb2sgZm9yLgorICAgICAg
ICBpbnQgZndpZHRoID0gZi0+d2lkdGgoKTsgLy8gVGhlIHdpZHRoIHdlIGxvb2sgZm9yLgogICAg
ICAgICBpZiAocm8gLSBsbyA8IGZ3aWR0aCkKICAgICAgICAgICAgIGZ3aWR0aCA9IHJvIC0gbG87
IC8vIE5ldmVyIGxvb2sgZm9yIG1vcmUgdGhhbiB3aGF0IHdpbGwgYmUgYXZhaWxhYmxlLgogICAg
ICAgICAKQEAgLTMwNDMsNyArMzA0Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3
RmxvYXRzKCkKICAgICAgICAgICAgICAgICBmeCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZSh5
LCBsbywgZmFsc2UsICZoZWlnaHRSZW1haW5pbmdMZWZ0KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZ4ID0gbWF4KDAsIGZ4KTsKLSAgICAgICAgICAgIGYtPm1fbGVmdCA9IGZ4OworICAg
ICAgICAgICAgZi0+c2V0TGVmdChmeCk7CiAgICAgICAgICAgICBvLT5zZXRMb2NhdGlvbihmeCAr
IG8tPm1hcmdpbkxlZnQoKSwgeSArIG8tPm1hcmdpblRvcCgpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGludCBoZWlnaHRSZW1haW5pbmdMZWZ0ID0gMTsKQEAgLTMwNTMsNyArMzA1
Miw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAgICAgICAgICAg
ICAgICB5ICs9IG1pbihoZWlnaHRSZW1haW5pbmdMZWZ0LCBoZWlnaHRSZW1haW5pbmdSaWdodCk7
CiAgICAgICAgICAgICAgICAgZnggPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JMaW5lKHksIHJvLCBm
YWxzZSwgJmhlaWdodFJlbWFpbmluZ1JpZ2h0KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGYtPm1fbGVmdCA9IGZ4IC0gZi0+bV93aWR0aDsKKyAgICAgICAgICAgIGYtPnNldExlZnQoZngg
LSBmLT53aWR0aCgpKTsKICAgICAgICAgICAgIG8tPnNldExvY2F0aW9uKGZ4IC0gby0+bWFyZ2lu
UmlnaHQoKSAtIG8tPndpZHRoKCksIHkgKyBvLT5tYXJnaW5Ub3AoKSk7CiAgICAgICAgIH0KIApA
QCAtMzA4Niw5ICszMDg1LDkgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdHMo
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZi0+bV90b3AgPSB5OwotICAg
ICAgICBmLT5tX2JvdHRvbSA9IGYtPm1fdG9wICsgby0+bWFyZ2luVG9wKCkgKyBvLT5oZWlnaHQo
KSArIG8tPm1hcmdpbkJvdHRvbSgpOwotICAgICAgICAKKyAgICAgICAgZi0+c2V0VG9wKHkpOwor
ICAgICAgICBmLT5zZXRIZWlnaHQoby0+bWFyZ2luVG9wKCkgKyBvLT5oZWlnaHQoKSArIG8tPm1h
cmdpbkJvdHRvbSgpKTsKKwogICAgICAgICAvLyBJZiB0aGUgY2hpbGQgbW92ZWQsIHdlIGhhdmUg
dG8gcmVwYWludCBpdC4KICAgICAgICAgaWYgKG8tPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91
dCgpKQogICAgICAgICAgICAgby0+cmVwYWludER1cmluZ0xheW91dElmTW92ZWQob2xkUmVjdCk7
CkBAIC0zMTA0LDcgKzMxMDMsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lCiAgICAgaWYgKCFkaWRQb3NpdGlvbiB8fCAhbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0
cnV0KQogICAgICAgICByZXR1cm4gZGlkUG9zaXRpb247CiAgICAgCi0gICAgaW50IGZsb2F0VG9w
ID0gbmV3RmxvYXQtPm1fdG9wOworICAgIGludCBmbG9hdFRvcCA9IG5ld0Zsb2F0LT50b3AoKTsK
ICAgICBpbnQgcGFnaW5hdGlvblN0cnV0ID0gbmV3RmxvYXQtPm1fcGFnaW5hdGlvblN0cnV0Owog
ICAgIEZsb2F0aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmxhc3QoKTsKICAgICAK
QEAgLTMxMTQsNyArMzExMyw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRP
bkxpbmUKICAgICAgICAgcmV0dXJuIGRpZFBvc2l0aW9uOwogCiAgICAgZm9yIChmID0gbV9mbG9h
dGluZ09iamVjdHMtPnByZXYoKTsgZiAmJiBmICE9IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmU7
IGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+cHJldigpKSB7Ci0gICAgICAgIGlmIChmLT5tX3RvcCA9
PSBoZWlnaHQoKSkgeworICAgICAgICBpZiAoZi0+dG9wKCkgPT0gaGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghZi0+bV9wYWdpbmF0aW9uU3RydXQpOwogICAgICAgICAgICAgZi0+bV9w
YWdpbmF0aW9uU3RydXQgPSBwYWdpbmF0aW9uU3RydXQ7CiAgICAgICAgICAgICBSZW5kZXJCb3gq
IG8gPSBmLT5tX3JlbmRlcmVyOwpAQCAtMzEyMiw4ICszMTIxLDcgQEAgYm9vbCBSZW5kZXJCbG9j
azo6cG9zaXRpb25OZXdGbG9hdE9uTGluZQogICAgICAgICAgICAgaWYgKG8tPmlzUmVuZGVyQmxv
Y2soKSkKICAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2NrKG8pLT5zZXRDaGlsZE5lZWRzTGF5
b3V0KHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgIG8tPmxheW91dElmTmVlZGVkKCk7Ci0gICAg
ICAgICAgICBmLT5tX3RvcCArPSBmLT5tX3BhZ2luYXRpb25TdHJ1dDsKLSAgICAgICAgICAgIGYt
Pm1fYm90dG9tICs9IGYtPm1fcGFnaW5hdGlvblN0cnV0OworICAgICAgICAgICAgZi0+c2V0VG9w
KGYtPnRvcCgpICsgZi0+bV9wYWdpbmF0aW9uU3RydXQpOwogICAgICAgICB9CiAgICAgfQogICAg
ICAgICAKQEAgLTMyMjEsMTMgKzMyMTksMTMgQEAgaW50IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVm
dE9mZnNldEZvckxpbgogICAgICAgICBpZiAoIGhlaWdodFJlbWFpbmluZyApICpoZWlnaHRSZW1h
aW5pbmcgPSAxOwogICAgICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICAgICAgRGVwcmVjYXRl
ZFB0ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsK
LSAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoci0+bV90b3AgPD0geSAmJiByLT5tX2JvdHRvbSA+IHkgJiYKLSAgICAg
ICAgICAgICAgICByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCAmJgotICAg
ICAgICAgICAgICAgIHItPm1fbGVmdCArIHItPm1fd2lkdGggPiBsZWZ0KSB7Ci0gICAgICAgICAg
ICAgICAgbGVmdCA9IHItPm1fbGVmdCArIHItPm1fd2lkdGg7Ci0gICAgICAgICAgICAgICAgaWYg
KCBoZWlnaHRSZW1haW5pbmcgKSAqaGVpZ2h0UmVtYWluaW5nID0gci0+bV9ib3R0b20gLSB5Owor
ICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkgeworICAgICAgICAgICAg
aWYgKHItPnRvcCgpIDw9IHkgJiYgci0+Ym90dG9tKCkgPiB5CisgICAgICAgICAgICAgICAgJiYg
ci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQKKyAgICAgICAgICAgICAgICAm
JiByLT5yaWdodCgpID4gbGVmdCkgeworICAgICAgICAgICAgICAgIGxlZnQgPSByLT5yaWdodCgp
OworICAgICAgICAgICAgICAgIGlmIChoZWlnaHRSZW1haW5pbmcpCisgICAgICAgICAgICAgICAg
ICAgICpoZWlnaHRSZW1haW5pbmcgPSByLT5ib3R0b20oKSAtIHk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC0zMjUwLDEzICszMjQ4LDEzIEBAIGludCBSZW5kZXJCbG9jazo6
bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGkKICAgICAgICAgaWYgKGhlaWdodFJlbWFpbmluZykgKmhl
aWdodFJlbWFpbmluZyA9IDE7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByOwogICAgICAgICBE
ZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09i
amVjdHMpOwotICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChyLT5tX3RvcCA8PSB5ICYmIHItPm1fYm90dG9tID4geSAm
JgotICAgICAgICAgICAgICAgIHItPnR5cGUoKSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdo
dCAmJgotICAgICAgICAgICAgICAgIHItPm1fbGVmdCA8IHJpZ2h0KSB7Ci0gICAgICAgICAgICAg
ICAgcmlnaHQgPSByLT5tX2xlZnQ7Ci0gICAgICAgICAgICAgICAgaWYgKCBoZWlnaHRSZW1haW5p
bmcgKSAqaGVpZ2h0UmVtYWluaW5nID0gci0+bV9ib3R0b20gLSB5OworICAgICAgICBmb3IgKCA7
IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKHItPnRvcCgpIDw9
IHkgJiYgci0+Ym90dG9tKCkgPiB5CisgICAgICAgICAgICAgICAgJiYgci0+dHlwZSgpID09IEZs
b2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0CisgICAgICAgICAgICAgICAgJiYgci0+bGVmdCgpIDwg
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICByaWdodCA9IHItPmxlZnQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaGVpZ2h0UmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICAqaGVpZ2h0UmVt
YWluaW5nID0gci0+Ym90dG9tKCkgLSB5OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMzI4Nyw4ICszMjg1LDggQEAgaW50IFJlbmRlckJsb2NrOjpuZXh0RmxvYXRCb3R0b21C
ZWxvdyhpbgogICAgIEZsb2F0aW5nT2JqZWN0KiByOwogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRl
cmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7CiAgICAgZm9yICgg
OyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQpIHsKLSAgICAgICAgaWYgKHItPm1fYm90dG9tID4g
aGVpZ2h0KQotICAgICAgICAgICAgYm90dG9tID0gbWluKHItPm1fYm90dG9tLCBib3R0b20pOwor
ICAgICAgICBpZiAoci0+Ym90dG9tKCkgPiBoZWlnaHQpCisgICAgICAgICAgICBib3R0b20gPSBt
aW4oci0+Ym90dG9tKCksIGJvdHRvbSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGJvdHRvbSA9PSBJ
TlRfTUFYID8gMCA6IGJvdHRvbTsKQEAgLTMzMDIsOCArMzMwMCw4IEBAIFJlbmRlckJsb2NrOjpm
bG9hdEJvdHRvbSgpIGNvbnN0CiAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAgRGVwcmVjYXRl
ZFB0ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsK
ICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApCi0gICAgICAgIGlmIChyLT5t
X2JvdHRvbT5ib3R0b20pCi0gICAgICAgICAgICBib3R0b20gPSByLT5tX2JvdHRvbTsKKyAgICAg
ICAgaWYgKHItPmJvdHRvbSgpID4gYm90dG9tKQorICAgICAgICAgICAgYm90dG9tID0gci0+Ym90
dG9tKCk7CiAgICAgcmV0dXJuIGJvdHRvbTsKIH0KIApAQCAtMzM3Myw3ICszMzcxLDcgQEAgaW50
IFJlbmRlckJsb2NrOjpsb3dlc3RQb3NpdGlvbihib29sIGluYwogICAgICAgICBEZXByZWNhdGVk
UHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwog
ICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApIHsKICAgICAgICAgICAg
IGlmIChyLT5tX3Nob3VsZFBhaW50IHx8IHItPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xh
eWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpbnQgbHAgPSByLT5tX3RvcCArIHItPm1fcmVuZGVy
ZXItPm1hcmdpblRvcCgpICsgci0+bV9yZW5kZXJlci0+bG93ZXN0UG9zaXRpb24oZmFsc2UpOwor
ICAgICAgICAgICAgICAgIGludCBscCA9IHItPnRvcCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2lu
VG9wKCkgKyByLT5tX3JlbmRlcmVyLT5sb3dlc3RQb3NpdGlvbihmYWxzZSk7CiAgICAgICAgICAg
ICAgICAgYm90dG9tID0gbWF4KGJvdHRvbSwgbHAgKyByZWxhdGl2ZU9mZnNldCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTM0NzAsNyArMzQ2OCw3IEBAIGludCBSZW5kZXJCbG9jazo6
cmlnaHRtb3N0UG9zaXRpb24oYm9vbCAKICAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRv
cjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICAgICAgZm9yICgg
OyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CiAgICAgICAgICAgICBpZiAoci0+bV9zaG91
bGRQYWludCB8fCByLT5tX3JlbmRlcmVyLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7Ci0gICAg
ICAgICAgICAgICAgaW50IHJwID0gci0+bV9sZWZ0ICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVm
dCgpICsgci0+bV9yZW5kZXJlci0+cmlnaHRtb3N0UG9zaXRpb24oZmFsc2UpOworICAgICAgICAg
ICAgICAgIGludCBycCA9IHItPmxlZnQoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQoKSAr
IHItPm1fcmVuZGVyZXItPnJpZ2h0bW9zdFBvc2l0aW9uKGZhbHNlKTsKICAgICAgICAgICAgICAg
ICByaWdodCA9IG1heChyaWdodCwgcnAgKyByZWxhdGl2ZU9mZnNldCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTM1NzEsNyArMzU2OSw3IEBAIGludCBSZW5kZXJCbG9jazo6bGVmdG1v
c3RQb3NpdGlvbihib29sIGkKICAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxGbG9h
dGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICAgICAgZm9yICggOyAociA9
IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CiAgICAgICAgICAgICBpZiAoci0+bV9zaG91bGRQYWlu
dCB8fCByLT5tX3JlbmRlcmVyLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7Ci0gICAgICAgICAg
ICAgICAgaW50IGxwID0gci0+bV9sZWZ0ICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpICsg
ci0+bV9yZW5kZXJlci0+bGVmdG1vc3RQb3NpdGlvbihmYWxzZSk7CisgICAgICAgICAgICAgICAg
aW50IGxwID0gci0+bGVmdCgpICsgci0+bV9yZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgci0+bV9y
ZW5kZXJlci0+bGVmdG1vc3RQb3NpdGlvbihmYWxzZSk7CiAgICAgICAgICAgICAgICAgbGVmdCA9
IG1pbihsZWZ0LCBscCArIHJlbGF0aXZlT2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMzU4NSwzMCArMzU4MywyOCBAQCBpbnQgUmVuZGVyQmxvY2s6OmxlZnRtb3N0UG9zaXRp
b24oYm9vbCBpCiAgICAgcmV0dXJuIGxlZnQ7CiB9CiAKLWludAotUmVuZGVyQmxvY2s6OmxlZnRC
b3R0b20oKQoraW50IFJlbmRlckJsb2NrOjpsZWZ0Qm90dG9tKCkKIHsKICAgICBpZiAoIW1fZmxv
YXRpbmdPYmplY3RzKSByZXR1cm4gMDsKICAgICBpbnQgYm90dG9tID0gMDsKICAgICBGbG9hdGlu
Z09iamVjdCogcjsKICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0
PiBpdCgqbV9mbG9hdGluZ09iamVjdHMpOwotICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkp
OyArK2l0ICkKLSAgICAgICAgaWYgKHItPm1fYm90dG9tID4gYm90dG9tICYmIHItPnR5cGUoKSA9
PSBGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0KQotICAgICAgICAgICAgYm90dG9tID0gci0+bV9i
b3R0b207CisgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQpCisgICAgICAgIGlm
IChyLT5ib3R0b20oKSA+IGJvdHRvbSAmJiByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZs
b2F0TGVmdCkKKyAgICAgICAgICAgIGJvdHRvbSA9IHItPmJvdHRvbSgpOwogCiAgICAgcmV0dXJu
IGJvdHRvbTsKIH0KIAotaW50Ci1SZW5kZXJCbG9jazo6cmlnaHRCb3R0b20oKQoraW50IFJlbmRl
ckJsb2NrOjpyaWdodEJvdHRvbSgpCiB7CiAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykgcmV0
dXJuIDA7CiAgICAgaW50IGJvdHRvbSA9IDA7CiAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAg
RGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdP
YmplY3RzKTsKLSAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApCi0gICAgICAg
IGlmIChyLT5tX2JvdHRvbT5ib3R0b20gJiYgci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpG
bG9hdFJpZ2h0KQotICAgICAgICAgICAgYm90dG9tID0gci0+bV9ib3R0b207CisgICAgZm9yICgg
OyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQpCisgICAgICAgIGlmIChyLT5ib3R0b20oKSA+IGJv
dHRvbSAmJiByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQpCisgICAgICAg
ICAgICBib3R0b20gPSByLT5ib3R0b20oKTsKIAogICAgIHJldHVybiBib3R0b207CiB9CkBAIC0z
Njk5LDE5ICszNjk1LDE5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKICAgICAg
ICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3QqIGYgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+Zmlyc3Qo
KTsgZjsgZiA9IG1fZmxvYXRpbmdPYmplY3RzLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICBG
bG9hdGluZ09iamVjdCogb2xkRmxvYXRpbmdPYmplY3QgPSBmbG9hdE1hcC5nZXQoZi0+bV9yZW5k
ZXJlcik7CiAgICAgICAgICAgICAgICAgaWYgKG9sZEZsb2F0aW5nT2JqZWN0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChmLT5tX3dpZHRoICE9IG9sZEZsb2F0aW5nT2JqZWN0LT5tX3dpZHRo
IHx8IGYtPm1fbGVmdCAhPSBvbGRGbG9hdGluZ09iamVjdC0+bV9sZWZ0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChmLT53aWR0aCgpICE9IG9sZEZsb2F0aW5nT2JqZWN0LT53aWR0aCgpIHx8
IGYtPmxlZnQoKSAhPSBvbGRGbG9hdGluZ09iamVjdC0+bGVmdCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VUb3AgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
Qm90dG9tID0gbWF4KGNoYW5nZUJvdHRvbSwgbWF4KGYtPm1fYm90dG9tLCBvbGRGbG9hdGluZ09i
amVjdC0+bV9ib3R0b20pKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmLT5tX2Jv
dHRvbSAhPSBvbGRGbG9hdGluZ09iamVjdC0+bV9ib3R0b20pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZVRvcCA9IG1pbihjaGFuZ2VUb3AsIG1pbihmLT5tX2JvdHRvbSwgb2xkRmxv
YXRpbmdPYmplY3QtPm1fYm90dG9tKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VC
b3R0b20gPSBtYXgoY2hhbmdlQm90dG9tLCBtYXgoZi0+bV9ib3R0b20sIG9sZEZsb2F0aW5nT2Jq
ZWN0LT5tX2JvdHRvbSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQm90dG9tID0g
bWF4KGNoYW5nZUJvdHRvbSwgbWF4KGYtPmJvdHRvbSgpLCBvbGRGbG9hdGluZ09iamVjdC0+Ym90
dG9tKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmLT5ib3R0b20oKSAhPSBv
bGRGbG9hdGluZ09iamVjdC0+Ym90dG9tKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZVRvcCA9IG1pbihjaGFuZ2VUb3AsIG1pbihmLT5ib3R0b20oKSwgb2xkRmxvYXRpbmdPYmpl
Y3QtPmJvdHRvbSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBt
YXgoY2hhbmdlQm90dG9tLCBtYXgoZi0+Ym90dG9tKCksIG9sZEZsb2F0aW5nT2JqZWN0LT5ib3R0
b20oKSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgZmxv
YXRNYXAucmVtb3ZlKGYtPm1fcmVuZGVyZXIpOwogICAgICAgICAgICAgICAgICAgICBkZWxldGUg
b2xkRmxvYXRpbmdPYmplY3Q7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlVG9wID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlQm90dG9t
ID0gbWF4KGNoYW5nZUJvdHRvbSwgZi0+bV9ib3R0b20pOworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VCb3R0b20gPSBtYXgoY2hhbmdlQm90dG9tLCBmLT5ib3R0b20oKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNzIxLDcgKzM3MTcsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpjbGVhckZsb2F0cygpCiAgICAgICAgICAgICBGbG9hdGluZ09iamVj
dCogZmxvYXRpbmdPYmplY3QgPSAoKml0KS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoIWZsb2F0
aW5nT2JqZWN0LT5tX2lzRGVzY2VuZGFudCkgewogICAgICAgICAgICAgICAgIGNoYW5nZVRvcCA9
IDA7Ci0gICAgICAgICAgICAgICAgY2hhbmdlQm90dG9tID0gbWF4KGNoYW5nZUJvdHRvbSwgZmxv
YXRpbmdPYmplY3QtPm1fYm90dG9tKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VCb3R0b20gPSBt
YXgoY2hhbmdlQm90dG9tLCBmbG9hdGluZ09iamVjdC0+Ym90dG9tKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhmbG9hdE1hcCk7CkBAIC0zNzQy
LDE3ICszNzM4LDEzIEBAIGludCBSZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmUK
ICAgICAvLyBvdmVyZmxvdy4KICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5n
T2JqZWN0PiBpdCgqY2hpbGQtPm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICBmb3IgKEZsb2F0aW5n
T2JqZWN0KiByOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQpIHsKLSAgICAgICAgaW50IGJvdHRv
bSA9IGNoaWxkLT55KCkgKyByLT5tX2JvdHRvbTsKKyAgICAgICAgaW50IGJvdHRvbSA9IGNoaWxk
LT55KCkgKyByLT5ib3R0b20oKTsKICAgICAgICAgbG93ZXN0RmxvYXRCb3R0b20gPSBtYXgobG93
ZXN0RmxvYXRCb3R0b20sIGJvdHRvbSk7CiAKICAgICAgICAgaWYgKGJvdHRvbSA+IGhlaWdodCgp
KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIG5vdCBpbiB0aGUgbGlzdCwgd2Ug
YWRkIGl0IG5vdy4KICAgICAgICAgICAgIGlmICghY29udGFpbnNGbG9hdChyLT5tX3JlbmRlcmVy
KSkgewotICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0ICpmbG9hdGluZ09iaiA9IG5ldyBG
bG9hdGluZ09iamVjdChyLT50eXBlKCkpOwotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5t
X3RvcCA9IHItPm1fdG9wIC0geW9mZjsKLSAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV9i
b3R0b20gPSByLT5tX2JvdHRvbSAtIHlvZmY7Ci0gICAgICAgICAgICAgICAgZmxvYXRpbmdPYmot
Pm1fbGVmdCA9IHItPm1fbGVmdCAtIHhvZmY7Ci0gICAgICAgICAgICAgICAgZmxvYXRpbmdPYmot
Pm1fd2lkdGggPSByLT5tX3dpZHRoOworICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBm
bG9hdGluZ09iaiA9IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCksIEludFJlY3Qoci0+bGVm
dCgpIC0geG9mZiwgci0+dG9wKCkgLSB5b2ZmLCByLT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOwog
ICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX3JlbmRlcmVyID0gci0+bV9yZW5kZXJlcjsK
IAogICAgICAgICAgICAgICAgIC8vIFRoZSBuZWFyZXN0IGVuY2xvc2luZyBsYXllciBhbHdheXMg
cGFpbnRzIHRoZSBmbG9hdCAoc28gdGhhdCB6aW5kZXggYW5kIHN0YWNraW5nCkBAIC0zNzgxLDcg
KzM3NzMsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmFkZE92ZXJoYW5naW5nRmxvYXRzKFJlCiAgICAg
ICAgICAgICByLT5tX3Nob3VsZFBhaW50ID0gdHJ1ZTsKIAogICAgICAgICBpZiAoci0+bV9zaG91
bGRQYWludCAmJiAhci0+bV9yZW5kZXJlci0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKLSAgICAg
ICAgICAgIGNoaWxkLT5hZGRPdmVyZmxvd0Zyb21DaGlsZChyLT5tX3JlbmRlcmVyLCBJbnRTaXpl
KHItPm1fbGVmdCArIHItPm1fcmVuZGVyZXItPm1hcmdpbkxlZnQoKSwgci0+bV90b3AgKyByLT5t
X3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSkpOworICAgICAgICAgICAgY2hpbGQtPmFkZE92ZXJmbG93
RnJvbUNoaWxkKHItPm1fcmVuZGVyZXIsIEludFNpemUoci0+bGVmdCgpICsgci0+bV9yZW5kZXJl
ci0+bWFyZ2luTGVmdCgpLCByLT50b3AoKSArIHItPm1fcmVuZGVyZXItPm1hcmdpblRvcCgpKSk7
CiAgICAgfQogICAgIHJldHVybiBsb3dlc3RGbG9hdEJvdHRvbTsKIH0KQEAgLTM3OTQsNyArMzc4
Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyhSZW4KIAogICAgIERl
cHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCpwcmV2LT5tX2Zsb2F0
aW5nT2JqZWN0cyk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdCAqcjsgKHIgPSBpdC5jdXJyZW50
KCkpOyArK2l0KSB7Ci0gICAgICAgIGlmIChyLT5tX2JvdHRvbSA+IHlvZmYpIHsKKyAgICAgICAg
aWYgKHItPmJvdHRvbSgpID4geW9mZikgewogICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBtYXkg
YWxyZWFkeSBiZSBpbiBvdXIgbGlzdC4gQ2hlY2sgZm9yIGl0IHVwIGZyb250IHRvIGF2b2lkCiAg
ICAgICAgICAgICAvLyBjcmVhdGluZyBkdXBsaWNhdGUgZW50cmllcy4KICAgICAgICAgICAgIEZs
b2F0aW5nT2JqZWN0KiBmID0gMDsKQEAgLTM4MDYsMjAgKzM3OTgsMTcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6YWRkSW50cnVkaW5nRmxvYXRzKFJlbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICghZikgewotICAgICAgICAgICAgICAgIEZsb2F0aW5nT2Jq
ZWN0ICpmbG9hdGluZ09iaiA9IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCkpOwotICAgICAg
ICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX3RvcCA9IHItPm1fdG9wIC0geW9mZjsKLSAgICAgICAg
ICAgICAgICBmbG9hdGluZ09iai0+bV9ib3R0b20gPSByLT5tX2JvdHRvbSAtIHlvZmY7Ci0gICAg
ICAgICAgICAgICAgZmxvYXRpbmdPYmotPm1fbGVmdCA9IHItPm1fbGVmdCAtIHhvZmY7CisgICAg
ICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqID0gbmV3IEZsb2F0aW5nT2Jq
ZWN0KHItPnR5cGUoKSwgSW50UmVjdChyLT5sZWZ0KCkgLSB4b2ZmIC0gbWFyZ2luTGVmdCgpLCBy
LT50b3AoKSAtIHlvZmYsIHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CisKICAgICAgICAgICAg
ICAgICAvLyBBcHBseWluZyB0aGUgY2hpbGQncyBtYXJnaW4gbWFrZXMgbm8gc2Vuc2UgaW4gdGhl
IGNhc2Ugd2hlcmUgdGhlIGNoaWxkIHdhcyBwYXNzZWQgaW4uCiAgICAgICAgICAgICAgICAgLy8g
c2luY2UgaGlzIG93biBtYXJnaW4gd2FzIGFkZGVkIGFscmVhZHkgdGhyb3VnaCB0aGUgc3VidHJh
Y3Rpb24gb2YgdGhlIHx4b2ZmfCB2YXJpYWJsZQogICAgICAgICAgICAgICAgIC8vIGFib3ZlLiAg
fHhvZmZ8IHdpbGwgZXF1YWwgLWZsb3ctPm1hcmdpbkxlZnQoKSBpbiB0aGlzIGNhc2UsIHNvIGl0
J3MgYWxyZWFkeSBiZWVuIHRha2VuCiAgICAgICAgICAgICAgICAgLy8gaW50byBhY2NvdW50LiAg
T25seSBhcHBseSB0aGlzIGNvZGUgaWYgfGNoaWxkfCBpcyBmYWxzZSwgc2luY2Ugb3RoZXJ3aXNl
IHRoZSBsZWZ0IG1hcmdpbgogICAgICAgICAgICAgICAgIC8vIHdpbGwgZ2V0IGFwcGxpZWQgdHdp
Y2UuCiAgICAgICAgICAgICAgICAgaWYgKHByZXYgIT0gcGFyZW50KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGZsb2F0aW5nT2JqLT5tX2xlZnQgKz0gcHJldi0+bWFyZ2luTGVmdCgpOwotICAgICAg
ICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX2xlZnQgLT0gbWFyZ2luTGVmdCgpOworICAgICAgICAg
ICAgICAgICAgICBmbG9hdGluZ09iai0+c2V0TGVmdChmbG9hdGluZ09iai0+bGVmdCgpICsgcHJl
di0+bWFyZ2luTGVmdCgpKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmbG9h
dGluZ09iai0+bV9zaG91bGRQYWludCA9IGZhbHNlOyAgLy8gV2UgYXJlIG5vdCBpbiB0aGUgZGly
ZWN0IGluaGVyaXRhbmNlIGNoYWluIGZvciB0aGlzIGZsb2F0LiBXZSB3aWxsIG5ldmVyIHBhaW50
IGl0LgotICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqLT5tX3dpZHRoID0gci0+bV93aWR0aDsK
ICAgICAgICAgICAgICAgICBmbG9hdGluZ09iai0+bV9yZW5kZXJlciA9IHItPm1fcmVuZGVyZXI7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gV2UgY3JlYXRlIHRoZSBmbG9h
dGluZyBvYmplY3QgbGlzdCBsYXppbHkuCkBAIC00MDUwLDggKzQwMzksOCBAQCBib29sIFJlbmRl
ckJsb2NrOjpoaXRUZXN0RmxvYXRzKGNvbnN0IEhpCiAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVy
YXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICBmb3IgKGl0
LnRvTGFzdCgpOyAoZmxvYXRpbmdPYmplY3QgPSBpdC5jdXJyZW50KCkpOyAtLWl0KSB7CiAgICAg
ICAgIGlmIChmbG9hdGluZ09iamVjdC0+bV9zaG91bGRQYWludCAmJiAhZmxvYXRpbmdPYmplY3Qt
Pm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgICAgIGludCB4
T2Zmc2V0ID0gdHggKyBmbG9hdGluZ09iamVjdC0+bV9sZWZ0ICsgZmxvYXRpbmdPYmplY3QtPm1f
cmVuZGVyZXItPm1hcmdpbkxlZnQoKSAtIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT54KCk7
Ci0gICAgICAgICAgICBpbnQgeU9mZnNldCA9ICB0eSArIGZsb2F0aW5nT2JqZWN0LT5tX3RvcCAr
IGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT5tYXJnaW5Ub3AoKSAtIGZsb2F0aW5nT2JqZWN0
LT5tX3JlbmRlcmVyLT55KCk7CisgICAgICAgICAgICBpbnQgeE9mZnNldCA9IHR4ICsgZmxvYXRp
bmdPYmplY3QtPmxlZnQoKSArIGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0
KCkgLSBmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJlci0+eCgpOworICAgICAgICAgICAgaW50IHlP
ZmZzZXQgPSAgdHkgKyBmbG9hdGluZ09iamVjdC0+dG9wKCkgKyBmbG9hdGluZ09iamVjdC0+bV9y
ZW5kZXJlci0+bWFyZ2luVG9wKCkgLSBmbG9hdGluZ09iamVjdC0+bV9yZW5kZXJlci0+eSgpOwog
ICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5tX3JlbmRlcmVyLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCwgSW50UG9pbnQoeCwgeSksIHhPZmZzZXQsIHlPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIEludFBvaW50KHggLSB4T2Zmc2V0
LCB5IC0geU9mZnNldCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTUzNyw3
ICs1NTI2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRqdXN0Rm9yQm9yZGVyRml0KGludAogICAg
ICAgICAgICAgZm9yICg7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkgewogICAgICAgICAgICAg
ICAgIC8vIE9ubHkgZXhhbWluZSB0aGUgb2JqZWN0IGlmIG91ciBtX3Nob3VsZFBhaW50IGZsYWcg
aXMgc2V0LgogICAgICAgICAgICAgICAgIGlmIChyLT5tX3Nob3VsZFBhaW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGludCBmbG9hdExlZnQgPSByLT5tX2xlZnQgLSByLT5tX3JlbmRlcmVyLT54
KCkgKyByLT5tX3JlbmRlcmVyLT5tYXJnaW5MZWZ0KCk7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBmbG9hdExlZnQgPSByLT5sZWZ0KCkgLSByLT5tX3JlbmRlcmVyLT54KCkgKyByLT5tX3JlbmRl
cmVyLT5tYXJnaW5MZWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBmbG9hdFJpZ2h0ID0g
ZmxvYXRMZWZ0ICsgci0+bV9yZW5kZXJlci0+d2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAg
bGVmdCA9IG1pbihsZWZ0LCBmbG9hdExlZnQpOwogICAgICAgICAgICAgICAgICAgICByaWdodCA9
IG1heChyaWdodCwgZmxvYXRSaWdodCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJl
dmlzaW9uIDY4ODQyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY0LDEyICszNjQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgRmxvYXRS
aWdodAogICAgICAgICB9OwogCi0gICAgICAgIEZsb2F0aW5nT2JqZWN0KFR5cGUgdHlwZSkKKyAg
ICAgICAgRmxvYXRpbmdPYmplY3QoVHlwZSB0eXBlLCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3Qg
PSBJbnRSZWN0KCkpCiAgICAgICAgICAgICA6IG1fcmVuZGVyZXIoMCkKLSAgICAgICAgICAgICwg
bV90b3AoMCkKLSAgICAgICAgICAgICwgbV9ib3R0b20oMCkKLSAgICAgICAgICAgICwgbV9sZWZ0
KDApCi0gICAgICAgICAgICAsIG1fd2lkdGgoMCkKKyAgICAgICAgICAgICwgbV9mcmFtZVJlY3Qo
ZnJhbWVSZWN0KQogICAgICAgICAgICAgLCBtX3BhZ2luYXRpb25TdHJ1dCgwKQogICAgICAgICAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgICAgICwgbV9zaG91bGRQYWludCh0cnVlKQpAQCAt
Mzc5LDExICszNzYsMjMgQEAgcHJpdmF0ZToKIAogICAgICAgICBUeXBlIHR5cGUoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKKyAgICAgICAgaW50IGxlZnQoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lUmVjdC54KCk7IH0KKyAgICAgICAgaW50IHJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZVJlY3QucmlnaHQoKTsgfQorICAgICAgICBpbnQgdG9wKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZVJlY3QueSgpOyB9CisgICAgICAgIGludCBib3R0b20oKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lUmVjdC5ib3R0b20oKTsgfQorICAgICAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lUmVjdC53aWR0aCgpOyB9CisgICAgICAgIGludCBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5oZWlnaHQoKTsgfQorICAgIAorICAgICAgICB2b2lk
IHNldExlZnQoaW50IGxlZnQpIHsgbV9mcmFtZVJlY3Quc2V0WChsZWZ0KTsgfQorICAgICAgICB2
b2lkIHNldFRvcChpbnQgdG9wKSB7IG1fZnJhbWVSZWN0LnNldFkodG9wKTsgfQorICAgICAgICB2
b2lkIHNldFdpZHRoKGludCB3aWR0aCkgeyBtX2ZyYW1lUmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0K
KyAgICAgICAgdm9pZCBzZXRIZWlnaHQoaW50IGhlaWdodCkgeyBtX2ZyYW1lUmVjdC5zZXRIZWln
aHQoaGVpZ2h0KTsgfQorCisgICAgICAgIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVSZWN0OyB9CisgICAgICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmIGZyYW1lUmVjdCkgeyBtX2ZyYW1lUmVjdCA9IGZyYW1lUmVjdDsgfQorCiAgICAg
ICAgIFJlbmRlckJveCogbV9yZW5kZXJlcjsKLSAgICAgICAgaW50IG1fdG9wOwotICAgICAgICBp
bnQgbV9ib3R0b207Ci0gICAgICAgIGludCBtX2xlZnQ7Ci0gICAgICAgIGludCBtX3dpZHRoOwor
ICAgICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OwogICAgICAgICBpbnQgbV9wYWdpbmF0aW9uU3Ry
dXQ7CiAgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDE7IC8vIFR5cGUgKGxlZnQgb3IgcmlnaHQg
YWxpZ25lZCkKICAgICAgICAgYm9vbCBtX3Nob3VsZFBhaW50IDogMTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gNjg4MTcpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MTAsNyArODEwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hp
bGRyZW4oYgogICAgICAgICAgICAgICAgICAgICBsYXN0Um9vdEJveCgpLT5mbG9hdHMoKS5hcHBl
bmQoZi0+bV9yZW5kZXJlcik7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmLT5tX3JlbmRl
cmVyID09IGZsb2F0c1tmbG9hdEluZGV4XS5vYmplY3QpOwogICAgICAgICAgICAgICAgICAgICAv
LyBJZiBhIGZsb2F0J3MgZ2VvbWV0cnkgaGFzIGNoYW5nZWQsIGdpdmUgdXAgb24gc3luY2luZyB3
aXRoIGNsZWFuIGxpbmVzLgotICAgICAgICAgICAgICAgICAgICBpZiAoZmxvYXRzW2Zsb2F0SW5k
ZXhdLnJlY3QgIT0gSW50UmVjdChmLT5tX2xlZnQsIGYtPm1fdG9wLCBmLT5tX3dpZHRoLCBmLT5t
X2JvdHRvbSAtIGYtPm1fdG9wKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsb2F0c1tmbG9h
dEluZGV4XS5yZWN0ICE9IGYtPmZyYW1lUmVjdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tGb3JFbmRMaW5lTWF0Y2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZmxvYXRJ
bmRleCsrOwogICAgICAgICAgICAgICAgIH0KQEAgLTExMDgsNyArMTEwOCw3IEBAIGJvb2wgUmVu
ZGVyQmxvY2s6Om1hdGNoZWRFbmRMaW5lKGNvbnN0IEkKICAgICAgICAgaW50IGJvdHRvbSA9IGxh
c3RMaW5lLT5ibG9ja0hlaWdodCgpICsgYWJzKGRlbHRhKTsKIAogICAgICAgICBmb3IgKEZsb2F0
aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmZpcnN0KCk7IGY7IGYgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+bmV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoZi0+bV9ib3R0b20gPj0gdG9w
ICYmIGYtPm1fYm90dG9tIDwgYm90dG9tKQorICAgICAgICAgICAgaWYgKGYtPmJvdHRvbSgpID49
IHRvcCAmJiBmLT5ib3R0b20oKSA8IGJvdHRvbSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6
bWF0Y2hlZEVuZExpbmUoY29uc3QgSQogICAgICAgICAgICAgICAgIGludCBib3R0b20gPSBsYXN0
TGluZS0+YmxvY2tIZWlnaHQoKSArIGFicyhkZWx0YSk7CiAKICAgICAgICAgICAgICAgICBmb3Ig
KEZsb2F0aW5nT2JqZWN0KiBmID0gbV9mbG9hdGluZ09iamVjdHMtPmZpcnN0KCk7IGY7IGYgPSBt
X2Zsb2F0aW5nT2JqZWN0cy0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmLT5t
X2JvdHRvbSA+PSB0b3AgJiYgZi0+bV9ib3R0b20gPCBib3R0b20pCisgICAgICAgICAgICAgICAg
ICAgIGlmIChmLT5ib3R0b20oKSA+PSB0b3AgJiYgZi0+Ym90dG9tKCkgPCBib3R0b20pCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQo=
</data>
<flag name="review"
          id="59219"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>