Compare commits
1039 Commits
b31f1ddb0f
...
v2_test
| Author | SHA1 | Date | |
|---|---|---|---|
| e74731b789 | |||
| 8694856fc9 | |||
| 3d2b70609d | |||
| dd260e229a | |||
| 0bc8f85bee | |||
| 496534f76a | |||
| d681f6739b | |||
| 64de7ea34c | |||
| 25c913c572 | |||
| f34a54a33c | |||
| b511cbbdaf | |||
| 17c040f0d3 | |||
| f4a1da9ded | |||
| 79de035ae7 | |||
| ddc844456d | |||
| fef72df927 | |||
| 134216c5f5 | |||
| 685c201840 | |||
| fd343f098e | |||
| 053d7f79da | |||
| 60a088236b | |||
| 768d82a026 | |||
| 1c51c7fbf5 | |||
| 2196890105 | |||
| 4bf27702a4 | |||
| 4bf65b6eef | |||
| 98c6622e1f | |||
| e0baa07c4f | |||
| e2d951ccbf | |||
| cdff6c1966 | |||
| 00fe34bc0e | |||
| 910ea908c3 | |||
| 017d3b18ef | |||
| 61efc14b9a | |||
| f3a28ddb30 | |||
| 1dc8a64f9f | |||
| 56371267bc | |||
| a68fe3970f | |||
| 217b1d89ea | |||
| 4f2e3776ed | |||
| 3c6f90f103 | |||
| e3fd8457c0 | |||
| 8119955f52 | |||
| b4b79e185e | |||
| fb07005e9a | |||
| cd7bfa07bb | |||
| 48a21b319a | |||
| 808d44555c | |||
| f7857cb5c2 | |||
| 15b5911013 | |||
| 8e6111dfb1 | |||
| c476fa6d77 | |||
| c59c5d929b | |||
| e1053073a1 | |||
| 0a56555f35 | |||
| 1188b45c20 | |||
| 97ffcf417e | |||
| 5801e10f80 | |||
| 3c08686f21 | |||
| eff021b4e2 | |||
| 8e2f5f6bac | |||
| 05798c4b49 | |||
| 876d91de01 | |||
| a67436b854 | |||
| 6e8db45cb8 | |||
| 51abe338c0 | |||
| 84aecc715e | |||
| 93764163d4 | |||
| 9e3888bccf | |||
| 293b7c9f6f | |||
| 70dd911445 | |||
| 8496a0844c | |||
| fe110b1eb9 | |||
| 0407cadd50 | |||
| b825504063 | |||
| ec55fa787f | |||
| cd55111003 | |||
| ee31eb045f | |||
| 56bcd5bee9 | |||
| b5155e7ce2 | |||
| ca05de3d7d | |||
| 04af851875 | |||
| 4c7126f414 | |||
| e217506627 | |||
| 6e0c5d1662 | |||
| 15143188b7 | |||
| da9dc4bb03 | |||
| ad34c1b670 | |||
| bb691a6ad0 | |||
| 2c00a38ceb | |||
| 8291f956c2 | |||
| a8335f10ee | |||
| db135af725 | |||
| feb2b9d697 | |||
| 2f0e1bb396 | |||
| 2a7a666f7d | |||
| 9bfcb00861 | |||
| 06eba5ff25 | |||
| 3c1f03de26 | |||
| 01ffddf9ef | |||
| b3f4eec2e9 | |||
| 34ef2f23b7 | |||
| 529b324817 | |||
| b3e8d75539 | |||
| 81e0812c66 | |||
| e667e5a0c9 | |||
| 6f9bfb38f5 | |||
| 6656457bcc | |||
| 07ee30f360 | |||
| 5f4ea5910d | |||
| c568494a8e | |||
| fd211c464f | |||
| ff58c07ca6 | |||
| 2ea6d61d39 | |||
| c5214d830f | |||
| 8f3bba620c | |||
| 9116b9efe1 | |||
| 575ee074b1 | |||
| 2d650cd51f | |||
| 4fab7ba2c0 | |||
| 72c658c594 | |||
| 89058ed264 | |||
| c247bfcefa | |||
| 74742c3e8e | |||
| 33239e3c90 | |||
| 97be421ee3 | |||
| 8484e48c56 | |||
| c07bf2538d | |||
| 8ac11d6234 | |||
| a0b08a9a94 | |||
| 9bc6d488f1 | |||
| b7a830ab6f | |||
| 7b915f0c6c | |||
| a68d469eda | |||
| a5b106edfe | |||
| a40ae5d37d | |||
| 4b57ad3f8b | |||
| cdedebd9f6 | |||
| c237875732 | |||
| 7f7a3d19fb | |||
| 1db2b0edb9 | |||
| 9280025f1c | |||
| 9666c9dbf4 | |||
| aac673f212 | |||
| 9a2a2d9aa2 | |||
| 9e8a5d1f37 | |||
| e938d5915a | |||
| b35ff27654 | |||
| cfe1a9d585 | |||
| 04f097c1a9 | |||
| c81448e43d | |||
| 6947d1c958 | |||
| ee803a94e2 | |||
| b2a76abe01 | |||
| 0b03bdc81a | |||
| eabfe3ab27 | |||
| 7357e750ae | |||
| 4231e85a8e | |||
| 1324c63d20 | |||
| 3f0fffda46 | |||
| d397e765df | |||
| 8f43ede3f0 | |||
| e09743b474 | |||
| 4c96c94549 | |||
| 66e00af171 | |||
| 0ad3f2eb9a | |||
| b8ee9697f6 | |||
| 0ac84ed6e0 | |||
| 72f04e0d48 | |||
| 75a312c1d6 | |||
| 446aa9a0e8 | |||
| 48f8d1b08e | |||
| 2b809ae9a6 | |||
| a76663ea81 | |||
| ed1383622f | |||
| 5ea5529c67 | |||
| 04c4e8c791 | |||
| c94c1a9202 | |||
| 0a67a1bb04 | |||
| 6274190e09 | |||
| 7d00e92aac | |||
| 951315a1a4 | |||
| 1e6c70122f | |||
| b867ab7d02 | |||
| 6044b302bb | |||
| e56d29c322 | |||
| a140ffe523 | |||
| b6c56b4890 | |||
| ab767233ec | |||
| 4b13a7ed02 | |||
| 7ba65e73ae | |||
| 4a58a47a8e | |||
| e8506e1b4e | |||
| 61805df66b | |||
| e98d426324 | |||
| 6c062ce3c8 | |||
| 8f47d4fb65 | |||
| 63e507d0ff | |||
| 5a16466766 | |||
| 4b0c923ec0 | |||
| 87f67aa24a | |||
| 93e48f3cbc | |||
| baadc67fcf | |||
| bc16aea3a4 | |||
| 8041e3eb4d | |||
| 3e4c0b2ab5 | |||
| 960c9ba5b0 | |||
| 3efec91d74 | |||
| 9e48c72245 | |||
| 4dac9a5eec | |||
| bf25c67f1e | |||
| 1245899c07 | |||
| 66f25b6937 | |||
| 2d44edf5ab | |||
| 7062c756b6 | |||
| 7c173c9195 | |||
| e070ab15ac | |||
| 400498c6fa | |||
| 3c5331c2d3 | |||
| 800b7ba493 | |||
| bc2689d1cf | |||
| ce9be11c0a | |||
| 43ba192496 | |||
| ee410315ee | |||
| f3c78f0575 | |||
| b98a4a5364 | |||
| 68aad97e46 | |||
| 8de6676b40 | |||
| 7a345a6c80 | |||
| e3adbeeea4 | |||
| b0db3534f2 | |||
| 6f646264dc | |||
| d83940b47d | |||
| 4996d02f71 | |||
| da6f47f439 | |||
| 54fbc3f4b2 | |||
| 6e2c54eccf | |||
| 89166100e3 | |||
| 3d28a1ee86 | |||
| 034d5faa0d | |||
| f58038ab90 | |||
| ad25cc67ec | |||
| 384d1e8aec | |||
| b0a1007a76 | |||
| 0419ba7847 | |||
| c52dbca9a1 | |||
| 43153a9fdf | |||
| c23dd1ff4c | |||
| 67d9528614 | |||
| 1151744247 | |||
| 9dd3fbe47d | |||
| f42e155f2b | |||
| f5a084684a | |||
| b22adac365 | |||
| a329720f1c | |||
| e03f4a015a | |||
| 94f677ae6f | |||
| 8afdfc87c5 | |||
| cc3739f701 | |||
| dbee8dabb1 | |||
| cfb7acfddb | |||
| e14072e829 | |||
| f80f8d8c7e | |||
| e9b3dc1da9 | |||
| 63137188e5 | |||
|
|
07031d693c | ||
| 531955bdc7 | |||
| 2cfa314c3c | |||
| cfe37ec57d | |||
| 995733d6e3 | |||
| aec622831d | |||
| e8f092a88b | |||
| a1da574c04 | |||
| 08e28d14c9 | |||
| cffd810184 | |||
| 774ee85f8d | |||
| a1c6db28a8 | |||
| bcd0c8900d | |||
| f3e3b608f1 | |||
| a839114cdf | |||
| a315a52791 | |||
| fc0d9f07c0 | |||
| 26b4b77271 | |||
| 09cfe8938f | |||
| 8989d13928 | |||
| a39c96cc61 | |||
| db8beca609 | |||
| 94e7881aa0 | |||
| e4a07e2c88 | |||
| 1414003e3f | |||
| b9f4804d74 | |||
| e2b63f6706 | |||
| 393f165095 | |||
| 547e4e8f9f | |||
| ffeab227c9 | |||
| 4452398773 | |||
| 454f4711f3 | |||
| 46c456af2c | |||
| 2f459e982a | |||
| b8d934fa28 | |||
| 1107c01d5c | |||
| b8ca85c20e | |||
| a29cf29041 | |||
| 05bf1d59df | |||
| 2cf129d0b9 | |||
| 488cd72f2c | |||
| 6fab07fd79 | |||
| 382b2d122c | |||
| b4beac26a7 | |||
| 86d78fdd06 | |||
| 92ad985355 | |||
| eaf94f0ceb | |||
| acee0ccec5 | |||
| fddea097d3 | |||
| 7dc25532a3 | |||
| 19721cf5da | |||
| a6d9d1595a | |||
| 5e0d5f4b91 | |||
| 09a6de1544 | |||
| a20b502b70 | |||
| 8bb8013f67 | |||
| 94c7c54cc1 | |||
| c257d22618 | |||
| b57dbb75e8 | |||
| 9781f33440 | |||
| 45b4236748 | |||
| 8b0c82c3ca | |||
| 5518a99ee9 | |||
| 63124a350e | |||
| c7de08ca49 | |||
| 41e4b23317 | |||
| b23f379db0 | |||
| 1faf9e0cc7 | |||
| 90e1a87bf4 | |||
| 9ec8d4189f | |||
| 8f08e360ef | |||
| 4371cd1a85 | |||
| f6ba0ab1ad | |||
| c60b9942f6 | |||
| 85f6e69d63 | |||
| 83aeab9341 | |||
| 8a539a2868 | |||
| 379db1cb39 | |||
| e51b23cb91 | |||
| e824a258ea | |||
| 526f035659 | |||
| 42c2843cab | |||
| a99ffcc9d2 | |||
| 40a2412b9b | |||
| cd2985a170 | |||
| cb84352475 | |||
| a19b4fe212 | |||
| f718df47c8 | |||
| 7620f97042 | |||
| 3bfb7d040d | |||
| aea50ed806 | |||
| 7dab17905b | |||
| a3a3565189 | |||
| 3f82f42e1e | |||
| 0de00c5a34 | |||
| 0daee07086 | |||
| 2619539415 | |||
| aa8bed6efb | |||
| 9b01d79955 | |||
| 17f21a25bb | |||
| 8c523e8c65 | |||
| d7956e24a6 | |||
| eaafbec1ea | |||
| 4ba5f6492f | |||
| 4355586afc | |||
| ed4dce4bf2 | |||
| a8c4d22b51 | |||
| 92f08b5174 | |||
| a7128908f4 | |||
| d86a531495 | |||
| f894cec38b | |||
| 0ef2f9aeb1 | |||
| 312a706d00 | |||
| d1ad6cfa24 | |||
| 2bc9aa7a1c | |||
| 3a497d09df | |||
| 1301af9d84 | |||
| 822a029104 | |||
| 257ae371f9 | |||
| ec1d52f694 | |||
| 46c7b6327d | |||
| 72d8ae6616 | |||
| b905fab6c5 | |||
| 3b10299249 | |||
| 2098032d81 | |||
| d37b694d5a | |||
| 345969fd61 | |||
| 632ff3c812 | |||
| bb60f9d914 | |||
| 111a7eaff7 | |||
| 61161e6335 | |||
| 327681d3db | |||
| 68c5bfe275 | |||
| 10814e9e5f | |||
| 617f90e1ac | |||
| 81af5990ae | |||
| 92e9b1ce63 | |||
| 87b21c5f55 | |||
| f61482ded6 | |||
| c999d994d6 | |||
| f609361ee9 | |||
| c3f116fbc3 | |||
| 79059796c8 | |||
| 61facdb5fb | |||
| b007c3ad23 | |||
| 0b5e37281b | |||
| 6e5e82401b | |||
| d419131eab | |||
| b8b3c19bfc | |||
| e95062c6eb | |||
| 2f4c472a41 | |||
| 3f0f1d4408 | |||
| f23ad1a33a | |||
| 1486879a58 | |||
| 3d6fb38937 | |||
| d981a83652 | |||
| 3bfe64d57c | |||
| 1ad58b05ef | |||
| 225a958cb4 | |||
| 0ac8e906a2 | |||
| a42f3c7e71 | |||
| ddf8428884 | |||
| 807edecbf4 | |||
| 6254b1dcda | |||
| 9df1bf2743 | |||
| a678fb467d | |||
| c24b7107a7 | |||
| c0596871da | |||
| f0ad2d654d | |||
| c2ef76b69b | |||
| 96f58732ba | |||
| 15340d254c | |||
| 890986c5de | |||
| 3d137aefad | |||
| 6c911dde43 | |||
| 37981602dd | |||
| d64d858f15 | |||
| f9906ea8fc | |||
| c660831146 | |||
| a8ba3f9a3a | |||
| 8439fc8736 | |||
| 04f7fbdbb2 | |||
| e2b205240e | |||
| 2695738ae3 | |||
| 5a3336a657 | |||
| b67b290279 | |||
| f34664cbb3 | |||
| 4919560500 | |||
| c2b6890311 | |||
| 38c4f3426d | |||
| 2400c334a9 | |||
| 114675703b | |||
| 0be38ac466 | |||
| 0e184f0b87 | |||
| 75258f1706 | |||
| ce591345d3 | |||
| 0770009443 | |||
| bf39639acc | |||
| 947f46c5ff | |||
| 651423ce90 | |||
| afb0ea0bed | |||
| e2b7b0d356 | |||
| c55d5c6676 | |||
| eb60bcec56 | |||
| 62325eb9fa | |||
| 18aae945ae | |||
| 4afe61546a | |||
| b6a0fcdf07 | |||
| 2fc153843f | |||
| 729f03ca47 | |||
| 96c0111428 | |||
| d0ccbb494f | |||
| f8aa0162a5 | |||
| 2b94d3f851 | |||
| fddda1ef0a | |||
| 035634df67 | |||
| 8267d99b4a | |||
| 854faf56f5 | |||
| 4bbb3428c0 | |||
| 7a40ca0986 | |||
| c93a15025b | |||
| 57a1c82db2 | |||
| b6af2c7997 | |||
| df7b3e1a8b | |||
| b7a6163251 | |||
| 9c39f9e07c | |||
| d33eff4935 | |||
| 11ea66f576 | |||
| d31f019afb | |||
| 52361a6a16 | |||
| e04ec83877 | |||
| 301f301868 | |||
| b2cb5463ef | |||
| d2754db97a | |||
| 568906b2df | |||
| fbae553657 | |||
| 03ecd45316 | |||
| b8aba1d951 | |||
| 4d76569131 | |||
| f90d87a301 | |||
| fe6375b6f9 | |||
| a30156cc1c | |||
| f8a8aa7577 | |||
| b527d18a3c | |||
| fc6a864f7c | |||
| 8eaff8ebbc | |||
| 3a18688143 | |||
| 0e40bae701 | |||
| 7aa7e32fda | |||
| 1aced3d20b | |||
| 9566082283 | |||
| 152c92bf65 | |||
| 4622424b9b | |||
| ef8337582f | |||
| 133fa7ea5f | |||
| 74e76fe6e7 | |||
| 2996e84433 | |||
| f8d1de5d30 | |||
| d33278faff | |||
| 22e40409d7 | |||
| 632cf0b9b4 | |||
| a9ed3e0bef | |||
| 28b505310d | |||
| c9aea0b778 | |||
| e1694cdc9c | |||
| 3a235b4f60 | |||
| 90405f64de | |||
| 35073f77c8 | |||
| 5cd0146c8c | |||
| ffabffb2ef | |||
| bb1e3e9691 | |||
| d89730ffbf | |||
| 431ab2f9b0 | |||
| c444055bd7 | |||
| a0dd229c12 | |||
| 074e141a22 | |||
| 40951fdfcb | |||
| e319a8af46 | |||
| a83ff0e080 | |||
| 22ae4b1563 | |||
| 23fe1c3647 | |||
| 079a7d3925 | |||
| 69373925cd | |||
| dbfc39639b | |||
| 11bbfd0e73 | |||
| 0075b474d7 | |||
| 99090a8a95 | |||
| 0e5ed13794 | |||
| ffa6ba2c47 | |||
| 4ae8f09430 | |||
| 17024d7350 | |||
| efec0754cd | |||
| 5a893faa43 | |||
| 5981f982f3 | |||
| fd81675ee9 | |||
| 3575391d3f | |||
| 563a4fde3c | |||
| 148d182e5e | |||
| aab8cf69fb | |||
| 3900cb1382 | |||
| d77fe01795 | |||
| 47eb056f87 | |||
| 14691d0ee4 | |||
| d6487d81c9 | |||
| 2f421bb0ac | |||
| 4b588eb6e4 | |||
| 3a911d928f | |||
| 69c037b30d | |||
| c84e884a7c | |||
| 0a38314003 | |||
| 2d86f36a91 | |||
| a0eeb7b642 | |||
| 9eb5936690 | |||
| cbe5271426 | |||
| 34827af5be | |||
| 6ed5652f16 | |||
| 8ed567496b | |||
| b374e7aeca | |||
| a0ee72bc81 | |||
| e8e4bf466b | |||
| ec01d11426 | |||
| c088d25033 | |||
| e9f3cdbc59 | |||
| 72f754e89c | |||
| c365f3274a | |||
| f8caafb2a9 | |||
| 2d147d5f09 | |||
| 7c4b554aea | |||
| 0091919b93 | |||
| d46e5cc238 | |||
| 97116a2070 | |||
| 27aaff4a4b | |||
| 32c2fd4e6c | |||
| 51b86323d8 | |||
| f0bd3ce088 | |||
| 474bb9f02e | |||
| a2175f9110 | |||
| aec0218787 | |||
| 567ee01619 | |||
| e4a929cfd6 | |||
| 27b0840704 | |||
| 525da42ae9 | |||
| 8d1199bc4f | |||
| dac8f602d8 | |||
| 26d04dfaa0 | |||
| 22306371a0 | |||
| 881f0cdbfa | |||
| 314d342f5c | |||
| d627b6a780 | |||
| 9528572f37 | |||
| 273caa5c5d | |||
| c9f04057a7 | |||
| 8599030ccb | |||
| 3fe5970811 | |||
| 723229d595 | |||
| bb319780b6 | |||
| 5c06aceb27 | |||
| 27b4dd072e | |||
| 2c1f70018e | |||
| 698f4578fc | |||
| fd70e388a7 | |||
| 07b06a4177 | |||
| 10e8d477e5 | |||
| 7daadc816c | |||
| 89db74c782 | |||
| 01f6136798 | |||
| 1bb4aa04a6 | |||
| 6b63f8b87e | |||
| cd6fde962b | |||
| 607a0f8245 | |||
| ad1db581a7 | |||
| ca5b0039a1 | |||
| 214ee3bd58 | |||
| b1f2cc2376 | |||
| f1f523209b | |||
| 9c23fd02fe | |||
| eee30b50db | |||
| 6ba35ccd96 | |||
| 5916d5d038 | |||
| 3eb0b499c6 | |||
| c2d021a516 | |||
| 46fdda269f | |||
| 536a1e967e | |||
| ac4fcb634d | |||
| d92fe4c22c | |||
| 3d49100656 | |||
| 9841524ec0 | |||
| 0fe8cb1bfb | |||
| 910b211840 | |||
| 4f7d6d05bd | |||
| b8feec88a7 | |||
| 6043e1f5a7 | |||
| 4981bdcaa6 | |||
| c29cc25581 | |||
| 0ce03ca73f | |||
| 80a226a302 | |||
| 0d41bd40e5 | |||
| d2fe96a599 | |||
| d0d41a4d2b | |||
| 5e7a153d6d | |||
| 55d414c1d0 | |||
| ac6a440151 | |||
| ff48ca83e2 | |||
| 358577745f | |||
| 087a913a48 | |||
| a9dedb7869 | |||
| 92e3d76b7e | |||
| 2da7195dd0 | |||
| 18f7fedbc2 | |||
| aa93813ba5 | |||
| def3d770ed | |||
| 6b8bcb8ebb | |||
| ff5afe518a | |||
| 6f42251f5f | |||
| 06917078ae | |||
| 4331b26542 | |||
| dd8a8ddd53 | |||
| abb0d488eb | |||
| be97b848d0 | |||
| 6bc112d689 | |||
| dc534a0c51 | |||
| e71ed05e6c | |||
| 2048ed6baf | |||
| c146bd6155 | |||
| 98665abf4d | |||
| 9954140d3a | |||
| fafee63a64 | |||
| c623d69767 | |||
| 670eb28bc0 | |||
| 144ff286f6 | |||
| 05f94de0b4 | |||
| c4650ce603 | |||
| 3971a8ee23 | |||
| a3ba6bc783 | |||
| b87df02714 | |||
| 713695cf7d | |||
| a25f30eda7 | |||
| eddb3a1858 | |||
| 5a89200f1d | |||
| 2f47a9e3db | |||
| 155b6272ec | |||
| 1479584bfc | |||
| f86be5bd97 | |||
| c87a7095ad | |||
| ac4df7a5f7 | |||
| c48839ff8c | |||
| ea296e3f05 | |||
| 8124ed62fe | |||
| cc643d2641 | |||
| 6de42c5ba9 | |||
| 36b7f4dee7 | |||
| 2328f09023 | |||
| 60faeeace9 | |||
| abe53dd88b | |||
| c76a18c5ff | |||
| 3725ce1882 | |||
| 6a69ff02b1 | |||
| 6ba41af305 | |||
| 5815a08b55 | |||
| 7805161829 | |||
| 6fa31f3866 | |||
| 0763faf224 | |||
| a3d3e12467 | |||
| ab22a3ec88 | |||
| 9d0a059909 | |||
| 1011f112b2 | |||
| d07ab2c71f | |||
| 96bfef04a8 | |||
| 779dd7e93d | |||
| 0abcb34829 | |||
| 33c028207a | |||
| 64b3e40ed0 | |||
| 0023676b28 | |||
| b90039f21a | |||
| b5f24ebf2e | |||
| f99a010e4a | |||
| a4944360a6 | |||
| a2b5d81c98 | |||
| 13b7c2572d | |||
| 47b12882ba | |||
| c008aa585b | |||
| 406b5e8480 | |||
| 584a196784 | |||
| 618f7751d1 | |||
| faaea1129a | |||
| dd7afc28f7 | |||
| 9ecf5ce073 | |||
| 422373f00e | |||
| 60636daeb8 | |||
| 9d47f4c2bc | |||
| 4d6dbddd28 | |||
| 3f00ff39d2 | |||
| bff6a81586 | |||
| 9cb8036d3c | |||
| a43de1fa91 | |||
| 93717bee2d | |||
| 8db1d6fdce | |||
| b41f8c7eca | |||
| c19405d32a | |||
| 7b75c533a8 | |||
| 649dbab901 | |||
| 1a4498d19f | |||
| 2786ef454d | |||
| 961c0dd2a5 | |||
| 0a0835d3a6 | |||
| bc87d10d59 | |||
| 792693848b | |||
| de229c5f78 | |||
| 03f9a836e6 | |||
| 91751574cc | |||
| d5453dada6 | |||
| 22adb18a39 | |||
| 0a3c40dd5d | |||
| b29825d62b | |||
| c9bda8aab2 | |||
| 284a4b064a | |||
| 6f20f53d75 | |||
| 473a047af9 | |||
| 481f9a881f | |||
| 6ceedddbc1 | |||
| bd9e0fad48 | |||
| 6b118d00b6 | |||
| 01e221196f | |||
| ccf016999b | |||
| cb79e47796 | |||
| 4076bd6065 | |||
| e54c258007 | |||
| c3b7401255 | |||
| 9af72d30f4 | |||
| dbe948ae5f | |||
| 885d36a90c | |||
| 7acfbc0113 | |||
| 43c5faf988 | |||
| 437142fba0 | |||
| acf7b702ee | |||
| 74ca1be884 | |||
| 26b987d6ce | |||
| 3f7f1d88ed | |||
| 59225b1688 | |||
| 108aee2c43 | |||
| 9062ce32a1 | |||
| 7c74a0f3fe | |||
| 4fb3a12f47 | |||
| 59bc25f31c | |||
| 87fbe7852c | |||
| 793d283d97 | |||
| 651ae18345 | |||
| 67eb32968e | |||
| c6d41513c0 | |||
| 67ba698b60 | |||
| 15d1c00ac6 | |||
| 9e9a82ffc0 | |||
| a0eb5210ab | |||
| 3dacc0316e | |||
| e2c347c912 | |||
| 758f8b1f55 | |||
| b446a8f519 | |||
| c8ba0dd770 | |||
| f13a1329ca | |||
| 4b3604098f | |||
| defbf6746f | |||
| bf3f26ec4f | |||
| 76018333b0 | |||
| e6e345b9fe | |||
| eafccabb66 | |||
| f2e0628de1 | |||
| 2e1f3a10ab | |||
| bf18c96dbd | |||
| 23718a5f3f | |||
| c6a1d5bdcf | |||
| f75e94f706 | |||
| 11c9bb6c23 | |||
| b1ff9c47da | |||
| 35c09dc70b | |||
| f0efae5987 | |||
| 65120cd2d4 | |||
| 231d062814 | |||
| 615922a881 | |||
| 61b2b824d5 | |||
| 317445998a | |||
| 4ad3813499 | |||
| 9a88243323 | |||
| df0f32c71a | |||
| 4ddd402442 | |||
| a05c4b3898 | |||
| a3ab0973c9 | |||
| 0f801aa44b | |||
| 7bc386bc44 | |||
| e148c60d70 | |||
| 4667352ec4 | |||
| e7cf694d88 | |||
| b2abb3046b | |||
| 6c1011e59e | |||
| ad909b98bf | |||
| 9d2e35246a | |||
| 48dc573c0f | |||
| e559660912 | |||
| aa3bec304a | |||
| c7bc22813f | |||
| 46e73db10a | |||
| ad451c2ae0 | |||
| 0b5b557a35 | |||
| fb9228c432 | |||
| fbcbe93042 | |||
| ca44deb077 | |||
| 61403bfac2 | |||
| 190efa4b74 | |||
| ca06836b11 | |||
| b31241872f | |||
| f80e2844bf | |||
| 1dae86f0e7 | |||
| 0c146caeef | |||
| 410733211b | |||
| 14df8969c2 | |||
| 4388414ac2 | |||
| 791ac8d436 | |||
| a3d6f498b1 | |||
| b8fdd61948 | |||
| 4437372d7c | |||
| f8d29d80b7 | |||
| 36fd9599af | |||
| 65eccde487 | |||
| 037b4cc562 | |||
| 9c971a6fa4 | |||
| a3faa17754 | |||
| 085f905125 | |||
| dc16ced786 | |||
| d5cba26098 | |||
| 001dd2cb87 | |||
| 16e860a29f | |||
| 6a5331d8eb | |||
| aff0b0fe98 | |||
| fd3612c370 | |||
| d14a46d3d7 | |||
| d7ace77de8 | |||
| 885e4722af | |||
| 72ed6369d8 | |||
| b23e440efd | |||
| 75ddb002fd | |||
| 28a36335ce | |||
| fba225aa70 | |||
| af800ac84c | |||
| 87e90d7152 | |||
| c25942a6ca | |||
| 692419816f | |||
| 3a109340fd | |||
| 5925ecb975 | |||
| 325acd3580 | |||
| 3ac85784a9 | |||
| 5c4e715970 | |||
| 89b57feb4e | |||
| fc194d3f85 | |||
| 12af0ea238 | |||
| 6e758cf62e | |||
| f7783c070b | |||
| fb3cd30db4 | |||
| ff949a8205 | |||
| 624653f581 | |||
| f3e5f02f07 | |||
| d0792e9e84 | |||
| f752eb5d4a | |||
| f0861fde84 | |||
| 4e7aa09c21 | |||
| e68a0dc151 | |||
| fc37bea98a | |||
| 8a91e611ac | |||
| 7208db6981 | |||
| 447a78cd3a | |||
| 95dff519b8 | |||
| 62aeebae95 | |||
| c2e03728f8 | |||
| a64fbab270 | |||
| 00ea16f631 | |||
| e3aafcdfe9 | |||
| 421a3a2dab | |||
| 61e4f7e450 | |||
| 3b52cab162 | |||
| fe9be61772 | |||
| 0818f880cc | |||
| cca062efec | |||
| 2eb7ac85d3 | |||
| 3469a3923c | |||
| 20fb49b3e4 | |||
| afe8feebc2 | |||
| ae6a68d85b | |||
| d80c45acd5 | |||
| 3a9ac2c289 | |||
| 2d68836724 | |||
| 0deb85b5a3 | |||
| 7b38f6e3b3 | |||
| 43f050f070 | |||
| 098b7c4fb5 | |||
| eae56199e0 | |||
| 71e8f0f465 | |||
| 66d7183278 | |||
| 92b92f2d65 | |||
| d5ab7d82eb | |||
| 1ebd9f9c0b | |||
| 7fd2c60ddb | |||
| f068182557 | |||
| 02945b0691 | |||
| 21b959e6a3 | |||
| 747091c744 | |||
| 7b70052ff1 | |||
| 49fd26bc4c | |||
| 77f365ef45 | |||
| 6d34d46e38 | |||
| 970c2e0837 | |||
| b87549d567 | |||
| 78abdb2fef | |||
| f73ebb08c9 | |||
| 628e8eec09 | |||
| 66ddcaec5b | |||
| 3901c82aae | |||
| 9f682b66a5 | |||
| c74aff7b91 | |||
| 1be50b1277 | |||
| af00d1a54b | |||
| dd4ad82248 | |||
| 38c08cbced | |||
| ed2c74a280 | |||
| 90ab1bb6b4 | |||
| 3e2220e5f2 | |||
| 33e27620b1 | |||
| fbdef2a1ec | |||
| 1834639b50 | |||
| f9606a3c88 | |||
| c803d7abbb | |||
| efd75817bc | |||
| 36fff15e2b | |||
| 7573bfb344 | |||
| 0c33d638ba | |||
| 7d3da34e22 | |||
| 0e2723a367 | |||
| b102c44031 | |||
| 4b480c35e5 | |||
| 8e7bcd8fd8 | |||
| c60c545031 | |||
| 51d075f799 | |||
| db54ec1650 | |||
| 14b362442f | |||
| fcfbeece87 | |||
| aea501aedb | |||
| f1d175fe84 | |||
| 0f432c4fd9 | |||
| b53e19c439 | |||
| bebd20abf0 | |||
| 5dc2293212 | |||
| 37f480c01e | |||
| f16efa24b0 | |||
| e11d05eb02 | |||
| 32cd45106d | |||
| 7b95893b34 | |||
| b6769f6350 | |||
| 5650b2d6b9 | |||
| f0fe8edf80 | |||
| b30df5b6ed | |||
| 0ef26556a2 | |||
| ea92feab27 | |||
| 1720e156d2 | |||
| 9ed06e741e | |||
| d39a3a78d0 | |||
| 09dc2984f3 | |||
| 660e3f8a99 | |||
| cc9797eb71 | |||
| 6a8aa73e63 | |||
| 689495e410 | |||
| 415fad4f4e | |||
| 396db7a439 | |||
| 61bea5639b | |||
| c9d6812d11 | |||
| 18dd435678 | |||
| a7a4112312 | |||
| cf8cb9a6a4 |
4
.gitignore
vendored
@@ -415,3 +415,7 @@ fabric.properties
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
# packages for node
|
||||
package.json
|
||||
package-lock.json
|
||||
|
||||
|
||||
@@ -21,6 +21,9 @@ def get_articles_block_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = request.POST.dict()
|
||||
@@ -42,6 +45,9 @@ def get_articles_block_ajax(request):
|
||||
# 'form': RouteForm(initial=data)
|
||||
}
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
|
||||
@@ -6,7 +6,7 @@ from datetime import datetime, date
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.template import loader
|
||||
from .funcs import *
|
||||
from GeneralApp.funcs import get_inter_http_respose
|
||||
from GeneralApp.funcs import get_inter_http_response
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
# from django.contrib.auth.decorators import login_required
|
||||
@@ -28,20 +28,23 @@ def get_flat_pages_links_Dict(site):
|
||||
|
||||
def get_article_breadcrumbs(request, art):
|
||||
# print('get_article_breadcrumbs')
|
||||
articles_add_count = 1
|
||||
articles_add_count = 3
|
||||
# half_count = articlesCountInBlock / 2
|
||||
|
||||
arts_top = ArticleModel.objects.filter(enable=True, createDT__gt=art.createDT).order_by(
|
||||
'createDT')[:articles_add_count]
|
||||
arts_down = ArticleModel.objects.filter(enable=True, createDT__lt=art.createDT).order_by(
|
||||
'-createDT')[:articles_add_count]
|
||||
# arts_top = ArticleModel.objects.filter(enable=True, createDT__gt=art.createDT).order_by(
|
||||
# 'createDT')[:articles_add_count]
|
||||
# arts_down = ArticleModel.objects.filter(enable=True, createDT__lt=art.createDT).order_by(
|
||||
# '-createDT')[:articles_add_count]
|
||||
# if len(artListDown)<half_count:
|
||||
# art_List = ArticleModel.objects.filter(enable=True, article_DT__gte=art.article_DT).order_by(
|
||||
# 'article_DT')[:art.articlesCountInBlock-len(artListDown)]
|
||||
|
||||
breadcrumbs_arts = ArticleModel.objects.exclude(id=art.id).order_by('?')[:3]
|
||||
|
||||
Dict = {
|
||||
'arts_top': arts_top,
|
||||
'arts_down': arts_down
|
||||
'breadcrumbs_arts': breadcrumbs_arts
|
||||
# 'arts_top': arts_top,
|
||||
# 'arts_down': arts_down
|
||||
}
|
||||
return Dict
|
||||
|
||||
@@ -82,14 +85,14 @@ def ArticlesPageView(request, year=None):
|
||||
Dict = get_articles(art_kwargs=kwargs)
|
||||
Dict.update({
|
||||
'page': {
|
||||
'title': _('Страница списка новостей'),
|
||||
'description': _('Все новости сайта tripwb.com'),
|
||||
'title': _('Новости сервиса доставки посылок | TripWB'),
|
||||
'description': _('Обновления, полезные статьи и свежие новости от TripWB ✓ Актуальные новости в мире доставок по всему СНГ ➡️ Следите за нашими новостями'),
|
||||
'keywords': _('Все новости сайта tripwb.com'),
|
||||
}
|
||||
})
|
||||
|
||||
t = loader.get_template('pages/p_articles.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
@@ -122,7 +125,7 @@ def UserPageView(request, page_url):
|
||||
|
||||
|
||||
t = loader.get_template('pages/p_user_page.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
@@ -152,5 +155,5 @@ def ArticlesOnePageView(request, art_url):
|
||||
|
||||
|
||||
t = loader.get_template('pages/p_article.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
102
AuthApp/admin.py
@@ -39,10 +39,12 @@ class Admin_ProfileInline(admin.StackedInline):
|
||||
(None, {
|
||||
'classes': ['wide'],
|
||||
'fields': (
|
||||
('account_type',),
|
||||
# ('account_type',),
|
||||
('enable',),
|
||||
('avatar',),
|
||||
('phone',),
|
||||
('country', 'city'),
|
||||
('mailing_on', ),
|
||||
('authMailCode',),
|
||||
('birthdate'),
|
||||
'comment', 'creator'
|
||||
@@ -71,6 +73,10 @@ class Admin_ProfileInline(admin.StackedInline):
|
||||
|
||||
class Admin_User(UserAdmin):
|
||||
|
||||
def mailing_on(self, obj):
|
||||
return obj.user_profile.mailing_on
|
||||
mailing_on.boolean = True
|
||||
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'classes': ['wide'],
|
||||
@@ -91,61 +97,65 @@ class Admin_User(UserAdmin):
|
||||
|
||||
save_on_top = True
|
||||
|
||||
list_display = ['id', 'last_name', 'first_name', 'email', 'is_staff',
|
||||
'is_active']
|
||||
list_display = ['id', 'last_name', 'first_name', 'mailing_on', 'email', 'is_staff',
|
||||
'is_active', 'date_joined', 'last_login']
|
||||
list_editable = ['is_staff', 'is_active']
|
||||
list_display_links = ['first_name', 'last_name', 'email']
|
||||
search_fields = ['first_name', 'last_name', 'email']
|
||||
|
||||
readonly_fields = ['date_joined', 'last_login']
|
||||
|
||||
list_filter = ['user_profile__mailing_on', 'is_staff', 'is_active', 'date_joined', 'last_login']
|
||||
|
||||
inlines = (Admin_ProfileInline,)
|
||||
# actions = ['del_all_temp_users', ]
|
||||
|
||||
ordering = ['is_staff', 'last_name', 'first_name']
|
||||
ordering = ['is_staff', '-id', 'last_name', 'first_name']
|
||||
|
||||
# Re-register UserAdmin
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User, Admin_User)
|
||||
|
||||
|
||||
class Admin_UserProfile(Admin_BaseIconModel):
|
||||
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'classes': ['wide'],
|
||||
'fields': (
|
||||
'user', 'enable',
|
||||
('account_type',),
|
||||
('phone',),
|
||||
('country', 'city'),
|
||||
('authMailCode',),
|
||||
('birthdate'),
|
||||
'creator'
|
||||
)
|
||||
}),
|
||||
('1С', {
|
||||
'classes': ['wide'],
|
||||
'fields': (
|
||||
('name',),
|
||||
)
|
||||
}),
|
||||
)
|
||||
|
||||
save_on_top = True
|
||||
|
||||
list_display = [
|
||||
'id', 'user', 'enable', 'birthdate', 'modifiedDT', 'createDT'
|
||||
]
|
||||
list_editable = ['enable', 'birthdate']
|
||||
list_display_links = ['id', ] # 'user__last_name', 'user__first_name']
|
||||
search_fields = [
|
||||
'id', 'user__last_name', 'user__first_name', 'user__email',
|
||||
]
|
||||
|
||||
list_filter = ['enable', 'account_type']
|
||||
|
||||
# filter_horizontal = ['connected_mailings']
|
||||
# raw_id_fields = ("favourites",)
|
||||
verbose_name_plural = _(u'Профиль пользователя')
|
||||
|
||||
|
||||
admin.site.register(UserProfile, Admin_UserProfile)
|
||||
# class Admin_UserProfile(Admin_BaseIconModel):
|
||||
#
|
||||
# fieldsets = (
|
||||
# (None, {
|
||||
# 'classes': ['wide'],
|
||||
# 'fields': (
|
||||
# 'user', 'enable',
|
||||
# ('account_type',),
|
||||
# ('phone',),
|
||||
# ('country', 'city'),
|
||||
# ('authMailCode',),
|
||||
# ('birthdate'),
|
||||
# 'creator'
|
||||
# )
|
||||
# }),
|
||||
# ('1С', {
|
||||
# 'classes': ['wide'],
|
||||
# 'fields': (
|
||||
# ('name',),
|
||||
# )
|
||||
# }),
|
||||
# )
|
||||
#
|
||||
# save_on_top = True
|
||||
#
|
||||
# list_display = [
|
||||
# 'id', 'user', 'enable', 'birthdate', 'modifiedDT', 'createDT'
|
||||
# ]
|
||||
# list_editable = ['enable', 'birthdate']
|
||||
# list_display_links = ['id', ] # 'user__last_name', 'user__first_name']
|
||||
# search_fields = [
|
||||
# 'id', 'user__last_name', 'user__first_name', 'user__email',
|
||||
# ]
|
||||
#
|
||||
# list_filter = ['enable', 'account_type']
|
||||
#
|
||||
# # filter_horizontal = ['connected_mailings']
|
||||
# # raw_id_fields = ("favourites",)
|
||||
# verbose_name_plural = _(u'Профиль пользователя')
|
||||
#
|
||||
#
|
||||
# admin.site.register(UserProfile, Admin_UserProfile)
|
||||
|
||||
@@ -26,25 +26,64 @@ class RegistrationForm(forms.Form):
|
||||
email = forms.EmailField()
|
||||
password = forms.CharField(widget=forms.PasswordInput())
|
||||
confirm_password = forms.CharField(widget=forms.PasswordInput())
|
||||
tel = forms.CharField()
|
||||
tel = forms.CharField(required=False)
|
||||
agreement = forms.BooleanField(initial=False, required=True)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
required_password = True
|
||||
required_agreement = True
|
||||
required_email = True
|
||||
create_new_account = True
|
||||
if 'not_required_password' in kwargs.keys() and kwargs['not_required_password']:
|
||||
required_password = False
|
||||
del kwargs['not_required_password']
|
||||
if 'not_required_agreement' in kwargs.keys() and kwargs['not_required_agreement']:
|
||||
required_agreement = False
|
||||
del kwargs['not_required_agreement']
|
||||
if 'not_required_email' in kwargs.keys() and kwargs['not_required_email']:
|
||||
required_email = False
|
||||
del kwargs['not_required_email']
|
||||
if 'create_new_account' in kwargs.keys() and not kwargs['create_new_account']:
|
||||
create_new_account = False
|
||||
del kwargs['create_new_account']
|
||||
|
||||
super(RegistrationForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.fields['password'].required = required_password
|
||||
self.fields['confirm_password'].required = required_password
|
||||
|
||||
self.fields['agreement'].required = required_agreement
|
||||
|
||||
self.fields['email'].required = required_email
|
||||
|
||||
self.create_new_account = create_new_account
|
||||
|
||||
def clean(self):
|
||||
pass
|
||||
# cleaned_data = super().clean()
|
||||
# for item in self.changed_data:
|
||||
# if item in self.data:
|
||||
#
|
||||
#
|
||||
# cc_myself = cleaned_data.get("cc_myself")
|
||||
# subject = cleaned_data.get("subject")
|
||||
#
|
||||
# if cc_myself and subject:
|
||||
# # Only do something if both fields are valid so far.
|
||||
# if "help" not in subject:
|
||||
# raise ValidationError(
|
||||
# "Did not send for 'help' in the subject despite " "CC'ing yourself."
|
||||
# )
|
||||
cleaned_data = super().clean()
|
||||
# i = 0
|
||||
# names = list(cleaned_data.keys())
|
||||
# while i < len(names):
|
||||
# if not cleaned_data[names[i]]:
|
||||
# if self.fields[names[i]].required:
|
||||
# self.add_error(names[i], _('Обязательное поле'))
|
||||
# i += 1
|
||||
|
||||
if 'tel' in cleaned_data and 'tel' in cleaned_data:
|
||||
from BaseModels.validators.form_field_validators import get_phone_valid_error
|
||||
error = get_phone_valid_error(cleaned_data["tel"])
|
||||
if error:
|
||||
self.add_error('tel', error)
|
||||
|
||||
if cleaned_data and 'confirm_password' in cleaned_data and 'password' in cleaned_data:
|
||||
if cleaned_data['confirm_password'] != cleaned_data['password']:
|
||||
self.add_error("password", _('Пароль и подтверждение пароля не совпадают'))
|
||||
self.add_error("confirm_password", _('Пароль и подтверждение пароля не совпадают'))
|
||||
|
||||
if self.create_new_account and cleaned_data and 'email' in cleaned_data:
|
||||
users = User.objects.filter(email=cleaned_data['email'])
|
||||
if users:
|
||||
self.add_error('email', _("Пользователь с указанным email уже существует"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,27 @@
|
||||
from django.http import QueryDict
|
||||
from django.template.loader import render_to_string
|
||||
from SubscribesApp.funcs import check_option_in_cur_user_subscribe
|
||||
|
||||
|
||||
def get_user_timezone_Dict(user, request=None):
|
||||
tz = None
|
||||
if request:
|
||||
tz = request.COOKIES.get("user_tz")
|
||||
if not tz and user.is_authenticated:
|
||||
tz = user.user_profile.get_timezone()
|
||||
|
||||
if not tz:
|
||||
from django.conf import settings
|
||||
tz = settings.TIME_ZONE
|
||||
|
||||
return {'user_tz': tz}
|
||||
|
||||
def get_dashboard_page_content_html(request):
|
||||
|
||||
from ChatServiceApp.funcs import get_unanswered_msgs_count_for_user
|
||||
|
||||
Dict = {
|
||||
'unanswered_msgs_count': get_unanswered_msgs_count_for_user(request.user)
|
||||
}
|
||||
|
||||
html = render_to_string('blocks/profile/b_profile_first_page.html', Dict, request=request)
|
||||
@@ -13,20 +32,23 @@ def get_profile_page_content_html(request, page_name, data):
|
||||
if page_name == 'chat':
|
||||
from ChatServiceApp.funcs import get_chat_page_content_html
|
||||
return get_chat_page_content_html(request, data)
|
||||
elif page_name == 'create_route_for_customer':
|
||||
elif (page_name == 'create_route_for_customer' and
|
||||
check_option_in_cur_user_subscribe(request.user, 'размещение заявок')):
|
||||
from RoutesApp.funcs import get_profile_new_route_page_html
|
||||
return get_profile_new_route_page_html(request, {})
|
||||
elif page_name == 'create_route_for_mover':
|
||||
return get_profile_new_route_page_html(request, {'owner_type': 'customer'})
|
||||
elif (page_name == 'create_route_for_mover' and
|
||||
check_option_in_cur_user_subscribe(request.user, 'размещение заявок')):
|
||||
from RoutesApp.funcs import get_profile_new_route_page_html
|
||||
return get_profile_new_route_page_html(request, {})
|
||||
return get_profile_new_route_page_html(request, {'owner_type': 'mover'})
|
||||
elif page_name == 'my_routes':
|
||||
from RoutesApp.funcs import get_profile_my_routes_page_content_html
|
||||
return get_profile_my_routes_page_content_html(request)
|
||||
elif page_name == 'support':
|
||||
return get_profile_support_page_content_html(request, data)
|
||||
elif page_name == 'my_subscribe':
|
||||
from SubscribesApp.funcs import get_profile_subscribe_page_content_html
|
||||
return get_profile_subscribe_page_content_html(request)
|
||||
from SubscribesApp.funcs import get_profile_subscribe_page_content_Dict
|
||||
res = get_profile_subscribe_page_content_Dict(request, check_orders_required=True)
|
||||
return res['html']
|
||||
elif page_name == 'change_profile':
|
||||
return get_profile_change_page_content_html(request)
|
||||
elif page_name == 'dashboard':
|
||||
@@ -35,7 +57,7 @@ def get_profile_page_content_html(request, page_name, data):
|
||||
return None
|
||||
|
||||
|
||||
def get_profile_change_page_content_html(request):
|
||||
def get_profile_change_page_content_html(request, data=None):
|
||||
|
||||
init_Dict = {
|
||||
'firstname': request.user.first_name,
|
||||
@@ -45,6 +67,25 @@ def get_profile_change_page_content_html(request):
|
||||
'country': request.user.user_profile.country,
|
||||
'city': request.user.user_profile.city,
|
||||
}
|
||||
|
||||
if data:
|
||||
if type(data) == QueryDict:
|
||||
data = data.dict()
|
||||
init_Dict.update(data)
|
||||
# if 'firstname' in data:
|
||||
# init_Dict.update({'first_name': data['firstname']})
|
||||
# if 'lastname' in data:
|
||||
# init_Dict.update({'last_name': data['lastname']})
|
||||
# if 'email' in data:
|
||||
# init_Dict.update({'email': data['email']})
|
||||
# init_Dict.update({'username': data['email']})
|
||||
# if 'country' in data:
|
||||
# init_Dict.update({'country': data['country']})
|
||||
# if 'city' in data:
|
||||
# init_Dict.update({'city': data['city']})
|
||||
# if 'tel' in data:
|
||||
# init_Dict.update({'tel': data['tel']})
|
||||
|
||||
from .forms import RegistrationForm
|
||||
form = RegistrationForm(initial=init_Dict)
|
||||
|
||||
@@ -73,5 +114,7 @@ def get_profile_support_page_content_html(request, data=None):
|
||||
}
|
||||
tpl_name = 'blocks/profile/b_support_tickets.html'
|
||||
|
||||
Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
|
||||
html = render_to_string(tpl_name, Dict, request=request)
|
||||
return html
|
||||
@@ -23,11 +23,15 @@ urlpatterns = [
|
||||
|
||||
path('support_tickets/', support_tickets_ajax, name='support_tickets_ajax'),
|
||||
|
||||
path('password_recovery/', password_recovery_ajax, name='password_recovery_ajax'),
|
||||
path('password_recovery_confirm/', password_recovery_confirm_ajax, name='password_recovery_confirm_ajax'),
|
||||
|
||||
path('change_profile/', change_profile_ajax, name='change_profile_ajax'),
|
||||
path('change_profile_confirm/', change_profile_confirm_ajax, name='change_profile_confirm_ajax'),
|
||||
path('change_avatar_confirm/', change_avatar_confirm_ajax, name='change_avatar_confirm_ajax'),
|
||||
|
||||
path('send_message/', send_message_ajax, name='send_message_ajax')
|
||||
path('send_message/', send_message_ajax, name='send_message_ajax'),
|
||||
|
||||
path('mailing_subscribe/', mailing_subscribe_ajax, name='mailing_subscribe_ajax')
|
||||
|
||||
]
|
||||
@@ -16,9 +16,11 @@ from django.core.exceptions import ValidationError
|
||||
import json
|
||||
from django.core.files import File
|
||||
import base64
|
||||
from django.core.validators import validate_email
|
||||
from django.urls import reverse
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
|
||||
|
||||
# @login_required(login_url='/profile/login/')
|
||||
# @login_required()#login_url='/profile/login/')
|
||||
# def subscribe_ajax(request):
|
||||
# if request.method != 'POST':
|
||||
# raise Http404
|
||||
@@ -29,12 +31,183 @@ import base64
|
||||
# html = render_to_string('blocks/profile/b_subscribe.html', Dict, request=request)
|
||||
# return JsonResponse({'html': html}, status=200)
|
||||
|
||||
def password_recovery_confirm_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
if not 'pass' in request.POST or not 'pass_confirm' in request.POST or not 'user_id' in request.POST:
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
if not request.POST['pass'] or request.POST['pass'] != request.POST['pass_confirm']:
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': _('Пароли не совпадают')
|
||||
}, status=400)
|
||||
|
||||
user = User.objects.get(id=request.POST['user_id'])
|
||||
user.set_password(request.POST['pass'])
|
||||
user.user_profile.authMailCode = None
|
||||
user.user_profile.save(update_fields=['authMailCode'])
|
||||
user.is_active = True
|
||||
user.save()
|
||||
|
||||
return JsonResponse({
|
||||
'status': 'success',
|
||||
'message': _('Пароль был успешно изменен')
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': str(e)
|
||||
}, status=400)
|
||||
|
||||
def password_recovery_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
email = request.POST['email']
|
||||
|
||||
try:
|
||||
user = User.objects.get(email=email)
|
||||
except User.DoesNotExist:
|
||||
msg = _('Пользователь с указанным email не зарегистрирован на сайте')
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': msg
|
||||
}, status=400)
|
||||
|
||||
user.user_profile.authMailCode = uuid1().hex
|
||||
user.user_profile.save(update_fields=['authMailCode'])
|
||||
|
||||
from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options
|
||||
sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True)
|
||||
|
||||
subject = _('Изменение пароля учетной записи на сайте tripwb.com')
|
||||
|
||||
mail_txt = _('Вы получили это письмо потому что '
|
||||
'был произведен запрос на изменение пароля '
|
||||
'для данного email на сайте tripwb.com.<br>'
|
||||
'<br>'
|
||||
'Если Вы не выполняли запрос - просто проигнорируйте это письмо.<br><br>'
|
||||
'Если же это были Вы и Вам требуется изменить пароль от учетной записи - '
|
||||
'перейдите по ссылке, указанной ниже.<br><br>')
|
||||
link = sets["domain"] + f'/profile/reset_password/{str(user.id)}/{user.user_profile.authMailCode}/'
|
||||
link_str = f'<a href="{link}">ИЗМЕНИТЬ ПАРОЛЬ</a><br><br>'
|
||||
|
||||
sign_txt = _('Спасибо за то, что вы с нами!<br>'
|
||||
'С уважением,<br>'
|
||||
'Команда Trip With Bonus.<br>')
|
||||
|
||||
Dict = {
|
||||
'logo': f'{sets["domain"]}/static/img/svg/LogoMobile.svg',
|
||||
'project_name': sets['project_name'],
|
||||
'message_title': subject,
|
||||
'message_text': f'<p style="padding-left: 20px; line-height: 30px;">'
|
||||
f'{mail_txt}'
|
||||
f'{link_str}'
|
||||
f'{sign_txt}'
|
||||
f'</p>'
|
||||
}
|
||||
|
||||
html = render_to_string('mail/m_request_offer.html', Dict, request)
|
||||
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
|
||||
mail_sets = get_mail_send_options()
|
||||
to = [email]
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
to = ['web@syncsystems.net']
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
|
||||
return JsonResponse({
|
||||
'status': 'sended',
|
||||
'message': _('На email') + ' ' + email + ' '
|
||||
+ _('отправлено письмо с инструкциями для восстановления пароля. Если не пришло письмо, проверьте папку СПАМ')
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': str(e)
|
||||
}, status=400)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def mailing_subscribe_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
email = request.POST['email']
|
||||
user = None
|
||||
if request.user and request.user.is_authenticated:
|
||||
user = request.user
|
||||
user.user_profile.mailing_on = True
|
||||
user.user_profile.save(update_fields=['mailing_on'])
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {
|
||||
'status': 'sended',
|
||||
'del_form': True,
|
||||
'html': _('Подписка на рассылку для адреса ') + user.email + _(' одобрена')
|
||||
}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
|
||||
if not user:
|
||||
try:
|
||||
user = User.objects.get(email=email)
|
||||
except User.DoesNotExist:
|
||||
user = None
|
||||
|
||||
if user:
|
||||
redirect_url = f"{reverse('login_profile')}?mailingSubscribeRequired=true"
|
||||
else:
|
||||
redirect_url = f"{reverse('registration_page')}?mailingSubscribeRequired=true"
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {
|
||||
'status': 'sended',
|
||||
'redirect_url': redirect_url,
|
||||
'email': email
|
||||
}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'html': str(e)
|
||||
}, status=400)
|
||||
|
||||
|
||||
def send_message_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = request.POST
|
||||
@@ -71,21 +244,61 @@ def send_message_ajax(request):
|
||||
phone_str = ''
|
||||
email_str = ''
|
||||
msg_str = ''
|
||||
if request_type:
|
||||
request_type_str = f'<b>{_("Тип запроса")}:</b> {request_type}<br>'
|
||||
if 'name' in data:
|
||||
name_str = f'<b>{_("Имя")}:</b> {data["name"]}<br>'
|
||||
if 'phone' in data:
|
||||
phone_str = f'<b>{_("Телефон")}:</b> {data["phone"]}<br>'
|
||||
if 'email' in data:
|
||||
email_str = f'<b>{_("email")}:</b> {data["email"]}<br>'
|
||||
if 'text_msg' in data:
|
||||
msg_str = (f'<b>{_("Сообщение")}:</b><br>'
|
||||
f'<div style="margin-left: 40px; line-height: 20px;">{data["text_msg"]}</div><br>')
|
||||
form_type = 'one_field'
|
||||
errors = {}
|
||||
|
||||
for name, val in data.items():
|
||||
if not val:
|
||||
errors.update({name: _('Обязательное поле')})
|
||||
|
||||
if name == 'form_name':
|
||||
request_type_str = f'<b>{_("Тип запроса")}:</b> {request_type}<br>'
|
||||
|
||||
if name == 'name':
|
||||
name_str = f'<b>{_("Имя")}:</b> {data["name"]}<br>'
|
||||
if form_type == 'one_field':
|
||||
form_type = 'two_fields'
|
||||
|
||||
if name =='phone':
|
||||
from BaseModels.validators.form_field_validators import get_phone_valid_error
|
||||
error = get_phone_valid_error(data["phone"])
|
||||
if error:
|
||||
errors.update({name: _(error)})
|
||||
phone_str = f'<b>{_("Телефон")}:</b> {data["phone"]}<br>'
|
||||
|
||||
if name =='email':
|
||||
try:
|
||||
error = validate_email(data["email"])
|
||||
except ValidationError as e:
|
||||
error = e.message
|
||||
if error:
|
||||
errors.update({name: _(error)})
|
||||
email_str = f'<b>{_("email")}:</b> {data["email"]}<br>'
|
||||
|
||||
if name =='text_msg':
|
||||
msg_str = (f'<b>{_("Сообщение")}:</b><br>'
|
||||
f'<div style="margin-left: 40px; line-height: 20px;">{data["text_msg"]}</div><br>')
|
||||
form_type = 'full'
|
||||
|
||||
if errors:
|
||||
Dict = {
|
||||
'form': data.dict()
|
||||
}
|
||||
Dict['form'].update({
|
||||
'errors': errors
|
||||
})
|
||||
|
||||
tpl = 'forms/f_one_field_form.html'
|
||||
if form_type == 'full':
|
||||
tpl = 'forms/f_feedback_form.html'
|
||||
elif form_type == 'two_fields':
|
||||
tpl = 'forms/f_commercial_offer.html'
|
||||
|
||||
html = render_to_string(tpl, Dict, request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
Dict = {
|
||||
'logo': f'{request.scheme}://{sets["domain"]}/static/img/svg/LogoMobile.svg',
|
||||
'logo': f'{sets["domain"]}/static/img/svg/LogoMobile.svg',
|
||||
'project_name': sets['project_name'],
|
||||
'message_title': subject,
|
||||
'message_text': f'<p><b>{_("ДАННЫЕ ЗАПРОСА")}</b></p>'
|
||||
@@ -101,7 +314,18 @@ def send_message_ajax(request):
|
||||
html = render_to_string('mail/m_request_offer.html', Dict, request)
|
||||
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
|
||||
mail_sets = get_mail_send_options()
|
||||
to = [mail_sets['sender_email'], 'web@syncsystems.net']
|
||||
opts = get_options_by_opt_types('support_email', only_vals=True)
|
||||
if opts and 'support_email' in opts:
|
||||
to = [opts['support_email']]
|
||||
else:
|
||||
to = [mail_sets['sender_email']]
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
to = ['web@syncsystems.net']
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
@@ -111,22 +335,28 @@ def send_message_ajax(request):
|
||||
|
||||
html = render_to_string('widgets/w_msg_send_success.html', Dict, request)
|
||||
|
||||
return JsonResponse({
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {
|
||||
'status': 'sended',
|
||||
'html': html
|
||||
})
|
||||
}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
return JsonResponse({
|
||||
'status': 'error',
|
||||
'error': str(e)
|
||||
'html': str(e)
|
||||
}, status=400)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def chats_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
from ChatServiceApp.funcs import get_chat_receivers_for_user, get_msgs_for_chat_w_users
|
||||
|
||||
receivers, unread_msgs_count = get_chat_receivers_for_user(request.user)
|
||||
@@ -147,27 +377,40 @@ def chats_ajax(request):
|
||||
'receivers': receivers,
|
||||
# 'messages': cur_chat_msgs
|
||||
}
|
||||
Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
|
||||
html = render_to_string('blocks/profile/b_chats.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {'html': html}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def support_tickets_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
html = get_profile_support_page_content_html(request)
|
||||
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {'html': html}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def change_avatar_confirm_ajax(request):
|
||||
from django.core.files.base import ContentFile
|
||||
from django.core.exceptions import RequestDataTooBig
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
file_data = json.loads(request.body)
|
||||
@@ -176,26 +419,47 @@ def change_avatar_confirm_ajax(request):
|
||||
file = ContentFile(content)
|
||||
request.user.user_profile.avatar.save(file_data['file_name'], file)
|
||||
request.user.user_profile.save(update_fields=['avatar'])
|
||||
except RequestDataTooBig:
|
||||
msg = _('Слишком большой размер файла. Размер файла не должен быть больше 3МБ')
|
||||
print(msg)
|
||||
return JsonResponse({'error': msg}, status=400)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'change_avatar_confirm_ajax Error = {str(e)}'
|
||||
print(msg)
|
||||
JsonResponse({'error': msg})
|
||||
return JsonResponse({'error': msg}, status=400)
|
||||
|
||||
return JsonResponse({'url': request.user.user_profile.avatar.url})
|
||||
res_Dict = {'url': request.user.user_profile.avatar.url}
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def change_profile_confirm_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
data = request.POST
|
||||
if not data:
|
||||
data = json.loads(request.body)
|
||||
|
||||
from .forms import RegistrationForm
|
||||
form = RegistrationForm(data)
|
||||
kwargs = {
|
||||
'not_required_password': True,
|
||||
'not_required_agreement': True,
|
||||
'not_required_email': True,
|
||||
'create_new_account': False,
|
||||
}
|
||||
form = RegistrationForm(data, **kwargs)
|
||||
if not form.is_valid():
|
||||
form.initial = data
|
||||
Dict = {'profileForm': form}
|
||||
|
||||
html = render_to_string('blocks/profile/b_profile.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
data_for_save = {}
|
||||
users = User.objects.filter(id=request.user.id)
|
||||
@@ -242,15 +506,20 @@ def change_profile_confirm_ajax(request):
|
||||
if data_for_save:
|
||||
user_profiles.update(**data_for_save)
|
||||
|
||||
html = get_profile_change_page_content_html(request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
html = get_profile_change_page_content_html(request, data)
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict = {'html': html}
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def dashboard_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
from .funcs import get_dashboard_page_content_html
|
||||
@@ -264,26 +533,32 @@ def dashboard_ajax(request):
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def change_profile_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
html = get_profile_change_page_content_html(request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def my_routes_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
Dict = {
|
||||
}
|
||||
|
||||
html = render_to_string('blocks/profile/b_my_routes.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
html = render_to_string('v2/blocks/b_my_routes.html', Dict, request=request)
|
||||
res_Dict = {'html': html}
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
|
||||
@@ -293,6 +568,8 @@ def login_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = request.POST
|
||||
@@ -308,6 +585,9 @@ def login_ajax(request):
|
||||
user = authenticate(username=form.data['username'], password=form.data['password'])
|
||||
if user is not None:
|
||||
auth.login(request, user)
|
||||
if 'mailingSubscribeRequired' in data and data['mailingSubscribeRequired'] == 'true':
|
||||
user.user_profile.mailing_on = True
|
||||
user.user_profile.save(update_fields=['mailing_on'])
|
||||
else:
|
||||
errors_Dict = {
|
||||
'errors': {
|
||||
@@ -318,11 +598,16 @@ def login_ajax(request):
|
||||
html = render_to_string('forms/f_login.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
|
||||
if not 'HTTP_REFERER' in request.META or not '/?next=/' in request.META['HTTP_REFERER']:
|
||||
redirect_url = reverse('profile_page', args=['dashboard'])
|
||||
else:
|
||||
redirect_url = request.META['HTTP_REFERER'].split('/?next=')[1]
|
||||
res_Dict = {
|
||||
'redirect_url': reverse('profile_page', args=['dashboard'])
|
||||
'redirect_url': redirect_url
|
||||
}
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
@@ -337,10 +622,60 @@ def login_ajax(request):
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
|
||||
|
||||
def send_check_email_after_registration(data_Dict, user):
|
||||
|
||||
try:
|
||||
|
||||
from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options
|
||||
sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True)
|
||||
|
||||
subject = _('Trip With Bonus - Подтверждение регистрации ')
|
||||
|
||||
Dict = {
|
||||
'logo': f'{sets["domain"]}/static/img/svg/LogoMobile.svg',
|
||||
'project_name': sets['project_name'],
|
||||
'domain': sets['domain'],
|
||||
'message_title': subject,
|
||||
}
|
||||
Dict.update(data_Dict)
|
||||
|
||||
html = render_to_string('mail/m_confirm_email.html', Dict)
|
||||
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
|
||||
mail_sets = get_mail_send_options()
|
||||
to = [user.email]
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
to = ['web@syncsystems.net', 'sa@a3-global.com', 'sysadmin.hax@gmail.com']
|
||||
admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
|
||||
return res
|
||||
|
||||
except Exception as e:
|
||||
print(f'send_registration_mail Error = {str(e)}')
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def registration_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = request.POST
|
||||
@@ -352,28 +687,43 @@ def registration_ajax(request):
|
||||
html = render_to_string('forms/f_registration.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
users = User.objects.filter(email=form.data['email'])
|
||||
if users:
|
||||
form.errors['email'] = _("Пользователь с указанным email уже существует")
|
||||
Dict = {'form': form}
|
||||
html = render_to_string('forms/f_registration.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
# users = User.objects.filter(email=form.data['email'])
|
||||
# if users:
|
||||
# form.errors['email'] = _("Пользователь с указанным email уже существует")
|
||||
# Dict = {'form': form}
|
||||
# html = render_to_string('forms/f_registration.html', Dict, request=request)
|
||||
# return JsonResponse({'html': html}, status=400)
|
||||
|
||||
user = User.objects.create_user(username=form.data['email'], email=form.data['email'], password=form.data['password'])
|
||||
# user = auth.authenticate(username=new_user_Dict['name'], password=new_user_Dict['pass'])
|
||||
if user:
|
||||
auth.login(request, user)
|
||||
# if user:
|
||||
# auth.login(request, user, backend='django.contrib.auth.backends.ModelBackend')
|
||||
|
||||
if 'mailingSubscribeRequired' in data and data['mailingSubscribeRequired'] == 'true':
|
||||
user.user_profile.mailing_on = True
|
||||
|
||||
user.last_name = form.data['lastname']
|
||||
user.first_name = form.data['firstname']
|
||||
user.is_active = False
|
||||
user.save()
|
||||
user.user_profile.phone = form.data['tel']
|
||||
user.user_profile.authMailCode = uuid1().hex
|
||||
user.user_profile.save()
|
||||
|
||||
res_Dict = {
|
||||
'redirect_url': reverse('profile_page', args=['dashboard'])
|
||||
mail_Dict = {
|
||||
'user': user,
|
||||
}
|
||||
|
||||
res = send_check_email_after_registration(mail_Dict, user)
|
||||
print(str(res))
|
||||
# res = send_registration_mail(mail_Dict, user)
|
||||
|
||||
res_Dict = {
|
||||
# 'redirect_url': reverse('profile_page', args=['dashboard'])
|
||||
}
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
|
||||
18
AuthApp/migrations/0005_userprofile_mailing_on.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2024-02-01 17:17
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('AuthApp', '0004_alter_userprofile_account_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='mailing_on',
|
||||
field=models.BooleanField(default=False, verbose_name='Рассылка'),
|
||||
),
|
||||
]
|
||||
@@ -16,7 +16,6 @@ from datetime import datetime
|
||||
def user_name_str(self):
|
||||
return f'{self.last_name} {self.first_name}'
|
||||
|
||||
|
||||
User.add_to_class("__str__", user_name_str)
|
||||
|
||||
|
||||
@@ -51,6 +50,14 @@ class UserProfile(BaseModel):
|
||||
on_delete=models.SET_NULL
|
||||
)
|
||||
|
||||
mailing_on = models.BooleanField(default=False, verbose_name=_('Рассылка'))
|
||||
|
||||
def get_timezone(self):
|
||||
tz = None
|
||||
if 'user_timezone' in self.json_data:
|
||||
tz = self.json_data['user_timezone']
|
||||
return tz
|
||||
|
||||
def save_user_alerts_to_session(self, request):
|
||||
for_save_to_session = self.get_node_by_name('for_save_to_session')
|
||||
if for_save_to_session:
|
||||
@@ -74,8 +81,23 @@ class UserProfile(BaseModel):
|
||||
|
||||
|
||||
def create_user_profile(sender, instance, created, **kwargs):
|
||||
user_profile = None
|
||||
if created:
|
||||
UserProfile.objects.create(user=instance)
|
||||
user_profile = UserProfile.objects.create(user=instance)
|
||||
|
||||
# if user_profile and not user_profile.avatar:
|
||||
# from allauth.socialaccount.models import SocialAccount
|
||||
# # try:
|
||||
# social_accounts = SocialAccount.objects.filter(user=instance)
|
||||
# if social_accounts:
|
||||
# for social_account in social_accounts:
|
||||
# if 'picture' in social_account.account.extra_data and social_account.account.extra_data['picture']:
|
||||
# with open(social_account.account.extra_data['picture'], 'rb') as fd:
|
||||
# user_profile.avatar.save(f'avatar_{instance.id}.jpeg', fd.read(), True)
|
||||
#
|
||||
# # except Exception as e:
|
||||
# # msg = f'post_save create_user_profile Error = {str(e)}'
|
||||
# # print(msg)
|
||||
|
||||
|
||||
post_save.connect(create_user_profile, sender=User, dispatch_uid='post_save_connect')
|
||||
@@ -85,6 +107,7 @@ def preSaveUser(sender, instance, **kwargs):
|
||||
if not instance.email:
|
||||
instance.email = str(instance.username).lower()
|
||||
|
||||
|
||||
try:
|
||||
instance.user_profile.modifiedDT = datetime.now()
|
||||
except:
|
||||
|
||||
@@ -8,6 +8,9 @@ from django.contrib.auth import views
|
||||
urlpatterns = [
|
||||
|
||||
path('registration/', registration_View, name='registration_page'),
|
||||
|
||||
path('reset_password/<int:user_id>/<str:token>/',
|
||||
recovery_password_page_View, name='recovery_password_page'),
|
||||
# path('', user_profile_View, name='user_profile'),
|
||||
# path('page/chat/<int:user_id>/', chat_w_user_View, name='chat_w_user'),
|
||||
# path('page/chat/', chat_w_user_View, name='chat_w_user_wo_user_id'),
|
||||
@@ -21,6 +24,8 @@ urlpatterns = [
|
||||
path('login/', login_View, name='login_profile'),
|
||||
path('logout/', logout_View, name='logout_profile'),
|
||||
|
||||
path('account/signup/', login_View, name="custom_singup" ),
|
||||
|
||||
|
||||
# ajax ----------------
|
||||
# url(r'^login$', user_login_View_ajax, name='user_login_View_ajax'),
|
||||
@@ -44,9 +49,9 @@ urlpatterns = [
|
||||
#
|
||||
# # -----------------------
|
||||
#
|
||||
# url(r'^check_user_registration_and_activate/(?P<user_id>[\d+]*)/(?P<authCode>[0-9a-z\+\-\_]+)$',
|
||||
# check_user_registration_and_activate,
|
||||
# name='check_user_registration_and_activate'),
|
||||
path('check_user_registration_and_activate/<int:user_id>/<str:authMailCode>/',
|
||||
check_user_registration_and_activate,
|
||||
name='check_user_registration_and_activate'),
|
||||
#
|
||||
# # url(r'^user/password/reset/$',
|
||||
# # 'django.contrib.auth.views.password_reset',
|
||||
|
||||
154
AuthApp/views.py
@@ -5,7 +5,8 @@ from django.shortcuts import render
|
||||
from uuid import uuid1
|
||||
from AuthApp.models import *
|
||||
from django.contrib import auth
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.urls import reverse
|
||||
from django.http import HttpResponse, Http404, HttpResponseRedirect
|
||||
from django.template import loader, RequestContext
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from BaseModels.mailSender import techSendMail
|
||||
@@ -13,14 +14,80 @@ from django.utils.translation import gettext as _
|
||||
from datetime import datetime
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from .funcs import *
|
||||
from GeneralApp.funcs import get_inter_http_respose
|
||||
from GeneralApp.funcs import get_inter_http_response
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
|
||||
|
||||
def send_registration_mail(user):
|
||||
|
||||
try:
|
||||
|
||||
from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options
|
||||
sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True)
|
||||
|
||||
subject = _('Добро пожаловать в Trip With Bonus!')
|
||||
|
||||
Dict = {
|
||||
'logo': f'{sets["domain"]}/static/img/svg/LogoMobile.svg',
|
||||
'project_name': sets['project_name'],
|
||||
'message_title': subject,
|
||||
'user': user
|
||||
}
|
||||
|
||||
html = render_to_string('mail/m_registration.html', Dict)
|
||||
from BaseModels.mailSender import admin_send_mail_by_SMTPlib
|
||||
mail_sets = get_mail_send_options()
|
||||
to = [user.email]
|
||||
res = admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
to = ['web@syncsystems.net', 'sa@a3-global.com', 'sysadmin.hax@gmail.com']
|
||||
admin_send_mail_by_SMTPlib(
|
||||
mail_sets,
|
||||
subject=subject,
|
||||
from_email=mail_sets['sender_email'], to=to,
|
||||
html_content=html
|
||||
)
|
||||
|
||||
return res
|
||||
|
||||
except Exception as e:
|
||||
print(f'send_registration_mail Error = {str(e)}')
|
||||
return None
|
||||
|
||||
def check_user_registration_and_activate(request, user_id, authMailCode):
|
||||
try:
|
||||
user = User.objects.get(
|
||||
id=user_id,
|
||||
is_active=False,
|
||||
user_profile__authMailCode=authMailCode
|
||||
)
|
||||
user.is_active = True
|
||||
user.save(update_fields=['is_active'])
|
||||
|
||||
res = send_registration_mail(user)
|
||||
|
||||
return HttpResponseRedirect(reverse('login_profile'))
|
||||
except User.DoesNotExist:
|
||||
user = None
|
||||
|
||||
raise Http404
|
||||
|
||||
|
||||
def registration_View(request):
|
||||
|
||||
Dict = {}
|
||||
|
||||
if request.GET and 'mailingSubscribeRequired' in request.GET and request.GET['mailingSubscribeRequired'] == 'true':
|
||||
request.session['mailingSubscribeRequired'] = 'true'
|
||||
|
||||
# if request.p
|
||||
|
||||
t = loader.get_template('pages/profile/p_registration.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
@@ -36,35 +103,52 @@ def registration_View(request):
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def profile_page_View(request, page_name, id=None):
|
||||
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
page_html = get_profile_page_content_html(request, page_name, id)
|
||||
if not page_html:
|
||||
raise Http404
|
||||
if page_name == 'create_route_for_customer' or page_name == 'create_route_for_mover':
|
||||
tag = 'tb_base2.html'
|
||||
else:
|
||||
tag = 'tb_base.html'
|
||||
|
||||
Dict = {
|
||||
'page_html': get_profile_page_content_html(request, page_name, id),
|
||||
'page_html': page_html,
|
||||
'page_name': page_name,
|
||||
'page_type': 'profile'
|
||||
'page_type': 'profile',
|
||||
'tag': tag
|
||||
}
|
||||
|
||||
title = f"{_('Личный кабинет пользователя')} {request.user.first_name} {request.user.last_name}"
|
||||
if request.session and 'mailingSubscribeRequired' in request.session and request.session['mailingSubscribeRequired'] == 'true':
|
||||
request.user.user_profile.mailing_on = True
|
||||
request.user.user_profile.save(update_fields=['mailing_on'])
|
||||
del request.session['mailingSubscribeRequired']
|
||||
|
||||
Dict.update({
|
||||
'page': {
|
||||
'title': title,
|
||||
'description': title,
|
||||
'keywords': title,
|
||||
}
|
||||
})
|
||||
# title = _('Личный кабинет пользователя') + ' ' + request.user.first_name + ' ' + request.user.last_name
|
||||
#
|
||||
# Dict.update({
|
||||
# 'page': {
|
||||
# 'title': title,
|
||||
# 'description': title,
|
||||
# 'keywords': title,
|
||||
# }
|
||||
# })
|
||||
|
||||
if request.GET and 'mobile' in request.GET and request.GET['mobile'] == 'true':
|
||||
Dict.update({
|
||||
'mobile': True
|
||||
})
|
||||
# if request.GET and 'mobile' in request.GET and request.GET['mobile'] == 'true':
|
||||
# Dict.update({
|
||||
# 'mobile': True
|
||||
# })
|
||||
|
||||
t = loader.get_template('pages/profile/p_user_profile.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
# @login_required(login_url='/profile/login/')
|
||||
# @login_required()#login_url='/profile/login/')
|
||||
# def chat_w_user_View(request, user_id=None):
|
||||
# from ChatServiceApp.funcs import get_chat_page_content_Dict
|
||||
#
|
||||
@@ -93,7 +177,7 @@ def profile_page_View(request, page_name, id=None):
|
||||
# t = loader.get_template('pages/profile/p_user_profile.html')
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def user_profile_View(request):
|
||||
|
||||
Dict = {}
|
||||
@@ -102,7 +186,7 @@ def user_profile_View(request):
|
||||
# request.COOKIES['user_id'] = request.user.id
|
||||
|
||||
t = loader.get_template('pages/profile/p_user_profile.html')
|
||||
response = get_inter_http_respose(t, Dict, request)
|
||||
response = get_inter_http_response(t, Dict, request)
|
||||
# response = HttpResponse(t.render(Dict, request))
|
||||
response.set_cookie('user_id', request.user.id)
|
||||
return response
|
||||
@@ -117,10 +201,17 @@ def logout_View(request):
|
||||
|
||||
def login_View(request):
|
||||
|
||||
Dict = {}
|
||||
from allauth.socialaccount.models import SocialApp
|
||||
auth_google_allow = SocialApp.objects.filter(provider='google')
|
||||
Dict = {
|
||||
'auth_google_allow': auth_google_allow
|
||||
}
|
||||
|
||||
if request.GET and 'mailingSubscribeRequired' in request.GET and request.GET['mailingSubscribeRequired'] == 'true':
|
||||
request.session['mailingSubscribeRequired'] = 'true'
|
||||
|
||||
t = loader.get_template('pages/profile/p_login.html')
|
||||
return get_inter_http_respose(t, Dict, request)
|
||||
return get_inter_http_response(t, Dict, request)
|
||||
# return HttpResponse(t.render(Dict, request))
|
||||
|
||||
|
||||
@@ -192,12 +283,19 @@ def decode_get_param(data):
|
||||
|
||||
|
||||
|
||||
def recovery_password_user(request, uidb64=None, token=None):
|
||||
from django.contrib.auth.views import PasswordResetConfirmView
|
||||
def recovery_password_page_View(request, user_id, token):
|
||||
try:
|
||||
user = User.objects.get(id=user_id, user_profile__authMailCode=token)
|
||||
except User.DoesNotExist:
|
||||
raise Http404
|
||||
|
||||
return PasswordResetConfirmView(request=request, uidb64=uidb64, token=token
|
||||
)
|
||||
Dict = {
|
||||
'user': user
|
||||
}
|
||||
|
||||
t = loader.get_template('pages/profile/p_password_recovery.html')
|
||||
response = get_inter_http_response(t, Dict, request)
|
||||
return response
|
||||
|
||||
|
||||
|
||||
|
||||
70
BaseModels/PIL/pillow_backend.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import os
|
||||
from io import BytesIO
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.functional import cached_property
|
||||
from PIL import Image
|
||||
|
||||
from ckeditor_uploader import utils
|
||||
|
||||
|
||||
THUMBNAIL_SIZE = getattr(settings, "CKEDITOR_THUMBNAIL_SIZE", (75, 75))
|
||||
|
||||
|
||||
class PillowBackend:
|
||||
def __init__(self, storage_engine, file_object):
|
||||
self.file_object = file_object
|
||||
self.storage_engine = storage_engine
|
||||
|
||||
@cached_property
|
||||
def is_image(self):
|
||||
try:
|
||||
Image.open(
|
||||
BytesIO(self.file_object.read())
|
||||
).verify() # verify closes the file
|
||||
return True
|
||||
except OSError:
|
||||
return False
|
||||
finally:
|
||||
self.file_object.seek(0)
|
||||
|
||||
def _compress_image(self, image):
|
||||
quality = getattr(settings, "CKEDITOR_IMAGE_QUALITY", 75)
|
||||
image = image.resize(image.size, Image.ANTIALIAS).convert("RGB")
|
||||
image_tmp = BytesIO()
|
||||
image.save(image_tmp, format="JPEG", quality=quality, optimize=True)
|
||||
return image_tmp
|
||||
|
||||
def save_as(self, filepath):
|
||||
if not self.is_image:
|
||||
saved_path = self.storage_engine.save(filepath, self.file_object)
|
||||
return saved_path
|
||||
|
||||
image = Image.open(self.file_object)
|
||||
|
||||
should_compress = getattr(settings, "CKEDITOR_FORCE_JPEG_COMPRESSION", False)
|
||||
is_animated = hasattr(image, "is_animated") and image.is_animated
|
||||
if should_compress and not is_animated:
|
||||
file_object = self._compress_image(image)
|
||||
filepath = f"{os.path.splitext(filepath)[0]}.jpg"
|
||||
saved_path = self.storage_engine.save(filepath, file_object)
|
||||
else:
|
||||
file_object = self.file_object
|
||||
saved_path = self.storage_engine.save(filepath, self.file_object)
|
||||
|
||||
if not is_animated:
|
||||
self.create_thumbnail(file_object, saved_path)
|
||||
return saved_path
|
||||
|
||||
def create_thumbnail(self, file_object, file_path):
|
||||
thumbnail_filename = utils.get_thumb_filename(file_path)
|
||||
thumbnail_io = BytesIO()
|
||||
# File object after saving e.g. to S3 can be closed.
|
||||
try:
|
||||
image = Image.open(file_object).convert("RGBA")
|
||||
except ValueError:
|
||||
file_object = self.storage_engine.open(file_path)
|
||||
image = Image.open(file_object).convert("RGBA")
|
||||
image.thumbnail(THUMBNAIL_SIZE, Image.ANTIALIAS)
|
||||
image.save(thumbnail_io, format="PNG", optimize=True)
|
||||
return self.storage_engine.save(thumbnail_filename, thumbnail_io)
|
||||
@@ -146,6 +146,13 @@ def get_image_thumb(self, obj):
|
||||
except:
|
||||
image_url = None
|
||||
|
||||
if not image_url:
|
||||
try:
|
||||
if obj.flag:
|
||||
image_url = obj.flag.url
|
||||
except:
|
||||
image_url = None
|
||||
|
||||
if not image_url:
|
||||
try:
|
||||
if obj.images_gallery:
|
||||
|
||||
@@ -18,7 +18,7 @@ from django.contrib.contenttypes.fields import GenericRelation
|
||||
# add_introspection_rules([], ["^tinymce\.models\.HTMLField"])
|
||||
|
||||
class BaseModel(models.Model):
|
||||
name = models.TextField(verbose_name=_('Название'),
|
||||
name = models.TextField(verbose_name=_("Название"),
|
||||
help_text=_('Название'), null=True, blank=True)
|
||||
name_plural = models.TextField(verbose_name=_('Название (множественное число)'),
|
||||
null=True, blank=True)
|
||||
@@ -29,12 +29,31 @@ class BaseModel(models.Model):
|
||||
|
||||
json_data = models.JSONField(verbose_name=_('Дополнительные данные'), default=dict, blank=True)
|
||||
|
||||
media_items = GenericRelation('GeneralApp.MediaItem', related_query_name='grel_%(class)s_for_media_item')
|
||||
|
||||
def __str__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return str(self.id)
|
||||
|
||||
def get_media_items(self, exclude_kwargs=None):
|
||||
if not exclude_kwargs:
|
||||
exclude_kwargs = {}
|
||||
return self.media_items.exclude(
|
||||
**exclude_kwargs
|
||||
).filter(
|
||||
enable=True
|
||||
).order_by('order')
|
||||
|
||||
def get_video_items(self):
|
||||
exclude_kwargs = {'video': None}
|
||||
return self.get_media_items(exclude_kwargs=exclude_kwargs)
|
||||
|
||||
def get_picture_items(self):
|
||||
exclude_kwargs = {'picture': None}
|
||||
return self.get_media_items(exclude_kwargs=exclude_kwargs)
|
||||
|
||||
def pop_node_by_name(self, node_name):
|
||||
if not self.json_data or not node_name in self.json_data:
|
||||
return None
|
||||
@@ -108,10 +127,23 @@ class BaseModelViewPage(BaseModel):
|
||||
FAQ_title = models.CharField(max_length=250, verbose_name=_(u'FAQ Заголовок'), null=True, blank=True)
|
||||
FAQ_items = GenericRelation('GeneralApp.FAQitem', related_query_name='grel_%(class)s_for_faq_item')
|
||||
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def get_title(self):
|
||||
if self.seo_title:
|
||||
return self.seo_title
|
||||
elif self.title:
|
||||
return self.title
|
||||
else:
|
||||
return self.name
|
||||
|
||||
def get_description(self):
|
||||
if self.seo_description:
|
||||
return self.seo_description
|
||||
else:
|
||||
return self.description
|
||||
|
||||
def get_FAQ_items(self):
|
||||
return self.FAQ_items.filter(enable=True).order_by('order')
|
||||
|
||||
|
||||
11
BaseModels/datetime_funcs.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from datetime import datetime
|
||||
import pytz
|
||||
|
||||
def get_cur_DT_by_timezone(timezone, DT=None):
|
||||
if not DT:
|
||||
DT = datetime.now()
|
||||
|
||||
if not timezone:
|
||||
return DT
|
||||
|
||||
return DT.astimezone(tz=pytz.timezone(timezone))
|
||||
49
BaseModels/exceptions.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import asyncio
|
||||
import traceback
|
||||
|
||||
from asgiref.sync import sync_to_async
|
||||
|
||||
from BaseModels.mailSender import techSendMail
|
||||
from BaseModels.print_funcs import print_ext
|
||||
from GeneralApp.funcs_options import get_mail_send_options
|
||||
|
||||
# from MessageBotsApp.telegram.tg_bot import send_message
|
||||
|
||||
|
||||
async def send_exception_msg(msgr_msg, mail_msg):
|
||||
# from MessageBotsApp.funcs import send_msg_to_staff
|
||||
|
||||
|
||||
mail_sets = await sync_to_async(get_mail_send_options)()
|
||||
# await send_msg_to_staff('telegram', msgr_msg)
|
||||
|
||||
await sync_to_async(techSendMail)(sets=mail_sets, html_content=mail_msg, title='iBaked Exception')
|
||||
|
||||
return True
|
||||
|
||||
async def exception_processing(exc, user=None):
|
||||
tb = traceback.format_exc()
|
||||
cutted_tb = tb[:500]
|
||||
|
||||
msgr_msg = f'user {str(user)} Exception = {str(exc)}\n{str(cutted_tb)}'
|
||||
mail_msg = f'user {str(user)} Exception = {str(exc)}<br>\n{str(tb)}'
|
||||
print_ext(msgr_msg)
|
||||
|
||||
# try:
|
||||
# loop = asyncio.get_event_loop()
|
||||
# except RuntimeError:
|
||||
# loop = asyncio.new_event_loop()
|
||||
# asyncio.set_event_loop(loop)
|
||||
#
|
||||
|
||||
# loop = asyncio.new_event_loop()
|
||||
# asyncio.set_event_loop(loop)
|
||||
# async_result = loop.run_until_complete(send_exception_msg(msgr_msg, mail_msg))
|
||||
# loop.close()
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
task = loop.create_task(send_exception_msg(msgr_msg, mail_msg))
|
||||
|
||||
status_code = 400
|
||||
|
||||
return msgr_msg, status_code
|
||||
154
BaseModels/files_funcs.py
Normal file
@@ -0,0 +1,154 @@
|
||||
import os
|
||||
import copy
|
||||
import shutil
|
||||
|
||||
from BaseModels.print_funcs import print_ext
|
||||
|
||||
def del_file(filepath, del_other_ext=None):
|
||||
|
||||
if os.path.exists(filepath):
|
||||
os.remove(filepath)
|
||||
print_ext(f'- del file {filepath} is done')
|
||||
|
||||
if del_other_ext:
|
||||
filepath2 = change_file_extension(filepath, del_other_ext)
|
||||
if os.path.exists(filepath2):
|
||||
os.remove(filepath2)
|
||||
print_ext(f'- del file {filepath2} is done')
|
||||
return True
|
||||
|
||||
print_ext(f'!- file {filepath} not found')
|
||||
return False
|
||||
|
||||
def del_folder(path):
|
||||
shutil.rmtree(path)
|
||||
return True
|
||||
|
||||
def check_filepath_exists(path_for_check):
|
||||
if not os.path.exists(path_for_check):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def get_file_name_from_filepath(filepath):
|
||||
filepath_list = filepath.split('/')
|
||||
if not filepath_list:
|
||||
filepath_list = filepath.split('\\')
|
||||
if len(filepath_list) > 1:
|
||||
return filepath_list[-1]
|
||||
else:
|
||||
return filepath
|
||||
|
||||
def get_file_extension(filename, w_point=True):
|
||||
filename_list = filename.split('.')
|
||||
if len(filename_list) > 1:
|
||||
res = filename_list[-1]
|
||||
if w_point:
|
||||
res = '.' + res
|
||||
return res
|
||||
else:
|
||||
return ''
|
||||
|
||||
def get_filename_wo_ext(filename):
|
||||
filename_list = filename.split('.')
|
||||
if len(filename_list) > 1:
|
||||
return '.'.join(filename_list[:-1])
|
||||
else:
|
||||
return filename
|
||||
|
||||
def change_file_extension(filename, new_extension):
|
||||
filename_list = filename.split('.')
|
||||
if len(filename_list) > 1:
|
||||
return '.'.join(filename_list[:-1]) + '.' + new_extension
|
||||
else:
|
||||
return filename + '.' + new_extension
|
||||
|
||||
def folder_check_and_create(path):
|
||||
path_for_check = copy.copy(path)
|
||||
# if path_for_check[0] != '/':
|
||||
# path_for_check = '/' + path_for_check
|
||||
if not os.path.exists(path_for_check):
|
||||
os.makedirs(path_for_check)
|
||||
# if path[0] != '/':
|
||||
# path_for_check = path_for_check[1:]
|
||||
return path_for_check
|
||||
|
||||
def get_filename_from_path(filepath, wo_ext=False):
|
||||
|
||||
f_list = filepath.split('/')
|
||||
if len(f_list) > 1:
|
||||
filename = f_list[-1]
|
||||
else:
|
||||
filename = f_list[0]
|
||||
|
||||
f_list = filename.split('\\')
|
||||
if len(f_list) > 1:
|
||||
filename = f_list[-1]
|
||||
else:
|
||||
filename = f_list[0]
|
||||
|
||||
if filename and wo_ext:
|
||||
f_list = filename.split('.')
|
||||
filename = f_list[0]
|
||||
|
||||
return filename
|
||||
|
||||
|
||||
def get_path_wo_filename(filepath):
|
||||
|
||||
try:
|
||||
f_list = filepath.split('/')
|
||||
if len(f_list) < 2:
|
||||
if filepath[-1] != '/':
|
||||
filepath += '/'
|
||||
return filepath
|
||||
|
||||
if f_list[-1] == '':
|
||||
if filepath[-1] != '/':
|
||||
filepath += '/'
|
||||
return filepath
|
||||
|
||||
return '/'.join(f_list[:-1]) + '/'
|
||||
|
||||
except Exception as e:
|
||||
msg = f'get_path_wo_filename Exception: {e}'
|
||||
print_ext(msg)
|
||||
|
||||
if filepath[-1] != '/':
|
||||
filepath += '/'
|
||||
return filepath
|
||||
|
||||
|
||||
def get_allow_filename(filename, filepath):
|
||||
from os import path, access, R_OK # W_OK for write permission.
|
||||
|
||||
|
||||
if '.' in filename:
|
||||
fn_list = filename.split('.')
|
||||
fn_ext = fn_list[-1]
|
||||
fn = '.'.join(fn_list[:-1])
|
||||
else:
|
||||
fn = filename
|
||||
fn_ext = ''
|
||||
|
||||
i = 0
|
||||
full_path = filepath + filename
|
||||
while path.exists(full_path):# and path.isfile(full_path) and access(full_path, R_OK):
|
||||
i += 1
|
||||
|
||||
full_path = f'{filepath}{fn}-{str(i)}'
|
||||
if fn_ext:
|
||||
full_path = f'{full_path}.{fn_ext}'
|
||||
if i == 0:
|
||||
filename = f'{fn}'
|
||||
else:
|
||||
filename = f'{fn}-{str(i)}'
|
||||
if fn_ext:
|
||||
filename = f'{filename}.{fn_ext}'
|
||||
|
||||
return filename
|
||||
|
||||
|
||||
def get_filenames_in_path(path):
|
||||
files_list = os.listdir(path)
|
||||
return files_list
|
||||
@@ -96,27 +96,27 @@ def sortByLength(inputStr):
|
||||
return len(inputStr)
|
||||
|
||||
|
||||
def add_domain(request, url, add_lang=False):
|
||||
domain = get_domain_by_request(request)
|
||||
if add_lang:
|
||||
cur_lang = get_cur_lang_by_request(request)
|
||||
return '{0}/{1}/{2}'.format(domain, cur_lang, url)
|
||||
else:
|
||||
return '{0}{1}'.format(domain, url)
|
||||
# def add_domain(request, url, add_lang=False):
|
||||
# domain = get_domain_by_request(request)
|
||||
# if add_lang:
|
||||
# cur_lang = get_cur_lang_by_request(request)
|
||||
# return '{0}/{1}/{2}'.format(domain, cur_lang, url)
|
||||
# else:
|
||||
# return '{0}{1}'.format(domain, url)
|
||||
|
||||
|
||||
def get_domain_by_request(request):
|
||||
from project_sets import domain
|
||||
if request.query_params and 'domain' in request.query_params:
|
||||
return request.query_params['domain']
|
||||
return domain
|
||||
|
||||
|
||||
def get_cur_lang_by_request(request):
|
||||
from project_sets import lang
|
||||
if request.query_params and 'cur_lang' in request.query_params:
|
||||
return request.query_params['cur_lang']
|
||||
return lang
|
||||
# def get_domain_by_request(request):
|
||||
# from project_sets import domain
|
||||
# if request.query_params and 'domain' in request.query_params:
|
||||
# return request.query_params['domain']
|
||||
# return domain
|
||||
#
|
||||
#
|
||||
# def get_cur_lang_by_request(request):
|
||||
# from project_sets import lang
|
||||
# if request.query_params and 'cur_lang' in request.query_params:
|
||||
# return request.query_params['cur_lang']
|
||||
# return lang
|
||||
|
||||
|
||||
def get_img_type_by_request(request):
|
||||
@@ -416,6 +416,8 @@ def kill_pretexts(txt):
|
||||
return ' '.join(words)
|
||||
|
||||
|
||||
|
||||
|
||||
def stay_only_text_and_numbers(txt):
|
||||
bad_symbols = '"~`{}[]|!@#$%^&*()_+№;:?= '
|
||||
nums = '0123456789'
|
||||
|
||||
@@ -145,8 +145,8 @@ def send_mail_by_SMTPlib(sets, subject, from_email, to_init, html_content, smtp_
|
||||
res = None
|
||||
|
||||
if type(to) in (list, tuple):
|
||||
if sets['sender_email'] in to:
|
||||
to.remove(sets['sender_email'])
|
||||
# if sets['sender_email'] in to:
|
||||
# to.remove(sets['sender_email'])
|
||||
|
||||
if len(to) > 1:
|
||||
to_str = u', '.join(to)
|
||||
@@ -253,7 +253,7 @@ def techSendMail_for_specified_email_list(sets, html_content, email_list, title=
|
||||
|
||||
except Exception as e:
|
||||
msg = 'techSendMail_for_specified_email_list error={0}'.format(str(e))
|
||||
techSendMail(msg)
|
||||
techSendMail(sets, msg)
|
||||
print(msg)
|
||||
|
||||
return 'Fail'
|
||||
@@ -266,19 +266,22 @@ def techSendMail(sets, html_content, title=None, add_emails=None):
|
||||
# return msg
|
||||
|
||||
print('techSendMail')
|
||||
project_name = ''
|
||||
if 'project_name' in sets:
|
||||
project_name = sets['project_name']
|
||||
|
||||
try:
|
||||
# subject = u'truEnergy Data техническое оповещение'
|
||||
from_email = 'support@truenergy.by'
|
||||
from_email = sets['sender_email']
|
||||
to = ['web@syncsystems.net']
|
||||
if add_emails:
|
||||
to.extend(add_emails)
|
||||
text_content = 'Technical message from truEnergy.'
|
||||
text_content = f'Technical message from {project_name}'
|
||||
|
||||
if title:
|
||||
subject = title
|
||||
else:
|
||||
subject = u'truEnergy Data техническое оповещение'
|
||||
subject = f'{project_name} - техническое оповещение'
|
||||
|
||||
res = admin_send_mail_by_SMTPlib(sets, subject, from_email, to, html_content)
|
||||
|
||||
|
||||
113
BaseModels/pay_systems/DVL_Group_kaz/api/funcs.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import json
|
||||
from django.conf import settings
|
||||
|
||||
import requests
|
||||
from requests_pkcs12 import get,post
|
||||
|
||||
# для песочницы
|
||||
# pkcs12_filename = 'dvldigitalprojects.p12'
|
||||
# pkcs12_password = 'QNlhRStcY7mB'
|
||||
# api_pass = 'aPqSRVZhxFjjSqbB'
|
||||
|
||||
# для прода
|
||||
# pkcs12_filename = 'dvldigitalprojects.p12'
|
||||
# pkcs12_password = 'fzSBm6WISje7'
|
||||
# api_pass = 't9g2+bZSvxNxCu+t'
|
||||
|
||||
|
||||
def get_domain_url():
|
||||
return settings.PAY_SYSTEM_URL #'https://sandboxapi.paymtech.kz/'
|
||||
|
||||
def get_kwargs_for_request():
|
||||
return {
|
||||
'headers': {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
'auth': ('dvldigitalprojects', settings.API_PASS),
|
||||
'pkcs12_filename': settings.PKCS12_FILENAME,
|
||||
'pkcs12_password': settings.PKCS12_PASS
|
||||
}
|
||||
|
||||
def ping():
|
||||
|
||||
url = f'{get_domain_url()}ping'
|
||||
data = {}
|
||||
|
||||
try:
|
||||
msg = f'GET {url}'
|
||||
print(msg)
|
||||
res = get(
|
||||
url,
|
||||
**get_kwargs_for_request()
|
||||
)
|
||||
|
||||
msg = f'answer received = {str(res)}'
|
||||
print(msg)
|
||||
except Exception as e:
|
||||
msg = f'Exception GET {url} = {str(e)} ({str(res)})'
|
||||
print(msg)
|
||||
res = None
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def get_order_status(bank_order_id):
|
||||
|
||||
url = f'{get_domain_url()}orders/{str(bank_order_id)}'
|
||||
|
||||
res = None
|
||||
|
||||
data = {
|
||||
'expand': [
|
||||
'card', 'client', 'location', 'custom_fields',
|
||||
'issuer', 'secure3d', 'operations', 'cashflow'
|
||||
]
|
||||
}
|
||||
|
||||
try:
|
||||
msg = f'GET {url}'
|
||||
print(msg)
|
||||
res = get(
|
||||
url,
|
||||
data=json.dumps(data),
|
||||
**get_kwargs_for_request()
|
||||
)
|
||||
|
||||
msg = f'get_order_status answer received = {str(res)}'
|
||||
print(msg)
|
||||
except Exception as e:
|
||||
msg = f'Exception get_order_status GET {url} = {str(e)} ({str(res)})'
|
||||
print(msg)
|
||||
res = None
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def create_order(data):
|
||||
|
||||
url = f'{get_domain_url()}orders/create'
|
||||
|
||||
res = None
|
||||
|
||||
try:
|
||||
msg = f'POST {url}'
|
||||
print(msg)
|
||||
res = post(
|
||||
url,
|
||||
data=json.dumps(data),
|
||||
**get_kwargs_for_request()
|
||||
)
|
||||
|
||||
msg = f'create_order answer received = {str(res.text)}'
|
||||
# if res:# and res.status_code > 300:
|
||||
# msg += f' > ({str(res.text)})'
|
||||
print(msg)
|
||||
except Exception as e:
|
||||
msg = f'Exception create_order POST {url} = {str(e)} ({str(res)})'
|
||||
if res:
|
||||
msg += f' > ({str(res.text)})'
|
||||
print(msg)
|
||||
res = None
|
||||
|
||||
return res
|
||||
6
BaseModels/print_funcs.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from datetime import datetime
|
||||
|
||||
def print_ext(msg, *args, **kwargs):
|
||||
msg = f'{msg} - {str(datetime.now())}'
|
||||
print(msg)
|
||||
return msg
|
||||
24
BaseModels/validators/form_field_validators.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.utils.translation import gettext as _
|
||||
from django.utils.safestring import mark_safe
|
||||
def get_phone_valid_error(val):
|
||||
allow_chars = '01234567890()+ -'
|
||||
|
||||
error_msg = mark_safe(_('Некорректные символы в номере, введите номер в международном формате с кодом страны'))
|
||||
|
||||
if not val:
|
||||
return None
|
||||
|
||||
if len(val) < 10:
|
||||
return error_msg
|
||||
|
||||
if '+' in val and val[0] != '+':
|
||||
return error_msg
|
||||
|
||||
i = 0
|
||||
while i < len(val):
|
||||
if val[i] not in allow_chars:
|
||||
return error_msg
|
||||
|
||||
i += 1
|
||||
|
||||
return None
|
||||
0
BillingApp/__init__.py
Normal file
39
BillingApp/admin.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from sets.admin import *
|
||||
from .models import *
|
||||
from django.contrib import admin
|
||||
|
||||
class Admin_SubscribeOrder(Admin_BaseModel):
|
||||
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'classes': ['wide'],
|
||||
'fields': (
|
||||
('user', 'subscribe', 'subscribe_for_user'),
|
||||
('enable', 'order'),
|
||||
('sum', 'currency'),
|
||||
('status', 'last_operation_status'),
|
||||
('bank_order_id', 'pay_page'),
|
||||
'json_data',
|
||||
)
|
||||
}),
|
||||
)
|
||||
|
||||
list_display = [
|
||||
'id', 'enable',
|
||||
'user', 'subscribe', 'subscribe_for_user',
|
||||
'bank_order_id',
|
||||
'sum', 'currency',
|
||||
'status', 'last_operation_status',
|
||||
'order', 'modifiedDT', 'createDT'
|
||||
]
|
||||
|
||||
list_display_links = ['id', 'user', 'subscribe']
|
||||
list_editable = ['enable']
|
||||
|
||||
readonly_fields = ['subscribe_for_user', 'sum', 'currency', 'modifiedDT', 'createDT']
|
||||
|
||||
list_filter = ['enable', 'status', 'modifiedDT', 'createDT']
|
||||
search_fields = ['id', 'last_operation_status', 'status']
|
||||
# filter_horizontal = ['options']
|
||||
|
||||
admin.site.register(SubscribeOrder, Admin_SubscribeOrder)
|
||||
6
BillingApp/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class BillingappConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'BillingApp'
|
||||
101
BillingApp/funcs.py
Normal file
@@ -0,0 +1,101 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from .models import *
|
||||
import json
|
||||
|
||||
|
||||
def get_order_status(order):
|
||||
from BaseModels.pay_systems.DVL_Group_kaz.api.funcs import get_order_status
|
||||
res_status = None
|
||||
|
||||
if not order or not order.bank_order_id:
|
||||
return order
|
||||
|
||||
try:
|
||||
res_data = get_order_status(order.bank_order_id)
|
||||
|
||||
res = json.loads(res_data.text)
|
||||
res = res['orders'][0]
|
||||
order.json_data['status'] = res
|
||||
|
||||
order.status = res['status']
|
||||
|
||||
|
||||
# if res['amount'] == res['amount_charged'] and res['status'] == 'charged':
|
||||
order.save()
|
||||
# return order.status
|
||||
|
||||
|
||||
except Exception as e:
|
||||
msg = f'Exception get_order_status = {str(e)}'
|
||||
if order:
|
||||
msg = f'Exception get_order_status (data = {str(order.id)}) = {str(e)}'
|
||||
print(msg)
|
||||
|
||||
return order
|
||||
|
||||
def get_orders_for_user(user):
|
||||
|
||||
orders = SubscribeOrder.objects.filter(
|
||||
enable=True,
|
||||
user=user,
|
||||
subscribe_for_user=None,
|
||||
createDT__gt=datetime.now() - timedelta(hours=1)
|
||||
).order_by('subscribe', '-createDT').distinct('subscribe')
|
||||
|
||||
SubscribeOrder.objects.filter(
|
||||
user=user
|
||||
).exclude(
|
||||
id__in=orders.values_list('id', flat=True)
|
||||
).update(enable=False)
|
||||
|
||||
return orders
|
||||
|
||||
|
||||
def create_subscribe_order(data):
|
||||
order = None
|
||||
|
||||
try:
|
||||
|
||||
order = SubscribeOrder.objects.create(**data)
|
||||
|
||||
from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options
|
||||
sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True)
|
||||
|
||||
from BaseModels.pay_systems.DVL_Group_kaz.api.funcs import create_order
|
||||
data = {
|
||||
'currency': data['currency'],
|
||||
'amount': data['sum'],
|
||||
'description': f'Заказ {order.id} на подписку '
|
||||
f'{data["subscribe"].name} '
|
||||
f'для пользователя {data["user"].username}',
|
||||
'options': {
|
||||
'force3d': 1,
|
||||
'auto_charge': 1,
|
||||
'return_url': f'{sets["domain"]}/profile/page/my_subscribe/'
|
||||
}
|
||||
}
|
||||
|
||||
res_data = create_order(data)
|
||||
|
||||
order.pay_page = res_data.headers.get('location')
|
||||
|
||||
res = json.loads(res_data.text)
|
||||
res = res['orders'][0]
|
||||
order.json_data['create_order'] = res
|
||||
|
||||
order.modifiedDT = datetime.strptime(res['updated'], '%Y-%m-%d %H:%M:%S')
|
||||
order.status = res['status']
|
||||
order.bank_order_id = res['id']
|
||||
if 'segment' in res:
|
||||
order.segment = res['segment']
|
||||
if 'merchant_order_id' in res:
|
||||
order.merchant_order_id = res['merchant_order_id']
|
||||
order.save()
|
||||
|
||||
|
||||
except Exception as e:
|
||||
msg = f'Exception create_subscribe_order (data = {str(data)}) = {str(e)}'
|
||||
print(msg)
|
||||
|
||||
return order
|
||||
42
BillingApp/migrations/0001_initial.py
Normal file
@@ -0,0 +1,42 @@
|
||||
# Generated by Django 4.2.2 on 2024-04-19 16:24
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('SubscribesApp', '0003_alter_subscribe_bg_color_alter_subscribe_text_color'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SubscribeOrder',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
|
||||
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
|
||||
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
|
||||
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
|
||||
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
|
||||
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
|
||||
('sum', models.PositiveSmallIntegerField(verbose_name='Сумма')),
|
||||
('currency', models.CharField(max_length=3, verbose_name='Валюта')),
|
||||
('segment', models.CharField(verbose_name='ID Сегмента')),
|
||||
('merchant_order_id', models.CharField(verbose_name='merchant_order_id')),
|
||||
('bank_order_id', models.CharField(verbose_name='ID заказа в банке')),
|
||||
('status', models.CharField(verbose_name='Статус заказа в банке')),
|
||||
('subscribe', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscribe_orders_for_subscribe', to='SubscribesApp.subscribe', verbose_name='Подписка')),
|
||||
('subscribe_for_user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscribe_orders_for_user_subscribe', to='SubscribesApp.subscribeforuser', verbose_name='Подписка пользователя')),
|
||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscribe_orders_for_user', to='SubscribesApp.subscribe', verbose_name='Пользователь')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Заказ на подписку',
|
||||
'verbose_name_plural': 'Заказы на подписки',
|
||||
},
|
||||
),
|
||||
]
|
||||
21
BillingApp/migrations/0002_alter_subscribeorder_user.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 4.2.2 on 2024-04-19 16:29
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('BillingApp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscribe_orders_for_user', to=settings.AUTH_USER_MODEL, verbose_name='Пользователь'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,43 @@
|
||||
# Generated by Django 4.2.2 on 2024-04-19 16:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('BillingApp', '0002_alter_subscribeorder_user'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='subscribeorder',
|
||||
name='pay_page',
|
||||
field=models.URLField(blank=True, default=None, null=True, verbose_name='Ссылка на страницу оплаты'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='bank_order_id',
|
||||
field=models.CharField(default='', verbose_name='ID заказа в банке'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='merchant_order_id',
|
||||
field=models.CharField(default='', verbose_name='merchant_order_id'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='segment',
|
||||
field=models.CharField(default='', verbose_name='ID Сегмента'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='status',
|
||||
field=models.CharField(default='', verbose_name='Статус заказа в банке'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='sum',
|
||||
field=models.PositiveSmallIntegerField(default=0, verbose_name='Сумма'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 4.2.2 on 2024-04-19 16:47
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('BillingApp', '0003_subscribeorder_pay_page_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='bank_order_id',
|
||||
field=models.CharField(default=None, null=True, verbose_name='ID заказа в банке'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='currency',
|
||||
field=models.CharField(default='USD', max_length=3, verbose_name='Валюта'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='merchant_order_id',
|
||||
field=models.CharField(default=None, null=True, verbose_name='merchant_order_id'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='segment',
|
||||
field=models.CharField(default=None, null=True, verbose_name='ID Сегмента'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='status',
|
||||
field=models.CharField(default=None, null=True, verbose_name='Статус заказа в банке'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2024-04-19 17:57
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('BillingApp', '0004_alter_subscribeorder_bank_order_id_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='subscribeorder',
|
||||
name='last_operation_status',
|
||||
field=models.CharField(default=None, null=True, verbose_name='Статус последней операции'),
|
||||
),
|
||||
]
|
||||
18
BillingApp/migrations/0006_alter_subscribeorder_currency.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.2 on 2024-07-12 17:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('BillingApp', '0005_subscribeorder_last_operation_status'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='subscribeorder',
|
||||
name='currency',
|
||||
field=models.CharField(default='KZT', max_length=3, verbose_name='Валюта'),
|
||||
),
|
||||
]
|
||||
0
BillingApp/migrations/__init__.py
Normal file
75
BillingApp/models.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from django.db import models
|
||||
from BaseModels.base_models import BaseModel
|
||||
from SubscribesApp.models import Subscribe, SubscribeForUser
|
||||
from AuthApp.models import User
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
class SubscribeOrder(BaseModel):
|
||||
|
||||
subscribe = models.ForeignKey(
|
||||
Subscribe, verbose_name=_('Подписка'),
|
||||
on_delete=models.SET_NULL, blank=True, null=True,
|
||||
related_name='subscribe_orders_for_subscribe'
|
||||
)
|
||||
|
||||
user = models.ForeignKey(
|
||||
User, verbose_name=_('Пользователь'),
|
||||
on_delete=models.SET_NULL, blank=True, null=True,
|
||||
related_name='subscribe_orders_for_user'
|
||||
)
|
||||
|
||||
subscribe_for_user = models.OneToOneField(
|
||||
SubscribeForUser, verbose_name=_('Подписка пользователя'),
|
||||
on_delete=models.SET_NULL, blank=True, null=True,
|
||||
related_name='subscribe_orders_for_user_subscribe'
|
||||
)
|
||||
|
||||
sum = models.PositiveSmallIntegerField(verbose_name=_('Сумма'), default=0)
|
||||
currency = models.CharField(verbose_name=_('Валюта'), max_length=3, default='KZT')
|
||||
segment = models.CharField(verbose_name=_('ID Сегмента'), null=True, default=None)
|
||||
merchant_order_id = models.CharField(verbose_name=_('merchant_order_id'), null=True, default=None)
|
||||
bank_order_id = models.CharField(verbose_name=_('ID заказа в банке'), null=True, default=None)
|
||||
|
||||
status = models.CharField(verbose_name=_('Статус заказа в банке'), null=True, default=None)
|
||||
last_operation_status = models.CharField(verbose_name=_('Статус последней операции'), null=True, default=None)
|
||||
|
||||
pay_page = models.URLField(verbose_name=_('Ссылка на страницу оплаты'), null=True, blank=True, default=None)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Заказ на подписку')
|
||||
verbose_name_plural = _('Заказы на подписки')
|
||||
|
||||
def activate_subscribe_for_user(self):
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
kwargs = {
|
||||
'user': self.user,
|
||||
'subscribe': self.subscribe,
|
||||
'last_paid_DT': datetime.now(),
|
||||
'receive_finish_subscribe_msg': True,
|
||||
# 'enable': True,
|
||||
}
|
||||
|
||||
from SubscribesApp.funcs import create_subscribe_by_data
|
||||
subscribe_for_user = create_subscribe_by_data(kwargs)
|
||||
self.subscribe_for_user = subscribe_for_user
|
||||
self.enable = False
|
||||
self.save()
|
||||
|
||||
subscribe_for_user.activate(
|
||||
paid_period_from_DT=datetime.now(),
|
||||
paid_period_to_DT=datetime.now() + timedelta(hours=self.subscribe.period)
|
||||
)
|
||||
|
||||
return self
|
||||
|
||||
def __str__(self):
|
||||
res = 'Заказ'
|
||||
if self.subscribe:
|
||||
res += f' на подписку {self.subscribe.name}'
|
||||
if self.user:
|
||||
res += f' для {self.user.username}'
|
||||
|
||||
if not res:
|
||||
res += f' {str(self.id)}'
|
||||
return res
|
||||
3
BillingApp/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
BillingApp/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
@@ -1,6 +1,11 @@
|
||||
from sets.admin import *
|
||||
from .models import *
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
from django.forms import widgets
|
||||
|
||||
|
||||
|
||||
|
||||
class Admin_MsgGroup(Admin_BaseModel):
|
||||
list_display = [
|
||||
@@ -11,8 +16,33 @@ class Admin_MsgGroup(Admin_BaseModel):
|
||||
admin.site.register(MsgGroup,Admin_MsgGroup)
|
||||
|
||||
class Admin_Message(Admin_BaseModel):
|
||||
|
||||
def cut_group_text(self, obj):
|
||||
if obj.group:
|
||||
return obj.group.name[:10]
|
||||
return '-'
|
||||
cut_group_text.allow_tags = True
|
||||
cut_group_text.short_description = 'ticket'
|
||||
|
||||
|
||||
def cut_text(self, obj):
|
||||
if obj.text:
|
||||
if len(obj.text) > 20:
|
||||
return f'{obj.text[:20]}...'
|
||||
else:
|
||||
return obj.text
|
||||
return '-'
|
||||
cut_text.allow_tags = True
|
||||
cut_text.short_description = 'сообщение'
|
||||
|
||||
search_fields = ['group__name', 'text', 'name', 'id']
|
||||
|
||||
list_filter = ['status']
|
||||
|
||||
list_display = [
|
||||
'id', 'msg_type', 'group', 'status', 'sender', 'receiver', 'text',
|
||||
'id',
|
||||
# 'msg_type',
|
||||
'cut_group_text', 'status', 'sender', 'receiver', 'cut_text',
|
||||
'name',
|
||||
'order', 'modifiedDT', 'createDT'
|
||||
]
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import copy
|
||||
|
||||
from .models import *
|
||||
from django.db.models import Q, Value as V, Count, OuterRef, Subquery
|
||||
from django.http import HttpResponse, Http404, JsonResponse
|
||||
@@ -11,6 +13,16 @@ from django.urls import reverse
|
||||
import json
|
||||
from datetime import datetime, time
|
||||
from django.conf import settings
|
||||
from AuthApp.funcs import get_user_timezone_Dict
|
||||
|
||||
|
||||
def get_unanswered_msgs_count_for_user(user):
|
||||
if not user or not user.is_authenticated:
|
||||
return 0
|
||||
|
||||
msgs = Message.objects.filter(receiver=user, status='sended', group=None)
|
||||
return msgs.count()
|
||||
|
||||
|
||||
|
||||
def get_update_chat_Dict(data):
|
||||
@@ -45,11 +57,22 @@ def get_update_chat_Dict(data):
|
||||
receiver = User.objects.get(id=data['receiver'])
|
||||
|
||||
if data['sender'] == data['cur_user']:
|
||||
context_Dict.update({'user': sender})
|
||||
user = copy.copy(sender)
|
||||
cur_receiver = copy.copy(receiver)
|
||||
else:
|
||||
context_Dict.update({'user': receiver})
|
||||
user = copy.copy(receiver)
|
||||
cur_receiver = copy.copy(sender)
|
||||
# context_Dict.update({'user': receiver})
|
||||
|
||||
context_Dict.update({'cur_receiver': receiver})
|
||||
# context_Dict.update({'cur_receiver': receiver})
|
||||
context_Dict.update({
|
||||
'cur_receiver': cur_receiver,
|
||||
'user': user,
|
||||
})
|
||||
context_Dict.update(get_user_timezone_Dict(user))
|
||||
|
||||
if sender == receiver:
|
||||
print('!')
|
||||
|
||||
required_beep = data['required_beep']
|
||||
|
||||
@@ -92,7 +115,7 @@ def get_update_chat_Dict(data):
|
||||
|
||||
context_Dict.update({
|
||||
'messages': msgs,
|
||||
'MEDIA_URL': settings.MEDIA_URL
|
||||
'MEDIA_URL': settings.MEDIA_URL,
|
||||
})
|
||||
html = render_to_string(tpl_name, context_Dict)
|
||||
if required_full_support_chat_html:
|
||||
@@ -268,6 +291,7 @@ def send_msg(data):
|
||||
|
||||
def get_chat_page_content_html(request, receiver_id=None):
|
||||
from AuthApp.models import User
|
||||
from AuthApp.funcs import get_user_timezone_Dict
|
||||
|
||||
msgs = []
|
||||
try:
|
||||
@@ -287,6 +311,7 @@ def get_chat_page_content_html(request, receiver_id=None):
|
||||
'receivers': receivers,
|
||||
'page': 'chat',
|
||||
}
|
||||
Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
tpl_name = 'blocks/profile/b_chats.html'
|
||||
|
||||
html = render_to_string(tpl_name, Dict, request=request)
|
||||
|
||||
@@ -18,12 +18,15 @@ from channels.layers import get_channel_layer
|
||||
from asgiref.sync import async_to_sync
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def get_file_from_msg_ajax(request):
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = json.loads(request.body)
|
||||
@@ -35,7 +38,9 @@ def get_file_from_msg_ajax(request):
|
||||
res_Dict = file
|
||||
break
|
||||
|
||||
return JsonResponse(res_Dict, status=200)
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'get_file_from_msg_ajax Error = {str(e)}'
|
||||
@@ -43,23 +48,29 @@ def get_file_from_msg_ajax(request):
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def show_chat_w_user_ajax(request):
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = json.loads(request.body)
|
||||
Dict = get_chat_page_content_Dict(request, data['user_id'])
|
||||
Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
|
||||
tpl_name = 'blocks/profile/b_chats.html'
|
||||
|
||||
|
||||
|
||||
html = render_to_string(tpl_name, Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
res_Dict = {'html': html}
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'show_chat_w_user_ajax Error = {str(e)}'
|
||||
@@ -73,6 +84,9 @@ def update_chat_ajax2(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
res_Dict = {}
|
||||
msgs = []
|
||||
Dict = {}
|
||||
@@ -99,7 +113,7 @@ def update_chat_ajax2(request):
|
||||
receiver = User.objects.get(id=data['receiver'])
|
||||
|
||||
context_Dict.update({'cur_receiver': receiver})
|
||||
|
||||
context_Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
|
||||
if not ticket:
|
||||
|
||||
@@ -123,6 +137,7 @@ def update_chat_ajax2(request):
|
||||
|
||||
# формируем правую панель
|
||||
context_Dict.update({'receivers': receivers})
|
||||
|
||||
users_list_html = render_to_string(
|
||||
'blocks/profile/b_list_of_users_messenger.html', context_Dict, request=request)
|
||||
res_Dict.update({
|
||||
@@ -146,7 +161,9 @@ def update_chat_ajax2(request):
|
||||
res_Dict.update({
|
||||
'required_beep': required_beep,
|
||||
})
|
||||
return JsonResponse(res_Dict, status=200)
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'update_chat_ajax2 Error = {str(e)}'
|
||||
@@ -161,6 +178,9 @@ def update_chat_ajax(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
res_Dict = {}
|
||||
msgs = []
|
||||
Dict = {}
|
||||
@@ -190,6 +210,7 @@ def update_chat_ajax(request):
|
||||
receiver = User.objects.get(id=data['receiver'])
|
||||
|
||||
context_Dict.update({'cur_receiver': receiver})
|
||||
context_Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
|
||||
if ticket:
|
||||
|
||||
@@ -201,6 +222,8 @@ def update_chat_ajax(request):
|
||||
context_Dict.update({'messages': msgs})
|
||||
context_Dict = get_ticketsDict_for_staff(request.user)
|
||||
|
||||
context_Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
tickets_list_html = render_to_string(
|
||||
'blocks/profile/b_list_of_tickets_support_chat.html', context_Dict, request=request)
|
||||
res_Dict.update({
|
||||
@@ -220,6 +243,8 @@ def update_chat_ajax(request):
|
||||
required_beep = True
|
||||
|
||||
context_Dict.update({'receivers': receivers})
|
||||
context_Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
users_list_html = render_to_string(
|
||||
'blocks/profile/b_list_of_users_messenger.html', context_Dict, request=request)
|
||||
res_Dict.update({
|
||||
@@ -249,14 +274,17 @@ def update_chat_ajax(request):
|
||||
res_Dict.update({
|
||||
'required_beep': required_beep,
|
||||
})
|
||||
return JsonResponse(res_Dict, status=200)
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'update_chat_ajax Error = {str(e)}'
|
||||
return JsonResponse({'error': msg}, status=400)
|
||||
|
||||
|
||||
# @login_required(login_url='/profile/login/')
|
||||
# @login_required()#login_url='/profile/login/')
|
||||
# def send_msg_ajax(request):
|
||||
# from AuthApp.models import User
|
||||
#
|
||||
@@ -368,12 +396,15 @@ def update_chat_ajax(request):
|
||||
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def support_show_chat_by_ticket_ajax(request):
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = json.loads(request.body)
|
||||
@@ -404,44 +435,62 @@ def support_show_chat_by_ticket_ajax(request):
|
||||
'cur_receiver': cur_receiver,
|
||||
'new_msg_allow': new_msg_allow,
|
||||
'staff': request.user.is_staff,
|
||||
'mobile': data['mobile']
|
||||
# 'mobile': data['mobile']
|
||||
}
|
||||
Dict.update(get_ticketsDict_for_staff(request.user))
|
||||
|
||||
tpl_name = 'blocks/profile/b_support_chat.html'
|
||||
Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
tpl_name = 'blocks/profile/b_support_chat.html'
|
||||
Dict.update(get_user_timezone_Dict(request.user, request=request))
|
||||
html = render_to_string(tpl_name, Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
res_Dict = {'html': html}
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
msg = f'support_show_chat_by_ticket_ajax Error = {str(e)}'
|
||||
return JsonResponse({'error': msg}, status=400)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def support_create_ticket_form_ajax(request):
|
||||
from ChatServiceApp.forms import TicketForm
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
Dict = {
|
||||
'form': TicketForm()
|
||||
}
|
||||
|
||||
Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
tpl_name = 'blocks/profile/b_create_ticket.html'
|
||||
|
||||
html = render_to_string(tpl_name, Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=200)
|
||||
|
||||
res_Dict = {'html': html}
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
|
||||
@login_required(login_url='/profile/login/')
|
||||
@login_required()#login_url='/profile/login/')
|
||||
def create_ticket_ajax(request):
|
||||
from ChatServiceApp.forms import TicketForm
|
||||
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
from GeneralApp.funcs import get_and_set_lang
|
||||
lang = get_and_set_lang(request)
|
||||
|
||||
try:
|
||||
|
||||
data = request.POST
|
||||
@@ -450,6 +499,8 @@ def create_ticket_ajax(request):
|
||||
if not form.is_valid():
|
||||
form.initial = form.cleaned_data
|
||||
Dict = {'form': form}
|
||||
Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request)
|
||||
return JsonResponse({'html': html}, status=400)
|
||||
|
||||
@@ -490,19 +541,25 @@ def create_ticket_ajax(request):
|
||||
'messages': msgs_for_ticket
|
||||
}
|
||||
|
||||
Dict.update(get_user_timezone_Dict(request.user))
|
||||
|
||||
html = render_to_string('blocks/profile/b_support_chat.html', Dict, request=request)
|
||||
|
||||
res_Dict = {
|
||||
'html': html
|
||||
}
|
||||
|
||||
from GeneralApp.funcs import get_add_to_ajax_response_Dict
|
||||
res_Dict.update(get_add_to_ajax_response_Dict(request.user))
|
||||
return JsonResponse(res_Dict)
|
||||
|
||||
except Exception as e:
|
||||
|
||||
msg = f'{_("ошибка в запросе")} = {str(e)}'
|
||||
|
||||
errors_Dict = {
|
||||
'errors': {
|
||||
'all__': f'{_("ошибка в запросе")} = {str(e)}'
|
||||
'all__': msg
|
||||
}
|
||||
}
|
||||
Dict = {'form': errors_Dict}
|
||||
|
||||
@@ -38,6 +38,18 @@ class MsgGroup(BaseModel):
|
||||
manager = models.ForeignKey(User, verbose_name=_('Менеджер'), related_name='rel_msgGroups_for_manager',
|
||||
on_delete=models.SET_NULL, null=True)
|
||||
|
||||
def get_last_msg_txt(self):
|
||||
msg = self.rel_messages_for_group.all().order_by('-createDT').first()
|
||||
if not msg:
|
||||
return self.text
|
||||
|
||||
if msg.text:
|
||||
return msg.text
|
||||
elif msg.files:
|
||||
return msg.files[0]['file_name']
|
||||
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Тикет')
|
||||
verbose_name_plural = _('Тикеты')
|
||||
|
||||
@@ -41,6 +41,10 @@ def get_filesize(size):
|
||||
@register.simple_tag
|
||||
def get_msg_side(cur_user, ticket, msg):
|
||||
if msg:
|
||||
# if msg.sender == cur_user:
|
||||
# return 'left'
|
||||
# else:
|
||||
# return 'right'
|
||||
if msg.sender == cur_user:
|
||||
return 'right'
|
||||
else:
|
||||
|
||||
15
Flagpack/AD - Andorra.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67315)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 0H24V24H8V0Z" fill="#FFD018"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H8V24H0V0Z" fill="#2E42A5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 0H32V24H24V0Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.2991 19.4236C16.5201 19.3615 16.7102 18.9772 16.7102 18.9772C16.7102 18.9772 16.8545 19.09 17.0834 19.2048C17.3122 19.3195 17.5501 18.9772 17.5501 18.9772C17.5501 18.9772 17.8751 18.9772 18.0176 18.5937C18.1602 18.2103 17.7332 18.046 17.7332 18.046C17.7332 18.046 18.2323 17.5217 19.0749 17.5217C19.9176 17.5217 20.5734 17.5217 21.1232 17.2883C21.6731 17.0549 22.2073 16.6536 22.4072 15.8203C22.6071 14.9869 21.9744 14.4621 21.9744 14.4621C21.9744 14.4621 22.1145 14.5064 22.4072 14.267C22.6999 14.0276 22.2281 13.2572 21.9744 13.2572C21.7208 13.2572 21.6906 13.3998 21.6906 13.3998C21.6906 13.3998 21.5339 13.2638 21.3192 12.8014C21.1044 12.339 21.5339 11.933 21.5339 11.933C21.5339 11.933 21.7692 12.0679 21.9744 11.8454C22.1797 11.623 21.8678 11.2821 21.8678 11.2821C21.8678 11.2821 22.8559 10.9458 22.713 9.68177C22.5702 8.41774 21.2673 8.48963 21.2673 8.48963C21.2673 8.48963 21.3068 8.27946 21.1232 8.15968C20.9397 8.03991 20.8036 8.27946 20.8036 8.27946C20.6596 7.94606 21.082 7.48997 21.42 7.12497C21.5247 7.01186 21.6214 6.90751 21.6906 6.81826C21.983 6.44099 21.7994 5.9749 20.731 5.46617C19.6625 4.95744 19.0792 5.64116 18.9936 5.88344C18.908 6.12571 19.2395 6.27563 19.2395 6.27563C18.9691 6.51292 18.4461 6.60353 18.0897 6.43958C17.7332 6.27563 17.8912 5.77705 17.9649 5.64116C17.973 5.62629 17.9837 5.60827 17.9961 5.58746C18.0968 5.4181 18.3075 5.06401 18.0897 4.71967C17.8451 4.33302 17.4216 4.33302 17.0834 4.55258C16.7938 4.74051 16.3823 4.84015 16.2696 4.86497C16.157 4.84015 15.7455 4.74051 15.4559 4.55258C15.1177 4.33302 14.6942 4.33302 14.4496 4.71967C14.2318 5.06401 14.4424 5.4181 14.5432 5.58746C14.5556 5.60827 14.5663 5.62629 14.5744 5.64116C14.6481 5.77705 14.8061 6.27563 14.4496 6.43958C14.0931 6.60353 13.5702 6.51292 13.2998 6.27563C13.2998 6.27563 13.6313 6.12571 13.5457 5.88344C13.4601 5.64116 12.8768 4.95744 11.8083 5.46617C10.7399 5.9749 10.5563 6.44099 10.8487 6.81826C10.9179 6.90751 11.0145 7.01186 11.1193 7.12497C11.4573 7.48997 11.8797 7.94606 11.7356 8.27946C11.7356 8.27946 11.5996 8.03991 11.4161 8.15968C11.2325 8.27946 11.272 8.48963 11.272 8.48963C11.272 8.48963 9.9691 8.41774 9.82625 9.68177C9.68341 10.9458 10.6715 11.2821 10.6715 11.2821C10.6715 11.2821 10.3596 11.623 10.5648 11.8454C10.7701 12.0679 11.0054 11.933 11.0054 11.933C11.0054 11.933 11.4348 12.339 11.2201 12.8014C11.0054 13.2638 10.8487 13.3998 10.8487 13.3998C10.8487 13.3998 10.8185 13.2572 10.5648 13.2572C10.3112 13.2572 9.83938 14.0276 10.1321 14.267C10.4247 14.5064 10.5648 14.4621 10.5648 14.4621C10.5648 14.4621 9.93218 14.9869 10.1321 15.8203C10.332 16.6536 10.8662 17.0549 11.4161 17.2883C11.9659 17.5217 12.6217 17.5217 13.4644 17.5217C14.307 17.5217 14.8061 18.046 14.8061 18.046C14.8061 18.046 14.3791 18.2103 14.5217 18.5937C14.6642 18.9772 14.9891 18.9772 14.9891 18.9772C14.9891 18.9772 15.2271 19.3195 15.4559 19.2048C15.6847 19.09 15.8291 18.9772 15.8291 18.9772C15.8291 18.9772 16.0192 19.3615 16.2402 19.4236V19.4321C16.25 19.4321 16.2599 19.4313 16.2696 19.4299C16.2794 19.4313 16.2892 19.4321 16.2991 19.4321V19.4236Z" fill="#BF9937"/>
|
||||
<path d="M12.1102 15.9978L12.2153 15.7437C13.423 16.2614 14.7973 16.5206 16.3392 16.5206C17.8802 16.5206 19.2176 16.2617 20.3521 15.7449L20.4627 15.9966C19.2913 16.5301 17.9165 16.7963 16.3392 16.7963C14.7626 16.7963 13.3526 16.5304 12.1102 15.9978Z" fill="#805440"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67315">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
14
Flagpack/AE - United Arab Emirates.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67414)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#5EAA22"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#272727"/>
|
||||
<rect width="10" height="24" fill="#E31D1C"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67414">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 589 B |
21
Flagpack/AF - Afghanistan.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67316)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 0H32V24H22V0Z" fill="#67BD38"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H22V24H10V0Z" fill="#D51700"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H10V24H0V0Z" fill="#272727"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.4877 7.97687L12.8337 8.19402C12.2571 9.16451 11.8698 10.0538 11.6695 10.8622C11.7542 10.9404 11.8073 11.0088 11.8616 11.1028C12.018 11.3738 12.1496 11.6368 12.2562 11.892L11.7964 12.0878C11.7242 11.915 11.6391 11.7374 11.5412 11.5549C11.4943 11.9492 11.4975 12.3219 11.5505 12.6728C11.6346 12.6814 11.7052 12.6991 11.7869 12.7288C12.0809 12.8358 12.3508 12.9528 12.5965 13.0797L12.3701 13.5253C12.1606 13.417 11.9305 13.316 11.6798 13.2222L11.6848 13.2374C11.8985 13.8833 12.2256 14.4776 12.667 15.0205C12.736 15.0056 12.8002 15 12.8754 15C13.1882 15 13.4818 15.0176 13.7562 15.0528L13.6958 15.549C13.509 15.525 13.3115 15.5098 13.1033 15.5034C13.4999 15.9003 13.9655 16.2663 14.5005 16.6016L14.2895 16.9574C13.626 16.5416 13.0614 16.078 12.5962 15.5669C12.5356 15.5906 12.4618 15.6219 12.3678 15.663L12.3325 15.6783C12.7385 16.104 13.2185 16.4955 13.773 16.853L13.5576 17.206C12.9168 16.7929 12.3683 16.334 11.9127 15.8296C11.6952 15.8854 11.5118 15.8843 11.2973 15.8213L11.4308 15.3405C11.463 15.35 11.4946 15.357 11.5263 15.3615C11.1032 14.7985 10.7844 14.1845 10.5707 13.5199C10.5329 13.4025 10.5006 13.283 10.4736 13.1614C10.3079 13.1298 10.1681 13.0676 10.0231 12.9609L10.313 12.5547C10.338 12.5731 10.3632 12.5894 10.3892 12.6036C10.3373 11.9912 10.4088 11.33 10.6029 10.6202C10.4814 10.4803 10.407 10.3353 10.3612 10.1468L10.786 10.0371C11.0149 9.38877 11.3387 8.70275 11.7566 7.9791L12.1053 8.19178C11.6495 8.98088 11.3119 9.71805 11.0913 10.4034C11.1531 10.4595 11.2287 10.5196 11.3214 10.5883C11.5429 9.78224 11.9323 8.9117 12.4877 7.97687ZM11.1981 11.1185C11.1532 11.0835 11.0992 11.0431 11.0336 10.9947C11.0021 10.9715 10.972 10.9489 10.9431 10.9268C10.7886 11.5626 10.7431 12.1502 10.8055 12.6895C10.88 12.6901 10.9643 12.6869 11.0617 12.6808L11.141 12.6759C11.0748 12.1893 11.0941 11.6702 11.1981 11.1185ZM11.0832 13.1782C11.1426 13.1745 11.1945 13.1715 11.2403 13.1694C11.2586 13.2374 11.2789 13.3048 11.3009 13.3715C11.5154 14.0198 11.8354 14.6183 12.2601 15.167L12.1774 15.2029C12.1065 15.2339 12.0426 15.2604 11.9842 15.2824C11.5194 14.7081 11.1769 14.0772 10.9556 13.3891C10.9342 13.3226 10.9147 13.2552 10.8972 13.187C10.9556 13.1854 11.0174 13.1824 11.0832 13.1782Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.499 7.97687L19.153 8.19402C19.7296 9.16451 20.1169 10.0538 20.3172 10.8622C20.2325 10.9404 20.1794 11.0088 20.1251 11.1028C19.9687 11.3738 19.8371 11.6368 19.7305 11.892L20.1903 12.0878C20.2625 11.915 20.3476 11.7374 20.4455 11.5549C20.4924 11.9492 20.4892 12.3219 20.4362 12.6728C20.3521 12.6814 20.2815 12.6991 20.1998 12.7288C19.9058 12.8358 19.6359 12.9528 19.3902 13.0797L19.6166 13.5253C19.8261 13.417 20.0562 13.316 20.3069 13.2222L20.3019 13.2374C20.0882 13.8833 19.7611 14.4776 19.3197 15.0205C19.2507 15.0056 19.1865 15 19.1113 15C18.7985 15 18.5049 15.0176 18.2305 15.0528L18.2909 15.549C18.4776 15.525 18.6752 15.5098 18.8834 15.5034C18.4868 15.9003 18.0212 16.2663 17.4861 16.6016L17.6972 16.9574C18.3607 16.5416 18.9253 16.078 19.3905 15.5669C19.4511 15.5906 19.5249 15.6219 19.6189 15.663L19.6542 15.6783C19.2482 16.104 18.7682 16.4955 18.2137 16.853L18.4291 17.206C19.0699 16.7929 19.6184 16.334 20.074 15.8296C20.2915 15.8854 20.4749 15.8843 20.6894 15.8213L20.5559 15.3405C20.5236 15.35 20.4921 15.357 20.4604 15.3615C20.8835 14.7985 21.2023 14.1845 21.416 13.5199C21.4538 13.4025 21.4861 13.283 21.5131 13.1614C21.6788 13.1298 21.8185 13.0676 21.9636 12.9609L21.6737 12.5547C21.6487 12.5731 21.6235 12.5894 21.5975 12.6036C21.6494 11.9912 21.5779 11.33 21.3838 10.6202C21.5053 10.4803 21.5797 10.3353 21.6254 10.1468L21.2007 10.0371C20.9718 9.38877 20.648 8.70275 20.23 7.9791L19.8814 8.19178C20.3372 8.98088 20.6748 9.71805 20.8954 10.4034C20.8336 10.4595 20.758 10.5196 20.6653 10.5883C20.4438 9.78224 20.0544 8.9117 19.499 7.97687ZM20.7886 11.1185C20.8335 11.0835 20.8875 11.0431 20.9531 10.9947C20.9846 10.9715 21.0147 10.9489 21.0436 10.9268C21.198 11.5626 21.2436 12.1502 21.1811 12.6895C21.1067 12.6901 21.0224 12.6869 20.925 12.6808L20.8457 12.6759C20.9118 12.1893 20.8926 11.6702 20.7886 11.1185ZM20.9035 13.1782C20.8441 13.1745 20.7922 13.1715 20.7464 13.1694C20.728 13.2374 20.7078 13.3048 20.6858 13.3715C20.4712 14.0198 20.1513 14.6183 19.7266 15.167L19.8093 15.2029C19.8802 15.2339 19.9441 15.2604 20.0025 15.2824C20.4673 14.7081 20.8098 14.0772 21.0311 13.3891C21.0525 13.3226 21.072 13.2552 21.0895 13.187C21.0311 13.1854 20.9693 13.1824 20.9035 13.1782Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.253 16.2641L13.1367 17.3687C13.1367 17.3687 14.0994 17.9582 15.9137 17.9582C17.728 17.9582 18.7844 17.3687 18.7844 17.3687L17.9358 16.2641C17.9358 16.2641 16.7795 16.7122 15.9606 16.7122C15.1416 16.7122 14.253 16.2641 14.253 16.2641Z" fill="#F7FCFF"/>
|
||||
<path d="M14.2764 16.969C14.2764 16.969 15.2215 17.192 15.946 17.192C16.6705 17.192 17.6156 16.969 17.6156 16.969" stroke="#C00001" stroke-width="0.5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.8919 9.45835C16.8919 9.89558 16.4926 10.25 16 10.25C15.5074 10.25 15.1081 9.89558 15.1081 9.45835C15.1081 9.02113 15.5074 8.66669 16 8.66669C16.4926 8.66669 16.8919 9.02113 16.8919 9.45835ZM16 10.25H15.0398L14.7753 10.4527H14.7238V8.86802H14.2373V10.4527H13.8108V10.723H14.2373V13.5806C14.1796 14.0371 14.0463 14.2952 13.8594 14.3849L12.8662 14.8614H18.8436L18.414 14.4321C18.0367 14.0551 17.8564 13.7652 17.8564 13.5965V10.723H18.027V10.4527H17.8564V8.86802H17.3699V10.4527H17.2127L16.8992 10.25H16ZM14.7238 10.723H17.3699V13.5965C17.3699 13.8282 17.4795 14.0797 17.6935 14.3614H14.5231C14.621 14.1643 14.6865 13.9186 14.7238 13.612V10.723ZM16.0811 12H15.027V14.0834H17.1351L16.0811 12Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.1696 6.15619L17.1714 6.15922L17.171 6.15807L17.1696 6.15619ZM18.7108 6.69781L18.7117 6.7071L18.7111 6.70034L18.7108 6.69781ZM19.0101 6.7347L19.0116 6.73014L19.0109 6.73238L19.0101 6.7347ZM17.7983 7.34837L17.8039 7.34832L17.8013 7.34867L17.7983 7.34837Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.9929 10.6681L12.7936 10.8115L12.9991 11.113C12.8231 11.1762 12.5401 11.3361 12.5401 11.712C12.5401 12.2575 12.3485 12.7044 12.3485 12.7044L12.9207 13.0719C12.9207 13.0719 12.9804 12.4357 13.1362 12.0738C13.2143 11.8924 13.3358 11.802 13.4377 11.7569L14.3272 13.0625L14.5264 12.9191L12.9929 10.6681Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.0712 10.6681L19.2705 10.8115L19.065 11.113C19.241 11.1762 19.524 11.3361 19.524 11.712C19.524 12.2575 19.7156 12.7044 19.7156 12.7044L19.1434 13.0719C19.1434 13.0719 19.0837 12.4357 18.9279 12.0738C18.8498 11.8924 18.7282 11.802 18.6264 11.7569L17.7369 13.0625L17.5377 12.9191L19.0712 10.6681Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67316">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.2 KiB |
15
Flagpack/AG - Antigua and Barbuda.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67431)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#1B1B1B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 14L13.9973 17.7994L14.0475 13.6039L10.3886 16.2547L12.4818 12.494L7.89128 13.4711L11.6128 10.8901L7 10L11.6128 9.10992L7.89128 6.52893L12.4818 7.50604L10.3886 3.74535L14.0475 6.39612L13.9973 2.20058L16 6L18.0027 2.20058L17.9525 6.39612L21.6114 3.74535L19.5182 7.50604L24.1087 6.52893L20.3872 9.10992L25 10L20.3872 10.8901L24.1087 13.4711L19.5182 12.494L21.6114 16.2547L17.9525 13.6039L18.0027 17.7994L16 14Z" fill="#F9D313"/>
|
||||
<rect x="6" y="14" width="20" height="10" fill="#F1F9FF"/>
|
||||
<rect x="2" y="10" width="28" height="4" fill="#4A80E8"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 6L16 24L32 6V24H0V6Z" fill="#E31D1C"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67431">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
37
Flagpack/AI - Anguilla.svg
Normal file
@@ -0,0 +1,37 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67318)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<mask id="mask0_270_67318" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67318)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.943 11.8562L20.9462 12.2066C20.9731 15.1566 21.0819 17.0865 21.2756 18.011C21.4364 18.7787 22.0208 20.0518 22.7082 21.0726C23.5724 22.3561 24.4945 23.1368 25.377 23.1368C26.2627 23.1368 27.1855 22.4108 28.046 21.2011C28.7524 20.2082 29.3573 18.9486 29.5981 18.0204C29.8963 16.8714 30.0352 14.9356 30.0183 12.2035L30.0162 11.8556L29.6983 12.0202C29.0576 12.3518 28.3678 12.5174 27.6257 12.5174C26.8922 12.5174 26.1843 12.2982 25.4977 11.8563L25.3799 11.7805L25.2605 11.8537C24.5359 12.2979 23.855 12.5174 23.2168 12.5174C22.5705 12.5174 21.9205 12.3521 21.2646 12.0194L20.943 11.8562ZM21.4886 17.9695C21.2986 17.0627 21.1902 15.1411 21.1635 12.2048C21.8495 12.5529 22.534 12.7269 23.2168 12.7269C23.8997 12.7269 24.6197 12.4948 25.377 12.0306C26.0984 12.4948 26.8479 12.7269 27.6257 12.7269C28.4035 12.7269 29.1286 12.5529 29.801 12.2048C29.8178 14.9205 29.6799 16.842 29.3874 17.9695C28.9485 19.6607 27.1083 22.9273 25.377 22.9273C23.6458 22.9273 21.7735 19.3297 21.4886 17.9695Z" fill="#FBE625"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.1635 12.2048C21.1635 12.2048 21.2036 16.6093 21.4886 17.9695C21.7735 19.3297 23.6458 22.9273 25.377 22.9273C27.1083 22.9273 28.9485 19.6607 29.3873 17.9695C29.8262 16.2783 29.801 12.2048 29.801 12.2048C29.801 12.2048 28.7923 12.7269 27.6257 12.7269C26.459 12.7269 25.377 12.0306 25.377 12.0306C25.377 12.0306 24.2411 12.7269 23.2168 12.7269C22.1926 12.7269 21.1635 12.2048 21.1635 12.2048Z" fill="#F5FBFF"/>
|
||||
<mask id="mask1_270_67318" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="21" y="12" width="9" height="11">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.1635 12.2048C21.1635 12.2048 21.2036 16.6093 21.4886 17.9695C21.7735 19.3297 23.6458 22.9273 25.377 22.9273C27.1083 22.9273 28.9485 19.6607 29.3873 17.9695C29.8262 16.2783 29.801 12.2048 29.801 12.2048C29.801 12.2048 28.7923 12.7269 27.6257 12.7269C26.459 12.7269 25.377 12.0306 25.377 12.0306C25.377 12.0306 24.2411 12.7269 23.2168 12.7269C22.1926 12.7269 21.1635 12.2048 21.1635 12.2048Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask1_270_67318)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.6398 15.4882C24.6398 15.7759 24.2288 16.6134 23.9906 16.8277C23.8144 16.9863 23.8688 16.6178 23.909 16.3458L23.909 16.3458C23.9231 16.2503 23.9354 16.1668 23.9354 16.122L23.9355 16.1024C23.9355 16.0459 23.9355 16.0151 23.9299 15.9854C23.9231 15.9499 23.9082 15.9158 23.8753 15.8411L23.8753 15.8411C23.863 15.813 23.8482 15.7793 23.8303 15.7375C23.4488 14.9237 23.7187 14.5339 23.8386 14.3608C23.857 14.3343 23.8718 14.3129 23.8802 14.2958C23.8983 14.2592 23.9324 14.2263 23.9705 14.1897C24.0662 14.0973 24.187 13.9808 24.1415 13.7195C24.0778 13.3543 24.4639 12.8859 24.4639 12.8859C24.4639 12.8859 24.3702 13.7943 24.814 13.5718C25.1024 13.4271 25.6251 13.6347 26.09 13.8193C26.3403 13.9187 26.5739 14.0114 26.7452 14.0389C27.091 14.0945 27.2804 13.9493 27.3977 13.8594C27.4463 13.8221 27.4825 13.7943 27.5123 13.7943C27.6139 13.7943 27.7339 13.8147 27.7339 13.8889C27.7339 13.9632 27.2785 14.1805 27.0495 14.2483C26.8769 14.2993 27.054 14.4401 27.2024 14.5581C27.2509 14.5967 27.2963 14.6328 27.3254 14.6625C27.4437 14.7832 27.552 15.4416 27.2785 15.0274C27.0049 14.6133 26.4227 14.3364 25.9278 14.2958C25.4329 14.2553 24.8088 14.6309 24.7339 15.0274C24.659 15.4239 25.3193 15.3513 25.3193 15.3513C25.3193 15.3513 25.2711 15.4131 25.0581 15.4882C24.8452 15.5634 24.6398 15.4882 24.6398 15.4882ZM24.1419 15.4571C24.1419 15.515 24.0933 15.5619 24.0333 15.5619C23.9733 15.5619 23.9247 15.515 23.9247 15.4571C23.9247 15.3992 23.9733 15.3523 24.0333 15.3523C24.0933 15.3523 24.1419 15.3992 24.1419 15.4571ZM26.582 17.401C26.2791 17.2966 25.3474 17.3431 25.0957 17.4826C25.0957 17.4826 25.0619 17.2666 24.8929 17.1167C24.724 16.9669 24.6465 16.9547 24.6465 16.9547C24.6465 16.9547 25.0302 17.497 24.6471 17.6237C24.264 17.7504 23.6329 17.3867 23.4284 16.9342C23.224 16.4817 23.1839 15.8382 23.4135 15.3982C23.6431 14.9582 23.1198 15.3721 23.0715 15.534C23.0597 15.5739 23.0501 15.6312 23.0399 15.6923C23.0086 15.8792 22.9713 16.1024 22.843 15.9762C22.6727 15.8088 22.2619 15.5158 22.1969 15.5518C22.132 15.5878 22.1723 15.7026 22.2216 15.7915C22.2361 15.8176 22.2779 15.8358 22.3341 15.8602C22.4695 15.9192 22.6884 16.0144 22.8075 16.3439C22.8664 16.507 22.8985 16.7562 22.933 17.0234C22.9969 17.5195 23.0688 18.0772 23.3351 18.2594C23.7449 18.5396 22.905 18.8981 22.905 18.8981C22.905 18.8981 23.5018 19.0087 23.7904 18.776C23.9968 18.6094 24.1573 18.6586 24.2845 18.6976L24.2845 18.6976C24.335 18.7131 24.3803 18.727 24.4211 18.725C24.4401 18.7241 24.4661 18.7267 24.4981 18.7299C24.7076 18.7509 25.1794 18.798 25.7062 18.0698C25.7341 18.0339 25.7564 18.0046 25.775 17.9802L25.775 17.9802C25.8245 17.9152 25.847 17.8856 25.8748 17.8625C25.898 17.8431 25.925 17.8282 25.9744 17.8009L25.9916 17.7914C26.0307 17.7697 26.1098 17.74 26.2001 17.706L26.2001 17.706L26.2001 17.706C26.4575 17.6093 26.8062 17.4783 26.582 17.401ZM25.3287 17.8816C25.3793 17.8535 25.4439 17.8734 25.473 17.9258C25.5021 17.9783 25.4847 18.0436 25.4341 18.0716C25.3835 18.0997 25.3189 18.0799 25.2898 18.0274C25.2607 17.9749 25.2781 17.9096 25.3287 17.8816ZM25.8417 14.8742C25.9192 15.1851 26.4656 15.9412 26.7196 16.0763C26.7196 16.0763 26.5569 16.2223 26.5233 16.4456C26.4896 16.6689 26.5216 16.7406 26.5216 16.7406C26.5216 16.7406 26.7674 16.1234 27.0823 16.3757C27.3972 16.628 27.436 17.3553 27.1678 17.7733C26.8997 18.1912 26.3818 18.5753 25.8877 18.6224C25.3936 18.6695 26.0258 18.8829 26.1879 18.8352C26.2278 18.8234 26.281 18.8003 26.3379 18.7755C26.5116 18.6999 26.7191 18.6097 26.6832 18.786C26.6355 19.02 26.6136 19.5242 26.6791 19.559C26.7447 19.5939 26.819 19.4975 26.8667 19.4077C26.8807 19.3814 26.8732 19.3364 26.8631 19.276C26.8388 19.1303 26.7994 18.8949 27.0109 18.6156C27.1156 18.4773 27.3071 18.3146 27.5124 18.1403C27.8937 17.8164 28.3223 17.4524 28.33 17.1298C28.3418 16.6335 29.0999 17.1427 29.0999 17.1427C29.0999 17.1427 28.8676 16.5819 28.5153 16.4666C28.2632 16.3842 28.217 16.2228 28.1804 16.0949C28.1659 16.0441 28.1529 15.9986 28.1291 15.9654C28.1179 15.9499 28.106 15.9268 28.0912 15.8981C27.9947 15.711 27.7773 15.2897 26.8796 15.2445C26.8343 15.2406 26.7975 15.2379 26.767 15.2356C26.6856 15.2295 26.6485 15.2267 26.6139 15.216C26.585 15.2071 26.5579 15.1926 26.508 15.166C26.5025 15.1631 26.4968 15.16 26.4907 15.1568C26.4512 15.1358 26.3832 15.0856 26.3055 15.0284L26.3055 15.0284C26.0842 14.8652 25.7845 14.6441 25.8417 14.8742ZM26.9619 15.7033C26.9108 15.6762 26.8922 15.6112 26.9204 15.5582C26.9485 15.5052 27.0128 15.4843 27.0639 15.5115C27.1149 15.5386 27.1335 15.6036 27.1054 15.6566C27.0772 15.7096 27.0129 15.7305 26.9619 15.7033Z" fill="#FF9800"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.4259 19.7524H28.7049V23.2095H21.4259V19.7524Z" fill="#36C6FF"/>
|
||||
</g>
|
||||
<g clip-path="url(#clip1_270_67318)">
|
||||
<rect width="18" height="14" fill="#2E42A5"/>
|
||||
<path d="M-2.00427 12.9998L1.95668 14.737L18.0899 1.88872L20.1792 -0.69281L15.9435 -1.27343L9.36317 4.26326L4.06667 7.99369L-2.00427 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M-1.46204 14.2169L0.555885 15.225L19.4289 -0.932678H16.5955L-1.46204 14.2169Z" fill="#F50100"/>
|
||||
<path d="M20.0043 12.9998L16.0433 14.737L-0.0898743 1.88872L-2.17919 -0.69281L2.05648 -1.27343L8.63683 4.26326L13.9333 7.99369L20.0043 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M19.8691 13.8733L17.8512 14.8815L9.81489 7.96351L7.43229 7.19059L-2.3802 -0.683947H0.453194L10.2602 7.00368L12.8651 7.9305L19.8691 13.8733Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.98451 0H7.98451V6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.48451 0H11.4845V4.5H18V9.5H11.4845L11.5 14H6.5L6.48451 9.5H0V4.5H6.48451V0ZM7.98451 6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0H7.98451V6Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67318">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_270_67318">
|
||||
<rect width="18" height="14" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
12
Flagpack/AL - Albania.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
18
Flagpack/AM - Armenia.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67563)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<mask id="mask0_270_67563" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67563)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#FECA00"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67563">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 788 B |
43
Flagpack/AO - Angola.svg
Normal file
@@ -0,0 +1,43 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67342)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#1D1D1D"/>
|
||||
<mask id="mask0_270_67342" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67342)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V12H32V0H0Z" fill="#F50100"/>
|
||||
<path d="M9.93302 5.89667L10.3598 4.49182C13.56 5.46852 15.4893 7.18076 16.032 9.62351C16.3921 11.244 16.2284 12.6925 15.6462 13.9824C15.2313 14.9014 14.7044 15.5874 13.9468 16.3597C12.6834 17.6476 10.6054 18.4694 8.72927 18.1209C7.42156 17.8781 6.2169 17.4194 5.11975 16.7455L5.88521 15.4934C6.82784 16.0723 7.86335 16.4666 8.99619 16.677C10.3509 16.9286 11.9571 16.2934 12.9021 15.3302C13.5494 14.6702 13.9815 14.1077 14.3113 13.377C14.7648 12.3724 14.8919 11.2477 14.6019 9.94272C14.1879 8.07902 12.6701 6.73203 9.93302 5.89667Z" fill="#FFEA42"/>
|
||||
<g filter="url(#filter0_d_270_67342)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.8461 9.46429L8.8966 10.1216L9.23157 9.02009L8.30978 8.3248L9.4663 8.30135L9.8461 7.21429L10.2259 8.30135L11.3824 8.3248L10.4606 9.02009L10.7956 10.1216L9.8461 9.46429Z" fill="#FCFF01"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.8461 9.46429L8.8966 10.1216L9.23157 9.02009L8.30978 8.3248L9.4663 8.30135L9.8461 7.21429L10.2259 8.30135L11.3824 8.3248L10.4606 9.02009L10.7956 10.1216L9.8461 9.46429Z" fill="#FFEA42"/>
|
||||
</g>
|
||||
<g filter="url(#filter1_d_270_67342)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.61405 9.85974C7.61405 9.85974 5.9302 12.3283 7.25611 13.2308C8.58203 14.1332 15.5933 17.9375 15.5933 17.9375C15.5933 17.9375 17.042 17.9291 17.2481 18.2373C17.4542 18.5455 17.883 18.908 18.0637 18.908C18.2445 18.908 18.7114 18.5815 18.7114 18.5815C18.7114 18.5815 19.0753 18.2837 18.7114 17.9375C18.3474 17.5912 16.4239 16.4057 16.4239 16.4057C16.4239 16.4057 8.9159 11.6142 8.27747 11.1398C7.63904 10.6654 7.61405 9.85974 7.61405 9.85974Z" fill="#FCFF01"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.61405 9.85974C7.61405 9.85974 5.9302 12.3283 7.25611 13.2308C8.58203 14.1332 15.5933 17.9375 15.5933 17.9375C15.5933 17.9375 17.042 17.9291 17.2481 18.2373C17.4542 18.5455 17.883 18.908 18.0637 18.908C18.2445 18.908 18.7114 18.5815 18.7114 18.5815C18.7114 18.5815 19.0753 18.2837 18.7114 17.9375C18.3474 17.5912 16.4239 16.4057 16.4239 16.4057C16.4239 16.4057 8.9159 11.6142 8.27747 11.1398C7.63904 10.6654 7.61405 9.85974 7.61405 9.85974Z" fill="#FFEA42"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.7118 4.07422L11.322 4.95707L12.6002 5.51046L12.9627 4.62738L11.7118 4.07422ZM14.3246 5.48414L13.6208 6.14449L14.5812 7.15334L15.2599 6.4821L14.3246 5.48414ZM15.2861 8.13652L16.186 7.78789L16.6793 9.06356L15.7986 9.43169L15.2861 8.13652ZM17.039 10.6362L16.0744 10.6055L16.0402 11.9979L16.9947 12.0032L17.039 10.6362ZM15.8471 13.1941L16.73 13.5839L16.1768 14.8348L15.2938 14.4723L15.8471 13.1941ZM15.3236 16.202L14.6633 15.4983L13.6544 16.4587L14.3257 17.1374L15.3236 16.202ZM12.6765 17.1671L13.0252 18.067L11.7495 18.5604L11.3814 17.6797L12.6765 17.1671ZM10.1832 18.9214L10.2139 17.9568L8.82142 17.9225L8.81615 18.8771L10.1832 18.9214ZM7.63156 17.7283L7.24175 18.6111L5.99084 18.058L6.35331 17.1749L7.63156 17.7283Z" fill="#FFEA42"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<filter id="filter0_d_270_67342" x="8.30981" y="7.21429" width="3.07263" height="2.90735" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_270_67342"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_270_67342" result="shape"/>
|
||||
</filter>
|
||||
<filter id="filter1_d_270_67342" x="6.74719" y="9.85974" width="12.1259" height="9.04822" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_270_67342"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_270_67342" result="shape"/>
|
||||
</filter>
|
||||
<clipPath id="clip0_270_67342">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
17
Flagpack/AQ - Antarctica.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67403)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#5196ED"/>
|
||||
<mask id="mask0_270_67403" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67403)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.71741 7.89376C8.71741 7.89376 10.7815 9.02624 11.0686 9.33948C11.3555 9.65278 11.8155 10.8032 12.5328 10.1526C13.2502 9.50226 13.9675 10.0079 13.9675 8.9717C13.9675 7.93558 15.0385 5.53204 16.5926 6.13434C18.1469 6.73658 19.4247 6.35982 19.7832 6.6006C20.142 6.84154 21.0028 8.03802 21.6722 8.03802C22.3419 8.03802 22.6764 8.7367 22.7244 9.74876C22.772 10.7609 22.5093 10.8576 23.1308 10.9782C23.7526 11.0986 23.9916 11.5566 23.681 12.1589C23.3701 12.7613 23.3938 12.4962 23.4417 13.1228C23.4897 13.7493 22.8202 17.444 20.7634 17.8058C18.7069 18.1671 16.7576 17.9745 17.2839 17.2754C17.8099 16.5768 18.5381 15.7727 17.4623 15.604C16.386 15.4351 15.7078 15.2915 14.6317 15.5806C13.5555 15.8698 12.4317 16.3274 11.7619 15.4602C11.0924 14.5926 11.2361 13.9661 10.6861 13.5564C10.1362 13.1468 9.46638 13.2191 10.0166 12.4239C10.5663 11.6287 11.0206 11.9256 10.5663 11.2991C10.1123 10.6728 8.39739 10.3998 8.39739 9.77352C8.39739 9.14674 7.30659 7.77324 8.71741 7.89376Z" fill="#F5F8FB"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67403">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
27
Flagpack/AR - Argentina.svg
Normal file
|
After Width: | Height: | Size: 163 KiB |
19
Flagpack/AS - American Samoa.svg
Normal file
|
After Width: | Height: | Size: 21 KiB |
18
Flagpack/AT - Austria.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67484)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#F7FCFF"/>
|
||||
<mask id="mask0_270_67484" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67484)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#C51918"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#C51918"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67484">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 788 B |
34
Flagpack/AU - Australia.svg
Normal file
@@ -0,0 +1,34 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67322)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<g clip-path="url(#clip1_270_67322)">
|
||||
<rect width="18" height="14" fill="#2E42A5"/>
|
||||
<path d="M-2.00427 12.9998L1.95668 14.737L18.0899 1.88872L20.1792 -0.69281L15.9435 -1.27343L9.36317 4.26326L4.06667 7.99369L-2.00427 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M-1.46204 14.2169L0.555885 15.225L19.4289 -0.932678H16.5955L-1.46204 14.2169Z" fill="#F50100"/>
|
||||
<path d="M20.0043 12.9998L16.0433 14.737L-0.0898743 1.88872L-2.17919 -0.69281L2.05648 -1.27343L8.63683 4.26326L13.9333 7.99369L20.0043 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M19.8691 13.8733L17.8512 14.8815L9.81489 7.96351L7.43229 7.19059L-2.3802 -0.683947H0.453194L10.2602 7.00368L12.8651 7.9305L19.8691 13.8733Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.98451 0H7.98451V6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.48451 0H11.4845V4.5H18V9.5H11.4845L11.5 14H6.5L6.48451 9.5H0V4.5H6.48451V0ZM7.98451 6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0H7.98451V6Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<g clip-path="url(#clip2_270_67322)">
|
||||
<path d="M9 20.5L7.69835 21.7029L7.82725 19.9352L6.07522 19.6676L7.53761 18.6662L6.65451 17.1295L8.34917 17.6485L9 16L9.65083 17.6485L11.3455 17.1295L10.4624 18.6662L11.9248 19.6676L10.1727 19.9352L10.3017 21.7029L9 20.5Z" fill="#F7FCFF"/>
|
||||
<path d="M22 13L21.1322 13.8019L21.2182 12.6235L20.0501 12.445L21.0251 11.7775L20.4363 10.753L21.5661 11.099L22 10L22.4339 11.099L23.5637 10.753L22.9749 11.7775L23.9499 12.445L22.7818 12.6235L22.8678 13.8019L22 13Z" fill="#F7FCFF"/>
|
||||
<path d="M24 5L23.1322 5.80194L23.2182 4.62349L22.0501 4.44504L23.0251 3.77748L22.4363 2.75302L23.5661 3.09903L24 2L24.4339 3.09903L25.5637 2.75302L24.9749 3.77748L25.9499 4.44504L24.7818 4.62349L24.8678 5.80194L24 5Z" fill="#F7FCFF"/>
|
||||
<path d="M29 9L28.1322 9.80194L28.2182 8.62349L27.0501 8.44504L28.0251 7.77748L27.4363 6.75302L28.5661 7.09903L29 6L29.4339 7.09903L30.5637 6.75302L29.9749 7.77748L30.9499 8.44504L29.7818 8.62349L29.8678 9.80194L29 9Z" fill="#F7FCFF"/>
|
||||
<path d="M25 22L24.1322 22.8019L24.2182 21.6235L23.0501 21.445L24.0251 20.7775L23.4363 19.753L24.5661 20.099L25 19L25.4339 20.099L26.5637 19.753L25.9749 20.7775L26.9499 21.445L25.7818 21.6235L25.8678 22.8019L25 22Z" fill="#F7FCFF"/>
|
||||
<path d="M28.5 14.25L27.6183 14.7135L27.7867 13.7318L27.0734 13.0365L28.0592 12.8932L28.5 12L28.9408 12.8932L29.9266 13.0365L29.2133 13.7318L29.3817 14.7135L28.5 14.25Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67322">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_270_67322">
|
||||
<rect width="18" height="14" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip2_270_67322">
|
||||
<rect width="25" height="21" fill="white" transform="translate(6 2)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
18
Flagpack/AW - Aruba.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67333)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#5BA3DA"/>
|
||||
<mask id="mask0_270_67333" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67333)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.77333 7.9597L1.39233 7.03498L5.82733 6.15741L7.11018 1.56757L8.12183 6.12015L12.0812 7.03943L8.16838 7.9597L7.03936 11.7032L5.77333 7.9597Z" fill="#FF0000" stroke="#F7FCFF" stroke-width="0.35"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.0002 14H0.00012207V16.0001H32.0002V14ZM32.0002 18.0001H0.00012207V20.0001H32.0002V18.0001Z" fill="#FAD615"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67333">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
17
Flagpack/AX - Aland Islands.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67529)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#0061C1"/>
|
||||
<mask id="mask0_270_67529" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67529)">
|
||||
<path d="M10 -1H9V0V9H0H-1V10V14V15H0H9V24V25H10H14H15V24V15H32H33V14V10V9H32H15V0V-1H14H10Z" fill="#D21034" stroke="#FFCE00" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67529">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 766 B |
19
Flagpack/AZ - Azerbaijan.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67323)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#AF0100"/>
|
||||
<mask id="mask0_270_67323" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67323)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#3CA5D9"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#73BE4A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.1399 15.024C15.7929 14.7134 14.6103 13.5539 14.6243 12C14.6374 10.5454 15.4933 9.36784 16.9747 9.03345C18.4562 8.69905 19.9922 9.33448 19.9922 9.33448C19.5839 8.42657 18.1625 7.78992 16.9966 7.79298C14.8263 7.79867 12.511 9.4555 12.4882 11.9856C12.4646 14.6086 14.961 16.0999 17.1581 16.0941C18.9194 16.0895 19.7561 14.9559 19.9297 14.4739C19.9297 14.4739 18.4869 15.3345 17.1399 15.024ZM18.0178 13.4207L19.1933 12.6027L20.3689 13.4207L19.9542 12.0499L21.0955 11.1846L19.6636 11.1554L19.1933 9.80266L18.7231 11.1554L17.2912 11.1846L18.4325 12.0499L18.0178 13.4207Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67323">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
18
Flagpack/BA - Bosnia and Herzegovina.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67491)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#2E42A5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 0H29V24L9 0Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.10805 2.79376L4.93248 3.4118L5.15699 2.10278L4.20593 1.17573L5.52026 0.984745L6.10805 -0.206238L6.69583 0.984745L8.01016 1.17573L7.0591 2.10278L7.28362 3.4118L6.10805 2.79376Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.59474 7.07391L8.41917 7.69195L8.64368 6.38293L7.69263 5.45588L9.00695 5.2649L9.59474 4.07391L10.1825 5.2649L11.4969 5.45588L10.5458 6.38293L10.7703 7.69195L9.59474 7.07391Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.8634 11.2384L11.6878 11.8564L11.9124 10.5474L10.9613 9.62037L12.2756 9.42939L12.8634 8.2384L13.4512 9.42939L14.7655 9.62037L13.8145 10.5474L14.039 11.8564L12.8634 11.2384Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0653 15.2292L14.8898 15.8473L15.1143 14.5383L14.1632 13.6112L15.4775 13.4202L16.0653 12.2292L16.6531 13.4202L17.9674 13.6112L17.0164 14.5383L17.2409 15.8473L16.0653 15.2292Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.5144 19.3368L18.3388 19.9548L18.5634 18.6458L17.6123 17.7188L18.9266 17.5278L19.5144 16.3368L20.1022 17.5278L21.4165 17.7188L20.4655 18.6458L20.69 19.9548L19.5144 19.3368Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.3269 23.311L22.1513 23.9291L22.3759 22.6201L21.4248 21.693L22.7391 21.502L23.3269 20.311L23.9147 21.502L25.229 21.693L24.278 22.6201L24.5025 23.9291L23.3269 23.311Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67491">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
14
Flagpack/BB - Barbados.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67571)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 0H32V24H22V0Z" fill="#2E42A5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H22V24H10V0Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H10V24H0V0Z" fill="#2E42A5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.612 15.6678C18.8 14.3782 20.1328 11.5753 20.1328 11.5753L20.7509 9.93074L18.3012 10.7256L18.8809 11.0273L17.7464 14.2258L16.8895 14.0212V7.85251L17.5674 7.80301L15.8953 5.37152L14.2628 7.85251H15.0505V14.0212L14.0852 14.1826L13.3967 10.9479L13.7942 10.6147L11.1289 10.1233L11.9246 11.5916C11.9246 11.5916 12.9956 14.1082 13.3967 15.6678L15.0505 15.5404V17.9375H16.8895V15.5404L18.612 15.6678Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67571">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1008 B |
12
Flagpack/BD - Bangladesh.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67546)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<rect width="32" height="24" fill="#38A17E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13 19C16.866 19 20 15.866 20 12C20 8.13401 16.866 5 13 5C9.13401 5 6 8.13401 6 12C6 15.866 9.13401 19 13 19Z" fill="#F72E45"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67546">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 516 B |
13
Flagpack/BE - Belgium.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67324)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H21V24H10V0Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21 0H32V24H21V0Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H11V24H0V0Z" fill="#1D1D1D"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67324">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 546 B |
18
Flagpack/BF - Burkina Faso.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67325)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#5EAA22"/>
|
||||
<mask id="mask0_270_67325" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67325)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V12H32V0H0Z" fill="#C51918"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0354 15.7706L11.3325 19.3299L12.8373 13.533L8.42633 10.0036H13.6836L16.0348 4.85773L18.3859 10.0036H23.6432L19.1855 13.5376L20.7371 19.3299L16.0354 15.7706Z" fill="#FECA00"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67325">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 932 B |
18
Flagpack/BG - Bulgaria.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67326)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#5EAA22"/>
|
||||
<mask id="mask0_270_67326" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67326)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#E22C18"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67326">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 788 B |
12
Flagpack/BH - Bahrain.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67327)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<rect width="32" height="24" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H6.79999L12 2L6.79999 4L12 6L6.79999 8L12 10L6.79999 12L12 14L6.79999 16L12 18L6.79999 20L12 22L6.79999 24H0V0Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67327">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 522 B |
21
Flagpack/BI - Burundi.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67328)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<rect width="32" height="24" rx="2" fill="#5EAA22"/>
|
||||
<mask id="path-2-outside-1_270_67328" maskUnits="userSpaceOnUse" x="-8" y="-3" width="48" height="30" fill="black">
|
||||
<rect fill="white" x="-8" y="-3" width="48" height="30"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 12L32 0H0L16 12ZM16 12L0 24H32L16 12Z"/>
|
||||
</mask>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 12L32 0H0L16 12ZM16 12L0 24H32L16 12Z" fill="#DD2C2B"/>
|
||||
<path d="M32 0L33.5 2L39.5 -2.5H32V0ZM0 0V-2.5H-7.5L-1.5 2L0 0ZM0 24L-1.5 22L-7.5 26.5H0V24ZM32 24V26.5H39.5L33.5 22L32 24ZM30.5 -2L14.5 10L17.5 14L33.5 2L30.5 -2ZM0 2.5H32V-2.5H0V2.5ZM17.5 10L1.5 -2L-1.5 2L14.5 14L17.5 10ZM14.5 10L-1.5 22L1.5 26L17.5 14L14.5 10ZM0 26.5H32V21.5H0V26.5ZM33.5 22L17.5 10L14.5 14L30.5 26L33.5 22Z" fill="white" mask="url(#path-2-outside-1_270_67328)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 18C19.3137 18 22 15.3137 22 12C22 8.68629 19.3137 6 16 6C12.6863 6 10 8.68629 10 12C10 15.3137 12.6863 18 16 18Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.43 10.3873L14.2679 10.4L14.86 9.40002L14.2679 8.40002L15.43 8.41275L16 7.40002L16.57 8.41275L17.732 8.40002L17.14 9.40002L17.732 10.4L16.57 10.3873L16 11.4L15.43 10.3873Z" fill="#DD2C2B" stroke="#5EAA22" stroke-width="0.25"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.93 14.4873L11.7679 14.5L12.36 13.5L11.7679 12.5L12.93 12.5127L13.5 11.5L14.07 12.5127L15.232 12.5L14.64 13.5L15.232 14.5L14.07 14.4873L13.5 15.5L12.93 14.4873Z" fill="#DD2C2B" stroke="#5EAA22" stroke-width="0.25"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.93 14.4873L16.7679 14.5L17.36 13.5L16.7679 12.5L17.93 12.5127L18.5 11.5L19.07 12.5127L20.232 12.5L19.64 13.5L20.232 14.5L19.07 14.4873L18.5 15.5L17.93 14.4873Z" fill="#DD2C2B" stroke="#5EAA22" stroke-width="0.25"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67328">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
13
Flagpack/BJ - Benin.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67329)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#DD2C2B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V14H32V0H0Z" fill="#FECA00"/>
|
||||
<rect width="14" height="24" fill="#5EAA22"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67329">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 505 B |
13
Flagpack/BL - Saint Barthélemy.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67330)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 0H32V24H22V0Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H12V24H0V0Z" fill="#2E42A5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H22V24H10V0Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67330">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 546 B |
47
Flagpack/BM - Bermuda.svg
Normal file
@@ -0,0 +1,47 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67338)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#AF0100"/>
|
||||
<mask id="mask0_270_67338" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67338)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0298 11.0427L29.9185 11.0427V20.0326C29.9185 20.0326 29.6426 21.2702 27.9315 22.0874C26.2205 22.9046 25.4742 22.9046 25.4742 22.9046C25.4742 22.9046 22.7487 22.2349 22.1852 21.6078C21.6217 20.9807 21.0298 20.7487 21.0298 19.6525C21.0298 18.5563 21.0298 11.0427 21.0298 11.0427Z" fill="white"/>
|
||||
<mask id="mask1_270_67338" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="21" y="11" width="9" height="12">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0298 11.0427L29.9185 11.0427V20.0326C29.9185 20.0326 29.6426 21.2702 27.9315 22.0874C26.2205 22.9046 25.4742 22.9046 25.4742 22.9046C25.4742 22.9046 22.7487 22.2349 22.1852 21.6078C21.6217 20.9807 21.0298 20.7487 21.0298 19.6525C21.0298 18.5563 21.0298 11.0427 21.0298 11.0427Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask1_270_67338)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.4554 11.57C25.4888 11.5219 25.5063 11.4758 25.5063 11.4758L25.5032 11.6262C25.535 11.6557 25.574 11.6778 25.6199 11.6778L25.8169 11.5611C25.8169 11.5611 25.7716 11.819 25.8311 11.8117C25.8311 11.8117 26.0148 11.6903 26.0877 11.7558C26.0877 11.7558 25.8738 12.0008 26.1313 12.0024C26.1313 12.0024 26.455 11.9503 26.427 12.1006C26.427 12.1006 26.1844 12.546 26.2863 12.5743L26.6868 12.5625C26.6868 12.5625 26.4184 12.796 26.4256 12.8942L26.5593 12.9992C26.5593 12.9992 26.6343 12.8146 26.6974 12.9656C26.6974 12.9656 26.7056 13.2398 26.6636 13.2398L26.3076 13.3538C26.3076 13.3538 26.2845 13.4878 26.4118 13.4878C26.4118 13.4878 26.7064 13.3631 26.7148 13.4898C26.7148 13.4898 26.676 13.6362 26.6589 13.7599C26.6589 13.7599 26.6401 14.2085 26.6373 14.2471C26.6373 14.2471 26.6606 14.2303 26.8847 14.4943C26.8847 14.4943 27.4502 14.8516 27.5538 14.7694C27.5824 14.7467 27.6011 14.7002 27.6222 14.6477C27.6777 14.5098 27.75 14.33 28.0627 14.427L28.0655 14.4279C28.4951 14.5612 28.5995 14.5936 28.4909 14.7694C28.382 14.9456 27.9685 15.3653 27.9685 15.3653L27.61 16.8034H28.3779C28.6096 16.8034 28.8224 16.8932 28.8632 17.0853C28.9041 17.2773 28.9147 17.6506 28.9147 17.6952C28.9147 17.7012 28.9137 17.7095 28.9126 17.7193C28.9053 17.7816 28.8907 17.9054 29.0741 17.9054C29.0741 17.9054 29.4414 17.9528 29.3653 17.9795C29.3653 17.9795 29.105 17.9293 29.1032 18.1584C29.1032 18.1584 29.0032 18.1879 29.0516 18.4708C29.0516 18.4708 29.2535 19.0905 29.1195 18.9628C29.1195 18.9628 28.845 18.6406 28.845 18.5033C28.845 18.5033 28.649 18.5806 28.6551 18.7825C28.6551 18.7825 28.4696 19.0307 28.4752 18.7881C28.4752 18.7881 28.7894 18.192 28.6138 18.327C28.6138 18.327 28.3863 18.8193 28.3565 18.7446L27.5125 18.5164L27.191 19.9311C27.191 19.9311 27.2766 20.1966 27.5125 20.1966C27.598 20.1966 27.6739 20.1632 27.7432 20.1327C27.865 20.0792 27.9662 20.0347 28.0627 20.1966C28.2141 20.4506 28.2815 20.4743 28.3565 20.4743C28.4314 20.4743 28.519 20.5717 28.4752 20.7207C28.4314 20.8697 28.2347 20.9818 28.1487 20.9818C28.1171 20.9818 28.1255 21.0087 28.136 21.0427C28.1542 21.1011 28.1789 21.1805 28.0187 21.1805C27.8917 21.1805 27.8282 21.1653 27.7648 21.1501C27.7016 21.135 27.6384 21.1199 27.5125 21.1199C27.483 21.1199 27.4537 21.1202 27.4249 21.1205C27.2082 21.123 27.024 21.1251 27.024 20.9818C27.024 20.8428 26.857 20.7197 26.7092 20.6108C26.6844 20.5925 26.6601 20.5746 26.6373 20.5571C26.4783 20.4354 26.1313 19.0592 26.1313 19.0592L25.475 14.926L25.4554 13.9667L25.4358 14.926L24.7796 19.0592C24.7796 19.0592 24.4326 20.4354 24.2735 20.5571C24.2507 20.5746 24.2265 20.5925 24.2017 20.6107C24.0538 20.7197 23.8868 20.8428 23.8868 20.9818C23.8868 21.1251 23.7026 21.123 23.4859 21.1205C23.4572 21.1202 23.4279 21.1199 23.3984 21.1199C23.2725 21.1199 23.2093 21.135 23.146 21.1501C23.0826 21.1653 23.0191 21.1805 22.8922 21.1805C22.7319 21.1805 22.7566 21.1011 22.7748 21.0427C22.7854 21.0087 22.7938 20.9818 22.7621 20.9818C22.6761 20.9818 22.4794 20.8697 22.4356 20.7207C22.3919 20.5717 22.4794 20.4743 22.5544 20.4743C22.6294 20.4743 22.6967 20.4506 22.8481 20.1966C22.9446 20.0347 23.0459 20.0792 23.1677 20.1327C23.2369 20.1632 23.3129 20.1966 23.3984 20.1966C23.6343 20.1966 23.7199 19.9311 23.7199 19.9311L23.3984 18.5164L22.5544 18.7446C22.5245 18.8193 22.297 18.327 22.297 18.327C22.1214 18.192 22.4356 18.7881 22.4356 18.7881C22.4413 19.0307 22.2558 18.7825 22.2558 18.7825C22.2618 18.5806 22.0659 18.5033 22.0659 18.5033C22.0659 18.6406 21.7913 18.9628 21.7913 18.9628C21.6573 19.0905 21.8593 18.4708 21.8593 18.4708C21.9077 18.1879 21.8077 18.1584 21.8077 18.1584C21.8059 17.9293 21.5455 17.9795 21.5455 17.9795C21.4694 17.9528 21.8367 17.9054 21.8367 17.9054C22.0202 17.9054 22.0056 17.7816 21.9983 17.7193C21.9971 17.7095 21.9961 17.7012 21.9961 17.6952C21.9961 17.6506 22.0068 17.2773 22.0476 17.0853C22.0884 16.8932 22.3013 16.8034 22.5329 16.8034H23.3008L22.9423 15.3653C22.9423 15.3653 22.5288 14.9456 22.42 14.7694C22.3114 14.5936 22.4158 14.5612 22.8453 14.4279L22.8481 14.427C23.1608 14.33 23.2332 14.5098 23.2886 14.6477C23.3098 14.7002 23.3284 14.7467 23.357 14.7694C23.4607 14.8516 24.0261 14.4943 24.0261 14.4943C24.2502 14.2303 24.2735 14.2471 24.2735 14.2471C24.2707 14.2085 24.252 13.7599 24.252 13.7599C24.2349 13.6362 24.196 13.4898 24.196 13.4898C24.2044 13.3631 24.499 13.4878 24.499 13.4878C24.6263 13.4878 24.6033 13.3538 24.6033 13.3538L24.2472 13.2398C24.2053 13.2398 24.2135 12.9656 24.2135 12.9656C24.2766 12.8146 24.3516 12.9992 24.3516 12.9992L24.4852 12.8942C24.4924 12.796 24.224 12.5625 24.224 12.5625L24.6245 12.5743C24.7265 12.546 24.4839 12.1006 24.4839 12.1006C24.4559 11.9503 24.7796 12.0024 24.7796 12.0024C25.0371 12.0008 24.8232 11.7558 24.8232 11.7558C24.896 11.6903 25.0797 11.8117 25.0797 11.8117C25.1393 11.819 25.0939 11.5611 25.0939 11.5611L25.291 11.6778C25.3368 11.6778 25.3759 11.6557 25.4076 11.6262L25.4046 11.4758C25.4046 11.4758 25.4221 11.5219 25.4554 11.57Z" fill="#CF142B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.2224 20L20.8954 19.6786V23.3214H24.7675H26.1279H30V19.6786L29.673 20C29.722 19.6158 29.6478 19.7393 29.5591 19.887C29.5171 19.9569 29.4719 20.0321 29.435 20.0615C29.4003 20.0892 29.3924 19.9769 29.3846 19.8669C29.3778 19.7696 29.371 19.674 29.346 19.6786C29.346 19.6786 29.2469 19.5206 29.1861 19.5804C29.174 19.5923 29.1649 19.6803 29.1546 19.7798C29.1435 19.8873 29.1311 20.0083 29.1118 20.0615C29.0894 20.1235 29.0189 20 29.0189 20C29.0189 20 29.0225 19.5332 28.951 19.4629C28.8795 19.3926 28.8724 20 28.8724 20C28.8724 20 28.7628 19.5501 28.6522 19.5804C28.6336 19.5855 28.624 19.7031 28.6136 19.8297C28.6035 19.9528 28.5927 20.0843 28.5723 20.1289C28.5306 20.2204 28.4327 19.5804 28.4327 19.5804C28.4327 19.5804 28.4036 20.1046 28.3059 20.1289C28.2896 20.133 28.2745 20.0482 28.2578 19.9547C28.2418 19.8648 28.2243 19.7669 28.2029 19.7314C28.1577 19.6565 27.9445 19.9495 27.9445 19.9495L27.7954 19.3447L27.3838 19.6786H26.1279H24.7675H23.5117L23.1 19.3447L22.9509 19.9495C22.9509 19.9495 22.7378 19.6565 22.6925 19.7314C22.6711 19.7669 22.6537 19.8648 22.6377 19.9547C22.621 20.0482 22.6059 20.133 22.5895 20.1289C22.4918 20.1046 22.4627 19.5804 22.4627 19.5804C22.4627 19.5804 22.3649 20.2204 22.3231 20.1289C22.3027 20.0843 22.2919 19.9528 22.2818 19.8297C22.2715 19.7031 22.2618 19.5855 22.2432 19.5804C22.1326 19.5501 22.023 20 22.023 20C22.023 20 22.0159 19.3926 21.9444 19.4629C21.8729 19.5332 21.8765 20 21.8765 20C21.8765 20 21.806 20.1235 21.7836 20.0615C21.7644 20.0083 21.7519 19.8873 21.7408 19.7798C21.7305 19.6803 21.7215 19.5923 21.7093 19.5804C21.6485 19.5206 21.5495 19.6786 21.5495 19.6786C21.5244 19.674 21.5177 19.7696 21.5108 19.8669C21.503 19.9769 21.4951 20.0892 21.4604 20.0615C21.4235 20.0321 21.3783 19.9569 21.3363 19.887C21.2476 19.7393 21.1734 19.6158 21.2224 20Z" fill="#5DC852"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.1804 14.94C28.1804 14.94 28.2233 15.0503 28.1804 15.1591V14.94ZM25.4859 14.7626C25.5596 14.7737 25.6257 14.7916 25.6822 14.8069C25.814 14.8425 25.8934 14.864 25.8934 14.752C25.8934 14.6703 26.1097 14.776 26.4079 14.9216C26.7964 15.1114 27.3241 15.3691 27.6938 15.3691C28.0159 15.3691 28.1386 15.2648 28.1804 15.1591V15.5843C28.1804 15.6602 28.1971 15.7503 28.2128 15.835C28.2416 15.9904 28.2671 16.1278 28.1804 16.1278C28.0463 16.1278 27.4458 16.5501 27.4458 17.0365C27.4458 17.5229 28.1804 17.9225 28.1804 17.9225C28.1804 17.9225 27.6938 19.6349 27.2681 19.8965C27.0098 20.0553 26.8566 19.925 26.7761 19.8565C26.724 19.8121 26.7023 19.7937 26.7023 19.8965C26.7023 20.1581 26.3334 20.5271 25.8934 20.6727C25.609 20.7669 25.6923 20.8391 25.7868 20.921C25.8384 20.9657 25.8934 21.0134 25.8934 21.069C25.8934 21.1949 25.5463 21.0189 25.407 20.9432C25.2677 21.0189 24.9206 21.1949 24.9206 21.069C24.9206 21.0134 24.9756 20.9657 25.0273 20.921C25.1217 20.8391 25.2051 20.7669 24.9206 20.6727C24.4807 20.5271 24.1117 20.1581 24.1117 19.8965C24.1117 19.7937 24.0901 19.8121 24.0379 19.8565C23.9574 19.925 23.8043 20.0553 23.5459 19.8965C23.1203 19.6349 22.6337 17.9225 22.6337 17.9225C22.6337 17.9225 23.3682 17.5229 23.3682 17.0365C23.3682 16.5501 22.7678 16.1278 22.6337 16.1278C22.5469 16.1278 22.5724 15.9904 22.6013 15.835C22.617 15.7503 22.6337 15.6602 22.6337 15.5843V15.1591C22.6754 15.2648 22.7982 15.3691 23.1203 15.3691C23.49 15.3691 24.0176 15.1114 24.4062 14.9216C24.7044 14.776 24.9206 14.6703 24.9206 14.752C24.9206 14.864 25 14.8425 25.1318 14.8069C25.1883 14.7916 25.2545 14.7737 25.3281 14.7626C25.3351 14.7556 25.3425 14.752 25.3502 14.752C25.3695 14.752 25.3884 14.7526 25.407 14.7539C25.4256 14.7526 25.4445 14.752 25.4638 14.752C25.4716 14.752 25.4789 14.7556 25.4859 14.7626ZM22.6337 14.94C22.6337 14.94 22.5908 15.0503 22.6337 15.1591V14.94Z" fill="#4ABCE6"/>
|
||||
<mask id="mask2_270_67338" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="22" y="14" width="7" height="8">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.1804 14.94C28.1804 14.94 28.2233 15.0503 28.1804 15.1591V14.94ZM25.4859 14.7626C25.5596 14.7737 25.6257 14.7916 25.6822 14.8069C25.814 14.8425 25.8934 14.864 25.8934 14.752C25.8934 14.6703 26.1097 14.776 26.4079 14.9216C26.7964 15.1114 27.3241 15.3691 27.6938 15.3691C28.0159 15.3691 28.1386 15.2648 28.1804 15.1591V15.5843C28.1804 15.6602 28.1971 15.7503 28.2128 15.835C28.2416 15.9904 28.2671 16.1278 28.1804 16.1278C28.0463 16.1278 27.4458 16.5501 27.4458 17.0365C27.4458 17.5229 28.1804 17.9225 28.1804 17.9225C28.1804 17.9225 27.6938 19.6349 27.2681 19.8965C27.0098 20.0553 26.8566 19.925 26.7761 19.8565C26.724 19.8121 26.7023 19.7937 26.7023 19.8965C26.7023 20.1581 26.3334 20.5271 25.8934 20.6727C25.609 20.7669 25.6923 20.8391 25.7868 20.921C25.8384 20.9657 25.8934 21.0134 25.8934 21.069C25.8934 21.1949 25.5463 21.0189 25.407 20.9432C25.2677 21.0189 24.9206 21.1949 24.9206 21.069C24.9206 21.0134 24.9756 20.9657 25.0273 20.921C25.1217 20.8391 25.2051 20.7669 24.9206 20.6727C24.4807 20.5271 24.1117 20.1581 24.1117 19.8965C24.1117 19.7937 24.0901 19.8121 24.0379 19.8565C23.9574 19.925 23.8043 20.0553 23.5459 19.8965C23.1203 19.6349 22.6337 17.9225 22.6337 17.9225C22.6337 17.9225 23.3682 17.5229 23.3682 17.0365C23.3682 16.5501 22.7678 16.1278 22.6337 16.1278C22.5469 16.1278 22.5724 15.9904 22.6013 15.835C22.617 15.7503 22.6337 15.6602 22.6337 15.5843V15.1591C22.6754 15.2648 22.7982 15.3691 23.1203 15.3691C23.49 15.3691 24.0176 15.1114 24.4062 14.9216C24.7044 14.776 24.9206 14.6703 24.9206 14.752C24.9206 14.864 25 14.8425 25.1318 14.8069C25.1883 14.7916 25.2545 14.7737 25.3281 14.7626C25.3351 14.7556 25.3425 14.752 25.3502 14.752C25.3695 14.752 25.3884 14.7526 25.407 14.7539C25.4256 14.7526 25.4445 14.752 25.4638 14.752C25.4716 14.752 25.4789 14.7556 25.4859 14.7626ZM22.6337 14.94C22.6337 14.94 22.5908 15.0503 22.6337 15.1591V14.94Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask2_270_67338)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.4652 16.8928C22.4652 16.8928 24.6518 16.6599 25.9357 16.6599C27.2197 16.6599 26.5293 16.7389 27.0228 16.7943C27.5163 16.8497 28.0117 16.8928 28.0117 16.8928V21.2857H22.4652V16.8928Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.9849 16.2727C22.9849 16.2727 22.8062 15.9226 23.5312 15.7973C24.2561 15.6721 24.4804 15.6194 24.7551 15.946C25.0299 16.2727 25.5882 17.6792 25.1717 18.0571C24.7551 18.435 24.4649 18.8327 24.3001 18.6944C24.1353 18.5561 24.4878 18.0571 23.6162 18.0571C22.7447 18.0571 22.4469 18.0571 22.4469 18.0571L22.9849 16.2727Z" fill="#FFDA3A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.6573 16.6123L25.0945 17.0915C25.0945 17.0915 25.2361 18.1583 24.833 18.1583C24.4299 18.1583 24.2582 15.8491 24.2582 15.8491H24.0917L24.6227 18.3886L24.2582 18.6245L25.3745 19.1207L27.267 18.1583L26.6573 16.6123Z" fill="#B35A1F"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.4062 14.9216C24.0176 15.1114 23.49 15.3691 23.1203 15.3691C22.8619 15.3691 22.6997 15.3188 22.6337 15.2181V15.5843C22.6337 15.6602 22.617 15.7503 22.6013 15.835C22.5724 15.9904 22.5469 16.1278 22.6337 16.1278C22.7678 16.1278 23.3682 16.5501 23.3682 17.0365C23.3682 17.3608 23.1234 17.6561 22.6337 17.9225C22.9581 19.0641 23.2622 19.7221 23.5459 19.8965C23.7743 20.0369 23.9204 19.9513 24.0108 19.8791C24.0207 19.8712 24.0297 19.8635 24.0379 19.8565C24.0901 19.8121 24.1117 19.7937 24.1117 19.8965C24.1117 19.906 24.1122 19.9157 24.1138 19.9313C24.144 20.1898 24.4998 20.5334 24.9206 20.6727C25.2051 20.7669 25.1217 20.8391 25.0273 20.921C24.9756 20.9657 24.9206 21.0134 24.9206 21.069C24.9206 21.1684 25.0828 21.1267 25.407 20.9441C25.7313 21.1267 25.8934 21.1684 25.8934 21.069C25.8934 21.0134 25.8384 20.9657 25.7868 20.921C25.6923 20.8391 25.609 20.7669 25.8934 20.6727C26.3142 20.5334 26.6701 20.1898 26.7009 19.9254C26.7019 19.9157 26.7023 19.906 26.7023 19.8965C26.7023 19.7937 26.724 19.8121 26.7786 19.8585C26.7873 19.8658 26.7968 19.8739 26.8071 19.8823C26.8936 19.9513 27.0398 20.0369 27.2681 19.8965C27.5519 19.7221 27.856 19.0641 28.1804 17.9225C27.6907 17.6561 27.4458 17.3608 27.4458 17.0365C27.4458 16.5501 28.0463 16.1278 28.1804 16.1278C28.2671 16.1278 28.2416 15.9904 28.2128 15.835C28.1971 15.7503 28.1804 15.6602 28.1804 15.5843V15.2181C28.2256 15.1491 28.2256 15.0564 28.1804 14.94V15.2181C28.1144 15.3188 27.9522 15.3691 27.6938 15.3691C27.3241 15.3691 26.7964 15.1114 26.4079 14.9216C26.1097 14.776 25.8934 14.6703 25.8934 14.752C25.8934 14.864 25.814 14.8425 25.6822 14.8069C25.6268 14.7918 25.562 14.7743 25.49 14.7632C25.4816 14.7557 25.4729 14.752 25.4638 14.752C25.4445 14.752 25.4256 14.7526 25.407 14.7539C25.3884 14.7526 25.3695 14.752 25.3502 14.752C25.3411 14.752 25.3324 14.7557 25.3241 14.7632C25.252 14.7743 25.1873 14.7918 25.1318 14.8069C25 14.8425 24.9206 14.864 24.9206 14.752C24.9206 14.6703 24.7044 14.776 24.4062 14.9216Z" fill="#FFD129"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M29.9185 11.0427H21.0298V19.6525C21.0298 20.4978 21.3818 20.8292 21.8013 21.2242C21.9258 21.3414 22.0562 21.4642 22.1852 21.6078C22.5609 22.0259 23.6572 22.4581 25.4742 22.9046C25.9717 22.9046 26.7908 22.6322 27.9315 22.0874C29.0722 21.5426 29.7346 20.8577 29.9185 20.0326V11.0427ZM21.8093 20.9395C21.3898 20.5338 21.2391 20.2392 21.2391 19.6525V11.257H29.7092V20.0078C29.5344 20.7493 28.9194 21.3791 27.8431 21.8932C26.7477 22.4163 25.9596 22.6811 25.498 22.69C23.7384 22.2562 22.6742 21.8355 22.3392 21.4627C22.3128 21.4332 22.2856 21.4039 22.2576 21.3745C22.1877 21.301 22.1166 21.2309 22.0245 21.1434C22.0294 21.1481 21.8551 20.9839 21.8093 20.9395Z" fill="black"/>
|
||||
</g>
|
||||
<g clip-path="url(#clip1_270_67338)">
|
||||
<rect width="18" height="14" fill="#2E42A5"/>
|
||||
<path d="M-2.00427 12.9998L1.95668 14.737L18.0899 1.88872L20.1792 -0.69281L15.9435 -1.27343L9.36317 4.26326L4.06667 7.99369L-2.00427 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M-1.46204 14.2169L0.555885 15.225L19.4289 -0.932678H16.5955L-1.46204 14.2169Z" fill="#F50100"/>
|
||||
<path d="M20.0043 12.9998L16.0433 14.737L-0.0898743 1.88872L-2.17919 -0.69281L2.05648 -1.27343L8.63683 4.26326L13.9333 7.99369L20.0043 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M19.8691 13.8733L17.8512 14.8815L9.81489 7.96351L7.43229 7.19059L-2.3802 -0.683947H0.453194L10.2602 7.00368L12.8651 7.9305L19.8691 13.8733Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.98451 0H7.98451V6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.48451 0H11.4845V4.5H18V9.5H11.4845L11.5 14H6.5L6.48451 9.5H0V4.5H6.48451V0ZM7.98451 6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0H7.98451V6Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67338">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_270_67338">
|
||||
<rect width="18" height="14" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
24
Flagpack/BN - Brunei Darussalam.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
56
Flagpack/BO - Bolivia.svg
Normal file
@@ -0,0 +1,56 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67389)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#FECA00"/>
|
||||
<mask id="mask0_270_67389" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67389)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#DB501C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#5EAA22"/>
|
||||
<path d="M12.446 9.95908L12.4824 9.92383L19.702 16.8686L19.6657 16.9038L12.446 9.95908Z" fill="#864C26"/>
|
||||
<path d="M20.2213 16.4173L20.1901 16.4569L11.791 10.2874L11.8222 10.2478L20.2213 16.4173Z" fill="#864C26"/>
|
||||
<path d="M20.3983 15.8017L20.373 15.845L11.03 10.7595L11.0553 10.7161L20.3983 15.8017Z" fill="#A05A2C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6018 9.11224L12.3093 9.58032L12.2698 9.60729C12.2859 9.61656 12.3026 9.62651 12.3197 9.63712C12.3396 9.64946 12.3536 9.66433 12.3618 9.68142C12.3761 9.63916 12.3758 9.58784 12.3605 9.52666L12.3233 9.37762L12.4072 9.50826C12.5405 9.71585 12.5604 9.86438 12.4567 9.94843C12.3554 10.0305 12.196 10.0091 11.9806 9.89077L11.8931 9.84268L11.9929 9.84419C12.075 9.84543 12.1453 9.83575 12.2041 9.81534L12.1633 9.8044C12.1287 9.79513 12.1031 9.77091 12.0857 9.73295L12.0163 9.7803L11.6018 9.11224ZM10.7533 9.64132L11.5314 9.97942L11.4963 10.0137C11.5144 10.0203 11.5333 10.0274 11.5528 10.0352C11.5745 10.0439 11.5909 10.0561 11.6019 10.0715C11.6086 10.0275 11.5993 9.97711 11.5737 9.91964L11.5112 9.77933L11.6165 9.89341C11.7839 10.0747 11.8292 10.2175 11.7417 10.3183C11.6562 10.4167 11.4955 10.4233 11.2628 10.3442L11.1683 10.312L11.2669 10.2962C11.3481 10.2831 11.4158 10.2613 11.4703 10.2309L11.4278 10.2271C11.3915 10.224 11.3617 10.2039 11.3378 10.1685L11.2776 10.2272L10.7533 9.64132ZM10.8046 10.4531L10 10.1841L10.5733 10.7221L10.628 10.6585C10.6551 10.6922 10.6867 10.7099 10.7235 10.7099H10.7662C10.7146 10.745 10.649 10.7727 10.5691 10.7928L10.4723 10.8172L10.5693 10.841C10.8079 10.8995 10.9674 10.8789 11.044 10.7734C11.1224 10.6654 11.0648 10.5271 10.8823 10.3611L10.7674 10.2566L10.8419 10.3909C10.8724 10.4459 10.8861 10.4952 10.8833 10.5396C10.8709 10.5253 10.8536 10.5145 10.8312 10.5078C10.8107 10.5016 10.791 10.496 10.772 10.491L10.8046 10.4531ZM10.7166 10.4776L10.7174 10.4766L10.202 10.3043L10.5693 10.6489L10.5995 10.6138C10.5941 10.6033 10.5889 10.5921 10.5839 10.58L10.5873 10.5787L10.5628 10.5523L10.6614 10.4669L10.6738 10.4691C10.6875 10.4715 10.7018 10.4743 10.7166 10.4776Z" fill="#E7E7E7"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.4713 16.2132L14.306 14.7244L15.4769 15.0397L14.6343 16.3985H14.306V16.5467L13.4713 16.2132Z" fill="#925229"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.1135 10.4886L12.561 11.0628L12.36 14.857L14.3508 15.1472C14.3508 15.1472 13.4833 14.3855 13.3554 13.9155C13.2275 13.4454 13.1867 11.6906 13.4286 11.4238L13.6176 11.5341L13.7696 11.0826" fill="#FFE000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.1892 10.7474C11.1892 10.7474 10.9752 13.71 10.9752 14.2304C10.9752 14.7507 11.417 15.9897 12.424 15.9897C13.431 15.9897 14.8127 15.4353 14.8127 15.2092C14.8127 14.9832 14.4002 14.8212 14.4002 14.8212C14.4002 14.8212 12.5483 14.9478 12.5483 14.2304C12.5483 13.5129 12.6741 11.3892 12.784 11.1388C12.894 10.8884 13.275 10.5108 13.275 10.5108L12.5483 9.9707L12.424 10.5108L11.958 10.3522L11.8158 11.1388L11.1892 10.7474Z" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.7765 11.0761L13.6426 11.4951L13.3721 11.381C13.3721 11.381 12.9677 13.2772 13.3721 14.0715C13.7765 14.8659 14.7948 14.9235 14.7948 14.9235L14.3646 11.4951L13.7765 11.0761Z" fill="#027934"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.7171 13.6382L12.7466 14.4057C12.7466 14.4057 12.4804 14.7872 12.7466 15.076C13.0128 15.3648 13.7507 15.6593 13.9248 15.3107C14.0989 14.962 14.6161 14.5537 14.6161 14.5537L13.7171 13.6382Z" fill="#E8A30C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.4787 10.7425C14.7148 10.5372 14.8332 10.2868 14.7431 10.1831C14.6529 10.0794 14.3884 10.1618 14.1523 10.367C13.9162 10.5723 13.7978 10.8228 13.8879 10.9264C13.9781 11.0301 14.2426 10.9478 14.4787 10.7425Z" fill="#E1E5E8"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.8833 9.30331C13.8833 9.30331 13.7882 9.28385 13.7452 9.27733C13.4383 9.2308 13.2848 9.2934 13.2848 9.46512C13.2848 9.75879 13.4805 10.0759 13.4805 10.2977C13.4805 10.5195 13.49 10.8648 13.584 10.6922C13.6781 10.5195 14.1568 10.0007 14.1568 10.0007L13.8833 9.55058C13.8833 9.55058 14.5621 9.62693 14.2641 9.46512" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9699 15.3782L15.4608 15.3731C15.0828 15.7468 15.048 16.2497 15.3456 16.857C15.3456 16.857 15.4432 16.9982 15.4774 16.985C15.5253 16.9665 15.5919 16.762 15.5919 16.762C15.5692 16.169 15.9472 15.7762 15.9699 15.3782Z" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.3252 15.3936L15.5083 15.3085C15.6887 15.6833 15.5983 16.0714 15.2502 16.4569L15.0988 16.3248C15.2502 15.8827 15.2502 15.6995 15.3252 15.3936Z" fill="#FFE000"/>
|
||||
<path d="M15.0914 15.3816L15.2824 15.3257C15.3742 15.6396 15.3283 15.9634 15.148 16.292L14.9735 16.1963C15.1295 15.9122 15.1677 15.6424 15.0914 15.3816Z" fill="#027934"/>
|
||||
<path d="M19.554 9.95908L19.5176 9.92383L12.298 16.8686L12.3343 16.9038L19.554 9.95908Z" fill="#864C26"/>
|
||||
<path d="M11.7787 16.4173L11.8099 16.4569L20.209 10.2874L20.1778 10.2478L11.7787 16.4173Z" fill="#864C26"/>
|
||||
<path d="M11.6017 15.8017L11.627 15.845L20.97 10.7595L20.9447 10.7161L11.6017 15.8017Z" fill="#A05A2C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.3982 9.11224L19.6907 9.58032L19.7302 9.60729C19.7141 9.61656 19.6974 9.62651 19.6803 9.63712C19.6604 9.64946 19.6464 9.66433 19.6382 9.68142C19.6239 9.63916 19.6242 9.58784 19.6395 9.52666L19.6767 9.37762L19.5928 9.50826C19.4595 9.71585 19.4396 9.86438 19.5433 9.94843C19.6446 10.0305 19.804 10.0091 20.0194 9.89077L20.1069 9.84268L20.0071 9.84419C19.925 9.84543 19.8547 9.83575 19.7959 9.81534L19.8367 9.8044C19.8713 9.79513 19.8969 9.77091 19.9143 9.73295L19.9837 9.7803L20.3982 9.11224ZM21.2467 9.64132L20.4686 9.97942L20.5037 10.0137C20.4856 10.0203 20.4667 10.0274 20.4472 10.0352C20.4255 10.0439 20.4091 10.0561 20.3981 10.0715C20.3914 10.0275 20.4007 9.97711 20.4263 9.91964L20.4888 9.77933L20.3835 9.89341C20.2161 10.0747 20.1708 10.2175 20.2583 10.3183C20.3438 10.4167 20.5045 10.4233 20.7372 10.3442L20.8317 10.312L20.7331 10.2962C20.6519 10.2831 20.5842 10.2613 20.5297 10.2309L20.5722 10.2271C20.6085 10.224 20.6383 10.2039 20.6622 10.1685L20.7224 10.2272L21.2467 9.64132ZM21.1954 10.4531L22 10.1841L21.4267 10.7221L21.372 10.6585C21.3449 10.6922 21.3133 10.7099 21.2765 10.7099H21.2338C21.2854 10.745 21.351 10.7727 21.4309 10.7928L21.5277 10.8172L21.4307 10.841C21.1921 10.8995 21.0326 10.8789 20.956 10.7734C20.8776 10.6654 20.9352 10.5271 21.1177 10.3611L21.2326 10.2566L21.1581 10.3909C21.1276 10.4459 21.1139 10.4952 21.1167 10.5396C21.1291 10.5253 21.1464 10.5145 21.1688 10.5078C21.1893 10.5016 21.209 10.496 21.228 10.491L21.1954 10.4531ZM21.2834 10.4776L21.2826 10.4766L21.798 10.3043L21.4307 10.6489L21.4005 10.6138C21.4059 10.6033 21.4111 10.5921 21.4161 10.58L21.4127 10.5787L21.4372 10.5523L21.3386 10.4669L21.3262 10.4691C21.3125 10.4715 21.2982 10.4743 21.2834 10.4776Z" fill="#E7E7E7"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5287 16.2132L17.694 14.7244L16.5231 15.0397L17.3657 16.3985H17.694V16.5467L18.5287 16.2132Z" fill="#925229"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.8865 10.4886L19.439 11.0628L19.64 14.857L17.6492 15.1472C17.6492 15.1472 18.5167 14.3855 18.6446 13.9155C18.7725 13.4454 18.8133 11.6906 18.5714 11.4238L18.3824 11.5341L18.2304 11.0826" fill="#FFE000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.8108 10.7474C20.8108 10.7474 21.0248 13.71 21.0248 14.2304C21.0248 14.7507 20.583 15.9897 19.576 15.9897C18.569 15.9897 17.1873 15.4353 17.1873 15.2092C17.1873 14.9832 17.5998 14.8212 17.5998 14.8212C17.5998 14.8212 19.4517 14.9478 19.4517 14.2304C19.4517 13.5129 19.3259 11.3892 19.216 11.1388C19.106 10.8884 18.725 10.5108 18.725 10.5108L19.4517 9.9707L19.576 10.5108L20.042 10.3522L20.1842 11.1388L20.8108 10.7474Z" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.2235 11.0762L18.3574 11.4952L18.6279 11.3811C18.6279 11.3811 19.0323 13.2773 18.6279 14.0716C18.2235 14.8659 17.2052 14.9236 17.2052 14.9236L17.6354 11.4952L18.2235 11.0762Z" fill="#027934"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.2829 13.6382L19.2534 14.4057C19.2534 14.4057 19.5196 14.7872 19.2534 15.076C18.9872 15.3648 18.2493 15.6593 18.0752 15.3107C17.9011 14.962 17.3839 14.5537 17.3839 14.5537L18.2829 13.6382Z" fill="#E8A30C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.5213 10.7425C17.2852 10.5372 17.1668 10.2868 17.2569 10.1831C17.3471 10.0794 17.6116 10.1618 17.8477 10.367C18.0838 10.5723 18.2022 10.8228 18.1121 10.9264C18.0219 11.0301 17.7574 10.9478 17.5213 10.7425Z" fill="#E1E5E8"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0301 15.3782L16.5392 15.3731C16.9172 15.7468 16.952 16.2497 16.6544 16.857C16.6544 16.857 16.5568 16.9982 16.5226 16.985C16.4747 16.9665 16.4081 16.762 16.4081 16.762C16.4308 16.169 16.0528 15.7762 16.0301 15.3782Z" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.6748 15.3936L16.4917 15.3085C16.3113 15.6833 16.4017 16.0714 16.7498 16.4569L16.9012 16.3248C16.7498 15.8827 16.7498 15.6995 16.6748 15.3936Z" fill="#FFE000"/>
|
||||
<path d="M16.9086 15.3816L16.7176 15.3257C16.6258 15.6396 16.6717 15.9634 16.852 16.292L17.0265 16.1963C16.8705 15.9122 16.8323 15.6424 16.9086 15.3816Z" fill="#027934"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.5536 12.8209C13.5536 14.2601 14.6163 15.4577 15.9742 15.4577C17.3321 15.4577 18.3948 14.2601 18.3948 12.8209C18.3948 11.3817 17.3321 10.1841 15.9742 10.1841C14.6163 10.1841 13.5536 11.3817 13.5536 12.8209ZM17.8283 12.8209C17.8283 13.9749 16.9982 14.9104 15.9742 14.9104C14.9502 14.9104 14.1201 13.9749 14.1201 12.8209C14.1201 11.6669 14.9502 10.7313 15.9742 10.7313C16.9982 10.7313 17.8283 11.6669 17.8283 12.8209Z" fill="#00A6DE"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9741 12.4478L15.7335 12.944L15.7395 12.396L15.2998 12.7422L15.5513 12.2511L14.9997 12.3787L15.4469 12.0416L14.8926 11.9254L15.4469 11.8091L14.9997 11.4721L15.5513 11.5997L15.2998 11.1086L15.7395 11.4547L15.7335 10.9068L15.9741 11.403L16.2148 10.9068L16.2088 11.4547L16.6485 11.1086L16.3969 11.5997L16.9486 11.4721L16.5013 11.8091L17.0557 11.9254L16.5013 12.0416L16.9486 12.3787L16.3969 12.2511L16.6485 12.7422L16.2088 12.396L16.2148 12.944L15.9741 12.4478Z" fill="#D52C1E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0411 12.9411C14.0411 12.9411 15.491 11.9201 15.8472 11.9201C16.2034 11.9201 17.7229 12.9466 18.0338 13.0863C18.3446 13.2259 18.0338 15.9642 18.0338 15.9642H13.9209L14.0411 12.9411Z" fill="#027934"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0304 11.7258L14.1198 11.7753C14.6083 10.9508 15.23 10.5419 15.9882 10.5419C16.8371 10.5891 17.4729 11.0525 17.8972 11.9384L17.9907 11.8966C17.5511 10.9789 16.883 10.492 15.9911 10.4424C15.1898 10.4424 14.5361 10.8724 14.0304 11.7258ZM13.6704 13.3159L13.8369 13.204L14.0034 13.3159L13.9447 13.1284L14.1063 13.01L13.9035 13.006L13.8369 12.8209L13.7703 13.006L13.5675 13.01L13.7291 13.1284L13.6704 13.3159ZM14.0429 13.9503L13.8764 14.0622L13.9352 13.8746L13.7735 13.7563L13.9763 13.7523L14.0429 13.5672L14.1095 13.7523L14.3123 13.7563L14.1507 13.8746L14.2094 14.0622L14.0429 13.9503ZM14.2884 14.6592L14.4549 14.5473L14.6214 14.6592L14.5627 14.4717L14.7243 14.3533L14.5215 14.3493L14.4549 14.1642L14.3883 14.3493L14.1855 14.3533L14.3472 14.4717L14.2884 14.6592ZM15.073 15.0448L14.9065 15.1567L14.9652 14.9692L14.8036 14.8508L15.0064 14.8468L15.073 14.6617L15.1396 14.8468L15.3424 14.8508L15.1807 14.9692L15.2395 15.1567L15.073 15.0448ZM15.782 15.4055L15.9485 15.2936L16.115 15.4055L16.0563 15.2179L16.2179 15.0995L16.0151 15.0956L15.9485 14.9105L15.8819 15.0956L15.6791 15.0995L15.8407 15.2179L15.782 15.4055ZM18.1116 13.204L18.2781 13.3159L18.2193 13.1284L18.381 13.01L18.1782 13.006L18.1116 12.8209L18.045 13.006L17.8422 13.01L18.0038 13.1284L17.9451 13.3159L18.1116 13.204ZM18.0721 14.0622L17.9056 13.9503L17.7391 14.0622L17.7978 13.8746L17.6362 13.7563L17.839 13.7523L17.9056 13.5672L17.9722 13.7523L18.175 13.7563L18.0133 13.8746L18.0721 14.0622ZM17.4936 14.5473L17.6601 14.6592L17.6013 14.4717L17.763 14.3533L17.5602 14.3493L17.4936 14.1642L17.427 14.3493L17.2242 14.3533L17.3858 14.4717L17.3271 14.6592L17.4936 14.5473ZM17.042 15.1567L16.8755 15.0448L16.709 15.1567L16.7678 14.9692L16.6061 14.8508L16.8089 14.8468L16.8755 14.6617L16.9421 14.8468L17.1449 14.8508L16.9833 14.9692L17.042 15.1567Z" fill="#FFC036"/>
|
||||
<path d="M14.6834 7.00702L14.8821 7.15164C14.3727 7.60873 14.2769 8.11845 14.3745 8.55634C14.4761 9.01255 14.9278 9.49919 15.7491 9.99892L15.4472 10.462C14.5094 9.89134 13.9693 9.36332 13.8292 8.7345C13.685 8.08737 14.0389 7.58523 14.6834 7.00702Z" fill="#036A2D"/>
|
||||
<path d="M17.3866 7.00702L17.1878 7.15164C17.6973 7.60873 17.793 8.11845 17.6955 8.55634C17.5939 9.01255 17.1421 9.49919 16.3208 9.99892L16.6228 10.462C17.5606 9.89134 18.1007 9.36332 18.2408 8.7345C18.3849 8.08737 18.031 7.58523 17.3866 7.00702Z" fill="#036A2D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7751 8.86155C12.7751 8.86155 13.6445 8.26042 14.057 8.26042C14.4696 8.26042 15.0202 8.12273 15.1065 8.43899C15.1928 8.75526 15.356 8.66366 15.6755 8.66366C15.9951 8.66366 16.6229 8.66366 16.6229 8.66366C16.6229 8.66366 16.4354 8.26042 16.783 8.26042C17.1305 8.26042 18.5819 8.46578 19.02 8.66366C19.4581 8.86155 19.4801 8.97853 19.4801 8.97853C19.4801 8.97853 19.0747 8.74457 18.6262 8.86155C18.1776 8.97853 17.3641 9.49359 16.9935 9.49359C16.6229 9.49359 16.3264 9.89173 16.3264 9.89173C16.3264 9.89173 16.3508 9.68765 16.0132 9.78969C15.6755 9.89173 15.6834 10.3724 15.395 10.2842C15.1065 10.1959 15.4781 9.49359 15.395 9.49359C15.3119 9.49359 14.7229 9.26275 14.7229 9.26275C14.7229 9.26275 14.1514 8.74457 13.3028 8.86155C12.4542 8.97853 12.7751 8.86155 12.7751 8.86155Z" fill="#452C24"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.8713 9.2886C16.0419 9.2886 16.1803 9.16609 16.1803 9.01496C16.1803 8.86384 16.0419 8.74133 15.8713 8.74133C15.7006 8.74133 15.5623 8.86384 15.5623 9.01496C15.5623 9.16609 15.7006 9.2886 15.8713 9.2886Z" fill="#E7E7E7"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2037 9.00719C15.2037 9.00719 15.3036 8.81824 15.5017 8.81824C15.6998 8.81824 16.0711 8.81824 16.0711 8.91272C16.0711 9.00719 16.1009 9.13061 15.8013 9.13061C15.5017 9.13061 15.6937 9.00719 15.5017 9.00719C15.3097 9.00719 15.2037 9.00719 15.2037 9.00719Z" fill="#E8A30C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.7363 10.2834C18.8514 10.1628 18.9158 9.87043 18.9158 9.87043C18.9158 9.87043 18.4016 9.95273 18.2819 9.87043C18.1622 9.78813 18.1001 9.54694 18.1001 9.54694C18.1001 9.54694 17.6369 9.75861 17.8135 9.75861C17.9902 9.75861 18.1001 9.91516 18.1001 9.91516L18.4596 10.0476C18.4596 10.0476 18.2209 10.2834 18.3403 10.2834C18.4596 10.2834 18.6212 10.404 18.7363 10.2834Z" fill="#E1E5E8"/>
|
||||
<path d="M17.8307 10.3838L17.766 10.3065L18.2177 9.95294L18.2824 10.0303L17.8307 10.3838Z" fill="#925229"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67389">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
19
Flagpack/BQ-BO - Bonaire.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67331)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 10.9333V0H16L0 10.9333Z" fill="#FEDA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 24H32.009V0L0 24Z" fill="#00268D"/>
|
||||
<mask id="path-4-inside-1_270_67331" fill="white">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.35333 5L9.88021 6.13122C12.026 6.38728 13.6976 8.18766 13.752 10.3893L14.7067 10.8667L13.6636 11.3882C13.29 13.2109 11.7892 14.6229 9.92151 14.8637L9.35333 16L8.78516 14.8637C6.91744 14.6229 5.41664 13.2109 5.04302 11.3882L4 10.8667L4.9547 10.3893C5.00875 8.19991 6.66211 6.40732 8.79069 6.13564L9.35333 5Z"/>
|
||||
</mask>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.35333 5L9.88021 6.13122C12.026 6.38728 13.6976 8.18766 13.752 10.3893L14.7067 10.8667L13.6636 11.3882C13.29 13.2109 11.7892 14.6229 9.92151 14.8637L9.35333 16L8.78516 14.8637C6.91744 14.6229 5.41664 13.2109 5.04302 11.3882L4 10.8667L4.9547 10.3893C5.00875 8.19991 6.66211 6.40732 8.79069 6.13564L9.35333 5Z" fill="white"/>
|
||||
<path d="M9.88021 6.13122L9.16226 6.46561L9.34846 6.86538L9.78637 6.91764L9.88021 6.13122ZM9.35333 5L10.0713 4.66561L9.37538 3.17149L8.64366 4.6484L9.35333 5ZM13.752 10.3893L12.9602 10.4089L12.972 10.8848L13.3978 11.0977L13.752 10.3893ZM14.7067 10.8667L15.0609 11.5751L16.4776 10.8667L15.0609 10.1583L14.7067 10.8667ZM13.6636 11.3882L13.3095 10.6798L12.9651 10.852L12.8878 11.2291L13.6636 11.3882ZM9.92151 14.8637L9.82024 14.0782L9.4018 14.1321L9.21312 14.5095L9.92151 14.8637ZM9.35333 16L8.64495 16.3542L9.35333 17.771L10.0617 16.3542L9.35333 16ZM8.78516 14.8637L9.49355 14.5095L9.30487 14.1321L8.88643 14.0782L8.78516 14.8637ZM5.04302 11.3882L5.81889 11.2291L5.74158 10.852L5.39721 10.6798L5.04302 11.3882ZM4 10.8667L3.64581 10.1583L2.22903 10.8667L3.64581 11.5751L4 10.8667ZM4.9547 10.3893L5.30889 11.0977L5.73471 10.8848L5.74646 10.4089L4.9547 10.3893ZM8.79069 6.13564L8.89097 6.92126L9.31196 6.86753L9.50037 6.48724L8.79069 6.13564ZM10.5982 5.79683L10.0713 4.66561L8.63539 5.33439L9.16226 6.46561L10.5982 5.79683ZM14.5437 10.3698C14.4796 7.77083 12.507 5.64707 9.97405 5.3448L9.78637 6.91764C11.545 7.1275 12.9157 8.60448 12.9602 10.4089L14.5437 10.3698ZM15.0609 10.1583L14.1062 9.68093L13.3978 11.0977L14.3525 11.5751L15.0609 10.1583ZM14.0178 12.0966L15.0609 11.5751L14.3525 10.1583L13.3095 10.6798L14.0178 12.0966ZM10.0228 15.6492C12.2285 15.3648 13.9984 13.6991 14.4395 11.5472L12.8878 11.2291C12.5816 12.7228 11.3499 13.8809 9.82024 14.0782L10.0228 15.6492ZM9.21312 14.5095L8.64495 15.6458L10.0617 16.3542L10.6299 15.2178L9.21312 14.5095ZM10.0617 15.6458L9.49355 14.5095L8.07677 15.2178L8.64495 16.3542L10.0617 15.6458ZM4.26715 11.5472C4.70822 13.6991 6.47813 15.3648 8.68389 15.6492L8.88643 14.0782C7.35675 13.8809 6.12506 12.7228 5.81889 11.2291L4.26715 11.5472ZM3.64581 11.5751L4.68882 12.0966L5.39721 10.6798L4.35419 10.1583L3.64581 11.5751ZM4.6005 9.68093L3.64581 10.1583L4.35419 11.5751L5.30889 11.0977L4.6005 9.68093ZM8.69042 5.35001C6.17777 5.67072 4.22675 7.78525 4.16294 10.3698L5.74646 10.4089C5.79076 8.61457 7.14645 7.14393 8.89097 6.92126L8.69042 5.35001ZM8.64366 4.6484L8.08102 5.78403L9.50037 6.48724L10.063 5.3516L8.64366 4.6484Z" fill="black" mask="url(#path-4-inside-1_270_67331)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.37578 8.29999L8.72675 9.38905H7.44666L8.08496 10.5332L7.44666 11.6307H8.72675L9.37578 12.7505L10.0347 11.6307H11.3033L10.6806 10.5332L11.3033 9.38905H10.0347L9.37578 8.29999Z" fill="#F00A17"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67331">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
16
Flagpack/BQ-SA - Saba.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67332)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 11.664V0H16L0 11.664Z" fill="#F00000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32 11.664V0H16L32 11.664Z" fill="#F00000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 11.664V24H16L0 11.664Z" fill="#00268D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32 11.664V24.336L16 24L32 11.664Z" fill="#00268D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.714 14.2563L12.1965 16.7633L13.4873 12.622L10 10.087H14.3446L15.714 6L17.1655 10.087H21.3918L17.9349 12.622L19.2489 16.7633L15.714 14.2563Z" fill="#FEDA00"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67332">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 966 B |
16
Flagpack/BQ-SE - Sint Eustatius.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67564)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#00268D"/>
|
||||
<path d="M1 1H31V23H1V1Z" fill="#00268D" stroke="#E31D1C" stroke-width="2"/>
|
||||
<rect x="15" width="2" height="24" fill="#E31D1C"/>
|
||||
<rect y="13" width="2" height="32" transform="rotate(-90 0 13)" fill="#E31D1C"/>
|
||||
<path d="M11.6088 16C11.8778 16 25 16 25 16L23.5841 14.7239C23.5841 14.7239 20.7528 12.2005 20.5706 12.0849C20.3884 11.9692 20.0874 11.9193 19.7449 12.2869C19.4023 12.6544 19.2059 12.0849 18.9207 12.0849C18.6355 12.0849 18.5149 12.0849 18.1011 12.5565C17.6874 13.028 16.1973 14.7239 16.1973 14.7239H14.0075C14.0075 14.7239 13.6381 14.4453 13.4276 14.5447C13.2171 14.6441 12.0312 13.4452 11.6088 13.3557C11.1864 13.2661 10.9085 13.6806 10.9085 14.0105C10.9085 14.3404 10.7098 13.7082 10.3056 13.8938C9.90147 14.0794 10.0318 14.5447 10.0318 14.5447C10.0318 14.5447 11.3398 16 11.6088 16Z" fill="#059334"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.5048 11.3012L14.5785 12L14.9184 10.8457L14 10.1391H15.1441L15.5048 9L15.887 10.1391H17L16.0896 10.8457L16.4357 12L15.5048 11.3012Z" fill="#FEDA00"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67564">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
48
Flagpack/BR - Brazil.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67334)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#009933"/>
|
||||
<mask id="mask0_270_67334" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67334)">
|
||||
<g filter="url(#filter0_d_270_67334)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9268 3.70404L28.1286 12.2075L15.7608 20.1713L3.80893 12.0427L15.9268 3.70404Z" fill="#FFD221"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9268 3.70404L28.1286 12.2075L15.7608 20.1713L3.80893 12.0427L15.9268 3.70404Z" fill="url(#paint0_linear_270_67334)"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 17.2C18.7614 17.2 21 14.9614 21 12.2C21 9.43859 18.7614 7.20001 16 7.20001C13.2386 7.20001 11 9.43859 11 12.2C11 14.9614 13.2386 17.2 16 17.2Z" fill="#2E42A5"/>
|
||||
<mask id="mask1_270_67334" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="11" y="7" width="10" height="11">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 17.2C18.7614 17.2 21 14.9614 21 12.2C21 9.43859 18.7614 7.20001 16 7.20001C13.2386 7.20001 11 9.43859 11 12.2C11 14.9614 13.2386 17.2 16 17.2Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask1_270_67334)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.38 14.57L14.1566 14.6874L14.1993 14.4387L14.0186 14.2626L14.2683 14.2263L14.38 14L14.4917 14.2263L14.7414 14.2626L14.5607 14.4387L14.6034 14.6874L14.38 14.57Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.38 14.57L16.1566 14.6874L16.1993 14.4387L16.0186 14.2626L16.2683 14.2263L16.38 14L16.4917 14.2263L16.7414 14.2626L16.5607 14.4387L16.6034 14.6874L16.38 14.57Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.38 15.77L16.1566 15.8874L16.1993 15.6387L16.0186 15.4626L16.2683 15.4263L16.38 15.2L16.4917 15.4263L16.7414 15.4626L16.5607 15.6387L16.6034 15.8874L16.38 15.77Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.38 11.57L15.1566 11.6874L15.1993 11.4387L15.0186 11.2626L15.2683 11.2263L15.38 11L15.4917 11.2263L15.7414 11.2626L15.5607 11.4387L15.6034 11.6874L15.38 11.57Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.38 13.57L15.1566 13.6874L15.1993 13.4387L15.0186 13.2626L15.2683 13.2263L15.38 13L15.4917 13.2263L15.7414 13.2626L15.5607 13.4387L15.6034 13.6874L15.38 13.57Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.98 12.57L13.7566 12.6874L13.7993 12.4387L13.6186 12.2626L13.8683 12.2263L13.98 12L14.0917 12.2263L14.3414 12.2626L14.1607 12.4387L14.2033 12.6874L13.98 12.57Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.58 13.37L12.3566 13.4874L12.3993 13.2387L12.2185 13.0626L12.4683 13.0263L12.58 12.8L12.6916 13.0263L12.9414 13.0626L12.7607 13.2387L12.8033 13.4874L12.58 13.37Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.18 9.97002L16.9567 10.0875L16.9993 9.83874L16.8186 9.6626L17.0684 9.62631L17.18 9.40002L17.2917 9.62631L17.5415 9.6626L17.3607 9.83874L17.4034 10.0875L17.18 9.97002Z" fill="#F7FCFF"/>
|
||||
<path d="M9.9248 10.9971L10.0752 9.00281C14.8731 9.36459 18.66 10.9422 21.3882 13.7484L19.9542 15.1425C17.5896 12.7103 14.2624 11.3242 9.9248 10.9971Z" fill="#F7FCFF"/>
|
||||
<path d="M12.2894 10.6028L12.3409 10.1055C15.4339 10.4259 18.0868 11.6105 20.2917 13.657L19.9516 14.0234C17.8269 12.0515 15.2755 10.9121 12.2894 10.6028Z" fill="#009933"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<filter id="filter0_d_270_67334" x="3.80896" y="3.70404" width="24.3197" height="16.4672" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0.0313726 0 0 0 0 0.368627 0 0 0 0 0 0 0 0 0.28 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_270_67334"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_270_67334" result="shape"/>
|
||||
</filter>
|
||||
<linearGradient id="paint0_linear_270_67334" x1="32" y1="24" x2="32" y2="0" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFC600"/>
|
||||
<stop offset="1" stop-color="#FFDE42"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_270_67334">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
14
Flagpack/BS - Bahamas.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67335)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#3CB1CF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 16V24H32V16H0Z" fill="#3CB1CF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0L16 12L0 24V0Z" fill="#272727"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67335">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 629 B |
27
Flagpack/BT - Bhutan.svg
Normal file
|
After Width: | Height: | Size: 172 KiB |
17
Flagpack/BV - Bouvet Island.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67337)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#E31D1C"/>
|
||||
<mask id="mask0_270_67337" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67337)">
|
||||
<path d="M10 -1H9V0V9H0H-1V10V14V15H0H9V24V25H10H14H15V24V15H32H33V14V10V9H32H15V0V-1H14H10Z" fill="#2E42A5" stroke="#F7FCFF" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67337">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 766 B |
18
Flagpack/BW - Botswana.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67339)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#42ADDF"/>
|
||||
<mask id="mask0_270_67339" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67339)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V8H32V0H0Z" fill="#58A5FF"/>
|
||||
<path d="M0 9H-1V10V14V15H0H32H33V14V10V9H32H0Z" fill="#272727" stroke="#F7FCFF" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67339">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 803 B |
40
Flagpack/BY - Belarus.svg
Normal file
@@ -0,0 +1,40 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67340)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#73BE4A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V16H32V0H0Z" fill="#AF0100"/>
|
||||
<rect width="6" height="24" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.444214 2.23605L1.89684 0.0568237L3.31207 2.23599L1.8968 4.31536L0.444214 2.23605ZM1.89149 3.42535L2.70566 2.22914L1.89145 0.975423L1.05579 2.22908L1.89149 3.42535ZM2 2.06451H1.75V2.58064H2V2.06451Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.13706 4.18585L0.444214 5.17654L1.13704 6.1218L1.81207 5.17651L1.13706 4.18585ZM1.46111 5.19333L1.14893 5.61712L0.832999 5.16805L1.14809 4.70299L1.46111 5.19333Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.63706 4.18585L1.94421 5.17654L2.63704 6.1218L3.31207 5.17651L2.63706 4.18585ZM2.96111 5.19333L2.64893 5.61712L2.333 5.16805L2.64809 4.70299L2.96111 5.19333Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.63706 4.18585L2.94421 5.17654L3.63704 6.1218L4.31207 5.17651L3.63706 4.18585ZM3.96111 5.19333L3.64893 5.61712L3.333 5.16805L3.64809 4.70299L3.96111 5.19333Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.13706 4.18585L4.44421 5.17654L5.13704 6.1218L5.81207 5.17651L5.13706 4.18585ZM5.46111 5.19333L5.14893 5.61712L4.833 5.16805L5.14809 4.70299L5.46111 5.19333Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.94421 2.23605L4.39684 0.0568237L5.81207 2.23599L4.3968 4.31536L2.94421 2.23605ZM4.39149 3.42535L5.20566 2.22914L4.39145 0.975423L3.55579 2.22908L4.39149 3.42535ZM4.5 2.06451H4.25V2.58064H4.5V2.06451Z" fill="#B20000"/>
|
||||
<path d="M1.65615 12.4061L0.0369873 9.68705L0.462947 9.41676L1.63673 11.3879L3.06895 8.75592L4.53676 11.3942L5.57384 9.67285L5.99843 9.94543L4.51967 12.3998L3.07377 9.80095L1.65615 12.4061Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 0.516113H1.01882V1.03224H0.75V0.516113Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3 0H3.26882V0.516129H3V0Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.25 0.516113H5.51882V1.03224H5.25V0.516113Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 3.61292H1V4.12904H0.75V3.61292ZM3 3.61292H3.25V4.12904H3V3.61292ZM5.5 3.61292H5.25V4.12904H5.5V3.61292Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 6.19354H1V6.70967H0.75V6.19354ZM3 6.19354H3.25V6.70967H3V6.19354ZM5.5 6.19354H5.25V6.70967H5.5V6.19354Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.2082 8.95476L1.544 9.92298L0.496338 8.03608L1.8761 5.88025L3.06266 7.75944L4.24923 5.88025L5.62899 8.03608L4.58133 9.92298L3.91713 8.95476L4.44153 7.86449L4.24923 7.4215L3.12899 9.23859V9.45376L3.06266 9.34618L2.99634 9.45376V9.23859L1.8761 7.4215L1.6838 7.86449L2.2082 8.95476Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3 10.5806H3.25V11.0968H3V10.5806ZM3 13.1613H3.25V13.6774H3V13.1613ZM3 11.3548H2.75V11.8709H3V12.129H2.75V12.6451H3V12.3871H3.25V12.6451H3.5V12.129H3.25V11.8709H3.5V11.3548H3.25V11.8709H3V11.3548ZM2.25 11.8709H2.5V12.3871H2.25V11.8709ZM4 11.8709H3.75V12.3871H4V11.8709ZM0.5 11.8709H0.75V12.3871H0.5V11.8709ZM5.75 11.8709H5.5V12.3871H5.75V11.8709Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.444214 21.7639L1.89684 23.9432L3.31207 21.764L1.8968 19.6846L0.444214 21.7639ZM1.89149 20.5747L2.70566 21.7709L1.89145 23.0246L1.05579 21.7709L1.89149 20.5747ZM2 21.9355H1.75V21.4194H2V21.9355Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.13706 19.8141L0.444214 18.8235L1.13704 17.8782L1.81207 18.8235L1.13706 19.8141ZM1.46111 18.8067L1.14893 18.3829L0.832999 18.8319L1.14809 19.297L1.46111 18.8067Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.63706 19.8141L1.94421 18.8235L2.63704 17.8782L3.31207 18.8235L2.63706 19.8141ZM2.96111 18.8067L2.64893 18.3829L2.333 18.8319L2.64809 19.297L2.96111 18.8067Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.63706 19.8141L2.94421 18.8235L3.63704 17.8782L4.31207 18.8235L3.63706 19.8141ZM3.96111 18.8067L3.64893 18.3829L3.333 18.8319L3.64809 19.297L3.96111 18.8067Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.13706 19.8141L4.44421 18.8235L5.13704 17.8782L5.81207 18.8235L5.13706 19.8141ZM5.46111 18.8067L5.14893 18.3829L4.833 18.8319L5.14809 19.297L5.46111 18.8067Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.94421 21.7639L4.39684 23.9432L5.81207 21.764L4.3968 19.6846L2.94421 21.7639ZM4.39149 20.5747L5.20566 21.7709L4.39145 23.0246L3.55579 21.7709L4.39149 20.5747ZM4.5 21.9355H4.25V21.4194H4.5V21.9355Z" fill="#B20000"/>
|
||||
<path d="M1.65615 11.5939L0.0369873 14.313L0.462947 14.5832L1.63673 12.6121L3.06895 15.2441L4.53676 12.6058L5.57384 14.3271L5.99843 14.0546L4.51967 11.6002L3.07377 14.1991L1.65615 11.5939Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 23.4839H1.01882V22.9678H0.75V23.4839Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M3 24H3.26882V23.4839H3V24Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.25 23.4839H5.51882V22.9678H5.25V23.4839Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 20.3871H1V19.871H0.75V20.3871ZM3 20.3871H3.25V19.871H3V20.3871ZM5.5 20.3871H5.25V19.871H5.5V20.3871Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.75 17.8065H1V17.2903H0.75V17.8065ZM3 17.8065H3.25V17.2903H3V17.8065ZM5.5 17.8065H5.25V17.2903H5.5V17.8065Z" fill="#B20000"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.2082 15.1928L1.544 14.2246L0.496338 16.1115L1.8761 18.2673L3.06266 16.3881L4.24923 18.2673L5.62899 16.1115L4.58133 14.2246L3.91713 15.1928L4.44153 16.2831L4.24923 16.7261L3.12899 14.909V14.6938L3.06266 14.8014L2.99634 14.6938V14.909L1.8761 16.7261L1.6838 16.2831L2.2082 15.1928Z" fill="#B20000"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67340">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.1 KiB |
60
Flagpack/BZ - Belize.svg
Normal file
|
After Width: | Height: | Size: 41 KiB |
14
Flagpack/CA - Canada.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67341)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 0H24V24H8V0Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9764 7L16 19H15.4005L15.7683 16.0303C13.0782 16.5144 11.8443 16.6343 12.0667 16.3902C12.2891 16.146 12.4644 15.8 12.5925 15.3521L9 12.9553C9.37779 12.9506 9.72035 12.8568 10.0277 12.674C10.335 12.4912 10.1814 11.8578 9.56668 10.7737L11.3805 11.0376L12.0667 10.2918L13.4352 11.7241H14.0503L13.4352 8.44343L14.5378 9.05932L15.9764 7ZM15.9764 7L17.4622 9.05932L18.5648 8.44343L17.9497 11.7241H18.5648L19.9333 10.2918L20.6195 11.0376L22.4333 10.7737C21.8186 11.8578 21.665 12.4912 21.9723 12.674C22.2796 12.8568 22.6222 12.9506 23 12.9553L19.4075 15.3521C19.5356 15.8 19.7109 16.146 19.9333 16.3902C20.1557 16.6343 18.9218 16.5144 16.2317 16.0303L16.5995 19H16L15.9764 7Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 0H32V24H24V0Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H8V24H0V0Z" fill="#E31D1C"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67341">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
19
Flagpack/CC - Cocos (Keeling) Islands.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67426)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#5EAA22"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 7L23 7.73205L23.134 6.5L22 6L23.134 5.5L23 4.26795L24 5L25 4.26795L24.866 5.5L26 6L24.866 6.5L25 7.73205L24 7Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.9628 13.6786L21.9628 14.4107L22.0967 13.1786L20.9628 12.6786L22.0967 12.1786L21.9628 10.9466L22.9628 11.6786L23.9628 10.9466L23.8288 12.1786L24.9628 12.6786L23.8288 13.1786L23.9628 14.4107L22.9628 13.6786Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M26 19L25 19.7321L25.134 18.5L24 18L25.134 17.5L25 16.2679L26 17L27 16.2679L26.866 17.5L28 18L26.866 18.5L27 19.7321L26 19Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M27 9.5L26.5 9.86603L26.567 9.25L26 9L26.567 8.75L26.5 8.13397L27 8.5L27.5 8.13397L27.433 8.75L28 9L27.433 9.25L27.5 9.86603L27 9.5Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7 14C9.76142 14 12 11.7614 12 9C12 6.23858 9.76142 4 7 4C4.23858 4 2 6.23858 2 9C2 11.7614 4.23858 14 7 14Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.8977 14.945C19.2396 16.0745 18.1936 16.5872 16.7936 16.5872C14.6984 16.5872 13 14.8887 13 12.7936C13 10.6984 14.6984 9 16.7936 9C18.3921 9 19.6676 9.55928 20.2527 11.0826C19.7895 10.6232 19.0725 10.3081 18 10.3481C16.3431 10.3481 15.2653 11.6389 15.2653 12.7434C15.2653 13.848 16.3431 15.3495 18 15.3495C18.8333 15.337 19.4489 15.1846 19.8977 14.945Z" fill="#FECA00"/>
|
||||
<path d="M7.58247 8.6937C7.58247 8.6937 6.60483 12.2746 6.20116 12.6135C6.02247 12.6923 7.81981 12.6135 7.81981 12.6135C7.81981 12.6135 7.14604 12.3187 7.38338 11.9263C7.62072 11.534 7.93076 9.00954 7.81981 8.14967C7.70886 7.2898 7.58247 8.6937 7.58247 8.6937Z" fill="#915E2B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.79047 8.82665C7.79047 8.82665 8.8388 9.14147 8.8388 9.67717C8.8388 10.2129 9.71091 10.9658 9.71091 10.2528C9.71091 9.53971 9.54776 8.82665 9.19328 8.82665C8.8388 8.82665 9.36666 8.34726 9.66981 8.74537C9.97295 9.14348 11.0359 8.70793 10.82 8.42854C10.6041 8.14915 9.83772 7.80099 9.71091 7.80099C9.58409 7.80099 10.583 7.12043 9.71091 7.12043C8.8388 7.12043 9.33895 7.70175 8.74793 7.08458C8.15692 6.46741 8.99955 7.38584 8.99955 6.34943C8.99955 5.31301 8.76046 4.88954 7.97103 5.4713C7.18159 6.05306 7.33295 5.68408 7.05198 5.46473C6.771 5.24538 6.52442 6.26781 6.83363 6.47653C7.14284 6.68524 7.48562 7.20253 7.17641 7.20253C6.8672 7.20253 6.64889 6.90402 6.64889 6.69028C6.64889 6.47653 5.80751 6.099 5.00894 6.099C4.21037 6.099 4.72705 6.69028 5.00894 6.69028C5.29083 6.69028 6.55317 7.12043 5.922 7.12043C5.29083 7.12043 5.97075 6.80217 5.17517 6.80217C4.3796 6.80217 3.45479 6.43988 3.45479 7.12043C3.45479 7.80099 4.24974 8.10248 4.49808 7.80099C4.74642 7.4995 5.03353 6.99124 5.03353 7.49867C5.03353 8.0061 4.40076 7.79893 3.45479 8.11373C2.50882 8.42854 2.78028 9.25849 3.90876 9.0558C5.03725 8.85311 4.91515 8.86415 5.36821 8.54934C5.82127 8.23454 6.38199 8.3223 5.922 8.82665C5.462 9.331 5.00201 10.2528 5.462 10.2528C5.922 10.2528 6.21853 10.3782 6.21853 9.89092C6.21853 9.40365 6.48555 8.45499 6.48555 9.0558C6.48555 9.6566 6.83363 10.1095 7.14284 9.89092C7.45205 9.67238 7.07083 8.98857 7.42382 8.98857C7.7768 8.98857 7.79047 8.82665 7.79047 8.82665Z" fill="#5EAA22"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67426">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
18
Flagpack/CD - Democratic Republic of the Congo.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67445)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#3195F9"/>
|
||||
<mask id="mask0_270_67445" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67445)">
|
||||
<path d="M-1.82168 25.4392L-1.12772 26.4789L-0.0880487 25.7849L36.1729 1.58147L37.2126 0.887505L36.5186 -0.152167L34.2979 -3.47912L33.604 -4.51879L32.5643 -3.82483L-3.69665 20.3786L-4.73632 21.0726L-4.04236 22.1123L-1.82168 25.4392Z" fill="#E31D1C" stroke="#FECA00" stroke-width="2.5"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.93065 8.60629L1.44503 11.024L2.55881 6.88304L0 4.23781L3.46478 4.09478L4.93065 0L6.39653 4.09478H9.85541L7.3025 6.88304L8.58104 10.7796L4.93065 8.60629Z" fill="#FECA00"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67445">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
16
Flagpack/CF - Central African Republic.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67542)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V6H0V0Z" fill="#3D58DB"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 6H32V12H0V6Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 12H32V18H0V12Z" fill="#73BE4A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 18H32V24H0V18Z" fill="#FFD018"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5294 5.41612L2.10486 7.09783L2.87959 4.21747L1.09973 2.37749L3.50977 2.278L4.5294 -0.570251L5.54904 2.278H7.95498L6.17921 4.21747L7.06854 6.92782L4.5294 5.41612Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0H20V24H12V0Z" fill="#E11C1B"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67542">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 945 B |
18
Flagpack/CG - Republic of the Congo.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67344)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32 0V24H0L32 0Z" fill="#FA1111"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 24V0H32L0 24Z" fill="#07A907"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M29.4918 -5.79999L-1 23.5761L5.05163 26.588L34.6407 -0.211975L29.4918 -5.79999Z" fill="#FBCD17"/>
|
||||
<mask id="mask0_270_67344" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-1" y="-6" width="36" height="33">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M29.4918 -5.79999L-1 23.5761L5.05163 26.588L34.6407 -0.211975L29.4918 -5.79999Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67344)">
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67344">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 919 B |
17
Flagpack/CH - Switzerland.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67345)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#E31D1C"/>
|
||||
<mask id="mask0_270_67345" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67345)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 6H14V10H10V14H14V18H18V14H22V10H18V6Z" fill="#F1F9FF"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67345">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 730 B |
13
Flagpack/CI - Côte d'Ivoire (Ivory Coast).svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67346)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 0H32V24H22V0Z" fill="#67BD38"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H10V24H0V0Z" fill="#E47E00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H22V24H10V0Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67346">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 546 B |
24
Flagpack/CK - Cook Islands.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67347)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<g clip-path="url(#clip1_270_67347)">
|
||||
<rect width="18" height="14" fill="#2E42A5"/>
|
||||
<path d="M-2.00427 12.9998L1.95668 14.737L18.0899 1.88872L20.1792 -0.69281L15.9435 -1.27343L9.36317 4.26326L4.06667 7.99369L-2.00427 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M-1.46204 14.2169L0.555885 15.225L19.4289 -0.932678H16.5955L-1.46204 14.2169Z" fill="#F50100"/>
|
||||
<path d="M20.0043 12.9998L16.0433 14.737L-0.0898743 1.88872L-2.17919 -0.69281L2.05648 -1.27343L8.63683 4.26326L13.9333 7.99369L20.0043 12.9998Z" fill="#F7FCFF"/>
|
||||
<path d="M19.8691 13.8733L17.8512 14.8815L9.81489 7.96351L7.43229 7.19059L-2.3802 -0.683947H0.453194L10.2602 7.00368L12.8651 7.9305L19.8691 13.8733Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.98451 0H7.98451V6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0Z" fill="#F50100"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.48451 0H11.4845V4.5H18V9.5H11.4845L11.5 14H6.5L6.48451 9.5H0V4.5H6.48451V0ZM7.98451 6H0V8H7.98451V14H9.98451V8H18V6H9.98451V0H7.98451V6Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.667 13.8551L24.3929 13.3462L25.0953 13.8551L24.8769 12.9495L25.4409 12.3755H24.7231L24.3919 11.6365L24.1095 12.3755H23.2674L23.9121 12.9495L23.667 13.8551ZM26.4798 15.1134L27.2057 14.6045L27.908 15.1134L27.6897 14.2078L28.2537 13.6339H27.5358L27.2047 12.8948L26.9222 13.6339H26.0801L26.7249 14.2078L26.4798 15.1134ZM28.0447 16.9854L27.3189 17.4943L27.5639 16.5887L26.9192 16.0148H27.7613L28.0437 15.2757L28.3749 16.0148H29.0928L28.5287 16.5887L28.7471 17.4943L28.0447 16.9854ZM26.3221 19.7692L27.048 19.2603L27.7503 19.7692L27.532 18.8636L28.096 18.2897H27.3781L27.047 17.5506L26.7645 18.2897H25.9225L26.5672 18.8636L26.3221 19.7692ZM24.4997 20.5064L23.7739 21.0153L24.0189 20.1097L23.3742 19.5358H24.2163L24.4987 18.7967L24.8299 19.5358H25.5478L24.9837 20.1097L25.2021 21.0153L24.4997 20.5064ZM21.4001 19.8087L22.126 19.2998L22.8284 19.8087L22.61 18.9031L23.174 18.3292H22.4562L22.125 17.5901L21.8426 18.3292H21.0005L21.6452 18.9031L21.4001 19.8087ZM20.8597 17.0019L20.1338 17.5108L20.3788 16.6052L19.7341 16.0312H20.5762L20.8586 15.2922L21.1898 16.0312H21.9077L21.3436 16.6052L21.562 17.5108L20.8597 17.0019ZM21.047 15.1598L21.7728 14.6509L22.4752 15.1598L22.2568 14.2542L22.8209 13.6803H22.103L21.7718 12.9412L21.4894 13.6803H20.6473L21.292 14.2542L21.047 15.1598Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67347">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_270_67347">
|
||||
<rect width="18" height="14" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
14
Flagpack/CL - Chile.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67348)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H14V14H0V0Z" fill="#3D58DB"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 -2H32V14H14V-2Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 14H32V24H0V14Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.0144 9.78332L3.21073 12.0548L5.08789 8.18995L1.76379 5.67975L5.60128 5.63865L7.04897 2.21143L7.98109 5.63865L11.6133 5.65578L8.8507 8.11094L10.2853 12.0548L7.0144 9.78332Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67348">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 790 B |
14
Flagpack/CM - Cameroon.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67405)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0H22V24H10V0Z" fill="#E11C1B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0754 14.4904L12.5898 16.9081L13.7036 12.7671L11.1448 10.1219L14.6096 9.97887L16.0754 5.88409L17.5413 9.97887H21.0002L18.4473 12.7671L19.7258 16.6637L16.0754 14.4904Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 0H32V24H22V0Z" fill="#FBCD17"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H10V24H0V0Z" fill="#0B9E7A"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67405">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 783 B |
16
Flagpack/CN - China.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67349)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#E31D1C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.0157 4.54832L14.0056 5.15815L14.236 3.96812L13.3948 3.0775L14.5338 3.02935L15.0157 1.91815L15.4977 3.02935H16.6348L15.7955 3.96812L16.0482 5.15815L15.0157 4.54832Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.01754 9.60722L4.1367 11.1582L4.7938 8.13166L2.39478 5.86662L5.6432 5.74415L7.01754 2.91815L8.39188 5.74415H11.6348L9.24127 8.13166L9.96186 11.1582L7.01754 9.60722Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0157 8.54832L16.0056 9.15815L16.236 7.96812L15.3948 7.0775L16.5338 7.02935L17.0157 5.91815L17.4977 7.02935H18.6348L17.7955 7.96812L18.0482 9.15815L17.0157 8.54832Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0157 12.5483L15.0056 13.1582L15.236 11.9681L14.3948 11.0775L15.5338 11.0293L16.0157 9.91815L16.4977 11.0293H17.6348L16.7955 11.9681L17.0482 13.1582L16.0157 12.5483Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.0157 15.5483L12.0056 16.1582L12.236 14.9681L11.3948 14.0775L12.5338 14.0293L13.0157 12.9182L13.4977 14.0293H14.6348L13.7955 14.9681L14.0482 16.1582L13.0157 15.5483Z" fill="#FECA00"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67349">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
18
Flagpack/CO - Colombia.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67350)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<mask id="mask0_270_67350" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67350)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V12H32V0H0Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 18V24H32V18H0Z" fill="#E31D1C"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67350">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 789 B |
17
Flagpack/CR - Costa Rica.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67351)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<mask id="mask0_270_67351" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67351)">
|
||||
<path d="M0 8H-2V10V14V16H0H32H34V14V10V8H32H0Z" fill="#E31D1C" stroke="#F7FCFF" stroke-width="4"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67351">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 721 B |
24
Flagpack/CU - Cuba.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67358)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#3D58DB"/>
|
||||
<mask id="mask0_270_67358" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67358)">
|
||||
<path d="M0 8H-2V10V14V16H0H32H34V14V10V8H32H0Z" fill="#3D58DB" stroke="#F7FCFF" stroke-width="4"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24L18 12L0 0Z" fill="#E31D1C"/>
|
||||
<mask id="mask1_270_67358" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="18" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24L18 12L0 0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask1_270_67358)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.68777 14.2169L3.01584 16.1549L4.8035 12.2609L2.52551 10.1808L5.338 10.077L6.68777 6.5563L7.71781 10.077H10.5255L8.65412 12.2609L10.1427 16.1549L6.68777 14.2169Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67358">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
29
Flagpack/CV - Cabo Verde.svg
Normal file
@@ -0,0 +1,29 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67487)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#4141DB"/>
|
||||
<mask id="mask0_270_67487" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67487)">
|
||||
<path d="M0 13H-1V14V16V17H0H32H33V16V14V13H32H0Z" fill="#F90000" stroke="#F7FCFF" stroke-width="2"/>
|
||||
<g filter="url(#filter0_d_270_67487)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.79587 10.2595L10.5217 9.75056L11.2241 10.2595L11.0057 9.35384L11.5698 8.77993H10.8519L10.5207 8.04086L10.2383 8.77993H9.39622L10.0409 9.35384L9.79587 10.2595ZM12.7959 11.8595L13.5217 11.3506L14.2241 11.8595L14.0057 10.9538L14.5698 10.3799H13.8519L13.5207 9.64086L13.2383 10.3799H12.3962L13.0409 10.9538L12.7959 11.8595ZM15.9217 13.7506L15.1959 14.2595L15.4409 13.3538L14.7962 12.7799H15.6383L15.9207 12.0409L16.2519 12.7799H16.9698L16.4057 13.3538L16.6241 14.2595L15.9217 13.7506ZM15.1959 18.2595L15.9217 17.7506L16.6241 18.2595L16.4057 17.3538L16.9698 16.7799H16.2519L15.9207 16.0409L15.6383 16.7799H14.7962L15.4409 17.3538L15.1959 18.2595ZM13.5217 20.1506L12.7959 20.6595L13.0409 19.7538L12.3962 19.1799H13.2383L13.5207 18.4409L13.8519 19.1799H14.5698L14.0057 19.7538L14.2241 20.6595L13.5217 20.1506ZM9.79587 22.2595L10.5217 21.7506L11.2241 22.2595L11.0057 21.3538L11.5698 20.7799H10.8519L10.5207 20.0409L10.2383 20.7799H9.39622L10.0409 21.3538L9.79587 22.2595ZM7.52175 20.1506L6.79587 20.6595L7.04093 19.7538L6.39622 19.1799H7.2383L7.52073 18.4409L7.8519 19.1799H8.56976L8.00572 19.7538L8.22408 20.6595L7.52175 20.1506ZM4.39587 18.2595L5.12175 17.7506L5.82408 18.2595L5.60572 17.3538L6.16976 16.7799H5.4519L5.12073 16.0409L4.8383 16.7799H3.99622L4.64093 17.3538L4.39587 18.2595ZM5.12175 13.7506L4.39587 14.2595L4.64093 13.3538L3.99622 12.7799H4.8383L5.12073 12.0409L5.4519 12.7799H6.16976L5.60572 13.3538L5.82408 14.2595L5.12175 13.7506ZM6.79587 11.8595L7.52175 11.3506L8.22408 11.8595L8.00572 10.9538L8.56976 10.3799H7.8519L7.52073 9.64086L7.2383 10.3799H6.39622L7.04093 10.9538L6.79587 11.8595Z" fill="#FFDE00"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<filter id="filter0_d_270_67487" x="-0.00378418" y="4.04086" width="20.9735" height="22.2186" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||
<feOffset/>
|
||||
<feGaussianBlur stdDeviation="2"/>
|
||||
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/>
|
||||
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_270_67487"/>
|
||||
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_270_67487" result="shape"/>
|
||||
</filter>
|
||||
<clipPath id="clip0_270_67487">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
19
Flagpack/CW - Curaçao.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67376)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#2E42A5"/>
|
||||
<mask id="mask0_270_67376" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67376)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.25442 6.14923L2.26558 7.19891L3.22584 5.33053L2 3.96315L3.52334 3.90693L4.25442 2L4.81233 3.90693L6.59497 3.96315L5.31147 5.33053L6.12572 7.19891L4.25442 6.14923Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.3523 11.0765L8.89764 12.1048L9.86061 9.52815L7.72644 7.79927H10.2837L11.3523 5.01218L12.1677 7.79927H14.7289L12.9089 9.52815L13.8126 12.1048L11.3523 11.0765Z" fill="#F7FCFF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 14V18H32V14H0Z" fill="#F9E813"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67376">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
19
Flagpack/CX - Christmas Island.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67352)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H32V24H0V0Z" fill="#5EAA22"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0L32 24H0V0Z" fill="#4141DB"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 9L5 9.73205L5.13397 8.5L4 8L5.13397 7.5L5 6.26795L6 7L7 6.26795L6.86603 7.5L8 8L6.86603 8.5L7 9.73205L6 9Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 15L3 15.7321L3.13397 14.5L2 14L3.13397 13.5L3 12.2679L4 13L5 12.2679L4.86603 13.5L6 14L4.86603 14.5L5 15.7321L4 15Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 21L7 21.7321L7.13397 20.5L6 20L7.13397 19.5L7 18.2679L8 19L9 18.2679L8.86603 19.5L10 20L8.86603 20.5L9 21.7321L8 21Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 11.5L8.5 11.866L8.56699 11.25L8 11L8.56699 10.75L8.5 10.134L9 10.5L9.5 10.134L9.43301 10.75L10 11L9.43301 11.25L9.5 11.866L9 11.5Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.5611 12.2239C21.1873 11.8339 24.5513 10.9176 24.9 9.7361C25.3621 8.70741 25.0534 7.87386 23.3072 7.14181C21.5611 6.40976 19.7964 4.99428 21.8256 4.99428C23.8549 4.99428 23.8549 5.28361 24.4 6.13711C24.9452 6.99061 26.1235 7.17344 26.1485 6.13711C26.1485 4.37132 26.3151 4.13382 24.8897 2.59866C23.4642 1.06349 28.4641 3.22909 28.0509 5.86088C27.6376 8.49267 27.1401 7.64345 27.4559 8.08524C27.7718 8.52703 29.6722 7.15563 29.4349 8.98244C28.77 10.0331 27.4514 11.5963 21.5611 12.2239Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 17C18.7614 17 21 14.7614 21 12C21 9.23858 18.7614 7 16 7C13.2386 7 11 9.23858 11 12C11 14.7614 13.2386 17 16 17Z" fill="#FECA00"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.9529 10.162C13.5201 10.0356 14.2956 11.5543 15.6953 10.9847C17.0951 10.4151 17.3874 9.32761 18.0524 9.72561C18.7175 10.1236 18.8048 11.0819 18.3618 11.5635C17.9187 12.0452 17.1669 12.1591 17.1669 12.7679C17.1669 13.3766 17.0195 15.5475 16.7322 14.9184C15.8706 14.2193 16.3963 13.1059 15.335 12.7679C14.2737 12.4299 13.6292 12.4412 12.8463 12.5838C12.0634 12.7265 13.3722 12.192 13.6498 11.6846C14.215 11.1409 12.6936 10.3428 12.9529 10.162Z" fill="#548650"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67352">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
18
Flagpack/CY - Cyprus.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
23
Flagpack/CZ - Czech Republic.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_270_67378)">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="#E31D1C"/>
|
||||
<mask id="mask0_270_67378" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="32" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24H32V0H0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask0_270_67378)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 -2V12H32V-2H0Z" fill="#F7FCFF"/>
|
||||
</g>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24L18 12L0 0Z" fill="#3D58DB"/>
|
||||
<mask id="mask1_270_67378" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="18" height="24">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V24L18 12L0 0Z" fill="white"/>
|
||||
</mask>
|
||||
<g mask="url(#mask1_270_67378)">
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_270_67378">
|
||||
<rect width="32" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |