Skip to content

sync: upstream to v2026.3.22 (2522 commits)#2400

Merged
alexey-pelykh merged 1 commit intomainfrom
sync/b10-v2026.3.22
Apr 18, 2026
Merged

sync: upstream to v2026.3.22 (2522 commits)#2400
alexey-pelykh merged 1 commit intomainfrom
sync/b10-v2026.3.22

Conversation

@alexey-pelykh
Copy link
Copy Markdown

Cherry-pick from upstream (DIFF-SYNC B10)

Upstream range: 23d5d24b32 → 4c016f51fc (v2026.3.13-1 → v2026.3.22)
Commits: 2522
Boundary: v2026.3.22

Disposition Summary

Bucket Count
INCLUDE 3009
EXCLUDE (GUT/STUB) 2598
EXTRACT (registry) 211
PROTECTED-M → EXTRACT 48
PROTECTED-D (dropped) 51
UNKNOWN 0

Filed changes in this PR: 1127 files, +137794 / -41921

Known Gap: Deferred EXTRACTs (1076 files)

D.3 silently reverted 1155 INCLUDE files to fork HEAD during build stabilization (cascade from upstream's src/plugin-sdk/runtime.ts API refactor). D.3b remediation recovered 79. The remaining 1076 are documented in HQ for future hunk-by-hunk porting (follows B9 precedent of deferred D.4).

Categories:

  • 202 upstream-deletions (fork legitimately keeps files)
  • ~600 depend on gutted infrastructure (EXCLUDE-worthy)
  • ~230 type-cascade from API shape divergence
  • 40 path-rename false positives (already applied via fork paths)

Validation

Gate Result
`pnpm check` (format + tsgo + lint + no-random-messaging + no-remoteclaw-ai) PASS
`pnpm test` (unit tests) 6996 passed / 0 failed / 3 skipped
D.4.5 fork-marker regression gate PASS
Sanctioned stub count 54 → 53 (−1, no regression)
`@ts-expect-error` count 9 → 9 (stable)

Changes to Fork Config

  • `package.json`: upstreamVersion `2026.3.12` → `2026.3.22`, upstreamRepo fixed `remoteclaw/remoteclaw` → `openclaw/openclaw`, +4 plugin-sdk exports (channel-config-helpers, group-access, reply-payload, runtime-store)
  • `README.md`: upstream badge `v2026.3.12` → `v2026.3.22`
  • `vitest.config.ts`: +4 plugin-sdk subpaths
  • Test cleanup: 7 test files deleted/reverted (paired-test divergence)

Commit Message

Single commit with all 2522 `Cherry-picked-from:` trailers for `git log --grep` traceability.

🤖 Generated with Claude Code

Phase D.3 only — INCLUDE applied + rebrand + build stabilization.
EXTRACT porting (259 files: 211 EXTRACT + 48 PROTECTED-M) follows in D.4.

Disposition: 3009 INCLUDE / 2598 EXCLUDE / 211 EXTRACT / 99 PROTECTED (48 M→EXTRACT, 51 D dropped) / 0 UNKNOWN

Upstream-range: 23d5d24b323b98d680f2e8004c902c542e3f9642..4c016f51fc83865edfeda93e4f1e59118f6df0a8
Upstream-boundary: v2026.3.22

Cherry-picked-from: @e7d9648fba27254ac2d641be557466c369b747ad
Cherry-picked-from: @6e251dcf6881604f828de5c5357abab6d585c540
Cherry-picked-from: @be8fc3399e3657950d7a5fc270a8df77b101e1c4
Cherry-picked-from: @49a2ff7d01d8f8b8854420bf2cfb9dbe9581b8c0
Cherry-picked-from: @2f5d3b657431866c6dacdc34e1b71722dee442a5
Cherry-picked-from: @dac220bd88c2898c6f2f5bd43fee9486399a2961
Cherry-picked-from: @c1c74f9952167ca73b08caedad344e6c58219453
Cherry-picked-from: @e403ed6546af9ea6367fdc3e754a4217c0e10058
Cherry-picked-from: @105dcd69e75330bbefd8dfb863d2d3dddffeac60
Cherry-picked-from: @dd6ecd5bfa5da81fea423d74ac3b10c586684c33
Cherry-picked-from: @61bf7b8536c509bb870dadb92e41886c3fb82b7e
Cherry-picked-from: @17cb60080ade324bcd34a88d49841c89d8b8b286
Cherry-picked-from: @0c926a2c5e82e5fa01eee151618f2d8a05c160de
Cherry-picked-from: @7764f717e9e7d1e7b6cfa92d7deee0d822ab1d57
Cherry-picked-from: @4540c6b3bc1286ff602c33e2beb87916963afdc6
Cherry-picked-from: @0ce23dc62d376f5625a3c6c572d07d8cac0c16dc
Cherry-picked-from: @16505718e8278e6c8dff0e5227a5cb5a9f7c56df
Cherry-picked-from: @8746362f5ebfe8de4d3633b424595b3b47f58af5
Cherry-picked-from: @e5bca0832fbd01b98eeede548d2f1cf94166f149
Cherry-picked-from: @5682ec37fada89205821ee16a03f1e0d0948efb7
Cherry-picked-from: @439c21e078f168a3e774013c390e4d97b5404174
Cherry-picked-from: @c79c4ffbfb5797c1da45fd32a92def1d56b06835
Cherry-picked-from: @64e6df7eead1f68cf8606a122f8e9dc30a50e05a
Cherry-picked-from: @40c81e9cd3b7d74ea589fa3b96c13a0b8f8412ab
Cherry-picked-from: @0ee11d332105f2b7e8ced9d22586b030668c9b66
Cherry-picked-from: @2fad7b823ee13f2bae979a42aea00028adcaa2af
Cherry-picked-from: @78d2bfc4d890802dacfab808f2667406ccb6ee8a
Cherry-picked-from: @2eea93982f47587e2e9c2beed47e5c9e50c7e898
Cherry-picked-from: @02a86da23afa1e8a135c1707a49ac2f6863c0fc4
Cherry-picked-from: @61a7f2e7c3c7be6a2af2c77ae6f8175010e33771
Cherry-picked-from: @00891dee903b65d18110421baa4afcd8722bc7c3
Cherry-picked-from: @5c9fae5adc335b30e253750e1cd9963b288ae359
Cherry-picked-from: @c08317203d76ab0fe844c03de74bfc577ac95714
Cherry-picked-from: @b5ba2101c7af7587fd85b5b9a5907ca6e5348233
Cherry-picked-from: @9aac55d30614bb0ba6146764bba0be6da57b4496
Cherry-picked-from: @62afc4b5148591acb1333d5ca5888a62b930aad6
Cherry-picked-from: @d9c285e930d744a747ccc4ee600b4f6ffd6bd772
Cherry-picked-from: @133cce23ce82f4a8b0e7bb83d3fb0b7650066624
Cherry-picked-from: @d039add6633568aaf02f457f9eaf72464a2aebe3
Cherry-picked-from: @0e893347f69ec558ab1dd66f1cfe3263e2de2e6b
Cherry-picked-from: @c30cabcca42d5a41b0e129a7ce9d438ff539e792
Cherry-picked-from: @d9bc1920ed1bd1164e07e29ec8fefb72b02fb54c
Cherry-picked-from: @c6e32835d4c3b7b51ce9be1832ef9987b0772817
Cherry-picked-from: @9bffa3422c4dc13f5c72ab5d2813cc287499cc14
Cherry-picked-from: @e490f450f3efbab4231c773406c8c1271432940c
Cherry-picked-from: @ac29edf6c3b1c55ee66ea66c2552e36323dcb348
Cherry-picked-from: @8db6fcca777ac751597b1290a201d0df6161f9f2
Cherry-picked-from: @d33f3f843ad3b8aa00f44ff04cd9b0e1e07db7e6
Cherry-picked-from: @bb06dc7cc9e71fbac29d7888d64323db2acec7ca
Cherry-picked-from: @b49e1386d0c913415b77a71f20863f44164b6394
Cherry-picked-from: @747609d7d553b4a194a06d6f9b4c79482c86ed8e
Cherry-picked-from: @678ea77dcf7595aae3f12abcf0c6d003a9605f3b
Cherry-picked-from: @e81442ac8023d1ce8142e0db3be922baaeb0d29a
Cherry-picked-from: @432ea112484bb1e28b046f29f1ab7ec5e6100e9a
Cherry-picked-from: @cbec476b6b70c481c0fc6ff12e74d70c36302769
Cherry-picked-from: @39377b7a204cb7088bcaa44341780ce7c46b79c2
Cherry-picked-from: @92834c844004aa52fc1969c7014bbf5d9885e2ec
Cherry-picked-from: @173fe3cb548b2e6fcb12b11c62cf178a2f77647b
Cherry-picked-from: @39b4185d0b665497be77e1f09cf95e718bb4af83
Cherry-picked-from: @b1d87370179e224754c81040ac1764e8bdcd9677
Cherry-picked-from: @2f7e548a57e6395b12cc73e48fbe9a418e87420c
Cherry-picked-from: @3704293e6fa704791400017c0e241aeb4678327e
Cherry-picked-from: @8a607d7553339fffa97870668c482734db1b2d68
Cherry-picked-from: @3928b4872ab11e2062b48b38e8221fcc0b5f1c9b
Cherry-picked-from: @9e8df16732b1a8e3f4135d15567cd0ed1247b454
Cherry-picked-from: @2806f2b8786b104bf96e2cf39309b140b219d591
Cherry-picked-from: @b202ac2ad1a257e560ba79a3034597b2d7c38116
Cherry-picked-from: @c1a019682614a1e5fbcd88d9d651db37526e4582
Cherry-picked-from: @b5b589d99d3839b6cf0d3689bb56aec30d0d17e0
Cherry-picked-from: @92fc8065e96db4969b78121378749518f73680b6
Cherry-picked-from: @e5a42c0becd681f4760d1082bddd3fef4f04bb8b
Cherry-picked-from: @f4aff83c510699ed1a4cdb3e3be6eb95cf52ebbc
Cherry-picked-from: @774b40467b62d9542344bbca2a232751b73d0f94
Cherry-picked-from: @4c6a7f84a4c940c414eb7bbf1df6d8cad3ac45dd
Cherry-picked-from: @c57b750be4695a4c602034fbe825ae6a5c8a54a6
Cherry-picked-from: @946c24d67439c00bbf31073ba3d273bfe0d676e3
Cherry-picked-from: @f4dbd78afd64253c5d4f9a2b2f124c6ea0b1afb1
Cherry-picked-from: @df3a247db2a90da2a2593f85bdd5ef07f6b39a91
Cherry-picked-from: @e3b7ff2f1f9648552dfa6891c452f1266ab91ab4
Cherry-picked-from: @f00db91590ccb0ca42820d676a995bc61dcf5c96
Cherry-picked-from: @ba6064cc2256c300f1b08e893db682b69b19a392
Cherry-picked-from: @8aaafa045a5c0b580e52961455fc269f728bb47c
Cherry-picked-from: @29fec8bb9f0b909ceecb232569c562ec599be8cb
Cherry-picked-from: @db20141993f1f674abeb563642a4e03249c87e98
Cherry-picked-from: @37c79f84ba86816629d70330890a643a62af4f97
Cherry-picked-from: @8851d064292c9c8254d512342c9ea14de942ba95
Cherry-picked-from: @a97b9014a2372566d9fa45d8e9750a2852fa40de
Cherry-picked-from: @8e4a1d87e263ffab75ab6632da33627932c361de
Cherry-picked-from: @d1e4ee03ff6f33d81627f65e60e67aa51c988c43
Cherry-picked-from: @3cbf932413e41d1836cb91aed1541a28a3122f93
Cherry-picked-from: @8e04d1fe156acfcd4df5b216f2e3f8bd5fe3e287
Cherry-picked-from: @f77a6841317c13253902a85e2bd78a51f26c84dc
Cherry-picked-from: @6a458ef29e150b42e1f55ff8e01722728b11b218
Cherry-picked-from: @d230bd9c388cc55cb5975ca67cdd5f67e7d767b8
Cherry-picked-from: @c33375f8433967aabdb5b5978f5da10d6e384a82
Cherry-picked-from: @a2d73be3a4f6bf8648299a5d4f576c0e8a7f24f8
Cherry-picked-from: @9616d1e8ba5cd0c497e0cd9792ac212c0a29f28d
Cherry-picked-from: @4bb8a65edd52aa2a277ad1370ea1a1e0ea749d9c
Cherry-picked-from: @d7ac16788ec2827c18177df5b1d61cf0e455a341
Cherry-picked-from: @843e3c1efbbd4844a494b873a68aedea252488f3
Cherry-picked-from: @9d3e653ec9d262fa34d6c63ab0ed2239d19895b1
Cherry-picked-from: @5c5c64b6129a5ab199488d1e0255a25292ed3c66
Cherry-picked-from: @26e0a3ee9a6b5e1251919f6b3b07015cebbf9375
Cherry-picked-from: @c4265a5f166f99b19b6bccaf445463640411c4f2
Cherry-picked-from: @b2e9221a8c8189b3c9acc020ff8e9b811dbd587e
Cherry-picked-from: @53462b990d95a34236cd42726e5b73ae6722d849
Cherry-picked-from: @a472f988d89b2f9cd3fcacfdce8db794b2eac145
Cherry-picked-from: @89e3969d640cede4636214ecaa658a082bf4513d
Cherry-picked-from: @e4c61723cd2d530680cc61789311d464ab8cdf60
Cherry-picked-from: @ff61343d76933c2d7bc01a13db87a2554514e0d0
Cherry-picked-from: @ec2c6d83b9f5f91d6d9094842e0f19b88e63e3e2
Cherry-picked-from: @87c4ae36b4ccbcac25ceb238ef357297761f4bdc
Cherry-picked-from: @f5cd7c390d6b592bf932e7dba6efce100b70defd
Cherry-picked-from: @a60fd3feedeea9535840b9ddcd921330f4c769bc
Cherry-picked-from: @7c0a849ed7c48c199b508721a881ffefafcd46fb
Cherry-picked-from: @0c7ae04262ea61b43edc8276b8cc1d62a01842f8
Cherry-picked-from: @8d44b16b7cc7705dc878ef7cc9fbcba6dcb9e179
Cherry-picked-from: @67b2d1b8e82e7002c8820a3542cf8e569b1d3dcf
Cherry-picked-from: @a47722de7e3c9cbda8d5512747ca7e3bb8f6ee66
Cherry-picked-from: @229426a257e49694a59fa4e3895861d02a4d767f
Cherry-picked-from: @a493f01a9033a6ad87af8fb4c7f0efc9b891540b
Cherry-picked-from: @9e2eed211c828c8cf36884d64ed713aeac7703b3
Cherry-picked-from: @7679eb375294941b02214c234aff3948796969d0
Cherry-picked-from: @5e78c8bc95d86fea04cb5ea5303f6a55541a4fc4
Cherry-picked-from: @8e97b752d07dcf5052c47d519882693e59cc00d8
Cherry-picked-from: @13e256ac9db180de7310f9651ab09f8ee4eba25f
Cherry-picked-from: @d37e3d582fd8193c5b645de5ead8d7a14a137e17
Cherry-picked-from: @f0202264d0de7ad345382b9008c5963bcefb01b7
Cherry-picked-from: @d88da9f5f8182932415c79b0c2a69007da794faa
Cherry-picked-from: @756d9b57823217802b15c5b7d73a154fbd6bad85
Cherry-picked-from: @132e45900904fc981e6ef04259eb37c72f6c165d
Cherry-picked-from: @fc2d29ea926f47c428c556e92ec981441228d2a4
Cherry-picked-from: @630958749c7b23cdd287f489143825b2fbebf149
Cherry-picked-from: @438991b6a430d0187f4320b94c3eb06dfabf0463
Cherry-picked-from: @c9a8b6f82fbe8b755b3870b1b648232db02ec258
Cherry-picked-from: @dd2eb290384535f99af91f83816ac2b70e2cc575
Cherry-picked-from: @bbb0c3e5d7d9acab512d70abceafdba11d7ff490
Cherry-picked-from: @e2dac5d5cbf6e2c395e294e7569b13afa2e758c7
Cherry-picked-from: @42837a04bfa9b430f70e17de13a81f116d7c1287
Cherry-picked-from: @51631e5797d8191b1ecfc5f126f1764ac41eb74b
Cherry-picked-from: @4a7fbe090af47f63d59bceb8f54cb6106c04a397
Cherry-picked-from: @a2080421a115d3289dbce88f562b03e6e34c6680
Cherry-picked-from: @594920f8cc9693e4b2f8bba2512711ab0f2f201f
Cherry-picked-from: @07f890fa45bc782fab594fdfc77505aca6ea4c4b
Cherry-picked-from: @85dd0ab2f8472932a886734cb2520e1f091e0d52
Cherry-picked-from: @b795ba1d02a99134a1b655fa436261c3968b0dcd
Cherry-picked-from: @4fb01603090c9697fa18d82a7c2d99597dfd14c7
Cherry-picked-from: @7931f06c001d900c3b6a46328129d57caa9422a7
Cherry-picked-from: @47fd8558cd5a3299d27c5cd254482a8bfa476642
Cherry-picked-from: @373515676607b285818a4b7e29eb4176680c0afc
Cherry-picked-from: @5a7aba94a2bf1d0ca5aabd86337259a8001c8f6a
Cherry-picked-from: @50c89342318db40c4295193a0877442e7adfe125
Cherry-picked-from: @b810e94a1756d96bad2fe619fbd4d2e4db359128
Cherry-picked-from: @1839bc0b1a45d8fb71dbfbc9f9b65ed164b4d5f4
Cherry-picked-from: @50a6902a9a4b3e686ca32d499a3d049aaf9bbcc4
Cherry-picked-from: @14137bef228e25a19fc8f083580a26380859a7e8
Cherry-picked-from: @4a0f72866b4dc64228afeef6f1d28d7fa77b2bbf
Cherry-picked-from: @392ddb56e22ca89bd2bd072c27e89842b53296e3
Cherry-picked-from: @8b001d6e4dcfe62dd9f000b3b50448789e0ee150
Cherry-picked-from: @4eee827dce6bb86e7f0c39a474da5d0aab517266
Cherry-picked-from: @aa1454d1a80c35417bc047e78c8cd85ecfecb33c
Cherry-picked-from: @dd40741e18527c9a24991da134f22019950faba0
Cherry-picked-from: @4adcfa3256bfd4319e9593c01608aa845b549761
Cherry-picked-from: @684e5ea249242428ee7721aa2742d4519cdaab4b
Cherry-picked-from: @9eed6e674bf6c68823ec4ecb43e712fcf7a4ace1
Cherry-picked-from: @963237a18f5c8073f828767636b65c3f4ca9a68b
Cherry-picked-from: @74c762beb0efab0df6037638f781327fbdb23991
Cherry-picked-from: @a4047bf148ea1855cff6995e63e64b3a06f525f9
Cherry-picked-from: @d040d48af4c54bc855afe88dd0f97ced9670aab2
Cherry-picked-from: @fd7e283ac5b7095170958155019a3249010f7b01
Cherry-picked-from: @c74042ba04515894e584ad8a76c9e7b7b92fec54
Cherry-picked-from: @6e047eb683c05e157e54e56b1f8534f3fd041a59
Cherry-picked-from: @bb160ebe89ab7e0f1e47fc3090dbb1f481c8a975
Cherry-picked-from: @5a68e8261e2d0f91def4392de7308a5637bcaa07
Cherry-picked-from: @c3ed3ba31016b4d0458b27dd91d458845e79e34f
Cherry-picked-from: @a058bf918dda7bb422d042bed576bf766637920c
Cherry-picked-from: @f4cc93dc7da7359c35130bbbb244d3fac695740f
Cherry-picked-from: @e7555724af1514c874865702307f84f2aa5e273f
Cherry-picked-from: @8e2a1d0941c7e93e31dfc69a5914f4130bffc50d
Cherry-picked-from: @c05cfccc176779cccb6783db03c46d66c0c53b15
Cherry-picked-from: @1f68e6e89cfb83290ce2879eb83b06a970bef5ee
Cherry-picked-from: @70a228cdaa86a821c063acf9cc1bbfdc042c24a0
Cherry-picked-from: @c6239bf2535803651267b14de8fed829aecbba3d
Cherry-picked-from: @1f37203f88bc49869011a7ae544f737c6d6d8a62
Cherry-picked-from: @e42d86afa9ea027dad9879ccb36999b7999751ba
Cherry-picked-from: @ee7ecb2dd42eb957e70f78aad50200335ed800fe
Cherry-picked-from: @0537f3e597c46b50b67f05c1fe4d2ebeba4c3bee
Cherry-picked-from: @a9317a4c288ac617bf8a62a3d71e1af8a08ab340
Cherry-picked-from: @c156f7c7e3e24ccddb97bb8b142232dc9bd744c1
Cherry-picked-from: @dd96be4e9543e7f0e417ce912a5b36176bfb7e41
Cherry-picked-from: @eb97535a35c2785df31d1bfdacf9c621755bbb07
Cherry-picked-from: @cbb8c43f60c781f88f4b4adc668fb43e2e890249
Cherry-picked-from: @bad65f130e78eaea9865a252776844295c2e611c
Cherry-picked-from: @c455cccd3d7b76215bb303b3a01307b030e96e1f
Cherry-picked-from: @f87e7be55e46ed4b71e0f3b610f17c7baa08604d
Cherry-picked-from: @a782358c9b643ae55ff8d7890ebaf5b841af50ad
Cherry-picked-from: @c0e0115b3118b17567b70d3b28f8e426d7437e98
Cherry-picked-from: @da4f82503f3c80613ee7dd1da8e530b009da5468
Cherry-picked-from: @33495f32e922068544c6e7d4a5d5019c547f64a1
Cherry-picked-from: @0da588d2d2559df33f8df3a028ab44053a1c1a8e
Cherry-picked-from: @a8bee6fb6c50fe1eaca67cf5fcfee68c3db15a42
Cherry-picked-from: @8c71b36acbebd410b4806241aeee6bf7057afe05
Cherry-picked-from: @18e4e4677c5b49d460f2aa11a29e56e2ccc3a578
Cherry-picked-from: @a78b83472e60435efd2f0178229f55dc6c26f1fa
Cherry-picked-from: @66a8c257b9e0a7d971ae5dbd70f3806eb4ae8aa9
Cherry-picked-from: @ae6ee73097e19b9a3cd0eb5ab32b5ac7998dcb45
Cherry-picked-from: @59bcac472e29b818820941aece0983c590bd4208
Cherry-picked-from: @e8156c8281fa6f0481ddee093222dba9dea81397
Cherry-picked-from: @3aa5f2703c5e299fad13f8303547e9b96e1b4f14
Cherry-picked-from: @579d0ebe2ba01e2c3b488d764dabf91676df4a08
Cherry-picked-from: @7a93f7d9dfe63a40793613ad6290fc3f53d593a7
Cherry-picked-from: @b8dbc12560e8b11d60da888bf2b632af37f83fa4
Cherry-picked-from: @d56559bad7dfb60a2a83f5e00c23a6185883b910
Cherry-picked-from: @bc5054ce686cabf9a61fcd17d636a7679ba7e921
Cherry-picked-from: @b54e37c71f4d3dda7ed2a4024dd28dbba3f9641c
Cherry-picked-from: @74a57ace10bce2f3e80639127101a683c60e456b
Cherry-picked-from: @9c89a74f84c5c5b1811cb4a1c38d3bd1f4d330e5
Cherry-picked-from: @83ee5c03285317725d56f0db00101e2c124be285
Cherry-picked-from: @9cca8a6de565946dee5159514d39402dbf40d32c
Cherry-picked-from: @71a69e533791cc943fe2210daf64f35de86b54f0
Cherry-picked-from: @40be12db966a37abbffbffa65ecd482ef95fb9f3
Cherry-picked-from: @0958aea1125bc76a87301fd1bf5132068a980d25
Cherry-picked-from: @26a8aee01cfbdf15e23c13eb2d62841aa119e6bd
Cherry-picked-from: @1e196db49d8e0ad3cc246fc411d396df74ba393b
Cherry-picked-from: @961f42e0cf9def1b1771394928c5e95d4cb68f8b
Cherry-picked-from: @1c4f52d6a1164e437ba39458b7fd93c0c44248d9
Cherry-picked-from: @d663df7a7445fe744bb959c0338ffef4411470dc
Cherry-picked-from: @de6666b8958f92f03a1b2f4b430248f27f13ddc9
Cherry-picked-from: @fb991e6f3156aeb6bbf3f15e27926cb9e2697572
Cherry-picked-from: @57a0534f937e9fbdc69e9804d859f5651b6f2dbc
Cherry-picked-from: @399b6f745a508e46911079aba187f318c9e08166
Cherry-picked-from: @413d2ff3da8e4dd7c2b12845a0f12f710f89c8f4
Cherry-picked-from: @7d2ddf70c15bb2837bc78d89ec1be4a4cf038812
Cherry-picked-from: @70a6d40d37efb01debf7ddac8dd3debc9cf89651
Cherry-picked-from: @4ed30abc7ac2620ce7c5292fbede3b11b80da7e6
Cherry-picked-from: @6b28668104bb67fc7c689763d89e676c42b51235
Cherry-picked-from: @bb76a90dd1843af801798d64f9c35c31d6118e15
Cherry-picked-from: @7c0cac2740c8526598867fa39a3e28a638b8275a
Cherry-picked-from: @92e765cdee15c445af94e0b2c2ac6d03f907f56f
Cherry-picked-from: @59940cb3ee30f1f3c6d5a81a7d1decb694b13c50
Cherry-picked-from: @0a136f1b906b09f725cc6ffb0211ceffcc8b9b05
Cherry-picked-from: @6987a3c8b57e650c4236bd87a5b7b0f3e94aed6b
Cherry-picked-from: @39aba198f1530be2392e5e7e8a64606f31c95d83
Cherry-picked-from: @2b57d3bb34bb0dca2396b8b612af59c60b1ad9d4
Cherry-picked-from: @10f4a03de88799316c38e05c9fc1bb364a24d281
Cherry-picked-from: @9785b44307fa3f96ccae15e5726fd38a592af1e4
Cherry-picked-from: @ec93398d7be6c2e7124d6eb9234a972c5395e310
Cherry-picked-from: @60bf58ddbc7cc174f80c1000d683620962a95789
Cherry-picked-from: @067215629f7148f0d2aef804d46375e0675820a1
Cherry-picked-from: @c6950367fb8070c05e10d0f6f5f9b96fd54025f3
Cherry-picked-from: @c89527f38950a8bceddd0c6f779dbacfe5251ae0
Cherry-picked-from: @6a2efa541be1c5ba46045535110cd2c6d118d907
Cherry-picked-from: @38abdea8ce7e7f94b818f046068a35e1d0d38d82
Cherry-picked-from: @c8576ec78bbc95c7a099abfc5419fd057f057d22
Cherry-picked-from: @6513749ef6d3ffb35ff827ae75991eeb61af4018
Cherry-picked-from: @47a9c1a8934209281f0f10b13c81b5f5cd0d33da
Cherry-picked-from: @bcdbd03579e4fdb8c1c411f882e590dec111ef0f
Cherry-picked-from: @acae0b60c2b1457bbba58a65da533915328d325c
Cherry-picked-from: @ecc688d20552f11a8e8f17aa48a1382133db346d
Cherry-picked-from: @7212b5f01a1056efd94b0d53ba45dda9ebc24650
Cherry-picked-from: @0c9428a865899f7c6abe45af0131bdebf6d1d10b
Cherry-picked-from: @a516141bdae5f3a4136f10ce1491452aa0e77f8e
Cherry-picked-from: @ac5e97097e8ec2e8349d6f84068186a4172bb845
Cherry-picked-from: @c08796b0394c2767d6c25e6208a8beee40752c40
Cherry-picked-from: @61bcdcca9c43c6e00ca688f436c53a62f7c4bd06
Cherry-picked-from: @b37085984d56110b01fcfdb2120e1cf1f056155e
Cherry-picked-from: @88b8151c524b4f0701fd0546c81a5e0707db81d5
Cherry-picked-from: @b580d142cd56738c3f62f1152765b9e09b312691
Cherry-picked-from: @dd203c8eee1bf724656ba9a3d45c85176d0bd5f9
Cherry-picked-from: @fdfefcaa118168fede051de6ccf1f8f4ee5e919b
Cherry-picked-from: @a97e1e1611aa3dd6e4307198da4f6691b108f5d1
Cherry-picked-from: @65ec4843e8383aada4ae600f279ece89f945057f
Cherry-picked-from: @3f12e90f3e42fda423ce59e4e328277447a63856
Cherry-picked-from: @a2cb81199e22d5425a1490736971b9a96cea3c2a
Cherry-picked-from: @d8e138c7433796b6e2520bcec09e58c57dc44256
Cherry-picked-from: @84c0326f4de9970d0aac8c6187077d3e2cd24561
Cherry-picked-from: @46482a283a250aecbd45c5ef6f19e2a41e26effb
Cherry-picked-from: @bc6ca4940b3f27e6c958fad91cf150016a361296
Cherry-picked-from: @d8b927ee6a9f5e1a4d2c262630a4e637d9e27427
Cherry-picked-from: @986b772a89d0fedb4e296545ec7224d19767c740
Cherry-picked-from: @f71f44576aa0172055ba3d3f0ee86f9c9f6cd99e
Cherry-picked-from: @8ab01c5c9394d7f85a2b258b0bd9b2824b85ac7c
Cherry-picked-from: @3b26da4b820a246e1d0f06c93bb07d23f6eff781
Cherry-picked-from: @ae7f18e5033def8b4d49faca96cee7269223536b
Cherry-picked-from: @be8fef3840b03f9511f7153ad8bc93773477de45
Cherry-picked-from: @aa28d1c71138b2e2d85511e40fae5983e3ae621e
Cherry-picked-from: @ca6dbc0f0acaa0e986c14ad36ebce5a02550e469
Cherry-picked-from: @77d0ff629c20488e9eb0ef8ecad729e35033ac8b
Cherry-picked-from: @de503dbcbbd82e21a2c2630ca421fbba78820aec
Cherry-picked-from: @371366e9eb6b0a8528d5c5a1362d950575a99a94
Cherry-picked-from: @98dcbd3e7eef4c35d48b75b2f3312096e078df9a
Cherry-picked-from: @dfc237c319788702fb826c48ea0273f5f4ab403d
Cherry-picked-from: @0eaf03f55bbf068e1d9b158c5345431df481c524
Cherry-picked-from: @92d53070744feaa0db14fc642cd751591d7178ae
Cherry-picked-from: @1f50fed3b28bf4a87439152c6f2dd50bedcc3db5
Cherry-picked-from: @ca2f0466686d5ff39ef75d1e77d0c88f07ca5383
Cherry-picked-from: @a33caab280f3e289005e4d37bc6449208a0d3d8d
Cherry-picked-from: @01456f95bc5fd41243d02a33fb71abef57eb6c67
Cherry-picked-from: @d9fb50e7772177e7f739f7598401f30da5ad0bc8
Cherry-picked-from: @31e6cb0df6293fa8e46fd894b9c51c9d465457df
Cherry-picked-from: @7d5e26b4a283882787f71ef4d7151f03a2976a05
Cherry-picked-from: @270ba54c4747e2f3b1d0c6f3c0f4f019d958e657
Cherry-picked-from: @522dda1971ffb6f165feb44d78ac53edfd98ab33
Cherry-picked-from: @0218045818ec951bf58b9052707a783aee8a0c6e
Cherry-picked-from: @350b42d3424e216d384744ac7fdd855d128fce97
Cherry-picked-from: @53ccc78c636322f2b17649e83e67862d913dda9c
Cherry-picked-from: @0f43dc46808bca5cd9ff355469030ad322c6044e
Cherry-picked-from: @c4a5fd8465cbee23e2f3b6986c16f448763b34ee
Cherry-picked-from: @093e51f2b35b90d6ed6b8ea808835ab30dac98e6
Cherry-picked-from: @7e8f5ca71b7de1490a0db7f627dbc32a76fdee86
Cherry-picked-from: @cb4a298961ca1292e49afc8d010013f64cb06bcd
Cherry-picked-from: @7781f62d33518a67e25309fa12c811d272e1cdb8
Cherry-picked-from: @33edb57e745b4e3fab788248fa8b52cbb5727062
Cherry-picked-from: @b8bb8510a2a382632cae058200c9e90a591e1ffd
Cherry-picked-from: @0a2f95916be6354d6e898ec3b8eb45015e16f16a
Cherry-picked-from: @1beea52d8dfd8c9248a24fa5bc982d78e4d7396a
Cherry-picked-from: @07d71d2b271327a685bc32f01e38ff1601d3956a
Cherry-picked-from: @656848dcd7d0b6266f6f0606c3731fd9202c1f6f
Cherry-picked-from: @5287ae3c06cfaf1077ef26a2b4c9b829d51d3086
Cherry-picked-from: @09f607fa824ecc99d6a1d1424715d388364ba878
Cherry-picked-from: @922ce15c6515c7514eddeceedc4da287a9d2febf
Cherry-picked-from: @3d8c29cc534e8b3729c4eb5cb436bf84a7105f40
Cherry-picked-from: @7a6be3d53163c4895f25d21cd0ab6d853713cd07
Cherry-picked-from: @0c2ae713662cc701ee68dbe39adcbb9c454e80a8
Cherry-picked-from: @99a4594bdec3a08a7502083fd3ebf9cdccbbcaba
Cherry-picked-from: @a69f6190ab56d16208feb3c1ab08ecf9799ed9b3
Cherry-picked-from: @28de97356dad6ad7ca07b15a7ab4ad6f094a23bc
Cherry-picked-from: @1c2a609d03b1fddda04db16a1baf3418ba86e4b2
Cherry-picked-from: @f70d2624dc74a23d446d3d6e9766079618aa679f
Cherry-picked-from: @553cbccd4085e3a97185d2f7b84be876a7c0fcbb
Cherry-picked-from: @cc6f03ec6c9e726811ff19a68f2c03540a6ad5a9
Cherry-picked-from: @082383b40d4994c8d8bce56be2617db767b5703d
Cherry-picked-from: @df2a6b167270d2e62b462c8c99b89a820315cfd1
Cherry-picked-from: @12f4dd9a05084d031c5cf4f999b9475db5d31c14
Cherry-picked-from: @70184121021a5577dfd4067a111ef41c9be27590
Cherry-picked-from: @f3f0bdcb07934e49a903052814a82e497008ea8b
Cherry-picked-from: @5e093639d7430a21ef0ec394496160ac369b9c90
Cherry-picked-from: @82f587fc82c139870d3ae879702c9b5c3300ff5a
Cherry-picked-from: @b1243bf15bf0cfc4ed23970247d8e25b7e98cb50
Cherry-picked-from: @e50545d7674467baee955e0babb8c603a8a778e2
Cherry-picked-from: @f327408fad498b988760e025749a3c990c36f1f8
Cherry-picked-from: @59d355bc48213e47a60ff8ed86e02ee5b266052d
Cherry-picked-from: @f88921995590295add44e058e308651a37625a1d
Cherry-picked-from: @6fd11f54963ee283df3d8e660d2a012607f2e01d
Cherry-picked-from: @298832d1701d1f724ca4700d085f99c8f761aef1
Cherry-picked-from: @8b6806ab5c741f6759a86c3d05971df47c513b7a
Cherry-picked-from: @1e54a4a6a36f9fb9c51106cd4eeedaea1f361cf6
Cherry-picked-from: @d5a7880de2f93a0b5003bb43ef1680eabf25d5c2
Cherry-picked-from: @59bcc9ee46389391a7469d78d88b5ded39234632
Cherry-picked-from: @f6d8a1129db4a19abe250103ef847325c9bc91f6
Cherry-picked-from: @c1846000ddbce29821dab2018f94dd24fe7393cc
Cherry-picked-from: @04081d349e1d5ab1096782e8ab3722d929e0e835
Cherry-picked-from: @2eb2b0995d346026a20c24c9b8d73fd627f9b4df
Cherry-picked-from: @474368d7467038c33a240f8a2a9829a81d7d9bbd
Cherry-picked-from: @bdc91130fef8e0e91ec29c814b96002a396cd2a4
Cherry-picked-from: @2d048980af977571d530dc74c9b31b5729cc573e
Cherry-picked-from: @38f61564ac1ddcbbde7436988c28c72f2ee2b705
Cherry-picked-from: @14b7187c332236420ce49670c140568c402a518b
Cherry-picked-from: @576ea841950f6c13d7903f64ea26d9ee135f1800
Cherry-picked-from: @8f41001edf9fc85616fd45a64959cdac5da746ec
Cherry-picked-from: @0feb939cb3bbe319964893c737f12a29038215e7
Cherry-picked-from: @3a08f7015131d0fb5510382995542731195c2cce
Cherry-picked-from: @c66b994965c229a0e53de1ca4caa6159058fee8b
Cherry-picked-from: @eb51ba5c1dbca766e5758150b87be3ceea4e702d
Cherry-picked-from: @52c90524c905f520cfe01377161ef9461786b37b
Cherry-picked-from: @d607d2e6d4a3878a127d4475249127f012bd6243
Cherry-picked-from: @833a19f756b265525fa7e5db4d303ebdec41ba1e
Cherry-picked-from: @6ed8ad184453ee0b4f2a5b9cdb4bbdc2055d7b54
Cherry-picked-from: @e77aa26af6f30953ba1aa5c1d07c3883ac9e35ca
Cherry-picked-from: @69a85325c38e9ac83347960693acad72c6f19965
Cherry-picked-from: @92bea9704e17c16b4102d7895f30b2a6f09444de
Cherry-picked-from: @c7d31bae8a67628a50fbc6915879652710b38e33
Cherry-picked-from: @0277aa015984dd6daac7eb634448e8adc0705da1
Cherry-picked-from: @98877dc4137c60133ceae639016bb4d5cea4428c
Cherry-picked-from: @5c120cb36ca36d2a7b40fcc9818abc5330cec3d0
Cherry-picked-from: @f6f0045e0f27c64da50234db80bd93a376721be3
Cherry-picked-from: @823039c000b6863d5394b5512dae2c1cc25741a2
Cherry-picked-from: @d937b61fb37b763892c38916411298f29682c07e
Cherry-picked-from: @69c12c2b11f63f0f0b279538ff2f50428a47e4f6
Cherry-picked-from: @3e8bc9f16ac31e593dbc9655a02d72fe27d02826
Cherry-picked-from: @abe7ea4373ae1ac75171ee63604119f29bf11732
Cherry-picked-from: @e627a5069ff1b2f9d08a63acb323ed0b4de118cd
Cherry-picked-from: @304703f1654a142acf69747f4d91eb3d7220c96b
Cherry-picked-from: @0311ff05d77ad6a5f10cb0c49f8800b8b4a80e81
Cherry-picked-from: @44304ba24af8d9fffb581308fbb6bc9a3cf2b947
Cherry-picked-from: @c780b6a6ab2aeb1a6ae183600013f2d6f015613d
Cherry-picked-from: @98f6ec50aadbc90e4aafa3bedfe1f432b6a4cea6
Cherry-picked-from: @680eff63fbf82536caf45a6f6909e3a030bef27e
Cherry-picked-from: @ad97c581e21f9dbb895ac2ed18b8b1a76c5ae9ab
Cherry-picked-from: @0b58a1cc1304f00009edba73e599362f7cb593cb
Cherry-picked-from: @55cbfb6e6ad17dcc3c512e3c6170f00a83451eb5
Cherry-picked-from: @2acbea0da74a3ba722a033fab6085fd170177c86
Cherry-picked-from: @f9e185887fcedaad53c711e5fa13d9a995cb5b87
Cherry-picked-from: @2580b81bd217702c9302072e6a70de9b90f64b9b
Cherry-picked-from: @9cd9c7a4884177ecfbd4e040e2487701a2d1bb66
Cherry-picked-from: @39634088712e5f8530d9063cf5b413c5bf496a18
Cherry-picked-from: @7bea559166811732237db003c9ddc7e7e51f8c8e
Cherry-picked-from: @ff558862f079c83e7435fa2fa4cb06538447ee97
Cherry-picked-from: @ecaafb6a4f2981702b8e4785476affee74779dd7
Cherry-picked-from: @2852eab323bd5e9a9c41bedf8e79a2e4fac35a24
Cherry-picked-from: @465567b1eb1cbb03a37734ea1a3ac78a32f60a72
Cherry-picked-from: @0a6f22a69478573f0e8d0ccb622dfac15f33fd43
Cherry-picked-from: @ebfd32efc31cb26a204358811006dd9d6cc318a9
Cherry-picked-from: @4cb46f223c4bf7e5e91721d74418fe76ea128c30
Cherry-picked-from: @a2119efe1c2e08d5197d23925bdb43d04f04db5e
Cherry-picked-from: @5f42389d8d00d814e4c52ea1c5c37d34bcdeb99f
Cherry-picked-from: @d47fc009dea25e99275333b8594d0626952ba3c1
Cherry-picked-from: @c4b18ab3c9ae8c586bbfe02a279b13b2817cc3b8
Cherry-picked-from: @ddd34b6cc3b90e97c3af745b4ef136684d2ab798
Cherry-picked-from: @aa97368f7d6f5ed1e805ec739b13871b6008226f
Cherry-picked-from: @fa62231afca31a614d2494a4148e08b130a1601a
Cherry-picked-from: @f0f934556e24b16e82ff09d3b726df144f2e0642
Cherry-picked-from: @ed82c7e57be116ad49738448c0b2d39929ddbecb
Cherry-picked-from: @81d3c6c9099dafa2c7d3e7dbd922c91175bb787a
Cherry-picked-from: @853d8c0d8e5bdd4028a05eeea32778a6fe9c743e
Cherry-picked-from: @7b2a7da5493b1576b5ff588d11007dda0bb6fa59
Cherry-picked-from: @130b575c21b7c26a360a7815049640b4c36f3a1d
Cherry-picked-from: @4ab016a9bde81100aff88969c05e26635e60082c
Cherry-picked-from: @a608d0955286640a6c15aa93c0cb5bd0e18c9529
Cherry-picked-from: @d5b12f505cbf3ffe4aeb8a85209ec46c9d7e22e4
Cherry-picked-from: @d163278e9cdfafcf0fd28be9c7d819a965695db9
Cherry-picked-from: @c7137270d170d10a9e27f3e5a6f6979dd24b0223
Cherry-picked-from: @bd67f3336414da8fee874aa160a3a95db2da243e
Cherry-picked-from: @c01515672f6b62ccddffda6b40d4912cc6eb2e1a
Cherry-picked-from: @4ae80407a680e8007a4c7e15b7391806256a80e1
Cherry-picked-from: @13090da3ac3496512ee0ea4220950fa48bd56a17
Cherry-picked-from: @4fc3492da516998c63b09ccee534090084ea326a
Cherry-picked-from: @3838ef9b2a836792566fae1122a75e3b77545db5
Cherry-picked-from: @623ba1403108b0330b740c9765e90cfe85dd203a
Cherry-picked-from: @fb47777d38814533ff30319faf49990923e81886
Cherry-picked-from: @3105a1284a872f1d80c36b489c550f2e323e0898
Cherry-picked-from: @6043e733a653bdb6ec1aadc39aaf73a258b52b16
Cherry-picked-from: @910d039ea7fce696f84f5345e622698462c4cea8
Cherry-picked-from: @c5d61b96779a795569fb6266bcb292137218ee76
Cherry-picked-from: @acf7e83ac4a801913eba46723b1c2a549c0e11d0
Cherry-picked-from: @9df7e8bec45ed8b6d18cf9c221d4ac20f3068726
Cherry-picked-from: @f5ef936615aaa2025270752c9603bbb0ed24925f
Cherry-picked-from: @ae60094fb55659bd93723f7f97a8173a43d24c04
Cherry-picked-from: @2054cb9431b6eed97e91b8b03e2ba3f2fd6b71e5
Cherry-picked-from: @7cdd8a84a67b50cfdbcdb49489184a2c5dfe8337
Cherry-picked-from: @5ece9afa8b57b51dea3a7aac45d4e788507bcad1
Cherry-picked-from: @d410debd01f72b0a46f6ac6fb4fc93e954009358
Cherry-picked-from: @a8878be0fdfa78edc86b596edaf44b49c4346852
Cherry-picked-from: @0f502726e18a2826c77e1d7b1ac8a65d44d8ddf3
Cherry-picked-from: @9b73673313880d49ed926759fe6e5051fa9dd10d
Cherry-picked-from: @a8367bb0ec1c1ed0f44219e3c7435a85ccccebef
Cherry-picked-from: @d7ab1a6c7cc6a479db379d086016f6f0cfc3a4f9
Cherry-picked-from: @10cd276641aaf0d37ed90c6cd5ea6a7b87e72d96
Cherry-picked-from: @476d948732d0269206fadf78d3463ce7df30e078
Cherry-picked-from: @3c6a49b27ea0c77f50b0183dea4aef4679feb911
Cherry-picked-from: @edab939f4d5036fd436a47a674d82f69acc7710c
Cherry-picked-from: @00ef214d59d21d383cb8b18b7810ad6b0241693a
Cherry-picked-from: @c59e2dde47248f17baa9b87b1ae684d71b04e865
Cherry-picked-from: @5ca26bcae0d5d2035ef8d1f1ca017a9155149919
Cherry-picked-from: @85b7bc7edf2884c0b1d3866adfd9218c1001a7f1
Cherry-picked-from: @3fe3a53dd948c00bb383e81d52e7f600518e26b5
Cherry-picked-from: @a9a9cf42579e02212b2b9422f39eb78ac2026afa
Cherry-picked-from: @25535b571a45a3f371e7207b6f63b2d406c0ca94
Cherry-picked-from: @62de7e02ea7440c71dd7a1a67bde467c04e9652e
Cherry-picked-from: @182a00cc49484262086f343c4f7f8fc6b8f5ab78
Cherry-picked-from: @7dab66c89ef243876836a5212c41da918d1a1896
Cherry-picked-from: @e7eb410dd1468e5d12251280ec3bc98bfecc4b6d
Cherry-picked-from: @0ca1b18517b3da6cb463a52472d58de31b852d82
Cherry-picked-from: @e3ab0e174cbb68a4505ae88839aaec2414ed2e53
Cherry-picked-from: @36f0f216ce329a1ee84274b4e55347707156fd9e
Cherry-picked-from: @66447830524e3b91cd950cab2971e678d2086ce0
Cherry-picked-from: @947b548870a52dd2387530a95c9b7c0e5e80c502
Cherry-picked-from: @95b761a2e1c71b7faf09c539bb71aefd0b8e9847
Cherry-picked-from: @79a67a5e089800f5329b2651bd5a6445d226f789
Cherry-picked-from: @3c62ab5c89d20192eb84a53f133edbe4e142ceb3
Cherry-picked-from: @99c501a9a797cd0e1b8376ce3bc291869d1d4c86
Cherry-picked-from: @cec10703dcefbbef52f0e362611fb45abf88bd8d
Cherry-picked-from: @320b4bcb078b3ef6e9ddabab04aff9d465a18885
Cherry-picked-from: @e90c1d9add66578048b0a04b9a7e4ba2813a31f7
Cherry-picked-from: @7964563299b2f561cca07d0597047797cc7867a1
Cherry-picked-from: @b3025e6d8eb43a8fba08c0b87139b926c6568b28
Cherry-picked-from: @bbf3b4acf278b2a09f734328c60bc3931257bd1a
Cherry-picked-from: @209f1a08d7a352a52a095c5883d9b6c4804738a6
Cherry-picked-from: @a6eda07316292686f7f07b84c7b615d1e6639a4a
Cherry-picked-from: @045a879acfd84006becf706d4059d6a3d349c315
Cherry-picked-from: @67b886b725d8c7c0577dd351397fdde321c8113a
Cherry-picked-from: @49251def617a66cfbf5702f615e8f939528a4993
Cherry-picked-from: @74d0c39b3274f4312b7ed5829cd98fa35852fb76
Cherry-picked-from: @8fe08df2eb327f0b156562aa2ff716cb487cfd06
Cherry-picked-from: @4f8c0666808729b941764a53f94899b425b44413
Cherry-picked-from: @78f24dcaa23a10059e2fe958a66e447038bf08dd
Cherry-picked-from: @0ed64f124d60b6349540cdcf42da62f3d968e833
Cherry-picked-from: @3a2c24e598ee15ce3a28f17684c3792c302ef3d9
Cherry-picked-from: @ced20e799791dab4043d2a5d7c1a1f3dbcedebd6
Cherry-picked-from: @83ddb0fb4c7793153fab5841a3c80c758ecacb11
Cherry-picked-from: @7c2863d401291e9ba81ed46cd27806ad8cefa3cc
Cherry-picked-from: @7a09255361b7fb85f0e7a917c53660c8ac7edf71
Cherry-picked-from: @f11589b311c5f48dff9fa4b746ca706d53379a86
Cherry-picked-from: @a73d6620b3be24007eb1d1bff2cd831e101a8f7f
Cherry-picked-from: @7cc5789202a000b6adb396f30c345d8c278959e2
Cherry-picked-from: @e575f419a537973934ae3d09399ae83803cb0559
Cherry-picked-from: @1aabce78e73cc0e64ec3308ed1ae14123ca539ff
Cherry-picked-from: @94a01c978907f9ef4d1b23efc7767ee18c77769b
Cherry-picked-from: @7e74adef916ff75b96e3ab82fdbc2dc3624dca85
Cherry-picked-from: @4c8678c0b4a0bf62a0f223b0fdd74592529edb07
Cherry-picked-from: @f49fc633aca36ba6d0c0b219fa3c02ec9a635d8b
Cherry-picked-from: @09e8d1e96ffa8e6ff0a7a0d172ce36fed92df39d
Cherry-picked-from: @77b1f240fdb6f9c93990b1fcad72ecf443d2d68e
Cherry-picked-from: @776e5d8a0847a79ddbc87d84c58b04bb42ae669b
Cherry-picked-from: @9ee0fb52e98a7113e35d110ee7512df9c081ff60
Cherry-picked-from: @ff2e864c98cbd6c68a972bbb8b6824fe7eaae0c9
Cherry-picked-from: @30c31d4efd2facab4dcb7e85263ea785294dc5f2
Cherry-picked-from: @c06101b8adad665347ed3cd3f141c6bf94b5062f
Cherry-picked-from: @c9423dce1ebc3e3e8df729d59618287be0b5d3c0
Cherry-picked-from: @43c156e43b060870ce5d0157f5a28e050914bcea
Cherry-picked-from: @6f5369c7e8a15199265966b0774fb203cb7feb22
Cherry-picked-from: @2a85fa7db18f9296c4486abc61d2b35e213f3c3e
Cherry-picked-from: @d896d8e0cd1900570e0ac95d463f0816cb9c33cc
Cherry-picked-from: @5cd206f780ec7089d792d21ee79706f4a3f6f969
Cherry-picked-from: @429144d9f17b3e05f4816d53334c954602ec41cf
Cherry-picked-from: @4aae0d4c9d7b5aef3bd36ca60979ccc900c25600
Cherry-picked-from: @79a8905fa468933a5fbdc524d7faf1d45645ca35
Cherry-picked-from: @70aa9204c0f55bc722d678d40d238c29cbc7b3d2
Cherry-picked-from: @a8970963cde5a1d3ce5f27906fe704ef39dfdc2d
Cherry-picked-from: @65f05d7c098bcf349f9498208088a3045276a9d3
Cherry-picked-from: @d572188f61ba6bf304c59fec19a1f165e742bd6d
Cherry-picked-from: @abb21d91637b86907d8c7edfbb883ae3470c028f
Cherry-picked-from: @3832f938fd0fb813fc8979376dfe788e03d374d9
Cherry-picked-from: @1447e2e3848915862cab6c7afddf64eddc2b5546
Cherry-picked-from: @898d6840dc32db3082ac1e541d6c3361f148b4fe
Cherry-picked-from: @d68645d47f454766c74efc7c6adca8b59b9dc25e
Cherry-picked-from: @2ee20a60728a8d4ceaf69c28249495023da1a9f9
Cherry-picked-from: @303f690dd9c4d626dca76dace925a94190758f8f
Cherry-picked-from: @5336c4e9451cc334d81aef3caf4337518e068c5e
Cherry-picked-from: @e1f759f4f16a96c240635383d86d52c30cbfe8d9
Cherry-picked-from: @92700940d901e40127c28cb8f04bc3c3e2e20a1c
Cherry-picked-from: @296083a49acbbb3902752307bf6538b0d0fad24b
Cherry-picked-from: @1cf544ffbc69746568b6357d49ed76a95c371009
Cherry-picked-from: @8cd1bdd345a81bd30d475f1147c7f903937853fb
Cherry-picked-from: @6e650666160af9932d759d49ad52cdf4146fea39
Cherry-picked-from: @d61c08efbb8c4f57792e803141361c196a33c08d
Cherry-picked-from: @fdfa98cda84285cc1ca825d8976d9007dc8fc667
Cherry-picked-from: @6a8f5bc12f72399264c03444b07949e5d5c140e9
Cherry-picked-from: @fba394c56bc8f7ac98d31d373d9a5b4a51e87247
Cherry-picked-from: @8b438a308b82a52b055dd7cceccfd18b98512424
Cherry-picked-from: @ccba943738e02833fb28721a1144d5cc97d34aa9
Cherry-picked-from: @d6aa9b516e5903d99e584fc3cf6c1665dce3434f
Cherry-picked-from: @5e4851ae2bccf9e1f4691b761b6e183a114c4964
Cherry-picked-from: @4c8853122aa34c035bf2e788d61ab1e7a2d295ac
Cherry-picked-from: @092afc850dc6e26615b74c3d3d6740b169e19944
Cherry-picked-from: @55f6d2d1adfd2a20037009d62d9509ba1a8854d1
Cherry-picked-from: @e78b51baea9ecc240aca52e41478cd4e85377468
Cherry-picked-from: @9fc6c1929aaff1196797e78b45c7c9532fff5dca
Cherry-picked-from: @c08f2aa21a6e336b303355297b8bbce08c0fa4a3
Cherry-picked-from: @b7f99a57bf92341ad3a6e5620044f8b15c30888b
Cherry-picked-from: @e5282e6bda090f18b5ce04553e690875ad4d76a4
Cherry-picked-from: @467dae53cf8d281c46b76aab37c13a5c30c2deac
Cherry-picked-from: @ad18866bcc616d132a1cec81e274824a5bce15ab
Cherry-picked-from: @c186176ca3ad3fd5567b29fd2f6a3e0bf280470b
Cherry-picked-from: @77566a14483cf38b359bc24166fd4e9b9131494c
Cherry-picked-from: @841025da66e00e9f4d881e32cfebd5764fb4f8ea
Cherry-picked-from: @7d4ccee7170ff8916d37389f7c3715ffc448d112
Cherry-picked-from: @80bef826f863668c9465f49d757295f0d7302536
Cherry-picked-from: @8ad8069854de963cbd86635ee9c0d1550ccdb0cb
Cherry-picked-from: @55253e2a9d12bdce0b14c1b9aa0e9e400799c128
Cherry-picked-from: @1b31ede435bb5f07d87a5570d07e5d0d2dd5cccf
Cherry-picked-from: @5f78057ffa3e09115bf562aa2fe7b5b435168113
Cherry-picked-from: @3009e689bc0950783ea69528447ca9d5d4b9b7c2
Cherry-picked-from: @56e23a887f46d954bca87e20b8beec791b52f5bb
Cherry-picked-from: @a41be2585fca1d419f8e95f4c951a8612969aa8a
Cherry-picked-from: @3e360ec8cbc823943df599bda72c7b0a52eddb8a
Cherry-picked-from: @7deb543624e5b4f76ecb44678a88a54acf4e8de3
Cherry-picked-from: @0b055303f5e3e5904b6f32429c832a7ff083a70a
Cherry-picked-from: @7178a0d3cb68650ed06fca25e93d4b0103c6de89
Cherry-picked-from: @e2b8ef369d6dfdc5e9c46766cbcdaa94ede00b99
Cherry-picked-from: @ac66d383e7c418008720232224d00613ce6f32b9
Cherry-picked-from: @64e412e57e72dac022bf3732788ce48c40db634d
Cherry-picked-from: @4337b1eba50087d24e56dae59dcc60cd55a31c1f
Cherry-picked-from: @541e69755469fd78fa48bd565b7d3108d7cf7677
Cherry-picked-from: @1b234b910b382dee5f2ba6936a6e0d7eb8a4794f
Cherry-picked-from: @96ed010a37d372246c702ad2cb0e63210a51d017
Cherry-picked-from: @1f1a93a1dc71c3cc0813b0ea557528d24a5c7508
Cherry-picked-from: @f8bcfb9d73f0c65645dd7f2e511172c2e3aa5760
Cherry-picked-from: @771fbeae792c8c368cc266f1f64c42d53896bbe4
Cherry-picked-from: @ce1d95454fbdbb4caf3a2835afcd51761818252b
Cherry-picked-from: @d352be8e99f61d1d8e19f3d6ae58d57f6d86c4d2
Cherry-picked-from: @13894ec5aacfa9ba880c4b7f0196212914f51f9b
Cherry-picked-from: @8a226fffb4ab0d30e7d143d593a325e2dd21aa7b
Cherry-picked-from: @c28a52263b30c0019987b3d5b588b8df97ad33c4
Cherry-picked-from: @4649f82b776c7825f7fedb246ad16cb71a9b9d61
Cherry-picked-from: @2c3c48fd8d8224597a80890d32e2e84264d59aa4
Cherry-picked-from: @97a7dcf48e1cf7e0ddb441d432d67c798f466f02
Cherry-picked-from: @7e2658908ddf4e53c887d70bd9dcd1d1b69e5bfd
Cherry-picked-from: @09df232f3937c044d6b2a6ac7fc9fd5c69441d0f
Cherry-picked-from: @546e4d940a874a8f3c9a603c552ce693719412cd
Cherry-picked-from: @df3a19051d4888e6042a3a8be5a25043333717a8
Cherry-picked-from: @412811ec19c553a7c249f75d94a13a65b61ea2e6
Cherry-picked-from: @2de28379dd3dec7b8201ea17abd262cafab2a211
Cherry-picked-from: @abce64077278dd47c2de85d51c882770d4cf253e
Cherry-picked-from: @eeb140b4f08b12037a86220324eee5ff680bc66f
Cherry-picked-from: @04985dab2315eaaae720ecc58f853a67d0e3f057
Cherry-picked-from: @2ab25babce34ca0770986c19415c0c49d5b43482
Cherry-picked-from: @10ef58dd69dbe456ec309f06e003200341957c4f
Cherry-picked-from: @a53030a7f25a0ab0c39154fb4d9ca70d7e378985
Cherry-picked-from: @313e5bb58bea07a35cb2bcba6c950da031577e50
Cherry-picked-from: @6ba4d0ddc324a2bd7c27ff9c8a06f7f26955726f
Cherry-picked-from: @4863b651c6dc8ab238465ed1c4b8b2556882a0b6
Cherry-picked-from: @94c27f34a1851401b52b19f6e19009c9754f0a2f
Cherry-picked-from: @750ce393bc4088af8d6a719135ce5cb6af75b655
Cherry-picked-from: @0f013575f8e79116cc3ccf1aa3722ee77e0468d1
Cherry-picked-from: @02df22a49548952c8fc010e112ac97215f770818
Cherry-picked-from: @8b2f0cbb6c2a632e3ef3df71d5b9477d5d82ad67
Cherry-picked-from: @4194bba575f7280d455743a5d26db2de9d01a2dc
Cherry-picked-from: @0a93e22b37b5c9367c5ce37debf41fe8d50c9240
Cherry-picked-from: @6c1433a3c0ec2ea992b06c246f9daf6800293836
Cherry-picked-from: @e554eee541a8c5f752c81d354343c346c29af570
Cherry-picked-from: @8a10903cf7118fc685cc5d4885aa94fad70ee679
Cherry-picked-from: @6805a80da24530d14aef11fd1f59727881160e71
Cherry-picked-from: @7959be4336bd4517cb9bb5ca715e7d41f5f1853b
Cherry-picked-from: @9c80d717bcb496ac1aebc49e6613bcdde599a33d
Cherry-picked-from: @e88c6d848647907225a3acf3b8f350158cd09ccd
Cherry-picked-from: @1c0db5b8e4314a9de3b69b409531859c1931d93a
Cherry-picked-from: @b230e524a52a6fd115e51d57d0b2ef56d75b7273
Cherry-picked-from: @029f5d642729052d15a0767f394d78b4a248bef7
Cherry-picked-from: @ad05cd9ab2fa94128566a8c28dd5d076bad45575
Cherry-picked-from: @662031a88e5eac1f31eeaf87293241204e6645ef
Cherry-picked-from: @6da9ba3267b96685150adad46e403b3c2505400e
Cherry-picked-from: @76500c7a785e1491de2b4634fbc76cc66e0959bb
Cherry-picked-from: @3aa4199ef0987b5b09d076104573fecc7eadeedc
Cherry-picked-from: @7c2c20a62fa8898d97be57c27cd3109957158d87
Cherry-picked-from: @85781353ec8c2372ea9097b5999e3af31db64846
Cherry-picked-from: @ed248c76c742bead58c68016a9cef969177682a8
Cherry-picked-from: @1ffe8fde84d1c558a23d3ae985800c7bcfaf06a6
Cherry-picked-from: @fe4368cbca63d5bd177ddff8fdb3a46a0419738e
Cherry-picked-from: @683be73d54dec931268f36b3d6c31aeba649dbb1
Cherry-picked-from: @5a763ac57b9666d74de5f6564869bfae483a0805
Cherry-picked-from: @7df0ced8ac0929611879bdfdd1716b6dd51affd6
Cherry-picked-from: @f6d3aaa442a0f9bb440626cec1365942c75e485d
Cherry-picked-from: @2182137bde62bb3dbbe03e5a86092125b338d1cc
Cherry-picked-from: @763eff8b3268ae54c6fa5463c65e52f7e384c73d
Cherry-picked-from: @03f50365d7c68d61b785014b3d2da41d7b2b18e7
Cherry-picked-from: @77d6274624c22848232ee649134da523eddd371d
Cherry-picked-from: @2497b8147e85ca9e842ae2ef4c3626c07caa790c
Cherry-picked-from: @a71c61122d41a86bb16aa62780ec30bfed611c7c
Cherry-picked-from: @622f13253bc43a531ff5b1dbc737aaf87bac26da
Cherry-picked-from: @5602973b5df0b19961c0bd58eb25de7eb00a5646
Cherry-picked-from: @5f5b409fe9bbc1bdc72ad5fe430a2e0bdc7e4b96
Cherry-picked-from: @57f1ab1fca1a5b7442afb237c076bdc8488200f4
Cherry-picked-from: @14907d3de0a5406666801a32f9b8ffe3eaa86d5f
Cherry-picked-from: @3e010e280a5d7cb53eb9f5b288b3dc87934f864e
Cherry-picked-from: @3566e88c08957bc67469e6848e9b7602d879e963
Cherry-picked-from: @c64f6adc83a53e981f0b449d09d71464aa15e75f
Cherry-picked-from: @e064c1198ebb2c0cc0d547c6d54495f315f47791
Cherry-picked-from: @c081dc52b7c65ad67ba5db66a677933b722c3240
Cherry-picked-from: @71a79bdf5c92603de82f332125f8e762d11cc23d
Cherry-picked-from: @095a9f6e1d0e25a70ac0d8f7d55634fd9bbf8480
Cherry-picked-from: @f90d432de33225628cf765edab38d56ed78559b4
Cherry-picked-from: @75b8117f8352f9c36fdf83fef472a5cdf138001d
Cherry-picked-from: @ba79d903137e35c4089cd7e98610eb11731ebb0f
Cherry-picked-from: @3cc1c7ba836d5c878552e22c792eab18e7d96e30
Cherry-picked-from: @a8853d23efe521aaa5cb09519fa9432fb691d20f
Cherry-picked-from: @31a82259516c09d31340d66e46858750b588ea24
Cherry-picked-from: @c3571d982dd12457dd4b3ee9dbe7f081270338e5
Cherry-picked-from: @7758873d7e0428b3d0b13568adff4fa2a1da200c
Cherry-picked-from: @6d6e08b147c92da120fa8124c96323d0c238014a
Cherry-picked-from: @4f7ee60a8f767c5432a2f1a02a6f7731b202ca93
Cherry-picked-from: @a3474dda33531b9dff46f09f65e95746efbcfc4c
Cherry-picked-from: @b058077b165c209ce1005a8a40c5a541e621470b
Cherry-picked-from: @a0e7e3c3cd02d0f6368fcc17aa9db9c821cebea4
Cherry-picked-from: @9c48321176b2dbf924cab648b7e29b96e90aa6d2
Cherry-picked-from: @7fc134d74e5c8528babf87cb115eb4cfce7c9122
Cherry-picked-from: @81ef52a81ebc6183544ae681f0a922a7aee9e3de
Cherry-picked-from: @4fd75e5fc8ae06a9291debf3f548205489617717
Cherry-picked-from: @387d9fa7c409b8d9d1e1b769f69cc532457923f7
Cherry-picked-from: @5ddbba1c70c86da87ee3bd01bbff4af0c8ee4ddc
Cherry-picked-from: @78869f1517883fdc1561af31652e750c8df4dcd9
Cherry-picked-from: @c51842660f35baaaf3bb85580f137c855c7d1a5c
Cherry-picked-from: @4ae71485e9111bc2eb1c39a40c05e1a812d0f4e2
Cherry-picked-from: @233ef3119031290e117ba8e45e3b2524944f12bd
Cherry-picked-from: @6a27db0cd7f59d80fc5cfa8a76b9c65d8cdbce22
Cherry-picked-from: @8357372cc788ca68a433e1e438d39030cb47596c
Cherry-picked-from: @a20b64cd92716de349c5942bd7248e4d21f8b988
Cherry-picked-from: @0a6140acfa9a0ded0cb3b24a56d212825cb0650d
Cherry-picked-from: @39183746bab0dc1322a5256c808c8750e16aa753
Cherry-picked-from: @08d120e706c1d43144cccfa4efc355620f3e612a
Cherry-picked-from: @45cb02b1dd86c693f4d39c5f4dda96a0e148b6c8
Cherry-picked-from: @f4fa84aea7ae4570a81cda6d12af94fe8dbd46c8
Cherry-picked-from: @afc0172cb1d8837755d4d642752775ac83668263
Cherry-picked-from: @9ebe38b6e36b6128b194e17892e95920cafee42b
Cherry-picked-from: @70da383a613ba9f572b449e5b388009ed02425e3
Cherry-picked-from: @529272d3383e91e365886dbc466b4e34b3626773
Cherry-picked-from: @9183081bf1aaed88ffbd9f62b8fbb5ffcae00fa6
Cherry-picked-from: @6d6825ea182a65425f2a6277ec644228843df49f
Cherry-picked-from: @4bba2888e7c1a1095c9f3839df6ea5f0a4644669
Cherry-picked-from: @631f6f47cfb1a7a0ccd96310f2ad12fb9f353cf8
Cherry-picked-from: @73703d977cad5d4409e7bc7d7a3e29edd29eeafd
Cherry-picked-from: @0cfc80b81c121fb8ee10bcd7d72a86017e475176
Cherry-picked-from: @87b9a063ce86d914f387830aa99ba356137f236d
Cherry-picked-from: @5572e6965a7626cef22de211b7ab6e75bc93490b
Cherry-picked-from: @38bc364aedb7d875564a786905b7bc0f5db9fdaa
Cherry-picked-from: @06459ca0dfba4ca152d2565b6b29efe9f8360b90
Cherry-picked-from: @ad7924b0ac14d8a08134bf857f9b2a7155a778cd
Cherry-picked-from: @dde89d2a834af2ccf9429d5ee9cbcaeee18a559d
Cherry-picked-from: @68d2bd27c9a7c1d27daf4ba68ed51b2fc0ec53aa
Cherry-picked-from: @21f5675f031556eb4db447a5c937754c1bf1c8f1
Cherry-picked-from: @7fa3825e80cb888c58b116066cda3ca870802a9c
Cherry-picked-from: @50c3321d2e758dc1516bc6f31fea860f1de8927f
Cherry-picked-from: @da34f81ce23744c2a69e37ab585e2cc95b6adf9b
Cherry-picked-from: @880bc969f90ba8c0a4f8f6b5ef52f6e9b5728638
Cherry-picked-from: @7f042758b05ce3b4946a128f4d3b1a717515ac56
Cherry-picked-from: @d20363bcc9749f371e82e7646957e0d5ae925e60
Cherry-picked-from: @dd85ff4da75a5f047a2fa85ff8ac4b1178a42fe0
Cherry-picked-from: @ed06d21013f2128639a32bbf1b9d345877177a37
Cherry-picked-from: @966b8656d2d497fa35b0c2e2d7cad128cd0b7e67
Cherry-picked-from: @10660fe47dc0222a247058b355d4a201e69f4c28
Cherry-picked-from: @b0dd757ec8a4ae90815a54bd963aaf0f7465e98b
Cherry-picked-from: @06ae5e9d21ea2be50679b5ef8bd07a7dfbc3fb64
Cherry-picked-from: @63d82a6299d8eaab5bd2121945b27bb5eec1f3d6
Cherry-picked-from: @5ce2ed3bd274fa32983b55638bcc7fa6a19a7b02
Cherry-picked-from: @7ab074631b5328385226ec50535b219fca7a6d69
Cherry-picked-from: @23deb3da98a9c20b2799d0ce712f9f724fc95b2a
Cherry-picked-from: @1dc3104dbf8fec8726f141f04f1f3f5a34b61052
Cherry-picked-from: @503932919fc1075075dc6252a60234c1031d1f08
Cherry-picked-from: @7e9c46d7dd7f8a0070c99e1ab089091903d8cb17
Cherry-picked-from: @e820c255bc79308dd1098246bdbac54a9b16bfe7
Cherry-picked-from: @21bc5a90eced9596da7e7fee317b40c0318a5f51
Cherry-picked-from: @f3da2920974634b2cf2c391ec93ef66c99609a13
Cherry-picked-from: @423f1e994e0c68fbe7e7e4e84175cc1b44dbe260
Cherry-picked-from: @e36f16e750ef08d652dd692d137636672e8f80c9
Cherry-picked-from: @626e3015027c53de7e36c9defc3ab5699a45364b
Cherry-picked-from: @a1a8b74e9a57ea80b1a2b0a2ae225a7a280c142c
Cherry-picked-from: @ec89357547ec106238af8594ef1fe21c29ef6d44
Cherry-picked-from: @6cbff9e7d39cfc29c8dd0f61f06d505ef35d6f98
Cherry-picked-from: @d2445b5fcd68ba96654de3a05a633338a6b713ae
Cherry-picked-from: @dbe77d0425ff93957eaeede03a8883b40340c0f0
Cherry-picked-from: @2bbf33a9ec4b15446878f840c34092f2af324f08
Cherry-picked-from: @223ae42c79b2eccb890b16e433a1d16929f894c7
Cherry-picked-from: @0bf11c1d69fbcfdaba564d5e6d88ee2210be7501
Cherry-picked-from: @6c866b8543beb3ef9ed058b017d008734dd0e9ea
Cherry-picked-from: @dd9fce1686f66977275565c17a7c9c21409da6cd
Cherry-picked-from: @049bb37c6296d6524e6ce041b7ae2d762608c134
Cherry-picked-from: @0bc9c065f269068459fbb14cb5d548d4ec0d7bae
Cherry-picked-from: @ac4aead8a73f18125a38b890fdd9d82d52fe7140
Cherry-picked-from: @61ccc5bedec974b77d3307baed10cb5b4b256354
Cherry-picked-from: @64c69c3fc963ea9e59b4387b105353ae72a4b8bd
Cherry-picked-from: @357ce71988ff1b0c4a16d95da9847bbde9b37160
Cherry-picked-from: @f2bd76cd1a4b463799a452e24f470a0db87a44b2
Cherry-picked-from: @5dd22450942a13345718349f67d167ec6757479c
Cherry-picked-from: @78a4d12e9aeeb32b992124e7beb27e0f5f41ab42
Cherry-picked-from: @00b57145ff01bce2324043369c841bbd1bb82780
Cherry-picked-from: @1116ae97662cce066dd130bc07d925fdd1dd3f32
Cherry-picked-from: @cc88b4a72df055e5c340a8d176b62b7087a871c2
Cherry-picked-from: @c79ade10e6c3711354cb12d9ce3715ed1a1fface
Cherry-picked-from: @aa2d5aaa0cd67169487cfc73805145411c56b58d
Cherry-picked-from: @2d100157bd1b89edaa69f064b6314c499ace3629
Cherry-picked-from: @be2e6ca0f6a02ef457d33fbc2bd69797bee613b1
Cherry-picked-from: @efaa4dc5b3ee1c7c1e482129e741917b419b17c6
Cherry-picked-from: @14d6b762fb2ad24f402f8cf9c44d6a4c78f25aaa
Cherry-picked-from: @c1ef5748ebe6c29229d9bbe57ecba8f67a3c3d19
Cherry-picked-from: @618d35f933ac8184aff868ac990b9c12833d10e7
Cherry-picked-from: @c601dda389989e96280dbb7a850fad838ef97c3e
Cherry-picked-from: @2280fa00220b47989e4c596237f31c9ea76eb41e
Cherry-picked-from: @a6bee2524784739e46d645d52e686c3c0c31cf13
Cherry-picked-from: @f1df31eeef1c27c2fda1ea4b29bde4f2bfe514d0
Cherry-picked-from: @6a57ede661e485301f8898bf97f8729bc493e5cd
Cherry-picked-from: @c9de17fc20d1e502326c2fccbf0d3f2a16fae1e4
Cherry-picked-from: @60ee5f661fb7893dd88ab17cfb6e6afaafda67a4
Cherry-picked-from: @55c52b90948f82323d6c0bcba31a563477049649
Cherry-picked-from: @3486bff7d5d8542bd8b686f50dcc2fafd0271e63
Cherry-picked-from: @79078f6a70bcf0eac8153544f13a74fb6ab710e2
Cherry-picked-from: @4b001c793448c0326b902b6ea02cebf22c9d183c
Cherry-picked-from: @da9e0b658d584032ed18b3ded5130d1902775db7
Cherry-picked-from: @e793e3873f6ea7d7dbd7741f810dc1554ee0d8ef
Cherry-picked-from: @c974adf10d9f325dad175955094089e9d3e5efb2
Cherry-picked-from: @45510084cdba5c0baa9685700b8d1e5c4d95570a
Cherry-picked-from: @54419a826b2025ac650d21ff8d095cda0c3c14d9
Cherry-picked-from: @01c89a79853031a6149b64527812b3b07b72c320
Cherry-picked-from: @4f5e3e1799c36cefb7c236a8a72763895910dd5a
Cherry-picked-from: @03c6946125ebbc9a06841ca7210e845b5a5a80aa
Cherry-picked-from: @143530407dd17530657d014fe37e0a16c209865a
Cherry-picked-from: @520d753b277b39ebb65aca3bac7ffdd213923254
Cherry-picked-from: @43838b1b145d3921f7939a2abc3bf274efe4ac55
Cherry-picked-from: @2ed5ad36ae210acd3113b0c23cc5089534a588d4
Cherry-picked-from: @e32976f8cf48ae184c097b72657af5a8800cc798
Cherry-picked-from: @38a6415a701cf4bfa7067bdf5d938e0dd7ac5a74
Cherry-picked-from: @57204b4fa9deff99b3bbae4fa76636bea7096704
Cherry-picked-from: @80a2af1d656e1bcd773de0c8aef5fdf74add6c7e
Cherry-picked-from: @f6868b7e42db7dc6a8a1d22daf02880bafd5dc42
Cherry-picked-from: @c1e56978897e35b46b68d3be69e4fefd09f4b4bb
Cherry-picked-from: @42c8c3c983c61d5807bec836de6306c916aae9c4
Cherry-picked-from: @0d776c87c389bd1157a57afabd116bf6424ddd2e
Cherry-picked-from: @3dec814fda938c44cafbcd73ba8525d54cf5c469
Cherry-picked-from: @73ca53ee026db82b559204f6e8d667b7caac549c
Cherry-picked-from: @e5919bc52474377055ee65b3e1be228eeb2ac24f
Cherry-picked-from: @13505c7392421473234f4fe790ac1e3afcff023a
Cherry-picked-from: @026d8ea534beda24ba5c38a30d5783b1f3e38174
Cherry-picked-from: @5fb7a1363f25c6a23eacae034a1ee36768650eee
Cherry-picked-from: @f8d03022cf1ed1f81372045c131d8ebfb406d5af
Cherry-picked-from: @be4fdb9222e8a40667b8b1f35ef29f5ef09bea05
Cherry-picked-from: @6f795fd60ea707a402c0eaf7fba1c2d83b57daba
Cherry-picked-from: @228448e6b30c8601ea50a764d19f08306f314474
Cherry-picked-from: @315cee96b9f853d469b0525a9d2375c9e412eb3e
Cherry-picked-from: @9887311de33f7b49f0fa4b8f23ed84de4b8cd652
Cherry-picked-from: @ff0481ad65786f74add81f67aa289b700e290f06
Cherry-picked-from: @cc35627c8fed73f8eb82ff2f4afc43a62c58419e
Cherry-picked-from: @d28cb8d821ea004091cd459f80f889ab3a8e335d
Cherry-picked-from: @e184cd97cce9c290373dba470a2f15b8aad826ba
Cherry-picked-from: @1ff10690e730b197cfb0eb690e9831b48599a5c5
Cherry-picked-from: @e1ca5d9cc4b37646e8976637e34c23ff155106b0
Cherry-picked-from: @769332c1a71b496f7f0b92325e582bace40f2719
Cherry-picked-from: @214c7a481c93db720d951cce7e3e247644cb677c
Cherry-picked-from: @52ad686ab5ec290f6fe252254f9b2cd04d140a9f
Cherry-picked-from: @e56e4923bd0837721ba871f89fb4e1ddd699f581
Cherry-picked-from: @276803095d2dbe4db5e503153d731c5a9c4ddbea
Cherry-picked-from: @d08d43fb1a6bdc9d5fa3954725e4f6a10303500a
Cherry-picked-from: @88139c4271a7a90e4575ee7ac00f0491dd343570
Cherry-picked-from: @c08d556ae41bfceec87d298fba8385aff501dbf4
Cherry-picked-from: @282e336243893cba0cb3b3cded9ee5ece83104c3
Cherry-picked-from: @e5c03ebea750fc7611ad697a03b5c28ec8c054f2
Cherry-picked-from: @201964ce6c770fc27e8f91a3f00e1a7ed0a4f6c4
Cherry-picked-from: @5747700b3cd11239349d0fecd732b205a77f3563
Cherry-picked-from: @f8f6ae46737ce16d78ebf37cddbab9f45888129f
Cherry-picked-from: @d698d8c5a59539a2c2a9268f462049124efa030d
Cherry-picked-from: @5699b3dd27bda202ed680aba6ac53fba0ebbe7b9
Cherry-picked-from: @1b9704df4d4a6863863bb04efc9e2b682b5309fb
Cherry-picked-from: @7bb36efd7b54e2f494518a45a36162d1b6784120
Cherry-picked-from: @9c047c5423c59175ed3e12b43c0ca07a686ecb59
Cherry-picked-from: @1843248c69c33d460ece60cea94b551242b2ee4a
Cherry-picked-from: @9053f551cb5d4f6f41626eabc934370889cad901
Cherry-picked-from: @1eb810a5e3280405c8342af7977972e785ca9bbc
Cherry-picked-from: @168fa9d4338fa67aaa21cdfa29ad7bc150527f29
Cherry-picked-from: @e4287e0938e80a0ca410380edffaaba373d0f2b1
Cherry-picked-from: @528edce5b96636358ee352d41d4098f47a148279
Cherry-picked-from: @38616c7c9566a88bea5f486bb27b6cfacfdaebae
Cherry-picked-from: @ef0812beff4535e1dce1164628f43cd1679f51f7
Cherry-picked-from: @58f6362921893067c716600e033b7ad8c0371b6f
Cherry-picked-from: @bb13dd0c01a88c7ae3b3fc2966d33d00bbd3b9b3
Cherry-picked-from: @68f3e537d313e81ad4278b4624cc6fd9448f852e
Cherry-picked-from: @0956de731653490e67a96b9111caa85616a65d0d
Cherry-picked-from: @be6716c7aa50b88e5de3467117393a01fbc6041b
Cherry-picked-from: @9c1e9c5263c51be6e32a3ed169be2d0a4a0859e6
Cherry-picked-from: @7d90dff8fac5d2c5c11f86a3c3c9d818a9a04ac9
Cherry-picked-from: @c0e4721712f3783108286a34d5257bd72b9e4122
Cherry-picked-from: @449127b47407167764fbfb2602bfeb8765d34efe
Cherry-picked-from: @9648e7fecb282a5ea7d7b28c0760afafe07cb0b7
Cherry-picked-from: @ec1b80809df2b717c321c4bc504ecfc4254e7a96
Cherry-picked-from: @535475e4cba8b8556823a8356f6cc1caa1de2d56
Cherry-picked-from: @93d829b7f669be73f67478c9c03381cfa6b272b4
Cherry-picked-from: @1373821470f1f23ade60f44fc752d8fe1a3da5b5
Cherry-picked-from: @2847ad1f8fa65386ed375b3efbd33f428cb79aca
Cherry-picked-from: @b531af82d5b5cf20ab3c6b3c83bb1778ad886d32
Cherry-picked-from: @8c8b0ab22448679d9ea40969fbf3c8a38d8c6759
Cherry-picked-from: @e510132f3c965e0d939c438b4e8513dd0a634e91
Cherry-picked-from: @d46f3bd7394cc4c7694ef091c3db5578477920e1
Cherry-picked-from: @bc36ed8e1e37657318cd0eb964f0a691881a8528
Cherry-picked-from: @2971c523432d7a367db73e6f528e16fe4202c28f
Cherry-picked-from: @4db3fed2996e44e18d876b00afec99197fb7d0d8
Cherry-picked-from: @774b35198298c967d9efdabac2030924657d3109
Cherry-picked-from: @85e610e4e75a2a41a12cb4962249ca39c12c203f
Cherry-picked-from: @527a1919ea2064052fa7601f3a7cd32918992bd3
Cherry-picked-from: @f9588da3e01ccabe5eec09b65a61afc51300031f
Cherry-picked-from: @ce486292a183a0a87f17def6f3e315c9c02532ef
Cherry-picked-from: @99c7750c2d23d593826caeac97dfa23c430506fd
Cherry-picked-from: @916db21fe5e9c38592ab5fe4d10a07905f96b216
Cherry-picked-from: @3a456678ee3516679185a0814ac61d91128fcb9d
Cherry-picked-from: @0ff82497e9a27db4a7ac20fffa735d84831452a4
Cherry-picked-from: @990d0d7261c962fc28d94a63e6639b891b2c85ac
Cherry-picked-from: @6bf07b5075f2565d670f437617c2a7a71058530e
Cherry-picked-from: @6bec21bf006db84b6f676902d62f10d575b41485
Cherry-picked-from: @6101c023bbe8efcbe5ced7da48d7cb1a09637aca
Cherry-picked-from: @73032534276d1dedf645e785f02ec2a3c0a2cf89
Cherry-picked-from: @6b6942552d847a047d70f3c4947b796e3e00047c
Cherry-picked-from: @f404ff32d527d2cbcccd7dc1beb30a0d024d6c0d
Cherry-picked-from: @59cd98068fdbc559810d71fdcca4f6a2598aa1f8
Cherry-picked-from: @4234d9b42c49a60f77f9db9d4a99589b85bb64aa
Cherry-picked-from: @a413da9ccaaccd6665390f0a748259811e89386b
Cherry-picked-from: @3e8bf845cbeb1e5da16e9b2b16d4d87621966f5a
Cherry-picked-from: @8448f48cc57e5dccb4d49a579fa2fc6a755d3432
Cherry-picked-from: @1561c6a71c56d89bc85445260b4354644e31c9b8
Cherry-picked-from: @1399ca5fcb51052a8a811e9577ec4fcde895b2b7
Cherry-picked-from: @f84a41dcb881c72adb5fccace6848a4a6d6e33dd
Cherry-picked-from: @7cd0acf8af989be11695d0a5a864d46815619ded
Cherry-picked-from: @f036ed27f427f53d3888f63bc09b77913f0f8927
Cherry-picked-from: @4f6955fb1166de18ee7c7d00f13f890acc3e27e1
Cherry-picked-from: @795f1f438b1dc881c194b23bdfeb7c855b5b7566
Cherry-picked-from: @e1b0e74e78c20e4035d402b5b4ed46d7d96ce221
Cherry-picked-from: @ebee4e2210e1f282a982c7ef2ad79d77a572fc87
Cherry-picked-from: @094a0cc4126574fb0aab2bffeb28a0c512f5045e
Cherry-picked-from: @df76e0f44be2de7ede3e5ad975f6f788ab1db898
Cherry-picked-from: @f2107a53cb2b52d307f894c65f1999c52a7254b5
Cherry-picked-from: @9b22bd41d84ed071e62e0597e2db2d2d0e9ef626
Cherry-picked-from: @94a48912dec09ced73cb5d2f1899cf0d3221305e
Cherry-picked-from: @63c5932e845dbc0768462476925a28357ccc3ff5
Cherry-picked-from: @00b730839653150fb93d690a18bc1d052100e530
Cherry-picked-from: @2b980bfceed6eabf007c35bef2eb2c7456e07adc
Cherry-picked-from: @a3f09d519d2237304ae1fd671fd51dde93bfe4fa
Cherry-picked-from: @8a9dee9ac89f2a154b77aec2865c9f5c17454730
Cherry-picked-from: @40f1aad0191947cd74a4fb2ce3d53b753c6bd2ef
Cherry-picked-from: @91f055c10e0b0f46ece48c3dd718671b678bc3f6
Cherry-picked-from: @a53de5ad513021cbe085e411c77cb42b8be842e0
Cherry-picked-from: @b8861b4815600e0744a77aa26c53a093fd4ca35d
Cherry-picked-from: @dc3cb9349a7c8fb712e77524107d054a623c2920
Cherry-picked-from: @47a78a03a3046af4b8c30db5ffc6c4b2aa2810e2
Cherry-picked-from: @2f9e2f500f928f08c33cf478b2d2856fc0f5624c
Cherry-picked-from: @5f0c46614624b95326e266d05902b82d5bb211b7
Cherry-picked-from: @604c2636b97270b13118a36cc6790704f6f7f13a
Cherry-picked-from: @74cc748ff7dace597a247111b2be8acef31aba7c
Cherry-picked-from: @eef0f5bfbc8e1208f99af354c67c77a94d027f68
Cherry-picked-from: @d1df3f37a674f4535d27d4e62dde61b0a5a4ba45
Cherry-picked-from: @61a7d856e7f8eee5463d6bddad1fda78a69f500a
Cherry-picked-from: @7c3efaeccf33e66b071ead6bed3fc18ac868690d
Cherry-picked-from: @34460f24b8288b3494d981bf0dc9ade3eee0d3aa
Cherry-picked-from: @9c086f26a04525156a752063601e05771eb94496
Cherry-picked-from: @1038990bdddb359c647e515fbbf2cd2850ef821d
Cherry-picked-from: @0c070ccd530112fef93d172ed99ae79bcb04fae0
Cherry-picked-from: @03b405659b77276c0fa260702e652814dcadf0ea
Cherry-picked-from: @2ef7b139620cd72a80f6372b05e680600d843476
Cherry-picked-from: @5f0f69b2c788b495e5f3d1384e1e0ba5306a30be
Cherry-picked-from: @7e1bc4677f3d31f4f34a12bfbe27194b353fec1d
Cherry-picked-from: @3aa76a8ce77a1e221758993d774ad5324f049692
Cherry-picked-from: @4fd17021f2e9dbc8d78ff534829cb958fd2e7e26
Cherry-picked-from: @167a6ebed9004f2cfa8c42d9d5e45fa302f5d2f8
Cherry-picked-from: @85c5ec8065b41d3c22f00e223ef65521f7ab8a04
Cherry-picked-from: @790747478e121cd627f9c07f2a3d56c473101c2a
Cherry-picked-from: @444e3eb9e32df4197ed7d885a9a19b478092404b
Cherry-picked-from: @bf22e9461e99b9a157e0d971e3b1fcd2bb1e4b52
Cherry-picked-from: @7efa79121aae66f501dc72cc88e03abbc9ed68e5
Cherry-picked-from: @d988e39fc7a0263aee1dbf6771c02b522ffab159
Cherry-picked-from: @2c073e7bcbf94a42b6d0abd7174ab6f58774a821
Cherry-picked-from: @588c8be6ffc3e644ea2287ccaa9b92ebdde87bd0
Cherry-picked-from: @1a3bde81d88073d257a11967a58df1bfc311cd07
Cherry-picked-from: @c21654e1b9cd143ba7a4d6e3fdda0eff77d37f7c
Cherry-picked-from: @17143ed878a34b8de10d7a2b79bdf3146a2ba592
Cherry-picked-from: @909ec6b416924c4dad0bc898d48e0bcc5b74ad79
Cherry-picked-from: @23d700b090a72b54a3ddca79965bb229fa816b86
Cherry-picked-from: @97c481120f0a32c92a29ea8c002e3bcd09c652ee
Cherry-picked-from: @6372062be4e963387dadc87b475c9729454c1def
Cherry-picked-from: @d49c1688f759cfd387712535e14828e43138f426
Cherry-picked-from: @477cea7709262b39b5d2114bbf05cb7bdddb30d4
Cherry-picked-from: @5311d48c66dd5aef3d34225676c07e9bf3cf2982
Cherry-picked-from: @355051f40190f2482acc584bef1dd7e939f9fe07
Cherry-picked-from: @2cfccf59c77ce6669c895e290433b754a92b9610
Cherry-picked-from: @8ab2d886eba78cc0e9389cfb0e3114d34c9b838b
Cherry-picked-from: @a24325f40c39d2fd0fdf95bf40db76da5ece18e8
Cherry-picked-from: @fb4b6eef03f783422bb856ab64c0c43eaf507735
Cherry-picked-from: @b7dc23b403d736e92a963759f764e57fe4f67694
Cherry-picked-from: @c4323db30f6a2eddda52a4ba07c806363af3ff54
Cherry-picked-from: @f9408e57d29fc82e2881fb6b357efa3102ba8f0c
Cherry-picked-from: @5a5a66d63d345aefd13c3a39f6aa9330aea02869
Cherry-picked-from: @3be44b104449ab59b5ba3260d50539d1868c4eef
Cherry-picked-from: @580e00d91bc3cfc8712f093b3c7d3eac1c05548f
Cherry-picked-from: @48a9aa152c76a38ab396a96ceca767047a7a483a
Cherry-picked-from: @060654e94774f75f53462089ee18b69a2ce6f751
Cherry-picked-from: @7c24aab9545ed9185fa55d9634f67a5abf072843
Cherry-picked-from: @59eaeaccfebccf54f5c3a6bcb0c2b3b3c80fc5fe
Cherry-picked-from: @37df574da0c02c68a75751ea1a1776ab33ff4c3b
Cherry-picked-from: @64c1fc098a8b95f03e3728bd02cbaac096648642
Cherry-picked-from: @253ec7452fe596d64e679ea116765dd73b7144c7
Cherry-picked-from: @c4b866855a148b01251750f6367811cf2102ad7f
Cherry-picked-from: @50c856978619b6cac4cc29e8603ad07f21f5a8d6
Cherry-picked-from: @789730d1a3004d16a45d9a52c385d2818757a82a
Cherry-picked-from: @8cfcce0849c970ea755dde7dd42dfb3ed3e0b7cc
Cherry-picked-from: @610d836151b855804a907f877028c11d55291e7d
Cherry-picked-from: @c1733d700df037d7105f80c1741dc618e87968c6
Cherry-picked-from: @23a3211c2924480f3ec9ab870d1092214c97fe99
Cherry-picked-from: @9b7aafa141e3c96f4c8d87da255513d31d33f02d
Cherry-picked-from: @9e087f66bebef2850fb7891389f5578c3f0cd5b7
Cherry-picked-from: @78666551762e17d23f9ca843e8c33f45ac9ac5c8
Cherry-picked-from: @ef53926542d125b3eea9f1f2dd74b40cfbe5df01
Cherry-picked-from: @58c26ad706116cf18bb20609a521e88080fc5415
Cherry-picked-from: @141d73ddf4523ef224e39658f9f10a977657a40a
Cherry-picked-from: @63997aec23878cd55a368eb57fa2b815736d64b4
Cherry-picked-from: @6646ca61cc454e4275e73645dba5a0efb7d85b6a
Cherry-picked-from: @4a95e6529f82a2c56f5b2cf2d8be3e5019740824
Cherry-picked-from: @9e29511316845c1c9d71acc9a9b2cde4dc41430d
Cherry-picked-from: @c6726354138bacebd9ccb9963cb15291eae69c49
Cherry-picked-from: @31d739fda2d79093bb26f10991668fd0e5380dd1
Cherry-picked-from: @e3d021163cdc7f0fc8009907b59abe053df7a41c
Cherry-picked-from: @58313fcd0546087234427383368379dd24ed5ea9
Cherry-picked-from: @647fb9cc3e8134b03a9abc1067d4d31254d9b24c
Cherry-picked-from: @9f8cf7f71a6fa77bf1e7e7e5d49be8f65b828c83
Cherry-picked-from: @0aff1c76309924525ee616cace04a604d789d5fb
Cherry-picked-from: @c94beb03b2389b81dac0d08f367940ca9af70aef
Cherry-picked-from: @39a8dab0da606e10fc98a0a83423692f637f5194
Cherry-picked-from: @8139f83175b14067021ab3f7433181f77f7430c1
Cherry-picked-from: @ea15819ecf2b2a2dee919599b2b38e42277cfabc
Cherry-picked-from: @a724bbce1a63ab361f5f306f747fb4c3ac08bbc4
Cherry-picked-from: @4d8106eece6e3b8c9e6bb116d98e287bf8585e16
Cherry-picked-from: @4b125762f6bbaf5a33fb29ca2bdfaad53d9f1b43
Cherry-picked-from: @829ea70519c9f9abed646f8decf8bbb0402c09dd
Cherry-picked-from: @7b61b025ff903857cf12b4df062fab118f418655
Cherry-picked-from: @2145eb5908c0f625988f2d284db1762ee3af024e
Cherry-picked-from: @6636ca87f47fb1822f491d315380c8ed9988fa9e
Cherry-picked-from: @bdf2c265a7b1b8c004d0f71e1c849d49cded5507
Cherry-picked-from: @6d9bf6de9383d9f91741b17767fc8d30f9d0e0fe
Cherry-picked-from: @ccf16cd8892402022439346ae1d23352e3707e9e
Cherry-picked-from: @272d6ed24b09e19abcbe5b8cf63aebe0c79030a5
Cherry-picked-from: @e4825a0f93856f6417cabe77bb9aed16fe027dc2
Cherry-picked-from: @3983928958b65b3fdd866001cc9cac93e55c334f
Cherry-picked-from: @0d80897476795607ea27f622c8d4a261cfbe0005
Cherry-picked-from: @4b2aec622bdf1ac6e41d840a685c70cfe0ab496c
Cherry-picked-from: @0f56b16d47f1f09f734b881011074d1b264213cf
Cherry-picked-from: @ff19ae17683da7f33b637f1454b15eeb81ab9e67
Cherry-picked-from: @8124253cdff4e6a3511ca1989e9b4f68b8511db2
Cherry-picked-from: @464f3da53fff565d9c84e9db5c2fe4c3ac95fb97
Cherry-picked-from: @025bdc7e8f1544bbd52635de2dde5fdc09708374
Cherry-picked-from: @de564689dacdb8566a34847464f7379d405681c5
Cherry-picked-from: @dd7b5dc46f5c823e9b3e0b97adc73bfd432e0378
Cherry-picked-from: @3d3f292f66536aca8715416cf755529b41790aad
Cherry-picked-from: @5a2a4abc120d60d2916ecf7eac6531ea9d982e27
Cherry-picked-from: @b31b68108882fba2163f73eb110574e5684df88e
Cherry-picked-from: @ba09092a4438f7a164e836c259592fa0f71a82c2
Cherry-picked-from: @7d5a90e5896a6c741fa68351e8a124547f4d2bde
Cherry-picked-from: @45bfe3f44b8b9c700a496795093edd22f84e374a
Cherry-picked-from: @698192225442cd55b4e7939cfa3e96b474ecefea
Cherry-picked-from: @77f145f1dbb4678882b814f7cf3b1f9ca613e51d
Cherry-picked-from: @681d16a892c79ef6c80be272ef4228eb97340fde
Cherry-picked-from: @f23a069d37b9bce1d547b7230a2b7ba42ea568fb
Cherry-picked-from: @dcdfed995a1f9962be9b6dba4657e971dc0eb1c0
Cherry-picked-from: @90a0d50ae9476f6e1cd2db8af395a7a8e99efd0e
Cherry-picked-from: @2f65ae1b80d320ed2c2c5835f3cd12565e6264a5
Cherry-picked-from: @e7422716bbf4d5e51947cc350ae89675e81ec74e
Cherry-picked-from: @af63b729010d3e2b2d7c1ef5a6ee3b4b6211e0a0
Cherry-picked-from: @bd21442f7e606e1baf816ccf2e8fa8a4dc9bf9f4
Cherry-picked-from: @e99963100d22c870633ad890d766a98ab611a36f
Cherry-picked-from: @0e4c072f37da76ea328265ed8b0eb5924d3813df
Cherry-picked-from: @f118191182a5d93f8028aac2883d1a43c93f5e89
Cherry-picked-from: @ffe24955c81f283f4a9f95afad91b7ac1a6752a0
Cherry-picked-from: @ab5aec137c9ed9e85277a471a2acc1f1098bbf1d
Cherry-picked-from: @79f7dbfd6ecd0c3a607ed9516eca07e5224c3a72
Cherry-picked-from: @4e912bffd899784f41ad45647625c7adf897bafc
Cherry-picked-from: @a14ad01d66f8c2ed62dad23e9de6f443c0027968
Cherry-picked-from: @11720510f5f4d35d9d97e4353950cb0a3ca1bfe6
Cherry-picked-from: @4b5e801d1bf62a27feb846aa7431ceb2d7824d03
Cherry-picked-from: @05634eed1692a428d7b7b9ae049980f3c971424e
Cherry-picked-from: @dbc367e50ad91b455f393a8caea9a89fa715e340
Cherry-picked-from: @d95dc50e0a098c2b5ed2c923de796d7a1faf93c1
Cherry-picked-from: @60d4c5a30bf6a88f1d1ae4a8900a7b6e948e0620
Cherry-picked-from: @df284fec27fc9995ca29ad8a74e2e8128c866c3b
Cherry-picked-from: @a32c7e16d20442d5205ffcfdde1459a38f625cef
Cherry-picked-from: @5ce3eb3ff3e462cf366f12522da10a73faee892a
Cherry-picked-from: @1c08455848f069b7bed7a67d4fe234c858998af7
Cherry-picked-from: @b1c03715fb75c96585f51d53b9925daae6f3caf0
Cherry-picked-from: @144b95ffcec65c2fd5b530d689b5ec299aa3eae3
Cherry-picked-from: @bb365dba733341c3767a8960948daa25d4392a29
Cherry-picked-from: @c9ba985839678659e002bb86d95b6893c2f1e9bf
Cherry-picked-from: @0a0ca804aa184816fdbaa5cde0dfae1f0e5160e4
Cherry-picked-from: @60104de428613b4cae65695a27b16c92b4552d5b
Cherry-picked-from: @28ab5061bf3dac078be2a4d0bd308c93e38339df
Cherry-picked-from: @cac1c62208837240cd46496b3d41bd469b1fcdd8
Cherry-picked-from: @da948a8073b4eea86d8c000ba4e88d542c268411
Cherry-picked-from: @951f3f992b683689993c1c3055dcb371990f2af7
Cherry-picked-from: @7dabcf287db205795a7ed5f15a8ea84968d841c1
Cherry-picked-from: @ab1da26f4dbda2c35a2b6ae1066511fcd5f2b97e
Cherry-picked-from: @ab62f3b9f411b742a873485eef0969a2fdef6a1c
Che…
@alexey-pelykh alexey-pelykh merged commit 0667aa5 into main Apr 18, 2026
12 checks passed
@alexey-pelykh alexey-pelykh deleted the sync/b10-v2026.3.22 branch April 18, 2026 20:28
alexey-pelykh pushed a commit that referenced this pull request Apr 18, 2026
Cherry-picked from openclaw/openclaw@ac850e815b by @vincentkoc.

B10 sync to v2026.3.22 (PR #2400) was meant to include this fix
(upstream commit lives in range 23d5d24..4c016f5) but the
relevant changes were silently reverted during D.3 build stabilization
and the EXTRACT porting for package.json hunks was deferred.

Changes adapted for fork:
- Add extensions/tlon/src/tlon-api.ts (local S3 upload via AWS SDKs)
- extensions/tlon/package.json: remove @tloncorp/api git dep, add
  @aws-sdk/client-s3 + @aws-sdk/s3-request-presigner
- package.json (root): remove @tloncorp/api git dep (fork-kept from
  prior batch; upstream removed earlier)
- extensions/tlon/src/channel.ts: import configureClient from
  ./tlon-api.js (fork-divergent file; upstream edit applied manually)
- extensions/tlon/src/urbit/upload.ts, upload.test.ts: switch imports
  from @tloncorp/api to ./tlon-api.js; keep fork's
  remoteclaw/plugin-sdk/tlon path for fetchWithSsrFGuard
- Drop extensions/tlon/src/channel.runtime.ts (not tracked in fork)
- Regenerate pnpm-lock.yaml

Closes #2362.

Cherry-picked-from: openclaw/openclaw@ac850e815b
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
alexey-pelykh added a commit that referenced this pull request Apr 18, 2026
Cherry-picked from openclaw/openclaw@ac850e815b by @vincentkoc.

B10 sync to v2026.3.22 (PR #2400) was meant to include this fix
(upstream commit lives in range 23d5d24..4c016f5) but the
relevant changes were silently reverted during D.3 build stabilization
and the EXTRACT porting for package.json hunks was deferred.

Changes adapted for fork:
- Add extensions/tlon/src/tlon-api.ts (local S3 upload via AWS SDKs)
- extensions/tlon/package.json: remove @tloncorp/api git dep, add
  @aws-sdk/client-s3 + @aws-sdk/s3-request-presigner
- package.json (root): remove @tloncorp/api git dep (fork-kept from
  prior batch; upstream removed earlier)
- extensions/tlon/src/channel.ts: import configureClient from
  ./tlon-api.js (fork-divergent file; upstream edit applied manually)
- extensions/tlon/src/urbit/upload.ts, upload.test.ts: switch imports
  from @tloncorp/api to ./tlon-api.js; keep fork's
  remoteclaw/plugin-sdk/tlon path for fetchWithSsrFGuard
- Drop extensions/tlon/src/channel.runtime.ts (not tracked in fork)
- Regenerate pnpm-lock.yaml

Closes #2362.

Cherry-picked-from: openclaw/openclaw@ac850e815b

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 19, 2026
alexey-pelykh added a commit that referenced this pull request Apr 23, 2026
…2026.3.22 sync drift (#2508) (#2513)

Upstream sync `0667aa5596` (v2026.3.22, #2400) replaced the config
sidebar + nav + subnav + tag-picker CSS family with a flat
`.config-top-tabs` horizontal bar as part of a dashboard-v2 redesign.
The fork's `ui/src/ui/views/config.ts` kept the vertical sidebar
layout (with icons, tag picker, and two-level subsection nav) —
features upstream removed entirely. Result: settings view shipped
with 21 orphaned class references (reported by
`scripts/audit-css-class-drift.mjs` cluster 1).

Third confirmed instance of the "definition-site sync without paired
call-site update" variant documented in HQ #57 (after #2493 and
#2501).

## Approach

Fork-owned CSS restore (hybrid pattern from #2506): add a fork-owned
`ui/src/styles/config-sidebar.css` with pre-sync rules, imported
AFTER upstream `config.css` so the `.config-layout` grid override
cascades. Zero TS changes — config.ts kept as-is.

Full TS rename to upstream vocabulary (sidebar → config-top-tabs)
was rejected: upstream's layout is horizontal flat tabs with no
icons / no tag picker / no subnav. A rename without restructuring
would inherit upstream's horizontal layout and break the sidebar
UX. Full restructure is a product change, not a drift fix.

## Changes

- `ui/src/styles/config-sidebar.css` (new, 372 LOC): restored rules
  for .config-sidebar/__header/__title/__footer, .config-nav family,
  .config-subnav family, .config-search__hint/__hint-label, and the
  .config-search__tag-* picker family. Includes .config-layout
  two-column grid override and mobile breakpoints (768px, 480px).
  Theme selector migrated from pre-sync `[data-theme="light"]` to
  current `[data-theme-mode="light"]` convention (matches 30×
  occurrences in config.css, 23× in components.css). Hardcoded
  legacy brand color `rgba(255, 77, 77, 0.4)` in
  `.config-subnav__item.active` replaced with
  `color-mix(in srgb, var(--accent) 40%, transparent)` for theme
  consistency (matches established idiom, 28× across styles tree).
- `ui/src/styles.css` (+1 LOC): import the new file immediately
  after upstream `config.css` so cascade overrides work.

Fork-owned CSS is conflict-free against future upstream syncs of
`config.css` — upstream has zero rules for the 21 restored classes.

## Scope notes

- AC3 (`pnpm dev` visual smoke of sidebar/tabs, tag picker, subnav)
  requires human browser pass — same as #2506's unchecked item.
  Deterministic parts fully verified: exact-match sweep confirms
  21 emitted classes ↔ 21 defined classes.
- Peer tracks in this wave: #2509 (cluster 2 — `04a7853f0f`
  theme-toggle/nav) and #2510 (cluster 3 — `21ac4b9a8a` `.btn-sm`).
  Different files, no conflict.
- Not LIVE-smoke-test triggering: touches `ui/` only, no
  `src/middleware/` changes.

## Test plan

- [x] `pnpm check` (format:check + tsgo + lint + lint:tmp + lint:no-remoteclaw-ai) — all pass
- [x] `pnpm canvas:a2ui:bundle` — builds (457 kB, 66 ms)
- [x] `pnpm vitest run --config vitest.unit.config.ts ui/src/ui/` — 4 files / 43 tests pass
- [x] Fork-integrity gates: `check-rebrand-leakage.sh`, `check-no-zombie-imports.mjs`, `check-stub-debt.mjs`, `check-throwing-stub-callers.mjs` — all pass
- [x] `node scripts/audit-css-class-drift.mjs` — cluster 1 (0667aa5) 21 → 0 orphans
- [x] Exact-match sweep — 21 classes emitted by config.ts ↔ 21 classes defined in config-sidebar.css (no missing, no extra, no typos)
- [ ] Visual smoke — load settings view in light + dark themes, verify sidebar, tag picker, subnav render correctly (requires human browser pass)

## References

- Closes #2508
- Audit parent: #2502
- Sync commit: `0667aa5596` (#2400)
- Similar fix precedent: #2501 / #2506 (v2026.3.13-1 nav + topbar drift)
- HQ post-mortem: remoteclaw/hq#57 (now 3 confirmed instances)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant