Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CMake, github action, google test and benchmark... #11

Open
wants to merge 22 commits into
base: master
Choose a base branch
from

Conversation

bensuperpc
Copy link

@bensuperpc bensuperpc commented Nov 6, 2021

I made some modification for my needs, if you are interested:

Here are the main changes:

  • Add github action for Linux, MacOS, Windows
  • Add github action for cross platform (ARM, RISCV, PowerPC ect...) with dockcross
  • Add Google test and Google benchmark, to avoid regressions with units test
  • Add CMake (Shared or Static crc32 library), can be installed (Tested only on ArchLinux/Manjaro and ubuntu 21.10)
  • Add optional CMake Presets (CMake 3.14 min)
  • Add Examples
  • Improve Readme
  • Compatible C++11 to C++17
  • Add C function
  • CMake library based on cmake-init
  • Use std::chrono and std::chrono::high_resolution_clock, instead ctime and custom second function.
  • Improve warning message with MSCV
  • Update readme README.md
  • Update CMake build option: CRC32_USE_LOOKUP_TABLE_BYTE, CRC32_USE_LOOKUP_TABLE_SLICING_BY_4...

I kept arduino and js codes.

It is a CMake library, it can be used easily with other CMake projects (or non-cmake projects)

Google Benchmark info (Built with Clang 12):

benchmark

2021-11-12T19:33:45+01:00
Running ./crc32_bench
Run on (16 X 3200 MHz CPU s)
CPU Caches:
  L1 Data 32 KiB (x8)
  L1 Instruction 32 KiB (x8)
  L2 Unified 512 KiB (x8)
  L3 Unified 16384 KiB (x1)
