mirror of
				https://github.com/topjohnwu/Magisk
				synced 2025-10-30 09:00:52 +01:00 
			
		
		
		
	Compare commits
	
		
			2142 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | cfe32f1a70 | ||
|   | d877f5d5c6 | ||
|   | 0ab6ffefb4 | ||
|   | a292a1d23a | ||
|   | 3f87f6aee3 | ||
|   | 04bcd145d3 | ||
|   | 244e811291 | ||
|   | ac7467fb59 | ||
|   | 2c0436216f | ||
|   | 017fbf267b | ||
|   | e6afbf2ec0 | ||
|   | 906b4aad9e | ||
|   | 4cf8d41f6a | ||
|   | 47c860142e | ||
|   | 2fba3f213b | ||
|   | af7c6f9fce | ||
|   | 78534deab6 | ||
|   | 6710314832 | ||
|   | 0cd4fa6fa0 | ||
|   | 065949496e | ||
|   | 39c82576ae | ||
|   | 37221a508d | ||
|   | 6b43a32a10 | ||
|   | d7cd1ff142 | ||
|   | 659d947863 | ||
|   | 39be7a6288 | ||
|   | 8ac976c579 | ||
|   | 70fd432c57 | ||
|   | 00135f2f49 | ||
|   | 9b944bc29c | ||
|   | d520b3d2a0 | ||
|   | 6f41d9855b | ||
|   | 2d7c1da741 | ||
|   | c0f45b6b1e | ||
|   | 7a0025673c | ||
|   | ad7ec79903 | ||
|   | 0543239cca | ||
|   | ff3dad2457 | ||
|   | 298d5e197b | ||
|   | d73c0a998d | ||
|   | 1b79a3ddbf | ||
|   | a8478ace18 | ||
|   | 72cf5f3f9f | ||
|   | 6f9d493a18 | ||
|   | 08f7d5ebff | ||
|   | 1fe3675403 | ||
|   | a0f956d2c1 | ||
|   | 1560f91b4a | ||
|   | c20f362594 | ||
|   | 7ae8c26e50 | ||
|   | adfffe6121 | ||
|   | 64601baa76 | ||
|   | aa374b51f1 | ||
|   | 5c483745ff | ||
|   | 0c247110a0 | ||
|   | 1643638a78 | ||
|   | 4ace228fc2 | ||
|   | 25aa86a0dc | ||
|   | 70d3b24338 | ||
|   | 8664e9d19b | ||
|   | 50d9877446 | ||
|   | fe06352089 | ||
|   | 7b599419b5 | ||
|   | 491adf072e | ||
|   | f6aae2b048 | ||
|   | d2d5c94633 | ||
|   | 10581f9ef2 | ||
|   | c7e0e1c038 | ||
|   | a914d701eb | ||
|   | 0f9dee6e9c | ||
|   | aa383e2190 | ||
|   | 9bbfcf326c | ||
|   | 3948e67c8f | ||
|   | d56e1b2cc5 | ||
|   | bfac1f1bc2 | ||
|   | d4a956c355 | ||
|   | 6c71fefa58 | ||
|   | ad3003c00a | ||
|   | 0ad5dcb258 | ||
|   | d790309b02 | ||
|   | 1072faf309 | ||
|   | d2c196896d | ||
|   | e42b608444 | ||
|   | 89a501a3af | ||
|   | c19b78180c | ||
|   | c0b750a09a | ||
|   | c967e618a1 | ||
|   | 59f78d7dfc | ||
|   | d8405f0d05 | ||
|   | 0f34f0033c | ||
|   | 190646d50c | ||
|   | a46c6252c6 | ||
|   | 5c1886c8f5 | ||
|   | afcb3d8f34 | ||
|   | 9fbffafdbf | ||
|   | 075f0458f7 | ||
|   | d4568aa0a7 | ||
|   | 97588408a2 | ||
|   | 1def9b301b | ||
|   | 5bac442b18 | ||
|   | 6add682705 | ||
|   | 8b50d84a05 | ||
|   | d3858b81e2 | ||
|   | bdff9769be | ||
|   | c61df75e5e | ||
|   | a74bf2cc27 | ||
|   | ada0f93686 | ||
|   | ff36f2ba17 | ||
|   | 5164cfd399 | ||
|   | 5fa021503e | ||
|   | 7b5d79d313 | ||
|   | 3e3f38500d | ||
|   | 5109b9abfd | ||
|   | 7fb4777c1c | ||
|   | c38533e0f8 | ||
|   | 51ba99d09e | ||
|   | 9159f86a9e | ||
|   | e139f4fc13 | ||
|   | 2fbfeacb87 | ||
|   | ebb7a9fcda | ||
|   | 9e72317302 | ||
|   | d764c20c08 | ||
|   | 9c17b8a098 | ||
|   | 3084873154 | ||
|   | 32809e56d0 | ||
|   | 9f05b182a2 | ||
|   | 525484e834 | ||
|   | 65a4e69cae | ||
|   | e973f8bab9 | ||
|   | 92466671ff | ||
|   | 6d61106070 | ||
|   | ac13749fb8 | ||
|   | 7ec1a9a316 | ||
|   | cf17e21ad3 | ||
|   | 0e0240c4ab | ||
|   | d1b290b91a | ||
|   | a63696836c | ||
|   | 46aad00f16 | ||
|   | 252afe8932 | ||
|   | 9dd467a613 | ||
|   | 4c14df67cc | ||
|   | 20e0fe3ba1 | ||
|   | 6a005135f2 | ||
|   | 82e8375957 | ||
|   | bb25edc09e | ||
|   | 169c0fe4af | ||
|   | cd6918e6eb | ||
|   | 5be035fd44 | ||
|   | f1edc8443c | ||
|   | d9564bd04c | ||
|   | 35f1c396f2 | ||
|   | 6acb950990 | ||
|   | 27e0d1641a | ||
|   | 9ac71ff8af | ||
|   | 075737a4ec | ||
|   | 6d0e4a6a5e | ||
|   | a2544768a0 | ||
|   | 8574a14ed2 | ||
|   | e90c555c18 | ||
|   | 863b9a410f | ||
|   | 23c7bbc7d5 | ||
|   | f900189f90 | ||
|   | 7c74be2790 | ||
|   | 70dd2d4829 | ||
|   | 914b7ee056 | ||
|   | e39f83edbf | ||
|   | 52fe0c6abb | ||
|   | 5cb3e5937f | ||
|   | e0cd224831 | ||
|   | de225ac64a | ||
|   | 5807808a10 | ||
|   | 362877d18f | ||
|   | 88b8dd0149 | ||
|   | 1552f32e09 | ||
|   | 50b73a6720 | ||
|   | 53e51f1735 | ||
|   | 40b63bfebe | ||
|   | 89861eceef | ||
|   | b8eaff66fa | ||
|   | a747fdd27d | ||
|   | 27851bdefa | ||
|   | 3fdeb40ddf | ||
|   | 546c7cebd3 | ||
|   | 473902f5f4 | ||
|   | 41c0721159 | ||
|   | 413d4badfd | ||
|   | c5d67ebf72 | ||
|   | 91818cfa1a | ||
|   | 6263d684d9 | ||
|   | 07140d33a7 | ||
|   | 4ffc388491 | ||
|   | 0ef026c610 | ||
|   | 153c7fdf20 | ||
|   | 90379eeb35 | ||
|   | 3ae959af95 | ||
|   | c8cc652b71 | ||
|   | 4b6285e5c2 | ||
|   | 013de7b3ef | ||
|   | e11e88a9c5 | ||
|   | 7cec8baa55 | ||
|   | e987db9fb5 | ||
|   | c603b9084f | ||
|   | 492d6dfcf0 | ||
|   | a3e0f2dcc3 | ||
|   | cf211e26f4 | ||
|   | c5aaaa7c55 | ||
|   | f86d077e27 | ||
|   | f8076825cb | ||
|   | 201d8a97d4 | ||
|   | d08f326990 | ||
|   | 8dc9d3bc78 | ||
|   | adf95ce3a0 | ||
|   | 3c1aca114f | ||
|   | 18d0fd9d2a | ||
|   | c2e673f978 | ||
|   | 2bde8a1975 | ||
|   | bf9927c7dd | ||
|   | f339a087a2 | ||
|   | 6ccc5f3788 | ||
|   | 1affb91f17 | ||
|   | 7779c3e372 | ||
|   | 49ba7ad22e | ||
|   | 6ad33d60f7 | ||
|   | 0117274061 | ||
|   | e50192a407 | ||
|   | c6fc0e587e | ||
|   | 68c448bc34 | ||
|   | ef62272df7 | ||
|   | 375cd0e42b | ||
|   | b885ccbd63 | ||
|   | da6f1d0f12 | ||
|   | 3934821436 | ||
|   | c3b473e4bc | ||
|   | 4c0d435b6b | ||
|   | 7ed2c077de | ||
|   | 52a6a7bce8 | ||
|   | 1283167595 | ||
|   | 23c2e22910 | ||
|   | f44b2dbd45 | ||
|   | 46ee2c3f4e | ||
|   | 5d5ec08566 | ||
|   | 0e717a2de4 | ||
|   | cada862214 | ||
|   | c3a6179a21 | ||
|   | 682c6d4e7b | ||
|   | d0a253c97e | ||
|   | c0e2b3027b | ||
|   | e7dc14b07d | ||
|   | 0da9146e90 | ||
|   | ad05a33e02 | ||
|   | ef175e3cbe | ||
|   | 4de51d93ef | ||
|   | 8224e038a3 | ||
|   | 03c04c2141 | ||
|   | 2e091b04e5 | ||
|   | 60296493fe | ||
|   | 20c20f8f9b | ||
|   | f1d642a4e5 | ||
|   | e0e5ea17a4 | ||
|   | 91a0ba72dc | ||
|   | c54c5a974a | ||
|   | 532b8c54ab | ||
|   | 5ac87891b5 | ||
|   | 2d905ce3fb | ||
|   | 831112abd2 | ||
|   | 153d0f5505 | ||
|   | c78896a335 | ||
|   | 316ec98e0f | ||
|   | cf58545a45 | ||
|   | e7a2144def | ||
|   | 52a2c6958b | ||
|   | 70243d7a47 | ||
|   | b5b8c4b725 | ||
|   | 6c4d81b1e9 | ||
|   | 513d732934 | ||
|   | c88dc8795b | ||
|   | a8030c39b1 | ||
|   | 7243b9e72f | ||
|   | d149af9628 | ||
|   | c0ac2d540b | ||
|   | 528634d755 | ||
|   | 3283439fd4 | ||
|   | e86015badc | ||
|   | c8f65fc9a1 | ||
|   | c8216f9bc5 | ||
|   | e579f314a6 | ||
|   | 2c4001387e | ||
|   | caa39474cb | ||
|   | 7684602ea8 | ||
|   | d1a7372bd2 | ||
|   | 4601989d4a | ||
|   | 23f697d62b | ||
|   | e837bdc8ad | ||
|   | 7265450e2e | ||
|   | 058dbc9f9e | ||
|   | daf9b019c6 | ||
|   | 14eebd582f | ||
|   | 9a8eeacee8 | ||
|   | 45b0bf5bc5 | ||
|   | 88db822c43 | ||
|   | fbf3588fdf | ||
|   | a82ef6bd35 | ||
|   | 312466aaf8 | ||
|   | c0ca99f4b4 | ||
|   | 196f15d240 | ||
|   | bfddef2671 | ||
|   | 44395e8ff0 | ||
|   | 4ff39f8817 | ||
|   | 1df41003ec | ||
|   | 1f39ee41ad | ||
|   | 42d8b1ecb9 | ||
|   | a4da7b33e6 | ||
|   | e4ee9e9095 | ||
|   | 835ece5469 | ||
|   | 77430a282f | ||
|   | d93fc67a75 | ||
|   | 838f3cc01e | ||
|   | 4d5841332a | ||
|   | 9b41976252 | ||
|   | d08fd0561a | ||
|   | 30e459252c | ||
|   | a6958ac139 | ||
|   | d7d76f54cc | ||
|   | e6c1dd532d | ||
|   | 970a2e87b3 | ||
|   | cabaae8403 | ||
|   | d1f301e059 | ||
|   | 79eb5b2ed2 | ||
|   | f0533fca70 | ||
|   | 08e98eeb15 | ||
|   | f2064a84ed | ||
|   | b2f719989d | ||
|   | 1e812c40ce | ||
|   | a949641342 | ||
|   | 6db27c7758 | ||
|   | c231e88a5d | ||
|   | 3f83919e09 | ||
|   | 72a5b83544 | ||
|   | d2e8ecc646 | ||
|   | 30eb4074cb | ||
|   | 79c71509f6 | ||
|   | 5dab580cfc | ||
|   | 9929e7d8e8 | ||
|   | f6ee252572 | ||
|   | 90d218ebc8 | ||
|   | 499a157946 | ||
|   | c5a7ab2415 | ||
|   | 3dd5a6f378 | ||
|   | 7be26a0677 | ||
|   | c183fdd3ca | ||
|   | baa439457e | ||
|   | 4dbcd54b72 | ||
|   | 11062f2d4f | ||
|   | b0a5dbb4c2 | ||
|   | 0abdfda5a2 | ||
|   | a0466085fe | ||
|   | a7ceb04cb7 | ||
|   | 274efb49e7 | ||
|   | b3cd83bbca | ||
|   | b8bd83ba05 | ||
|   | 34dcf49fbc | ||
|   | f2f7d77847 | ||
|   | b2105f2d88 | ||
|   | 4126f3bdcb | ||
|   | 74ccfe6088 | ||
|   | 48085b5573 | ||
|   | ef2f8d485b | ||
|   | 9fb9212b0a | ||
|   | 7b9ddc9b3b | ||
|   | 15726a759c | ||
|   | 2c7474ea87 | ||
|   | c726aee643 | ||
|   | f31a24b16d | ||
|   | b436bce565 | ||
|   | 886286a819 | ||
|   | c3e94e1480 | ||
|   | 5f1343e5b4 | ||
|   | ffb1303d61 | ||
|   | a0b0d938f0 | ||
|   | 158f5ba7d9 | ||
|   | b8cf40161c | ||
|   | fb96e6a56f | ||
|   | 6668ba2511 | ||
|   | 6d93831488 | ||
|   | 4668ef3020 | ||
|   | bcdadc6581 | ||
|   | 36448191b7 | ||
|   | be5be108c3 | ||
|   | c9ca42aaa9 | ||
|   | 630f2b7d19 | ||
|   | dde0a4a7c8 | ||
|   | c0e2f44092 | ||
|   | 1412fcbb22 | ||
|   | c69dc0f036 | ||
|   | 9b445d89a1 | ||
|   | c3c78428c4 | ||
|   | c6d2bf577f | ||
|   | b06f69573d | ||
|   | 8fd03f7434 | ||
|   | 25703c1750 | ||
|   | 90e4ac2d23 | ||
|   | 956bceae75 | ||
|   | c663be86de | ||
|   | aca78baecf | ||
|   | fbcf6b7954 | ||
|   | 84123222aa | ||
|   | e9dbcf693d | ||
|   | 1cd0a9d48f | ||
|   | 1b48e44914 | ||
|   | 0a398f03fd | ||
|   | 3a9a3ed184 | ||
|   | 88fae36b8a | ||
|   | 15ed3e52f2 | ||
|   | 8990919dab | ||
|   | e5638e4b15 | ||
|   | 404c6fac9a | ||
|   | fc9d4034a9 | ||
|   | cecc0b932d | ||
|   | 0faed7159c | ||
|   | fb491cfdcf | ||
|   | fc706dcb40 | ||
|   | a2c1b024f3 | ||
|   | 267395bfa2 | ||
|   | 920fc5ae99 | ||
|   | 92ed0ae51b | ||
|   | 3d865394d7 | ||
|   | 76ef1d0d86 | ||
|   | c694776162 | ||
|   | 9484ec0c17 | ||
|   | 7e2ba41c64 | ||
|   | 614c552e55 | ||
|   | 7db3d84ba2 | ||
|   | bb2c744ec0 | ||
|   | 87f6018468 | ||
|   | 9194c50590 | ||
|   | 873f14bbe0 | ||
|   | 31110b1927 | ||
|   | 6764a98409 | ||
|   | 7ff45974c6 | ||
|   | fd7b5f393a | ||
|   | 2533a4fc4a | ||
|   | 2ca528f93f | ||
|   | 42284c5efb | ||
|   | ce2e6b7d35 | ||
|   | 684c5d225a | ||
|   | b75018b03b | ||
|   | 41499d4b3c | ||
|   | 383c97c303 | ||
|   | 74b54ef371 | ||
|   | bbf7b4db79 | ||
|   | c61f0acab5 | ||
|   | 398af123b2 | ||
|   | 315fa9d7d3 | ||
|   | fb5e8ef40c | ||
|   | 7d7686da33 | ||
|   | e79d764148 | ||
|   | ebbee0dc43 | ||
|   | 65e455ef0b | ||
|   | ed0c16e201 | ||
|   | 209fdf349a | ||
|   | f49f2afacd | ||
|   | 8c6330a3c4 | ||
|   | 337b777125 | ||
|   | 1b756e8d96 | ||
|   | ac05e2f2e2 | ||
|   | 787f7b3035 | ||
|   | 31bd642b80 | ||
|   | f0bac6b154 | ||
|   | cc7e74ca11 | ||
|   | 52d478df1a | ||
|   | e8a44646b8 | ||
|   | 0c782edf21 | ||
|   | e3948d295e | ||
|   | 5f2c742a5c | ||
|   | ae97d011ae | ||
|   | 1b7657a374 | ||
|   | 5665e04014 | ||
|   | b30c77aab9 | ||
|   | a5916b9c49 | ||
|   | 453180e30b | ||
|   | 8bd432d391 | ||
|   | c9d3e20aef | ||
|   | bb70385a42 | ||
|   | 9855877b03 | ||
|   | d5408d1f09 | ||
|   | f334532aba | ||
|   | be77c09f3d | ||
|   | 7de6a92753 | ||
|   | 36f76f5a14 | ||
|   | b84523d557 | ||
|   | 21a557a184 | ||
|   | 2c78c415e9 | ||
|   | 79ccb30dd2 | ||
|   | 3c566becf6 | ||
|   | 76c9188fae | ||
|   | e4e5269836 | ||
|   | 9e737df534 | ||
|   | 151ca593af | ||
|   | 4132eacba0 | ||
|   | 06e6151816 | ||
|   | 70277d4edd | ||
|   | d21d2f1a9c | ||
|   | 74a7be996f | ||
|   | 0b3192c4d5 | ||
|   | 968e6237bd | ||
|   | d780b5a0e4 | ||
|   | 3e48427eaf | ||
|   | 31360c34ed | ||
|   | e9624e2304 | ||
|   | 3f38579529 | ||
|   | 4d5a9f6e15 | ||
|   | 41f47acd76 | ||
|   | 821dcaa7c7 | ||
|   | 7135d26419 | ||
|   | f7fd354dce | ||
|   | 0c69a65bc4 | ||
|   | 2f2ca5eab4 | ||
|   | 9c6e64f47d | ||
|   | 0afa601551 | ||
|   | df9c40c035 | ||
|   | 25b67017e4 | ||
|   | bc9c3346f3 | ||
|   | 1db7e19fe8 | ||
|   | 102c03ce2b | ||
|   | ec19eb4455 | ||
|   | 6d9924d50e | ||
|   | 16c4d74274 | ||
|   | e4af5fd36a | ||
|   | 702775493a | ||
|   | b2ae826066 | ||
|   | cc3e9990fa | ||
|   | 271cbddd5e | ||
|   | 26dfbb3028 | ||
|   | f16cd987e4 | ||
|   | c1423ca9ad | ||
|   | 74379150a1 | ||
|   | a94fa81195 | ||
|   | 6119c24720 | ||
|   | c840a30c30 | ||
|   | ae5277a898 | ||
|   | bffa837825 | ||
|   | b9e7d0faea | ||
|   | 860b08d9ed | ||
|   | 691dc1d49e | ||
|   | 7da205f4c8 | ||
|   | 9d6886d367 | ||
|   | 9589b68f5a | ||
|   | 28d88af1af | ||
|   | 8b5acd1849 | ||
|   | 33dc63a7fd | ||
|   | 754fafcfe9 | ||
|   | bd7766b17e | ||
|   | 70b7d73453 | ||
|   | 5ad4702a5b | ||
|   | 40b6fe03c2 | ||
|   | 49ecba2476 | ||
|   | ebd509d92d | ||
|   | 7193374a7e | ||
|   | 6728445542 | ||
|   | 10ed299c78 | ||
|   | d0a86385b7 | ||
|   | 32b124913e | ||
|   | 599ae95251 | ||
|   | d1be34c34a | ||
|   | bc2cac90fe | ||
|   | 50a49e2c8c | ||
|   | c60adb113e | ||
|   | aee015e8f6 | ||
|   | bf6af29205 | ||
|   | 329905d472 | ||
|   | 00d450d262 | ||
|   | 2365d1bd20 | ||
|   | 5b385c18e5 | ||
|   | 98c0434ec0 | ||
|   | f318d0a3bc | ||
|   | 27f5b410c0 | ||
|   | 3f55be9676 | ||
|   | 28350e3ad9 | ||
|   | f48e6c93b8 | ||
|   | 7cfc24d68f | ||
|   | a58d3ea04d | ||
|   | dfee9954e0 | ||
|   | eed86c760f | ||
|   | c471bb6f67 | ||
|   | 518c2b0f95 | ||
|   | 328fc44194 | ||
|   | b6f735a8f6 | ||
|   | b05d2d3a2d | ||
|   | deae08fc4b | ||
|   | 19af5f9e0b | ||
|   | c61135ee7b | ||
|   | f37f330670 | ||
|   | 40082d4571 | ||
|   | 97cf15007f | ||
|   | 00d655f346 | ||
|   | 821726e7c0 | ||
|   | e8302dfbe2 | ||
|   | 558f95cf7e | ||
|   | 18f6ead891 | ||
|   | 759e905c3c | ||
|   | 8bf7e42913 | ||
|   | 0dcd073554 | ||
|   | 2fe35d578d | ||
|   | 8d139e156e | ||
|   | 7c2849356a | ||
|   | 0025ffd1c0 | ||
|   | 2ef7146642 | ||
|   | 10bd25be52 | ||
|   | 1b27e69e40 | ||
|   | 65511845d2 | ||
|   | 1c743839ea | ||
|   | bcae9dec41 | ||
|   | 482c9af41f | ||
|   | 8e7b757efd | ||
|   | 1ab543cea1 | ||
|   | a3f86903e4 | ||
|   | c239c305ab | ||
|   | 2bf2e7461f | ||
|   | 7d1082b1cb | ||
|   | 0dbae83aec | ||
|   | f927c1b997 | ||
|   | 89ec7dad2b | ||
|   | 4fd61345af | ||
|   | 2e02af994e | ||
|   | 66cca24453 | ||
|   | 2f4062a923 | ||
|   | e733484fab | ||
|   | e5c3183025 | ||
|   | 836d9afe17 | ||
|   | 007a352742 | ||
|   | e526e5659e | ||
|   | 4a5227c7bf | ||
|   | c2c151ec4c | ||
|   | 452096e7e4 | ||
|   | 50c2a9859e | ||
|   | 677b667307 | ||
|   | 930c82316a | ||
|   | 3dc22db265 | ||
|   | d8c51cb286 | ||
|   | 2f79d0c3b3 | ||
|   | 5c338cd0a7 | ||
|   | d8bb3af06b | ||
|   | e139e8777b | ||
|   | 1adf331268 | ||
|   | 349b3e961b | ||
|   | 96650c06f0 | ||
|   | 26038a0a07 | ||
|   | 6a148b5dd9 | ||
|   | 0e109ef979 | ||
|   | d52d7cfbd9 | ||
|   | 4f74a259e3 | ||
|   | de2285d5e9 | ||
|   | b2483ba437 | ||
|   | a82a5e5a49 | ||
|   | 74da6e1dc0 | ||
|   | 84ffdf0ed5 | ||
|   | 022b18c8ce | ||
|   | b92b1dcddb | ||
|   | d161a02e71 | ||
|   | d2b6a700b1 | ||
|   | af203cef24 | ||
|   | 673e917e76 | ||
|   | a3bd41db54 | ||
|   | 1472dbb291 | ||
|   | d58a8dc868 | ||
|   | 0d9527921a | ||
|   | e94be0b70e | ||
|   | f0e4aec0af | ||
|   | b0d65b5edd | ||
|   | 75532ef591 | ||
|   | 9a6d1bd700 | ||
|   | a7ed6c15d3 | ||
|   | 5ee49ba065 | ||
|   | f6ae7e1bf1 | ||
|   | 190d857949 | ||
|   | f7b4935677 | ||
|   | a3c49de6a5 | ||
|   | d34bd47bea | ||
|   | f17792380b | ||
|   | c11920110e | ||
|   | ec5a993fea | ||
|   | d250c2cc89 | ||
|   | 767e73f40c | ||
|   | 3f699c9d2f | ||
|   | 50dbd9befd | ||
|   | 760e01bf92 | ||
|   | 543f435b1e | ||
|   | e8dd1b292f | ||
|   | 91337218b3 | ||
|   | afff3c0a49 | ||
|   | d21264d01b | ||
|   | b0567eadfd | ||
|   | 5fc2058336 | ||
|   | d0567d29d2 | ||
|   | 2b6c271d37 | ||
|   | b0c1a6f73a | ||
|   | 4db0ad32f0 | ||
|   | a1871e4bc3 | ||
|   | d065040321 | ||
|   | 3aa0294cd4 | ||
|   | 17f0fea3fc | ||
|   | 8ca1e43533 | ||
|   | 310b266251 | ||
|   | 21b1b5098e | ||
|   | a3a4a5d8a5 | ||
|   | 270536f33c | ||
|   | 66bb433cc6 | ||
|   | bd4ef1a03a | ||
|   | aa2d9a3bf1 | ||
|   | bd01c314dc | ||
|   | 257308d5db | ||
|   | d4620e1654 | ||
|   | fd6cbb138c | ||
|   | aa75c8e5e4 | ||
|   | e404476609 | ||
|   | 942c870981 | ||
|   | c461fc6daa | ||
|   | baff9256c5 | ||
|   | b4c0a255fc | ||
|   | 9f6a27c20d | ||
|   | 742dc137ed | ||
|   | 39a6bd33ce | ||
|   | 4672a5fad6 | ||
|   | e649b0a2df | ||
|   | 96eaa833f5 | ||
|   | fd8dbe3eff | ||
|   | bb97cc594d | ||
|   | 70a322263e | ||
|   | c6f144d482 | ||
|   | 3709489b3a | ||
|   | 863b13a694 | ||
|   | e6fea4e6dd | ||
|   | 83bfc13056 | ||
|   | bc4f09209b | ||
|   | 145ef32e28 | ||
|   | 2212800a23 | ||
|   | 2e25431bb6 | ||
|   | 967ca17238 | ||
|   | 595c72147c | ||
|   | f3c3b5a649 | ||
|   | 1cd2c5e653 | ||
|   | b2873dd44b | ||
|   | bb80ab4026 | ||
|   | 32c8e7522f | ||
|   | a5e4f3cc6b | ||
|   | 80cabb338b | ||
|   | 2c69e2c151 | ||
|   | a30777bd9f | ||
|   | e989195a68 | ||
|   | c1dd23f5e0 | ||
|   | f93624a41c | ||
|   | 9f4559a059 | ||
|   | fd05cad303 | ||
|   | d58b06e493 | ||
|   | d7a6127273 | ||
|   | 997d58932e | ||
|   | b4015f877f | ||
|   | 8ee9984e4e | ||
|   | d15fff95b9 | ||
|   | 2f0b549027 | ||
|   | 87dbd7e541 | ||
|   | 96e5da36be | ||
|   | 43745edac0 | ||
|   | 687e3b13ea | ||
|   | 8c6bb383b7 | ||
|   | 18bee21cfc | ||
|   | e5b6121d17 | ||
|   | f5ceee547c | ||
|   | b612bce779 | ||
|   | 2e88e5e9c7 | ||
|   | 9a7aa25c90 | ||
|   | c4420fe932 | ||
|   | a5260f3a95 | ||
|   | bc592c1d13 | ||
|   | 968bd8be67 | ||
|   | 47ccf4b1f5 | ||
|   | a356b21895 | ||
|   | 614a36c888 | ||
|   | d8b8adb88c | ||
|   | f42d820891 | ||
|   | bc21a1fb71 | ||
|   | b7e717ee8c | ||
|   | f520fe36bd | ||
|   | 7273a1c34d | ||
|   | dc45cbce37 | ||
|   | 708d8f75c0 | ||
|   | bd37d90228 | ||
|   | b1ad691464 | ||
|   | f4e7baf31e | ||
|   | c0e60c41f2 | ||
|   | c8dad43e00 | ||
|   | 3bc31374ac | ||
|   | 858e7bae2b | ||
|   | a8f124704d | ||
|   | eed2816491 | ||
|   | a6334b3e35 | ||
|   | 334beebfeb | ||
|   | 13dad848bd | ||
|   | e518f4cef8 | ||
|   | c8fd5da2da | ||
|   | 3a74729ecc | ||
|   | 49c672ac4d | ||
|   | b570cb5b77 | ||
|   | 97bf388471 | ||
|   | 1a32aaea6f | ||
|   | 4635883dec | ||
|   | 8c02d120a2 | ||
|   | 3ba6db4a50 | ||
|   | 2f1de25747 | ||
|   | f60fd42ac0 | ||
|   | ecc8f9c792 | ||
|   | e295dfdcf7 | ||
|   | fc42c25390 | ||
|   | 27d5858e06 | ||
|   | 07e353f4ff | ||
|   | bb33d9e600 | ||
|   | 68eb0bdec9 | ||
|   | 32ee8e462c | ||
|   | e1ef732b60 | ||
|   | 9840b95c21 | ||
|   | a6f8446d81 | ||
|   | c1c844c830 | ||
|   | 389299afd1 | ||
|   | 826543a291 | ||
|   | 4ac83cfded | ||
|   | e79aa54b70 | ||
|   | 9a95652034 | ||
|   | 912c188b53 | ||
|   | e9d0f615ba | ||
|   | 9136573596 | ||
|   | 2487ec94e6 | ||
|   | 811489f157 | ||
|   | b438cc9335 | ||
|   | 1d3d30fa45 | ||
|   | 72b5985398 | ||
|   | 64c363ce53 | ||
|   | cca4347bf9 | ||
|   | 3ae3d4926a | ||
|   | 36025d6d9f | ||
|   | e171362e3e | ||
|   | 3e0bf2ae15 | ||
|   | 07aa9f4b8b | ||
|   | b2d9f3fc64 | ||
|   | 5fb3e9167e | ||
|   | 2db60e0a6b | ||
|   | e710848345 | ||
|   | 99c74b31be | ||
|   | ce5b13824e | ||
|   | c39170c42e | ||
|   | 9e96824161 | ||
|   | fd19fbf300 | ||
|   | 166469827f | ||
|   | a34ed538b6 | ||
|   | 8d6f3c2450 | ||
|   | f863d127e7 | ||
|   | 5f22d3e055 | ||
|   | a831110816 | ||
|   | fdd700f3e5 | ||
|   | adf930f126 | ||
|   | e97bdb53f4 | ||
|   | 05f41928cd | ||
|   | 2ee0829871 | ||
|   | 743560825d | ||
|   | e3d84ac349 | ||
|   | 266c832b30 | ||
|   | f5374a024e | ||
|   | fe1439fbac | ||
|   | 4956d826fb | ||
|   | f5cc2af5d0 | ||
|   | 2bc30e5c22 | ||
|   | 7244c02a0d | ||
|   | 84ca8e1f3e | ||
|   | 5880d4a6ec | ||
|   | ae05dce958 | ||
|   | 9ebe372a9a | ||
|   | 6c229ffa68 | ||
|   | e6e04cc5b3 | ||
|   | 12352510fd | ||
|   | 2b3d927937 | ||
|   | a8890740f5 | ||
|   | f60d7ee54b | ||
|   | 896ca2ef6b | ||
|   | c036f6d529 | ||
|   | 6f457c0c59 | ||
|   | cdc5d983f3 | ||
|   | 13bf1b27b4 | ||
|   | f742bb1c47 | ||
|   | 96688e4dac | ||
|   | 28a945fee9 | ||
|   | c7e777255a | ||
|   | 2dd4cf040e | ||
|   | aa0b9e2db2 | ||
|   | c10076f7ed | ||
|   | bcd92499f2 | ||
|   | b2bb0d4f72 | ||
|   | d1b9eca5eb | ||
|   | 594a67fe28 | ||
|   | cddeaffada | ||
|   | e140481f14 | ||
|   | 6b7b71b1f8 | ||
|   | 186bd11463 | ||
|   | a0490d6687 | ||
|   | beef740ade | ||
|   | 2ac7786a90 | ||
|   | a3fb5e910f | ||
|   | 319afe86b5 | ||
|   | 762ab66b86 | ||
|   | 0c239a42de | ||
|   | 2a8898e7c3 | ||
|   | ce3f3b09b4 | ||
|   | fe4b3df7e9 | ||
|   | 25bdbcf526 | ||
|   | df7eaa5598 | ||
|   | bb7099376b | ||
|   | 0327fd9710 | ||
|   | e645c6e465 | ||
|   | 78a3d36ccc | ||
|   | 3942858ccd | ||
|   | 03c8d716cc | ||
|   | e9322fba26 | ||
|   | 60181c4fcb | ||
|   | c215447405 | ||
|   | 39b6df27b3 | ||
|   | b1ee284e7f | ||
|   | e986332bf2 | ||
|   | 48f9b27381 | ||
|   | 42a6e0dd10 | ||
|   | d4798b02ac | ||
|   | 963edfe8ab | ||
|   | 53237f3ae0 | ||
|   | 64da9281a4 | ||
|   | ab7fd9799d | ||
|   | f6bcc84251 | ||
|   | 35dc3d9df9 | ||
|   | 566714a75d | ||
|   | c92f30b122 | ||
|   | 294ad094c4 | ||
|   | c1a0f520f9 | ||
|   | 89330b89d8 | ||
|   | a8f3718ed0 | ||
|   | a78ba44709 | ||
|   | ff110e3513 | ||
|   | 773c24b7fc | ||
|   | 8f926c7ca9 | ||
|   | cfae6c63b5 | ||
|   | dbfe49c56f | ||
|   | 98e21f9f5b | ||
|   | 83af0497e4 | ||
|   | 6ce37b44db | ||
|   | c562cbc2bb | ||
|   | 9cb1cf756f | ||
|   | 3fbbb0865a | ||
|   | 7d5f612a48 | ||
|   | 4a5a36440b | ||
|   | 43dd5cfea1 | ||
|   | 7b5fec1842 | ||
|   | ffa005e4ab | ||
|   | 5762ded601 | ||
|   | af102e47f1 | ||
|   | 73064a816d | ||
|   | a3abb86daa | ||
|   | 4f5c656b05 | ||
|   | 9b4ae8fcc5 | ||
|   | a31cddbe7b | ||
|   | a1a2c52409 | ||
|   | 9a0b26e0b0 | ||
|   | b805b96e16 | ||
|   | b4ecd93f1c | ||
|   | 590e7f7724 | ||
|   | 1a702b08b9 | ||
|   | 8c52dfb804 | ||
|   | 0acc23e058 | ||
|   | cdd5f9b628 | ||
|   | 4c9f5f4655 | ||
|   | b80ba13cb4 | ||
|   | 4d61e5e319 | ||
|   | 8c8a63ebfb | ||
|   | e5e34797a8 | ||
|   | 8516ebe6f5 | ||
|   | 9f6205f47f | ||
|   | 8b2ec23a89 | ||
|   | 1816ca6b02 | ||
|   | 7394ff9346 | ||
|   | bb5a6a1c28 | ||
|   | b614b06736 | ||
|   | 7a376c9efc | ||
|   | 8260bdc09c | ||
|   | 24f856e02b | ||
|   | 3aa619b928 | ||
|   | 4cb5e98d94 | ||
|   | 272910575e | ||
|   | a15a62f4bc | ||
|   | 53cf11db8c | ||
|   | 518f3d229f | ||
|   | 46c91f923d | ||
|   | 3a2262dfb3 | ||
|   | ff7c38f8e9 | ||
|   | 4229ba364f | ||
|   | ba8e7a211a | ||
|   | 6b41653a32 | ||
|   | 59c1125e72 | ||
|   | b536046720 | ||
|   | 619b805894 | ||
|   | 8662537883 | ||
|   | 717890395b | ||
|   | b7b4164f4f | ||
|   | 7e65296470 | ||
|   | cd5f5d702f | ||
|   | 01052fbe47 | ||
|   | a5e1e075c7 | ||
|   | 6be32ac688 | ||
|   | 44b93e7cc4 | ||
|   | 0eb79e5acd | ||
|   | b362c0ef38 | ||
|   | bba9969e31 | ||
|   | 007ba24809 | ||
|   | df21539311 | ||
|   | 2592cb6019 | ||
|   | f7df17a7ed | ||
|   | 62f42b72f8 | ||
|   | a1ba4fda6f | ||
|   | 1c06b04c45 | ||
|   | eceba26894 | ||
|   | 0bf404f75e | ||
|   | cd8dd65a65 | ||
|   | 50c56f8b50 | ||
|   | 2ee22fd374 | ||
|   | 4c230d9e61 | ||
|   | 727294fbbe | ||
|   | 478c43969b | ||
|   | 79b5303350 | ||
|   | ce4b742b25 | ||
|   | a9dc15bda5 | ||
|   | ba6387ff5c | ||
|   | 8fa98508b7 | ||
|   | decdbaecf9 | ||
|   | 6d87cf9be0 | ||
|   | 94f434c4a6 | ||
|   | 7ba867c30b | ||
|   | 3424395e10 | ||
|   | 926c7359a2 | ||
|   | ec0af99a2e | ||
|   | b4d948886c | ||
|   | 4d8d79372a | ||
|   | 04a589722c | ||
|   | d4a10e2873 | ||
|   | 4998ad6c7e | ||
|   | a07ca5ff50 | ||
|   | f07e7571ab | ||
|   | 834c16485c | ||
|   | 04a4265ef3 | ||
|   | 0ec473195d | ||
|   | 9e9f8ca8f3 | ||
|   | 0bf09256b0 | ||
|   | f63af0601c | ||
|   | db8fd2c913 | ||
|   | 189c671ce2 | ||
|   | dbe6e5b3d7 | ||
|   | cc81cd446b | ||
|   | 439c7118f1 | ||
|   | d8154a5815 | ||
|   | 4e3787bc0d | ||
|   | 02e0955924 | ||
|   | bb39a01361 | ||
|   | 3c6a170138 | ||
|   | a78950e822 | ||
|   | 764999704a | ||
|   | 1ce1a94a35 | ||
|   | 977b6d9f67 | ||
|   | b5e6dbd797 | ||
|   | 833e6688f1 | ||
|   | bc22c9f84f | ||
|   | 2149a7d116 | ||
|   | 29175d2c17 | ||
|   | 803454d5c8 | ||
|   | 36cf32dc42 | ||
|   | ecfa4aafc1 | ||
|   | a1e33c4d2f | ||
|   | 7f8ba74dac | ||
|   | 657f4ab303 | ||
|   | e3df62d812 | ||
|   | 1913125881 | ||
|   | e8e58f3fed | ||
|   | 1ca9ec384b | ||
|   | 9522255e3a | ||
|   | 2a22fa694e | ||
|   | 1591f5a0ca | ||
|   | c0c38022ea | ||
|   | 3bc4e9a724 | ||
|   | f7a6bb0723 | ||
|   | e9c17a3ef7 | ||
|   | 29bb5840b5 | ||
|   | c9d8d860f6 | ||
|   | cc18096882 | ||
|   | 15f2a664d1 | ||
|   | 93b66d26ff | ||
|   | 70b4f62ddc | ||
|   | e1023fdfaf | ||
|   | 5e9648387a | ||
|   | 2ba8b4df67 | ||
|   | 3a084c5d7b | ||
|   | f7200e39c3 | ||
|   | ea6552615d | ||
|   | 4bf3287fce | ||
|   | 832c2034c2 | ||
|   | b0aa26e1f1 | ||
|   | e52baeb967 | ||
|   | 8268eb9a83 | ||
|   | a7dfc20967 | ||
|   | 6eb7c0b5d6 | ||
|   | 0b3c078aeb | ||
|   | 3cc458abd9 | ||
|   | 750872cc37 | ||
|   | 337b4c4268 | ||
|   | 001f8657f6 | ||
|   | ea884e7fa1 | ||
|   | 29895ff474 | ||
|   | 9be2844c82 | ||
|   | 44adccc147 | ||
|   | 2a7e2c70b5 | ||
|   | 8d431b6762 | ||
|   | 273849c0c8 | ||
|   | 5cc14405c7 | ||
|   | 1b1394cf5d | ||
|   | 1eef930dbb | ||
|   | f0cfd60e62 | ||
|   | 875c687e3f | ||
|   | 1e175e74ed | ||
|   | d6547f0701 | ||
|   | 75a46c365e | ||
|   | 8e7b8825f5 | ||
|   | 2ecbca303b | ||
|   | 3b68905037 | ||
|   | eae611c54d | ||
|   | b37bad35c2 | ||
|   | 8195a4d616 | ||
|   | 7ba40f925f | ||
|   | 345cd1795f | ||
|   | 5fab15fee5 | ||
|   | 10c8ea17aa | ||
|   | 7058c8ff5a | ||
|   | 64e85da59f | ||
|   | f79fad64aa | ||
|   | cb70eebb08 | ||
|   | 959aaee045 | ||
|   | edaf8787d1 | ||
|   | 53477f0f59 | ||
|   | 5716218f41 | ||
|   | 9df6b9d5c0 | ||
|   | 24164c8580 | ||
|   | 9fca7011aa | ||
|   | a0be47ab8b | ||
|   | ec46031d36 | ||
|   | 55b84d166a | ||
|   | 34ae8bacec | ||
|   | cb4e5ca0f7 | ||
|   | 0ba45468c4 | ||
|   | 710502784e | ||
|   | b13eb3fd40 | ||
|   | b7986a351c | ||
|   | ce87591c62 | ||
|   | 0275a8558d | ||
|   | 58acc75cf6 | ||
|   | 874ababb9f | ||
|   | 3771e6b0cd | ||
|   | 33eaefa966 | ||
|   | cd7e236d57 | ||
|   | 54c0b7c7d5 | ||
|   | a2177daec2 | ||
|   | 628386b453 | ||
|   | b222bfb3e0 | ||
|   | ab199d883d | ||
|   | 356065d1ee | ||
|   | 76e7c5623d | ||
|   | 085fba050a | ||
|   | 295334d3ac | ||
|   | 36124ddca4 | ||
|   | bd6585765e | ||
|   | c325deb4ed | ||
|   | 73bb0b10ee | ||
|   | 72820b162c | ||
|   | 89e5b8d057 | ||
|   | da4f53ebbb | ||
|   | 8458553b74 | ||
|   | 55ecc41d06 | ||
|   | 28fcdf2cbb | ||
|   | 24087679a8 | ||
|   | 5ac6a8cb4a | ||
|   | 668d85d14e | ||
|   | c11a3dc95c | ||
|   | 56f57c20a2 | ||
|   | 240d14779a | ||
|   | 25c289ad3e | ||
|   | 8c5f11b7dd | ||
|   | 7f7dda9ec2 | ||
|   | 9c1005ff0c | ||
|   | 5b36b4472c | ||
|   | 3550d1e61c | ||
|   | 6513ad249c | ||
|   | 50297b1880 | ||
|   | f189b78b9e | ||
|   | 5c0250f495 | ||
|   | 2093f726e9 | ||
|   | 10efe3859d | ||
|   | 6933bcf7bb | ||
|   | 2ea046cd80 | ||
|   | a3fcc64aaa | ||
|   | f4097a372b | ||
|   | f3078bc903 | ||
|   | 6072744f7e | ||
|   | 40b6de599c | ||
|   | 87ea2a2bef | ||
|   | cc14a1c361 | ||
|   | bcdface60d | ||
|   | 4dc9419d2e | ||
|   | d2bcac813e | ||
|   | 080c37a7f6 | ||
|   | a87ad35a50 | ||
|   | cf56d7e4ed | ||
|   | e33a5eb307 | ||
|   | c1c6f55f8f | ||
|   | e5b704eb32 | ||
|   | f9a3838db6 | ||
|   | 1e61db104b | ||
|   | 30a9c7718d | ||
|   | 34b052b5d3 | ||
|   | aaa12853ad | ||
|   | b0ab55b0bf | ||
|   | d2f8496f4e | ||
|   | 56457bd325 | ||
|   | bdbb3c6657 | ||
|   | 4c7e081e15 | ||
|   | c4d7001489 | ||
|   | c07bac9a63 | ||
|   | d27d04783f | ||
|   | 58de5a7ec7 | ||
|   | 1a69b16d36 | ||
|   | b5e8673e62 | ||
|   | 264c6a50b6 | ||
|   | 493642eb38 | ||
|   | 504a9b4746 | ||
|   | cccb5a3e08 | ||
|   | d75fa62cab | ||
|   | 3d43c3c5bc | ||
|   | 28d42b9164 | ||
|   | 42f29062ca | ||
|   | b570b363d9 | ||
|   | 09392be069 | ||
|   | 5529dab84e | ||
|   | b9968aa1e6 | ||
|   | 60ca704a9e | ||
|   | c0d77808f6 | ||
|   | 9679492c28 | ||
|   | f3b68e6543 | ||
|   | 0dcfaaf5ff | ||
|   | ba513dcb9a | ||
|   | ebabc60477 | ||
|   | cf565d0145 | ||
|   | 52a23e7904 | ||
|   | 9e22b80714 | ||
|   | 7eed9c4a6d | ||
|   | bf42fce17e | ||
|   | 9d421226a7 | ||
|   | c4377ed6c2 | ||
|   | 7c4d5cee95 | ||
|   | 7d283ed65f | ||
|   | bf1f941e50 | ||
|   | 789fef34ba | ||
|   | 1daf5a611c | ||
|   | 6aed1db67e | ||
|   | 7b9be8369e | ||
|   | 7cf4b819ae | ||
|   | 9e1aea33c3 | ||
|   | 8767a88854 | ||
|   | 47c0084641 | ||
|   | 54e6a790cf | ||
|   | 2a86bc8695 | ||
|   | 04538372c6 | ||
|   | cf68854770 | ||
|   | 711392c73b | ||
|   | 9573c32481 | ||
|   | a15f80f79d | ||
|   | 23e7475f06 | ||
|   | 1eb571b787 | ||
|   | dd3b716d85 | ||
|   | 28649c07e3 | ||
|   | 961e02be0d | ||
|   | 9430ed66cd | ||
|   | 96f8efc27a | ||
|   | a161491bfd | ||
|   | a90e8b6112 | ||
|   | 561c1fb798 | ||
|   | e0b4d1c1e4 | ||
|   | fd4aaab137 | ||
|   | 42d14d5ca2 | ||
|   | 806fec7017 | ||
|   | b3da28eade | ||
|   | 166f6412c2 | ||
|   | 1e877808bc | ||
|   | 1777d9f751 | ||
|   | 309b99eac0 | ||
|   | a5aa1b3917 | ||
|   | aced0632ec | ||
|   | 4e801788d7 | ||
|   | 0b4baad78b | ||
|   | d3ff482c9b | ||
|   | c9286624d4 | ||
|   | f682368eeb | ||
|   | 4a5d033efb | ||
|   | 343161b195 | ||
|   | 201e32d4c4 | ||
|   | 0980cb6eb5 | ||
|   | f75d23363b | ||
|   | bc576a9659 | ||
|   | 19e407fcc4 | ||
|   | bc7327d004 | ||
|   | 666fa1c797 | ||
|   | 0eda4a7821 | ||
|   | 6c0ba66f17 | ||
|   | 862058fd2b | ||
|   | f32ce7392e | ||
|   | 193d160bed | ||
|   | 8bf382adad | ||
|   | 541ba357bb | ||
|   | 69e5bcd57d | ||
|   | efeddda328 | ||
|   | b6578b52e3 | ||
|   | fb01c43ece | ||
|   | b9a012c6e3 | ||
|   | 17684ed8a8 | ||
|   | 1b6b3b2cd5 | ||
|   | acd8567586 | ||
|   | e780c76c93 | ||
|   | 532c6caddf | ||
|   | ef8d9be633 | ||
|   | 2cdbcc5666 | ||
|   | c282a8f328 | ||
|   | b9eab39541 | ||
|   | 20903784a4 | ||
|   | 3ec9ff7467 | ||
|   | 1ddd746862 | ||
|   | ff6938280e | ||
|   | 1e4425b30f | ||
|   | b5d1d8cdad | ||
|   | 029be5ccca | ||
|   | 29c2d785b5 | ||
|   | abda8cfa32 | ||
|   | 44e7d79d4c | ||
|   | 9a1dc8ee0e | ||
|   | 27879c3f01 | ||
|   | 29096eb5d7 | ||
|   | 17d3a87b1f | ||
|   | a573baea03 | ||
|   | 14c5c60863 | ||
|   | 48ace3de57 | ||
|   | 5af07c4531 | ||
|   | 70a80090c4 | ||
|   | 44e36feb09 | ||
|   | 3395c84560 | ||
|   | b6cb5d09cb | ||
|   | 2a7d996881 | ||
|   | 94c2fc80d2 | ||
|   | 69cfde4516 | ||
|   | bdc83da098 | ||
|   | f872a122a9 | ||
|   | 738f943a68 | ||
|   | 47e62a5681 | ||
|   | 1ecbfd7590 | ||
|   | 67c139a04b | ||
|   | 31cc008249 | ||
|   | 9cb026439d | ||
|   | e6f10176c6 | ||
|   | 0917c79470 | ||
|   | 597baa986d | ||
|   | 75cc4b4843 | ||
|   | aac088d496 | ||
|   | a822e5bbc5 | ||
|   | c527249c21 | ||
|   | 9ef798f534 | ||
|   | e69b99f089 | ||
|   | 55b8079e86 | ||
|   | aa92e4cbd0 | ||
|   | e272dbe9af | ||
|   | 962f8354ac | ||
|   | 20e4a960f7 | ||
|   | e603877a17 | ||
|   | bb96477779 | ||
|   | 543ee79720 | ||
|   | 371db886b4 | ||
|   | ea8cd98361 | ||
|   | 3904ca38c0 | ||
|   | 58849f28a8 | ||
|   | 16527ceaf6 | ||
|   | d66c284bed | ||
|   | 693848280b | ||
|   | 396afaa181 | ||
|   | 05ed29133b | ||
|   | a31c1e8084 | ||
|   | 21891230f2 | ||
|   | 47da76c5a5 | ||
|   | 6017ff2318 | ||
|   | e16d604d0d | ||
|   | feec3e8255 | ||
|   | 82249cb50a | ||
|   | d3d5703f3f | ||
|   | fad417e553 | ||
|   | 5ba692f50c | ||
|   | 62fe92d922 | ||
|   | 512e7be74f | ||
|   | f799db67eb | ||
|   | 3e106a9dc5 | ||
|   | 727abbea8f | ||
|   | 76f81ece62 | ||
|   | 907e01e524 | ||
|   | b8ed23efa7 | ||
|   | 2b3bbf7e67 | ||
|   | 464fe627a3 | ||
|   | 6a9e39c470 | ||
|   | 7fec9a3cc6 | ||
|   | 008f6ef462 | ||
|   | 2440c108ca | ||
|   | 430baad8a4 | ||
|   | 51132e74b4 | ||
|   | a4f33e106a | ||
|   | baba3190e0 | ||
|   | 47b13aa5ea | ||
|   | 495654f9ff | ||
|   | a0de3fc643 | ||
|   | 95fec2100e | ||
|   | 623a879797 | ||
|   | 4c96d23f48 | ||
|   | 9bc8f6e9d7 | ||
|   | e00e6509ee | ||
|   | be5739508b | ||
|   | 38c867ea94 | ||
|   | 2a985ce6c0 | ||
|   | e4f3fb36f3 | ||
|   | b2f8792873 | ||
|   | 2065133e2d | ||
|   | 86da87f254 | ||
|   | 102a7f8723 | ||
|   | e9afc15719 | ||
|   | 08527dde9b | ||
|   | d9c3a3c9a9 | ||
|   | fe89f9e55e | ||
|   | 73802aabac | ||
|   | bc66733289 | ||
|   | f4c93b2251 | ||
|   | c079c598f2 | ||
|   | 8a2f0063d4 | ||
|   | dfe4b33f2f | ||
|   | 2f7cfa7ab2 | ||
|   | bdcb813ee6 | ||
|   | f0751007f3 | ||
|   | 6ad993704c | ||
|   | 796c3009c7 | ||
|   | 144ff5e716 | ||
|   | 054a1e5ea4 | ||
|   | a223f6056e | ||
|   | a1fd7704e0 | ||
|   | b94227efc9 | ||
|   | 3a7e782c07 | ||
|   | 8f6b33d790 | ||
|   | f476daa041 | ||
|   | acfde9458d | ||
|   | 82e969627a | ||
|   | 9de3c582c0 | ||
|   | 45cff2b51b | ||
|   | 670397a73e | ||
|   | 272eb37e9a | ||
|   | ca79e58ab9 | ||
|   | 977c049875 | ||
|   | aefbc1c9bf | ||
|   | c37a2e61ed | ||
|   | 7f6cd5e469 | ||
|   | f6d1f1985c | ||
|   | 222c31b306 | ||
|   | e99185f011 | ||
|   | 5c662f1230 | ||
|   | a65c7ee2fc | ||
|   | 743c4f554d | ||
|   | 838b2757eb | ||
|   | a92c9fc226 | ||
|   | ed052e0b0b | ||
|   | ae88d3054d | ||
|   | 7bb8b9039c | ||
|   | 3800b4b45c | ||
|   | cd498711bc | ||
|   | 40766b3375 | ||
|   | 411b600e14 | ||
|   | 0a0ad9a184 | ||
|   | 234bead59e | ||
|   | d274e45587 | ||
|   | 76de310986 | ||
|   | 0a0eb3f710 | ||
|   | 81d054a525 | ||
|   | 817f050bcd | ||
|   | 60ae685d1e | ||
|   | dc9670c439 | ||
|   | 2e185f4ec9 | ||
|   | 67f347f880 | ||
|   | 03c8079858 | ||
|   | 0cfc527328 | ||
|   | 81542fc6a8 | ||
|   | 5aced279d6 | ||
|   | 3f016f785f | ||
|   | a6427d081e | ||
|   | 8c7fbe20f9 | ||
|   | f66a820e14 | ||
|   | 469aba8ed0 | ||
|   | 4c7bdbb284 | ||
|   | 6e8e4ad5da | ||
|   | 2f33d654e4 | ||
|   | 760b6385f1 | ||
|   | 91527500f9 | ||
|   | e87d989ca3 | ||
|   | 64d61bae08 | ||
|   | 9862265465 | ||
|   | 624b7616d0 | ||
|   | d53f33bed8 | ||
|   | 435251ca41 | ||
|   | 02e039d792 | ||
|   | 324a0dd38f | ||
|   | cc77d93918 | ||
|   | 0ea7d8bd8c | ||
|   | 9f9333315e | ||
|   | 0d10b812fe | ||
|   | 2e6bea23ac | ||
|   | b4fe4f3d10 | ||
|   | ba93fcbda0 | ||
|   | 88d19a4ca4 | ||
|   | ca75dd0728 | ||
|   | 849b217143 | ||
|   | 9af6efba59 | ||
|   | 079d6f06ef | ||
|   | 9cf0757689 | ||
|   | b54c438948 | ||
|   | c3ff4bfdad | ||
|   | af7b9ea898 | ||
|   | e103676b65 | ||
|   | 09cd0468cf | ||
|   | 529aa754f5 | ||
|   | 17e395c2a8 | ||
|   | d50c1f39ab | ||
|   | ef6b25b3bb | ||
|   | 3c7e865555 | ||
|   | 7877ac0c3b | ||
|   | 1442e29d0e | ||
|   | 9a7e9b736e | ||
|   | c421e45fa0 | ||
|   | 8833d21ac3 | ||
|   | 1a3c522c94 | ||
|   | c55aa92d4f | ||
|   | 212a303347 | ||
|   | 3f3568d8af | ||
|   | 1e3bcfc8cd | ||
|   | a4ce9f6f05 | ||
|   | 65dc99744e | ||
|   | c6d4740b0c | ||
|   | 9f91c8b59d | ||
|   | 2b3b087c29 | ||
|   | e08d46aa76 | ||
|   | 9f35fa0fa3 | ||
|   | ff48996bbe | ||
|   | feccc97a14 | ||
|   | 77eec3d21d | ||
|   | ecaafd1b70 | ||
|   | 0d51997e46 | ||
|   | 463cbceb07 | ||
|   | 2fe4d97061 | ||
|   | eb38393cad | ||
|   | 1437c5c63f | ||
|   | 52f1d50902 | ||
|   | a839cb787e | ||
|   | f621fb2060 | ||
|   | 2ccd8b8838 | ||
|   | 7ef0746c52 | ||
|   | 6f609f0dd7 | ||
|   | ee2a30470a | ||
|   | 5d62e066e2 | ||
|   | e94219c5a3 | ||
|   | 8ed9634adf | ||
|   | 0aefa9599f | ||
|   | e279cf0575 | ||
|   | a3f0ef8e77 | ||
|   | 8eba05ed4a | ||
|   | e11fb2c09e | ||
|   | 2f78155723 | ||
|   | 6785221479 | ||
|   | 9bc410dd3d | ||
|   | 2491ab6bf9 | ||
|   | f615ed40cd | ||
|   | 430f2cafc1 | ||
|   | 0ad049da88 | ||
|   | 2c7691567b | ||
|   | 1d70d0fe94 | ||
|   | ac44f05811 | ||
|   | d99252f394 | ||
|   | b58c7ba7c5 | ||
|   | 8c5acd1a0a | ||
|   | b9b1ebf18c | ||
|   | 8ca132cef0 | ||
|   | a03bb90754 | ||
|   | d1c939f48a | ||
|   | 21b11f1b48 | ||
|   | 23c84a7803 | ||
|   | f9ab060403 | ||
|   | df7a5bf149 | ||
|   | c6e9270590 | ||
|   | 3e2e171407 | ||
|   | e205969b11 | ||
|   | 332f531a10 | ||
|   | 6bf19ecc34 | ||
|   | bae2c9bc63 | ||
|   | 5ac68f8df8 | ||
|   | c4afa069df | ||
|   | 1bfafdb44f | ||
|   | 1ef5bd7076 | ||
|   | 29176fa4f4 | ||
|   | 958c95732b | ||
|   | 44b0d4127c | ||
|   | 1418ec2416 | ||
|   | b51978f51c | ||
|   | b07361580a | ||
|   | 6ff45a754d | ||
|   | 06d3b94804 | ||
|   | d1b5ebad7d | ||
|   | 32d2df0f08 | ||
|   | f4ce813de9 | ||
|   | b44ac994d8 | ||
|   | 333948814c | ||
|   | 1a51ad6e01 | ||
|   | 22a5c11f0d | ||
|   | 51b22d1ad4 | ||
|   | bef5969580 | ||
|   | c6bf7bb9cd | ||
|   | 2a84d92cbf | ||
|   | 62de36b0da | ||
|   | 03a9aaeff7 | ||
|   | 45765e292d | ||
|   | e7c314fefc | ||
|   | faab79b41a | ||
|   | 6e28a26015 | ||
|   | 9150bf720d | ||
|   | 14204c9bfc | ||
|   | 45dbd4464b | ||
|   | 472255924a | ||
|   | 6d3ac2aa55 | ||
|   | 9ad03994d1 | ||
|   | 845864679c | ||
|   | b3b2149ebb | ||
|   | 0886dca385 | ||
|   | 53198ba4a7 | ||
|   | a9652ee1fd | ||
|   | 75caf2f01c | ||
|   | 65bab2666e | ||
|   | 6d93ae399a | ||
|   | 7239c2e31a | ||
|   | 35228f80b8 | ||
|   | 69ded881c6 | ||
|   | d9bce45db4 | ||
|   | 5e92b4faa9 | ||
|   | db501822ef | ||
|   | f269695d4a | ||
|   | 443af5f760 | ||
|   | 0e35350160 | ||
|   | 10bf497cda | ||
|   | 76eb629fc2 | ||
|   | 91de738563 | ||
|   | 43b7ef8110 | ||
|   | 99ef0b8cb4 | ||
|   | ef9948a967 | ||
|   | 0cf13f6393 | ||
|   | 4a8acfd123 | ||
|   | abaffc1908 | ||
|   | ea61d5c1a5 | ||
|   | 298f09402f | ||
|   | d4149d4b7a | ||
|   | 9a14931175 | ||
|   | 165eee102a | ||
|   | 6900c197cd | ||
|   | fe3c66a7c8 | ||
|   | 0efb4da0ee | ||
|   | 1d728475e3 | ||
|   | 827057b9f1 | ||
|   | ed7920d61e | ||
|   | c0379c8e25 | ||
|   | 00a0e64fdd | ||
|   | 0dc60debea | ||
|   | c44ae5888c | ||
|   | b9495cd1bb | ||
|   | bfec381933 | ||
|   | 2dddb8df69 | ||
|   | d30397e9c0 | ||
|   | d9597549fd | ||
|   | 13512b4146 | ||
|   | 49e546919a | ||
|   | 586015c2ed | ||
|   | 4a7e067d1a | ||
|   | 9bc0b7f183 | ||
|   | cd4dfc9861 | ||
|   | 1716452203 | ||
|   | 09bdbc1224 | ||
|   | 978b3a64c5 | ||
|   | 651547ef20 | ||
|   | b4d95977d0 | ||
|   | 5d8bb897db | ||
|   | 84c8ecb372 | ||
|   | 61abe5b948 | ||
|   | a5b573eaaa | ||
|   | cbb32f82eb | ||
|   | ca9334b2df | ||
|   | 959ed7f866 | ||
|   | a5c0411be0 | ||
|   | 32e1303742 | ||
|   | 7263b6fe89 | ||
|   | 46a4070f84 | ||
|   | c3c155a1ed | ||
|   | b067105660 | ||
|   | 15ca18848e | ||
|   | 67c9e2ead6 | ||
|   | 3681177be4 | ||
|   | 6eb814ef0b | ||
|   | bcc695234c | ||
|   | ad16a6fc1b | ||
|   | 478b7eeb65 | ||
|   | 151a153dc9 | ||
|   | ad131854ca | ||
|   | 0bd0eb9e59 | ||
|   | 54827cacb9 | ||
|   | e3a4a16507 | ||
|   | cf16fd0104 | ||
|   | 21b00ac6ca | ||
|   | 57e6f3080c | ||
|   | 89744100ce | ||
|   | a718f9bbfd | ||
|   | e81bc4f044 | ||
|   | 4dbacd79ae | ||
|   | ae74d54451 | ||
|   | dc316c5669 | ||
|   | e9f04256c9 | ||
|   | e1aabd70e8 | ||
|   | a9dc1b32e0 | ||
|   | 01d847ae4e | ||
|   | 61e2c3444a | ||
|   | 5363b0f810 | ||
|   | f0e1a8823e | ||
|   | 7be5937aa0 | ||
|   | 8f43055b0e | ||
|   | 953a81b299 | ||
|   | 1d34ae7934 | ||
|   | 2cabb2666b | ||
|   | 0b59bb1a29 | ||
|   | c1e7d74b96 | ||
|   | cc262d6595 | ||
|   | 61d43b118b | ||
|   | 989d8181dd | ||
|   | cffc157d98 | ||
|   | 2a70619577 | ||
|   | b91919bffa | ||
|   | fb7a4bf880 | ||
|   | 4b41799a90 | ||
|   | 123f39a21b | ||
|   | cadab12737 | ||
|   | 742055c43b | ||
|   | 3315228a90 | ||
|   | fa73b41fa7 | ||
|   | a474eafe84 | ||
|   | 442fcf921c | ||
|   | fb0923f3ab | ||
|   | 5bb943f845 | ||
|   | a3109953d0 | ||
|   | ff266c8c79 | ||
|   | ef2e02098d | ||
|   | 93598d3a51 | ||
|   | 53aebcfb1e | ||
|   | bb2467d2ac | ||
|   | 05c063b61d | ||
|   | f72205c401 | ||
|   | 11862bbaee | ||
|   | ef1d1303f4 | ||
|   | b84ab656d8 | ||
|   | 8d846993ee | ||
|   | 1f84626278 | ||
|   | b4cfe6e9c0 | ||
|   | 94a861e318 | ||
|   | 1421e775d2 | ||
|   | f8eab72c7a | ||
|   | 2afd2f0d3b | ||
|   | 2b72f40cec | ||
|   | ff5c0d6361 | ||
|   | edd4b477f8 | ||
|   | 198b14e5fc | ||
|   | f9fea265cf | ||
|   | 668601ca23 | ||
|   | 04fcb33d7e | ||
|   | 99406f2099 | ||
|   | 632b3cb9ae | ||
|   | f31d2486c9 | ||
|   | 7dea682713 | ||
|   | 7955ddceb2 | ||
|   | 8a6b254799 | ||
|   | 94562cb5cf | ||
|   | 0bf04c04f9 | ||
|   | dc29018ec0 | ||
|   | b064c124e7 | ||
|   | b6412afe96 | ||
|   | c7e64f40f9 | ||
|   | 0f254dca13 | ||
|   | e0f2ff36af | ||
|   | 3546e7b51e | ||
|   | 5e7c3ed46a | ||
|   | 13ec1aafa0 | ||
|   | f521bce9e6 | ||
|   | c78209604c | ||
|   | 8fe4cfecb6 | ||
|   | a5a2df4956 | ||
|   | 2fa5e4679f | ||
|   | 57af984e68 | ||
|   | 442e840a53 | ||
|   | 4e88186903 | ||
|   | f387378b69 | ||
|   | f894e6b4ea | ||
|   | e33f5996f3 | ||
|   | 8f7f1ff7dd | ||
|   | 54a0e52e05 | ||
|   | 3c33f7d294 | ||
|   | b2431b982f | ||
|   | 8d6d619eed | ||
|   | 70e332b9e8 | ||
|   | 0a53c42a8a | ||
|   | 42a66ad49e | ||
|   | 2d1d70b3b6 | ||
|   | 0ccc92dc1e | ||
|   | c9217a419a | ||
|   | c9157cc13b | ||
|   | 2b1270381d | ||
|   | cdb8ee3946 | ||
|   | 1e3586621b | ||
|   | c07e9ac29d | ||
|   | 6e3bb48574 | ||
|   | a180395832 | ||
|   | 3dfcc6b0be | ||
|   | 16d7ae62bd | ||
|   | eea3cb32a5 | ||
|   | cb1df5217e | ||
|   | 24ef80351c | ||
|   | 670fe8590c | ||
|   | bb878a1ccf | ||
|   | 4daea7d7e6 | ||
|   | 3b20747192 | ||
|   | 403e30feba | ||
|   | f58c73b7f1 | ||
|   | 2a8477cbda | ||
|   | f5bee7b691 | ||
|   | 8c077a7373 | ||
|   | 4e07b51460 | ||
|   | 44294e1a88 | ||
|   | 25a0a68cde | ||
|   | 30c048723c | ||
|   | 85dc669ddf | ||
|   | 397c1a1c2b | ||
|   | f1d3e35aac | ||
|   | 0e69201f05 | ||
|   | f8fdaf5c1f | ||
|   | 1f3b81338c | ||
|   | 5921d3a42a | ||
|   | dbbc85719e | ||
|   | 0ddb6c3f10 | ||
|   | 3e259021d0 | ||
|   | f760a9d0c2 | ||
|   | f69facc842 | ||
|   | e17638bc06 | ||
|   | 399c0d337a | ||
|   | 856eb479e4 | ||
|   | 1c7de1d668 | ||
|   | 8a8f24f93e | ||
|   | e13281726c | ||
|   | 0ddf4355a1 | ||
|   | 7c8a3ca1a8 | ||
|   | e76dba0f84 | ||
|   | aababe1a87 | ||
|   | 436b0624e7 | ||
|   | 0a37d1c15c | ||
|   | 793269731d | ||
|   | 3068738a70 | ||
|   | b69a4fe8b5 | ||
|   | 665d84f40a | ||
|   | 4734b390a5 | ||
|   | 50d0721c39 | ||
|   | 9079f15f52 | ||
|   | 60b460d594 | ||
|   | 98f42d9b3b | ||
|   | 23adcb544b | ||
|   | e6b24d2e3c | ||
|   | ea3e736a14 | ||
|   | a5c39b829a | ||
|   | 1ec333ee5a | ||
|   | bbae93aa16 | ||
|   | cfa0d8b7c0 | ||
|   | 7ac41652f7 | ||
|   | 24a510bc2e | ||
|   | 0498540439 | ||
|   | da94c2e1e5 | ||
|   | bcdd74514f | ||
|   | 1d0c36a0ab | ||
|   | be1dcb7264 | ||
|   | a34ea8f131 | ||
|   | 7fbfa6a52b | ||
|   | 799ef3380d | ||
|   | d5087858ca | ||
|   | d9fc5650b8 | ||
|   | 9ea028f5ab | ||
|   | aa309087fd | ||
|   | 57bdd9d3bf | ||
|   | dc9871fe5b | ||
|   | 3255ca3ea4 | ||
|   | 4a1e6dcc32 | ||
|   | f644a4ea78 | ||
|   | 85b7405963 | ||
|   | c854f436bf | ||
|   | a06ef6fe25 | ||
|   | e5be8b7f67 | ||
|   | 906ae730e9 | ||
|   | 92df7747b2 | ||
|   | 0ee8f5efe3 | ||
|   | 4b5b0b065d | ||
|   | 15cf8d2a6d | ||
|   | ef0ba9483f | ||
|   | 70500cf21e | ||
|   | 696d256fa0 | ||
|   | 70e8ad7104 | ||
|   | f785dcac3d | ||
|   | aa54ef10ae | ||
|   | 14946da163 | ||
|   | 5f9bcfbefe | ||
|   | aa2eed2c38 | ||
|   | a7da6cf172 | ||
|   | 6bff6e9cff | ||
|   | 023d369b74 | ||
|   | c9d4241afe | ||
|   | e1279c29c2 | ||
|   | 2d6fb1c45e | ||
|   | ae76ae4025 | ||
|   | 9614ec4c6a | ||
|   | c4e90b810d | ||
|   | 887ce3377e | ||
|   | 6ef47249ab | ||
|   | 3a0df56605 | ||
|   | 98cdee7f03 | ||
|   | b3e2a6a860 | ||
|   | 55410f026b | ||
|   | f2611f64ac | ||
|   | d788bd8323 | ||
|   | 9eb108f13e | ||
|   | eebd64bedb | ||
|   | 21504f1329 | ||
|   | ff6bae936d | ||
|   | 62523c815e | ||
|   | 0f5465c5da | ||
|   | e4cba70008 | ||
|   | 692b993eee | ||
|   | 35e3a479cd | ||
|   | bb7ff27d04 | ||
|   | 0acc5e33b3 | ||
|   | cb5187fd8d | ||
|   | 160c6e6554 | ||
|   | a173179b03 | ||
|   | e73497e4b7 | ||
|   | 835ef01a70 | ||
|   | a1335aecfb | ||
|   | c553312fd5 | ||
|   | 3adc7ca22a | ||
|   | 441e603bc0 | ||
|   | 7511df61b3 | ||
|   | 91d3d2ad1f | ||
|   | 6692b618ea | ||
|   | 2052149dc1 | ||
|   | 7b8237afae | ||
|   | 859a984ec8 | ||
|   | 89932b325d | ||
|   | dac85757b3 | ||
|   | 3b0cec9db6 | ||
|   | 17749bb14a | ||
|   | c56dd4172e | ||
|   | d2335485f2 | ||
|   | cf69dd644a | ||
|   | 8df6af62d7 | ||
|   | 3c3bb70b01 | ||
|   | d8a4eaf026 | ||
|   | 2402010d24 | ||
|   | 16c804106a | ||
|   | b1ef9361f3 | ||
|   | 766a26128d | ||
|   | 5b2dce6cf6 | ||
|   | bee9be534c | ||
|   | 4b49331d97 | ||
|   | f9513ca802 | ||
|   | 3de13a4d9e | ||
|   | 8a7df954e5 | ||
|   | 3706b53e65 | ||
|   | 8a8aaf3297 | ||
|   | 41a5639711 | ||
|   | 5d8f9f1a5a | ||
|   | 5124cd4b77 | ||
|   | 0cbf66996f | ||
|   | e922fdc5d0 | ||
|   | 0addbaa9a8 | ||
|   | 8176fb7bad | ||
|   | baae3592d3 | ||
|   | 6a40e18193 | ||
|   | 2cdb6b811f | ||
|   | 8a8aa1337b | ||
|   | 3fe5647a15 | ||
|   | fec1245811 | ||
|   | ccab6eb7c4 | ||
|   | c9f6e2e257 | ||
|   | f0d3a4e4b7 | ||
|   | 41295e0c4d | ||
|   | 2abd0265c8 | ||
|   | 1e09ccb4d9 | ||
|   | 11e1d04dd1 | ||
|   | f140f5f14b | ||
|   | 5898534c23 | ||
|   | 7836336689 | ||
|   | f96865c2cb | ||
|   | e475893fd7 | ||
|   | 75a37adcd1 | ||
|   | c3b1070b83 | ||
|   | 339ca7accf | ||
|   | 0b02e8116c | ||
|   | 8f973661f4 | ||
|   | c5a73a5c19 | ||
|   | 6a90340b14 | ||
|   | 46abbfe224 | ||
|   | 145d4e4bd5 | ||
|   | b3ba79a3ba | ||
|   | c69db035ee | ||
|   | 60a7eaf2bb | ||
|   | 3f43567c8f | ||
|   | e690f6d487 | ||
|   | 3d4b4e04c5 | ||
|   | 62dd8f35c0 | ||
|   | 1468dfd6b6 | ||
|   | 40e92721c1 | ||
|   | 204e940dcb | ||
|   | 98aa9bd3fe | ||
|   | 041531e96d | ||
|   | c2a188f7fe | ||
|   | 1a1d37a2d0 | ||
|   | 214649ec20 | ||
|   | e3866eeb29 | ||
|   | 20db216275 | ||
|   | f404fe0570 | ||
|   | bef4361736 | ||
|   | aa991b62f4 | ||
|   | 8dfe0f4373 | ||
|   | ffedb79670 | ||
|   | 0e23935455 | ||
|   | 4f62320e7b | ||
|   | aee3bd3a80 | ||
|   | c992b89b2f | ||
|   | fc5c9647d8 | ||
|   | 3a238e9d4b | ||
|   | 9d9fea49ca | ||
|   | e21131d67e | ||
|   | 1f02d0f6d0 | ||
|   | 830fde8007 | ||
|   | c44ce77e95 | ||
|   | ab318ef99e | ||
|   | c86c2661af | ||
|   | dabb222511 | ||
|   | ef13b3a36c | ||
|   | 6fb9081394 | ||
|   | 1ba38b3902 | ||
|   | dc06a132bc | ||
|   | 644b4f88ac | ||
|   | c97197b61a | ||
|   | 3e97d29bcf | ||
|   | a5ea214553 | ||
|   | 91c6ae229e | ||
|   | e18f4c843a | ||
|   | 0f103d5853 | ||
|   | 56f10e238b | ||
|   | 5baa2e9069 | ||
|   | 7bf83371d5 | ||
|   | 36c575023e | ||
|   | 7eadc74f6c | ||
|   | 3ad06c406c | ||
|   | c68e37a8c4 | ||
|   | e66496eae7 | ||
|   | e6b951c62a | ||
|   | 5279226f36 | ||
|   | 31b552ab51 | ||
|   | f5e53cd60f | ||
|   | 4a48f59d27 | ||
|   | bc2c63bf1f | ||
|   | b56a757f2e | ||
|   | 4692ed4b4a | ||
|   | 615bbcae74 | ||
|   | 7737c6aee1 | ||
|   | f7c0499158 | ||
|   | 9ebcefee00 | ||
|   | b18b5c4f43 | ||
|   | 4752b0772f | ||
|   | 957e319649 | ||
|   | a8978a0d4d | ||
|   | 10712c5ec0 | ||
|   | 83c39f57f0 | ||
|   | 173757cfa2 | ||
|   | c6be73dba2 | ||
|   | ccf293906a | ||
|   | 0f4c0b95e2 | ||
|   | 82973e7608 | ||
|   | c011bccc45 | ||
|   | 8473caf5a6 | ||
|   | 85b038525b | ||
|   | 51a5c3c664 | ||
|   | d6cda9df0a | ||
|   | ca7d09d1cb | ||
|   | 4ab478c49c | ||
|   | 1a1c1fd0da | ||
|   | 370951ab67 | ||
|   | a0632a572a | ||
|   | 10601e7760 | ||
|   | 088ce9c2ad | ||
|   | e1a69b97db | ||
|   | a2fd45bb95 | ||
|   | 01ddd8eaa8 | ||
|   | 22fa57b82c | ||
|   | 92a51ca546 | ||
|   | 6a9234e634 | ||
|   | e8d062a95a | ||
|   | 3394d64f6c | ||
|   | 0fd5a277ed | ||
|   | 8eef2818fa | ||
|   | a15703d5af | ||
|   | 34d8165edd | ||
|   | 1759add2b6 | ||
|   | dd80f1b997 | ||
|   | 90ff602ecd | ||
|   | 0099ff1321 | 
							
								
								
									
										18
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | # Set the default behavior, in case people don't have core.autocrlf set. | ||||||
|  | * text eol=lf | ||||||
|  |  | ||||||
|  | # Explicitly declare text files you want to always be normalized and converted | ||||||
|  | # to native line endings on checkout. | ||||||
|  | # *.c text | ||||||
|  | # *.h text | ||||||
|  |  | ||||||
|  | # Declare files that will always have CRLF line endings on checkout. | ||||||
|  | *.cmd text eol=crlf | ||||||
|  | *.bat text eol=crlf | ||||||
|  |  | ||||||
|  | # Denote all files that are truly binary and should not be modified. | ||||||
|  | chromeos/** binary | ||||||
|  | *.jar binary | ||||||
|  | *.exe binary | ||||||
|  | *.apk binary | ||||||
|  | *.png binary | ||||||
							
								
								
									
										22
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +1,20 @@ | |||||||
| obj | out | ||||||
| libs | *.zip | ||||||
|  | *.jks | ||||||
|  | *.apk | ||||||
|  | config.prop | ||||||
|  |  | ||||||
|  | # Manually dumped jars | ||||||
|  | snet/libs | ||||||
|  |  | ||||||
|  | # Built binaries | ||||||
|  | native/out | ||||||
|  |  | ||||||
|  | # Android Studio / Gradle | ||||||
|  | *.iml | ||||||
|  | .gradle | ||||||
|  | /local.properties | ||||||
|  | /.idea | ||||||
|  | /build | ||||||
|  | /captures | ||||||
|  | .externalNativeBuild | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,21 @@ | |||||||
| [submodule "selinux"] | [submodule "selinux"] | ||||||
| 	path = selinux | 	path = native/jni/external/selinux | ||||||
| 	url = https://github.com/topjohnwu/selinux | 	url = https://github.com/topjohnwu/selinux.git | ||||||
| [submodule "jni/sepolicy-inject"] | [submodule "busybox"] | ||||||
| 	path = jni/sepolicy-inject | 	path = native/jni/external/busybox | ||||||
| 	url = https://github.com/topjohnwu/sepolicy-inject | 	url = https://github.com/topjohnwu/ndk-busybox.git | ||||||
|  | [submodule "dtc"] | ||||||
|  | 	path = native/jni/external/dtc | ||||||
|  | 	url = https://github.com/dgibson/dtc | ||||||
|  | [submodule "lz4"] | ||||||
|  | 	path = native/jni/external/lz4 | ||||||
|  | 	url = https://github.com/lz4/lz4.git | ||||||
|  | [submodule "bzip2"] | ||||||
|  | 	path = native/jni/external/bzip2 | ||||||
|  | 	url = https://github.com/nemequ/bzip2.git | ||||||
|  | [submodule "xz"] | ||||||
|  | 	path = native/jni/external/xz | ||||||
|  | 	url = https://github.com/xz-mirror/xz.git | ||||||
|  | [submodule "nanopb"] | ||||||
|  | 	path = native/jni/external/nanopb | ||||||
|  | 	url = https://github.com/nanopb/nanopb.git | ||||||
|   | |||||||
							
								
								
									
										43
									
								
								README.MD
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								README.MD
									
									
									
									
									
								
							| @@ -1,4 +1,41 @@ | |||||||
| # Magisk | # Magisk | ||||||
| Static binaries included: | [XDA Announcement Thread](https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445) | ||||||
| * Busybox: http://forum.xda-developers.com/android/software-hacking/tool-busybox-flashable-archs-t3348543 |  | ||||||
| * Open source su binary: https://github.com/seSuperuser/Superuser | ## Building Environment Requirements | ||||||
|  | 1. Python 3.5+: run `build.py` script | ||||||
|  | 2. Java Development Kit (JDK) 8: Compile Magisk Manager and sign zips | ||||||
|  | 3. Latest Android SDK: set `ANDROID_HOME` environment variable to the path to Android SDK | ||||||
|  | 4. Android NDK: Install NDK along with SDK (`$ANDROID_HOME/ndk-bundle`), or optionally specify a custom path `ANDROID_NDK_HOME` | ||||||
|  | 5. (Windows Only) Python package Colorama: Install with `pip install colorama`, used for ANSI color codes | ||||||
|  |  | ||||||
|  | ## Building Notes and Instructions | ||||||
|  | 1. Clone sources with submodules: `git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git` | ||||||
|  | 2. Building is supported on macOS, Linux, and Windows. Official releases are built and tested with [FrankeNDK](https://github.com/topjohnwu/FrankeNDK); point `ANDROID_NDK_HOME` to FrankeNDK if you want to use it for compiling. | ||||||
|  | 3. Set configurations in `config.prop`. A sample file `config.prop.sample` is provided as an example. | ||||||
|  | 4. Run `build.py` with argument `-h` to see the built-in help message. The `-h` option also works for each supported actions, e.g. `./build.py binary -h` | ||||||
|  | 5. By default, `build.py` build binaries and Magisk Manager in debug mode. If you want to build Magisk Manager in release mode (via the `-r, --release` flag), you need a Java Keystore file `release-key.jks` (only `JKS` format is supported) to sign APKs and zips. For more information, check out [Google's Official Documentation](https://developer.android.com/studio/publish/app-signing.html#signing-manually). | ||||||
|  |  | ||||||
|  | ## Bug Reports | ||||||
|  | **Make sure to install the latest [Canary Build](https://forum.xda-developers.com/apps/magisk/dev-magisk-canary-channel-bleeding-edge-t3839337) before reporting any bugs!** Please **DO NOT** report bugs that is already fixed upstream. | ||||||
|  |  | ||||||
|  | Follow the instructions in the [Canary Channel XDA Thread](https://forum.xda-developers.com/apps/magisk/dev-magisk-canary-channel-bleeding-edge-t3839337), and report a bug either by opening an issue on GitHub or directly in the thread. | ||||||
|  |  | ||||||
|  | ## Documentation | ||||||
|  | [Link to Documentation](docs/README.MD) | ||||||
|  |  | ||||||
|  | ## License | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | Magisk, including all git submodules are free software: | ||||||
|  | you can redistribute it and/or modify it under the terms of the  | ||||||
|  | GNU General Public License as published by the Free Software Foundation,  | ||||||
|  | either version 3 of the License, or (at your option) any later version. | ||||||
|  |  | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  |  | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | ``` | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								app/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								app/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | *.iml | ||||||
|  | .gradle | ||||||
|  | /local.properties | ||||||
|  | .idea/ | ||||||
|  | /build | ||||||
|  | app/release | ||||||
|  | *.hprof | ||||||
|  | .externalNativeBuild/ | ||||||
|  | src/full/res/raw/util_functions.sh | ||||||
|  | public.certificate.x509.pem | ||||||
|  | private.key.pk8 | ||||||
|  | *.apk | ||||||
							
								
								
									
										7
									
								
								app/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | # Magisk Manager | ||||||
|  | This repo is no longer an independent component. It is merged into the [Magisk Project](https://github.com/topjohnwu/Magisk). | ||||||
|  |  | ||||||
|  | # Translations | ||||||
|  | The default (English) strings are mainly in `src/full/res/values/strings.xml`; some are scattered in `src/main/res/values/strings.xml` and `src/stub/res/values/strings.xml`.   | ||||||
|  | Translations are highly appreciated via pull requests here on Github.   | ||||||
|  | Place translated XMLs in the corresponding locale folder. | ||||||
							
								
								
									
										82
									
								
								app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								app/build.gradle
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | |||||||
|  | apply plugin: 'com.android.application' | ||||||
|  |  | ||||||
|  | def configProps = new Properties() | ||||||
|  | def configPath = project.hasProperty('configPath') ? project.configPath : rootProject.file('config.prop') | ||||||
|  | configProps.load(new FileInputStream(configPath)) | ||||||
|  |  | ||||||
|  | android { | ||||||
|  |     compileSdkVersion rootProject.ext.compileSdkVersion | ||||||
|  |     buildToolsVersion rootProject.ext.buildToolsVersion | ||||||
|  |  | ||||||
|  |     defaultConfig { | ||||||
|  |         applicationId "com.topjohnwu.magisk" | ||||||
|  |         minSdkVersion 21 | ||||||
|  |         targetSdkVersion rootProject.ext.compileSdkVersion | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     signingConfigs { | ||||||
|  |         config { | ||||||
|  |             storeFile rootProject.file('release-key.jks') | ||||||
|  |             storePassword configProps['keyStorePass'] | ||||||
|  |             keyAlias configProps['keyAlias'] | ||||||
|  |             keyPassword configProps['keyPass'] | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     buildTypes { | ||||||
|  |         debug { | ||||||
|  |             // If keystore exists, sign the APK with custom signature | ||||||
|  |             if (signingConfigs.config.storeFile.exists()) | ||||||
|  |                 signingConfig signingConfigs.config | ||||||
|  |         } | ||||||
|  |         release { | ||||||
|  |             minifyEnabled true | ||||||
|  |             shrinkResources true | ||||||
|  |             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||||||
|  |             signingConfig signingConfigs.config | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     flavorDimensions "mode" | ||||||
|  |  | ||||||
|  |     productFlavors { | ||||||
|  |         full { | ||||||
|  |             versionName configProps['appVersion'] | ||||||
|  |             versionCode configProps['appVersionCode'] as Integer | ||||||
|  |             javaCompileOptions { | ||||||
|  |                 annotationProcessorOptions { | ||||||
|  |                     argument('butterknife.debuggable', 'false') | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         stub { | ||||||
|  |             versionCode 1 | ||||||
|  |             versionName "stub" | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     compileOptions { | ||||||
|  |         sourceCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |         targetCompatibility JavaVersion.VERSION_1_8 | ||||||
|  |     } | ||||||
|  |     dexOptions { | ||||||
|  |         preDexLibraries true | ||||||
|  |         javaMaxHeapSize "2g" | ||||||
|  |     } | ||||||
|  |     lintOptions { | ||||||
|  |         disable 'MissingTranslation' | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | dependencies { | ||||||
|  |     implementation fileTree(include: ['*.jar'], dir: 'libs') | ||||||
|  |     fullImplementation project(':utils') | ||||||
|  |     implementation "androidx.core:core:${rootProject.ext.androidXVersion}" | ||||||
|  |     fullImplementation "androidx.preference:preference:${rootProject.ext.androidXVersion}" | ||||||
|  |     fullImplementation "androidx.recyclerview:recyclerview:${rootProject.ext.androidXVersion}" | ||||||
|  |     fullImplementation "androidx.cardview:cardview:${rootProject.ext.androidXVersion}" | ||||||
|  |     fullImplementation "com.google.android.material:material:${rootProject.ext.androidXVersion}" | ||||||
|  |     fullImplementation 'com.github.topjohnwu:libsu:2.0.2' | ||||||
|  |     fullImplementation 'com.atlassian.commonmark:commonmark:0.11.0' | ||||||
|  |     fullImplementation 'org.kamranzafar:jtar:2.3' | ||||||
|  | } | ||||||
							
								
								
									
										35
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | # Add project specific ProGuard rules here. | ||||||
|  | # By default, the flags in this file are appended to flags specified | ||||||
|  | # in /Users/topjohnwu/Library/Android/sdk/tools/proguard/proguard-android.txt | ||||||
|  | # You can edit the include path and order by changing the proguardFiles | ||||||
|  | # directive in build.gradle. | ||||||
|  | # | ||||||
|  | # For more details, see | ||||||
|  | #   http://developer.android.com/guide/developing/tools/proguard.html | ||||||
|  |  | ||||||
|  | # Add any project specific keep options here: | ||||||
|  |  | ||||||
|  | # If your project uses WebView with JS, uncomment the following | ||||||
|  | # and specify the fully qualified class name to the JavaScript interface | ||||||
|  | # class: | ||||||
|  | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||||||
|  | #   public *; | ||||||
|  | #} | ||||||
|  |  | ||||||
|  | # BouncyCastle | ||||||
|  | -keep class org.bouncycastle.jcajce.provider.asymmetric.rsa.**SHA1** { *; } | ||||||
|  | -keep class org.bouncycastle.jcajce.provider.asymmetric.RSA** { *; } | ||||||
|  | -keep class org.bouncycastle.jcajce.provider.digest.SHA1** { *; } | ||||||
|  | -dontwarn javax.naming.** | ||||||
|  |  | ||||||
|  | # Snet extention | ||||||
|  | -keepclassmembers class com.topjohnwu.magisk.utils.ISafetyNetHelper { *; } | ||||||
|  |  | ||||||
|  | # Strip logging | ||||||
|  | -assumenosideeffects class com.topjohnwu.magisk.utils.Logger { | ||||||
|  |   public *** debug(...); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Excessive obfuscation | ||||||
|  | -repackageclasses 'a' | ||||||
|  | -allowaccessmodification | ||||||
							
								
								
									
										105
									
								
								app/src/full/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								app/src/full/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,105 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|  |     package="com.topjohnwu.magisk"> | ||||||
|  |  | ||||||
|  |     <uses-permission android:name="android.permission.VIBRATE" /> | ||||||
|  |     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> | ||||||
|  |     <uses-permission android:name="android.permission.USE_FINGERPRINT" /> | ||||||
|  |     <uses-permission android:name="android.permission.WAKE_LOCK" /> | ||||||
|  |  | ||||||
|  |     <application | ||||||
|  |         android:name="a.q" | ||||||
|  |         android:theme="@style/AppTheme" | ||||||
|  |         tools:ignore="GoogleAppIndexingWarning"> | ||||||
|  |  | ||||||
|  |         <!-- Activities --> | ||||||
|  |  | ||||||
|  |         <activity | ||||||
|  |             android:name="a.b" | ||||||
|  |             android:configChanges="orientation|screenSize" | ||||||
|  |             android:exported="true" /> | ||||||
|  |         <activity | ||||||
|  |             android:name="a.c" | ||||||
|  |             android:configChanges="orientation|screenSize" | ||||||
|  |             android:exported="true" | ||||||
|  |             android:theme="@style/SplashTheme"> | ||||||
|  |             <intent-filter> | ||||||
|  |                 <action android:name="android.intent.action.MAIN" /> | ||||||
|  |                 <category android:name="android.intent.category.LAUNCHER" /> | ||||||
|  |             </intent-filter> | ||||||
|  |         </activity> | ||||||
|  |         <activity | ||||||
|  |             android:name="a.d" | ||||||
|  |             android:theme="@style/AppTheme.StatusBar" /> | ||||||
|  |         <activity | ||||||
|  |             android:name="a.e" | ||||||
|  |             android:theme="@style/AppTheme.StatusBar"/> | ||||||
|  |         <activity | ||||||
|  |             android:name="a.f" | ||||||
|  |             android:configChanges="keyboardHidden|orientation|screenSize" | ||||||
|  |             android:screenOrientation="nosensor" | ||||||
|  |             android:theme="@style/AppTheme.StatusBar" /> | ||||||
|  |         <activity | ||||||
|  |             android:name="a.g" | ||||||
|  |             android:theme="@style/AppTheme.Translucent" /> | ||||||
|  |  | ||||||
|  |         <!-- Superuser --> | ||||||
|  |  | ||||||
|  |         <activity | ||||||
|  |             android:name="a.p" | ||||||
|  |             android:excludeFromRecents="true" | ||||||
|  |             android:launchMode="singleTask" | ||||||
|  |             android:taskAffinity="internal.superuser" | ||||||
|  |             android:theme="@style/SuRequest" /> | ||||||
|  |  | ||||||
|  |         <activity | ||||||
|  |             android:name=".superuser.RequestActivity" | ||||||
|  |             android:excludeFromRecents="true" | ||||||
|  |             android:launchMode="singleTask" | ||||||
|  |             android:taskAffinity="internal.superuser" | ||||||
|  |             android:theme="@style/AppTheme.Translucent" /> | ||||||
|  |  | ||||||
|  |         <receiver android:name=".superuser.SuReceiver" /> | ||||||
|  |  | ||||||
|  |         <!-- Receiver --> | ||||||
|  |  | ||||||
|  |         <receiver android:name="a.h"> | ||||||
|  |             <intent-filter> | ||||||
|  |                 <action android:name="android.intent.action.BOOT_COMPLETED" /> | ||||||
|  |             </intent-filter> | ||||||
|  |         </receiver> | ||||||
|  |         <receiver android:name="a.i"> | ||||||
|  |             <intent-filter> | ||||||
|  |                 <action android:name="android.intent.action.PACKAGE_REPLACED" /> | ||||||
|  |                 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" /> | ||||||
|  |                 <data android:scheme="package" /> | ||||||
|  |             </intent-filter> | ||||||
|  |         </receiver> | ||||||
|  |         <receiver android:name="a.j" /> | ||||||
|  |         <receiver android:name="a.k" /> | ||||||
|  |         <receiver android:name="a.l"> | ||||||
|  |             <intent-filter> | ||||||
|  |                 <action android:name="android.intent.action.LOCALE_CHANGED" /> | ||||||
|  |             </intent-filter> | ||||||
|  |         </receiver> | ||||||
|  |  | ||||||
|  |         <!-- Service --> | ||||||
|  |  | ||||||
|  |         <service | ||||||
|  |             android:name="a.m" | ||||||
|  |             android:exported="true" | ||||||
|  |             android:permission="android.permission.BIND_JOB_SERVICE" /> | ||||||
|  |         <service | ||||||
|  |             android:name="a.n" | ||||||
|  |             android:exported="true" | ||||||
|  |             android:permission="android.permission.BIND_JOB_SERVICE" /> | ||||||
|  |  | ||||||
|  |         <!-- Hardcode GMS version --> | ||||||
|  |         <meta-data | ||||||
|  |             android:name="com.google.android.gms.version" | ||||||
|  |             android:value="12451000" /> | ||||||
|  |  | ||||||
|  |     </application> | ||||||
|  |  | ||||||
|  | </manifest> | ||||||
							
								
								
									
										10
									
								
								app/src/full/java/a/a.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/full/java/a/a.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.utils.BootSigner; | ||||||
|  |  | ||||||
|  | import androidx.annotation.Keep; | ||||||
|  |  | ||||||
|  | @Keep | ||||||
|  | public class a extends BootSigner { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/b.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/b.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.MainActivity; | ||||||
|  |  | ||||||
|  | public class b extends MainActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/c.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/c.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.SplashActivity; | ||||||
|  |  | ||||||
|  | public class c extends SplashActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/d.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/d.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.AboutActivity; | ||||||
|  |  | ||||||
|  | public class d extends AboutActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/e.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/e.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.DonationActivity; | ||||||
|  |  | ||||||
|  | public class e extends DonationActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/f.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/f.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.FlashActivity; | ||||||
|  |  | ||||||
|  | public class f extends FlashActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/h.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/h.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.receivers.BootReceiver; | ||||||
|  |  | ||||||
|  | public class h extends BootReceiver { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/i.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/i.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.receivers.PackageReceiver; | ||||||
|  |  | ||||||
|  | public class i extends PackageReceiver { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/j.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/j.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.receivers.ManagerUpdate; | ||||||
|  |  | ||||||
|  | public class j extends ManagerUpdate { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/k.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/k.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.receivers.RebootReceiver; | ||||||
|  |  | ||||||
|  | public class k extends RebootReceiver { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/l.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/l.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.receivers.ShortcutReceiver; | ||||||
|  |  | ||||||
|  | public class l extends ShortcutReceiver { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/m.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/m.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.services.OnBootService; | ||||||
|  |  | ||||||
|  | public class m extends OnBootService { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/n.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/n.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.services.UpdateCheckService; | ||||||
|  |  | ||||||
|  | public class n extends UpdateCheckService { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								app/src/full/java/a/o.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								app/src/full/java/a/o.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import android.content.Context; | ||||||
|  | import android.util.AttributeSet; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.components.AboutCardRow; | ||||||
|  |  | ||||||
|  | public class o extends AboutCardRow { | ||||||
|  |     /* stub */ | ||||||
|  |  | ||||||
|  |     public o(Context context) { | ||||||
|  |         super(context); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public o(Context context, AttributeSet attrs) { | ||||||
|  |         super(context, attrs); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public o(Context context, AttributeSet attrs, int defStyleAttr) { | ||||||
|  |         super(context, attrs, defStyleAttr); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/p.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/p.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.SuRequestActivity; | ||||||
|  |  | ||||||
|  | public class p extends SuRequestActivity { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								app/src/full/java/a/q.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/src/full/java/a/q.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package a; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.MagiskManager; | ||||||
|  |  | ||||||
|  | public class q extends MagiskManager { | ||||||
|  |     /* stub */ | ||||||
|  | } | ||||||
							
								
								
									
										71
									
								
								app/src/full/java/com/topjohnwu/magisk/AboutActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								app/src/full/java/com/topjohnwu/magisk/AboutActivity.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.net.Uri; | ||||||
|  | import android.os.Bundle; | ||||||
|  | import android.text.TextUtils; | ||||||
|  | import android.view.View; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.asyncs.MarkDownWindow; | ||||||
|  | import com.topjohnwu.magisk.components.AboutCardRow; | ||||||
|  | import com.topjohnwu.magisk.components.BaseActivity; | ||||||
|  | import com.topjohnwu.magisk.utils.Utils; | ||||||
|  |  | ||||||
|  | import java.util.Locale; | ||||||
|  |  | ||||||
|  | import androidx.annotation.Nullable; | ||||||
|  | import androidx.appcompat.app.ActionBar; | ||||||
|  | import androidx.appcompat.widget.Toolbar; | ||||||
|  |  | ||||||
|  | public class AboutActivity extends BaseActivity { | ||||||
|  |  | ||||||
|  |     Toolbar toolbar; | ||||||
|  |     AboutCardRow appVersionInfo; | ||||||
|  |     AboutCardRow appChangelog; | ||||||
|  |     AboutCardRow appTranslators; | ||||||
|  |     AboutCardRow appSourceCode; | ||||||
|  |     AboutCardRow supportThread; | ||||||
|  |     AboutCardRow twitter; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int getDarkTheme() { | ||||||
|  |         return R.style.AppTheme_StatusBar_Dark; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||||
|  |         super.onCreate(savedInstanceState); | ||||||
|  |         setContentView(R.layout.activity_about); | ||||||
|  |         ViewBinder.bind(this); | ||||||
|  |  | ||||||
|  |         setSupportActionBar(toolbar); | ||||||
|  |         toolbar.setNavigationOnClickListener(view -> finish()); | ||||||
|  |  | ||||||
|  |         ActionBar ab = getSupportActionBar(); | ||||||
|  |         if (ab != null) { | ||||||
|  |             ab.setTitle(R.string.about); | ||||||
|  |             ab.setDisplayHomeAsUpEnabled(true); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         appVersionInfo.setSummary(String.format(Locale.US, "%s (%d) (%s)", | ||||||
|  |                 BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE, getPackageName())); | ||||||
|  |  | ||||||
|  |         appChangelog.setOnClickListener(v -> { | ||||||
|  |             new MarkDownWindow(this, getString(R.string.app_changelog), | ||||||
|  |                     getResources().openRawResource(R.raw.changelog)).exec(); | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         String translators = getString(R.string.translators); | ||||||
|  |         if (TextUtils.isEmpty(translators)) { | ||||||
|  |             appTranslators.setVisibility(View.GONE); | ||||||
|  |         } else { | ||||||
|  |             appTranslators.setSummary(translators); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         appSourceCode.setOnClickListener(v -> Utils.openLink(this, Uri.parse(Const.Url.SOURCE_CODE_URL))); | ||||||
|  |         supportThread.setOnClickListener(v -> Utils.openLink(this, Uri.parse(Const.Url.XDA_THREAD))); | ||||||
|  |         twitter.setOnClickListener(v -> Utils.openLink(this, Uri.parse(Const.Url.TWITTER_URL))); | ||||||
|  |  | ||||||
|  |         setFloating(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										156
									
								
								app/src/full/java/com/topjohnwu/magisk/Const.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								app/src/full/java/com/topjohnwu/magisk/Const.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.os.Process; | ||||||
|  |  | ||||||
|  | import java.io.File; | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | public class Const { | ||||||
|  |  | ||||||
|  |     public static final String DEBUG_TAG = "MagiskManager"; | ||||||
|  |     public static final String ORIG_PKG_NAME = BuildConfig.APPLICATION_ID; | ||||||
|  |     public static final String MAGISKHIDE_PROP = "persist.magisk.hide"; | ||||||
|  |  | ||||||
|  |     // APK content | ||||||
|  |     public static final String ANDROID_MANIFEST = "AndroidManifest.xml"; | ||||||
|  |  | ||||||
|  |     public static final String SU_KEYSTORE_KEY = "su_key"; | ||||||
|  |  | ||||||
|  |     // Paths | ||||||
|  |     public static File MAGISK_PATH; | ||||||
|  |     public static File MAGISK_DISABLE_FILE; | ||||||
|  |     public static File MAGISK_HOST_FILE; | ||||||
|  |  | ||||||
|  |     static { | ||||||
|  |         /* Prevent crashing on unrooted devices */ | ||||||
|  |         MAGISK_PATH = MAGISK_DISABLE_FILE = MAGISK_HOST_FILE = new File("xxx"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static final String BUSYBOX_PATH = "/sbin/.core/busybox"; | ||||||
|  |     public static final String TMP_FOLDER_PATH = "/dev/tmp"; | ||||||
|  |     public static final String MAGISK_LOG = "/cache/magisk.log"; | ||||||
|  |     public static final String MANAGER_CONFIGS = ".tmp.magisk.config"; | ||||||
|  |  | ||||||
|  |     // Versions | ||||||
|  |     public static final int UPDATE_SERVICE_VER = 1; | ||||||
|  |  | ||||||
|  |     public static int MIN_MODULE_VER() { | ||||||
|  |         return Data.magiskVersionCode >= MAGISK_VER.REMOVE_LEGACY_LINK ? 1500 : 1400; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /* A list of apps that should not be shown as hide-able */ | ||||||
|  |     public static final List<String> HIDE_BLACKLIST =  Arrays.asList( | ||||||
|  |             "android", | ||||||
|  |             Data.MM().getPackageName(), | ||||||
|  |             "com.google.android.gms" | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     public static final int USER_ID = Process.myUid() / 100000; | ||||||
|  |  | ||||||
|  |     public static final class MAGISK_VER { | ||||||
|  |         public static final int UNIFIED = 1300; | ||||||
|  |         public static final int FBE_AWARE = 1410; | ||||||
|  |         public static final int RESETPROP_PERSIST = 1436; | ||||||
|  |         public static final int MANAGER_HIDE = 1440; | ||||||
|  |         public static final int HIDDEN_PATH = 1460; | ||||||
|  |         public static final int REMOVE_LEGACY_LINK = 1630; | ||||||
|  |         public static final int SEPOL_REFACTOR = 1640; | ||||||
|  |         public static final int FIX_ENV = 1650; | ||||||
|  |         public static final int DBVER_SIX = 17000; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static class ID { | ||||||
|  |         public static final int UPDATE_SERVICE_ID = 1; | ||||||
|  |         public static final int FETCH_ZIP = 2; | ||||||
|  |         public static final int SELECT_BOOT = 3; | ||||||
|  |         public static final int ONBOOT_SERVICE_ID = 6; | ||||||
|  |  | ||||||
|  |         // notifications | ||||||
|  |         public static final int MAGISK_UPDATE_NOTIFICATION_ID = 4; | ||||||
|  |         public static final int APK_UPDATE_NOTIFICATION_ID = 5; | ||||||
|  |         public static final int DTBO_NOTIFICATION_ID = 7; | ||||||
|  |         public static final String NOTIFICATION_CHANNEL = "magisk_notification"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static class Url { | ||||||
|  |         public static final String STABLE_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/stable.json"; | ||||||
|  |         public static final String BETA_URL = "https://raw.githubusercontent.com/topjohnwu/magisk_files/master/beta.json"; | ||||||
|  |         public static final String REPO_URL = "https://api.github.com/users/Magisk-Modules-Repo/repos?per_page=100&sort=pushed&page=%d"; | ||||||
|  |         public static final String FILE_URL = "https://raw.githubusercontent.com/Magisk-Modules-Repo/%s/master/%s"; | ||||||
|  |         public static final String ZIP_URL = "https://github.com/Magisk-Modules-Repo/%s/archive/master.zip"; | ||||||
|  |         public static final String PAYPAL_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=CC7FZ7526MNGG"; | ||||||
|  |         public static final String PATREON_URL = "https://www.patreon.com/topjohnwu"; | ||||||
|  |         public static final String TWITTER_URL = "https://twitter.com/topjohnwu"; | ||||||
|  |         public static final String XDA_THREAD = "http://forum.xda-developers.com/showthread.php?t=3432382"; | ||||||
|  |         public static final String SOURCE_CODE_URL = "https://github.com/topjohnwu/Magisk"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static class Key { | ||||||
|  |         // su | ||||||
|  |         public static final String ROOT_ACCESS = "root_access"; | ||||||
|  |         public static final String SU_MULTIUSER_MODE = "multiuser_mode"; | ||||||
|  |         public static final String SU_MNT_NS = "mnt_ns"; | ||||||
|  |         public static final String SU_MANAGER = "requester"; | ||||||
|  |         public static final String SU_REQUEST_TIMEOUT = "su_request_timeout"; | ||||||
|  |         public static final String SU_AUTO_RESPONSE = "su_auto_response"; | ||||||
|  |         public static final String SU_NOTIFICATION = "su_notification"; | ||||||
|  |         public static final String SU_REAUTH = "su_reauth"; | ||||||
|  |         public static final String SU_FINGERPRINT = "su_fingerprint"; | ||||||
|  |  | ||||||
|  |         // intents | ||||||
|  |         public static final String OPEN_SECTION = "section"; | ||||||
|  |         public static final String INTENT_SET_FILENAME = "filename"; | ||||||
|  |         public static final String INTENT_SET_LINK = "link"; | ||||||
|  |         public static final String FLASH_ACTION = "action"; | ||||||
|  |         public static final String FLASH_SET_BOOT = "boot"; | ||||||
|  |  | ||||||
|  |         // others | ||||||
|  |         public static final String CHECK_UPDATES = "check_update"; | ||||||
|  |         public static final String UPDATE_CHANNEL = "update_channel"; | ||||||
|  |         public static final String CUSTOM_CHANNEL = "custom_channel"; | ||||||
|  |         public static final String BOOT_FORMAT = "boot_format"; | ||||||
|  |         public static final String UPDATE_SERVICE_VER = "update_service_version"; | ||||||
|  |         public static final String APP_VER = "app_version"; | ||||||
|  |         public static final String MAGISKHIDE = "magiskhide"; | ||||||
|  |         public static final String HOSTS = "hosts"; | ||||||
|  |         public static final String COREONLY = "disable"; | ||||||
|  |         public static final String LOCALE = "locale"; | ||||||
|  |         public static final String DARK_THEME = "dark_theme"; | ||||||
|  |         public static final String ETAG_KEY = "ETag"; | ||||||
|  |         public static final String LINK_KEY = "Link"; | ||||||
|  |         public static final String IF_NONE_MATCH = "If-None-Match"; | ||||||
|  |         public static final String REPO_ORDER = "repo_order"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public static class Value { | ||||||
|  |         public static final int STABLE_CHANNEL = 0; | ||||||
|  |         public static final int BETA_CHANNEL = 1; | ||||||
|  |         public static final int CUSTOM_CHANNEL = 2; | ||||||
|  |         public static final int ROOT_ACCESS_DISABLED = 0; | ||||||
|  |         public static final int ROOT_ACCESS_APPS_ONLY = 1; | ||||||
|  |         public static final int ROOT_ACCESS_ADB_ONLY = 2; | ||||||
|  |         public static final int ROOT_ACCESS_APPS_AND_ADB = 3; | ||||||
|  |         public static final int MULTIUSER_MODE_OWNER_ONLY = 0; | ||||||
|  |         public static final int MULTIUSER_MODE_OWNER_MANAGED = 1; | ||||||
|  |         public static final int MULTIUSER_MODE_USER = 2; | ||||||
|  |         public static final int NAMESPACE_MODE_GLOBAL = 0; | ||||||
|  |         public static final int NAMESPACE_MODE_REQUESTER = 1; | ||||||
|  |         public static final int NAMESPACE_MODE_ISOLATE = 2; | ||||||
|  |         public static final int NO_NOTIFICATION = 0; | ||||||
|  |         public static final int NOTIFICATION_TOAST = 1; | ||||||
|  |         public static final int SU_PROMPT = 0; | ||||||
|  |         public static final int SU_AUTO_DENY = 1; | ||||||
|  |         public static final int SU_AUTO_ALLOW = 2; | ||||||
|  |         public static final String FLASH_ZIP = "flash"; | ||||||
|  |         public static final String PATCH_BOOT = "patch"; | ||||||
|  |         public static final String FLASH_MAGISK = "magisk"; | ||||||
|  |         public static final String FLASH_INACTIVE_SLOT = "slot"; | ||||||
|  |         public static final String UNINSTALL = "uninstall"; | ||||||
|  |         public static final int[] timeoutList = {0, -1, 10, 20, 30, 60}; | ||||||
|  |         public static final int ORDER_NAME = 0; | ||||||
|  |         public static final int ORDER_DATE = 1; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										218
									
								
								app/src/full/java/com/topjohnwu/magisk/Data.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								app/src/full/java/com/topjohnwu/magisk/Data.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,218 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.content.SharedPreferences; | ||||||
|  | import android.os.Handler; | ||||||
|  | import android.os.Looper; | ||||||
|  | import android.util.Xml; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.components.AboutCardRow; | ||||||
|  | import com.topjohnwu.magisk.receivers.BootReceiver; | ||||||
|  | import com.topjohnwu.magisk.receivers.ManagerUpdate; | ||||||
|  | import com.topjohnwu.magisk.receivers.PackageReceiver; | ||||||
|  | import com.topjohnwu.magisk.receivers.RebootReceiver; | ||||||
|  | import com.topjohnwu.magisk.receivers.ShortcutReceiver; | ||||||
|  | import com.topjohnwu.magisk.services.OnBootService; | ||||||
|  | import com.topjohnwu.magisk.services.UpdateCheckService; | ||||||
|  | import com.topjohnwu.magisk.utils.FingerprintHelper; | ||||||
|  | import com.topjohnwu.magisk.utils.Utils; | ||||||
|  | import com.topjohnwu.superuser.Shell; | ||||||
|  | import com.topjohnwu.superuser.ShellUtils; | ||||||
|  | import com.topjohnwu.superuser.io.SuFile; | ||||||
|  | import com.topjohnwu.superuser.io.SuFileInputStream; | ||||||
|  |  | ||||||
|  | import org.xmlpull.v1.XmlPullParser; | ||||||
|  | import org.xmlpull.v1.XmlPullParserException; | ||||||
|  |  | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.lang.ref.WeakReference; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | public class Data { | ||||||
|  |     // Global app instance | ||||||
|  |     public static WeakReference<MagiskManager> weakApp; | ||||||
|  |     public static Handler mainHandler = new Handler(Looper.getMainLooper()); | ||||||
|  |     public static Map<Class, Class> classMap = new HashMap<>(); | ||||||
|  |  | ||||||
|  |     // Current status | ||||||
|  |     public static String magiskVersionString; | ||||||
|  |     public static int magiskVersionCode = -1; | ||||||
|  |     public static boolean magiskHide; | ||||||
|  |  | ||||||
|  |     // Update Info | ||||||
|  |     public static String remoteMagiskVersionString; | ||||||
|  |     public static int remoteMagiskVersionCode = -1; | ||||||
|  |     public static String magiskLink; | ||||||
|  |     public static String magiskNoteLink; | ||||||
|  |     public static String magiskMD5; | ||||||
|  |     public static String remoteManagerVersionString; | ||||||
|  |     public static int remoteManagerVersionCode = -1; | ||||||
|  |     public static String managerLink; | ||||||
|  |     public static String managerNoteLink; | ||||||
|  |     public static String uninstallerLink; | ||||||
|  |     public static int snetVersionCode; | ||||||
|  |     public static String snetLink; | ||||||
|  |  | ||||||
|  |     // Install flags | ||||||
|  |     public static boolean keepVerity = false; | ||||||
|  |     public static boolean keepEnc = false; | ||||||
|  |  | ||||||
|  |     // Configs | ||||||
|  |     public static boolean isDarkTheme; | ||||||
|  |     public static int suRequestTimeout; | ||||||
|  |     public static int suLogTimeout = 14; | ||||||
|  |     public static int suAccessState; | ||||||
|  |     public static boolean suFingerprint; | ||||||
|  |     public static int multiuserMode; | ||||||
|  |     public static int suResponseType; | ||||||
|  |     public static int suNotificationType; | ||||||
|  |     public static int suNamespaceMode; | ||||||
|  |     public static int updateChannel; | ||||||
|  |     public static int repoOrder; | ||||||
|  |  | ||||||
|  |     static { | ||||||
|  |         classMap.put(MagiskManager.class, a.q.class); | ||||||
|  |         classMap.put(MainActivity.class, a.b.class); | ||||||
|  |         classMap.put(SplashActivity.class, a.c.class); | ||||||
|  |         classMap.put(AboutActivity.class, a.d.class); | ||||||
|  |         classMap.put(DonationActivity.class, a.e.class); | ||||||
|  |         classMap.put(FlashActivity.class, a.f.class); | ||||||
|  |         classMap.put(NoUIActivity.class, a.g.class); | ||||||
|  |         classMap.put(BootReceiver.class, a.h.class); | ||||||
|  |         classMap.put(PackageReceiver.class, a.i.class); | ||||||
|  |         classMap.put(ManagerUpdate.class, a.j.class); | ||||||
|  |         classMap.put(RebootReceiver.class, a.k.class); | ||||||
|  |         classMap.put(ShortcutReceiver.class, a.l.class); | ||||||
|  |         classMap.put(OnBootService.class, a.m.class); | ||||||
|  |         classMap.put(UpdateCheckService.class, a.n.class); | ||||||
|  |         classMap.put(AboutCardRow.class, a.o.class); | ||||||
|  |         classMap.put(SuRequestActivity.class, a.p.class); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void loadMagiskInfo() { | ||||||
|  |         try { | ||||||
|  |             magiskVersionString = ShellUtils.fastCmd("magisk -v").split(":")[0]; | ||||||
|  |             magiskVersionCode = Integer.parseInt(ShellUtils.fastCmd("magisk -V")); | ||||||
|  |             String s = ShellUtils.fastCmd((magiskVersionCode >= Const.MAGISK_VER.RESETPROP_PERSIST ? | ||||||
|  |                     "resetprop -p " : "getprop ") + Const.MAGISKHIDE_PROP); | ||||||
|  |             magiskHide = s.isEmpty() || Integer.parseInt(s) != 0; | ||||||
|  |         } catch (NumberFormatException ignored) {} | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static MagiskManager MM() { | ||||||
|  |         return weakApp.get(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void exportPrefs() { | ||||||
|  |         // Flush prefs to disk | ||||||
|  |         MagiskManager mm = MM(); | ||||||
|  |         mm.prefs.edit().commit(); | ||||||
|  |         File xml = new File(mm.getFilesDir().getParent() + "/shared_prefs", | ||||||
|  |                 mm.getPackageName() + "_preferences.xml"); | ||||||
|  |         Shell.su(Utils.fmt("for usr in /data/user/*; do cat %s > ${usr}/%s; done", xml, Const.MANAGER_CONFIGS)).exec(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void importPrefs() { | ||||||
|  |         MagiskManager mm = MM(); | ||||||
|  |         SuFile config = new SuFile(Utils.fmt("/data/user/%d/%s", Const.USER_ID, Const.MANAGER_CONFIGS)); | ||||||
|  |         if (config.exists()) { | ||||||
|  |             SharedPreferences.Editor editor = mm.prefs.edit(); | ||||||
|  |             try { | ||||||
|  |                 SuFileInputStream is = new SuFileInputStream(config); | ||||||
|  |                 XmlPullParser parser = Xml.newPullParser(); | ||||||
|  |                 parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); | ||||||
|  |                 parser.setInput(is, "UTF-8"); | ||||||
|  |                 parser.nextTag(); | ||||||
|  |                 parser.require(XmlPullParser.START_TAG, null, "map"); | ||||||
|  |                 while (parser.next() != XmlPullParser.END_TAG) { | ||||||
|  |                     if (parser.getEventType() != XmlPullParser.START_TAG) | ||||||
|  |                         continue; | ||||||
|  |                     String key = parser.getAttributeValue(null, "name"); | ||||||
|  |                     String value = parser.getAttributeValue(null, "value"); | ||||||
|  |                     switch (parser.getName()) { | ||||||
|  |                         case "string": | ||||||
|  |                             parser.require(XmlPullParser.START_TAG, null, "string"); | ||||||
|  |                             editor.putString(key, parser.nextText()); | ||||||
|  |                             parser.require(XmlPullParser.END_TAG, null, "string"); | ||||||
|  |                             break; | ||||||
|  |                         case "boolean": | ||||||
|  |                             parser.require(XmlPullParser.START_TAG, null, "boolean"); | ||||||
|  |                             editor.putBoolean(key, Boolean.parseBoolean(value)); | ||||||
|  |                             parser.nextTag(); | ||||||
|  |                             parser.require(XmlPullParser.END_TAG, null, "boolean"); | ||||||
|  |                             break; | ||||||
|  |                         case "int": | ||||||
|  |                             parser.require(XmlPullParser.START_TAG, null, "int"); | ||||||
|  |                             editor.putInt(key, Integer.parseInt(value)); | ||||||
|  |                             parser.nextTag(); | ||||||
|  |                             parser.require(XmlPullParser.END_TAG, null, "int"); | ||||||
|  |                             break; | ||||||
|  |                         case "long": | ||||||
|  |                             parser.require(XmlPullParser.START_TAG, null, "long"); | ||||||
|  |                             editor.putLong(key, Long.parseLong(value)); | ||||||
|  |                             parser.nextTag(); | ||||||
|  |                             parser.require(XmlPullParser.END_TAG, null, "long"); | ||||||
|  |                             break; | ||||||
|  |                         case "float": | ||||||
|  |                             parser.require(XmlPullParser.START_TAG, null, "int"); | ||||||
|  |                             editor.putFloat(key, Float.parseFloat(value)); | ||||||
|  |                             parser.nextTag(); | ||||||
|  |                             parser.require(XmlPullParser.END_TAG, null, "int"); | ||||||
|  |                             break; | ||||||
|  |                         default: | ||||||
|  |                             parser.next(); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } catch (IOException | XmlPullParserException e) { | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |             } | ||||||
|  |             editor.remove(Const.Key.ETAG_KEY); | ||||||
|  |             editor.apply(); | ||||||
|  |             loadConfig(); | ||||||
|  |             config.delete(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void loadConfig() { | ||||||
|  |         MagiskManager mm = MM(); | ||||||
|  |         // su | ||||||
|  |         suRequestTimeout = Utils.getPrefsInt(mm.prefs, Const.Key.SU_REQUEST_TIMEOUT, Const.Value.timeoutList[2]); | ||||||
|  |         suResponseType = Utils.getPrefsInt(mm.prefs, Const.Key.SU_AUTO_RESPONSE, Const.Value.SU_PROMPT); | ||||||
|  |         suNotificationType = Utils.getPrefsInt(mm.prefs, Const.Key.SU_NOTIFICATION, Const.Value.NOTIFICATION_TOAST); | ||||||
|  |         suAccessState = mm.mDB.getSettings(Const.Key.ROOT_ACCESS, Const.Value.ROOT_ACCESS_APPS_AND_ADB); | ||||||
|  |         multiuserMode = mm.mDB.getSettings(Const.Key.SU_MULTIUSER_MODE, Const.Value.MULTIUSER_MODE_OWNER_ONLY); | ||||||
|  |         suNamespaceMode = mm.mDB.getSettings(Const.Key.SU_MNT_NS, Const.Value.NAMESPACE_MODE_REQUESTER); | ||||||
|  |         suFingerprint = mm.mDB.getSettings(Const.Key.SU_FINGERPRINT, 0) != 0; | ||||||
|  |         if (suFingerprint && !FingerprintHelper.canUseFingerprint()) { | ||||||
|  |             // User revoked the fingerprint | ||||||
|  |             mm.mDB.setSettings(Const.Key.SU_FINGERPRINT, 0); | ||||||
|  |             suFingerprint = false; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // config | ||||||
|  |         isDarkTheme = mm.prefs.getBoolean(Const.Key.DARK_THEME, false); | ||||||
|  |         updateChannel = Utils.getPrefsInt(mm.prefs, Const.Key.UPDATE_CHANNEL, Const.Value.STABLE_CHANNEL); | ||||||
|  |         repoOrder = mm.prefs.getInt(Const.Key.REPO_ORDER, Const.Value.ORDER_DATE); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void writeConfig() { | ||||||
|  |         MM().prefs.edit() | ||||||
|  |                 .putBoolean(Const.Key.DARK_THEME, isDarkTheme) | ||||||
|  |                 .putBoolean(Const.Key.MAGISKHIDE, magiskHide) | ||||||
|  |                 .putBoolean(Const.Key.HOSTS, Const.MAGISK_HOST_FILE.exists()) | ||||||
|  |                 .putBoolean(Const.Key.COREONLY, Const.MAGISK_DISABLE_FILE.exists()) | ||||||
|  |                 .putBoolean(Const.Key.SU_FINGERPRINT, suFingerprint) | ||||||
|  |                 .putString(Const.Key.SU_REQUEST_TIMEOUT, String.valueOf(suRequestTimeout)) | ||||||
|  |                 .putString(Const.Key.SU_AUTO_RESPONSE, String.valueOf(suResponseType)) | ||||||
|  |                 .putString(Const.Key.SU_NOTIFICATION, String.valueOf(suNotificationType)) | ||||||
|  |                 .putString(Const.Key.ROOT_ACCESS, String.valueOf(suAccessState)) | ||||||
|  |                 .putString(Const.Key.SU_MULTIUSER_MODE, String.valueOf(multiuserMode)) | ||||||
|  |                 .putString(Const.Key.SU_MNT_NS, String.valueOf(suNamespaceMode)) | ||||||
|  |                 .putString(Const.Key.UPDATE_CHANNEL, String.valueOf(updateChannel)) | ||||||
|  |                 .putInt(Const.Key.UPDATE_SERVICE_VER, Const.UPDATE_SERVICE_VER) | ||||||
|  |                 .putInt(Const.Key.REPO_ORDER, repoOrder) | ||||||
|  |                 .apply(); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										43
									
								
								app/src/full/java/com/topjohnwu/magisk/DonationActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								app/src/full/java/com/topjohnwu/magisk/DonationActivity.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.net.Uri; | ||||||
|  | import android.os.Bundle; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.components.AboutCardRow; | ||||||
|  | import com.topjohnwu.magisk.components.BaseActivity; | ||||||
|  | import com.topjohnwu.magisk.utils.Utils; | ||||||
|  |  | ||||||
|  | import androidx.annotation.Nullable; | ||||||
|  | import androidx.appcompat.app.ActionBar; | ||||||
|  | import androidx.appcompat.widget.Toolbar; | ||||||
|  |  | ||||||
|  | public class DonationActivity extends BaseActivity { | ||||||
|  |  | ||||||
|  |     Toolbar toolbar; | ||||||
|  |     AboutCardRow paypal; | ||||||
|  |     AboutCardRow patreon; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int getDarkTheme() { | ||||||
|  |         return R.style.AppTheme_StatusBar_Dark; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||||
|  |         super.onCreate(savedInstanceState); | ||||||
|  |         setContentView(R.layout.activity_donation); | ||||||
|  |         ViewBinder.bind(this); | ||||||
|  |  | ||||||
|  |         setSupportActionBar(toolbar); | ||||||
|  |         toolbar.setNavigationOnClickListener(view -> finish()); | ||||||
|  |  | ||||||
|  |         ActionBar ab = getSupportActionBar(); | ||||||
|  |         if (ab != null) { | ||||||
|  |             ab.setTitle(R.string.donation); | ||||||
|  |             ab.setDisplayHomeAsUpEnabled(true); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         paypal.setOnClickListener(v -> Utils.openLink(this, Uri.parse(Const.Url.PAYPAL_URL))); | ||||||
|  |         patreon.setOnClickListener(v -> Utils.openLink(this, Uri.parse(Const.Url.PATREON_URL))); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										164
									
								
								app/src/full/java/com/topjohnwu/magisk/FlashActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								app/src/full/java/com/topjohnwu/magisk/FlashActivity.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.Manifest; | ||||||
|  | import android.content.Intent; | ||||||
|  | import android.net.Uri; | ||||||
|  | import android.os.Bundle; | ||||||
|  | import android.text.TextUtils; | ||||||
|  | import android.view.View; | ||||||
|  | import android.widget.Button; | ||||||
|  | import android.widget.LinearLayout; | ||||||
|  | import android.widget.ScrollView; | ||||||
|  | import android.widget.TextView; | ||||||
|  | import android.widget.Toast; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.asyncs.FlashZip; | ||||||
|  | import com.topjohnwu.magisk.asyncs.InstallMagisk; | ||||||
|  | import com.topjohnwu.magisk.components.BaseActivity; | ||||||
|  | import com.topjohnwu.magisk.utils.Download; | ||||||
|  | import com.topjohnwu.magisk.utils.RootUtils; | ||||||
|  | import com.topjohnwu.magisk.utils.Utils; | ||||||
|  | import com.topjohnwu.superuser.CallbackList; | ||||||
|  | import com.topjohnwu.superuser.Shell; | ||||||
|  |  | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.FileWriter; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Calendar; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Locale; | ||||||
|  |  | ||||||
|  | import androidx.appcompat.app.ActionBar; | ||||||
|  | import androidx.appcompat.widget.Toolbar; | ||||||
|  |  | ||||||
|  | public class FlashActivity extends BaseActivity { | ||||||
|  |  | ||||||
|  |     Toolbar toolbar; | ||||||
|  |     TextView flashLogs; | ||||||
|  |     public LinearLayout buttonPanel; | ||||||
|  |     public Button reboot; | ||||||
|  |     ScrollView sv; | ||||||
|  |  | ||||||
|  |     private List<String> logs; | ||||||
|  |  | ||||||
|  |     void dismiss() { | ||||||
|  |         finish(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     void reboot() { | ||||||
|  |         Shell.su("/system/bin/reboot").submit(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     void saveLogs() { | ||||||
|  |         runWithPermission(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, () -> { | ||||||
|  |             Calendar now = Calendar.getInstance(); | ||||||
|  |             String filename = String.format(Locale.US, | ||||||
|  |                     "magisk_install_log_%04d%02d%02d_%02d%02d%02d.log", | ||||||
|  |                     now.get(Calendar.YEAR), now.get(Calendar.MONTH) + 1, | ||||||
|  |                     now.get(Calendar.DAY_OF_MONTH), now.get(Calendar.HOUR_OF_DAY), | ||||||
|  |                     now.get(Calendar.MINUTE), now.get(Calendar.SECOND)); | ||||||
|  |  | ||||||
|  |             File logFile = new File(Download.EXTERNAL_PATH, filename); | ||||||
|  |             try (FileWriter writer = new FileWriter(logFile)) { | ||||||
|  |                 for (String s : logs) { | ||||||
|  |                     writer.write(s); | ||||||
|  |                     writer.write('\n'); | ||||||
|  |                 } | ||||||
|  |             } catch (IOException e) { | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |             Utils.toast(logFile.getPath(), Toast.LENGTH_LONG); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int getDarkTheme() { | ||||||
|  |         return R.style.AppTheme_StatusBar_Dark; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     protected void onCreate(Bundle savedInstanceState) { | ||||||
|  |         super.onCreate(savedInstanceState); | ||||||
|  |         setContentView(R.layout.activity_flash); | ||||||
|  |         ViewBinder.bind(this); | ||||||
|  |         setSupportActionBar(toolbar); | ||||||
|  |         ActionBar ab = getSupportActionBar(); | ||||||
|  |         if (ab != null) { | ||||||
|  |             ab.setTitle(R.string.flashing); | ||||||
|  |         } | ||||||
|  |         setFloating(); | ||||||
|  |         setFinishOnTouchOutside(false); | ||||||
|  |         if (!Shell.rootAccess()) | ||||||
|  |             reboot.setVisibility(View.GONE); | ||||||
|  |  | ||||||
|  |         logs = new ArrayList<>(); | ||||||
|  |         CallbackList<String> console = new CallbackList<String>(new ArrayList<>()) { | ||||||
|  |  | ||||||
|  |             private void updateUI() { | ||||||
|  |                 flashLogs.setText(TextUtils.join("\n", this)); | ||||||
|  |                 sv.postDelayed(() -> sv.fullScroll(ScrollView.FOCUS_DOWN), 10); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             @Override | ||||||
|  |             public void onAddElement(String s) { | ||||||
|  |                 logs.add(s); | ||||||
|  |                 updateUI(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             @Override | ||||||
|  |             public String set(int i, String s) { | ||||||
|  |                 String ret = super.set(i, s); | ||||||
|  |                 Data.mainHandler.post(this::updateUI); | ||||||
|  |                 return ret; | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         // We must receive a Uri of the target zip | ||||||
|  |         Intent intent = getIntent(); | ||||||
|  |         Uri uri = intent.getData(); | ||||||
|  |  | ||||||
|  |         switch (intent.getStringExtra(Const.Key.FLASH_ACTION)) { | ||||||
|  |             case Const.Value.FLASH_ZIP: | ||||||
|  |                 new FlashZip(this, uri, console, logs).exec(); | ||||||
|  |                 break; | ||||||
|  |             case Const.Value.UNINSTALL: | ||||||
|  |                 new UninstallMagisk(this, uri, console, logs).exec(); | ||||||
|  |                 break; | ||||||
|  |             case Const.Value.FLASH_MAGISK: | ||||||
|  |                 new InstallMagisk(this, console, logs, InstallMagisk.DIRECT_MODE).exec(); | ||||||
|  |                 break; | ||||||
|  |             case Const.Value.FLASH_INACTIVE_SLOT: | ||||||
|  |                 new InstallMagisk(this, console, logs, InstallMagisk.SECOND_SLOT_MODE).exec(); | ||||||
|  |                 break; | ||||||
|  |             case Const.Value.PATCH_BOOT: | ||||||
|  |                 runWithPermission(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, | ||||||
|  |                         () -> new InstallMagisk(this, console, logs, | ||||||
|  |                                 intent.getParcelableExtra(Const.Key.FLASH_SET_BOOT)).exec()); | ||||||
|  |                 break; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onBackPressed() { | ||||||
|  |         // Prevent user accidentally press back button | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private static class UninstallMagisk extends FlashZip { | ||||||
|  |  | ||||||
|  |         private UninstallMagisk(BaseActivity context, Uri uri, List<String> console, List<String> logs) { | ||||||
|  |             super(context, uri, console, logs); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Override | ||||||
|  |         protected void onPostExecute(Integer result) { | ||||||
|  |             if (result == 1) { | ||||||
|  |                 Data.mainHandler.postDelayed(() -> | ||||||
|  |                         RootUtils.uninstallPkg(getActivity().getPackageName()), 3000); | ||||||
|  |             } else { | ||||||
|  |                 super.onPostExecute(result); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										65
									
								
								app/src/full/java/com/topjohnwu/magisk/MagiskManager.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								app/src/full/java/com/topjohnwu/magisk/MagiskManager.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | package com.topjohnwu.magisk; | ||||||
|  |  | ||||||
|  | import android.content.SharedPreferences; | ||||||
|  | import android.content.pm.PackageManager; | ||||||
|  | import android.content.res.Configuration; | ||||||
|  | import android.preference.PreferenceManager; | ||||||
|  | import android.text.TextUtils; | ||||||
|  |  | ||||||
|  | import com.topjohnwu.magisk.database.MagiskDatabaseHelper; | ||||||
|  | import com.topjohnwu.magisk.database.RepoDatabaseHelper; | ||||||
|  | import com.topjohnwu.magisk.utils.LocaleManager; | ||||||
|  | import com.topjohnwu.magisk.utils.RootUtils; | ||||||
|  | import com.topjohnwu.superuser.ContainerApp; | ||||||
|  | import com.topjohnwu.superuser.Shell; | ||||||
|  |  | ||||||
|  | import java.lang.ref.WeakReference; | ||||||
|  |  | ||||||
|  | public class MagiskManager extends ContainerApp { | ||||||
|  |  | ||||||
|  |     // Info | ||||||
|  |     public boolean hasInit = false; | ||||||
|  |  | ||||||
|  |     // Global resources | ||||||
|  |     public SharedPreferences prefs; | ||||||
|  |     public MagiskDatabaseHelper mDB; | ||||||
|  |     public RepoDatabaseHelper repoDB; | ||||||
|  |  | ||||||
|  |     public MagiskManager() { | ||||||
|  |         Data.weakApp = new WeakReference<>(this); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onCreate() { | ||||||
|  |         super.onCreate(); | ||||||
|  |  | ||||||
|  |         Shell.Config.setFlags(Shell.FLAG_MOUNT_MASTER); | ||||||
|  |         Shell.Config.verboseLogging(BuildConfig.DEBUG); | ||||||
|  |         Shell.Config.setInitializer(RootUtils.class); | ||||||
|  |  | ||||||
|  |         prefs = PreferenceManager.getDefaultSharedPreferences(this); | ||||||
|  |         mDB = MagiskDatabaseHelper.getInstance(this); | ||||||
|  |  | ||||||
|  |         String pkg = mDB.getStrings(Const.Key.SU_MANAGER, null); | ||||||
|  |         if (pkg != null && getPackageName().equals(Const.ORIG_PKG_NAME)) { | ||||||
|  |             mDB.setStrings(Const.Key.SU_MANAGER, null); | ||||||
|  |             Shell.su("pm uninstall " + pkg).exec(); | ||||||
|  |         } | ||||||
|  |         if (TextUtils.equals(pkg, getPackageName())) { | ||||||
|  |             try { | ||||||
|  |                 // We are the manager, remove com.topjohnwu.magisk as it could be malware | ||||||
|  |                 getPackageManager().getApplicationInfo(Const.ORIG_PKG_NAME, 0); | ||||||
|  |                 RootUtils.uninstallPkg(Const.ORIG_PKG_NAME); | ||||||
|  |             } catch (PackageManager.NameNotFoundException ignored) {} | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         LocaleManager.setLocale(this); | ||||||
|  |         Data.loadConfig(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onConfigurationChanged(Configuration newConfig) { | ||||||
|  |         super.onConfigurationChanged(newConfig); | ||||||
|  |         LocaleManager.setLocale(this); | ||||||
|  |     } | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user