Load Average: 1.14, 1.61, 1.60
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
------------------------------------------------------------------------------------------------
Benchmark                                      Time             CPU   Iterations UserCounters...
------------------------------------------------------------------------------------------------
crc32_fast/1                                2.07 ns         2.07 ns    323706700 bytes_per_second=461.104M/s items_per_second=483.503M/s
crc32_fast/100                              77.7 ns         77.7 ns      9020495 bytes_per_second=1.19936G/s items_per_second=12.8781M/s
crc32_fast/10000                            1836 ns         1836 ns       382291 bytes_per_second=5.073G/s items_per_second=544.71k/s
crc32_fast/1000000                        187754 ns       187752 ns         3710 bytes_per_second=4.96037G/s items_per_second=5.32616k/s
crc32_fast/100000000                    18941422 ns     18941036 ns           37 bytes_per_second=4.91696G/s items_per_second=52.7954/s
crc32_fast/1000000000                  190844392 ns    190838597 ns            4 bytes_per_second=4.88016G/s items_per_second=5.24003/s
crc32_fast_cpp/1                            1.84 ns         1.84 ns    379435068 bytes_per_second=518.663M/s items_per_second=543.857M/s
crc32_fast_cpp/100                          53.5 ns         53.5 ns     12907536 bytes_per_second=1.7403G/s items_per_second=18.6863M/s
crc32_fast_cpp/10000                        1548 ns         1548 ns       451281 bytes_per_second=6.01749G/s items_per_second=646.123k/s
crc32_fast_cpp/1000000                    153039 ns       153038 ns         4572 bytes_per_second=6.08554G/s items_per_second=6.5343k/s
crc32_fast_cpp/100000000                15386000 ns     15386010 ns           45 bytes_per_second=6.05305G/s items_per_second=64.9941/s
crc32_fast_cpp/1000000000              154053198 ns    154051600 ns            5 bytes_per_second=6.04552G/s items_per_second=6.49133/s
crc32_bitwise/1                             3.20 ns         3.20 ns    218217849 bytes_per_second=297.742M/s items_per_second=312.205M/s
crc32_bitwise/100                            498 ns          498 ns      1406072 bytes_per_second=191.564M/s items_per_second=2.00869M/s
crc32_bitwise/10000                        50008 ns        50008 ns        13999 bytes_per_second=190.703M/s items_per_second=19.9966k/s
crc32_bitwise/1000000                    5003764 ns      5003704 ns          140 bytes_per_second=190.594M/s items_per_second=199.852/s
crc32_bitwise/100000000                500298660 ns    500294354 ns            1 bytes_per_second=190.623M/s items_per_second=1.99882/s
crc32_bitwise/1000000000              5035413920 ns   5035314215 ns            1 bytes_per_second=189.397M/s items_per_second=0.198597/s
crc32_bitwise_cpp/1                         3.20 ns         3.20 ns    217396770 bytes_per_second=298.059M/s items_per_second=312.538M/s
crc32_bitwise_cpp/100                        498 ns          498 ns      1404838 bytes_per_second=191.418M/s items_per_second=2.00716M/s
crc32_bitwise_cpp/10000                    50014 ns        50014 ns        13992 bytes_per_second=190.681M/s items_per_second=19.9943k/s
crc32_bitwise_cpp/1000000                5005841 ns      5005842 ns          140 bytes_per_second=190.512M/s items_per_second=199.767/s
crc32_bitwise_cpp/100000000            500487025 ns    500478188 ns            1 bytes_per_second=190.553M/s items_per_second=1.99809/s
crc32_bitwise_cpp/1000000000          5004175087 ns   5004055360 ns            1 bytes_per_second=190.58M/s items_per_second=0.199838/s
crc32_bitwise_branch/1                      2.80 ns         2.80 ns    250112181 bytes_per_second=340.829M/s items_per_second=357.386M/s
crc32_bitwise_branch/100                     560 ns          560 ns      1246915 bytes_per_second=170.324M/s items_per_second=1.78597M/s
crc32_bitwise_branch/10000                 56682 ns        56681 ns        12344 bytes_per_second=168.254M/s items_per_second=17.6427k/s
crc32_bitwise_branch/1000000             5678142 ns      5678046 ns          123 bytes_per_second=167.958M/s items_per_second=176.117/s
crc32_bitwise_branch/100000000         567653861 ns    567638059 ns            1 bytes_per_second=168.007M/s items_per_second=1.76169/s
crc32_bitwise_branch/1000000000       5672185016 ns   5672081957 ns            1 bytes_per_second=168.135M/s items_per_second=0.176302/s
crc32_bitwise_branch_cpp/1                  2.82 ns         2.82 ns    244953580 bytes_per_second=338.636M/s items_per_second=355.086M/s
crc32_bitwise_branch_cpp/100                 561 ns          561 ns      1246248 bytes_per_second=170.115M/s items_per_second=1.78379M/s
crc32_bitwise_branch_cpp/10000             56685 ns        56681 ns        12341 bytes_per_second=168.254M/s items_per_second=17.6427k/s
crc32_bitwise_branch_cpp/1000000         5671752 ns      5671747 ns          123 bytes_per_second=168.145M/s items_per_second=176.313/s
crc32_bitwise_branch_cpp/100000000     567790614 ns    567776153 ns            1 bytes_per_second=167.967M/s items_per_second=1.76126/s
crc32_bitwise_branch_cpp/1000000000   5732593606 ns   5732573572 ns            1 bytes_per_second=166.361M/s items_per_second=0.174442/s
crc32_halfbyte/1                            1.45 ns         1.45 ns    483260862 bytes_per_second=657.715M/s items_per_second=689.664M/s
crc32_halfbyte/100                           346 ns          346 ns      2023895 bytes_per_second=275.865M/s items_per_second=2.89265M/s
crc32_halfbyte/10000                       36758 ns        36758 ns        19045 bytes_per_second=259.45M/s items_per_second=27.2053k/s
crc32_halfbyte/1000000                   3684212 ns      3684157 ns          190 bytes_per_second=258.858M/s items_per_second=271.433/s
crc32_halfbyte/100000000               362730159 ns    362726754 ns            2 bytes_per_second=262.918M/s items_per_second=2.7569/s
crc32_halfbyte/1000000000             3621702438 ns   3621634538 ns            1 bytes_per_second=263.327M/s items_per_second=0.276118/s
crc32_halfbyte_cpp/1                        1.61 ns         1.61 ns    435424010 bytes_per_second=592.443M/s items_per_second=621.222M/s
crc32_halfbyte_cpp/100                       340 ns          340 ns      2055250 bytes_per_second=280.59M/s items_per_second=2.9422M/s
crc32_halfbyte_cpp/10000                   36196 ns        36196 ns        19350 bytes_per_second=263.478M/s items_per_second=27.6277k/s
crc32_halfbyte_cpp/1000000               3629417 ns      3629392 ns          193 bytes_per_second=262.764M/s items_per_second=275.528/s
crc32_halfbyte_cpp/100000000           362798325 ns    362794757 ns            2 bytes_per_second=262.869M/s items_per_second=2.75638/s
crc32_halfbyte_cpp/1000000000         3645203962 ns   3645120058 ns            1 bytes_per_second=261.63M/s items_per_second=0.274339/s
crc32_1byte/1                               1.39 ns         1.39 ns    504452841 bytes_per_second=684.842M/s items_per_second=718.109M/s
crc32_1byte/100                              162 ns          162 ns      4314588 bytes_per_second=588.03M/s items_per_second=6.16594M/s
crc32_1byte/10000                          18224 ns        18224 ns        38407 bytes_per_second=523.298M/s items_per_second=54.8717k/s
crc32_1byte/1000000                      1824865 ns      1824821 ns          383 bytes_per_second=522.612M/s items_per_second=547.999/s
crc32_1byte/100000000                  182451179 ns    182447149 ns            4 bytes_per_second=522.713M/s items_per_second=5.48104/s
crc32_1byte/1000000000                1824629440 ns   1824591087 ns            1 bytes_per_second=522.678M/s items_per_second=0.548068/s
crc32_1byte_cpp/1                           1.39 ns         1.39 ns    504701380 bytes_per_second=687.207M/s items_per_second=720.589M/s
crc32_1byte_cpp/100                          164 ns          164 ns      4267557 bytes_per_second=581.398M/s items_per_second=6.0964M/s
crc32_1byte_cpp/10000                      18234 ns        18234 ns        38386 bytes_per_second=523.026M/s items_per_second=54.8433k/s
crc32_1byte_cpp/1000000                  1828702 ns      1828657 ns          383 bytes_per_second=521.516M/s items_per_second=546.849/s
crc32_1byte_cpp/100000000              183149467 ns    183142091 ns            4 bytes_per_second=520.729M/s items_per_second=5.46024/s
crc32_1byte_cpp/1000000000            1827703854 ns   1827661536 ns            1 bytes_per_second=521.8M/s items_per_second=0.547147/s
crc32_1byte_tableless/1                     2.09 ns         2.09 ns    335717284 bytes_per_second=456.135M/s items_per_second=478.293M/s
crc32_1byte_tableless/100                    329 ns          329 ns      2130088 bytes_per_second=290.214M/s items_per_second=3.04312M/s
crc32_1byte_tableless/10000                33083 ns        33083 ns        21158 bytes_per_second=288.27M/s items_per_second=30.2273k/s
crc32_1byte_tableless/1000000            3311088 ns      3311056 ns          211 bytes_per_second=288.027M/s items_per_second=302.018/s
crc32_1byte_tableless/100000000        329279311 ns    329256712 ns            2 bytes_per_second=289.645M/s items_per_second=3.03714/s
crc32_1byte_tableless/1000000000      3291815269 ns   3291746132 ns            1 bytes_per_second=289.717M/s items_per_second=0.30379/s
crc32_1byte_tableless_cpp/1                 2.29 ns         2.29 ns    306305667 bytes_per_second=417.337M/s items_per_second=437.61M/s
crc32_1byte_tableless_cpp/100                316 ns          316 ns      2215132 bytes_per_second=301.78M/s items_per_second=3.1644M/s
crc32_1byte_tableless_cpp/10000            31809 ns        31809 ns        22012 bytes_per_second=299.809M/s items_per_second=31.4373k/s
crc32_1byte_tableless_cpp/1000000        3185729 ns      3185635 ns          220 bytes_per_second=299.367M/s items_per_second=313.909/s
crc32_1byte_tableless_cpp/100000000    318453857 ns    318445552 ns            2 bytes_per_second=299.478M/s items_per_second=3.14025/s
crc32_1byte_tableless_cpp/1000000000  3186034157 ns   3185960089 ns            1 bytes_per_second=299.337M/s items_per_second=0.313877/s
crc32_1byte_tableless2/1                    1.61 ns         1.61 ns    431599269 bytes_per_second=591.232M/s items_per_second=619.952M/s
crc32_1byte_tableless2/100                   536 ns          536 ns      1302417 bytes_per_second=177.925M/s items_per_second=1.86568M/s
crc32_1byte_tableless2/10000               55923 ns        55923 ns        12525 bytes_per_second=170.534M/s items_per_second=17.8818k/s
crc32_1byte_tableless2/1000000           5595563 ns      5595561 ns          125 bytes_per_second=170.434M/s items_per_second=178.713/s
crc32_1byte_tableless2/100000000       559887720 ns    559852298 ns            1 bytes_per_second=170.344M/s items_per_second=1.78619/s
crc32_1byte_tableless2/1000000000     5593138100 ns   5593007169 ns            1 bytes_per_second=170.512M/s items_per_second=0.178795/s
crc32_1byte_tableless2_cpp/1                1.61 ns         1.61 ns    427281387 bytes_per_second=591.829M/s items_per_second=620.578M/s
crc32_1byte_tableless2_cpp/100               536 ns          536 ns      1302886 bytes_per_second=177.882M/s items_per_second=1.86523M/s
crc32_1byte_tableless2_cpp/10000           56274 ns        56273 ns        12511 bytes_per_second=169.473M/s items_per_second=17.7705k/s
crc32_1byte_tableless2_cpp/1000000       5634062 ns      5633860 ns          124 bytes_per_second=169.275M/s items_per_second=177.498/s
crc32_1byte_tableless2_cpp/100000000   563027564 ns    563027403 ns            1 bytes_per_second=169.383M/s items_per_second=1.77611/s
crc32_1byte_tableless2_cpp/1000000000 5622141500 ns   5622015899 ns            1 bytes_per_second=169.632M/s items_per_second=0.177872/s
crc32_4bytes/1                              1.62 ns         1.62 ns    430719792 bytes_per_second=588.752M/s items_per_second=617.352M/s
crc32_4bytes/100                            51.1 ns         51.1 ns     13689748 bytes_per_second=1.82394G/s items_per_second=19.5844M/s
crc32_4bytes/10000                          6358 ns         6358 ns       111193 bytes_per_second=1.46489G/s items_per_second=157.292k/s
crc32_4bytes/1000000                      647585 ns       647587 ns         1082 bytes_per_second=1.43814G/s items_per_second=1.54419k/s
crc32_4bytes/100000000                  64515189 ns     64513772 ns           11 bytes_per_second=1.4436G/s items_per_second=15.5006/s
crc32_4bytes/1000000000                637657681 ns    637637066 ns            1 bytes_per_second=1.46058G/s items_per_second=1.56829/s
crc32_4bytes_cpp/1                          1.85 ns         1.85 ns    378604170 bytes_per_second=515.114M/s items_per_second=540.136M/s
crc32_4bytes_cpp/100                        51.8 ns         51.8 ns     13383244 bytes_per_second=1.7988G/s items_per_second=19.3145M/s
crc32_4bytes_cpp/10000                      6351 ns         6351 ns       109795 bytes_per_second=1.4664G/s items_per_second=157.453k/s
crc32_4bytes_cpp/1000000                  638550 ns       638551 ns         1096 bytes_per_second=1.45849G/s items_per_second=1.56605k/s
crc32_4bytes_cpp/100000000              63820526 ns     63819878 ns           11 bytes_per_second=1.4593G/s items_per_second=15.6691/s
crc32_4bytes_cpp/1000000000            638677154 ns    638662759 ns            1 bytes_per_second=1.45824G/s items_per_second=1.56577/s
crc32_8bytes/1                              1.87 ns         1.87 ns    370255307 bytes_per_second=509.995M/s items_per_second=534.769M/s
crc32_8bytes/100                            29.5 ns         29.5 ns     24110858 bytes_per_second=3.16032G/s items_per_second=33.9337M/s
crc32_8bytes/10000                          3444 ns         3444 ns       203162 bytes_per_second=2.70388G/s items_per_second=290.327k/s
crc32_8bytes/1000000                      350290 ns       350285 ns         1994 bytes_per_second=2.65875G/s items_per_second=2.85481k/s
crc32_8bytes/100000000                  34980817 ns     34980472 ns           20 bytes_per_second=2.66241G/s items_per_second=28.5874/s
crc32_8bytes/1000000000                349634826 ns    349635103 ns            2 bytes_per_second=2.6637G/s items_per_second=2.86012/s
crc32_8bytes_cpp/1                          1.87 ns         1.87 ns    369593783 bytes_per_second=510.276M/s items_per_second=535.063M/s
crc32_8bytes_cpp/100                        30.1 ns         30.1 ns     23047169 bytes_per_second=3.08963G/s items_per_second=33.1747M/s
crc32_8bytes_cpp/10000                      3495 ns         3495 ns       200210 bytes_per_second=2.66487G/s items_per_second=286.138k/s
crc32_8bytes_cpp/1000000                  354545 ns       354546 ns         1971 bytes_per_second=2.6268G/s items_per_second=2.82051k/s
crc32_8bytes_cpp/100000000              35400921 ns     35400156 ns           20 bytes_per_second=2.63084G/s items_per_second=28.2485/s
crc32_8bytes_cpp/1000000000            354144078 ns    354144486 ns            2 bytes_per_second=2.62978G/s items_per_second=2.82371/s
crc32_4x8bytes/1                            2.34 ns         2.34 ns    299022125 bytes_per_second=407.377M/s items_per_second=427.166M/s
crc32_4x8bytes/100                          30.4 ns         30.4 ns     23062086 bytes_per_second=3.0628G/s items_per_second=32.8866M/s
crc32_4x8bytes/10000                        3277 ns         3277 ns       213958 bytes_per_second=2.8421G/s items_per_second=305.168k/s
crc32_4x8bytes/1000000                    331368 ns       331361 ns         2112 bytes_per_second=2.8106G/s items_per_second=3.01785k/s
crc32_4x8bytes/100000000                33075367 ns     33074974 ns           21 bytes_per_second=2.81579G/s items_per_second=30.2343/s
crc32_4x8bytes/1000000000              331799366 ns    331792182 ns            2 bytes_per_second=2.80695G/s items_per_second=3.01393/s
crc32_4x8bytes_cpp/1                        1.86 ns         1.86 ns    374799357 bytes_per_second=513.517M/s items_per_second=538.461M/s
crc32_4x8bytes_cpp/100                      24.6 ns         24.6 ns     28183278 bytes_per_second=3.7907G/s items_per_second=40.7024M/s
crc32_4x8bytes_cpp/10000                    3093 ns         3093 ns       225809 bytes_per_second=3.01129G/s items_per_second=323.335k/s
crc32_4x8bytes_cpp/1000000                309379 ns       309376 ns         2248 bytes_per_second=3.01032G/s items_per_second=3.23231k/s
crc32_4x8bytes_cpp/100000000            30999471 ns     30998960 ns           23 bytes_per_second=3.00437G/s items_per_second=32.2591/s
crc32_4x8bytes_cpp/1000000000          310033987 ns    310028625 ns            2 bytes_per_second=3.00399G/s items_per_second=3.22551/s
crc32_16bytes/1                             2.09 ns         2.09 ns    335598236 bytes_per_second=455.502M/s items_per_second=477.628M/s
crc32_16bytes/100                           78.4 ns         78.4 ns      8895975 bytes_per_second=1.1874G/s items_per_second=12.7496M/s
crc32_16bytes/10000                         1847 ns         1846 ns       379509 bytes_per_second=5.04376G/s items_per_second=541.57k/s
crc32_16bytes/1000000                     190295 ns       190291 ns         3674 bytes_per_second=4.89419G/s items_per_second=5.2551k/s
crc32_16bytes/100000000                 19286231 ns     19285510 ns           36 bytes_per_second=4.82913G/s items_per_second=51.8524/s
crc32_16bytes/1000000000               190687942 ns    190684723 ns            4 bytes_per_second=4.8841G/s items_per_second=5.24426/s
crc32_16bytes_cpp/1                         1.63 ns         1.63 ns    425090921 bytes_per_second=584.29M/s items_per_second=612.673M/s
crc32_16bytes_cpp/100                       54.0 ns         54.0 ns     12806556 bytes_per_second=1.72486G/s items_per_second=18.5205M/s
crc32_16bytes_cpp/10000                     1555 ns         1555 ns       449788 bytes_per_second=5.99035G/s items_per_second=643.209k/s
crc32_16bytes_cpp/1000000                 153745 ns       153744 ns         4555 bytes_per_second=6.05761G/s items_per_second=6.50431k/s
crc32_16bytes_cpp/100000000             15447151 ns     15446982 ns           45 bytes_per_second=6.02916G/s items_per_second=64.7376/s
crc32_16bytes_cpp/1000000000           154522664 ns    154521538 ns            5 bytes_per_second=6.02714G/s items_per_second=6.47159/s
crc32_16bytes_prefetch/1                    2.33 ns         2.33 ns    298292072 bytes_per_second=408.592M/s items_per_second=428.44M/s
crc32_16bytes_prefetch/100                   163 ns          163 ns      4283416 bytes_per_second=584.45M/s items_per_second=6.12841M/s
crc32_16bytes_prefetch/10000                2252 ns         2252 ns       310882 bytes_per_second=4.13523G/s items_per_second=444.017k/s
crc32_16bytes_prefetch/1000000            196168 ns       196168 ns         3692 bytes_per_second=4.74758G/s items_per_second=5.09767k/s
crc32_16bytes_prefetch/100000000        19077968 ns     19077720 ns           37 bytes_per_second=4.88173G/s items_per_second=52.4172/s
crc32_16bytes_prefetch/1000000000      190150413 ns    190141612 ns            4 bytes_per_second=4.89805G/s items_per_second=5.25924/s
crc32_16bytes_prefetch_cpp/1                1.86 ns         1.86 ns    373440442 bytes_per_second=511.532M/s items_per_second=536.381M/s
crc32_16bytes_prefetch_cpp/100               163 ns          163 ns      4308163 bytes_per_second=585.9M/s items_per_second=6.14361M/s
crc32_16bytes_prefetch_cpp/10000            2041 ns         2041 ns       343215 bytes_per_second=4.564G/s items_per_second=490.055k/s
crc32_16bytes_prefetch_cpp/1000000        159875 ns       159871 ns         4380 bytes_per_second=5.82545G/s items_per_second=6.25503k/s
crc32_16bytes_prefetch_cpp/100000000    16217677 ns     16216935 ns           44 bytes_per_second=5.7429G/s items_per_second=61.6639/s
crc32_16bytes_prefetch_cpp/1000000000  160260867 ns    160251534 ns            4 bytes_per_second=5.81163G/s items_per_second=6.24019/s

Results of github action: https://github.com/bensuperpc/crc32/actions
Graph code (Based on this code): https://int-i.github.io/python/2021-11-07/matplotlib-google-benchmark-visualization/

Sorry for my imperfect English, I'm French

Add github action for Linux, MacOS, Windows
Add github action for cross platform (ARM, RISCV, PowerPC ect...) with dockcross
Add Google test and Google benchmark, to avoid regressions with units test
Add CMake (Shared or Static crc32 library), can be installed (Tested only on ArchLinux/Manjaro and ubuntu 21.10)
Add CMake Presets
Add Examples
Improve Readme
Compatible C++11 to C++20
CMake library based on cmake-init
Use std::chrono and std::chrono::high_resolution_clock, instead ctime and custom second function.
Improve warning message with MSCV
Update readme README.md

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Add github action for Linux, MacOS, Windows
Add github action for cross platform (ARM, RISCV, PowerPC ect...) with dockcross
Add Google test and Google benchmark, to avoid regressions with units test
Add CMake (Shared or Static crc32 library), can be installed (Tested only on ArchLinux/Manjaro and ubuntu 21.10)
Add CMake Presets
Add Examples
Improve Readme
Compatible C++11 to C++20
CMake library based on cmake-init
Use std::chrono and std::chrono::high_resolution_clock, instead ctime and custom second function.
Improve warning message with MSCV
Update readme README.md

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant