diff options
| author | martin <martin@NetBSD.org> | 2020-04-27 14:47:12 +0000 |
|---|---|---|
| committer | martin <martin@NetBSD.org> | 2020-04-27 14:47:12 +0000 |
| commit | 8f48ca14d2af1382f21cc9d0b586c9ea255f0c70 (patch) | |
| tree | a971d2d6776fd9007d004d02a11f3df98841d333 /crypto | |
| parent | 80e746c45a15cd4e2c912f7e243414d77bd4f0d2 (diff) | |
Pull up the following, requested by maya in ticket #856:
crypto/external/bsd/openssl/dist/crypto/aes/aes_local.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/bf/bf_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/asn1/asn1_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/async/async_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/bio/bio_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/blake2/blake2_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/bn/bn_local.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/camellia/cmll_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/cast/cast_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/cms/cms_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/comp/comp_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/conf/conf_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ct/ct_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/des/des_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/dh/dh_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/dso/dso_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ec/ec_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/engine/eng_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/evp/evp_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/hmac/hmac_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/idea/idea_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/lhash/lhash_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/md4/md4_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/md5/md5_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/modes/modes_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/objects/obj_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/rand/rand_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/rc2/rc2_local.h up to 1.2
crypto/external/bsd/openssl/dist/crypto/rc4/rc4_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/rc5/rc5_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/seed/seed_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/sha/sha_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/sm3/sm3_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/store/store_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ts/ts_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/ui/ui_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/x509/x509_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_size.pod up to 1.1.1.1
crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP.pod up to 1.1.1.1
crypto/external/bsd/openssl/dist/doc/man3/X509_check_purpose.pod up to 1.1.1.1
crypto/external/bsd/openssl/dist/doc/man7/proxy-certificates.pod up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/internal/constant_time.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/siphash.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_EPILOGUE.H up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_PROLOGUE.H up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/aria.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/asn1.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/async.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/bn.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/bn_conf.h.in up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/bn_dh.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/bn_srp.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/chacha.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/cryptlib.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/ctype.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/dso_conf.h.in up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/ec.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/engine.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/err.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/evp.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/lhash.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/md32_common.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/objects.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/poly1305.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/rand.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/sha.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/sm2err.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/sm2.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/store.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/sm3.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/sm4.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/include/crypto/x509.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/ssl/record/record_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/ssl/statem/statem_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/ssl/ssl_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/ssl/packet_local.h up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/certs/root-ed448-cert.pem up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/certs/root-ed448-key.pem up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/certs/ee-pathlen.pem up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/recipes/10-test_bn_data/bngcd.txt up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/testutil/testutil_init.c up to 1.1.1.1
crypto/external/bsd/openssl/dist/test/ssl_ctx_test.c up to 1.1.1.1
crypto/external/bsd/openssl/dist/util/fix-includes up to 1.1.1.1
crypto/external/bsd/openssl/dist/util/fix-includes.sed up to 1.1.1.1
crypto/external/bsd/openssl/include/crypto/bn_conf.h up to 1.1
crypto/external/bsd/openssl/include/crypto/dso_conf.h up to 1.1
crypto/external/bsd/openssl/dist/crypto/aes/aes_locl.h delete
crypto/external/bsd/openssl/dist/crypto/bf/bf_locl.h delete
crypto/external/bsd/openssl/dist/crypto/asn1/asn1_locl.h delete
crypto/external/bsd/openssl/dist/crypto/async/async_locl.h delete
crypto/external/bsd/openssl/dist/crypto/bio/bio_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/blake2/blake2_locl.h delete
crypto/external/bsd/openssl/dist/crypto/bn/bn_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/camellia/cmll_locl.h delete
crypto/external/bsd/openssl/dist/crypto/cast/cast_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/cms/cms_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/comp/comp_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/conf/conf_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/ct/ct_locl.h delete
crypto/external/bsd/openssl/dist/crypto/des/des_locl.h delete
crypto/external/bsd/openssl/dist/crypto/dh/dh_locl.h delete
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_locl.h delete
crypto/external/bsd/openssl/dist/crypto/dso/dso_locl.h delete
crypto/external/bsd/openssl/dist/crypto/ec/ec_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/engine/eng_int.h delete
crypto/external/bsd/openssl/dist/crypto/evp/evp_locl.h delete
crypto/external/bsd/openssl/dist/crypto/hmac/hmac_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/idea/idea_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/ctype.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_EPILOGUE.H delete
crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_PROLOGUE.H delete
crypto/external/bsd/openssl/dist/crypto/include/internal/aria.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/asn1_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/async.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/bn_conf.h.in delete
crypto/external/bsd/openssl/dist/crypto/include/internal/bn_dh.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/bn_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/bn_srp.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/chacha.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/cryptlib_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/dso_conf.h.in delete
crypto/external/bsd/openssl/dist/crypto/include/internal/ec_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/engine.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/err_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/evp_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/lhash.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/md32_common.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/objects.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/poly1305.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/rand_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/sha.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/siphash.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/sm2.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/sm2err.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/sm3.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/sm4.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/store.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/store_int.h delete
crypto/external/bsd/openssl/dist/crypto/include/internal/x509_int.h delete
crypto/external/bsd/openssl/dist/crypto/lhash/lhash_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/md4/md4_locl.h delete
crypto/external/bsd/openssl/dist/crypto/md5/md5_locl.h delete
crypto/external/bsd/openssl/dist/crypto/modes/modes_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/objects/obj_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/rand/rand_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/rc2/rc2_locl.h delete
crypto/external/bsd/openssl/dist/crypto/rc4/rc4_locl.h delete
crypto/external/bsd/openssl/dist/crypto/rc5/rc5_locl.h delete
crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_locl.h delete
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_locl.h delete
crypto/external/bsd/openssl/dist/crypto/seed/seed_locl.h delete
crypto/external/bsd/openssl/dist/crypto/sha/sha_locl.h delete
crypto/external/bsd/openssl/dist/crypto/sm3/sm3_locl.h delete
crypto/external/bsd/openssl/dist/crypto/store/store_locl.h delete
crypto/external/bsd/openssl/dist/crypto/ts/ts_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/ui/ui_locl.h delete
crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_locl.h delete
crypto/external/bsd/openssl/dist/crypto/x509/x509_lcl.h delete
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_int.h delete
crypto/external/bsd/openssl/dist/doc/HOWTO/proxy_certificates.txt delete
crypto/external/bsd/openssl/dist/include/internal/constant_time_locl.h delete
crypto/external/bsd/openssl/dist/ssl/record/record_locl.h delete
crypto/external/bsd/openssl/dist/ssl/packet_locl.h delete
crypto/external/bsd/openssl/dist/ssl/ssl_locl.h delete
crypto/external/bsd/openssl/dist/ssl/statem/statem_locl.h delete
crypto/external/bsd/openssl/dist/test/testutil/init.c delete
crypto/external/bsd/openssl/dist/CHANGES up to 1.24
crypto/external/bsd/openssl/dist/CONTRIBUTING up to 1.1.1.8
crypto/external/bsd/openssl/dist/Configure up to 1.26
crypto/external/bsd/openssl/dist/INSTALL up to 1.1.1.13
crypto/external/bsd/openssl/dist/NEWS up to 1.24
crypto/external/bsd/openssl/dist/NOTES.ANDROID up to 1.1.1.4
crypto/external/bsd/openssl/dist/README up to 1.24
crypto/external/bsd/openssl/dist/appveyor.yml up to 1.1.1.5
crypto/external/bsd/openssl/dist/build.info up to 1.1.1.3
crypto/external/bsd/openssl/dist/config up to 1.1.1.11
crypto/external/bsd/openssl/dist/e_os.h up to 1.16
crypto/external/bsd/openssl/dist/Configurations/10-main.conf up to 1.1.1.7
crypto/external/bsd/openssl/dist/Configurations/15-android.conf up to 1.1.1.4
crypto/external/bsd/openssl/dist/Configurations/50-win-onecore.conf up to 1.1.1.4
crypto/external/bsd/openssl/dist/Configurations/descrip.mms.tmpl up to 1.1.1.6
crypto/external/bsd/openssl/dist/Configurations/unix-Makefile.tmpl up to 1.1.1.10
crypto/external/bsd/openssl/dist/apps/apps.c up to 1.1.1.21
crypto/external/bsd/openssl/dist/apps/apps.h up to 1.1.1.15
crypto/external/bsd/openssl/dist/apps/build.info up to 1.1.1.3
crypto/external/bsd/openssl/dist/apps/dgst.c up to 1.1.1.15
crypto/external/bsd/openssl/dist/apps/dhparam.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/apps/dsa.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/apps/dsaparam.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/apps/ec.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/apps/ecparam.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/apps/enc.c up to 1.1.1.16
crypto/external/bsd/openssl/dist/apps/engine.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/apps/gendsa.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/apps/genrsa.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/apps/ocsp.c up to 1.22
crypto/external/bsd/openssl/dist/apps/openssl.c up to 1.6
crypto/external/bsd/openssl/dist/apps/passwd.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/apps/pkcs12.c up to 1.1.1.16
crypto/external/bsd/openssl/dist/apps/pkeyutl.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/apps/rehash.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/apps/req.c up to 1.4
crypto/external/bsd/openssl/dist/apps/rsa.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/apps/rsautl.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/apps/s_cb.c up to 1.1.1.18
crypto/external/bsd/openssl/dist/apps/s_client.c up to 1.22
crypto/external/bsd/openssl/dist/apps/s_server.c up to 1.23
crypto/external/bsd/openssl/dist/apps/s_time.c up to 1.11
crypto/external/bsd/openssl/dist/apps/server.pem up to 1.1.1.3
crypto/external/bsd/openssl/dist/apps/speed.c up to 1.20
crypto/external/bsd/openssl/dist/apps/srp.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/apps/timeouts.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/apps/ts.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/apps/vms_term_sock.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/apps/x509.c up to 1.1.1.15
crypto/external/bsd/openssl/dist/crypto/LPdir_unix.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/alphacpuid.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/arm64cpuid.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/arm_arch.h up to 1.8
crypto/external/bsd/openssl/dist/crypto/armcap.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/armv4cpuid.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/c64xpluscpuid.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/cryptlib.c up to 1.15
crypto/external/bsd/openssl/dist/crypto/ctype.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/dllmain.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ex_data.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/init.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/mem.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/mips_arch.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/pariscid.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ppc_arch.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ppccap.c up to 1.13
crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl up to 1.9
crypto/external/bsd/openssl/dist/crypto/s390x_arch.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/s390xcpuid.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sparc_arch.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/sparccpuid.S up to 1.9
crypto/external/bsd/openssl/dist/crypto/sparcv9cap.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/threads_none.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/threads_win.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x86_64cpuid.pl up to 1.9
crypto/external/bsd/openssl/dist/crypto/x86cpuid.pl up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/aes/aes_core.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/aes/aes_ecb.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/aes_ige.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/aes_misc.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/aes/aes_x86core.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-armv4.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-c64xplus.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-mips.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-parisc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-ppc.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-s390x.pl up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-sparcv9.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesfx-sparcv9.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-mb-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl up to 1.6
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha256-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86_64.pl up to 1.7
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesp8-ppc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/aest4-sparcv9.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/aes/asm/aesv8-armx.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/bsaes-armv7.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-armv8.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-ppc.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86_64.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/aria/aria.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/asn1/a_bitstr.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/asn1/a_gentm.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/asn1/a_int.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/asn1/a_mbstr.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/a_object.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/asn1/a_print.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/asn1/a_sign.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/asn1/a_time.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/asn1/a_type.c up to 1.8
crypto/external/bsd/openssl/dist/crypto/asn1/a_utctm.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/a_verify.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/asn1/ameth_lib.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/asn1/asn1_lib.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/asn1/asn1_par.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/asn1/asn_mime.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/asn1/asn_moid.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/asn1/charmap.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pr.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pu.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/f_int.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/asn1/f_string.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/asn1/i2d_pr.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/asn1/p8_pkey.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/asn1/t_pkey.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_dec.c up to 1.10
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_enc.c up to 1.10
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_fre.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_new.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_prn.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_scn.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/asn1/tasn_utl.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/x_algor.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/x_bignum.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/asn1/x_int64.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/asn1/x_sig.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/async/async.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/async/async_wait.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/async/arch/async_null.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/async/arch/async_win.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/bf/bf_cfb64.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bf/bf_ecb.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bf/bf_enc.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bf/bf_ofb64.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bf/bf_skey.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bf/asm/bf-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bio/b_addr.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bio/b_dump.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bio/b_print.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/bio/b_sock.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/bio/b_sock2.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bio/bf_buff.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bio/bf_lbuf.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bio/bf_nbio.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/bio/bf_null.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bio/bio_cb.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bio/bio_lib.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/bio/bio_meth.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bio/bss_acpt.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/bio/bss_bio.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bio/bss_conn.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bio/bss_dgram.c up to 1.1.1.18
crypto/external/bsd/openssl/dist/crypto/bio/bss_fd.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bio/bss_file.c up to 1.13
crypto/external/bsd/openssl/dist/crypto/bio/bss_log.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/bio/bss_mem.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/bio/bss_null.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bio/bss_sock.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/blake2/blake2b.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/blake2/blake2s.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2b.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2s.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/README.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/bn_add.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_asm.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/bn_blind.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_ctx.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/bn_depr.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/bn_dh.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/bn_div.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/bn/bn_exp.c up to 1.20
crypto/external/bsd/openssl/dist/crypto/bn/bn_exp2.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_gcd.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/bn_gf2m.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/bn/bn_intern.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/bn_kron.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/bn_lib.c up to 1.14
crypto/external/bsd/openssl/dist/crypto/bn/bn_mod.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_mont.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/bn/bn_mpi.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/bn_mul.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/bn_nist.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_print.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/bn/bn_rand.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/bn/bn_recp.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/bn_shift.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/bn_sqr.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/bn_sqrt.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/bn_srp.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/bn_word.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/bn_x931p.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/build.info up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/rsaz_exp.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/asm/alpha-mont.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-gf2m.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-mont.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/asm/armv8-mont.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/asm/bn-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/asm/c64xplus-gf2m.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/asm/co-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/asm/ia64-mont.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/mips-mont.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/mips.pl up to 1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/parisc-mont.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc-mont.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc64-mont.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-avx2.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-gf2m.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-mont.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x.S up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/sparct4-mont.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-gf2m.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-mont.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9a-mont.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/bn/asm/via-mont.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/vis3-mont.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-gf2m.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-mont.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gcc.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl up to 1.10
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont.pl up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont5.pl up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/camellia/camellia.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/camellia/cmll_ecb.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/camellia/cmll_misc.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86_64.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmllt4-sparcv9.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/cast/c_cfb64.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cast/c_ecb.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cast/c_enc.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cast/c_ofb64.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cast/c_skey.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cast/asm/cast-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/chacha/chacha_enc.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv4.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv8.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-c64xplus.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-ppc.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-s390x.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86_64.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/cmac/cm_ameth.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cmac/cm_pmeth.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/cms/cms_asn1.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/cms/cms_att.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cms/cms_cd.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cms/cms_dd.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/cms/cms_enc.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/cms/cms_env.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/cms/cms_ess.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/cms/cms_io.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/cms/cms_kari.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/cms/cms_lib.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/cms/cms_pwri.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/cms/cms_sd.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/cms/cms_smime.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/comp/c_zlib.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/comp/comp_lib.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/conf/conf_def.h up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/conf/conf_lib.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/conf/conf_mall.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/conf/conf_ssl.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ct/ct_b64.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ct/ct_oct.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ct/ct_policy.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ct/ct_prn.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ct/ct_sct.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ct/ct_sct_ctx.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ct/ct_vfy.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ct/ct_x509v3.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/des/cbc_cksm.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/cfb64ede.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/cfb64enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/cfb_enc.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/des_enc.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/ecb3_enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/ecb_enc.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/des/fcrypt.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/des/fcrypt_b.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/ncbc_enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/ofb64ede.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/ofb64enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/ofb_enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/pcbc_enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/qud_cksm.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/set_key.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/des/str2key.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/des/xcbc_enc.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/asm/crypt586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/des/asm/des-586.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/des/asm/des_enc.m4 up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/des/asm/dest4-sparcv9.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/dh/dh_ameth.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dh/dh_asn1.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/dh/dh_check.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dh/dh_gen.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dh/dh_key.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/dh/dh_lib.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/dh/dh_meth.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/dh/dh_pmeth.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc5114.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc7919.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ameth.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_asn1.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_gen.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_key.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_lib.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_meth.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ossl.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_pmeth.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_sign.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dsa/dsa_vrf.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/dso/dso_dl.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/dso/dso_dlfcn.c up to 1.16
crypto/external/bsd/openssl/dist/crypto/dso/dso_lib.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/dso/dso_openssl.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/dso/dso_vms.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/dso/dso_win32.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/ec/curve25519.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ec2_oct.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/ec/ec2_smpl.c up to 1.10
crypto/external/bsd/openssl/dist/crypto/ec/ec_ameth.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/ec/ec_asn1.c up to 1.10
crypto/external/bsd/openssl/dist/crypto/ec/ec_check.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ec_curve.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/ec/ec_cvt.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/ec/ec_key.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/ec/ec_kmeth.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/ec_lib.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/ec/ec_mult.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/ec/ec_oct.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ec/ec_pmeth.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/ec/ec_print.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ecdh_kdf.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/ecdh_ossl.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_ossl.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_sign.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_vrf.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/ecp_mont.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nist.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp224.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp256.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp521.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistputil.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistz256.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/ec/ecp_oct.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ec/ecp_smpl.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/ec/ecx_meth.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv4.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv8.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-avx2.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-ppc64.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-sparcv9.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86_64.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-ppc64.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-x86_64.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448utils.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/curve448/ed448.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/curve448/eddsa.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/curve448/field.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/curve448/point_448.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/ec/curve448/word.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/arch_intrinsics.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/f_impl.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/engine/README up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/eng_all.c up to 1.13
crypto/external/bsd/openssl/dist/crypto/engine/eng_cnf.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/eng_ctrl.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/engine/eng_devcrypto.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/engine/eng_dyn.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/engine/eng_fat.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/engine/eng_init.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/eng_lib.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/engine/eng_list.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/engine/eng_openssl.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/engine/eng_pkey.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/engine/eng_rdrand.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/engine/eng_table.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/engine/tb_asnmth.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/engine/tb_cipher.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_dh.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_digest.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_dsa.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_eckey.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/engine/tb_pkmeth.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_rand.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/engine/tb_rsa.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/err/err.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/err/err_all.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/err/openssl.ec up to 1.6
crypto/external/bsd/openssl/dist/crypto/err/openssl.txt up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/bio_md.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/evp/bio_ok.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/evp/c_allc.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/evp/c_alld.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/evp/cmeth_lib.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/evp/digest.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/evp/e_aes.c up to 1.23
crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha1.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha256.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/e_aria.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/e_bf.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/e_camellia.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/evp/e_cast.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/e_chacha20_poly1305.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/evp/e_des.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/e_des3.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/evp/e_idea.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/e_null.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/evp/e_rc2.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/evp/e_rc4.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/e_rc4_hmac_md5.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/evp/e_rc5.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/e_seed.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/e_sm4.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/evp/e_xcbc_d.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/evp/encode.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/evp/evp_enc.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/evp/evp_err.c up to 1.1.1.15
crypto/external/bsd/openssl/dist/crypto/evp/evp_lib.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/evp/evp_pbe.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/evp/evp_pkey.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/evp/m_md2.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/evp/m_md4.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/m_md5.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/m_md5_sha1.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/evp/m_mdc2.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/m_null.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/evp/m_ripemd.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/m_sha1.c up to 1.12
crypto/external/bsd/openssl/dist/crypto/evp/m_sha3.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/evp/m_sigver.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/evp/m_wp.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/names.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt2.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/evp/p_lib.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/evp/p_sign.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/evp/p_verify.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/evp/pmeth_fn.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/evp/pmeth_gn.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/evp/pmeth_lib.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/hmac/hm_ameth.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/hmac/hm_pmeth.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/hmac/hmac.c up to 1.8
crypto/external/bsd/openssl/dist/crypto/idea/i_cbc.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/idea/i_cfb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/idea/i_ecb.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/idea/i_ofb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/idea/i_skey.c up to 1.8
crypto/external/bsd/openssl/dist/crypto/kdf/hkdf.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/kdf/scrypt.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/kdf/tls1_prf.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/lhash/lh_stats.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/lhash/lhash.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/md4/md4_dgst.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/md5/md5_dgst.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-sparcv9.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-x86_64.pl up to 1.5
crypto/external/bsd/openssl/dist/crypto/modes/cbc128.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/modes/ccm128.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/modes/cfb128.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/modes/ctr128.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/modes/cts128.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/modes/gcm128.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/modes/ocb128.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/ofb128.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/modes/xts128.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/aesni-gcm-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-alpha.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-armv4.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-c64xplus.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-ia64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-parisc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-s390x.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-sparcv9.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86_64.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashp8-ppc.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashv8-armx.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/objects/o_names.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.h up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/objects/obj_lib.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/objects/obj_xref.h up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/objects/objects.txt up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_asn.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_cl.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ext.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ht.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lib.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_prn.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_srv.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_vfy.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/ocsp/v3_ocsp.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/pem/pem_all.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/pem/pem_lib.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/pem/pem_pkey.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/pem/pvkfmt.c up to 1.1.1.14
crypto/external/bsd/openssl/dist/crypto/perlasm/README up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/perlasm/arm-xlate.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/perlasm/ppc-xlate.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/perlasm/x86_64-xlate.pl up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_add.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_asn.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_attr.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_crt.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_init.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_mutl.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_npas.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_p8e.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_sbag.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_lib.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_ameth.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_pmeth.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv4.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv8.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-mips.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppc.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppcfp.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-s390x.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-sparcv9.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86_64.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/rand/build.info up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/rand/drbg_ctr.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/rand/drbg_lib.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rand/rand_err.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/rand/rand_lib.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/rand/rand_unix.c up to 1.15
crypto/external/bsd/openssl/dist/crypto/rand/rand_vms.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/rand/rand_win.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/rc2/rc2_cbc.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc2/rc2_ecb.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/rc2/rc2_skey.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rc2/rc2cfb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc2/rc2ofb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc4/rc4_enc.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/rc4/rc4_skey.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-586.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-c64xplus.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-md5-x86_64.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-parisc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-s390x.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl up to 1.7
crypto/external/bsd/openssl/dist/crypto/rc5/rc5_ecb.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc5/rc5_enc.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc5/rc5_skey.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/rc5/rc5cfb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc5/rc5ofb64.c up to 1.5
crypto/external/bsd/openssl/dist/crypto/rc5/asm/rc5-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_dgst.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/ripemd/asm/rmd-586.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ameth.c up to 1.1.1.14
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_asn1.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_chk.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_crpt.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c up to 1.6
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_lib.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_meth.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_mp.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c up to 1.11
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pmeth.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pss.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_sign.c up to 1.9
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ssl.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/rsa/rsa_x931g.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/seed/seed.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c up to 1.2
crypto/external/bsd/openssl/dist/crypto/sha/sha1dgst.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/sha256.c up to 1.10
crypto/external/bsd/openssl/dist/crypto/sha/sha512.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv4.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv8.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx2.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512vl.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-c64x.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-mmx.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl up to 1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-s390x.pl up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-x86_64.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl up to 1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-586.pl up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-alpha.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv4-large.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv8.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-c64xplus.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mb-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mips.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-parisc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-ppc.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-s390x.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9a.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-thumb.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl up to 1.9
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-586.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-armv4.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-c64xplus.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-mb-x86_64.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-586.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv4.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv8.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-c64xplus.pl up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-mips.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-parisc.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-ppc.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-s390x.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-sparcv9.pl up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-x86_64.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512p8-ppc.pl up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/siphash/siphash.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/siphash/siphash_ameth.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/siphash/siphash_pmeth.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sm2/sm2_crypt.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/sm2/sm2_err.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sm2/sm2_pmeth.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sm2/sm2_sign.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/sm3/m_sm3.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sm3/sm3.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/sm4/sm4.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/srp/srp_lib.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/srp/srp_vfy.c up to 1.1.1.12
crypto/external/bsd/openssl/dist/crypto/store/loader_file.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/store/store_init.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/store/store_lib.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/store/store_register.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ts/ts_asn1.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ts/ts_lib.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/ts/ts_req_print.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ts/ts_req_utils.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_print.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_sign.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_utils.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_verify.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/ts/ts_verify_ctx.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/ui/ui_lib.c up to 1.7
crypto/external/bsd/openssl/dist/crypto/ui/ui_null.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/ui/ui_openssl.c up to 1.16
crypto/external/bsd/openssl/dist/crypto/ui/ui_util.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_block.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_dgst.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-mmx.pl up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-x86_64.pl up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509/by_dir.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/x509/by_file.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509/t_x509.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509/x509_att.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509/x509_cmp.c up to 1.1.1.14
crypto/external/bsd/openssl/dist/crypto/x509/x509_ext.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x509_lu.c up to 1.1.1.14
crypto/external/bsd/openssl/dist/crypto/x509/x509_meth.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/x509/x509_obj.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509/x509_r2x.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x509_req.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x509_set.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509/x509_trs.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509/x509_v3.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509/x509_vfy.c up to 1.20
crypto/external/bsd/openssl/dist/crypto/x509/x509_vpm.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/crypto/x509/x509cset.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x509name.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509/x509rset.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x_all.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/crypto/x509/x_attrib.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/crypto/x509/x_crl.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509/x_exten.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/x509/x_name.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509/x_pubkey.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509/x_req.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/x509/x_x509.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509/x_x509a.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_cache.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_data.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_lib.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_map.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_node.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_tree.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_addr.c up to 1.8
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_admis.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_alt.c up to 1.1.1.10
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_asid.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_conf.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_cpols.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_crld.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_ncons.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_purp.c up to 1.1.1.13
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_skey.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/crypto/x509v3/v3_utl.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/doc/man1/ca.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man1/dgst.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man1/enc.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man1/rand.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man1/req.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man1/s_client.pod up to 1.1.1.5
crypto/external/bsd/openssl/dist/doc/man1/s_time.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man1/sess_id.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man1/x509.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/ASN1_INTEGER_get_int64.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/ASN1_TYPE_get.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/BIO_f_buffer.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/BIO_get_ex_new_index.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/BN_generate_prime.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/DTLSv1_listen.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_copy.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_new.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/EC_POINT_new.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestInit.pod up to 1.1.1.5
crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestSignInit.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestVerifyInit.pod up to 1.1.1.5
crypto/external/bsd/openssl/dist/doc/man3/EVP_EncryptInit.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/EVP_MD_meth_new.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_CTX_ctrl.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_meth_new.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_new.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/EVP_SignInit.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/EVP_aes.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/OCSP_request_add1_nonce.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/OCSP_response_status.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/OCSP_sendreq_new.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_malloc.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_secure_malloc.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/PEM_bytes_read_bio.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_PrivateKey.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_ex.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/RAND_bytes.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/RAND_set_rand_method.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/RSA_get0_key.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_sess_set_get_cb.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_use_psk_identity_hint.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_SESSION_get0_hostname.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man3/SSL_accept.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_connect.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_do_handshake.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/doc/man3/SSL_get_error.pod up to 1.1.1.6
crypto/external/bsd/openssl/dist/doc/man3/SSL_load_client_CA_file.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP_meth_new.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_CTX_new.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_add_cert.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/X509_get_extension_flags.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man3/d2i_X509.pod up to 1.1.1.4
crypto/external/bsd/openssl/dist/doc/man5/config.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man7/Ed25519.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man7/X25519.pod up to 1.1.1.3
crypto/external/bsd/openssl/dist/doc/man7/passphrase-encoding.pod up to 1.1.1.2
crypto/external/bsd/openssl/dist/engines/e_afalg.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/engines/e_afalg.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/engines/e_afalg_err.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/engines/e_capi_err.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/engines/e_dasync_err.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/engines/e_ossltest_err.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/internal/conf.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/include/internal/cryptlib.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/include/internal/dane.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/internal/dso.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/internal/dsoerr.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/include/internal/err.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/internal/nelem.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/internal/numbers.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/internal/o_dir.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/internal/o_str.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/internal/refcount.h up to 1.5
crypto/external/bsd/openssl/dist/include/internal/sockets.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/internal/sslconf.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_EPILOGUE.H up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_PROLOGUE.H up to 1.1.1.2
crypto/external/bsd/openssl/dist/include/openssl/bio.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/include/openssl/ct.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/openssl/dsa.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/include/openssl/dtls1.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/openssl/evp.h up to 1.1.1.8
crypto/external/bsd/openssl/dist/include/openssl/evperr.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/include/openssl/lhash.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/include/openssl/obj_mac.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/include/openssl/ocsp.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/include/openssl/opensslv.h up to 1.1.1.11
crypto/external/bsd/openssl/dist/include/openssl/ossl_typ.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/include/openssl/randerr.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/include/openssl/rsa.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/include/openssl/safestack.h up to 1.6
crypto/external/bsd/openssl/dist/include/openssl/sslerr.h up to 1.1.1.5
crypto/external/bsd/openssl/dist/ssl/bio_ssl.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/ssl/d1_lib.c up to 1.10
crypto/external/bsd/openssl/dist/ssl/d1_msg.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/ssl/d1_srtp.c up to 1.7
crypto/external/bsd/openssl/dist/ssl/methods.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/ssl/packet.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/pqueue.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/ssl/s3_cbc.c up to 1.10
crypto/external/bsd/openssl/dist/ssl/s3_enc.c up to 1.16
crypto/external/bsd/openssl/dist/ssl/s3_lib.c up to 1.26
crypto/external/bsd/openssl/dist/ssl/s3_msg.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/ssl/ssl_asn1.c up to 1.1.1.11
crypto/external/bsd/openssl/dist/ssl/ssl_cert.c up to 1.1.1.14
crypto/external/bsd/openssl/dist/ssl/ssl_ciph.c up to 1.20
crypto/external/bsd/openssl/dist/ssl/ssl_conf.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/ssl/ssl_init.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/ssl/ssl_lib.c up to 1.18
crypto/external/bsd/openssl/dist/ssl/ssl_mcnf.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/ssl/ssl_rsa.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/ssl/ssl_sess.c up to 1.9
crypto/external/bsd/openssl/dist/ssl/ssl_stat.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/ssl/ssl_txt.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/ssl/ssl_utst.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/ssl/t1_enc.c up to 1.21
crypto/external/bsd/openssl/dist/ssl/t1_lib.c up to 1.32
crypto/external/bsd/openssl/dist/ssl/t1_trce.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/ssl/tls13_enc.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/ssl/tls_srp.c up to 1.7
crypto/external/bsd/openssl/dist/ssl/record/README up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/record/dtls1_bitmap.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/record/rec_layer_d1.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/ssl/record/rec_layer_s3.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/ssl/record/ssl3_buffer.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/ssl/record/ssl3_record.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/ssl/record/ssl3_record_tls13.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/statem/README up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/statem/extensions.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/ssl/statem/extensions_clnt.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/ssl/statem/extensions_cust.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/ssl/statem/extensions_srvr.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/ssl/statem/statem.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/ssl/statem/statem_clnt.c up to 1.1.1.9
crypto/external/bsd/openssl/dist/ssl/statem/statem_dtls.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/ssl/statem/statem_lib.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/ssl/statem/statem_srvr.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/test/README up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/asn1_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/asynciotest.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/bad_dtls_test.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/bntest.c up to 1.8
crypto/external/bsd/openssl/dist/test/build.info up to 1.1.1.9
crypto/external/bsd/openssl/dist/test/chacha_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/cipher_overhead_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/clienthellotest.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/test/constant_time_test.c up to 1.5
crypto/external/bsd/openssl/dist/test/ctype_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/curve448_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/drbg_cavs_data.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/drbg_cavs_test.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/drbgtest.c up to 1.1.1.5
crypto/external/bsd/openssl/dist/test/dtls_mtu_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/dtlstest.c up to 1.1.1.7
crypto/external/bsd/openssl/dist/test/ec_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ecdsatest.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ectest.c up to 1.7
crypto/external/bsd/openssl/dist/test/evp_extra_test.c up to 1.9
crypto/external/bsd/openssl/dist/test/handshake_helper.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/test/handshake_helper.h up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/hmactest.c up to 1.5
crypto/external/bsd/openssl/dist/test/modes_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/packettest.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/poly1305_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/run_tests.pl up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/servername_test.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/shlibloadtest.c up to 1.1.1.6
crypto/external/bsd/openssl/dist/test/siphash_internal_test.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/sm2_internal_test.c up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/sm4_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ssl_cert_table_internal_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ssl_test_ctx.h up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/sslapitest.c up to 1.1.1.8
crypto/external/bsd/openssl/dist/test/sslbuffertest.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ssltestlib.h up to 1.1.1.8
crypto/external/bsd/openssl/dist/test/test_test.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/testutil.h up to 1.1.1.6
crypto/external/bsd/openssl/dist/test/tls13ccstest.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/tls13encryptiontest.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/tls13secretstest.c up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/wpackettest.c up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/certs/server-ed448-cert.pem up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/certs/setup.sh up to 1.1.1.7
crypto/external/bsd/openssl/dist/test/ossl_shim/async_bio.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ossl_shim/packeted_bio.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ossl_shim/test_config.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ossl_shim/include/openssl/base.h up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/recipes/10-test_bn.t up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/recipes/25-test_req.t up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/recipes/25-test_verify.t up to 1.1.1.5
crypto/external/bsd/openssl/dist/test/recipes/70-test_sslsigalgs.t up to 1.1.1.3
crypto/external/bsd/openssl/dist/test/recipes/30-test_evp_data/evpciph.txt up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf.in up to 1.1.1.4
crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf.in up to 1.1.1.2
crypto/external/bsd/openssl/dist/test/testutil/output.h up to 1.4
crypto/external/bsd/openssl/dist/test/testutil/tap_bio.c up to 1.3
crypto/external/bsd/openssl/dist/util/find-doc-nits up to 1.1.1.5
crypto/external/bsd/openssl/dist/util/libcrypto.num up to 1.1.1.9
crypto/external/bsd/openssl/dist/util/private.num up to 1.1.1.3
crypto/external/bsd/openssl/dist/util/perl/OpenSSL/Test.pm up to 1.1.1.6
crypto/external/bsd/openssl/dist/util/perl/TLSProxy/Proxy.pm up to 1.1.1.5
crypto/external/bsd/openssl/lib/libcrypto/crypto.map up to 1.8
crypto/external/bsd/openssl/lib/libcrypto/libc-sha2xx.c up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/armv8-mont.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/chacha-armv8.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/ecp_nistz256-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/keccak1600-armv8.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/poly1305-armv8.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/sha512-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/vpaes-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S up to 1.6
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/arm.inc up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/armv8-mont.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/bsaes-armv7.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/chacha-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv4.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv8.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv4.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/poly1305-armv8.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha256-armv4.S up to 1.6
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv4.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv8.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/arm/vpaes-armv8.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ecp_nistz256-x86.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppc.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S up to 1.13
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/des_enc-sparc.S up to 1.7
crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/ecp_nistz256-sparcv9.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/sparccap.c up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/des_enc-sparc.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ecp_nistz256-sparcv9.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-gcm-x86_64.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S up to 1.10
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha256-x86_64.S up to 1.5
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-x86_64.S up to 1.11
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/cmll-x86_64.S up to 1.8
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/ecp_nistz256-x86_64.S up to 1.6
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/keccak1600-x86_64.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/poly1305-x86_64.S up to 1.3
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rc4-x86_64.S up to 1.12
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rsaz-x86_64.S up to 1.4
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S up to 1.14
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha512-x86_64.S up to 1.10
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x25519-x86_64.S up to 1.2
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64-mont5.S up to 1.9
crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S up to 1.12
crypto/external/bsd/openssl/lib/libcryptotest/Makefile up to 1.3
crypto/Makefile.openssl up to 1.12
Import OpenSSL 1.1.1g:
*) Fixed segmentation fault in SSL_check_chain()
Server or client applications that call the SSL_check_chain() function
during or after a TLS 1.3 handshake may crash due to a NULL pointer
dereference as a result of incorrect handling of the
"signature_algorithms_cert" TLS extension. The crash occurs if an invalid
or unrecognised signature algorithm is received from the peer. This could
be exploited by a malicious peer in a Denial of Service attack.
(CVE-2020-1967)
[Benjamin Kaduk]
*) Added AES consttime code for no-asm configurations
an optional constant time support for AES was added
when building openssl for no-asm.
Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME
Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME
At this time this feature is by default disabled.
It will be enabled by default in 3.0.
[Bernd Edlinger]
Diffstat (limited to 'crypto')
1076 files changed, 26843 insertions, 5063 deletions
diff --git a/crypto/Makefile.openssl b/crypto/Makefile.openssl index 6194028fc7d..701a59bc931 100644 --- a/crypto/Makefile.openssl +++ b/crypto/Makefile.openssl @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.openssl,v 1.11 2018/02/04 03:19:51 christos Exp $ +# $NetBSD: Makefile.openssl,v 1.11.6.1 2020/04/27 14:47:12 martin Exp $ .ifndef _MAKEFILE_OPENSSL_INCLUDED _MAKEFILE_OPENSSL_INCLUDED=1 @@ -8,6 +8,5 @@ _MAKEFILE_OPENSSL_INCLUDED=1 OPENSSLSRC= ${CRYPTODIST}/external/bsd/${EXTERNAL_OPENSSL_SUBDIR}/dist CPPFLAGS+= -DOPENSSLDIR=\"/etc/openssl\" CPPFLAGS+= -DENGINESDIR=\"/usr/lib/openssl\" -CPPFLAGS+= -DDSO_DLFCN -DHAVE_DLFCN_H .endif diff --git a/crypto/external/bsd/openssl/dist/CHANGES b/crypto/external/bsd/openssl/dist/CHANGES index c6ca3439480..057405b0bff 100644 --- a/crypto/external/bsd/openssl/dist/CHANGES +++ b/crypto/external/bsd/openssl/dist/CHANGES @@ -7,6 +7,112 @@ https://github.com/openssl/openssl/commits/ and pick the appropriate release branch. + Changes between 1.1.1f and 1.1.1g [21 Apr 2020] + + *) Fixed segmentation fault in SSL_check_chain() + Server or client applications that call the SSL_check_chain() function + during or after a TLS 1.3 handshake may crash due to a NULL pointer + dereference as a result of incorrect handling of the + "signature_algorithms_cert" TLS extension. The crash occurs if an invalid + or unrecognised signature algorithm is received from the peer. This could + be exploited by a malicious peer in a Denial of Service attack. + (CVE-2020-1967) + [Benjamin Kaduk] + + *) Added AES consttime code for no-asm configurations + an optional constant time support for AES was added + when building openssl for no-asm. + Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME + Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME + At this time this feature is by default disabled. + It will be enabled by default in 3.0. + [Bernd Edlinger] + + Changes between 1.1.1e and 1.1.1f [31 Mar 2020] + + *) Revert the change of EOF detection while reading in libssl to avoid + regressions in applications depending on the current way of reporting + the EOF. As the existing method is not fully accurate the change to + reporting the EOF via SSL_ERROR_SSL is kept on the current development + branch and will be present in the 3.0 release. + [Tomas Mraz] + + *) Revised BN_generate_prime_ex to not avoid factors 3..17863 in p-1 + when primes for RSA keys are computed. + Since we previously always generated primes == 2 (mod 3) for RSA keys, + the 2-prime and 3-prime RSA modules were easy to distinguish, since + N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore fingerprinting + 2-prime vs. 3-prime RSA keys was possible by computing N mod 3. + This avoids possible fingerprinting of newly generated RSA modules. + [Bernd Edlinger] + + Changes between 1.1.1d and 1.1.1e [17 Mar 2020] + *) Properly detect EOF while reading in libssl. Previously if we hit an EOF + while reading in libssl then we would report an error back to the + application (SSL_ERROR_SYSCALL) but errno would be 0. We now add + an error to the stack (which means we instead return SSL_ERROR_SSL) and + therefore give a hint as to what went wrong. + [Matt Caswell] + + *) Check that ed25519 and ed448 are allowed by the security level. Previously + signature algorithms not using an MD were not being checked that they were + allowed by the security level. + [Kurt Roeckx] + + *) Fixed SSL_get_servername() behaviour. The behaviour of SSL_get_servername() + was not quite right. The behaviour was not consistent between resumption + and normal handshakes, and also not quite consistent with historical + behaviour. The behaviour in various scenarios has been clarified and + it has been updated to make it match historical behaviour as closely as + possible. + [Matt Caswell] + + *) [VMS only] The header files that the VMS compilers include automatically, + __DECC_INCLUDE_PROLOGUE.H and __DECC_INCLUDE_EPILOGUE.H, use pragmas that + the C++ compiler doesn't understand. This is a shortcoming in the + compiler, but can be worked around with __cplusplus guards. + + C++ applications that use OpenSSL libraries must be compiled using the + qualifier '/NAMES=(AS_IS,SHORTENED)' to be able to use all the OpenSSL + functions. Otherwise, only functions with symbols of less than 31 + characters can be used, as the linker will not be able to successfully + resolve symbols with longer names. + [Richard Levitte] + + *) Corrected the documentation of the return values from the EVP_DigestSign* + set of functions. The documentation mentioned negative values for some + errors, but this was never the case, so the mention of negative values + was removed. + + Code that followed the documentation and thereby check with something + like 'EVP_DigestSignInit(...) <= 0' will continue to work undisturbed. + [Richard Levitte] + + *) Fixed an an overflow bug in the x64_64 Montgomery squaring procedure + used in exponentiation with 512-bit moduli. No EC algorithms are + affected. Analysis suggests that attacks against 2-prime RSA1024, + 3-prime RSA1536, and DSA1024 as a result of this defect would be very + difficult to perform and are not believed likely. Attacks against DH512 + are considered just feasible. However, for an attack the target would + have to re-use the DH512 private key, which is not recommended anyway. + Also applications directly using the low level API BN_mod_exp may be + affected if they use BN_FLG_CONSTTIME. + (CVE-2019-1551) + [Andy Polyakov] + + *) Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY. + The presence of this system service is determined at run-time. + [Richard Levitte] + + *) Added newline escaping functionality to a filename when using openssl dgst. + This output format is to replicate the output format found in the '*sum' + checksum programs. This aims to preserve backward compatibility. + [Matt Eaton, Richard Levitte, and Paul Dale] + + *) Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just + the first value. + [Jon Spillett] + Changes between 1.1.1c and 1.1.1d [10 Sep 2019] *) Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random @@ -633,9 +739,9 @@ bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such alerts across multiple records (some of which could be empty). In practice it make no sense to send an empty alert record, or to fragment one. TLSv1.3 - prohibts this altogether and other libraries (BoringSSL, NSS) do not + prohibits this altogether and other libraries (BoringSSL, NSS) do not support this at all. Supporting it adds significant complexity to the - record layer, and its removal is unlikely to cause inter-operability + record layer, and its removal is unlikely to cause interoperability issues. [Matt Caswell] @@ -3652,7 +3758,7 @@ implementations). [Emilia Käsper, Adam Langley, Bodo Moeller (Google)] - *) Use type ossl_ssize_t instad of ssize_t which isn't available on + *) Use type ossl_ssize_t instead of ssize_t which isn't available on all platforms. Move ssize_t definition from e_os.h to the public header file e_os2.h as it now appears in public header file cms.h [Steve Henson] @@ -8373,7 +8479,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k *) New OCSP utility. Allows OCSP requests to be generated or read. The request can be sent to a responder and the output - parsed, outputed or printed in text form. Not complete yet: + parsed, outputted or printed in text form. Not complete yet: still needs to check the OCSP response validity. [Steve Henson] @@ -9368,7 +9474,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k [Andy Polyakov] *) Modified SSL library such that the verify_callback that has been set - specificly for an SSL object with SSL_set_verify() is actually being + specifically for an SSL object with SSL_set_verify() is actually being used. Before the change, a verify_callback set with this function was ignored and the verify_callback() set in the SSL_CTX at the time of the call was used. New function X509_STORE_CTX_set_verify_cb() introduced @@ -10485,10 +10591,10 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k as other interfaces in OpenSSL, like the BIO interface. NCONF_dump_* dump the internal storage of the configuration file, which is useful for debugging. All other functions take the same - arguments as the old CONF_* functions wth the exception of the + arguments as the old CONF_* functions with the exception of the first that must be a `CONF *' instead of a `LHASH *'. - To make it easer to use the new classes with the old CONF_* functions, + To make it easier to use the new classes with the old CONF_* functions, the function CONF_set_default_method is provided. [Richard Levitte] @@ -12331,7 +12437,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k than the old method: it now uses a modified version of Ulf's parser to read the ANSI prototypes in all header files (thus the old K&R definitions aren't needed for error creation any more) and do a better job of - translating function codes into names. The old 'ASN1 error code imbedded + translating function codes into names. The old 'ASN1 error code embedded in a comment' is no longer necessary and it doesn't use .err files which have now been deleted. Also the error code call doesn't have to appear all on one line (which resulted in some large lines...). @@ -12632,7 +12738,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k *) Add a useful kludge to allow package maintainers to specify compiler and other platforms details on the command line without having to patch the - Configure script everytime: One now can use ``perl Configure + Configure script every time: One now can use ``perl Configure <id>:<details>'', i.e. platform ids are allowed to have details appended to them (separated by colons). This is treated as there would be a static pre-configured entry in Configure's %table under key <id> with value diff --git a/crypto/external/bsd/openssl/dist/CONTRIBUTING b/crypto/external/bsd/openssl/dist/CONTRIBUTING index 5d717763d51..57be75ce2b8 100644 --- a/crypto/external/bsd/openssl/dist/CONTRIBUTING +++ b/crypto/external/bsd/openssl/dist/CONTRIBUTING @@ -58,7 +58,7 @@ guidelines: consider adding a note in CHANGES. This could be a summarising description of the change, and could explain the grander details. Have a look through existing entries for inspiration. - Please note that this is NOT simply a copy of git-log oneliners. + Please note that this is NOT simply a copy of git-log one-liners. Also note that security fixes get an entry in CHANGES. This file helps users get more in depth information of what comes with a specific release without having to sift through the higher diff --git a/crypto/external/bsd/openssl/dist/Configurations/10-main.conf b/crypto/external/bsd/openssl/dist/Configurations/10-main.conf index 3c4299d2640..df1cc005297 100644 --- a/crypto/external/bsd/openssl/dist/Configurations/10-main.conf +++ b/crypto/external/bsd/openssl/dist/Configurations/10-main.conf @@ -263,7 +263,7 @@ my %targets = ( # primarily because vendor assembler can't assemble our modules # with -KPIC flag. As result it, assembly support, was not even # available as option. But its lack means lack of side-channel - # resistant code, which is incompatible with security by todays + # resistant code, which is incompatible with security by today's # standards. Fortunately gcc is readily available prepackaged # option, which we can firmly point at... # @@ -434,7 +434,7 @@ my %targets = ( # 32-bit message digests. (For the moment of this writing) HP C # doesn't seem to "digest" too many local variables (they make "him" # chew forever:-). For more details look-up MD32_XARRAY comment in -# crypto/sha/sha_lcl.h. +# crypto/sha/sha_local.h. # - originally there were 32-bit hpux-parisc2-* targets. They were # scrapped, because a) they were not interchangeable with other 32-bit # targets; b) performance-critical 32-bit assembly modules implement @@ -1313,7 +1313,6 @@ my %targets = ( "VC-WIN32" => { inherit_from => [ "VC-noCE-common", asm("x86_asm"), sub { $disabled{shared} ? () : "uplink_common" } ], - CFLAGS => add("/WX"), AS => sub { vc_win32_info()->{AS} }, ASFLAGS => sub { vc_win32_info()->{ASFLAGS} }, asoutflag => sub { vc_win32_info()->{asoutflag} }, diff --git a/crypto/external/bsd/openssl/dist/Configurations/15-android.conf b/crypto/external/bsd/openssl/dist/Configurations/15-android.conf index 7b496a4529b..4616394f8cf 100644 --- a/crypto/external/bsd/openssl/dist/Configurations/15-android.conf +++ b/crypto/external/bsd/openssl/dist/Configurations/15-android.conf @@ -241,7 +241,7 @@ my %targets = ( }, #################################################################### - # Backward compatible targets, (might) requre $CROSS_SYSROOT + # Backward compatible targets, (might) require $CROSS_SYSROOT # "android-armeabi" => { inherit_from => [ "android-arm" ], diff --git a/crypto/external/bsd/openssl/dist/Configurations/50-win-onecore.conf b/crypto/external/bsd/openssl/dist/Configurations/50-win-onecore.conf index d478f42b0f8..c5952791192 100644 --- a/crypto/external/bsd/openssl/dist/Configurations/50-win-onecore.conf +++ b/crypto/external/bsd/openssl/dist/Configurations/50-win-onecore.conf @@ -4,7 +4,7 @@ # Mobile[?] Windows editions. It's a set up "umbrella" libraries that # export subset of Win32 API that are common to all Windows 10 devices. # -# OneCore Configuration temporarly dedicated for console applications +# OneCore Configuration temporarily dedicated for console applications # due to disabled event logging, which is incompatible with one core. # Error messages are provided via standard error only. # TODO: extend error handling to use ETW based eventing diff --git a/crypto/external/bsd/openssl/dist/Configurations/descrip.mms.tmpl b/crypto/external/bsd/openssl/dist/Configurations/descrip.mms.tmpl index 0ccd5f0751b..399f34b3eea 100644 --- a/crypto/external/bsd/openssl/dist/Configurations/descrip.mms.tmpl +++ b/crypto/external/bsd/openssl/dist/Configurations/descrip.mms.tmpl @@ -343,6 +343,7 @@ CPPFLAGS_Q={- (my $c = $lib_cppflags.$cppflags2.$cppflags1) =~ s|"|""|g; # # #include <openssl/foo.h> # #include "internal/bar.h" +# #include "crypto/something.h" # # will use the logical names to find the files. Expecting # DECompHP C to find files in subdirectories of whatever was @@ -351,11 +352,13 @@ NODEBUG=@ .FIRST : $(NODEBUG) openssl_inc1 = F$PARSE("[.include.openssl]","A.;",,,"syntax_only") - "A.;" $(NODEBUG) openssl_inc2 = F$PARSE("{- catdir($config{sourcedir},"[.include.openssl]") -}","A.;",,,"SYNTAX_ONLY") - "A.;" - $(NODEBUG) internal_inc1 = F$PARSE("[.crypto.include.internal]","A.;",,,"SYNTAX_ONLY") - "A.;" + $(NODEBUG) internal_inc1 = F$PARSE("[.include.internal]","A.;",,,"SYNTAX_ONLY") - "A.;" $(NODEBUG) internal_inc2 = F$PARSE("{- catdir($config{sourcedir},"[.include.internal]") -}","A.;",,,"SYNTAX_ONLY") - "A.;" - $(NODEBUG) internal_inc3 = F$PARSE("{- catdir($config{sourcedir},"[.crypto.include.internal]") -}","A.;",,,"SYNTAX_ONLY") - "A.;" + $(NODEBUG) crypto_inc1 = F$PARSE("[.include.crypto]","A.;",,,"SYNTAX_ONLY") - "A.;" + $(NODEBUG) crypto_inc2 = F$PARSE("{- catdir($config{sourcedir},"[.include.crypto]") -}","A.;",,,"SYNTAX_ONLY") - "A.;" $(NODEBUG) DEFINE openssl 'openssl_inc1','openssl_inc2' - $(NODEBUG) DEFINE internal 'internal_inc1','internal_inc2','internal_inc3' + $(NODEBUG) DEFINE internal 'internal_inc1','internal_inc2' + $(NODEBUG) DEFINE crypto 'crypto_inc1','crypto_inc2' $(NODEBUG) staging_dir = "$(DESTDIR)" $(NODEBUG) staging_instdir = "" $(NODEBUG) staging_datadir = "" @@ -392,6 +395,7 @@ NODEBUG=@ $(NODEBUG) {- join("\n\t\$(NODEBUG) ", map { "DEASSIGN ".uc($_) } @shlibs) || "!" -} $(NODEBUG) DEASSIGN ossl_dataroot $(NODEBUG) DEASSIGN ossl_installroot + $(NODEBUG) DEASSIGN crypto $(NODEBUG) DEASSIGN internal $(NODEBUG) DEASSIGN openssl .DEFAULT : diff --git a/crypto/external/bsd/openssl/dist/Configurations/unix-Makefile.tmpl b/crypto/external/bsd/openssl/dist/Configurations/unix-Makefile.tmpl index 7db7578a4b6..3a24d551359 100644 --- a/crypto/external/bsd/openssl/dist/Configurations/unix-Makefile.tmpl +++ b/crypto/external/bsd/openssl/dist/Configurations/unix-Makefile.tmpl @@ -516,8 +516,8 @@ libclean: clean: libclean $(RM) $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS) $(RM) $(GENERATED_MANDATORY) $(GENERATED) - -$(RM) `find . -name '*{- $depext -}' \! -name '.*' -print` - -$(RM) `find . -name '*{- $objext -}' \! -name '.*' -print` + -$(RM) `find . -name '*{- $depext -}' \! -name '.*' \! -type d -print` + -$(RM) `find . -name '*{- $objext -}' \! -name '.*' \! -type d -print` $(RM) core $(RM) tags TAGS doc-nits $(RM) -r test/test-runs @@ -547,78 +547,78 @@ uninstall_sw: uninstall_runtime uninstall_engines uninstall_dev install_docs: install_man_docs install_html_docs uninstall_docs: uninstall_man_docs uninstall_html_docs - $(RM) -r $(DESTDIR)$(DOCDIR) + $(RM) -r "$(DESTDIR)$(DOCDIR)" install_ssldirs: - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/private - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/certs" + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/private" + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/misc" @set -e; for x in dummy $(MISC_SCRIPTS); do \ if [ "$$x" = "dummy" ]; then continue; fi; \ x1=`echo "$$x" | cut -f1 -d:`; \ x2=`echo "$$x" | cut -f2 -d:`; \ fn=`basename $$x1`; \ $(ECHO) "install $$x1 -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ - cp $$x1 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ - chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ - mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \ - $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \ + cp $$x1 "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new"; \ + mv -f "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new" \ + "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ if [ "$$x1" != "$$x2" ]; then \ ln=`basename "$$x2"`; \ : {- output_off() unless windowsdll(); "" -}; \ $(ECHO) "copy $(DESTDIR)$(OPENSSLDIR)/misc/$$ln -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ - cp $(DESTDIR)$(OPENSSLDIR)/misc/$$fn $(DESTDIR)$(OPENSSLDIR)/misc/$$ln; \ + cp "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn" "$(DESTDIR)$(OPENSSLDIR)/misc/$$ln"; \ : {- output_on() unless windowsdll(); output_off() if windowsdll(); "" -}; \ $(ECHO) "link $(DESTDIR)$(OPENSSLDIR)/misc/$$ln -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ - ln -sf $$fn $(DESTDIR)$(OPENSSLDIR)/misc/$$ln; \ + ln -sf $$fn "$(DESTDIR)$(OPENSSLDIR)/misc/$$ln"; \ : {- output_on() if windowsdll(); "" -}; \ fi; \ done @$(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist" - @cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new - @chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new - @mv -f $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist + @cp $(SRCDIR)/apps/openssl.cnf "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new" + @chmod 644 "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new" + @mv -f "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new" "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist" @if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf" ]; then \ $(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \ - cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \ - chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \ + cp $(SRCDIR)/apps/openssl.cnf "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \ + chmod 644 "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \ fi @$(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist" - @cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new - @chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new - @mv -f $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist + @cp $(SRCDIR)/apps/ct_log_list.cnf "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new" + @chmod 644 "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new" + @mv -f "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new" "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist" @if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf" ]; then \ $(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \ - cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ - chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ + cp $(SRCDIR)/apps/ct_log_list.cnf "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \ + chmod 644 "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \ fi install_dev: install_runtime_libs @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @$(ECHO) "*** Installing development files" - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/include/openssl + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)/include/openssl" @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -} @$(ECHO) "install $(SRCDIR)/ms/applink.c -> $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" - @cp $(SRCDIR)/ms/applink.c $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c - @chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c + @cp $(SRCDIR)/ms/applink.c "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" + @chmod 644 "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -} @set -e; for i in $(SRCDIR)/include/openssl/*.h \ $(BLDDIR)/include/openssl/*.h; do \ fn=`basename $$i`; \ $(ECHO) "install $$i -> $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ - cp $$i $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ - chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ + cp $$i "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ + chmod 644 "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ done - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir) + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)" @set -e; for l in $(INSTALL_LIBS); do \ fn=`basename $$l`; \ $(ECHO) "install $$l -> $(DESTDIR)$(libdir)/$$fn"; \ - cp $$l $(DESTDIR)$(libdir)/$$fn.new; \ - $(RANLIB) $(DESTDIR)$(libdir)/$$fn.new; \ - chmod 644 $(DESTDIR)$(libdir)/$$fn.new; \ - mv -f $(DESTDIR)$(libdir)/$$fn.new \ - $(DESTDIR)$(libdir)/$$fn; \ + cp $$l "$(DESTDIR)$(libdir)/$$fn.new"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$fn.new"; \ + chmod 644 "$(DESTDIR)$(libdir)/$$fn.new"; \ + mv -f "$(DESTDIR)$(libdir)/$$fn.new" \ + "$(DESTDIR)$(libdir)/$$fn"; \ done @ : {- output_off() if $disabled{shared}; "" -} @set -e; for s in $(INSTALL_SHLIB_INFO); do \ @@ -629,61 +629,61 @@ install_dev: install_runtime_libs : {- output_off(); output_on() unless windowsdll() or sharedaix(); "" -}; \ if [ "$$fn1" != "$$fn2" ]; then \ $(ECHO) "link $(DESTDIR)$(libdir)/$$fn2 -> $(DESTDIR)$(libdir)/$$fn1"; \ - ln -sf $$fn1 $(DESTDIR)$(libdir)/$$fn2; \ + ln -sf $$fn1 "$(DESTDIR)$(libdir)/$$fn2"; \ fi; \ : {- output_off() unless windowsdll() or sharedaix(); output_on() if windowsdll(); "" -}; \ $(ECHO) "install $$s2 -> $(DESTDIR)$(libdir)/$$fn2"; \ - cp $$s2 $(DESTDIR)$(libdir)/$$fn2.new; \ - chmod 755 $(DESTDIR)$(libdir)/$$fn2.new; \ - mv -f $(DESTDIR)$(libdir)/$$fn2.new \ - $(DESTDIR)$(libdir)/$$fn2; \ + cp $$s2 "$(DESTDIR)$(libdir)/$$fn2.new"; \ + chmod 755 "$(DESTDIR)$(libdir)/$$fn2.new"; \ + mv -f "$(DESTDIR)$(libdir)/$$fn2.new" \ + "$(DESTDIR)$(libdir)/$$fn2"; \ : {- output_off() if windowsdll(); output_on() if sharedaix(); "" -}; \ - a=$(DESTDIR)$(libdir)/$$fn2; \ + a="$(DESTDIR)$(libdir)/$$fn2"; \ $(ECHO) "install $$s1 -> $$a"; \ - if [ -f $$a ]; then ( trap "rm -rf /tmp/ar.$$$$" INT 0; \ + if [ -f "$$a" ]; then ( trap "rm -rf /tmp/ar.$$$$" INT 0; \ mkdir /tmp/ar.$$$$; ( cd /tmp/ar.$$$$; \ - cp -f $$a $$a.new; \ - for so in `$(AR) t $$a`; do \ - $(AR) x $$a $$so; \ - chmod u+w $$so; \ - strip -X32_64 -e $$so; \ - $(AR) r $$a.new $$so; \ + cp -f "$$a" "$$a.new"; \ + for so in `$(AR) t "$$a"`; do \ + $(AR) x "$$a" "$$so"; \ + chmod u+w "$$so"; \ + strip -X32_64 -e "$$so"; \ + $(AR) r "$$a.new" "$$so"; \ done; \ )); fi; \ - $(AR) r $$a.new $$s1; \ - mv -f $$a.new $$a; \ + $(AR) r "$$a.new" "$$s1"; \ + mv -f "$$a.new" "$$a"; \ : {- output_off() if sharedaix(); output_on(); "" -}; \ done @ : {- output_on() if $disabled{shared}; "" -} - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir)/pkgconfig + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)/pkgconfig" @$(ECHO) "install libcrypto.pc -> $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc" - @cp libcrypto.pc $(DESTDIR)$(libdir)/pkgconfig - @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc + @cp libcrypto.pc "$(DESTDIR)$(libdir)/pkgconfig" + @chmod 644 "$(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc" @$(ECHO) "install libssl.pc -> $(DESTDIR)$(libdir)/pkgconfig/libssl.pc" - @cp libssl.pc $(DESTDIR)$(libdir)/pkgconfig - @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/libssl.pc + @cp libssl.pc "$(DESTDIR)$(libdir)/pkgconfig" + @chmod 644 "$(DESTDIR)$(libdir)/pkgconfig/libssl.pc" @$(ECHO) "install openssl.pc -> $(DESTDIR)$(libdir)/pkgconfig/openssl.pc" - @cp openssl.pc $(DESTDIR)$(libdir)/pkgconfig - @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/openssl.pc + @cp openssl.pc "$(DESTDIR)$(libdir)/pkgconfig" + @chmod 644 "$(DESTDIR)$(libdir)/pkgconfig/openssl.pc" uninstall_dev: uninstall_runtime_libs @$(ECHO) "*** Uninstalling development files" @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -} @$(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" - @$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c + @$(RM) "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -} @set -e; for i in $(SRCDIR)/include/openssl/*.h \ $(BLDDIR)/include/openssl/*.h; do \ fn=`basename $$i`; \ $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ - $(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ + $(RM) "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ done - -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include/openssl - -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include + -$(RMDIR) "$(DESTDIR)$(INSTALLTOP)/include/openssl" + -$(RMDIR) "$(DESTDIR)$(INSTALLTOP)/include" @set -e; for l in $(INSTALL_LIBS); do \ fn=`basename $$l`; \ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn"; \ - $(RM) $(DESTDIR)$(libdir)/$$fn; \ + $(RM) "$(DESTDIR)$(libdir)/$$fn"; \ done @ : {- output_off() if $disabled{shared}; "" -} @set -e; for s in $(INSTALL_SHLIB_INFO); do \ @@ -693,35 +693,35 @@ uninstall_dev: uninstall_runtime_libs fn2=`basename $$s2`; \ : {- output_off() if windowsdll(); "" -}; \ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \ - $(RM) $(DESTDIR)$(libdir)/$$fn2; \ + $(RM) "$(DESTDIR)$(libdir)/$$fn2"; \ if [ "$$fn1" != "$$fn2" -a -f "$(DESTDIR)$(libdir)/$$fn1" ]; then \ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn1"; \ - $(RM) $(DESTDIR)$(libdir)/$$fn1; \ + $(RM) "$(DESTDIR)$(libdir)/$$fn1"; \ fi; \ : {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \ - $(RM) $(DESTDIR)$(libdir)/$$fn2; \ + $(RM) "$(DESTDIR)$(libdir)/$$fn2"; \ : {- output_on() unless windowsdll(); "" -}; \ done @ : {- output_on() if $disabled{shared}; "" -} - $(RM) $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc - $(RM) $(DESTDIR)$(libdir)/pkgconfig/libssl.pc - $(RM) $(DESTDIR)$(libdir)/pkgconfig/openssl.pc - -$(RMDIR) $(DESTDIR)$(libdir)/pkgconfig - -$(RMDIR) $(DESTDIR)$(libdir) + $(RM) "$(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc" + $(RM) "$(DESTDIR)$(libdir)/pkgconfig/libssl.pc" + $(RM) "$(DESTDIR)$(libdir)/pkgconfig/openssl.pc" + -$(RMDIR) "$(DESTDIR)$(libdir)/pkgconfig" + -$(RMDIR) "$(DESTDIR)$(libdir)" install_engines: install_runtime_libs build_engines @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(ENGINESDIR)/" @$(ECHO) "*** Installing engines" @set -e; for e in dummy $(INSTALL_ENGINES); do \ if [ "$$e" = "dummy" ]; then continue; fi; \ fn=`basename $$e`; \ $(ECHO) "install $$e -> $(DESTDIR)$(ENGINESDIR)/$$fn"; \ - cp $$e $(DESTDIR)$(ENGINESDIR)/$$fn.new; \ - chmod 755 $(DESTDIR)$(ENGINESDIR)/$$fn.new; \ - mv -f $(DESTDIR)$(ENGINESDIR)/$$fn.new \ - $(DESTDIR)$(ENGINESDIR)/$$fn; \ + cp $$e "$(DESTDIR)$(ENGINESDIR)/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(ENGINESDIR)/$$fn.new"; \ + mv -f "$(DESTDIR)$(ENGINESDIR)/$$fn.new" \ + "$(DESTDIR)$(ENGINESDIR)/$$fn"; \ done uninstall_engines: @@ -733,18 +733,18 @@ uninstall_engines: continue; \ fi; \ $(ECHO) "$(RM) $(DESTDIR)$(ENGINESDIR)/$$fn"; \ - $(RM) $(DESTDIR)$(ENGINESDIR)/$$fn; \ + $(RM) "$(DESTDIR)$(ENGINESDIR)/$$fn"; \ done - -$(RMDIR) $(DESTDIR)$(ENGINESDIR) + -$(RMDIR) "$(DESTDIR)$(ENGINESDIR)" install_runtime: install_programs install_runtime_libs: build_libs @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @ : {- output_off() if windowsdll(); "" -} - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir) + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)" @ : {- output_on() if windowsdll(); output_off() unless windowsdll(); "" -} - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)/bin" @ : {- output_on() unless windowsdll(); "" -} @$(ECHO) "*** Installing runtime libraries" @set -e; for s in dummy $(INSTALL_SHLIBS); do \ @@ -752,40 +752,40 @@ install_runtime_libs: build_libs fn=`basename $$s`; \ : {- output_off() unless windowsdll(); "" -}; \ $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ - $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + cp $$s "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + mv -f "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new" \ + "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ : {- output_on() unless windowsdll(); "" -}{- output_off() if windowsdll(); "" -}; \ $(ECHO) "install $$s -> $(DESTDIR)$(libdir)/$$fn"; \ - cp $$s $(DESTDIR)$(libdir)/$$fn.new; \ - chmod 755 $(DESTDIR)$(libdir)/$$fn.new; \ - mv -f $(DESTDIR)$(libdir)/$$fn.new \ - $(DESTDIR)$(libdir)/$$fn; \ + cp $$s "$(DESTDIR)$(libdir)/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(libdir)/$$fn.new"; \ + mv -f "$(DESTDIR)$(libdir)/$$fn.new" \ + "$(DESTDIR)$(libdir)/$$fn"; \ : {- output_on() if windowsdll(); "" -}; \ done install_programs: install_runtime_libs build_programs @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) - @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin + @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)/bin" @$(ECHO) "*** Installing runtime programs" @set -e; for x in dummy $(INSTALL_PROGRAMS); do \ if [ "$$x" = "dummy" ]; then continue; fi; \ fn=`basename $$x`; \ $(ECHO) "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ - $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + cp $$x "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + mv -f "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new" \ + "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ done @set -e; for x in dummy $(BIN_SCRIPTS); do \ if [ "$$x" = "dummy" ]; then continue; fi; \ fn=`basename $$x`; \ $(ECHO) "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ - mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ - $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + cp $$x "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + chmod 755 "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new"; \ + mv -f "$(DESTDIR)$(INSTALLTOP)/bin/$$fn.new" \ + "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ done uninstall_runtime: uninstall_programs uninstall_runtime_libs @@ -797,16 +797,16 @@ uninstall_programs: if [ "$$x" = "dummy" ]; then continue; fi; \ fn=`basename $$x`; \ $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + $(RM) "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ done; @set -e; for x in dummy $(BIN_SCRIPTS); \ do \ if [ "$$x" = "dummy" ]; then continue; fi; \ fn=`basename $$x`; \ $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + $(RM) "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ done - -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin + -$(RMDIR) "$(DESTDIR)$(INSTALLTOP)/bin" uninstall_runtime_libs: @$(ECHO) "*** Uninstalling runtime libraries" @@ -815,7 +815,7 @@ uninstall_runtime_libs: if [ "$$s" = "dummy" ]; then continue; fi; \ fn=`basename $$s`; \ $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ - $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ + $(RM) "$(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ done @ : {- output_on() unless windowsdll(); "" -} @@ -824,24 +824,24 @@ install_man_docs: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @$(ECHO) "*** Installing manpages" $(PERL) $(SRCDIR)/util/process_docs.pl \ - --destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX) + "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX) uninstall_man_docs: @$(ECHO) "*** Uninstalling manpages" $(PERL) $(SRCDIR)/util/process_docs.pl \ - --destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX) \ + "--destdir=$(DESTDIR)$(MANDIR)" --type=man --suffix=$(MANSUFFIX) \ --remove install_html_docs: @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) @$(ECHO) "*** Installing HTML manpages" $(PERL) $(SRCDIR)/util/process_docs.pl \ - --destdir=$(DESTDIR)$(HTMLDIR) --type=html + "--destdir=$(DESTDIR)$(HTMLDIR)" --type=html uninstall_html_docs: @$(ECHO) "*** Uninstalling manpages" $(PERL) $(SRCDIR)/util/process_docs.pl \ - --destdir=$(DESTDIR)$(HTMLDIR) --type=html --remove + "--destdir=$(DESTDIR)$(HTMLDIR)" --type=html --remove # Developer targets (note: these are only available on Unix) ######### diff --git a/crypto/external/bsd/openssl/dist/Configure b/crypto/external/bsd/openssl/dist/Configure index 5a699836f32..2e9efaa5f3d 100755 --- a/crypto/external/bsd/openssl/dist/Configure +++ b/crypto/external/bsd/openssl/dist/Configure @@ -1,6 +1,6 @@ #! /usr/bin/env perl # -*- mode: perl; -*- -# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -69,7 +69,15 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx # no-sse2 disables IA-32 SSE2 code in assembly modules, the above # mentioned '386' option implies this one # no-<cipher> build without specified algorithm (rsa, idea, rc5, ...) -# -<xxx> +<xxx> compiler options are passed through +# -<xxx> +<xxx> All options which are unknown to the 'Configure' script are +# /<xxx> passed through to the compiler. Unix-style options beginning +# with a '-' or '+' are recognized, as well as Windows-style +# options beginning with a '/'. If the option contains arguments +# separated by spaces, then the URL-style notation %20 can be +# used for the space character in order to avoid having to quote +# the option. For example, -opt%20arg gets expanded to -opt arg. +# In fact, any ASCII character can be encoded as %xx using its +# hexadecimal encoding. # -static while -static is also a pass-through compiler option (and # as such is limited to environments where it's actually # meaningful), it triggers a number configuration options, @@ -152,6 +160,10 @@ my @clang_devteam_warn = qw( -Wmissing-variable-declarations ); +my @cl_devteam_warn = qw( + /WX +); + # This adds backtrace information to the memory leak info. Is only used # when crypto-mdebug-backtrace is enabled. my $memleak_devteam_backtrace = "-rdynamic"; @@ -346,6 +358,7 @@ my @disablables = ( "dgram", "dh", "dsa", + "dso", "dtls", "dynamic-engine", "ec", @@ -423,7 +436,6 @@ my %deprecated_disablables = ( "buf-freelists" => undef, "ripemd" => "rmd160", "ui" => "ui-console", - "dso" => "", # Empty string means we're silent about it ); # All of the following are disabled by default: @@ -480,6 +492,7 @@ my @disable_cascades = ( # Without position independent code, there can be no shared libraries or DSOs "pic" => [ "shared" ], "shared" => [ "dynamic-engine" ], + "dso" => [ "dynamic-engine" ], "engine" => [ "afalgeng", "devcryptoeng" ], # no-autoalginit is only useful when building non-shared @@ -520,7 +533,7 @@ while ((my $first, my $second) = (shift @list, shift @list)) { &usage if ($#ARGV < 0); -# For the "make variables" CINCLUDES and CDEFINES, we support lists with +# For the "make variables" CPPINCLUDES and CPPDEFINES, we support lists with # platform specific list separators. Users from those platforms should # recognise those separators from how you set up the PATH to find executables. # The default is the Unix like separator, :, but as an exception, we also @@ -776,7 +789,7 @@ while (@argvcopy) { die "FIPS mode not supported\n"; } - elsif (/^[-+]/) + elsif (m|^[-+/]|) { if (/^--prefix=(.*)$/) { @@ -853,11 +866,11 @@ while (@argvcopy) { push @{$useradd{LDFLAGS}}, $_; } - elsif (/^-D(.*)$/) + elsif (m|^[-/]D(.*)$|) { push @{$useradd{CPPDEFINES}}, $1; } - elsif (/^-I(.*)$/) + elsif (m|^[-/]I(.*)$|) { push @{$useradd{CPPINCLUDES}}, $1; } @@ -867,11 +880,23 @@ while (@argvcopy) } else # common if (/^[-+]/), just pass down... { + # Treat %xx as an ASCII code (e.g. replace %20 by a space character). + # This provides a simple way to pass options with arguments separated + # by spaces without quoting (e.g. -opt%20arg translates to -opt arg). $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei; push @{$useradd{CFLAGS}}, $_; push @{$useradd{CXXFLAGS}}, $_; } } + elsif (m|^/|) + { + # Treat %xx as an ASCII code (e.g. replace %20 by a space character). + # This provides a simple way to pass options with arguments separated + # by spaces without quoting (e.g. /opt%20arg translates to /opt arg). + $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei; + push @{$useradd{CFLAGS}}, $_; + push @{$useradd{CXXFLAGS}}, $_; + } else { die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); @@ -949,7 +974,11 @@ foreach (keys %user) { if (defined $value) { if (ref $user{$_} eq 'ARRAY') { - $user{$_} = [ split /$list_separator_re/, $value ]; + if ($_ eq 'CPPDEFINES' || $_ eq 'CPPINCLUDES') { + $user{$_} = [ split /$list_separator_re/, $value ]; + } else { + $user{$_} = [ $value ]; + } } elsif (!defined $user{$_}) { $user{$_} = $value; } @@ -1162,43 +1191,6 @@ foreach (keys %useradd) { # Allow overriding the build file name $config{build_file} = env('BUILDFILE') || $target{build_file} || "Makefile"; -my %disabled_info = (); # For configdata.pm -foreach my $what (sort keys %disabled) { - $config{options} .= " no-$what"; - - if (!grep { $what eq $_ } ( 'buildtest-c++', 'threads', 'shared', 'pic', - 'dynamic-engine', 'makedepend', - 'zlib-dynamic', 'zlib', 'sse2' )) { - (my $WHAT = uc $what) =~ s|-|_|g; - - # Fix up C macro end names - $WHAT = "RMD160" if $what eq "ripemd"; - - # fix-up crypto/directory name(s) - $what = "ripemd" if $what eq "rmd160"; - $what = "whrlpool" if $what eq "whirlpool"; - - my $macro = $disabled_info{$what}->{macro} = "OPENSSL_NO_$WHAT"; - - if ((grep { $what eq $_ } @{$config{sdirs}}) - && $what ne 'async' && $what ne 'err') { - @{$config{sdirs}} = grep { $what ne $_} @{$config{sdirs}}; - $disabled_info{$what}->{skipped} = [ catdir('crypto', $what) ]; - - if ($what ne 'engine') { - push @{$config{openssl_algorithm_defines}}, $macro; - } else { - @{$config{dirs}} = grep !/^engines$/, @{$config{dirs}}; - push @{$disabled_info{engine}->{skipped}}, catdir('engines'); - push @{$config{openssl_other_defines}}, $macro; - } - } else { - push @{$config{openssl_other_defines}}, $macro; - } - - } -} - # Make sure build_scheme is consistent. $target{build_scheme} = [ $target{build_scheme} ] if ref($target{build_scheme}) ne "ARRAY"; @@ -1288,10 +1280,8 @@ if ($target{shared_target} eq "") } if ($disabled{"dynamic-engine"}) { - push @{$config{openssl_other_defines}}, "OPENSSL_NO_DYNAMIC_ENGINE"; $config{dynamic_engines} = 0; } else { - push @{$config{openssl_other_defines}}, "OPENSSL_NO_STATIC_ENGINE"; $config{dynamic_engines} = 1; } @@ -1375,6 +1365,7 @@ unless ($disabled{asm}) { } if ($target{aes_asm_src}) { push @{$config{lib_defines}}, "AES_ASM" if ($target{aes_asm_src} =~ m/\baes-/);; + push @{$config{lib_defines}}, "AESNI_ASM" if ($target{aes_asm_src} =~ m/\baesni-/);; # aes-ctr.fake is not a real file, only indication that assembler # module implements AES_ctr32_encrypt... push @{$config{lib_defines}}, "AES_CTR_ASM" if ($target{aes_asm_src} =~ s/\s*aes-ctr\.fake//); @@ -1501,11 +1492,20 @@ if ($strict_warnings) my $wopt; my $gccver = $predefined_C{__GNUC__} // -1; - warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike" - unless $gccver >= 4; - push @strict_warnings_collection, @gcc_devteam_warn; - push @strict_warnings_collection, @clang_devteam_warn - if (defined($predefined_C{__clang__})); + if ($gccver >= 4) + { + push @strict_warnings_collection, @gcc_devteam_warn; + push @strict_warnings_collection, @clang_devteam_warn + if (defined($predefined_C{__clang__})); + } + elsif ($config{target} =~ /^VC-/) + { + push @strict_warnings_collection, @cl_devteam_warn; + } + else + { + warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike, or MSVC" + } } if (grep { $_ eq '-static' } @{$config{LDFLAGS}}) { @@ -1552,7 +1552,20 @@ unless ($disabled{afalgeng}) { } } -push @{$config{openssl_other_defines}}, "OPENSSL_NO_AFALGENG" if ($disabled{afalgeng}); +unless ($disabled{devcryptoeng}) { + if ($target =~ m/^BSD/) { + my $maxver = 5*100 + 7; + my $sysstr = `uname -s`; + my $verstr = `uname -r`; + $sysstr =~ s|\R$||; + $verstr =~ s|\R$||; + my ($ma, $mi, @rest) = split m|\.|, $verstr; + my $ver = $ma*100 + $mi; + if ($sysstr eq 'OpenBSD' && $ver >= $maxver) { + disable('too-new-kernel', 'devcryptoeng'); + } + } +} # Get the extra flags used when building shared libraries and modules. We # do this late because some of them depend on %disabled. @@ -1597,6 +1610,49 @@ $target{module_ldflags} = $target{shared_ldflag} unless defined $target{module_l # ALL MODIFICATIONS TO %disabled, %config and %target MUST BE DONE FROM HERE ON +my %disabled_info = (); # For configdata.pm +foreach my $what (sort keys %disabled) { + $config{options} .= " no-$what"; + + if (!grep { $what eq $_ } ( 'buildtest-c++', 'threads', 'shared', 'pic', + 'dynamic-engine', 'makedepend', + 'zlib-dynamic', 'zlib', 'sse2' )) { + (my $WHAT = uc $what) =~ s|-|_|g; + + # Fix up C macro end names + $WHAT = "RMD160" if $what eq "ripemd"; + + # fix-up crypto/directory name(s) + $what = "ripemd" if $what eq "rmd160"; + $what = "whrlpool" if $what eq "whirlpool"; + + my $macro = $disabled_info{$what}->{macro} = "OPENSSL_NO_$WHAT"; + + if ((grep { $what eq $_ } @{$config{sdirs}}) + && $what ne 'async' && $what ne 'err' && $what ne 'dso') { + @{$config{sdirs}} = grep { $what ne $_} @{$config{sdirs}}; + $disabled_info{$what}->{skipped} = [ catdir('crypto', $what) ]; + + if ($what ne 'engine') { + push @{$config{openssl_algorithm_defines}}, $macro; + } else { + @{$config{dirs}} = grep !/^engines$/, @{$config{dirs}}; + push @{$disabled_info{engine}->{skipped}}, catdir('engines'); + push @{$config{openssl_other_defines}}, $macro; + } + } else { + push @{$config{openssl_other_defines}}, $macro; + } + + } +} + +if ($disabled{"dynamic-engine"}) { + push @{$config{openssl_other_defines}}, "OPENSSL_NO_DYNAMIC_ENGINE"; +} else { + push @{$config{openssl_other_defines}}, "OPENSSL_NO_STATIC_ENGINE"; +} + # If we use the unified build, collect information from build.info files my %unified_info = (); diff --git a/crypto/external/bsd/openssl/dist/INSTALL b/crypto/external/bsd/openssl/dist/INSTALL index 2119cbae9e5..f5118428b3b 100644 --- a/crypto/external/bsd/openssl/dist/INSTALL +++ b/crypto/external/bsd/openssl/dist/INSTALL @@ -351,6 +351,9 @@ Don't build support for datagram based BIOs. Selecting this option will also force the disabling of DTLS. + no-dso + Don't build support for loading Dynamic Shared Objects. + enable-devcryptoeng Build the /dev/crypto engine. It is automatically selected on BSD implementations, in which case it can be disabled with @@ -532,9 +535,9 @@ conjunction with the "-DPEDANTIC" option (or the --strict-warnings option). - no-ui - Don't build with the "UI" capability (i.e. the set of - features enabling text based prompts). + no-ui-console + Don't build with the "UI" console method (i.e. the "UI" + method that enables text based console prompts). enable-unit-test Enable additional unit test APIs. This should not typically @@ -605,10 +608,19 @@ Take note of the VAR=value documentation below and how these flags interact with those variables. - -xxx, +xxx + -xxx, +xxx, /xxx Additional options that are not otherwise recognised are - passed through as they are to the compiler as well. Again, - consult your compiler documentation. + passed through as they are to the compiler as well. + Unix-style options beginning with a '-' or '+' and + Windows-style options beginning with a '/' are recognized. + Again, consult your compiler documentation. + + If the option contains arguments separated by spaces, + then the URL-style notation %20 can be used for the space + character in order to avoid having to quote the option. + For example, -opt%20arg gets expanded to -opt arg. + In fact, any ASCII character can be encoded as %xx using its + hexadecimal encoding. Take note of the VAR=value documentation below and how these flags interact with those variables. @@ -1071,7 +1083,7 @@ HASHBANGPERL The command string for the Perl executable to insert in the - #! line of perl scripts that will be publically installed. + #! line of perl scripts that will be publicly installed. Default: /usr/bin/env perl Note: the value of this variable is added to the same scripts on all platforms, but it's only relevant on Unix-like platforms. diff --git a/crypto/external/bsd/openssl/dist/NEWS b/crypto/external/bsd/openssl/dist/NEWS index 1c88dee3538..455b02dcb26 100644 --- a/crypto/external/bsd/openssl/dist/NEWS +++ b/crypto/external/bsd/openssl/dist/NEWS @@ -5,6 +5,21 @@ This file gives a brief overview of the major changes between each OpenSSL release. For more details please read the CHANGES file. + Major changes between OpenSSL 1.1.1f and OpenSSL 1.1.1g [21 Apr 2020] + + o Fixed segmentation fault in SSL_check_chain() (CVE-2020-1967) + + Major changes between OpenSSL 1.1.1e and OpenSSL 1.1.1f [31 Mar 2020] + + o Revert the unexpected EOF reporting via SSL_ERROR_SSL + + Major changes between OpenSSL 1.1.1d and OpenSSL 1.1.1e [17 Mar 2020] + + o Fixed an overflow bug in the x64_64 Montgomery squaring procedure + used in exponentiation with 512-bit moduli (CVE-2019-1551) + o Properly detect unexpected EOF while reading in libssl and report + it via SSL_ERROR_SSL + Major changes between OpenSSL 1.1.1c and OpenSSL 1.1.1d [10 Sep 2019] o Fixed a fork protection issue (CVE-2019-1549) diff --git a/crypto/external/bsd/openssl/dist/NOTES.ANDROID b/crypto/external/bsd/openssl/dist/NOTES.ANDROID index 86459778fae..f19ec71b836 100644 --- a/crypto/external/bsd/openssl/dist/NOTES.ANDROID +++ b/crypto/external/bsd/openssl/dist/NOTES.ANDROID @@ -15,22 +15,33 @@ Configuration ------------- - Android is naturally cross-compiled target and you can't use ./config. + Android is a naturally cross-compiled target and you can't use ./config. You have to use ./Configure and name your target explicitly; there are android-arm, android-arm64, android-mips, android-mip64, android-x86 - and android-x86_64. Do not pass --cross-compile-prefix (as you might - be tempted), as it will be "calculated" automatically based on chosen - platform. Though you still need to know the prefix to extend your PATH, - in order to invoke $(CROSS_COMPILE)gcc and company. (Configure will fail - and give you a hint if you get it wrong.) Apart from PATH adjustment - you need to set ANDROID_NDK_HOME environment to point at NDK directory - as /some/where/android-ndk-<ver>. Both variables are significant at both - configuration and compilation times. NDK customarily supports multiple - Android API levels, e.g. android-14, android-21, etc. By default latest - one available is chosen. If you need to target older platform, pass - additional -D__ANDROID_API__=N to Configure. N is numeric value of the - target platform version. For example, to compile for ICS on ARM with - NDK 10d: + and android-x86_64 (*MIPS targets are no longer supported with NDK R20+). + Do not pass --cross-compile-prefix (as you might be tempted), as it will + be "calculated" automatically based on chosen platform. Though you still + need to know the prefix to extend your PATH, in order to invoke + $(CROSS_COMPILE)clang [*gcc on NDK 19 and lower] and company. (Configure + will fail and give you a hint if you get it wrong.) Apart from PATH + adjustment you need to set ANDROID_NDK_HOME environment to point at the + NDK directory. If you're using a side-by-side NDK the path will look + something like /some/where/android-sdk/ndk/<ver>, and for a standalone + NDK the path will be something like /some/where/android-ndk-<ver>. + Both variables are significant at both configuration and compilation times. + The NDK customarily supports multiple Android API levels, e.g. android-14, + android-21, etc. By default latest API level is chosen. If you need to + target an older platform pass the argument -D__ANDROID_API__=N to Configure, + with N being the numerical value of the target platform version. For example, + to compile for Android 10 arm64 with a side-by-side NDK r20.0.5594570 + + export ANDROID_NDK_HOME=/home/whoever/Android/android-sdk/ndk/20.0.5594570 + PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH + ./Configure android-arm64 -D__ANDROID_API__=29 + make + + Older versions of the NDK have GCC under their common prebuilt tools directory, so the bin path + will be slightly different. EG: to compile for ICS on ARM with NDK 10d: export ANDROID_NDK_HOME=/some/where/android-ndk-10d PATH=$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH diff --git a/crypto/external/bsd/openssl/dist/README b/crypto/external/bsd/openssl/dist/README index 51bb4789be2..46c2b537bed 100644 --- a/crypto/external/bsd/openssl/dist/README +++ b/crypto/external/bsd/openssl/dist/README @@ -1,7 +1,7 @@ - OpenSSL 1.1.1d 10 Sep 2019 + OpenSSL 1.1.1g 21 Apr 2020 - Copyright (c) 1998-2019 The OpenSSL Project + Copyright (c) 1998-2020 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson All rights reserved. diff --git a/crypto/external/bsd/openssl/dist/apps/apps.c b/crypto/external/bsd/openssl/dist/apps/apps.c index 7177c5d9826..c06241abb97 100644 --- a/crypto/external/bsd/openssl/dist/apps/apps.c +++ b/crypto/external/bsd/openssl/dist/apps/apps.c @@ -1962,26 +1962,46 @@ unsigned char *next_protos_parse(size_t *outlen, const char *in) size_t len; unsigned char *out; size_t i, start = 0; + size_t skipped = 0; len = strlen(in); - if (len >= 65535) + if (len == 0 || len >= 65535) return NULL; - out = app_malloc(strlen(in) + 1, "NPN buffer"); + out = app_malloc(len + 1, "NPN buffer"); for (i = 0; i <= len; ++i) { if (i == len || in[i] == ',') { + /* + * Zero-length ALPN elements are invalid on the wire, we could be + * strict and reject the entire string, but just ignoring extra + * commas seems harmless and more friendly. + * + * Every comma we skip in this way puts the input buffer another + * byte ahead of the output buffer, so all stores into the output + * buffer need to be decremented by the number commas skipped. + */ + if (i == start) { + ++start; + ++skipped; + continue; + } if (i - start > 255) { OPENSSL_free(out); return NULL; } - out[start] = (unsigned char)(i - start); + out[start-skipped] = (unsigned char)(i - start); start = i + 1; } else { - out[i + 1] = in[i]; + out[i + 1 - skipped] = in[i]; } } - *outlen = len + 1; + if (len <= skipped) { + OPENSSL_free(out); + return NULL; + } + + *outlen = len + 1 - skipped; return out; } diff --git a/crypto/external/bsd/openssl/dist/apps/apps.h b/crypto/external/bsd/openssl/dist/apps/apps.h index 4a3e1a88573..34c3fd8633c 100644 --- a/crypto/external/bsd/openssl/dist/apps/apps.h +++ b/crypto/external/bsd/openssl/dist/apps/apps.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_APPS_H -# define HEADER_APPS_H +#ifndef OSSL_APPS_H +# define OSSL_APPS_H # include "e_os.h" /* struct timeval for DTLS */ # include "internal/nelem.h" diff --git a/crypto/external/bsd/openssl/dist/apps/build.info b/crypto/external/bsd/openssl/dist/apps/build.info index 751d8da8281..01537361820 100644 --- a/crypto/external/bsd/openssl/dist/apps/build.info +++ b/crypto/external/bsd/openssl/dist/apps/build.info @@ -1,16 +1,17 @@ {- our @apps_openssl_src = qw(openssl.c - asn1pars.c ca.c ciphers.c cms.c crl.c crl2p7.c dgst.c dhparam.c - dsa.c dsaparam.c ec.c ecparam.c enc.c engine.c errstr.c gendsa.c - genpkey.c genrsa.c nseq.c ocsp.c passwd.c pkcs12.c pkcs7.c pkcs8.c - pkey.c pkeyparam.c pkeyutl.c prime.c rand.c req.c rsa.c rsautl.c + asn1pars.c ca.c ciphers.c cms.c crl.c crl2p7.c dgst.c + enc.c errstr.c + genpkey.c nseq.c passwd.c pkcs7.c pkcs8.c + pkey.c pkeyparam.c pkeyutl.c prime.c rand.c req.c s_client.c s_server.c s_time.c sess_id.c smime.c speed.c spkac.c - srp.c ts.c verify.c version.c x509.c rehash.c storeutl.c); + verify.c version.c x509.c rehash.c storeutl.c); our @apps_lib_src = ( qw(apps.c opt.c s_cb.c s_socket.c app_rand.c bf_prefix.c), split(/\s+/, $target{apps_aux_src}) ); our @apps_init_src = split(/\s+/, $target{apps_init_src}); "" -} + IF[{- !$disabled{apps} -}] LIBS_NO_INST=libapps.a SOURCE[libapps.a]={- join(" ", @apps_lib_src) -} @@ -21,11 +22,51 @@ IF[{- !$disabled{apps} -}] SOURCE[openssl]={- join(" ", @apps_openssl_src) -} INCLUDE[openssl]=.. ../include DEPEND[openssl]=libapps.a ../libssl - -IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-)/ -}] - GENERATE[openssl.rc]=../util/mkrc.pl openssl - SOURCE[openssl]=openssl.rc -ENDIF + IF[{- !$disabled{'des'} -}] + SOURCE[openssl]=pkcs12.c + DEPEND[pkcs12.o]=progs.h + ENDIF + IF[{- !$disabled{'ec'} -}] + SOURCE[openssl]=ec.c ecparam.c + DEPEND[ec.o]=progs.h + DEPEND[ecparam.o]=progs.h + ENDIF + IF[{- !$disabled{'ocsp'} -}] + SOURCE[openssl]=ocsp.c + DEPEND[ocsp.o]=progs.h + ENDIF + IF[{- !$disabled{'srp'} -}] + SOURCE[openssl]=srp.c + DEPEND[srp.o]=progs.h + ENDIF + IF[{- !$disabled{'ts'} -}] + SOURCE[openssl]=ts.c + DEPEND[ts.o]=progs.h + ENDIF + IF[{- !$disabled{'dh'} -}] + SOURCE[openssl]=dhparam.c + DEPEND[dhparam.o]=progs.h + ENDIF + IF[{- !$disabled{'dsa'} -}] + SOURCE[openssl]=dsa.c dsaparam.c gendsa.c + DEPEND[dsa.o]=progs.h + DEPEND[dsaparam.o]=progs.h + DEPEND[gendsa.o]=progs.h + ENDIF + IF[{- !$disabled{'engine'} -}] + SOURCE[openssl]=engine.c + DEPEND[engine.o]=progs.h + ENDIF + IF[{- !$disabled{'rsa'} -}] + SOURCE[openssl]=rsa.c rsautl.c genrsa.c + DEPEND[rsa.o]=progs.h + DEPEND[rsautl.o]=progs.h + DEPEND[genrsa.o]=progs.h + ENDIF + IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-)/ -}] + GENERATE[openssl.rc]=../util/mkrc.pl openssl + SOURCE[openssl]=openssl.rc + ENDIF {- join("\n ", map { (my $x = $_) =~ s|\.c$|.o|; "DEPEND[$x]=progs.h" } @apps_openssl_src) -} diff --git a/crypto/external/bsd/openssl/dist/apps/dgst.c b/crypto/external/bsd/openssl/dist/apps/dgst.c index d6f5a0e2e71..e595f7d8186 100644 --- a/crypto/external/bsd/openssl/dist/apps/dgst.c +++ b/crypto/external/bsd/openssl/dist/apps/dgst.c @@ -19,6 +19,7 @@ #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/hmac.h> +#include <ctype.h> #undef BUFSIZE #define BUFSIZE 1024*8 @@ -27,9 +28,15 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, EVP_PKEY *key, unsigned char *sigin, int siglen, const char *sig_name, const char *md_name, const char *file); +static void show_digests(const OBJ_NAME *name, void *bio_); + +struct doall_dgst_digests { + BIO *bio; + int n; +}; typedef enum OPTION_choice { - OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, + OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, OPT_LIST, OPT_C, OPT_R, OPT_OUT, OPT_SIGN, OPT_PASSIN, OPT_VERIFY, OPT_PRVERIFY, OPT_SIGNATURE, OPT_KEYFORM, OPT_ENGINE, OPT_ENGINE_IMPL, OPT_HEX, OPT_BINARY, OPT_DEBUG, OPT_FIPS_FINGERPRINT, @@ -43,6 +50,7 @@ const OPTIONS dgst_options[] = { {OPT_HELP_STR, 1, '-', " file... files to digest (default is stdin)\n"}, {"help", OPT_HELP, '-', "Display this summary"}, + {"list", OPT_LIST, '-', "List digests"}, {"c", OPT_C, '-', "Print the digest with separating colons"}, {"r", OPT_R, '-', "Print the digest in coreutils format"}, {"out", OPT_OUT, '>', "Output to filename rather than stdout"}, @@ -91,6 +99,7 @@ int dgst_main(int argc, char **argv) int i, ret = 1, out_bin = -1, want_pub = 0, do_verify = 0; unsigned char *buf = NULL, *sigbuf = NULL; int engine_impl = 0; + struct doall_dgst_digests dec; prog = opt_progname(argv[0]); buf = app_malloc(BUFSIZE, "I/O buffer"); @@ -108,6 +117,15 @@ int dgst_main(int argc, char **argv) opt_help(dgst_options); ret = 0; goto end; + case OPT_LIST: + BIO_printf(bio_out, "Supported digests:\n"); + dec.bio = bio_out; + dec.n = 0; + OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, + show_digests, &dec); + BIO_printf(bio_out, "\n"); + ret = 0; + goto end; case OPT_C: separator = 1; break; @@ -413,20 +431,86 @@ int dgst_main(int argc, char **argv) return ret; } +static void show_digests(const OBJ_NAME *name, void *arg) +{ + struct doall_dgst_digests *dec = (struct doall_dgst_digests *)arg; + const EVP_MD *md = NULL; + + /* Filter out signed digests (a.k.a signature algorithms) */ + if (strstr(name->name, "rsa") != NULL || strstr(name->name, "RSA") != NULL) + return; + + if (!islower((unsigned char)*name->name)) + return; + + /* Filter out message digests that we cannot use */ + md = EVP_get_digestbyname(name->name); + if (md == NULL) + return; + + BIO_printf(dec->bio, "-%-25s", name->name); + if (++dec->n == 3) { + BIO_printf(dec->bio, "\n"); + dec->n = 0; + } else { + BIO_printf(dec->bio, " "); + } +} + +/* + * The newline_escape_filename function performs newline escaping for any + * filename that contains a newline. This function also takes a pointer + * to backslash. The backslash pointer is a flag to indicating whether a newline + * is present in the filename. If a newline is present, the backslash flag is + * set and the output format will contain a backslash at the beginning of the + * digest output. This output format is to replicate the output format found + * in the '*sum' checksum programs. This aims to preserve backward + * compatibility. + */ +static const char *newline_escape_filename(const char *file, int * backslash) +{ + size_t i, e = 0, length = strlen(file), newline_count = 0, mem_len = 0; + char *file_cpy = NULL; + + for (i = 0; i < length; i++) + if (file[i] == '\n') + newline_count++; + + mem_len = length + newline_count + 1; + file_cpy = app_malloc(mem_len, file); + i = 0; + + while(e < length) { + const char c = file[e]; + if (c == '\n') { + file_cpy[i++] = '\\'; + file_cpy[i++] = 'n'; + *backslash = 1; + } else { + file_cpy[i++] = c; + } + e++; + } + file_cpy[i] = '\0'; + return (const char*)file_cpy; +} + + int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, EVP_PKEY *key, unsigned char *sigin, int siglen, const char *sig_name, const char *md_name, const char *file) { - size_t len; - int i; + size_t len = BUFSIZE; + int i, backslash = 0, ret = 1; + unsigned char *sigbuf = NULL; while (BIO_pending(bp) || !BIO_eof(bp)) { i = BIO_read(bp, (char *)buf, BUFSIZE); if (i < 0) { BIO_printf(bio_err, "Read Error in %s\n", file); ERR_print_errors(bio_err); - return 1; + goto end; } if (i == 0) break; @@ -439,37 +523,51 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, BIO_printf(out, "Verified OK\n"); } else if (i == 0) { BIO_printf(out, "Verification Failure\n"); - return 1; + goto end; } else { BIO_printf(bio_err, "Error Verifying Data\n"); ERR_print_errors(bio_err); - return 1; + goto end; } - return 0; + ret = 0; + goto end; } if (key != NULL) { EVP_MD_CTX *ctx; + int pkey_len; BIO_get_md_ctx(bp, &ctx); - len = BUFSIZE; + pkey_len = EVP_PKEY_size(key); + if (pkey_len > BUFSIZE) { + len = pkey_len; + sigbuf = app_malloc(len, "Signature buffer"); + buf = sigbuf; + } if (!EVP_DigestSignFinal(ctx, buf, &len)) { BIO_printf(bio_err, "Error Signing Data\n"); ERR_print_errors(bio_err); - return 1; + goto end; } } else { len = BIO_gets(bp, (char *)buf, BUFSIZE); if ((int)len < 0) { ERR_print_errors(bio_err); - return 1; + goto end; } } if (binout) { BIO_write(out, buf, len); } else if (sep == 2) { + file = newline_escape_filename(file, &backslash); + + if (backslash == 1) + BIO_puts(out, "\\"); + for (i = 0; i < (int)len; i++) BIO_printf(out, "%02x", buf[i]); + BIO_printf(out, " *%s\n", file); + OPENSSL_free((char *)file); } else { if (sig_name != NULL) { BIO_puts(out, sig_name); @@ -488,5 +586,11 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, } BIO_printf(out, "\n"); } - return 0; + + ret = 0; + end: + if (sigbuf != NULL) + OPENSSL_clear_free(sigbuf, len); + + return ret; } diff --git a/crypto/external/bsd/openssl/dist/apps/dhparam.c b/crypto/external/bsd/openssl/dist/apps/dhparam.c index 13f76754d27..98c73214b53 100644 --- a/crypto/external/bsd/openssl/dist/apps/dhparam.c +++ b/crypto/external/bsd/openssl/dist/apps/dhparam.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,28 +8,24 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_DH -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <time.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/bn.h> -# include <openssl/dh.h> -# include <openssl/x509.h> -# include <openssl/pem.h> - -# ifndef OPENSSL_NO_DSA -# include <openssl/dsa.h> -# endif - -# define DEFBITS 2048 +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/bn.h> +#include <openssl/dh.h> +#include <openssl/x509.h> +#include <openssl/pem.h> + +#ifndef OPENSSL_NO_DSA +# include <openssl/dsa.h> +#endif + +#define DEFBITS 2048 static int dh_cb(int p, int n, BN_GENCB *cb); @@ -56,13 +52,13 @@ const OPTIONS dhparam_options[] = { {"C", OPT_C, '-', "Print C code"}, {"2", OPT_2, '-', "Generate parameters using 2 as the generator value"}, {"5", OPT_5, '-', "Generate parameters using 5 as the generator value"}, -# ifndef OPENSSL_NO_DSA +#ifndef OPENSSL_NO_DSA {"dsaparam", OPT_DSAPARAM, '-', "Read or generate DSA parameters, convert to DH"}, -# endif -# ifndef OPENSSL_NO_ENGINE +#endif +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine e, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -146,13 +142,13 @@ int dhparam_main(int argc, char **argv) if (g && !num) num = DEFBITS; -# ifndef OPENSSL_NO_DSA +#ifndef OPENSSL_NO_DSA if (dsaparam && g) { BIO_printf(bio_err, "generator may not be chosen for DSA parameters\n"); goto end; } -# endif +#endif out = bio_open_default(outfile, 'w', outformat); if (out == NULL) @@ -173,7 +169,7 @@ int dhparam_main(int argc, char **argv) BN_GENCB_set(cb, dh_cb, bio_err); -# ifndef OPENSSL_NO_DSA +#ifndef OPENSSL_NO_DSA if (dsaparam) { DSA *dsa = DSA_new(); @@ -196,7 +192,7 @@ int dhparam_main(int argc, char **argv) goto end; } } else -# endif +#endif { dh = DH_new(); BIO_printf(bio_err, @@ -217,7 +213,7 @@ int dhparam_main(int argc, char **argv) if (in == NULL) goto end; -# ifndef OPENSSL_NO_DSA +#ifndef OPENSSL_NO_DSA if (dsaparam) { DSA *dsa; @@ -239,7 +235,7 @@ int dhparam_main(int argc, char **argv) goto end; } } else -# endif +#endif { if (informat == FORMAT_ASN1) { /* @@ -376,4 +372,3 @@ static int dh_cb(int p, int n, BN_GENCB *cb) (void)BIO_flush(BN_GENCB_get_arg(cb)); return 1; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/dsa.c b/crypto/external/bsd/openssl/dist/apps/dsa.c index 6022e64cd4c..c7884df166b 100644 --- a/crypto/external/bsd/openssl/dist/apps/dsa.c +++ b/crypto/external/bsd/openssl/dist/apps/dsa.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,23 +8,19 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_DSA -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <time.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/dsa.h> -# include <openssl/evp.h> -# include <openssl/x509.h> -# include <openssl/pem.h> -# include <openssl/bn.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/dsa.h> +#include <openssl/evp.h> +#include <openssl/x509.h> +#include <openssl/pem.h> +#include <openssl/bn.h> typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -49,14 +45,14 @@ const OPTIONS dsa_options[] = { {"passin", OPT_PASSIN, 's', "Input file pass phrase source"}, {"passout", OPT_PASSOUT, 's', "Output file pass phrase source"}, {"", OPT_CIPHER, '-', "Any supported cipher"}, -# ifndef OPENSSL_NO_RC4 +#ifndef OPENSSL_NO_RC4 {"pvk-strong", OPT_PVK_STRONG, '-', "Enable 'Strong' PVK encoding level (default)"}, {"pvk-weak", OPT_PVK_WEAK, '-', "Enable 'Weak' PVK encoding level"}, {"pvk-none", OPT_PVK_NONE, '-', "Don't enforce PVK encoding"}, -# endif -# ifndef OPENSSL_NO_ENGINE +#endif +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine e, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -71,9 +67,9 @@ int dsa_main(int argc, char **argv) OPTION_CHOICE o; int informat = FORMAT_PEM, outformat = FORMAT_PEM, text = 0, noout = 0; int i, modulus = 0, pubin = 0, pubout = 0, ret = 1; -# ifndef OPENSSL_NO_RC4 +#ifndef OPENSSL_NO_RC4 int pvk_encr = 2; -# endif +#endif int private = 0; prog = opt_init(argc, argv, dsa_options); @@ -214,7 +210,7 @@ int dsa_main(int argc, char **argv) i = PEM_write_bio_DSAPrivateKey(out, dsa, enc, NULL, 0, NULL, passout); } -# ifndef OPENSSL_NO_RSA +#ifndef OPENSSL_NO_RSA } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) { EVP_PKEY *pk; pk = EVP_PKEY_new(); @@ -229,13 +225,13 @@ int dsa_main(int argc, char **argv) goto end; } assert(private); -# ifdef OPENSSL_NO_RC4 +# ifdef OPENSSL_NO_RC4 BIO_printf(bio_err, "PVK format not supported\n"); EVP_PKEY_free(pk); goto end; -# else +# else i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout); -# endif +# endif } else if (pubin || pubout) { i = i2b_PublicKey_bio(out, pk); } else { @@ -243,7 +239,7 @@ int dsa_main(int argc, char **argv) i = i2b_PrivateKey_bio(out, pk); } EVP_PKEY_free(pk); -# endif +#endif } else { BIO_printf(bio_err, "bad output format specified for outfile\n"); goto end; @@ -262,4 +258,3 @@ int dsa_main(int argc, char **argv) OPENSSL_free(passout); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/dsaparam.c b/crypto/external/bsd/openssl/dist/apps/dsaparam.c index b227b76a372..75589ac6bc4 100644 --- a/crypto/external/bsd/openssl/dist/apps/dsaparam.c +++ b/crypto/external/bsd/openssl/dist/apps/dsaparam.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,22 +8,18 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_DSA -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <time.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/bn.h> -# include <openssl/dsa.h> -# include <openssl/x509.h> -# include <openssl/pem.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/bn.h> +#include <openssl/dsa.h> +#include <openssl/x509.h> +#include <openssl/pem.h> static int dsa_cb(int p, int n, BN_GENCB *cb); @@ -44,9 +40,9 @@ const OPTIONS dsaparam_options[] = { {"noout", OPT_NOOUT, '-', "No output"}, {"genkey", OPT_GENKEY, '-', "Generate a DSA key"}, OPT_R_OPTIONS, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine e, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -255,4 +251,3 @@ static int dsa_cb(int p, int n, BN_GENCB *cb) (void)BIO_flush(BN_GENCB_get_arg(cb)); return 1; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/ec.c b/crypto/external/bsd/openssl/dist/apps/ec.c index 03abb006833..0c8ed750cc1 100644 --- a/crypto/external/bsd/openssl/dist/apps/ec.c +++ b/crypto/external/bsd/openssl/dist/apps/ec.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,19 +8,15 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_EC -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/evp.h> -# include <openssl/pem.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/evp.h> +#include <openssl/pem.h> static OPT_PAIR conv_forms[] = { {"compressed", POINT_CONVERSION_COMPRESSED}, @@ -62,9 +58,9 @@ const OPTIONS ec_options[] = { "Specifies the way the ec parameters are encoded"}, {"conv_form", OPT_CONV_FORM, 's', "Specifies the point conversion form "}, {"", OPT_CIPHER, '-', "Any supported cipher"}, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -280,4 +276,3 @@ int ec_main(int argc, char **argv) OPENSSL_free(passout); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/ecparam.c b/crypto/external/bsd/openssl/dist/apps/ecparam.c index 917f1a86b2e..58fbeb95c9c 100644 --- a/crypto/external/bsd/openssl/dist/apps/ecparam.c +++ b/crypto/external/bsd/openssl/dist/apps/ecparam.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -9,22 +9,18 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_EC -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <time.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/bn.h> -# include <openssl/ec.h> -# include <openssl/x509.h> -# include <openssl/pem.h> +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/bn.h> +#include <openssl/ec.h> +#include <openssl/x509.h> +#include <openssl/pem.h> typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -55,9 +51,9 @@ const OPTIONS ecparam_options[] = { "Specifies the way the ec parameters are encoded"}, {"genkey", OPT_GENKEY, '-', "Generate ec key"}, OPT_R_OPTIONS, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -446,5 +442,3 @@ int ecparam_main(int argc, char **argv) BIO_free_all(out); return ret; } - -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/enc.c b/crypto/external/bsd/openssl/dist/apps/enc.c index d1772f3eb9f..ddf51e0dba1 100644 --- a/crypto/external/bsd/openssl/dist/apps/enc.c +++ b/crypto/external/bsd/openssl/dist/apps/enc.c @@ -50,7 +50,8 @@ typedef enum OPTION_choice { const OPTIONS enc_options[] = { {"help", OPT_HELP, '-', "Display this summary"}, - {"ciphers", OPT_LIST, '-', "List ciphers"}, + {"list", OPT_LIST, '-', "List ciphers"}, + {"ciphers", OPT_LIST, '-', "Alias for -list"}, {"in", OPT_IN, '<', "Input file"}, {"out", OPT_OUT, '>', "Output file"}, {"pass", OPT_PASS, 's', "Passphrase source"}, diff --git a/crypto/external/bsd/openssl/dist/apps/engine.c b/crypto/external/bsd/openssl/dist/apps/engine.c index 83f9588a0ab..746cace354b 100644 --- a/crypto/external/bsd/openssl/dist/apps/engine.c +++ b/crypto/external/bsd/openssl/dist/apps/engine.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,19 +8,15 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_ENGINE -NON_EMPTY_TRANSLATION_UNIT -#else - -# include "apps.h" -# include "progs.h" -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <openssl/err.h> -# include <openssl/engine.h> -# include <openssl/ssl.h> -# include <openssl/store.h> +#include "apps.h" +#include "progs.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <openssl/err.h> +#include <openssl/engine.h> +#include <openssl/ssl.h> +#include <openssl/store.h> typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -486,4 +482,3 @@ int engine_main(int argc, char **argv) BIO_free_all(out); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/gendsa.c b/crypto/external/bsd/openssl/dist/apps/gendsa.c index 401375420bf..ec57c92a949 100644 --- a/crypto/external/bsd/openssl/dist/apps/gendsa.c +++ b/crypto/external/bsd/openssl/dist/apps/gendsa.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,22 +8,18 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_DSA -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <string.h> -# include <sys/types.h> -# include <sys/stat.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/bn.h> -# include <openssl/dsa.h> -# include <openssl/x509.h> -# include <openssl/pem.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/bn.h> +#include <openssl/dsa.h> +#include <openssl/x509.h> +#include <openssl/pem.h> typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -39,9 +35,9 @@ const OPTIONS gendsa_options[] = { {"passout", OPT_PASSOUT, 's', "Output file pass phrase source"}, OPT_R_OPTIONS, {"", OPT_CIPHER, '-', "Encrypt the output with any supported cipher"}, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -143,4 +139,3 @@ int gendsa_main(int argc, char **argv) OPENSSL_free(passout); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/genrsa.c b/crypto/external/bsd/openssl/dist/apps/genrsa.c index c17cd147154..e34a2f7ab9e 100644 --- a/crypto/external/bsd/openssl/dist/apps/genrsa.c +++ b/crypto/external/bsd/openssl/dist/apps/genrsa.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,27 +8,23 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_RSA -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <string.h> -# include <sys/types.h> -# include <sys/stat.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/bn.h> -# include <openssl/rsa.h> -# include <openssl/evp.h> -# include <openssl/x509.h> -# include <openssl/pem.h> -# include <openssl/rand.h> - -# define DEFBITS 2048 -# define DEFPRIMES 2 +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/bn.h> +#include <openssl/rsa.h> +#include <openssl/evp.h> +#include <openssl/x509.h> +#include <openssl/pem.h> +#include <openssl/rand.h> + +#define DEFBITS 2048 +#define DEFPRIMES 2 static int genrsa_cb(int p, int n, BN_GENCB *cb); @@ -48,9 +44,9 @@ const OPTIONS genrsa_options[] = { OPT_R_OPTIONS, {"passout", OPT_PASSOUT, 's', "Output file pass phrase source"}, {"", OPT_CIPHER, '-', "Encrypt the output with any supported cipher"}, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {"primes", OPT_PRIMES, 'p', "Specify number of primes"}, {NULL} }; @@ -198,4 +194,3 @@ static int genrsa_cb(int p, int n, BN_GENCB *cb) (void)BIO_flush(BN_GENCB_get_arg(cb)); return 1; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/ocsp.c b/crypto/external/bsd/openssl/dist/apps/ocsp.c index 5d239181699..27ec94fa6b8 100644 --- a/crypto/external/bsd/openssl/dist/apps/ocsp.c +++ b/crypto/external/bsd/openssl/dist/apps/ocsp.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -9,65 +9,62 @@ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_OCSP -NON_EMPTY_TRANSLATION_UNIT -#else -# ifdef OPENSSL_SYS_VMS -# define _XOPEN_SOURCE_EXTENDED/* So fd_set and friends get properly defined +#ifdef OPENSSL_SYS_VMS +# define _XOPEN_SOURCE_EXTENDED/* So fd_set and friends get properly defined * on OpenVMS */ -# endif +#endif -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <time.h> -# include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <ctype.h> /* Needs to be included before the openssl headers */ -# include "apps.h" -# include "progs.h" -# include "internal/sockets.h" -# include <openssl/e_os2.h> -# include <openssl/crypto.h> -# include <openssl/err.h> -# include <openssl/ssl.h> -# include <openssl/evp.h> -# include <openssl/bn.h> -# include <openssl/x509v3.h> -# include <openssl/rand.h> +#include "apps.h" +#include "progs.h" +#include "internal/sockets.h" +#include <openssl/e_os2.h> +#include <openssl/crypto.h> +#include <openssl/err.h> +#include <openssl/ssl.h> +#include <openssl/evp.h> +#include <openssl/bn.h> +#include <openssl/x509v3.h> +#include <openssl/rand.h> #ifndef HAVE_FORK -# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) -# define HAVE_FORK 0 -# else -# define HAVE_FORK 1 -# endif +#if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) +# define HAVE_FORK 0 +#else +# define HAVE_FORK 1 +#endif #endif #if HAVE_FORK -# undef NO_FORK +#undef NO_FORK #else -# define NO_FORK +#define NO_FORK #endif -# if !defined(NO_FORK) && !defined(OPENSSL_NO_SOCK) \ +#if !defined(NO_FORK) && !defined(OPENSSL_NO_SOCK) \ && !defined(OPENSSL_NO_POSIX_IO) -# define OCSP_DAEMON -# include <sys/types.h> -# include <sys/wait.h> -# include <syslog.h> -# include <signal.h> -# define MAXERRLEN 1000 /* limit error text sent to syslog to 1000 bytes */ -# else -# undef LOG_INFO -# undef LOG_WARNING -# undef LOG_ERR -# define LOG_INFO 0 -# define LOG_WARNING 1 -# define LOG_ERR 2 -# endif +# define OCSP_DAEMON +# include <sys/types.h> +# include <sys/wait.h> +# include <syslog.h> +# include <signal.h> +# define MAXERRLEN 1000 /* limit error text sent to syslog to 1000 bytes */ +#else +# undef LOG_INFO +# undef LOG_WARNING +# undef LOG_ERR +# define LOG_INFO 0 +# define LOG_WARNING 1 +# define LOG_ERR 2 +#endif -# if defined(OPENSSL_SYS_VXWORKS) +#if defined(OPENSSL_SYS_VXWORKS) /* not supported */ int setpgid(pid_t pid, pid_t pgid) { @@ -80,9 +77,9 @@ pid_t fork(void) errno = ENOSYS; return (pid_t) -1; } -# endif +#endif /* Maximum leeway in validity period: default 5 minutes */ -# define MAX_VALIDITY_PERIOD (5 * 60) +#define MAX_VALIDITY_PERIOD (5 * 60) static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md, X509 *issuer, @@ -109,20 +106,20 @@ static void log_message(int level, const char *fmt, ...); static char *prog; static int multi = 0; -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON static int acfd = (int) INVALID_SOCKET; static int index_changed(CA_DB *); static void spawn_loop(void); static int print_syslog(const char *str, size_t len, void *levPtr); -static void sock_timeout(int signum); -# endif +static void socket_timeout(int signum); +#endif -# ifndef OPENSSL_NO_SOCK +#ifndef OPENSSL_NO_SOCK static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host, const char *path, const STACK_OF(CONF_VALUE) *headers, OCSP_REQUEST *req, int req_timeout); -# endif +#endif typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -160,9 +157,9 @@ const OPTIONS ocsp_options[] = { "Don't include any certificates in response"}, {"resp_key_id", OPT_RESP_KEY_ID, '-', "Identify response by signing certificate key ID"}, -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON {"multi", OPT_MULTI, 'p', "run multiple responder processes"}, -# endif +#endif {"no_certs", OPT_NO_CERTS, '-', "Don't include any certificates in signed request"}, {"no_signature_verify", OPT_NO_SIGNATURE_VERIFY, '-', @@ -511,9 +508,9 @@ int ocsp_main(int argc, char **argv) trailing_md = 1; break; case OPT_MULTI: -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON multi = atoi(opt_arg()); -# endif +#endif break; } } @@ -593,11 +590,11 @@ int ocsp_main(int argc, char **argv) } } -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON if (multi && acbio != NULL) spawn_loop(); if (acbio != NULL && req_timeout > 0) - signal(SIGALRM, sock_timeout); + signal(SIGALRM, socket_timeout); #endif if (acbio != NULL) @@ -606,7 +603,7 @@ int ocsp_main(int argc, char **argv) redo_accept: if (acbio != NULL) { -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON if (index_changed(rdb)) { CA_DB *newrdb = load_index(ridx_filename, NULL); @@ -619,7 +616,7 @@ redo_accept: ridx_filename); } } -# endif +#endif req = NULL; if (!do_responder(&req, &cbio, acbio, req_timeout)) @@ -688,16 +685,16 @@ redo_accept: if (cbio != NULL) send_ocsp_response(cbio, resp); } else if (host != NULL) { -# ifndef OPENSSL_NO_SOCK +#ifndef OPENSSL_NO_SOCK resp = process_responder(req, host, path, port, use_ssl, headers, req_timeout); if (resp == NULL) goto end; -# else +#else BIO_printf(bio_err, "Error creating connect BIO - sockets not supported.\n"); goto end; -# endif +#endif } else if (respin != NULL) { derbio = bio_open_default(respin, 'r', FORMAT_ASN1); if (derbio == NULL) @@ -840,7 +837,7 @@ log_message(int level, const char *fmt, ...) va_list ap; va_start(ap, fmt); -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON if (multi) { char buf[1024]; if (vsnprintf(buf, sizeof(buf), fmt, ap) > 0) { @@ -849,7 +846,7 @@ log_message(int level, const char *fmt, ...) if (level >= LOG_ERR) ERR_print_errors_cb(print_syslog, &level); } -# endif +#endif if (!multi) { BIO_printf(bio_err, "%s: ", prog); BIO_vprintf(bio_err, fmt, ap); @@ -858,7 +855,7 @@ log_message(int level, const char *fmt, ...) va_end(ap); } -# ifdef OCSP_DAEMON +#ifdef OCSP_DAEMON static int print_syslog(const char *str, size_t len, void *levPtr) { @@ -1011,7 +1008,7 @@ static void spawn_loop(void) syslog(LOG_INFO, "terminating on signal: %d", termsig); killall(0, kidpids); } -# endif +#endif static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md, X509 *issuer, @@ -1291,11 +1288,11 @@ static char **lookup_serial(CA_DB *db, ASN1_INTEGER *ser) static BIO *init_responder(const char *port) { -# ifdef OPENSSL_NO_SOCK +#ifdef OPENSSL_NO_SOCK BIO_printf(bio_err, "Error setting up accept BIO - sockets not supported.\n"); return NULL; -# else +#else BIO *acbio = NULL, *bufbio = NULL; bufbio = BIO_new(BIO_f_buffer()); @@ -1322,10 +1319,10 @@ static BIO *init_responder(const char *port) BIO_free_all(acbio); BIO_free(bufbio); return NULL; -# endif +#endif } -# ifndef OPENSSL_NO_SOCK +#ifndef OPENSSL_NO_SOCK /* * Decode %xx URL-decoding in-place. Ignores mal-formed sequences. */ @@ -1349,22 +1346,22 @@ static int urldecode(char *p) *out = '\0'; return (int)(out - save); } -# endif +#endif -# ifdef OCSP_DAEMON -static void sock_timeout(int signum) +#ifdef OCSP_DAEMON +static void socket_timeout(int signum) { if (acfd != (int)INVALID_SOCKET) (void)shutdown(acfd, SHUT_RD); } -# endif +#endif static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, int timeout) { -# ifdef OPENSSL_NO_SOCK +#ifdef OPENSSL_NO_SOCK return 0; -# else +#else int len; OCSP_REQUEST *req = NULL; char inbuf[2048], reqbuf[2048]; @@ -1382,12 +1379,12 @@ static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, *pcbio = cbio; client = BIO_get_peer_name(cbio); -# ifdef OCSP_DAEMON +# ifdef OCSP_DAEMON if (timeout > 0) { (void) BIO_get_fd(cbio, &acfd); alarm(timeout); } -# endif +# endif /* Read the request line. */ len = BIO_gets(cbio, reqbuf, sizeof(reqbuf)); @@ -1450,11 +1447,11 @@ static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, break; } -# ifdef OCSP_DAEMON +# ifdef OCSP_DAEMON /* Clear alarm before we close the client socket */ alarm(0); timeout = 0; -# endif +# endif /* Try to read OCSP request */ if (getbio != NULL) { @@ -1470,13 +1467,13 @@ static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, *preq = req; out: -# ifdef OCSP_DAEMON +# ifdef OCSP_DAEMON if (timeout > 0) alarm(0); acfd = (int)INVALID_SOCKET; -# endif - return 1; # endif + return 1; +#endif } static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp) @@ -1492,7 +1489,7 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp) return 1; } -# ifndef OPENSSL_NO_SOCK +#ifndef OPENSSL_NO_SOCK static OCSP_RESPONSE *query_responder(BIO *cbio, const char *host, const char *path, const STACK_OF(CONF_VALUE) *headers, @@ -1623,6 +1620,4 @@ OCSP_RESPONSE *process_responder(OCSP_REQUEST *req, SSL_CTX_free(ctx); return resp; } -# endif - #endif diff --git a/crypto/external/bsd/openssl/dist/apps/openssl.c b/crypto/external/bsd/openssl/dist/apps/openssl.c index 9648f35b028..ff7b759a40b 100644 --- a/crypto/external/bsd/openssl/dist/apps/openssl.c +++ b/crypto/external/bsd/openssl/dist/apps/openssl.c @@ -164,6 +164,13 @@ int main(int argc, char *argv[]) } prog = prog_init(); + if (prog == NULL) { + BIO_printf(bio_err, + "FATAL: Startup failure (dev note: prog_init() failed)\n"); + ERR_print_errors(bio_err); + ret = 1; + goto end; + } pname = opt_progname(argv[0]); /* first check the program name */ diff --git a/crypto/external/bsd/openssl/dist/apps/passwd.c b/crypto/external/bsd/openssl/dist/apps/passwd.c index aa516c874e6..d741d05335f 100644 --- a/crypto/external/bsd/openssl/dist/apps/passwd.c +++ b/crypto/external/bsd/openssl/dist/apps/passwd.c @@ -807,7 +807,7 @@ static int do_passwd(int passed_salt, char **salt_p, char **salt_malloc_p, (*salt_p)[i] = cov_2char[(*salt_p)[i] & 0x3f]; /* 6 bits */ (*salt_p)[i] = 0; # ifdef CHARSET_EBCDIC - /* The password encryption funtion will convert back to ASCII */ + /* The password encryption function will convert back to ASCII */ ascii2ebcdic(*salt_p, *salt_p, saltlen); # endif } diff --git a/crypto/external/bsd/openssl/dist/apps/pkcs12.c b/crypto/external/bsd/openssl/dist/apps/pkcs12.c index d0600b37604..8c5d963b8c6 100644 --- a/crypto/external/bsd/openssl/dist/apps/pkcs12.c +++ b/crypto/external/bsd/openssl/dist/apps/pkcs12.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,25 +8,21 @@ */ #include <openssl/opensslconf.h> -#if defined(OPENSSL_NO_DES) -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/crypto.h> -# include <openssl/err.h> -# include <openssl/pem.h> -# include <openssl/pkcs12.h> - -# define NOKEYS 0x1 -# define NOCERTS 0x2 -# define INFO 0x4 -# define CLCERTS 0x8 -# define CACERTS 0x10 +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/crypto.h> +#include <openssl/err.h> +#include <openssl/pem.h> +#include <openssl/pkcs12.h> + +#define NOKEYS 0x1 +#define NOCERTS 0x2 +#define INFO 0x4 +#define CLCERTS 0x8 +#define CACERTS 0x10 #define PASSWD_BUF_SIZE 2048 @@ -41,6 +37,7 @@ int dump_certs_pkeys_bags(BIO *out, const STACK_OF(PKCS12_SAFEBAG) *bags, int dump_certs_pkeys_bag(BIO *out, const PKCS12_SAFEBAG *bags, const char *pass, int passlen, int options, char *pempass, const EVP_CIPHER *enc); +void print_attribute(BIO *out, const ASN1_TYPE *av); int print_attribs(BIO *out, const STACK_OF(X509_ATTRIBUTE) *attrlst, const char *name); void hex_prin(BIO *out, unsigned char *buf, int len); @@ -73,15 +70,15 @@ const OPTIONS pkcs12_options[] = { {"chain", OPT_CHAIN, '-', "Add certificate chain"}, {"twopass", OPT_TWOPASS, '-', "Separate MAC, encryption passwords"}, {"nomacver", OPT_NOMACVER, '-', "Don't verify MAC"}, -# ifndef OPENSSL_NO_RC2 +#ifndef OPENSSL_NO_RC2 {"descert", OPT_DESCERT, '-', "Encrypt output with 3DES (default RC2-40)"}, {"certpbe", OPT_CERTPBE, 's', "Certificate PBE algorithm (default RC2-40)"}, -# else +#else {"descert", OPT_DESCERT, '-', "Encrypt output with 3DES (the default)"}, {"certpbe", OPT_CERTPBE, 's', "Certificate PBE algorithm (default 3DES)"}, -# endif +#endif {"export", OPT_EXPORT, '-', "Output PKCS12 file"}, {"noiter", OPT_NOITER, '-', "Don't use encryption iteration"}, {"maciter", OPT_MACITER, '-', "Use MAC iteration"}, @@ -112,9 +109,9 @@ const OPTIONS pkcs12_options[] = { {"no-CApath", OPT_NOCAPATH, '-', "Do not load certificates from the default certificates directory"}, {"", OPT_CIPHER, '-', "Any supported cipher"}, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -125,11 +122,11 @@ int pkcs12_main(int argc, char **argv) char pass[PASSWD_BUF_SIZE] = "", macpass[PASSWD_BUF_SIZE] = ""; int export_cert = 0, options = 0, chain = 0, twopass = 0, keytype = 0; int iter = PKCS12_DEFAULT_ITER, maciter = PKCS12_DEFAULT_ITER; -# ifndef OPENSSL_NO_RC2 +#ifndef OPENSSL_NO_RC2 int cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC; -# else +#else int cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; -# endif +#endif int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; int ret = 1, macver = 1, add_lmk = 0, private = 0; int noprompt = 0; @@ -878,6 +875,38 @@ int cert_load(BIO *in, STACK_OF(X509) *sk) return ret; } +/* Generalised x509 attribute value print */ + +void print_attribute(BIO *out, const ASN1_TYPE *av) +{ + char *value; + + switch (av->type) { + case V_ASN1_BMPSTRING: + value = OPENSSL_uni2asc(av->value.bmpstring->data, + av->value.bmpstring->length); + BIO_printf(out, "%s\n", value); + OPENSSL_free(value); + break; + + case V_ASN1_OCTET_STRING: + hex_prin(out, av->value.octet_string->data, + av->value.octet_string->length); + BIO_printf(out, "\n"); + break; + + case V_ASN1_BIT_STRING: + hex_prin(out, av->value.bit_string->data, + av->value.bit_string->length); + BIO_printf(out, "\n"); + break; + + default: + BIO_printf(out, "<Unsupported tag %d>\n", av->type); + break; + } +} + /* Generalised attribute print: handle PKCS#8 and bag attributes */ int print_attribs(BIO *out, const STACK_OF(X509_ATTRIBUTE) *attrlst, @@ -885,8 +914,7 @@ int print_attribs(BIO *out, const STACK_OF(X509_ATTRIBUTE) *attrlst, { X509_ATTRIBUTE *attr; ASN1_TYPE *av; - char *value; - int i, attr_nid; + int i, j, attr_nid; if (!attrlst) { BIO_printf(out, "%s: <No Attributes>\n", name); return 1; @@ -910,30 +938,10 @@ int print_attribs(BIO *out, const STACK_OF(X509_ATTRIBUTE) *attrlst, } if (X509_ATTRIBUTE_count(attr)) { - av = X509_ATTRIBUTE_get0_type(attr, 0); - switch (av->type) { - case V_ASN1_BMPSTRING: - value = OPENSSL_uni2asc(av->value.bmpstring->data, - av->value.bmpstring->length); - BIO_printf(out, "%s\n", value); - OPENSSL_free(value); - break; - - case V_ASN1_OCTET_STRING: - hex_prin(out, av->value.octet_string->data, - av->value.octet_string->length); - BIO_printf(out, "\n"); - break; - - case V_ASN1_BIT_STRING: - hex_prin(out, av->value.bit_string->data, - av->value.bit_string->length); - BIO_printf(out, "\n"); - break; - - default: - BIO_printf(out, "<Unsupported tag %d>\n", av->type); - break; + for (j = 0; j < X509_ATTRIBUTE_count(attr); j++) + { + av = X509_ATTRIBUTE_get0_type(attr, j); + print_attribute(out, av); } } else { BIO_printf(out, "<No Values>\n"); @@ -964,5 +972,3 @@ static int set_pbe(int *ppbe, const char *str) } return 1; } - -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/pkeyutl.c b/crypto/external/bsd/openssl/dist/apps/pkeyutl.c index 2c4e524b693..831e14dab4b 100644 --- a/crypto/external/bsd/openssl/dist/apps/pkeyutl.c +++ b/crypto/external/bsd/openssl/dist/apps/pkeyutl.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -299,8 +299,7 @@ int pkeyutl_main(int argc, char **argv) /* Sanity check the input */ if (buf_inlen > EVP_MAX_MD_SIZE && (pkey_op == EVP_PKEY_OP_SIGN - || pkey_op == EVP_PKEY_OP_VERIFY - || pkey_op == EVP_PKEY_OP_VERIFYRECOVER)) { + || pkey_op == EVP_PKEY_OP_VERIFY)) { BIO_printf(bio_err, "Error: The input data looks too long to be a hash\n"); goto end; diff --git a/crypto/external/bsd/openssl/dist/apps/rehash.c b/crypto/external/bsd/openssl/dist/apps/rehash.c index 2b769fbceb8..fc1dffe9749 100644 --- a/crypto/external/bsd/openssl/dist/apps/rehash.c +++ b/crypto/external/bsd/openssl/dist/apps/rehash.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2013-2014 Timo Teräs <timo.teras@gmail.com> * * Licensed under the OpenSSL license (the "License"). You may not use @@ -274,11 +274,19 @@ static int do_file(const char *filename, const char *fullpath, enum Hash h) if (x->x509 != NULL) { type = TYPE_CERT; name = X509_get_subject_name(x->x509); - X509_digest(x->x509, evpmd, digest, NULL); + if (!X509_digest(x->x509, evpmd, digest, NULL)) { + BIO_printf(bio_err, "out of memory\n"); + ++errs; + goto end; + } } else if (x->crl != NULL) { type = TYPE_CRL; name = X509_CRL_get_issuer(x->crl); - X509_CRL_digest(x->crl, evpmd, digest, NULL); + if (!X509_CRL_digest(x->crl, evpmd, digest, NULL)) { + BIO_printf(bio_err, "out of memory\n"); + ++errs; + goto end; + } } else { ++errs; goto end; diff --git a/crypto/external/bsd/openssl/dist/apps/req.c b/crypto/external/bsd/openssl/dist/apps/req.c index a5966624226..fb1c2bcd681 100644 --- a/crypto/external/bsd/openssl/dist/apps/req.c +++ b/crypto/external/bsd/openssl/dist/apps/req.c @@ -200,9 +200,12 @@ static int duplicated(LHASH_OF(OPENSSL_STRING) *addexts, char *kv) *p = '\0'; /* Finally have a clean "key"; see if it's there [by attempt to add it]. */ - if ((p = (char *)lh_OPENSSL_STRING_insert(addexts, (OPENSSL_STRING*)kv)) - != NULL || lh_OPENSSL_STRING_error(addexts)) { - OPENSSL_free(p != NULL ? p : kv); + p = (char *)lh_OPENSSL_STRING_insert(addexts, (OPENSSL_STRING*)kv); + if (p != NULL) { + OPENSSL_free(p); + return 1; + } else if (lh_OPENSSL_STRING_error(addexts)) { + OPENSSL_free(kv); return -1; } @@ -435,12 +438,14 @@ int req_main(int argc, char **argv) if (verbose) BIO_printf(bio_err, "Using configuration from %s\n", template); - req_conf = app_load_config(template); + if ((req_conf = app_load_config(template)) == NULL) + goto end; if (addext_bio) { if (verbose) BIO_printf(bio_err, "Using additional configuration from command line\n"); - addext_conf = app_load_config_bio(addext_bio, NULL); + if ((addext_conf = app_load_config_bio(addext_bio, NULL)) == NULL) + goto end; } if (template != default_config_file && !app_load_modules(req_conf)) goto end; diff --git a/crypto/external/bsd/openssl/dist/apps/rsa.c b/crypto/external/bsd/openssl/dist/apps/rsa.c index fdd02dce324..aeda917cc76 100644 --- a/crypto/external/bsd/openssl/dist/apps/rsa.c +++ b/crypto/external/bsd/openssl/dist/apps/rsa.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,23 +8,19 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_RSA -NON_EMPTY_TRANSLATION_UNIT -#else - -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <time.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/rsa.h> -# include <openssl/evp.h> -# include <openssl/x509.h> -# include <openssl/pem.h> -# include <openssl/bn.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/rsa.h> +#include <openssl/evp.h> +#include <openssl/x509.h> +#include <openssl/pem.h> +#include <openssl/bn.h> typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -53,14 +49,14 @@ const OPTIONS rsa_options[] = { {"modulus", OPT_MODULUS, '-', "Print the RSA key modulus"}, {"check", OPT_CHECK, '-', "Verify key consistency"}, {"", OPT_CIPHER, '-', "Any supported cipher"}, -# if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) +#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) {"pvk-strong", OPT_PVK_STRONG, '-', "Enable 'Strong' PVK encoding level (default)"}, {"pvk-weak", OPT_PVK_WEAK, '-', "Enable 'Weak' PVK encoding level"}, {"pvk-none", OPT_PVK_NONE, '-', "Don't enforce PVK encoding"}, -# endif -# ifndef OPENSSL_NO_ENGINE +#endif +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -75,9 +71,9 @@ int rsa_main(int argc, char **argv) int i, private = 0; int informat = FORMAT_PEM, outformat = FORMAT_PEM, text = 0, check = 0; int noout = 0, modulus = 0, pubin = 0, pubout = 0, ret = 1; -# if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) +#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) int pvk_encr = 2; -# endif +#endif OPTION_CHOICE o; prog = opt_init(argc, argv, rsa_options); @@ -130,9 +126,9 @@ int rsa_main(int argc, char **argv) case OPT_PVK_STRONG: /* pvk_encr:= 2 */ case OPT_PVK_WEAK: /* pvk_encr:= 1 */ case OPT_PVK_NONE: /* pvk_encr:= 0 */ -# if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) +#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4) pvk_encr = (o - OPT_PVK_NONE); -# endif +#endif break; case OPT_NOOUT: noout = 1; @@ -265,7 +261,7 @@ int rsa_main(int argc, char **argv) i = PEM_write_bio_RSAPrivateKey(out, rsa, enc, NULL, 0, NULL, passout); } -# ifndef OPENSSL_NO_DSA +#ifndef OPENSSL_NO_DSA } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) { EVP_PKEY *pk; pk = EVP_PKEY_new(); @@ -280,13 +276,13 @@ int rsa_main(int argc, char **argv) goto end; } assert(private); -# ifdef OPENSSL_NO_RC4 +# ifdef OPENSSL_NO_RC4 BIO_printf(bio_err, "PVK format not supported\n"); EVP_PKEY_free(pk); goto end; -# else +# else i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout); -# endif +# endif } else if (pubin || pubout) { i = i2b_PublicKey_bio(out, pk); } else { @@ -294,7 +290,7 @@ int rsa_main(int argc, char **argv) i = i2b_PrivateKey_bio(out, pk); } EVP_PKEY_free(pk); -# endif +#endif } else { BIO_printf(bio_err, "bad output format specified for outfile\n"); goto end; @@ -313,4 +309,3 @@ int rsa_main(int argc, char **argv) OPENSSL_free(passout); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/rsautl.c b/crypto/external/bsd/openssl/dist/apps/rsautl.c index 5da8504d3c0..0c0fa8eba30 100644 --- a/crypto/external/bsd/openssl/dist/apps/rsautl.c +++ b/crypto/external/bsd/openssl/dist/apps/rsautl.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,25 +8,21 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_RSA -NON_EMPTY_TRANSLATION_UNIT -#else +#include "apps.h" +#include "progs.h" +#include <string.h> +#include <openssl/err.h> +#include <openssl/pem.h> +#include <openssl/rsa.h> -# include "apps.h" -# include "progs.h" -# include <string.h> -# include <openssl/err.h> -# include <openssl/pem.h> -# include <openssl/rsa.h> +#define RSA_SIGN 1 +#define RSA_VERIFY 2 +#define RSA_ENCRYPT 3 +#define RSA_DECRYPT 4 -# define RSA_SIGN 1 -# define RSA_VERIFY 2 -# define RSA_ENCRYPT 3 -# define RSA_DECRYPT 4 - -# define KEY_PRIVKEY 1 -# define KEY_PUBKEY 2 -# define KEY_CERT 3 +#define KEY_PRIVKEY 1 +#define KEY_PUBKEY 2 +#define KEY_CERT 3 typedef enum OPTION_choice { OPT_ERR = -1, OPT_EOF = 0, OPT_HELP, @@ -60,9 +56,9 @@ const OPTIONS rsautl_options[] = { {"decrypt", OPT_DECRYPT, '-', "Decrypt with private key"}, {"passin", OPT_PASSIN, 's', "Input file pass phrase source"}, OPT_R_OPTIONS, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -279,4 +275,3 @@ int rsautl_main(int argc, char **argv) OPENSSL_free(passin); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/s_cb.c b/crypto/external/bsd/openssl/dist/apps/s_cb.c index 5dc1d03f288..6406ddfb9e1 100644 --- a/crypto/external/bsd/openssl/dist/apps/s_cb.c +++ b/crypto/external/bsd/openssl/dist/apps/s_cb.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -188,6 +188,7 @@ static STRINT_PAIR cert_type_list[] = { {"RSA fixed ECDH", TLS_CT_RSA_FIXED_ECDH}, {"ECDSA fixed ECDH", TLS_CT_ECDSA_FIXED_ECDH}, {"GOST01 Sign", TLS_CT_GOST01_SIGN}, + {"GOST12 Sign", TLS_CT_GOST12_SIGN}, {NULL} }; diff --git a/crypto/external/bsd/openssl/dist/apps/s_client.c b/crypto/external/bsd/openssl/dist/apps/s_client.c index 34abdd38d4d..649d229b575 100644 --- a/crypto/external/bsd/openssl/dist/apps/s_client.c +++ b/crypto/external/bsd/openssl/dist/apps/s_client.c @@ -2253,10 +2253,7 @@ int s_client_main(int argc, char **argv) do { mbuf_len = BIO_gets(fbio, mbuf, BUFSIZZ); } - while (mbuf_len > 3 && (!isdigit((unsigned char)mbuf[0]) || - !isdigit((unsigned char)mbuf[1]) || - !isdigit((unsigned char)mbuf[2]) || - mbuf[3] != ' ')); + while (mbuf_len > 3 && (!isdigit((unsigned char)mbuf[0]) || !isdigit((unsigned char)mbuf[1]) || !isdigit((unsigned char)mbuf[2]) || mbuf[3] != ' ')); (void)BIO_flush(fbio); BIO_pop(fbio); BIO_free(fbio); @@ -2807,7 +2804,7 @@ int s_client_main(int argc, char **argv) * set the flag so we exit. */ if (read_tty && !at_eof) - openssl_fdset(fileno_stdin(), &readfds); + openssl_fdset(fdin, &readfds); #if !defined(OPENSSL_SYS_VMS) if (write_tty) openssl_fdset(fdout, &writefds); diff --git a/crypto/external/bsd/openssl/dist/apps/s_server.c b/crypto/external/bsd/openssl/dist/apps/s_server.c index 7441661a8fa..b335bc0954d 100644 --- a/crypto/external/bsd/openssl/dist/apps/s_server.c +++ b/crypto/external/bsd/openssl/dist/apps/s_server.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -180,9 +180,6 @@ static unsigned int psk_server_cb(SSL *ssl, const char *identity, } #endif -#define TLS13_AES_128_GCM_SHA256_BYTES ((const unsigned char *)"\x13\x01") -#define TLS13_AES_256_GCM_SHA384_BYTES ((const unsigned char *)"\x13\x02") - static int psk_find_session_cb(SSL *ssl, const unsigned char *identity, size_t identity_len, SSL_SESSION **sess) { @@ -1907,7 +1904,7 @@ int s_server_main(int argc, char *argv[]) BIO_printf(bio_s_out, "Setting secondary ctx parameters\n"); if (sdebug) - ssl_ctx_security_debug(ctx, sdebug); + ssl_ctx_security_debug(ctx2, sdebug); if (session_id_prefix) { if (strlen(session_id_prefix) >= 32) @@ -2427,7 +2424,7 @@ static int sv_body(int s, int stype, int prot, unsigned char *context) } FD_ZERO(&readfds); #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) - openssl_fdset(fileno_stdin(), &readfds); + openssl_fdset(fdin, &readfds); #endif openssl_fdset(s, &readfds); /* @@ -3213,6 +3210,12 @@ static int www_body(int s, int stype, int prot, unsigned char *context) if (e[0] == ' ') break; + if (e[0] == ':') { + /* Windows drive. We treat this the same way as ".." */ + dot = -1; + break; + } + switch (dot) { case 1: dot = (e[0] == '.') ? 2 : 0; @@ -3221,11 +3224,11 @@ static int www_body(int s, int stype, int prot, unsigned char *context) dot = (e[0] == '.') ? 3 : 0; break; case 3: - dot = (e[0] == '/') ? -1 : 0; + dot = (e[0] == '/' || e[0] == '\\') ? -1 : 0; break; } if (dot == 0) - dot = (e[0] == '/') ? 1 : 0; + dot = (e[0] == '/' || e[0] == '\\') ? 1 : 0; } dot = (dot == 3) || (dot == -1); /* filename contains ".." * component */ @@ -3239,11 +3242,11 @@ static int www_body(int s, int stype, int prot, unsigned char *context) if (dot) { BIO_puts(io, text); - BIO_printf(io, "'%s' contains '..' reference\r\n", p); + BIO_printf(io, "'%s' contains '..' or ':'\r\n", p); break; } - if (*p == '/') { + if (*p == '/' || *p == '\\') { BIO_puts(io, text); BIO_printf(io, "'%s' is an invalid path\r\n", p); break; diff --git a/crypto/external/bsd/openssl/dist/apps/s_time.c b/crypto/external/bsd/openssl/dist/apps/s_time.c index 1f9b68f014c..628e65b26e1 100644 --- a/crypto/external/bsd/openssl/dist/apps/s_time.c +++ b/crypto/external/bsd/openssl/dist/apps/s_time.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,7 +24,7 @@ #include <openssl/err.h> #include <internal/sockets.h> #if !defined(OPENSSL_SYS_MSDOS) -# include <unistd.h> +# include OPENSSL_UNISTD #endif #define SSL_CONNECT_NAME "localhost:4433" @@ -62,6 +62,7 @@ const OPTIONS s_time_options[] = { {"key", OPT_KEY, '<', "File with key, PEM; default is -cert file"}, {"CApath", OPT_CAPATH, '/', "PEM format directory of CA's"}, {"cafile", OPT_CAFILE, '<', "PEM format file of CA's"}, + {"CAfile", OPT_CAFILE, '<', "PEM format file of CA's"}, {"no-CAfile", OPT_NOCAFILE, '-', "Do not load the default certificates file"}, {"no-CApath", OPT_NOCAPATH, '-', diff --git a/crypto/external/bsd/openssl/dist/apps/server.pem b/crypto/external/bsd/openssl/dist/apps/server.pem index d0fc265f045..b3807591994 100644 --- a/crypto/external/bsd/openssl/dist/apps/server.pem +++ b/crypto/external/bsd/openssl/dist/apps/server.pem @@ -1,52 +1,47 @@ -subject= C = UK, O = OpenSSL Group, OU = FOR TESTING PURPOSES ONLY, CN = Test Server Cert -issuer= C = UK, O = OpenSSL Group, OU = FOR TESTING PURPOSES ONLY, CN = OpenSSL Test Intermediate CA -----BEGIN CERTIFICATE----- -MIID5zCCAs+gAwIBAgIJALnu1NlVpZ6zMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNV -BAYTAlVLMRYwFAYDVQQKDA1PcGVuU1NMIEdyb3VwMSIwIAYDVQQLDBlGT1IgVEVT -VElORyBQVVJQT1NFUyBPTkxZMSUwIwYDVQQDDBxPcGVuU1NMIFRlc3QgSW50ZXJt -ZWRpYXRlIENBMB4XDTExMTIwODE0MDE0OFoXDTIxMTAxNjE0MDE0OFowZDELMAkG -A1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxIjAgBgNVBAsMGUZPUiBU -RVNUSU5HIFBVUlBPU0VTIE9OTFkxGTAXBgNVBAMMEFRlc3QgU2VydmVyIENlcnQw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDzhPOSNtyyRspmeuUpxfNJ -KCLTuf7g3uQ4zu4iHOmRO5TQci+HhVlLZrHF9XqFXcIP0y4pWDbMSGuiorUmzmfi -R7bfSdI/+qIQt8KXRH6HNG1t8ou0VSvWId5TS5Dq/er5ODUr9OaaDva7EquHIcMv -vPQGuI+OEAcnleVCy9HVEIySrO4P3CNIicnGkwwiAud05yUAq/gPXBC1hTtmlPD7 -TVcGVSEiJdvzqqlgv02qedGrkki6GY4S7GjZxrrf7Foc2EP+51LJzwLQx3/JfrCU -41NEWAsu/Sl0tQabXESN+zJ1pDqoZ3uHMgpQjeGiE0olr+YcsSW/tJmiU9OiAr8R -AgMBAAGjgY8wgYwwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBeAwLAYJYIZI -AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW -BBSCvM8AABPR9zklmifnr9LvIBturDAfBgNVHSMEGDAWgBQ2w2yI55X+sL3szj49 -hqshgYfa2jANBgkqhkiG9w0BAQUFAAOCAQEAqb1NV0B0/pbpK9Z4/bNjzPQLTRLK -WnSNm/Jh5v0GEUOE/Beg7GNjNrmeNmqxAlpqWz9qoeoFZax+QBpIZYjROU3TS3fp -yLsrnlr0CDQ5R7kCCDGa8dkXxemmpZZLbUCpW2Uoy8sAA4JjN9OtsZY7dvUXFgJ7 -vVNTRnI01ghknbtD+2SxSQd3CWF6QhcRMAzZJ1z1cbbwGDDzfvGFPzJ+Sq+zEPds -xoVLLSetCiBc+40ZcDS5dV98h9XD7JMTQfxzA7mNGv73JoZJA6nFgj+ADSlJsY/t -JBv+z1iQRueoh9Qeee+ZbRifPouCB8FDx+AltvHTANdAq0t/K3o+pplMVA== +MIIDJTCCAg2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdSb290 +IENBMCAXDTE2MDExNDIyMjk0NloYDzIxMTYwMTE1MjIyOTQ2WjAZMRcwFQYDVQQD +DA5zZXJ2ZXIuZXhhbXBsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANVdYGrf/GHuSKqMEUhDpW22Ul2qmEmxYZI1sfw6BCUMbXn/tNXJ6VwcO+Crs7h9 +o95tveDd11q/FEcRQl6mgtBhwX/dE0bmCYUHDvLU/Bpk0gqtIKsga5bwrczEGVNV +3AEdpLPvirRJU12KBRzx3OFEv8XX4ncZV1yXC3XuiENxD8pswbSyUKd3RmxYDxG/ +8XYkWq45QrdRZynh0FUwbxfkkeqt+CjCQ2+iZKn7nZiSYkg+6w1PgkqK/z9y7pa1 +rqHBmLrvfZB1bf9aUp6r9cB+0IdD24UHBw99OHr90dPuZR3T6jlqhzfuStPgDW71 +cKzCvfFu85KVXqnwoWWVk40CAwEAAaN9MHswHQYDVR0OBBYEFMDnhL/oWSczELBS +T1FSLwbWwHrNMB8GA1UdIwQYMBaAFHB/Lq6DaFmYBCMqzes+F80k3QFJMAkGA1Ud +EwQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwGQYDVR0RBBIwEIIOc2VydmVyLmV4 +YW1wbGUwDQYJKoZIhvcNAQELBQADggEBAHvTBEN1ig8RrsT716Ginv4gGNX0LzGI +RrZ1jO7lm5emuaPNYJpGw0iX5Zdo91qGNXPZaZ75X3S55pQTActq3OPEBOll2pyk +iyjz+Zp/v5cfRZLlBbFW5gv2R94eibYr4U3fSn4B0yPcl4xH/l/HzJhGDsSDW8qK +8VIJvmvsPwmL0JMCv+FR59F+NFYZdND/KCXet59WUpF9ICmFCoBEX3EyJXEPwhbi +X2sdPzJbCjx0HLli8e0HUKNttLQxCsBTRGo6iISLLamwN47mGDa9miBADwGSiz2q +YeeuLO02zToHhnQ6KbPXOrQAqcL1kngO4g+j/ru+4AZThFkdkGnltvk= -----END CERTIFICATE----- ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA84TzkjbcskbKZnrlKcXzSSgi07n+4N7kOM7uIhzpkTuU0HIv -h4VZS2axxfV6hV3CD9MuKVg2zEhroqK1Js5n4ke230nSP/qiELfCl0R+hzRtbfKL -tFUr1iHeU0uQ6v3q+Tg1K/Tmmg72uxKrhyHDL7z0BriPjhAHJ5XlQsvR1RCMkqzu -D9wjSInJxpMMIgLndOclAKv4D1wQtYU7ZpTw+01XBlUhIiXb86qpYL9NqnnRq5JI -uhmOEuxo2ca63+xaHNhD/udSyc8C0Md/yX6wlONTRFgLLv0pdLUGm1xEjfsydaQ6 -qGd7hzIKUI3hohNKJa/mHLElv7SZolPTogK/EQIDAQABAoIBAADq9FwNtuE5IRQn -zGtO4q7Y5uCzZ8GDNYr9RKp+P2cbuWDbvVAecYq2NV9QoIiWJOAYZKklOvekIju3 -r0UZLA0PRiIrTg6NrESx3JrjWDK8QNlUO7CPTZ39/K+FrmMkV9lem9yxjJjyC34D -AQB+YRTx+l14HppjdxNwHjAVQpIx/uO2F5xAMuk32+3K+pq9CZUtrofe1q4Agj9R -5s8mSy9pbRo9kW9wl5xdEotz1LivFOEiqPUJTUq5J5PeMKao3vdK726XI4Z455Nm -W2/MA0YV0ug2FYinHcZdvKM6dimH8GLfa3X8xKRfzjGjTiMSwsdjgMa4awY3tEHH -674jhAECgYEA/zqMrc0zsbNk83sjgaYIug5kzEpN4ic020rSZsmQxSCerJTgNhmg -utKSCt0Re09Jt3LqG48msahX8ycqDsHNvlEGPQSbMu9IYeO3Wr3fAm75GEtFWePY -BhM73I7gkRt4s8bUiUepMG/wY45c5tRF23xi8foReHFFe9MDzh8fJFECgYEA9EFX -4qAik1pOJGNei9BMwmx0I0gfVEIgu0tzeVqT45vcxbxr7RkTEaDoAG6PlbWP6D9a -WQNLp4gsgRM90ZXOJ4up5DsAWDluvaF4/omabMA+MJJ5kGZ0gCj5rbZbKqUws7x8 -bp+6iBfUPJUbcqNqFmi/08Yt7vrDnMnyMw2A/sECgYEAiiuRMxnuzVm34hQcsbhH -6ymVqf7j0PW2qK0F4H1ocT9qhzWFd+RB3kHWrCjnqODQoI6GbGr/4JepHUpre1ex -4UEN5oSS3G0ru0rC3U4C59dZ5KwDHFm7ffZ1pr52ljfQDUsrjjIMRtuiwNK2OoRa -WSsqiaL+SDzSB+nBmpnAizECgYBdt/y6rerWUx4MhDwwtTnel7JwHyo2MDFS6/5g -n8qC2Lj6/fMDRE22w+CA2esp7EJNQJGv+b27iFpbJEDh+/Lf5YzIT4MwVskQ5bYB -JFcmRxUVmf4e09D7o705U/DjCgMH09iCsbLmqQ38ONIRSHZaJtMDtNTHD1yi+jF+ -OT43gQKBgQC/2OHZoko6iRlNOAQ/tMVFNq7fL81GivoQ9F1U0Qr+DH3ZfaH8eIkX -xT0ToMPJUzWAn8pZv0snA0um6SIgvkCuxO84OkANCVbttzXImIsL7pFzfcwV/ERK -UM6j0ZuSMFOCr/lGPAoOQU0fskidGEHi1/kW+suSr28TqsyYZpwBDQ== ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVXWBq3/xh7kiq +jBFIQ6VttlJdqphJsWGSNbH8OgQlDG15/7TVyelcHDvgq7O4faPebb3g3ddavxRH +EUJepoLQYcF/3RNG5gmFBw7y1PwaZNIKrSCrIGuW8K3MxBlTVdwBHaSz74q0SVNd +igUc8dzhRL/F1+J3GVdclwt17ohDcQ/KbMG0slCnd0ZsWA8Rv/F2JFquOUK3UWcp +4dBVMG8X5JHqrfgowkNvomSp+52YkmJIPusNT4JKiv8/cu6Wta6hwZi6732QdW3/ +WlKeq/XAftCHQ9uFBwcPfTh6/dHT7mUd0+o5aoc37krT4A1u9XCswr3xbvOSlV6p +8KFllZONAgMBAAECggEADLTt7A+A2Vg2jamf0dztejY0e42QWjstI2b9PZc67fXq +gyx+WYkX07t+uWegYWliG/oPJ9guXiIpE/5sJHToL37S5kmFP2CtynVcJ4wVo4DD +nY0n9+kLX0bgIuS+2V6wpoRcbbbjXM9NHrH8kfe5ftT4UtEDlLI2qLX6IcDd7p4u +OYjILChR8GSGTw96yIy2Ws/1Uq9PMw64JoT4RcK5QqnkcPMDFRH1SeLOL+zXP2c4 +nEl9yOy3HauZKxwl/Ry/XK1s3DdjopIAU29ut+hAuMiTb06kzZnumL9NoplKoZtU +otw/gVcCKhT+Ep+p6i8InLF0XEME8A0qUR0niWebgQKBgQD6vkxR49B8ZZQrzjw4 +XKs1lI9cP7cgPiuWlDHMNjYou3WbOaGrMeScvbB1Ldh9A8pjAhxlw8AaV/xs4qcA +trmVmSISVMVyc1wSGlJXWi2nUzTNs9OE3vj22SyStihf8UUZtWwX2b5Y4JrYhA/V ++ThGGqHR03oLNLShNLtJc2c7YQKBgQDZ1nkibEyrepexw/fnwkw61IJKq9wRIh1G +PREakhbe9wU5ie0knuf9razt7awzQiwFmlixmWqsM7UEtLuXNnNPciwdrKhhbvrd +vD/rkbIEHEPllIhFlDtOzn3hRBWTzWmXFjpou/2LvHTSbVis4IYVZymTp2jb1ZLs +7VbiG9JTrQKBgQDc6n75g1szzpdehQT/r33U5j/syeJBUSU8NPMu9fB/sLHsgjlT +SNEf2+y1QSBE/Or6kmiMrIv7advn30W+Vj9qc5HWTsPrk4HiHTjA553jl2alebN5 +lK4LZspjtIQcC8mS3goPdXPEgJdM/gWpwzr2YQ6DfOxBJT2j7n64NyoT4QKBgH7/ +yx+GhCx1DHtXBPDZFhg2TL+78lEK0oZgk9gp06up2CHzh44SFq6O0oLkTcCUk5Ww +poTkLIy4mJBlzfgahp+KsK2cO46SZS9g0ONFzcMXt33hWpE2Gl2XhUwPpYTF/QlY +rDTjZK5S8Mi9dzVSsNlJi7PJphiEK2R1+nFYRwcBAoGBANWoIG85jpXAOnq/Kcgx +Rl3YivR0Ke6r1tFlP58rT7X3EkiboXyQl5vLIFCAwUte6RGrLl1dy3Qyh80B9ySL +Jx6vj42CK7vgv6A96TuVYhnXTnEI6ZvwAQ2VGaw4BizhjALs/kdSE/og9aSCs3ws +KQypwAFz0tbHxaNag/bSAN0J +-----END PRIVATE KEY----- diff --git a/crypto/external/bsd/openssl/dist/apps/speed.c b/crypto/external/bsd/openssl/dist/apps/speed.c index 20149506cc7..d4ae7ab7bfd 100644 --- a/crypto/external/bsd/openssl/dist/apps/speed.c +++ b/crypto/external/bsd/openssl/dist/apps/speed.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -1242,8 +1242,6 @@ static int run_benchmark(int async_jobs, OSSL_ASYNC_FD job_fd = 0; size_t num_job_fds = 0; - run = 1; - if (async_jobs == 0) { return loop_function((void *)&loopargs); } @@ -2412,7 +2410,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_128_CML], c[D_CBC_128_CML][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_128_CML][testnum]); count++) + for (count = 0; COND(c[D_CBC_128_CML][testnum]); count++) Camellia_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &camellia_ks1, iv, CAMELLIA_ENCRYPT); @@ -2434,7 +2432,7 @@ int speed_main(int argc, char **argv) exit(1); } Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_192_CML][testnum]); count++) + for (count = 0; COND(c[D_CBC_192_CML][testnum]); count++) Camellia_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &camellia_ks2, iv, CAMELLIA_ENCRYPT); @@ -2452,7 +2450,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_256_CML], c[D_CBC_256_CML][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_256_CML][testnum]); count++) + for (count = 0; COND(c[D_CBC_256_CML][testnum]); count++) Camellia_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &camellia_ks3, iv, CAMELLIA_ENCRYPT); @@ -2472,7 +2470,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_IDEA], c[D_CBC_IDEA][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_IDEA][testnum]); count++) + for (count = 0; COND(c[D_CBC_IDEA][testnum]); count++) IDEA_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &idea_ks, iv, IDEA_ENCRYPT); @@ -2492,7 +2490,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_SEED], c[D_CBC_SEED][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_SEED][testnum]); count++) + for (count = 0; COND(c[D_CBC_SEED][testnum]); count++) SEED_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &seed_ks, iv, 1); d = Time_F(STOP); @@ -2515,7 +2513,7 @@ int speed_main(int argc, char **argv) exit(1); } Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_RC2][testnum]); count++) + for (count = 0; COND(c[D_CBC_RC2][testnum]); count++) RC2_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &rc2_ks, iv, RC2_ENCRYPT); @@ -2539,7 +2537,7 @@ int speed_main(int argc, char **argv) exit(1); } Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_RC5][testnum]); count++) + for (count = 0; COND(c[D_CBC_RC5][testnum]); count++) RC5_32_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &rc5_ks, iv, RC5_ENCRYPT); @@ -2559,7 +2557,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_BF], c[D_CBC_BF][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_BF][testnum]); count++) + for (count = 0; COND(c[D_CBC_BF][testnum]); count++) BF_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &bf_ks, iv, BF_ENCRYPT); @@ -2579,7 +2577,7 @@ int speed_main(int argc, char **argv) print_message(names[D_CBC_CAST], c[D_CBC_CAST][testnum], lengths[testnum], seconds.sym); Time_F(START); - for (count = 0, run = 1; COND(c[D_CBC_CAST][testnum]); count++) + for (count = 0; COND(c[D_CBC_CAST][testnum]); count++) CAST_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, (size_t)lengths[testnum], &cast_ks, iv, CAST_ENCRYPT); @@ -3006,7 +3004,7 @@ int speed_main(int argc, char **argv) pctx = NULL; } if (kctx == NULL || /* keygen ctx is not null */ - !EVP_PKEY_keygen_init(kctx) /* init keygen ctx */ ) { + EVP_PKEY_keygen_init(kctx) <= 0/* init keygen ctx */ ) { ecdh_checks = 0; BIO_printf(bio_err, "ECDH keygen failure.\n"); ERR_print_errors(bio_err); @@ -3014,12 +3012,12 @@ int speed_main(int argc, char **argv) break; } - if (!EVP_PKEY_keygen(kctx, &key_A) || /* generate secret key A */ - !EVP_PKEY_keygen(kctx, &key_B) || /* generate secret key B */ + if (EVP_PKEY_keygen(kctx, &key_A) <= 0 || /* generate secret key A */ + EVP_PKEY_keygen(kctx, &key_B) <= 0 || /* generate secret key B */ !(ctx = EVP_PKEY_CTX_new(key_A, NULL)) || /* derivation ctx from skeyA */ - !EVP_PKEY_derive_init(ctx) || /* init derivation ctx */ - !EVP_PKEY_derive_set_peer(ctx, key_B) || /* set peer pubkey in ctx */ - !EVP_PKEY_derive(ctx, NULL, &outlen) || /* determine max length */ + EVP_PKEY_derive_init(ctx) <= 0 || /* init derivation ctx */ + EVP_PKEY_derive_set_peer(ctx, key_B) <= 0 || /* set peer pubkey in ctx */ + EVP_PKEY_derive(ctx, NULL, &outlen) <= 0 || /* determine max length */ outlen == 0 || /* ensure outlen is a valid size */ outlen > MAX_ECDH_SIZE /* avoid buffer overflow */ ) { ecdh_checks = 0; @@ -3106,8 +3104,8 @@ int speed_main(int argc, char **argv) if ((ed_pctx = EVP_PKEY_CTX_new_id(test_ed_curves[testnum].nid, NULL)) == NULL - || !EVP_PKEY_keygen_init(ed_pctx) - || !EVP_PKEY_keygen(ed_pctx, &ed_pkey)) { + || EVP_PKEY_keygen_init(ed_pctx) <= 0 + || EVP_PKEY_keygen(ed_pctx, &ed_pkey) <= 0) { st = 0; EVP_PKEY_CTX_free(ed_pctx); break; @@ -3395,6 +3393,7 @@ static void print_message(const char *s, long num, int length, int tm) mr ? "+DT:%s:%d:%d\n" : "Doing %s for %ds on %d size blocks: ", s, tm, length); (void)BIO_flush(bio_err); + run = 1; alarm(tm); #else BIO_printf(bio_err, @@ -3412,6 +3411,7 @@ static void pkey_print_message(const char *str, const char *str2, long num, mr ? "+DTP:%d:%s:%s:%d\n" : "Doing %u bits %s %s's for %ds: ", bits, str, str2, tm); (void)BIO_flush(bio_err); + run = 1; alarm(tm); #else BIO_printf(bio_err, @@ -3584,6 +3584,7 @@ static int do_multi(int multi, int size_num) p = buf + 4; k = atoi(sstrsep(&p, sep)); sstrsep(&p, sep); + sstrsep(&p, sep); d = atof(sstrsep(&p, sep)); eddsa_results[k][0] += d; @@ -3641,7 +3642,7 @@ static void multiblock_speed(const EVP_CIPHER *evp_cipher, int lengths_single, for (j = 0; j < num; j++) { print_message(alg_name, 0, mblengths[j], seconds->sym); Time_F(START); - for (count = 0, run = 1; run && count < 0x7fffffff; count++) { + for (count = 0; run && count < 0x7fffffff; count++) { unsigned char aad[EVP_AEAD_TLS1_AAD_LEN]; EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM mb_param; size_t len = mblengths[j]; diff --git a/crypto/external/bsd/openssl/dist/apps/srp.c b/crypto/external/bsd/openssl/dist/apps/srp.c index 689574a4854..6c581738797 100644 --- a/crypto/external/bsd/openssl/dist/apps/srp.c +++ b/crypto/external/bsd/openssl/dist/apps/srp.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2004, EdelKey Project. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use @@ -12,28 +12,24 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_SRP -NON_EMPTY_TRANSLATION_UNIT -#else +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <openssl/conf.h> +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/txt_db.h> +#include <openssl/buffer.h> +#include <openssl/srp.h> +#include "apps.h" +#include "progs.h" -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include <openssl/conf.h> -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/txt_db.h> -# include <openssl/buffer.h> -# include <openssl/srp.h> -# include "apps.h" -# include "progs.h" +#define BASE_SECTION "srp" +#define CONFIG_FILE "openssl.cnf" -# define BASE_SECTION "srp" -# define CONFIG_FILE "openssl.cnf" - -# define ENV_DATABASE "srpvfile" -# define ENV_DEFAULT_SRP "default_srp" +#define ENV_DATABASE "srpvfile" +#define ENV_DEFAULT_SRP "default_srp" static int get_index(CA_DB *db, char *id, char type) { @@ -212,9 +208,9 @@ const OPTIONS srp_options[] = { {"passin", OPT_PASSIN, 's', "Input file pass phrase source"}, {"passout", OPT_PASSOUT, 's', "Output file pass phrase source"}, OPT_R_OPTIONS, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {NULL} }; @@ -610,4 +606,3 @@ int srp_main(int argc, char **argv) release_engine(e); return ret; } -#endif diff --git a/crypto/external/bsd/openssl/dist/apps/timeouts.h b/crypto/external/bsd/openssl/dist/apps/timeouts.h index e023b0aa492..7e606cba0b2 100644 --- a/crypto/external/bsd/openssl/dist/apps/timeouts.h +++ b/crypto/external/bsd/openssl/dist/apps/timeouts.h @@ -7,11 +7,11 @@ * https://www.openssl.org/source/license.html */ -#ifndef INCLUDED_TIMEOUTS_H -# define INCLUDED_TIMEOUTS_H +#ifndef OSSL_APPS_TIMEOUTS_H +# define OSSL_APPS_TIMEOUTS_H /* numbers in us */ # define DGRAM_RCV_TIMEOUT 250000 # define DGRAM_SND_TIMEOUT 250000 -#endif /* ! INCLUDED_TIMEOUTS_H */ +#endif /* ! OSSL_APPS_TIMEOUTS_H */ diff --git a/crypto/external/bsd/openssl/dist/apps/ts.c b/crypto/external/bsd/openssl/dist/apps/ts.c index 930c1daaab6..66a0c810e0c 100644 --- a/crypto/external/bsd/openssl/dist/apps/ts.c +++ b/crypto/external/bsd/openssl/dist/apps/ts.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,29 +8,26 @@ */ #include <openssl/opensslconf.h> -#ifdef OPENSSL_NO_TS -NON_EMPTY_TRANSLATION_UNIT -#else -# include <stdio.h> -# include <stdlib.h> -# include <string.h> -# include "apps.h" -# include "progs.h" -# include <openssl/bio.h> -# include <openssl/err.h> -# include <openssl/pem.h> -# include <openssl/rand.h> -# include <openssl/ts.h> -# include <openssl/bn.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "apps.h" +#include "progs.h" +#include <openssl/bio.h> +#include <openssl/err.h> +#include <openssl/pem.h> +#include <openssl/rand.h> +#include <openssl/ts.h> +#include <openssl/bn.h> /* Request nonce length, in bits (must be a multiple of 8). */ -# define NONCE_LENGTH 64 +#define NONCE_LENGTH 64 /* Name of config entry that defines the OID file. */ -# define ENV_OID_FILE "oid_file" +#define ENV_OID_FILE "oid_file" /* Is |EXACTLY_ONE| of three pointers set? */ -# define EXACTLY_ONE(a, b, c) \ +#define EXACTLY_ONE(a, b, c) \ (( a && !b && !c) || \ ( b && !a && !c) || \ ( c && !a && !b)) @@ -114,9 +111,9 @@ const OPTIONS ts_options[] = { {"CAfile", OPT_CAFILE, '<', "File with trusted CA certs"}, {"untrusted", OPT_UNTRUSTED, '<', "File with untrusted certs"}, {"", OPT_MD, '-', "Any supported digest"}, -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, -# endif +#endif {OPT_HELP_STR, 1, '-', "\nOptions specific to 'ts -verify': \n"}, OPT_V_OPTIONS, {OPT_HELP_STR, 1, '-', "\n"}, @@ -137,11 +134,11 @@ static char* opt_helplist[] = { " [-signer tsa_cert.pem] [-inkey private_key.pem]", " [-chain certs_file.pem] [-tspolicy oid]", " [-in file] [-token_in] [-out file] [-token_out]", -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE " [-text] [-engine id]", -# else +#else " [-text]", -# endif +#endif " or", "ts -verify -CApath dir -CAfile file.pem -untrusted file.pem", " [-data file] [-digest hexstring]", @@ -282,7 +279,8 @@ int ts_main(int argc, char **argv) goto end; } - conf = load_config_file(configfile); + if ((conf = load_config_file(configfile)) == NULL) + goto end; if (configfile != default_config_file && !app_load_modules(conf)) goto end; @@ -681,10 +679,10 @@ static TS_RESP *create_response(CONF *conf, const char *section, const char *eng goto end; if (!TS_CONF_set_serial(conf, section, serial_cb, resp_ctx)) goto end; -# ifndef OPENSSL_NO_ENGINE +#ifndef OPENSSL_NO_ENGINE if (!TS_CONF_set_crypto_device(conf, section, engine)) goto end; -# endif +#endif if (!TS_CONF_set_signer_cert(conf, section, signer, resp_ctx)) goto end; if (!TS_CONF_set_certs(conf, section, chain, resp_ctx)) @@ -983,4 +981,3 @@ static int verify_cb(int ok, X509_STORE_CTX *ctx) { return ok; } -#endif /* ndef OPENSSL_NO_TS */ diff --git a/crypto/external/bsd/openssl/dist/apps/vms_term_sock.h b/crypto/external/bsd/openssl/dist/apps/vms_term_sock.h index c4d1702d799..e092b18eaa7 100755 --- a/crypto/external/bsd/openssl/dist/apps/vms_term_sock.h +++ b/crypto/external/bsd/openssl/dist/apps/vms_term_sock.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef TERM_SOCK_H -# define TERM_SOCK_H +#ifndef OSSL_APPS_VMS_TERM_SOCK_H +# define OSSL_APPS_VMS_TERM_SOCK_H /* ** Terminal Socket Function Codes diff --git a/crypto/external/bsd/openssl/dist/apps/x509.c b/crypto/external/bsd/openssl/dist/apps/x509.c index 81291a9a4f9..5bb110fe4a0 100644 --- a/crypto/external/bsd/openssl/dist/apps/x509.c +++ b/crypto/external/bsd/openssl/dist/apps/x509.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -72,7 +72,7 @@ const OPTIONS x509_options[] = { {"outform", OPT_OUTFORM, 'f', "Output format - default PEM (one of DER or PEM)"}, {"out", OPT_OUT, '>', "Output file - default stdout"}, - {"keyform", OPT_KEYFORM, 'F', "Private key format - default PEM"}, + {"keyform", OPT_KEYFORM, 'E', "Private key format - default PEM"}, {"passin", OPT_PASSIN, 's', "Private key password/pass-phrase source"}, {"serial", OPT_SERIAL, '-', "Print serial number value"}, {"subject_hash", OPT_HASH, '-', "Print subject hash value"}, @@ -107,7 +107,7 @@ const OPTIONS x509_options[] = { {"checkend", OPT_CHECKEND, 'M', "Check whether the cert expires in the next arg seconds"}, {OPT_MORE_STR, 1, 1, "Exit 1 if so, 0 if not"}, - {"signkey", OPT_SIGNKEY, '<', "Self sign cert with arg"}, + {"signkey", OPT_SIGNKEY, 's', "Self sign cert with arg"}, {"x509toreq", OPT_X509TOREQ, '-', "Output a certification request object"}, {"req", OPT_REQ, '-', "Input is a certificate request, sign and output"}, @@ -130,7 +130,7 @@ const OPTIONS x509_options[] = { {"checkemail", OPT_CHECKEMAIL, 's', "Check certificate matches email"}, {"checkip", OPT_CHECKIP, 's', "Check certificate matches ipaddr"}, {"CAform", OPT_CAFORM, 'F', "CA format - default PEM"}, - {"CAkeyform", OPT_CAKEYFORM, 'f', "CA key format - default PEM"}, + {"CAkeyform", OPT_CAKEYFORM, 'E', "CA key format - default PEM"}, {"sigopt", OPT_SIGOPT, 's', "Signature parameter in n:v form"}, {"force_pubkey", OPT_FORCE_PUBKEY, '<', "Force the Key to put inside certificate"}, {"next_serial", OPT_NEXT_SERIAL, '-', "Increment current certificate serial number"}, @@ -217,7 +217,7 @@ int x509_main(int argc, char **argv) goto opthelp; break; case OPT_KEYFORM: - if (!opt_format(opt_arg(), OPT_FMT_PEMDER, &keyformat)) + if (!opt_format(opt_arg(), OPT_FMT_PDE, &keyformat)) goto opthelp; break; case OPT_CAFORM: @@ -225,7 +225,7 @@ int x509_main(int argc, char **argv) goto opthelp; break; case OPT_CAKEYFORM: - if (!opt_format(opt_arg(), OPT_FMT_ANY, &CAkeyformat)) + if (!opt_format(opt_arg(), OPT_FMT_PDE, &CAkeyformat)) goto opthelp; break; case OPT_OUT: diff --git a/crypto/external/bsd/openssl/dist/appveyor.yml b/crypto/external/bsd/openssl/dist/appveyor.yml index 24966c0faa5..242d6a9ffe6 100644 --- a/crypto/external/bsd/openssl/dist/appveyor.yml +++ b/crypto/external/bsd/openssl/dist/appveyor.yml @@ -1,3 +1,6 @@ +image: + - Visual Studio 2017 + platform: - x64 - x86 @@ -5,17 +8,24 @@ platform: environment: fast_finish: true matrix: - - VSVER: 14 + - VSVER: 15 configuration: - shared - plain + - minimal before_build: - ps: >- + Install-Module VSSetup -Scope CurrentUser + - ps: >- + Get-VSSetupInstance -All + - ps: >- + gci env:* | sort-object name + - ps: >- If ($env:Platform -Match "x86") { $env:VCVARS_PLATFORM="x86" - $env:TARGET="VC-WIN32 no-asm" + $env:TARGET="VC-WIN32 no-asm --strict-warnings" } Else { $env:VCVARS_PLATFORM="amd64" $env:TARGET="VC-WIN64A-masm" @@ -23,11 +33,12 @@ before_build: - ps: >- If ($env:Configuration -Match "shared") { $env:SHARED="no-makedepend" + } ElseIf ($env:Configuration -Match "minimal") { + $env:SHARED="no-shared no-dso no-makedepend no-aria no-async no-autoload-config no-blake2 no-bf no-camellia no-cast no-chacha no-cmac no-cms no-comp no-ct no-des no-dgram no-dh no-dsa no-dtls no-ec2m no-engine no-filenames no-gost no-idea no-mdc2 no-md4 no-multiblock no-nextprotoneg no-ocsp no-ocb no-poly1305 no-psk no-rc2 no-rc4 no-rmd160 no-seed no-siphash no-sm2 no-sm3 no-sm4 no-srp no-srtp no-ssl3 no-ssl3-method no-ts no-ui-console no-whirlpool no-asm -DOPENSSL_SMALL_FOOTPRINT" } Else { $env:SHARED="no-shared no-makedepend" } - - ps: $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:VSVER" + "0COMNTOOLS")) - - call "%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM% + - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" %VCVARS_PLATFORM% - mkdir _build - cd _build - perl ..\Configure %TARGET% %SHARED% diff --git a/crypto/external/bsd/openssl/dist/build.info b/crypto/external/bsd/openssl/dist/build.info index 3dda4e89bf5..05c9bdd19c5 100644 --- a/crypto/external/bsd/openssl/dist/build.info +++ b/crypto/external/bsd/openssl/dist/build.info @@ -9,20 +9,20 @@ ""; -} LIBS=libcrypto libssl -INCLUDE[libcrypto]=. crypto/include include +INCLUDE[libcrypto]=. include INCLUDE[libssl]=. include DEPEND[libssl]=libcrypto # Empty DEPEND "indices" means the dependencies are expected to be built # unconditionally before anything else. -DEPEND[]=include/openssl/opensslconf.h crypto/include/internal/bn_conf.h \ - crypto/include/internal/dso_conf.h +DEPEND[]=include/openssl/opensslconf.h include/crypto/bn_conf.h \ + include/crypto/dso_conf.h DEPEND[include/openssl/opensslconf.h]=configdata.pm GENERATE[include/openssl/opensslconf.h]=include/openssl/opensslconf.h.in -DEPEND[crypto/include/internal/bn_conf.h]=configdata.pm -GENERATE[crypto/include/internal/bn_conf.h]=crypto/include/internal/bn_conf.h.in -DEPEND[crypto/include/internal/dso_conf.h]=configdata.pm -GENERATE[crypto/include/internal/dso_conf.h]=crypto/include/internal/dso_conf.h.in +DEPEND[include/crypto/bn_conf.h]=configdata.pm +GENERATE[include/crypto/bn_conf.h]=include/crypto/bn_conf.h.in +DEPEND[include/crypto/dso_conf.h]=configdata.pm +GENERATE[include/crypto/dso_conf.h]=include/crypto/dso_conf.h.in IF[{- defined $target{shared_defflag} -}] IF[{- $config{target} =~ /^mingw/ -}] diff --git a/crypto/external/bsd/openssl/dist/config b/crypto/external/bsd/openssl/dist/config index c1a94d4e42f..f28828d4826 100755 --- a/crypto/external/bsd/openssl/dist/config +++ b/crypto/external/bsd/openssl/dist/config @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -509,10 +509,7 @@ case "$GUESSOS" in OUT="ios64-cross" ;; alpha-*-linux2) ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo` - case ${ISA:-generic} in - *[678]) OUT="linux-alpha+bwx-$CC" ;; - *) OUT="linux-alpha-$CC" ;; - esac + OUT="linux-alpha-$CC" if [ "$CC" = "gcc" ]; then case ${ISA:-generic} in EV5|EV45) __CNF_CFLAGS="$__CNF_CFLAGS -mcpu=ev5" @@ -908,8 +905,12 @@ fi OUT="$OUT" -$PERL $THERE/Configure LIST | grep "$OUT" > /dev/null -if [ $? = "0" ]; then +if [ "$OUT" = "darwin64-x86_64-cc" ]; then + echo "WARNING! If you wish to build 32-bit libraries, then you have to" + echo " invoke 'KERNEL_BITS=32 $THERE/config $options'." +fi + +if $PERL $THERE/Configure LIST | grep "$OUT" > /dev/null; then if [ "$VERBOSE" = "true" ]; then echo /usr/bin/env \ __CNF_CPPDEFINES="'$__CNF_CPPDEFINES'" \ @@ -939,8 +940,5 @@ else exit 1 fi -if [ "$OUT" = "darwin64-x86_64-cc" ]; then - echo "WARNING! If you wish to build 32-bit libraries, then you have to" - echo " invoke 'KERNEL_BITS=32 $THERE/config $options'." -fi +# Do not add anothing from here on, so we don't lose the Configure exit code ) diff --git a/crypto/external/bsd/openssl/dist/crypto/LPdir_unix.c b/crypto/external/bsd/openssl/dist/crypto/LPdir_unix.c index b1022895c85..bbbec0aee13 100644 --- a/crypto/external/bsd/openssl/dist/crypto/LPdir_unix.c +++ b/crypto/external/bsd/openssl/dist/crypto/LPdir_unix.c @@ -131,9 +131,8 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory) return 0; } - strncpy((*ctx)->entry_name, direntry->d_name, - sizeof((*ctx)->entry_name) - 1); - (*ctx)->entry_name[sizeof((*ctx)->entry_name) - 1] = '\0'; + OPENSSL_strlcpy((*ctx)->entry_name, direntry->d_name, + sizeof((*ctx)->entry_name)); #ifdef __VMS if ((*ctx)->expect_file_generations) { char *p = (*ctx)->entry_name + strlen((*ctx)->entry_name); diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_core.c b/crypto/external/bsd/openssl/dist/crypto/aes/aes_core.c index f1f11fd8de7..687dd5829ba 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_core.c +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_core.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -41,9 +41,990 @@ #include <stdlib.h> #include <openssl/crypto.h> #include <openssl/aes.h> -#include "aes_locl.h" +#include "aes_local.h" -#ifndef AES_ASM +#if defined(OPENSSL_AES_CONST_TIME) && !defined(AES_ASM) +typedef union { + unsigned char b[8]; + u32 w[2]; + u64 d; +} uni; + +/* + * Compute w := (w * x) mod (x^8 + x^4 + x^3 + x^1 + 1) + * Therefore the name "xtime". + */ +static void XtimeWord(u32 *w) +{ + u32 a, b; + + a = *w; + b = a & 0x80808080u; + a ^= b; + b -= b >> 7; + b &= 0x1B1B1B1Bu; + b ^= a << 1; + *w = b; +} + +static void XtimeLong(u64 *w) +{ + u64 a, b; + + a = *w; + b = a & 0x8080808080808080uLL; + a ^= b; + b -= b >> 7; + b &= 0x1B1B1B1B1B1B1B1BuLL; + b ^= a << 1; + *w = b; +} + +/* + * This computes w := S * w ^ -1 + c, where c = {01100011}. + * Instead of using GF(2^8) mod (x^8+x^4+x^3+x+1} we do the inversion + * in GF(GF(GF(2^2)^2)^2) mod (X^2+X+8) + * and GF(GF(2^2)^2) mod (X^2+X+2) + * and GF(2^2) mod (X^2+X+1) + * The first part of the algorithm below transfers the coordinates + * {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} => + * {1,Y,Y^2,Y^3,Y^4,Y^5,Y^6,Y^7} with Y=0x41: + * {0x01,0x41,0x66,0x6c,0x56,0x9a,0x58,0xc4} + * The last part undoes the coordinate transfer and the final affine + * transformation S: + * b[i] = b[i] + b[(i+4)%8] + b[(i+5)%8] + b[(i+6)%8] + b[(i+7)%8] + c[i] + * in one step. + * The multiplication in GF(2^2^2^2) is done in ordinary coords: + * A = (a0*1 + a1*x^4) + * B = (b0*1 + b1*x^4) + * AB = ((a0*b0 + 8*a1*b1)*1 + (a1*b0 + (a0+a1)*b1)*x^4) + * When A = (a0,a1) is given we want to solve AB = 1: + * (a) 1 = a0*b0 + 8*a1*b1 + * (b) 0 = a1*b0 + (a0+a1)*b1 + * => multiply (a) by a1 and (b) by a0 + * (c) a1 = a1*a0*b0 + (8*a1*a1)*b1 + * (d) 0 = a1*a0*b0 + (a0*a0+a1*a0)*b1 + * => add (c) + (d) + * (e) a1 = (a0*a0 + a1*a0 + 8*a1*a1)*b1 + * => therefore + * b1 = (a0*a0 + a1*a0 + 8*a1*a1)^-1 * a1 + * => and adding (a1*b0) to (b) we get + * (f) a1*b0 = (a0+a1)*b1 + * => therefore + * b0 = (a0*a0 + a1*a0 + 8*a1*a1)^-1 * (a0+a1) + * Note this formula also works for the case + * (a0+a1)*a0 + 8*a1*a1 = 0 + * if the inverse element for 0^-1 is mapped to 0. + * Repeat the same for GF(2^2^2) and GF(2^2). + * We get the following algorithm: + * inv8(a0,a1): + * x0 = a0^a1 + * [y0,y1] = mul4([x0,a1],[a0,a1]); (*) + * y1 = mul4(8,y1); + * t = inv4(y0^y1); + * [b0,b1] = mul4([x0,a1],[t,t]); (*) + * return [b0,b1]; + * The non-linear multiplies (*) can be done in parallel at no extra cost. + */ +static void SubWord(u32 *w) +{ + u32 x, y, a1, a2, a3, a4, a5, a6; + + x = *w; + y = ((x & 0xFEFEFEFEu) >> 1) | ((x & 0x01010101u) << 7); + x &= 0xDDDDDDDDu; + x ^= y & 0x57575757u; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x1C1C1C1Cu; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x4A4A4A4Au; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x42424242u; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x64646464u; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0xE0E0E0E0u; + a1 = x; + a1 ^= (x & 0xF0F0F0F0u) >> 4; + a2 = ((x & 0xCCCCCCCCu) >> 2) | ((x & 0x33333333u) << 2); + a3 = x & a1; + a3 ^= (a3 & 0xAAAAAAAAu) >> 1; + a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & 0xAAAAAAAAu; + a4 = a2 & a1; + a4 ^= (a4 & 0xAAAAAAAAu) >> 1; + a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & 0xAAAAAAAAu; + a5 = (a3 & 0xCCCCCCCCu) >> 2; + a3 ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCu; + a4 = a5 & 0x22222222u; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x22222222u; + a3 ^= a4; + a5 = a3 & 0xA0A0A0A0u; + a5 |= a5 >> 1; + a5 ^= (a3 << 1) & 0xA0A0A0A0u; + a4 = a5 & 0xC0C0C0C0u; + a6 = a4 >> 2; + a4 ^= (a5 << 2) & 0xC0C0C0C0u; + a5 = a6 & 0x20202020u; + a5 |= a5 >> 1; + a5 ^= (a6 << 1) & 0x20202020u; + a4 |= a5; + a3 ^= a4 >> 4; + a3 &= 0x0F0F0F0Fu; + a2 = a3; + a2 ^= (a3 & 0x0C0C0C0Cu) >> 2; + a4 = a3 & a2; + a4 ^= (a4 & 0x0A0A0A0A0Au) >> 1; + a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & 0x0A0A0A0Au; + a5 = a4 & 0x08080808u; + a5 |= a5 >> 1; + a5 ^= (a4 << 1) & 0x08080808u; + a4 ^= a5 >> 2; + a4 &= 0x03030303u; + a4 ^= (a4 & 0x02020202u) >> 1; + a4 |= a4 << 2; + a3 = a2 & a4; + a3 ^= (a3 & 0x0A0A0A0Au) >> 1; + a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & 0x0A0A0A0Au; + a3 |= a3 << 4; + a2 = ((a1 & 0xCCCCCCCCu) >> 2) | ((a1 & 0x33333333u) << 2); + x = a1 & a3; + x ^= (x & 0xAAAAAAAAu) >> 1; + x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & 0xAAAAAAAAu; + a4 = a2 & a3; + a4 ^= (a4 & 0xAAAAAAAAu) >> 1; + a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & 0xAAAAAAAAu; + a5 = (x & 0xCCCCCCCCu) >> 2; + x ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCu; + a4 = a5 & 0x22222222u; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x22222222u; + x ^= a4; + y = ((x & 0xFEFEFEFEu) >> 1) | ((x & 0x01010101u) << 7); + x &= 0x39393939u; + x ^= y & 0x3F3F3F3Fu; + y = ((y & 0xFCFCFCFCu) >> 2) | ((y & 0x03030303u) << 6); + x ^= y & 0x97979797u; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x9B9B9B9Bu; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x3C3C3C3Cu; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0xDDDDDDDDu; + y = ((y & 0xFEFEFEFEu) >> 1) | ((y & 0x01010101u) << 7); + x ^= y & 0x72727272u; + x ^= 0x63636363u; + *w = x; +} + +static void SubLong(u64 *w) +{ + u64 x, y, a1, a2, a3, a4, a5, a6; + + x = *w; + y = ((x & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((x & 0x0101010101010101uLL) << 7); + x &= 0xDDDDDDDDDDDDDDDDuLL; + x ^= y & 0x5757575757575757uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x1C1C1C1C1C1C1C1CuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x4A4A4A4A4A4A4A4AuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x4242424242424242uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x6464646464646464uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xE0E0E0E0E0E0E0E0uLL; + a1 = x; + a1 ^= (x & 0xF0F0F0F0F0F0F0F0uLL) >> 4; + a2 = ((x & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((x & 0x3333333333333333uLL) << 2); + a3 = x & a1; + a3 ^= (a3 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & 0xAAAAAAAAAAAAAAAAuLL; + a4 = a2 & a1; + a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAuLL; + a5 = (a3 & 0xCCCCCCCCCCCCCCCCuLL) >> 2; + a3 ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCuLL; + a4 = a5 & 0x2222222222222222uLL; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x2222222222222222uLL; + a3 ^= a4; + a5 = a3 & 0xA0A0A0A0A0A0A0A0uLL; + a5 |= a5 >> 1; + a5 ^= (a3 << 1) & 0xA0A0A0A0A0A0A0A0uLL; + a4 = a5 & 0xC0C0C0C0C0C0C0C0uLL; + a6 = a4 >> 2; + a4 ^= (a5 << 2) & 0xC0C0C0C0C0C0C0C0uLL; + a5 = a6 & 0x2020202020202020uLL; + a5 |= a5 >> 1; + a5 ^= (a6 << 1) & 0x2020202020202020uLL; + a4 |= a5; + a3 ^= a4 >> 4; + a3 &= 0x0F0F0F0F0F0F0F0FuLL; + a2 = a3; + a2 ^= (a3 & 0x0C0C0C0C0C0C0C0CuLL) >> 2; + a4 = a3 & a2; + a4 ^= (a4 & 0x0A0A0A0A0A0A0A0AuLL) >> 1; + a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & 0x0A0A0A0A0A0A0A0AuLL; + a5 = a4 & 0x0808080808080808uLL; + a5 |= a5 >> 1; + a5 ^= (a4 << 1) & 0x0808080808080808uLL; + a4 ^= a5 >> 2; + a4 &= 0x0303030303030303uLL; + a4 ^= (a4 & 0x0202020202020202uLL) >> 1; + a4 |= a4 << 2; + a3 = a2 & a4; + a3 ^= (a3 & 0x0A0A0A0A0A0A0A0AuLL) >> 1; + a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & 0x0A0A0A0A0A0A0A0AuLL; + a3 |= a3 << 4; + a2 = ((a1 & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((a1 & 0x3333333333333333uLL) << 2); + x = a1 & a3; + x ^= (x & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & 0xAAAAAAAAAAAAAAAAuLL; + a4 = a2 & a3; + a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAuLL; + a5 = (x & 0xCCCCCCCCCCCCCCCCuLL) >> 2; + x ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCuLL; + a4 = a5 & 0x2222222222222222uLL; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x2222222222222222uLL; + x ^= a4; + y = ((x & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((x & 0x0101010101010101uLL) << 7); + x &= 0x3939393939393939uLL; + x ^= y & 0x3F3F3F3F3F3F3F3FuLL; + y = ((y & 0xFCFCFCFCFCFCFCFCuLL) >> 2) | ((y & 0x0303030303030303uLL) << 6); + x ^= y & 0x9797979797979797uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x9B9B9B9B9B9B9B9BuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x3C3C3C3C3C3C3C3CuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xDDDDDDDDDDDDDDDDuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x7272727272727272uLL; + x ^= 0x6363636363636363uLL; + *w = x; +} + +/* + * This computes w := (S^-1 * (w + c))^-1 + */ +static void InvSubLong(u64 *w) +{ + u64 x, y, a1, a2, a3, a4, a5, a6; + + x = *w; + x ^= 0x6363636363636363uLL; + y = ((x & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((x & 0x0101010101010101uLL) << 7); + x &= 0xFDFDFDFDFDFDFDFDuLL; + x ^= y & 0x5E5E5E5E5E5E5E5EuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xF3F3F3F3F3F3F3F3uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xF5F5F5F5F5F5F5F5uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x7878787878787878uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x7777777777777777uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x1515151515151515uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xA5A5A5A5A5A5A5A5uLL; + a1 = x; + a1 ^= (x & 0xF0F0F0F0F0F0F0F0uLL) >> 4; + a2 = ((x & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((x & 0x3333333333333333uLL) << 2); + a3 = x & a1; + a3 ^= (a3 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a3 ^= (((x << 1) & a1) ^ ((a1 << 1) & x)) & 0xAAAAAAAAAAAAAAAAuLL; + a4 = a2 & a1; + a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a4 ^= (((a2 << 1) & a1) ^ ((a1 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAuLL; + a5 = (a3 & 0xCCCCCCCCCCCCCCCCuLL) >> 2; + a3 ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCuLL; + a4 = a5 & 0x2222222222222222uLL; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x2222222222222222uLL; + a3 ^= a4; + a5 = a3 & 0xA0A0A0A0A0A0A0A0uLL; + a5 |= a5 >> 1; + a5 ^= (a3 << 1) & 0xA0A0A0A0A0A0A0A0uLL; + a4 = a5 & 0xC0C0C0C0C0C0C0C0uLL; + a6 = a4 >> 2; + a4 ^= (a5 << 2) & 0xC0C0C0C0C0C0C0C0uLL; + a5 = a6 & 0x2020202020202020uLL; + a5 |= a5 >> 1; + a5 ^= (a6 << 1) & 0x2020202020202020uLL; + a4 |= a5; + a3 ^= a4 >> 4; + a3 &= 0x0F0F0F0F0F0F0F0FuLL; + a2 = a3; + a2 ^= (a3 & 0x0C0C0C0C0C0C0C0CuLL) >> 2; + a4 = a3 & a2; + a4 ^= (a4 & 0x0A0A0A0A0A0A0A0AuLL) >> 1; + a4 ^= (((a3 << 1) & a2) ^ ((a2 << 1) & a3)) & 0x0A0A0A0A0A0A0A0AuLL; + a5 = a4 & 0x0808080808080808uLL; + a5 |= a5 >> 1; + a5 ^= (a4 << 1) & 0x0808080808080808uLL; + a4 ^= a5 >> 2; + a4 &= 0x0303030303030303uLL; + a4 ^= (a4 & 0x0202020202020202uLL) >> 1; + a4 |= a4 << 2; + a3 = a2 & a4; + a3 ^= (a3 & 0x0A0A0A0A0A0A0A0AuLL) >> 1; + a3 ^= (((a2 << 1) & a4) ^ ((a4 << 1) & a2)) & 0x0A0A0A0A0A0A0A0AuLL; + a3 |= a3 << 4; + a2 = ((a1 & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((a1 & 0x3333333333333333uLL) << 2); + x = a1 & a3; + x ^= (x & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + x ^= (((a1 << 1) & a3) ^ ((a3 << 1) & a1)) & 0xAAAAAAAAAAAAAAAAuLL; + a4 = a2 & a3; + a4 ^= (a4 & 0xAAAAAAAAAAAAAAAAuLL) >> 1; + a4 ^= (((a2 << 1) & a3) ^ ((a3 << 1) & a2)) & 0xAAAAAAAAAAAAAAAAuLL; + a5 = (x & 0xCCCCCCCCCCCCCCCCuLL) >> 2; + x ^= ((a4 << 2) ^ a4) & 0xCCCCCCCCCCCCCCCCuLL; + a4 = a5 & 0x2222222222222222uLL; + a4 |= a4 >> 1; + a4 ^= (a5 << 1) & 0x2222222222222222uLL; + x ^= a4; + y = ((x & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((x & 0x0101010101010101uLL) << 7); + x &= 0xB5B5B5B5B5B5B5B5uLL; + x ^= y & 0x4040404040404040uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x8080808080808080uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x1616161616161616uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xEBEBEBEBEBEBEBEBuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x9797979797979797uLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0xFBFBFBFBFBFBFBFBuLL; + y = ((y & 0xFEFEFEFEFEFEFEFEuLL) >> 1) | ((y & 0x0101010101010101uLL) << 7); + x ^= y & 0x7D7D7D7D7D7D7D7DuLL; + *w = x; +} + +static void ShiftRows(u64 *state) +{ + unsigned char s[4]; + unsigned char *s0; + int r; + + s0 = (unsigned char *)state; + for (r = 0; r < 4; r++) { + s[0] = s0[0*4 + r]; + s[1] = s0[1*4 + r]; + s[2] = s0[2*4 + r]; + s[3] = s0[3*4 + r]; + s0[0*4 + r] = s[(r+0) % 4]; + s0[1*4 + r] = s[(r+1) % 4]; + s0[2*4 + r] = s[(r+2) % 4]; + s0[3*4 + r] = s[(r+3) % 4]; + } +} + +static void InvShiftRows(u64 *state) +{ + unsigned char s[4]; + unsigned char *s0; + int r; + + s0 = (unsigned char *)state; + for (r = 0; r < 4; r++) { + s[0] = s0[0*4 + r]; + s[1] = s0[1*4 + r]; + s[2] = s0[2*4 + r]; + s[3] = s0[3*4 + r]; + s0[0*4 + r] = s[(4-r) % 4]; + s0[1*4 + r] = s[(5-r) % 4]; + s0[2*4 + r] = s[(6-r) % 4]; + s0[3*4 + r] = s[(7-r) % 4]; + } +} + +static void MixColumns(u64 *state) +{ + uni s1; + uni s; + int c; + + for (c = 0; c < 2; c++) { + s1.d = state[c]; + s.d = s1.d; + s.d ^= ((s.d & 0xFFFF0000FFFF0000uLL) >> 16) + | ((s.d & 0x0000FFFF0000FFFFuLL) << 16); + s.d ^= ((s.d & 0xFF00FF00FF00FF00uLL) >> 8) + | ((s.d & 0x00FF00FF00FF00FFuLL) << 8); + s.d ^= s1.d; + XtimeLong(&s1.d); + s.d ^= s1.d; + s.b[0] ^= s1.b[1]; + s.b[1] ^= s1.b[2]; + s.b[2] ^= s1.b[3]; + s.b[3] ^= s1.b[0]; + s.b[4] ^= s1.b[5]; + s.b[5] ^= s1.b[6]; + s.b[6] ^= s1.b[7]; + s.b[7] ^= s1.b[4]; + state[c] = s.d; + } +} + +static void InvMixColumns(u64 *state) +{ + uni s1; + uni s; + int c; + + for (c = 0; c < 2; c++) { + s1.d = state[c]; + s.d = s1.d; + s.d ^= ((s.d & 0xFFFF0000FFFF0000uLL) >> 16) + | ((s.d & 0x0000FFFF0000FFFFuLL) << 16); + s.d ^= ((s.d & 0xFF00FF00FF00FF00uLL) >> 8) + | ((s.d & 0x00FF00FF00FF00FFuLL) << 8); + s.d ^= s1.d; + XtimeLong(&s1.d); + s.d ^= s1.d; + s.b[0] ^= s1.b[1]; + s.b[1] ^= s1.b[2]; + s.b[2] ^= s1.b[3]; + s.b[3] ^= s1.b[0]; + s.b[4] ^= s1.b[5]; + s.b[5] ^= s1.b[6]; + s.b[6] ^= s1.b[7]; + s.b[7] ^= s1.b[4]; + XtimeLong(&s1.d); + s1.d ^= ((s1.d & 0xFFFF0000FFFF0000uLL) >> 16) + | ((s1.d & 0x0000FFFF0000FFFFuLL) << 16); + s.d ^= s1.d; + XtimeLong(&s1.d); + s1.d ^= ((s1.d & 0xFF00FF00FF00FF00uLL) >> 8) + | ((s1.d & 0x00FF00FF00FF00FFuLL) << 8); + s.d ^= s1.d; + state[c] = s.d; + } +} + +static void AddRoundKey(u64 *state, const u64 *w) +{ + state[0] ^= w[0]; + state[1] ^= w[1]; +} + +static void Cipher(const unsigned char *in, unsigned char *out, + const u64 *w, int nr) +{ + u64 state[2]; + int i; + + memcpy(state, in, 16); + + AddRoundKey(state, w); + + for (i = 1; i < nr; i++) { + SubLong(&state[0]); + SubLong(&state[1]); + ShiftRows(state); + MixColumns(state); + AddRoundKey(state, w + i*2); + } + + SubLong(&state[0]); + SubLong(&state[1]); + ShiftRows(state); + AddRoundKey(state, w + nr*2); + + memcpy(out, state, 16); +} + +static void InvCipher(const unsigned char *in, unsigned char *out, + const u64 *w, int nr) + +{ + u64 state[2]; + int i; + + memcpy(state, in, 16); + + AddRoundKey(state, w + nr*2); + + for (i = nr - 1; i > 0; i--) { + InvShiftRows(state); + InvSubLong(&state[0]); + InvSubLong(&state[1]); + AddRoundKey(state, w + i*2); + InvMixColumns(state); + } + + InvShiftRows(state); + InvSubLong(&state[0]); + InvSubLong(&state[1]); + AddRoundKey(state, w); + + memcpy(out, state, 16); +} + +static void RotWord(u32 *x) +{ + unsigned char *w0; + unsigned char tmp; + + w0 = (unsigned char *)x; + tmp = w0[0]; + w0[0] = w0[1]; + w0[1] = w0[2]; + w0[2] = w0[3]; + w0[3] = tmp; +} + +static void KeyExpansion(const unsigned char *key, u64 *w, + int nr, int nk) +{ + u32 rcon; + uni prev; + u32 temp; + int i, n; + + memcpy(w, key, nk*4); + memcpy(&rcon, "\1\0\0\0", 4); + n = nk/2; + prev.d = w[n-1]; + for (i = n; i < (nr+1)*2; i++) { + temp = prev.w[1]; + if (i % n == 0) { + RotWord(&temp); + SubWord(&temp); + temp ^= rcon; + XtimeWord(&rcon); + } else if (nk > 6 && i % n == 2) { + SubWord(&temp); + } + prev.d = w[i-n]; + prev.w[0] ^= temp; + prev.w[1] ^= prev.w[0]; + w[i] = prev.d; + } +} + +/** + * Expand the cipher key into the encryption key schedule. + */ +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key) +{ + u64 *rk; + + if (!userKey || !key) + return -1; + if (bits != 128 && bits != 192 && bits != 256) + return -2; + + rk = (u64*)key->rd_key; + + if (bits == 128) + key->rounds = 10; + else if (bits == 192) + key->rounds = 12; + else + key->rounds = 14; + + KeyExpansion(userKey, rk, key->rounds, bits/32); + return 0; +} + +/** + * Expand the cipher key into the decryption key schedule. + */ +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key) +{ + return AES_set_encrypt_key(userKey, bits, key); +} + +/* + * Encrypt a single block + * in and out can overlap + */ +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key) +{ + const u64 *rk; + + assert(in && out && key); + rk = (u64*)key->rd_key; + + Cipher(in, out, rk, key->rounds); +} + +/* + * Decrypt a single block + * in and out can overlap + */ +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key) +{ + const u64 *rk; + + assert(in && out && key); + rk = (u64*)key->rd_key; + + InvCipher(in, out, rk, key->rounds); +} + +# ifndef OPENSSL_SMALL_FOOTPRINT +void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out, + size_t blocks, const AES_KEY *key, + const unsigned char *ivec); + +static void RawToBits(const u8 raw[64], u64 bits[8]) +{ + int i, j; + u64 in, out; + + memset(bits, 0, 64); + for (i = 0; i < 8; i++) { + in = 0; + for (j = 0; j < 8; j++) + in |= ((u64)raw[i * 8 + j]) << (8 * j); + out = in & 0xF0F0F0F00F0F0F0FuLL; + out |= (in & 0x0F0F0F0F00000000uLL) >> 28; + out |= (in & 0x00000000F0F0F0F0uLL) << 28; + in = out & 0xCCCC3333CCCC3333uLL; + in |= (out & 0x3333000033330000uLL) >> 14; + in |= (out & 0x0000CCCC0000CCCCuLL) << 14; + out = in & 0xAA55AA55AA55AA55uLL; + out |= (in & 0x5500550055005500uLL) >> 7; + out |= (in & 0x00AA00AA00AA00AAuLL) << 7; + for (j = 0; j < 8; j++) { + bits[j] |= (out & 0xFFuLL) << (8 * i); + out = out >> 8; + } + } +} + +static void BitsToRaw(const u64 bits[8], u8 raw[64]) +{ + int i, j; + u64 in, out; + + for (i = 0; i < 8; i++) { + in = 0; + for (j = 0; j < 8; j++) + in |= ((bits[j] >> (8 * i)) & 0xFFuLL) << (8 * j); + out = in & 0xF0F0F0F00F0F0F0FuLL; + out |= (in & 0x0F0F0F0F00000000uLL) >> 28; + out |= (in & 0x00000000F0F0F0F0uLL) << 28; + in = out & 0xCCCC3333CCCC3333uLL; + in |= (out & 0x3333000033330000uLL) >> 14; + in |= (out & 0x0000CCCC0000CCCCuLL) << 14; + out = in & 0xAA55AA55AA55AA55uLL; + out |= (in & 0x5500550055005500uLL) >> 7; + out |= (in & 0x00AA00AA00AA00AAuLL) << 7; + for (j = 0; j < 8; j++) { + raw[i * 8 + j] = (u8)out; + out = out >> 8; + } + } +} + +static void BitsXtime(u64 state[8]) +{ + u64 b; + + b = state[7]; + state[7] = state[6]; + state[6] = state[5]; + state[5] = state[4]; + state[4] = state[3] ^ b; + state[3] = state[2] ^ b; + state[2] = state[1]; + state[1] = state[0] ^ b; + state[0] = b; +} + +/* + * This S-box implementation follows a circuit described in + * Boyar and Peralta: "A new combinational logic minimization + * technique with applications to cryptology." + * https://eprint.iacr.org/2009/191.pdf + * + * The math is similar to above, in that it uses + * a tower field of GF(2^2^2^2) but with a different + * basis representation, that is better suited to + * logic designs. + */ +static void BitsSub(u64 state[8]) +{ + u64 x0, x1, x2, x3, x4, x5, x6, x7; + u64 y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11; + u64 y12, y13, y14, y15, y16, y17, y18, y19, y20, y21; + u64 t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11; + u64 t12, t13, t14, t15, t16, t17, t18, t19, t20, t21; + u64 t22, t23, t24, t25, t26, t27, t28, t29, t30, t31; + u64 t32, t33, t34, t35, t36, t37, t38, t39, t40, t41; + u64 t42, t43, t44, t45, t46, t47, t48, t49, t50, t51; + u64 t52, t53, t54, t55, t56, t57, t58, t59, t60, t61; + u64 t62, t63, t64, t65, t66, t67; + u64 z0, z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, z11; + u64 z12, z13, z14, z15, z16, z17; + u64 s0, s1, s2, s3, s4, s5, s6, s7; + + x7 = state[0]; + x6 = state[1]; + x5 = state[2]; + x4 = state[3]; + x3 = state[4]; + x2 = state[5]; + x1 = state[6]; + x0 = state[7]; + y14 = x3 ^ x5; + y13 = x0 ^ x6; + y9 = x0 ^ x3; + y8 = x0 ^ x5; + t0 = x1 ^ x2; + y1 = t0 ^ x7; + y4 = y1 ^ x3; + y12 = y13 ^ y14; + y2 = y1 ^ x0; + y5 = y1 ^ x6; + y3 = y5 ^ y8; + t1 = x4 ^ y12; + y15 = t1 ^ x5; + y20 = t1 ^ x1; + y6 = y15 ^ x7; + y10 = y15 ^ t0; + y11 = y20 ^ y9; + y7 = x7 ^ y11; + y17 = y10 ^ y11; + y19 = y10 ^ y8; + y16 = t0 ^ y11; + y21 = y13 ^ y16; + y18 = x0 ^ y16; + t2 = y12 & y15; + t3 = y3 & y6; + t4 = t3 ^ t2; + t5 = y4 & x7; + t6 = t5 ^ t2; + t7 = y13 & y16; + t8 = y5 & y1; + t9 = t8 ^ t7; + t10 = y2 & y7; + t11 = t10 ^ t7; + t12 = y9 & y11; + t13 = y14 & y17; + t14 = t13 ^ t12; + t15 = y8 & y10; + t16 = t15 ^ t12; + t17 = t4 ^ t14; + t18 = t6 ^ t16; + t19 = t9 ^ t14; + t20 = t11 ^ t16; + t21 = t17 ^ y20; + t22 = t18 ^ y19; + t23 = t19 ^ y21; + t24 = t20 ^ y18; + t25 = t21 ^ t22; + t26 = t21 & t23; + t27 = t24 ^ t26; + t28 = t25 & t27; + t29 = t28 ^ t22; + t30 = t23 ^ t24; + t31 = t22 ^ t26; + t32 = t31 & t30; + t33 = t32 ^ t24; + t34 = t23 ^ t33; + t35 = t27 ^ t33; + t36 = t24 & t35; + t37 = t36 ^ t34; + t38 = t27 ^ t36; + t39 = t29 & t38; + t40 = t25 ^ t39; + t41 = t40 ^ t37; + t42 = t29 ^ t33; + t43 = t29 ^ t40; + t44 = t33 ^ t37; + t45 = t42 ^ t41; + z0 = t44 & y15; + z1 = t37 & y6; + z2 = t33 & x7; + z3 = t43 & y16; + z4 = t40 & y1; + z5 = t29 & y7; + z6 = t42 & y11; + z7 = t45 & y17; + z8 = t41 & y10; + z9 = t44 & y12; + z10 = t37 & y3; + z11 = t33 & y4; + z12 = t43 & y13; + z13 = t40 & y5; + z14 = t29 & y2; + z15 = t42 & y9; + z16 = t45 & y14; + z17 = t41 & y8; + t46 = z15 ^ z16; + t47 = z10 ^ z11; + t48 = z5 ^ z13; + t49 = z9 ^ z10; + t50 = z2 ^ z12; + t51 = z2 ^ z5; + t52 = z7 ^ z8; + t53 = z0 ^ z3; + t54 = z6 ^ z7; + t55 = z16 ^ z17; + t56 = z12 ^ t48; + t57 = t50 ^ t53; + t58 = z4 ^ t46; + t59 = z3 ^ t54; + t60 = t46 ^ t57; + t61 = z14 ^ t57; + t62 = t52 ^ t58; + t63 = t49 ^ t58; + t64 = z4 ^ t59; + t65 = t61 ^ t62; + t66 = z1 ^ t63; + s0 = t59 ^ t63; + s6 = ~(t56 ^ t62); + s7 = ~(t48 ^ t60); + t67 = t64 ^ t65; + s3 = t53 ^ t66; + s4 = t51 ^ t66; + s5 = t47 ^ t65; + s1 = ~(t64 ^ s3); + s2 = ~(t55 ^ t67); + state[0] = s7; + state[1] = s6; + state[2] = s5; + state[3] = s4; + state[4] = s3; + state[5] = s2; + state[6] = s1; + state[7] = s0; +} + +static void BitsShiftRows(u64 state[8]) +{ + u64 s, s0; + int i; + + for (i = 0; i < 8; i++) { + s = state[i]; + s0 = s & 0x1111111111111111uLL; + s0 |= ((s & 0x2220222022202220uLL) >> 4) | ((s & 0x0002000200020002uLL) << 12); + s0 |= ((s & 0x4400440044004400uLL) >> 8) | ((s & 0x0044004400440044uLL) << 8); + s0 |= ((s & 0x8000800080008000uLL) >> 12) | ((s & 0x0888088808880888uLL) << 4); + state[i] = s0; + } +} + +static void BitsMixColumns(u64 state[8]) +{ + u64 s1, s; + u64 s0[8]; + int i; + + for (i = 0; i < 8; i++) { + s1 = state[i]; + s = s1; + s ^= ((s & 0xCCCCCCCCCCCCCCCCuLL) >> 2) | ((s & 0x3333333333333333uLL) << 2); + s ^= ((s & 0xAAAAAAAAAAAAAAAAuLL) >> 1) | ((s & 0x5555555555555555uLL) << 1); + s ^= s1; + s0[i] = s; + } + BitsXtime(state); + for (i = 0; i < 8; i++) { + s1 = state[i]; + s = s0[i]; + s ^= s1; + s ^= ((s1 & 0xEEEEEEEEEEEEEEEEuLL) >> 1) | ((s1 & 0x1111111111111111uLL) << 3); + state[i] = s; + } +} + +static void BitsAddRoundKey(u64 state[8], const u64 key[8]) +{ + int i; + + for (i = 0; i < 8; i++) + state[i] ^= key[i]; +} + +void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out, + size_t blocks, const AES_KEY *key, + const unsigned char *ivec) +{ + struct { + u8 cipher[64]; + u64 state[8]; + u64 rd_key[AES_MAXNR + 1][8]; + } *bs; + u32 ctr32; + int i; + + ctr32 = GETU32(ivec + 12); + if (blocks >= 4 + && (bs = OPENSSL_malloc(sizeof(*bs)))) { + for (i = 0; i < key->rounds + 1; i++) { + memcpy(bs->cipher + 0, &key->rd_key[4 * i], 16); + memcpy(bs->cipher + 16, bs->cipher, 16); + memcpy(bs->cipher + 32, bs->cipher, 32); + RawToBits(bs->cipher, bs->rd_key[i]); + } + while (blocks) { + memcpy(bs->cipher, ivec, 12); + PUTU32(bs->cipher + 12, ctr32); + ctr32++; + memcpy(bs->cipher + 16, ivec, 12); + PUTU32(bs->cipher + 28, ctr32); + ctr32++; + memcpy(bs->cipher + 32, ivec, 12); + PUTU32(bs->cipher + 44, ctr32); + ctr32++; + memcpy(bs->cipher + 48, ivec, 12); + PUTU32(bs->cipher + 60, ctr32); + ctr32++; + RawToBits(bs->cipher, bs->state); + BitsAddRoundKey(bs->state, bs->rd_key[0]); + for (i = 1; i < key->rounds; i++) { + BitsSub(bs->state); + BitsShiftRows(bs->state); + BitsMixColumns(bs->state); + BitsAddRoundKey(bs->state, bs->rd_key[i]); + } + BitsSub(bs->state); + BitsShiftRows(bs->state); + BitsAddRoundKey(bs->state, bs->rd_key[key->rounds]); + BitsToRaw(bs->state, bs->cipher); + for (i = 0; i < 64 && blocks; i++) { + out[i] = in[i] ^ bs->cipher[i]; + if ((i & 15) == 15) + blocks--; + } + in += i; + out += i; + } + OPENSSL_clear_free(bs, sizeof(*bs)); + } else { + unsigned char cipher[16]; + + while (blocks) { + memcpy(cipher, ivec, 12); + PUTU32(cipher + 12, ctr32); + AES_encrypt(cipher, cipher, key); + for (i = 0; i < 16; i++) + out[i] = in[i] ^ cipher[i]; + in += 16; + out += 16; + ctr32++; + blocks--; + } + } +} +# endif +#elif !defined(AES_ASM) /*- Te0[x] = S [x].[02, 01, 01, 03]; Te1[x] = S [x].[03, 02, 01, 01]; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_ecb.c b/crypto/external/bsd/openssl/dist/crypto/aes/aes_ecb.c index 29bfc1ad66f..4fa360ca8b8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_ecb.c @@ -10,7 +10,7 @@ #include <assert.h> #include <openssl/aes.h> -#include "aes_locl.h" +#include "aes_local.h" void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key, const int enc) diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_ige.c b/crypto/external/bsd/openssl/dist/crypto/aes/aes_ige.c index 75f796cf3b8..dce4ef11be4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_ige.c +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_ige.c @@ -10,7 +10,7 @@ #include "internal/cryptlib.h" #include <openssl/aes.h> -#include "aes_locl.h" +#include "aes_local.h" #define N_WORDS (AES_BLOCK_SIZE / sizeof(unsigned long)) typedef struct { diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_locl.h b/crypto/external/bsd/openssl/dist/crypto/aes/aes_local.h index 97a108a8d31..a9c0059e52c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_local.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_AES_LOCL_H -# define HEADER_AES_LOCL_H +#ifndef OSSL_CRYPTO_AES_LOCAL_H +# define OSSL_CRYPTO_AES_LOCAL_H # include <openssl/e_os2.h> # include <stdio.h> @@ -24,7 +24,7 @@ # define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); } # endif -#ifndef __NetBSD__ +typedef unsigned long long u64; # ifdef AES_LONG typedef unsigned long u32; # else @@ -32,11 +32,6 @@ typedef unsigned int u32; # endif typedef unsigned short u16; typedef unsigned char u8; -#else -typedef uint32_t u32; -typedef uint16_t u16; -typedef uint8_t u8; -#endif # define MAXKC (256/32) # define MAXKB (256/8) @@ -45,4 +40,4 @@ typedef uint8_t u8; /* This controls loop-unrolling in aes_core.c */ # undef FULL_UNROLL -#endif /* !HEADER_AES_LOCL_H */ +#endif /* !OSSL_CRYPTO_AES_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_misc.c b/crypto/external/bsd/openssl/dist/crypto/aes/aes_misc.c index 7403c84f82d..e0edc72ba71 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_misc.c +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_misc.c @@ -9,7 +9,7 @@ #include <openssl/opensslv.h> #include <openssl/aes.h> -#include "aes_locl.h" +#include "aes_local.h" const char *AES_options(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/aes_x86core.c b/crypto/external/bsd/openssl/dist/crypto/aes/aes_x86core.c index 1b660d716d6..50b53abc121 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/aes_x86core.c +++ b/crypto/external/bsd/openssl/dist/crypto/aes/aes_x86core.c @@ -46,7 +46,7 @@ #include <stdlib.h> #include <openssl/aes.h> -#include "aes_locl.h" +#include "aes_local.h" /* * These two parameters control which table, 256-byte or 2KB, is diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-armv4.pl index 998158998e9..1112eef50c0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1242,4 +1242,4 @@ while(<SELF>) { close SELF; print $code; -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-c64xplus.pl index 19d2cc176fb..cad3fcd06e3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1379,4 +1379,4 @@ AES_Td4: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-mips.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-mips.pl index 716c3356ead..b5601e90ea3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-mips.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2167,4 +2167,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-parisc.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-parisc.pl index e817c757f8c..5b07fac3d00 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-parisc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-parisc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1035,4 +1035,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-ppc.pl index ca69df4c3e9..bb4ee84ae33 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1456,4 +1456,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-s390x.pl index 815fde8fcd7..4cb8f433174 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1987,7 +1987,7 @@ $code.=<<___; .Lxts_enc_done: stg $sp,$tweak+0($sp) # wipe tweak - stg $sp,$twesk+8($sp) + stg $sp,$tweak+8($sp) lm${g} %r6,$ra,6*$SIZE_T($sp) br $ra .size AES_xts_encrypt,.-AES_xts_encrypt @@ -2267,7 +2267,7 @@ $code.=<<___; stg $sp,$tweak-16+8($sp) .Lxts_dec_done: stg $sp,$tweak+0($sp) # wipe tweak - stg $sp,$twesk+8($sp) + stg $sp,$tweak+8($sp) lm${g} %r6,$ra,6*$SIZE_T($sp) br $ra .size AES_xts_decrypt,.-AES_xts_decrypt @@ -2279,4 +2279,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; # force flush +close STDOUT or die "error closing STDOUT: $!"; # force flush diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-sparcv9.pl index 40d1f94ccd7..1b37a9203c2 100755 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aes-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1189,4 +1189,4 @@ ___ $code =~ s/fmovs.*$//gm; print $code; -close STDOUT; # ensure flush +close STDOUT or die "error closing STDOUT: $!"; # ensure flush diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesfx-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesfx-sparcv9.pl index 9ddf0b4b00e..1678c4f786f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesfx-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesfx-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1267,4 +1267,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-mb-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-mb-x86_64.pl index 1f356d2d3fb..be2434f1204 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-mb-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-mb-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -70,7 +70,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -1471,4 +1471,4 @@ $code =~ s/\`([^\`]*)\`/eval($1)/gem; $code =~ s/\b(aes.*%xmm[0-9]+).*$/aesni($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl index b01a4c55c86..42fe5d469ea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha1-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -108,7 +108,7 @@ $avx=1 if (!$avx && $win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) && $avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && `ml64 2>&1` =~ /Version ([0-9]+)\./ && $1>=10); -$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/ && $2>=3.0); +$avx=1 if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0); $shaext=1; ### set to zero if compiling for 1.0.1 @@ -133,6 +133,7 @@ $code.=<<___; .type aesni_cbc_sha1_enc,\@abi-omnipotent .align 32 aesni_cbc_sha1_enc: +.cfi_startproc # caller should check for SSSE3 and AES-NI bits mov OPENSSL_ia32cap_P+0(%rip),%r10d mov OPENSSL_ia32cap_P+4(%rip),%r11 @@ -151,6 +152,7 @@ ___ $code.=<<___; jmp aesni_cbc_sha1_enc_ssse3 ret +.cfi_endproc .size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc ___ @@ -840,6 +842,7 @@ $code.=<<___; .type aesni256_cbc_sha1_dec,\@abi-omnipotent .align 32 aesni256_cbc_sha1_dec: +.cfi_startproc # caller should check for SSSE3 and AES-NI bits mov OPENSSL_ia32cap_P+0(%rip),%r10d mov OPENSSL_ia32cap_P+4(%rip),%r11d @@ -854,6 +857,7 @@ ___ $code.=<<___; jmp aesni256_cbc_sha1_dec_ssse3 ret +.cfi_endproc .size aesni256_cbc_sha1_dec,.-aesni256_cbc_sha1_dec .type aesni256_cbc_sha1_dec_ssse3,\@function,6 @@ -1760,6 +1764,7 @@ $code.=<<___; .type aesni_cbc_sha1_enc_shaext,\@function,6 .align 32 aesni_cbc_sha1_enc_shaext: +.cfi_startproc mov `($win64?56:8)`(%rsp),$inp # load 7th argument ___ $code.=<<___ if ($win64); @@ -1911,6 +1916,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext ___ }}} @@ -2137,4 +2143,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha256-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha256-x86_64.pl index ef460237108..f1b144eccbd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha256-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-sha256-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -70,7 +70,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=12); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -123,6 +123,7 @@ $code=<<___; .type $func,\@abi-omnipotent .align 16 $func: +.cfi_startproc ___ if ($avx) { $code.=<<___; @@ -162,6 +163,7 @@ $code.=<<___; ud2 .Lprobe: ret +.cfi_endproc .size $func,.-$func .align 64 @@ -1084,7 +1086,23 @@ $code.=<<___; vmovdqa $t0,0x00(%rsp) xor $a1,$a1 vmovdqa $t1,0x20(%rsp) +___ +$code.=<<___ if (!$win64); +# temporarily use %rsi as frame pointer + mov $_rsp,%rsi +.cfi_def_cfa %rsi,8 +___ +$code.=<<___; lea -$PUSH8(%rsp),%rsp +___ +$code.=<<___ if (!$win64); +# the frame info is at $_rsp, but the stack is moving... +# so a second frame pointer is saved at -8(%rsp) +# that is in the red zone + mov %rsi,-8(%rsp) +.cfi_cfa_expression %rsp-8,deref,+8 +___ +$code.=<<___; mov $B,$a3 vmovdqa $t2,0x00(%rsp) xor $C,$a3 # magic @@ -1106,7 +1124,17 @@ my @X = @_; my @insns = (&$body,&$body,&$body,&$body); # 96 instructions my $base = "+2*$PUSH8(%rsp)"; - &lea ("%rsp","-$PUSH8(%rsp)") if (($j%2)==0); + if (($j%2)==0) { + &lea ("%rsp","-$PUSH8(%rsp)"); +$code.=<<___ if (!$win64); +.cfi_cfa_expression %rsp+`$PUSH8-8`,deref,+8 +# copy secondary frame pointer to new location again at -8(%rsp) + pushq $PUSH8-8(%rsp) +.cfi_cfa_expression %rsp,deref,+8 + lea 8(%rsp),%rsp +.cfi_cfa_expression %rsp-8,deref,+8 +___ + } foreach (Xupdate_256_AVX()) { # 29 instructions eval; eval(shift(@insns)); @@ -1232,26 +1260,28 @@ $code.=<<___; jbe .Loop_avx2 lea (%rsp),$Tbl +# temporarily use $Tbl as index to $_rsp +# this avoids the need to save a secondary frame pointer at -8(%rsp) +.cfi_cfa_expression $Tbl+`16*$SZ+7*8`,deref,+8 .Ldone_avx2: - lea ($Tbl),%rsp - mov $_ivp,$ivp - mov $_rsp,%rsi + mov 16*$SZ+4*8($Tbl),$ivp + mov 16*$SZ+7*8($Tbl),%rsi .cfi_def_cfa %rsi,8 vmovdqu $iv,($ivp) # output IV vzeroall ___ $code.=<<___ if ($win64); - movaps `$framesz+16*0`(%rsp),%xmm6 - movaps `$framesz+16*1`(%rsp),%xmm7 - movaps `$framesz+16*2`(%rsp),%xmm8 - movaps `$framesz+16*3`(%rsp),%xmm9 - movaps `$framesz+16*4`(%rsp),%xmm10 - movaps `$framesz+16*5`(%rsp),%xmm11 - movaps `$framesz+16*6`(%rsp),%xmm12 - movaps `$framesz+16*7`(%rsp),%xmm13 - movaps `$framesz+16*8`(%rsp),%xmm14 - movaps `$framesz+16*9`(%rsp),%xmm15 + movaps `$framesz+16*0`($Tbl),%xmm6 + movaps `$framesz+16*1`($Tbl),%xmm7 + movaps `$framesz+16*2`($Tbl),%xmm8 + movaps `$framesz+16*3`($Tbl),%xmm9 + movaps `$framesz+16*4`($Tbl),%xmm10 + movaps `$framesz+16*5`($Tbl),%xmm11 + movaps `$framesz+16*6`($Tbl),%xmm12 + movaps `$framesz+16*7`($Tbl),%xmm13 + movaps `$framesz+16*8`($Tbl),%xmm14 + movaps `$framesz+16*9`($Tbl),%xmm15 ___ $code.=<<___; mov -48(%rsi),%r15 @@ -1339,6 +1369,7 @@ $code.=<<___; .type ${func}_shaext,\@function,6 .align 32 ${func}_shaext: +.cfi_startproc mov `($win64?56:8)`(%rsp),$inp # load 7th argument ___ $code.=<<___ if ($win64); @@ -1555,6 +1586,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size ${func}_shaext,.-${func}_shaext ___ } @@ -1767,4 +1799,4 @@ sub rex { $code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/\b(sha256[^\s]*)\s+(.*)/sha256op38($1,$2)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86.pl index b351fca28e0..fe2b26542ab 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -3412,4 +3412,4 @@ my ($l_,$block,$i1,$i3,$i5) = ($rounds_,$key_,$rounds,$len,$out); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86_64.pl index b68c14da60c..f8c2e239343 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesni-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -59,7 +59,7 @@ # nothing one can do and the result appears optimal. CCM result is # identical to CBC, because CBC-MAC is essentially CBC encrypt without # saving output. CCM CTR "stays invisible," because it's neatly -# interleaved wih CBC-MAC. This provides ~30% improvement over +# interleaved with CBC-MAC. This provides ~30% improvement over # "straightforward" CCM implementation with CTR and CBC-MAC performed # disjointly. Parallelizable modes practically achieve the theoretical # limit. @@ -984,6 +984,7 @@ $code.=<<___; .type aesni_ccm64_encrypt_blocks,\@function,6 .align 16 aesni_ccm64_encrypt_blocks: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0x58(%rsp),%rsp @@ -1066,6 +1067,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks ___ ###################################################################### @@ -1074,6 +1076,7 @@ $code.=<<___; .type aesni_ccm64_decrypt_blocks,\@function,6 .align 16 aesni_ccm64_decrypt_blocks: +.cfi_startproc ___ $code.=<<___ if ($win64); lea -0x58(%rsp),%rsp @@ -1173,6 +1176,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks ___ } @@ -2339,7 +2343,7 @@ $code.=<<___; movdqu `16*0`($inp),$inout0 # load input movdqa $rndkey0,$twmask movdqu `16*1`($inp),$inout1 - pxor @tweak[0],$inout0 # intput^=tweak^round[0] + pxor @tweak[0],$inout0 # input^=tweak^round[0] movdqu `16*2`($inp),$inout2 pxor @tweak[1],$inout1 aesdec $rndkey1,$inout0 @@ -3031,6 +3035,7 @@ $code.=<<___; .type __ocb_encrypt6,\@abi-omnipotent .align 32 __ocb_encrypt6: +.cfi_startproc pxor $rndkey0l,@offset[5] # offset_i ^ round[0] movdqu ($L_p,$i1),@offset[1] movdqa @offset[0],@offset[2] @@ -3128,11 +3133,13 @@ __ocb_encrypt6: aesenclast @offset[4],$inout4 aesenclast @offset[5],$inout5 ret +.cfi_endproc .size __ocb_encrypt6,.-__ocb_encrypt6 .type __ocb_encrypt4,\@abi-omnipotent .align 32 __ocb_encrypt4: +.cfi_startproc pxor $rndkey0l,@offset[5] # offset_i ^ round[0] movdqu ($L_p,$i1),@offset[1] movdqa @offset[0],@offset[2] @@ -3197,11 +3204,13 @@ __ocb_encrypt4: aesenclast @offset[2],$inout2 aesenclast @offset[3],$inout3 ret +.cfi_endproc .size __ocb_encrypt4,.-__ocb_encrypt4 .type __ocb_encrypt1,\@abi-omnipotent .align 32 __ocb_encrypt1: +.cfi_startproc pxor @offset[5],$inout5 # offset_i pxor $rndkey0l,$inout5 # offset_i ^ round[0] pxor $inout0,$checksum # accumulate checksum @@ -3232,6 +3241,7 @@ __ocb_encrypt1: aesenclast $inout5,$inout0 ret +.cfi_endproc .size __ocb_encrypt1,.-__ocb_encrypt1 .globl aesni_ocb_decrypt @@ -3513,6 +3523,7 @@ $code.=<<___; .type __ocb_decrypt6,\@abi-omnipotent .align 32 __ocb_decrypt6: +.cfi_startproc pxor $rndkey0l,@offset[5] # offset_i ^ round[0] movdqu ($L_p,$i1),@offset[1] movdqa @offset[0],@offset[2] @@ -3604,11 +3615,13 @@ __ocb_decrypt6: aesdeclast @offset[4],$inout4 aesdeclast @offset[5],$inout5 ret +.cfi_endproc .size __ocb_decrypt6,.-__ocb_decrypt6 .type __ocb_decrypt4,\@abi-omnipotent .align 32 __ocb_decrypt4: +.cfi_startproc pxor $rndkey0l,@offset[5] # offset_i ^ round[0] movdqu ($L_p,$i1),@offset[1] movdqa @offset[0],@offset[2] @@ -3669,11 +3682,13 @@ __ocb_decrypt4: aesdeclast @offset[2],$inout2 aesdeclast @offset[3],$inout3 ret +.cfi_endproc .size __ocb_decrypt4,.-__ocb_decrypt4 .type __ocb_decrypt1,\@abi-omnipotent .align 32 __ocb_decrypt1: +.cfi_startproc pxor @offset[5],$inout5 # offset_i pxor $rndkey0l,$inout5 # offset_i ^ round[0] pxor $inout5,$inout0 # input ^ round[0] ^ offset_i @@ -3703,6 +3718,7 @@ __ocb_decrypt1: aesdeclast $inout5,$inout0 ret +.cfi_endproc .size __ocb_decrypt1,.-__ocb_decrypt1 ___ } }} @@ -4637,7 +4653,6 @@ __aesni_set_encrypt_key: add \$8,%rsp .cfi_adjust_cfa_offset -8 ret -.cfi_endproc .LSEH_end_set_encrypt_key: .align 16 @@ -4708,6 +4723,7 @@ __aesni_set_encrypt_key: shufps \$0b10101010,%xmm1,%xmm1 # critical path xorps %xmm1,%xmm2 ret +.cfi_endproc .size ${PREFIX}_set_encrypt_key,.-${PREFIX}_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key ___ @@ -4812,7 +4828,7 @@ ctr_xts_se_handler: mov 56($disp),%r11 # disp->HandlerData mov 0(%r11),%r10d # HandlerData[0] - lea (%rsi,%r10),%r10 # prologue lable + lea (%rsi,%r10),%r10 # prologue label cmp %r10,%rbx # context->Rip<prologue label jb .Lcommon_seh_tail @@ -4856,7 +4872,7 @@ ocb_se_handler: mov 56($disp),%r11 # disp->HandlerData mov 0(%r11),%r10d # HandlerData[0] - lea (%rsi,%r10),%r10 # prologue lable + lea (%rsi,%r10),%r10 # prologue label cmp %r10,%rbx # context->Rip<prologue label jb .Lcommon_seh_tail @@ -5138,4 +5154,4 @@ $code =~ s/\bmovbe\s+%eax,\s*([0-9]+)\(%rsp\)/movbe($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesp8-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesp8-ppc.pl index c0da1b84aaa..22a538f9e24 100755 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesp8-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesp8-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -3804,4 +3804,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aest4-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aest4-sparcv9.pl index 54d0c58821a..478c97eb6fe 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aest4-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aest4-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -926,4 +926,4 @@ ___ &emit_assembler(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesv8-armx.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesv8-armx.pl index eec0ed230a8..d6068dbf03f 100755 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesv8-armx.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/aesv8-armx.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1008,4 +1008,4 @@ if ($flavour =~ /64/) { ######## 64-bit code } } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/bsaes-armv7.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/bsaes-armv7.pl index bfe825af0d9..2b9f241ce8b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/bsaes-armv7.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/bsaes-armv7.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2488,4 +2488,4 @@ close SELF; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-armv8.pl index e38288af555..7a9ffbd7d94 100755 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1274,4 +1274,4 @@ ___ } } print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-ppc.pl index 3c771a7e98b..0260a5c9bff 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1591,4 +1591,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86.pl index 7d57edc0eb6..fb02a413345 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -913,4 +913,4 @@ $k_dsbo=0x2c0; # decryption sbox final output &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86_64.pl index 33d293e623d..099a686a4d5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/aes/asm/vpaes-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1238,4 +1238,4 @@ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/alphacpuid.pl b/crypto/external/bsd/openssl/dist/crypto/alphacpuid.pl index 6c7fd4c9dd3..23fe302265d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/alphacpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/alphacpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -254,4 +254,4 @@ OPENSSL_instrument_bus2: ___ } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/aria/aria.c b/crypto/external/bsd/openssl/dist/crypto/aria/aria.c index 293bcc72bd0..ce55d526642 100644 --- a/crypto/external/bsd/openssl/dist/crypto/aria/aria.c +++ b/crypto/external/bsd/openssl/dist/crypto/aria/aria.c @@ -19,7 +19,7 @@ */ #include <openssl/e_os2.h> -#include "internal/aria.h" +#include "crypto/aria.h" #include <assert.h> #include <string.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/arm64cpuid.pl b/crypto/external/bsd/openssl/dist/crypto/arm64cpuid.pl index 06c8add7a07..319927e6c72 100755 --- a/crypto/external/bsd/openssl/dist/crypto/arm64cpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/arm64cpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -144,4 +144,4 @@ CRYPTO_memcmp: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/arm_arch.h b/crypto/external/bsd/openssl/dist/crypto/arm_arch.h index 749398e9617..11f3ec98a40 100644 --- a/crypto/external/bsd/openssl/dist/crypto/arm_arch.h +++ b/crypto/external/bsd/openssl/dist/crypto/arm_arch.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef __ARM_ARCH_H__ -# define __ARM_ARCH_H__ +#ifndef OSSL_CRYPTO_ARM_ARCH_H +# define OSSL_CRYPTO_ARM_ARCH_H # if !defined(__ARM_ARCH__) # if defined(__CC_ARM) @@ -43,7 +43,7 @@ # elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ defined(__ARM_ARCH_6K__)|| defined(__ARM_ARCH_6M__) || \ defined(__ARM_ARCH_6Z__)|| defined(__ARM_ARCH_6ZK__) || \ - defined(__ARM_ARCH_6T2__)|| defined(__ARM_ARCH_6KZ__) + defined(__ARM_ARCH_6T2__) # define __ARM_ARCH__ 6 # elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \ defined(__ARM_ARCH_5E__)|| defined(__ARM_ARCH_5TE__) || \ diff --git a/crypto/external/bsd/openssl/dist/crypto/armcap.c b/crypto/external/bsd/openssl/dist/crypto/armcap.c index 2a706df7ced..982df79d430 100644 --- a/crypto/external/bsd/openssl/dist/crypto/armcap.c +++ b/crypto/external/bsd/openssl/dist/crypto/armcap.c @@ -51,7 +51,6 @@ void _armv8_pmull_probe(void); void _armv8_sha512_probe(void); # endif uint32_t _armv7_tick(void); -#endif uint32_t OPENSSL_rdtsc(void) { @@ -206,7 +205,6 @@ void OPENSSL_cpuid_setup(void) } # endif -#if __ARM_MAX_ARCH__>=7 /* Things that getauxval didn't tell us */ if (sigsetjmp(ill_jmp, 1) == 0) { _armv7_tick(); diff --git a/crypto/external/bsd/openssl/dist/crypto/armv4cpuid.pl b/crypto/external/bsd/openssl/dist/crypto/armv4cpuid.pl index ab007c19c3c..d1b71f836f1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/armv4cpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/armv4cpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -293,4 +293,4 @@ atomic_add_spinlock: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_bitstr.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_bitstr.c index bffbd160a23..f462dd10736 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_bitstr.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_bitstr.c @@ -11,7 +11,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/asn1.h> -#include "asn1_locl.h" +#include "asn1_local.h" int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c index a1a17901b8f..a452b3deba0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_d2i_fp.c @@ -13,7 +13,7 @@ #include "internal/numbers.h" #include <openssl/buffer.h> #include <openssl/asn1.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #ifndef NO_OLD_ASN1 # ifndef OPENSSL_NO_STDIO diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_gentm.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_gentm.c index d3878d6e57f..133bbb1581c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_gentm.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_gentm.c @@ -15,7 +15,7 @@ #include <time.h> #include "internal/cryptlib.h" #include <openssl/asn1.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* This is the primary function used to parse ASN1_GENERALIZEDTIME */ int asn1_generalizedtime_to_tm(struct tm *tm, const ASN1_GENERALIZEDTIME *d) diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_int.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_int.c index 70a45cb3cc7..9c1a9f52b5e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_int.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_int.c @@ -13,7 +13,7 @@ #include <limits.h> #include <openssl/asn1.h> #include <openssl/bn.h> -#include "asn1_locl.h" +#include "asn1_local.h" ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_mbstr.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_mbstr.c index 949fe6c1611..bdb697ab30c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_mbstr.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_mbstr.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/asn1.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_object.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_object.c index 5e1424a806f..d67a723c961 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_object.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_object.c @@ -9,14 +9,14 @@ #include <stdio.h> #include <limits.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/asn1.h> #include <openssl/objects.h> #include <openssl/bn.h> -#include "internal/asn1_int.h" -#include "asn1_locl.h" +#include "crypto/asn1.h" +#include "asn1_local.h" int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_print.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_print.c index 8a373d9da9f..85a631a27aa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_print.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/asn1.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_sign.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_sign.c index 146fdb96262..72381b66555 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_sign.c @@ -18,8 +18,8 @@ #include <openssl/x509.h> #include <openssl/objects.h> #include <openssl/buffer.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" #ifndef NO_ASN1_OLD diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c index ea4dd1c5b18..4879b33785e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_strex.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <string.h> #include "internal/cryptlib.h" -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #include <openssl/crypto.h> #include <openssl/x509.h> #include <openssl/asn1.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_time.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_time.c index c36dd950016..54e0de1931c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_time.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_time.c @@ -16,10 +16,10 @@ #include <stdio.h> #include <time.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/asn1t.h> -#include "asn1_locl.h" +#include "asn1_local.h" IMPLEMENT_ASN1_MSTRING(ASN1_TIME, B_ASN1_TIME) diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_type.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_type.c index 732328e0504..4a96315df03 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_type.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_type.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/objects.h> -#include "asn1_locl.h" +#include "asn1_local.h" int ASN1_TYPE_get(const ASN1_TYPE *a) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_utctm.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_utctm.c index b224991aa3d..0ff37b16c51 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_utctm.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_utctm.c @@ -11,7 +11,7 @@ #include <time.h> #include "internal/cryptlib.h" #include <openssl/asn1.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* This is the primary function used to parse ASN1_UTCTIME */ int asn1_utctime_to_tm(struct tm *tm, const ASN1_UTCTIME *d) diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/a_verify.c b/crypto/external/bsd/openssl/dist/crypto/asn1/a_verify.c index cdaf17c3cbc..4b5f54234fa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/a_verify.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/a_verify.c @@ -18,8 +18,8 @@ #include <openssl/objects.h> #include <openssl/buffer.h> #include <openssl/evp.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" #ifndef NO_ASN1_OLD diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/ameth_lib.c b/crypto/external/bsd/openssl/dist/crypto/asn1/ameth_lib.c index d7d270dbb58..5e8c3ed1d5b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/ameth_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/ameth_lib.c @@ -13,8 +13,8 @@ #include <openssl/asn1t.h> #include <openssl/x509.h> #include <openssl/engine.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" #include "standard_methods.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_lib.c b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_lib.c index 88c4b539180..366afc5f6c6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,7 +11,7 @@ #include <limits.h> #include "internal/cryptlib.h" #include <openssl/asn1.h> -#include "asn1_locl.h" +#include "asn1_local.h" static int asn1_get_length(const unsigned char **pp, int *inf, long *rl, long max); @@ -268,18 +268,29 @@ ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *str) return ret; } -int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len) +int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len_in) { unsigned char *c; const char *data = _data; + size_t len; - if (len < 0) { + if (len_in < 0) { if (data == NULL) return 0; - else - len = strlen(data); + len = strlen(data); + } else { + len = (size_t)len_in; + } + /* + * Verify that the length fits within an integer for assignment to + * str->length below. The additional 1 is subtracted to allow for the + * '\0' terminator even though this isn't strictly necessary. + */ + if (len > INT_MAX - 1) { + ASN1err(0, ASN1_R_TOO_LARGE); + return 0; } - if ((str->length <= len) || (str->data == NULL)) { + if ((size_t)str->length <= len || str->data == NULL) { c = str->data; str->data = OPENSSL_realloc(c, len + 1); if (str->data == NULL) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_locl.h b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_local.h index cec141721b3..cec141721b3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_par.c b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_par.c index 4b60c615de7..3f10c7cb94c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_par.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/asn1_par.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -75,6 +75,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int nl, hl, j, r; ASN1_OBJECT *o = NULL; ASN1_OCTET_STRING *os = NULL; + ASN1_INTEGER *ai = NULL; + ASN1_ENUMERATED *ae = NULL; /* ASN1_BMPSTRING *bmp=NULL; */ int dump_indent, dump_cont = 0; @@ -250,22 +252,21 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, ASN1_OCTET_STRING_free(os); os = NULL; } else if (tag == V_ASN1_INTEGER) { - ASN1_INTEGER *bs; int i; opp = op; - bs = d2i_ASN1_INTEGER(NULL, &opp, len + hl); - if (bs != NULL) { + ai = d2i_ASN1_INTEGER(NULL, &opp, len + hl); + if (ai != NULL) { if (BIO_write(bp, ":", 1) <= 0) goto end; - if (bs->type == V_ASN1_NEG_INTEGER) + if (ai->type == V_ASN1_NEG_INTEGER) if (BIO_write(bp, "-", 1) <= 0) goto end; - for (i = 0; i < bs->length; i++) { - if (BIO_printf(bp, "%02X", bs->data[i]) <= 0) + for (i = 0; i < ai->length; i++) { + if (BIO_printf(bp, "%02X", ai->data[i]) <= 0) goto end; } - if (bs->length == 0) { + if (ai->length == 0) { if (BIO_write(bp, "00", 2) <= 0) goto end; } @@ -274,24 +275,24 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, goto end; dump_cont = 1; } - ASN1_INTEGER_free(bs); + ASN1_INTEGER_free(ai); + ai = NULL; } else if (tag == V_ASN1_ENUMERATED) { - ASN1_ENUMERATED *bs; int i; opp = op; - bs = d2i_ASN1_ENUMERATED(NULL, &opp, len + hl); - if (bs != NULL) { + ae = d2i_ASN1_ENUMERATED(NULL, &opp, len + hl); + if (ae != NULL) { if (BIO_write(bp, ":", 1) <= 0) goto end; - if (bs->type == V_ASN1_NEG_ENUMERATED) + if (ae->type == V_ASN1_NEG_ENUMERATED) if (BIO_write(bp, "-", 1) <= 0) goto end; - for (i = 0; i < bs->length; i++) { - if (BIO_printf(bp, "%02X", bs->data[i]) <= 0) + for (i = 0; i < ae->length; i++) { + if (BIO_printf(bp, "%02X", ae->data[i]) <= 0) goto end; } - if (bs->length == 0) { + if (ae->length == 0) { if (BIO_write(bp, "00", 2) <= 0) goto end; } @@ -300,7 +301,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, goto end; dump_cont = 1; } - ASN1_ENUMERATED_free(bs); + ASN1_ENUMERATED_free(ae); + ae = NULL; } else if (len > 0 && dump) { if (!nl) { if (BIO_write(bp, "\n", 1) <= 0) @@ -341,6 +343,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, end: ASN1_OBJECT_free(o); ASN1_OCTET_STRING_free(os); + ASN1_INTEGER_free(ai); + ASN1_ENUMERATED_free(ae); *pp = p; return ret; } diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/asn_mime.c b/crypto/external/bsd/openssl/dist/crypto/asn1/asn_mime.c index dfd5be63475..38735cd86f3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/asn_mime.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/asn_mime.c @@ -1,5 +1,5 @@ /* - * Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,15 +8,15 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/rand.h> #include <openssl/x509.h> #include <openssl/asn1.h> #include <openssl/asn1t.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" #include "internal/bio.h" -#include "asn1_locl.h" +#include "asn1_local.h" /* * Generalised MIME like utilities for streaming ASN1. Although many have a @@ -198,6 +198,14 @@ static int asn1_write_micalg(BIO *out, STACK_OF(X509_ALGOR) *mdalgs) BIO_puts(out, "gostr3411-94"); goto err; + case NID_id_GostR3411_2012_256: + BIO_puts(out, "gostr3411-2012-256"); + goto err; + + case NID_id_GostR3411_2012_512: + BIO_puts(out, "gostr3411-2012-512"); + goto err; + default: if (have_unknown) write_comma = 0; diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/asn_moid.c b/crypto/external/bsd/openssl/dist/crypto/asn1/asn_moid.c index 68a01f31179..732ce972aa2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/asn_moid.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/asn_moid.c @@ -8,13 +8,13 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <openssl/crypto.h> #include "internal/cryptlib.h" #include <openssl/conf.h> #include <openssl/x509.h> -#include "internal/asn1_int.h" -#include "internal/objects.h" +#include "crypto/asn1.h" +#include "crypto/objects.h" /* Simple ASN1 OID module: add all objects in a given section */ diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/charmap.h b/crypto/external/bsd/openssl/dist/crypto/asn1/charmap.h index f15d72d7366..cac354c6bf3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/charmap.h +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/charmap.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/asn1/charmap.pl * - * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pr.c b/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pr.c index aa0d6ad6aed..6ec01073804 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pr.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pr.c @@ -15,8 +15,8 @@ #include <openssl/engine.h> #include <openssl/x509.h> #include <openssl/asn1.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, long length) diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pu.c b/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pu.c index 7bc16c7bceb..8327ac16ca9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pu.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/d2i_pu.c @@ -17,7 +17,7 @@ #include <openssl/dsa.h> #include <openssl/ec.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, long length) diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/f_int.c b/crypto/external/bsd/openssl/dist/crypto/asn1/f_int.c index 6d6bddc651c..3a18381173d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/f_int.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/f_int.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/asn1.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/f_string.c b/crypto/external/bsd/openssl/dist/crypto/asn1/f_string.c index f893489a671..53dfec71b5d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/f_string.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/f_string.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/asn1.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/i2d_pr.c b/crypto/external/bsd/openssl/dist/crypto/asn1/i2d_pr.c index 445b0c84251..0374c0bfbdc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/i2d_pr.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/i2d_pr.c @@ -11,8 +11,8 @@ #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp) { diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/p8_pkey.c b/crypto/external/bsd/openssl/dist/crypto/asn1/p8_pkey.c index dbee827e0d3..ab509b1ac97 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/p8_pkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/p8_pkey.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" /* Minor tweak to operation: zero private key data */ static int pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/t_pkey.c b/crypto/external/bsd/openssl/dist/crypto/asn1/t_pkey.c index 3b2c9df8917..651622aedc8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/t_pkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/t_pkey.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/buffer.h> -#include "internal/bn_int.h" +#include "crypto/bn.h" /* Number of octets per line */ #define ASN1_BUF_PRINT_WIDTH 15 diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_dec.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_dec.c index c2a521ed518..2332b204edc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_dec.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_dec.c @@ -15,7 +15,7 @@ #include <openssl/buffer.h> #include <openssl/err.h> #include "internal/numbers.h" -#include "asn1_locl.h" +#include "asn1_local.h" /* diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_enc.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_enc.c index 30be314ff98..d600c7a5380 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_enc.c @@ -13,8 +13,8 @@ #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/objects.h> -#include "internal/asn1_int.h" -#include "asn1_locl.h" +#include "crypto/asn1.h" +#include "asn1_local.h" static int asn1_i2d_ex_primitive(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass); diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_fre.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_fre.c index bbce489fe00..2916bef7863 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_fre.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_fre.c @@ -11,7 +11,7 @@ #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/objects.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* Free up an ASN1 structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_new.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_new.c index 6b8ea8ddd74..287f2af33b5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_new.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_new.c @@ -13,7 +13,7 @@ #include <openssl/err.h> #include <openssl/asn1t.h> #include <string.h> -#include "asn1_locl.h" +#include "asn1_local.h" static int asn1_item_embed_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed); diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_prn.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_prn.c index 1fb66f1062b..56d5ea0f39e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_prn.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_prn.c @@ -15,8 +15,8 @@ #include <openssl/buffer.h> #include <openssl/err.h> #include <openssl/x509v3.h> -#include "internal/asn1_int.h" -#include "asn1_locl.h" +#include "crypto/asn1.h" +#include "asn1_local.h" /* * Print routines. diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_scn.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_scn.c index e1df2cfcae0..f0f218ae8bb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_scn.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_scn.c @@ -15,7 +15,7 @@ #include <openssl/buffer.h> #include <openssl/err.h> #include <openssl/x509v3.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* * General ASN1 structure recursive scanner: iterate through all fields diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_utl.c b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_utl.c index 7ceecffce75..a448685e19a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_utl.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/tasn_utl.c @@ -15,7 +15,7 @@ #include <openssl/asn1t.h> #include <openssl/objects.h> #include <openssl/err.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* Utility functions for manipulating fields and offsets */ diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/x_algor.c b/crypto/external/bsd/openssl/dist/crypto/asn1/x_algor.c index 853d45b8bc8..4c4a718850e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/x_algor.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/x_algor.c @@ -11,7 +11,7 @@ #include <openssl/x509.h> #include <openssl/asn1.h> #include <openssl/asn1t.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" ASN1_SEQUENCE(X509_ALGOR) = { ASN1_SIMPLE(X509_ALGOR, algorithm, ASN1_OBJECT), diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/x_bignum.c b/crypto/external/bsd/openssl/dist/crypto/asn1/x_bignum.c index 6c93ea7510d..c6b3accd3a1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/x_bignum.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/x_bignum.c @@ -82,7 +82,7 @@ static int bn_secure_new(ASN1_VALUE **pval, const ASN1_ITEM *it) static void bn_free(ASN1_VALUE **pval, const ASN1_ITEM *it) { - if (!*pval) + if (*pval == NULL) return; if (it->size & BN_SENSITIVE) BN_clear_free((BIGNUM *)*pval); @@ -96,7 +96,7 @@ static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, { BIGNUM *bn; int pad; - if (!*pval) + if (*pval == NULL) return -1; bn = (BIGNUM *)*pval; /* If MSB set in an octet we need a padding byte */ @@ -133,7 +133,7 @@ static int bn_secure_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int ret; BIGNUM *bn; - if (!*pval && !bn_secure_new(pval, it)) + if (*pval == NULL && !bn_secure_new(pval, it)) return 0; ret = bn_c2i(pval, cont, len, utype, free_cont, it); diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/x_int64.c b/crypto/external/bsd/openssl/dist/crypto/asn1/x_int64.c index 0ee552cf0a4..96c1a259e1f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/x_int64.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/x_int64.c @@ -12,7 +12,7 @@ #include "internal/numbers.h" #include <openssl/asn1t.h> #include <openssl/bn.h> -#include "asn1_locl.h" +#include "asn1_local.h" /* * Custom primitive types for handling int32_t, int64_t, uint32_t, uint64_t. diff --git a/crypto/external/bsd/openssl/dist/crypto/asn1/x_sig.c b/crypto/external/bsd/openssl/dist/crypto/asn1/x_sig.c index e465cf2d4d1..fb24e240cba 100644 --- a/crypto/external/bsd/openssl/dist/crypto/asn1/x_sig.c +++ b/crypto/external/bsd/openssl/dist/crypto/asn1/x_sig.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" ASN1_SEQUENCE(X509_SIG) = { ASN1_SIMPLE(X509_SIG, algor, X509_ALGOR), diff --git a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_null.c b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_null.c index 3eaf170f2e5..26801f87313 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_null.c @@ -8,7 +8,7 @@ */ /* This must be the first #include file */ -#include "../async_locl.h" +#include "../async_local.h" #ifdef ASYNC_NULL int ASYNC_is_capable(void) diff --git a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.c b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.c index 02c342d3dfa..95678d4fa68 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.c +++ b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.c @@ -8,7 +8,7 @@ */ /* This must be the first #include file */ -#include "../async_locl.h" +#include "../async_local.h" #ifdef ASYNC_POSIX diff --git a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.h b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.h index 62449fe60e0..873c0316ddf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.h +++ b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_posix.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef OPENSSL_ASYNC_ARCH_ASYNC_POSIX_H -#define OPENSSL_ASYNC_ARCH_ASYNC_POSIX_H +#ifndef OSSL_CRYPTO_ASYNC_POSIX_H +#define OSSL_CRYPTO_ASYNC_POSIX_H #include <openssl/e_os2.h> #if defined(OPENSSL_SYS_UNIX) \ @@ -55,4 +55,4 @@ void async_fibre_free(async_fibre *fibre); # endif #endif -#endif /* OPENSSL_ASYNC_ARCH_ASYNC_POSIX_H */ +#endif /* OSSL_CRYPTO_ASYNC_POSIX_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_win.c b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_win.c index 077d56ced02..1f360d895b0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/arch/async_win.c +++ b/crypto/external/bsd/openssl/dist/crypto/async/arch/async_win.c @@ -8,7 +8,7 @@ */ /* This must be the first #include file */ -#include "../async_locl.h" +#include "../async_local.h" #ifdef ASYNC_WIN diff --git a/crypto/external/bsd/openssl/dist/crypto/async/async.c b/crypto/external/bsd/openssl/dist/crypto/async/async.c index 1d83e4576f8..326015c605e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/async.c +++ b/crypto/external/bsd/openssl/dist/crypto/async/async.c @@ -16,10 +16,10 @@ #undef _FORTIFY_SOURCE /* This must be the first #include file */ -#include "async_locl.h" +#include "async_local.h" #include <openssl/err.h> -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include <string.h> #define ASYNC_JOB_RUNNING 0 diff --git a/crypto/external/bsd/openssl/dist/crypto/async/async_locl.h b/crypto/external/bsd/openssl/dist/crypto/async/async_local.h index d7790293f74..dd1a85e0268 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/async_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/async/async_local.h @@ -20,7 +20,7 @@ # include <windows.h> #endif -#include "internal/async.h" +#include "crypto/async.h" #include <openssl/crypto.h> typedef struct async_ctx_st async_ctx; diff --git a/crypto/external/bsd/openssl/dist/crypto/async/async_wait.c b/crypto/external/bsd/openssl/dist/crypto/async/async_wait.c index b23e43e8c86..7723f949a67 100644 --- a/crypto/external/bsd/openssl/dist/crypto/async/async_wait.c +++ b/crypto/external/bsd/openssl/dist/crypto/async/async_wait.c @@ -8,7 +8,7 @@ */ /* This must be the first #include file */ -#include "async_locl.h" +#include "async_local.h" #include <openssl/err.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/asm/bf-586.pl b/crypto/external/bsd/openssl/dist/crypto/bf/asm/bf-586.pl index 4e913aecf42..cddc17bddaf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/asm/bf-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bf/asm/bf-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -32,7 +32,7 @@ $tmp4="edx"; &cbc("BF_cbc_encrypt","BF_encrypt","BF_decrypt",1,4,5,3,-1,-1); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub BF_encrypt { diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_cfb64.c b/crypto/external/bsd/openssl/dist/crypto/bf/bf_cfb64.c index ce6e13b5a4c..12332c540d6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_cfb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_cfb64.c @@ -8,7 +8,7 @@ */ #include <openssl/blowfish.h> -#include "bf_locl.h" +#include "bf_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_ecb.c b/crypto/external/bsd/openssl/dist/crypto/bf/bf_ecb.c index dc1becdbe4e..38e784cc2da 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/blowfish.h> -#include "bf_locl.h" +#include "bf_local.h" #include <openssl/opensslv.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_enc.c b/crypto/external/bsd/openssl/dist/crypto/bf/bf_enc.c index 67c0d78aec5..423a4697a51 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_enc.c @@ -8,7 +8,7 @@ */ #include <openssl/blowfish.h> -#include "bf_locl.h" +#include "bf_local.h" /* * Blowfish as implemented from 'Blowfish: Springer-Verlag paper' (From diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_locl.h b/crypto/external/bsd/openssl/dist/crypto/bf/bf_local.h index b1a415e5132..8c76976fa4d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_BF_LOCL_H -# define HEADER_BF_LOCL_H +#ifndef OSSL_CRYPTO_BF_LOCAL_H +# define OSSL_CRYPTO_BF_LOCAL_H # include <openssl/opensslconf.h> /* NOTE - c is not incremented as per n2l */ diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_ofb64.c b/crypto/external/bsd/openssl/dist/crypto/bf/bf_ofb64.c index 6418217b307..5d75401fcca 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_ofb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_ofb64.c @@ -8,7 +8,7 @@ */ #include <openssl/blowfish.h> -#include "bf_locl.h" +#include "bf_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/bf/bf_skey.c b/crypto/external/bsd/openssl/dist/crypto/bf/bf_skey.c index a4903a2a71d..ed29cf9153a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bf/bf_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/bf/bf_skey.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <string.h> #include <openssl/blowfish.h> -#include "bf_locl.h" +#include "bf_local.h" #include "bf_pi.h" void BF_set_key(BF_KEY *key, int len, const unsigned char *data) diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/b_addr.c b/crypto/external/bsd/openssl/dist/crypto/bio/b_addr.c index dd5008e636a..d11268b6dc5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/b_addr.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/b_addr.c @@ -10,7 +10,7 @@ #include <assert.h> #include <string.h> -#include "bio_lcl.h" +#include "bio_local.h" #include <openssl/crypto.h> #ifndef OPENSSL_NO_SOCK @@ -22,7 +22,7 @@ CRYPTO_RWLOCK *bio_lookup_lock; static CRYPTO_ONCE bio_lookup_init = CRYPTO_ONCE_STATIC_INIT; /* - * Throughout this file and bio_lcl.h, the existence of the macro + * Throughout this file and bio_local.h, the existence of the macro * AI_PASSIVE is used to detect the availability of struct addrinfo, * getnameinfo() and getaddrinfo(). If that macro doesn't exist, * we use our own implementation instead, using gethostbyname, @@ -694,9 +694,11 @@ int BIO_lookup_ex(const char *host, const char *service, int lookup_type, hints.ai_flags |= AI_PASSIVE; /* Note that |res| SHOULD be a 'struct addrinfo **' thanks to - * macro magic in bio_lcl.h + * macro magic in bio_local.h */ +# if defined(AI_ADDRCONFIG) && defined(AI_NUMERICHOST) retry: +# endif switch ((gai_ret = getaddrinfo(host, service, &hints, res))) { # ifdef EAI_SYSTEM case EAI_SYSTEM: diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/b_dump.c b/crypto/external/bsd/openssl/dist/crypto/bio/b_dump.c index 0d06414e7d9..f175e244b23 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/b_dump.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/b_dump.c @@ -12,7 +12,7 @@ */ #include <stdio.h> -#include "bio_lcl.h" +#include "bio_local.h" #define DUMP_WIDTH 16 #define DUMP_WIDTH_LESS_INDENT(i) (DUMP_WIDTH - ((i - (i > 6 ? 6 : i) + 3) / 4)) @@ -36,8 +36,8 @@ int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), if (indent < 0) indent = 0; - else if (indent > 128) - indent = 128; + else if (indent > 64) + indent = 64; dump_width = DUMP_WIDTH_LESS_INDENT(indent); rows = len / dump_width; diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/b_print.c b/crypto/external/bsd/openssl/dist/crypto/bio/b_print.c index 9e907fcaa77..8ef90ac1d4f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/b_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/b_print.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <string.h> #include "internal/cryptlib.h" -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/numbers.h" #include <openssl/bio.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/b_sock.c b/crypto/external/bsd/openssl/dist/crypto/bio/b_sock.c index e7a24d02cbe..df431e6d523 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/b_sock.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/b_sock.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <stdlib.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #ifndef OPENSSL_NO_SOCK # define SOCKET_PROTOCOL IPPROTO_TCP # ifdef SO_MAXCONN diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/b_sock2.c b/crypto/external/bsd/openssl/dist/crypto/bio/b_sock2.c index 5d82ab22dc3..335dfabc618 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/b_sock2.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/b_sock2.c @@ -11,7 +11,7 @@ #include <stdlib.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include <openssl/err.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bf_buff.c b/crypto/external/bsd/openssl/dist/crypto/bio/bf_buff.c index 8e87a629b8b..51ae1f918d8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bf_buff.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bf_buff.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" static int buffer_write(BIO *h, const char *buf, int num); diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bf_lbuf.c b/crypto/external/bsd/openssl/dist/crypto/bio/bf_lbuf.c index 194c7b8af71..72f9901813e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bf_lbuf.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bf_lbuf.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" #include <openssl/evp.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bf_nbio.c b/crypto/external/bsd/openssl/dist/crypto/bio/bf_nbio.c index 4bc84eeba65..dd7011ab669 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bf_nbio.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bf_nbio.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" #include <openssl/rand.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bf_null.c b/crypto/external/bsd/openssl/dist/crypto/bio/bf_null.c index 613fb2e0583..48c6be692a5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bf_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bf_null.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bio_cb.c b/crypto/external/bsd/openssl/dist/crypto/bio/bio_cb.c index 1154c233afd..a153100a882 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bio_cb.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bio_cb.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" #include <openssl/err.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bio_lib.c b/crypto/external/bsd/openssl/dist/crypto/bio/bio_lib.c index ca375b911ae..d2202e537b3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bio_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bio_lib.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <errno.h> #include <openssl/crypto.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bio_lcl.h b/crypto/external/bsd/openssl/dist/crypto/bio/bio_local.h index e2c05a20de6..8b212212939 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bio_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bio_local.h @@ -27,11 +27,11 @@ * For clarity, we check for internal/cryptlib.h since it's a common header * that also includes bio.h. */ -# ifdef HEADER_CRYPTLIB_H -# error internal/cryptlib.h included before bio_lcl.h +# ifdef OSSL_INTERNAL_CRYPTLIB_H +# error internal/cryptlib.h included before bio_local.h # endif # ifdef HEADER_BIO_H -# error openssl/bio.h included before bio_lcl.h +# error openssl/bio.h included before bio_local.h # endif /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bio_meth.c b/crypto/external/bsd/openssl/dist/crypto/bio/bio_meth.c index 493ff63a901..da116461922 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bio_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bio_meth.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/thread_once.h" CRYPTO_RWLOCK *bio_type_lock = NULL; diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_acpt.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_acpt.c index 993e5903a04..5a2cb50dfc3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_acpt.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_acpt.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #ifndef OPENSSL_NO_SOCK @@ -222,10 +222,10 @@ static int acpt_state(BIO *b, BIO_ACCEPT *c) break; case ACPT_S_CREATE_SOCKET: - ret = BIO_socket(BIO_ADDRINFO_family(c->addr_iter), - BIO_ADDRINFO_socktype(c->addr_iter), - BIO_ADDRINFO_protocol(c->addr_iter), 0); - if (ret == (int)INVALID_SOCKET) { + s = BIO_socket(BIO_ADDRINFO_family(c->addr_iter), + BIO_ADDRINFO_socktype(c->addr_iter), + BIO_ADDRINFO_protocol(c->addr_iter), 0); + if (s == (int)INVALID_SOCKET) { SYSerr(SYS_F_SOCKET, get_last_socket_error()); ERR_add_error_data(4, "hostname=", c->param_addr, @@ -233,9 +233,10 @@ static int acpt_state(BIO *b, BIO_ACCEPT *c) BIOerr(BIO_F_ACPT_STATE, BIO_R_UNABLE_TO_CREATE_SOCKET); goto exit_loop; } - c->accept_sock = ret; - b->num = ret; + c->accept_sock = s; + b->num = s; c->state = ACPT_S_LISTEN; + s = -1; break; case ACPT_S_LISTEN: @@ -527,7 +528,12 @@ static long acpt_ctrl(BIO *b, int cmd, long num, void *ptr) break; case BIO_CTRL_DUP: break; - + case BIO_CTRL_EOF: + if (b->next_bio == NULL) + ret = 0; + else + ret = BIO_ctrl(b->next_bio, cmd, num, ptr); + break; default: ret = 0; break; diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_bio.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_bio.c index e34382c5578..c97349e4328 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_bio.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_bio.c @@ -21,7 +21,7 @@ #include <stdlib.h> #include <string.h> -#include "bio_lcl.h" +#include "bio_local.h" #include <openssl/err.h> #include <openssl/crypto.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_conn.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_conn.c index e9673fe7833..dd43a406018 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_conn.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_conn.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #ifndef OPENSSL_NO_SOCK @@ -54,6 +54,7 @@ void BIO_CONNECT_free(BIO_CONNECT *a); #define BIO_CONN_S_CONNECT 4 #define BIO_CONN_S_OK 5 #define BIO_CONN_S_BLOCKED_CONNECT 6 +#define BIO_CONN_S_CONNECT_ERROR 7 static const BIO_METHOD methods_connectp = { BIO_TYPE_CONNECT, @@ -174,7 +175,8 @@ static int conn_state(BIO *b, BIO_CONNECT *c) ERR_add_error_data(4, "hostname=", c->param_hostname, " service=", c->param_service); - BIOerr(BIO_F_CONN_STATE, BIO_R_CONNECT_ERROR); + c->state = BIO_CONN_S_CONNECT_ERROR; + break; } goto exit_loop; } else { @@ -197,6 +199,11 @@ static int conn_state(BIO *b, BIO_CONNECT *c) c->state = BIO_CONN_S_OK; break; + case BIO_CONN_S_CONNECT_ERROR: + BIOerr(BIO_F_CONN_STATE, BIO_R_CONNECT_ERROR); + ret = 0; + goto exit_loop; + case BIO_CONN_S_OK: ret = 1; goto exit_loop; @@ -309,6 +316,8 @@ static int conn_read(BIO *b, char *out, int outl) if (ret <= 0) { if (BIO_sock_should_retry(ret)) BIO_set_retry_read(b); + else if (ret == 0) + b->flags |= BIO_FLAGS_IN_EOF; } } return ret; @@ -488,6 +497,9 @@ static long conn_ctrl(BIO *b, int cmd, long num, void *ptr) *fptr = data->info_callback; } break; + case BIO_CTRL_EOF: + ret = (b->flags & BIO_FLAGS_IN_EOF) != 0 ? 1 : 0; + break; default: ret = 0; break; diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_dgram.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_dgram.c index 551821609f7..942fd8b514b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_dgram.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_dgram.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #ifndef OPENSSL_NO_DGRAM # ifndef OPENSSL_NO_SCTP diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_fd.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_fd.c index 5bc539c90b9..ccbe1626baf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_fd.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_fd.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #if defined(OPENSSL_NO_POSIX_IO) /* @@ -123,6 +123,8 @@ static int fd_read(BIO *b, char *out, int outl) if (ret <= 0) { if (BIO_fd_should_retry(ret)) BIO_set_retry_read(b); + else if (ret == 0) + b->flags |= BIO_FLAGS_IN_EOF; } } return ret; @@ -186,6 +188,9 @@ static long fd_ctrl(BIO *b, int cmd, long num, void *ptr) case BIO_CTRL_FLUSH: ret = 1; break; + case BIO_CTRL_EOF: + ret = (b->flags & BIO_FLAGS_IN_EOF) != 0 ? 1 : 0; + break; default: ret = 0; break; diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_file.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_file.c index a2102055976..1a70ce79940 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_file.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_file.c @@ -27,7 +27,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include <openssl/err.h> #if !defined(OPENSSL_NO_STDIO) diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_log.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_log.c index 662afb9267f..90668efee50 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_log.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_log.c @@ -19,7 +19,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" #if defined(OPENSSL_SYS_WINCE) diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_mem.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_mem.c index 2d536e9db05..7cb4a57813f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_mem.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_mem.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" static int mem_write(BIO *h, const char *buf, int num); diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_null.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_null.c index 08f1d2bc98a..e73ce7841d4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_null.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" static int null_write(BIO *h, const char *buf, int num); diff --git a/crypto/external/bsd/openssl/dist/crypto/bio/bss_sock.c b/crypto/external/bsd/openssl/dist/crypto/bio/bss_sock.c index ad38453201f..6251f3d46a1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bio/bss_sock.c +++ b/crypto/external/bsd/openssl/dist/crypto/bio/bss_sock.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -9,7 +9,7 @@ #include <stdio.h> #include <errno.h> -#include "bio_lcl.h" +#include "bio_local.h" #include "internal/cryptlib.h" #ifndef OPENSSL_NO_SOCK @@ -101,6 +101,8 @@ static int sock_read(BIO *b, char *out, int outl) if (ret <= 0) { if (BIO_sock_should_retry(ret)) BIO_set_retry_read(b); + else if (ret == 0) + b->flags |= BIO_FLAGS_IN_EOF; } } return ret; @@ -151,6 +153,9 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr) case BIO_CTRL_FLUSH: ret = 1; break; + case BIO_CTRL_EOF: + ret = (b->flags & BIO_FLAGS_IN_EOF) != 0 ? 1 : 0; + break; default: ret = 0; break; diff --git a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2_locl.h b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2_local.h index 926bae944c1..926bae944c1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2b.c b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2b.c index 4b353dd498b..fc6e5f1a3f3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2b.c +++ b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2b.c @@ -18,7 +18,7 @@ #include <string.h> #include <openssl/crypto.h> -#include "blake2_locl.h" +#include "blake2_local.h" #include "blake2_impl.h" static const uint64_t blake2b_IV[8] = diff --git a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2s.c b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2s.c index 8211374d123..d072e05ca36 100644 --- a/crypto/external/bsd/openssl/dist/crypto/blake2/blake2s.c +++ b/crypto/external/bsd/openssl/dist/crypto/blake2/blake2s.c @@ -18,7 +18,7 @@ #include <string.h> #include <openssl/crypto.h> -#include "blake2_locl.h" +#include "blake2_local.h" #include "blake2_impl.h" static const uint32_t blake2s_IV[8] = diff --git a/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2b.c b/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2b.c index c493648c3cd..ce4d8f95652 100644 --- a/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2b.c +++ b/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2b.c @@ -20,8 +20,8 @@ # include <openssl/evp.h> # include <openssl/objects.h> -# include "blake2_locl.h" -# include "internal/evp_int.h" +# include "blake2_local.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2s.c b/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2s.c index 83b2811e443..b8fb048b30b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2s.c +++ b/crypto/external/bsd/openssl/dist/crypto/blake2/m_blake2s.c @@ -20,8 +20,8 @@ # include <openssl/evp.h> # include <openssl/objects.h> -# include "blake2_locl.h" -# include "internal/evp_int.h" +# include "blake2_local.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/README.pod b/crypto/external/bsd/openssl/dist/crypto/bn/README.pod index 706a140342c..5d5c4fa99fa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/README.pod +++ b/crypto/external/bsd/openssl/dist/crypto/bn/README.pod @@ -188,7 +188,7 @@ B<a> and the 2*B<n> word arrays B<tmp> and B<r>. The implementations use the following macros which, depending on the architecture, may use "long long" C operations or inline assembler. -They are defined in C<bn_lcl.h>. +They are defined in C<bn_local.h>. mul(B<r>, B<a>, B<w>, B<c>) computes B<w>*B<a>+B<c> and places the low word of the result in B<r> and the high word in B<c>. diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/alpha-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/alpha-mont.pl index c9b962a150d..83717921eb8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/alpha-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/alpha-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -325,4 +325,4 @@ bn_mul_mont: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-gf2m.pl index 7a0cdb2e8a0..3a83cb85500 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -329,4 +329,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-mont.pl index 6bedc62ba62..eadc8bbf632 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv4-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -754,4 +754,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv8-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv8-mont.pl index d8347bf9324..bc9a18dc4ce 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv8-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/armv8-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1511,4 +1511,4 @@ ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/bn-586.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/bn-586.pl index 58effc8808d..e0422405d5f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/bn-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/bn-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -31,7 +31,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); } &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub bn_mul_add_words { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/c64xplus-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/c64xplus-gf2m.pl index 9c46da3af8d..3bb8d120e96 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/c64xplus-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/c64xplus-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -157,4 +157,4 @@ $code.=<<___; ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/co-586.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/co-586.pl index 97f5e3a19fc..3c34fa885c3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/co-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/co-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -22,7 +22,7 @@ open STDOUT,">$output"; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub mul_add_c { @@ -39,17 +39,17 @@ sub mul_add_c &mul("edx"); &add($c0,"eax"); - &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # laod next a + &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a &mov("eax",&wparam(0)) if $pos > 0; # load r[] ### &adc($c1,"edx"); - &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # laod next b - &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # laod next b + &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # load next b + &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # load next b ### &adc($c2,0); # is pos > 1, it means it is the last loop &mov(&DWP($i*4,"eax","",0),$c0) if $pos > 0; # save r[]; - &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # laod next a + &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next a } sub sqr_add_c diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ia64-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ia64-mont.pl index ec486f77792..7a4e74d7194 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ia64-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ia64-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -857,4 +857,4 @@ ___ open STDOUT,">$output" if $output; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips-mont.pl index fbe5d04f716..3b79a4b186d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -430,4 +430,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips.pl index 34f38649382..26e4a61a3ea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2262,4 +2262,4 @@ $code.=<<___; .end bn_sqr_comba4 ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/parisc-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/parisc-mont.pl index aa9f626ed26..6a7c714a156 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/parisc-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/parisc-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1003,4 +1003,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc-mont.pl index ec7e019a438..278314c57bd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1987,4 +1987,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc.pl index d6d4e66f92e..a8d3f14e9b8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2009,4 +2009,4 @@ Lppcasm_maw_adios: EOF $data =~ s/\`([^\`]*)\`/eval $1/gem; print $data; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc64-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc64-mont.pl index c41b620bc23..b55fd46c824 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc64-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/ppc64-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1649,4 +1649,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-avx2.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-avx2.pl index 85cd73c668b..9b54f9d9ed3 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-avx2.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-avx2.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2012, Intel Corporation. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use @@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $avx = ($ver>=3.0) + ($ver>=3.01); $addx = ($ver>=3.03); @@ -1979,4 +1979,4 @@ rsaz_1024_gather5_avx2: ___ }}} -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-x86_64.pl index b1797b649f0..8172dace74e 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/rsaz-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2012, Intel Corporation. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use @@ -81,7 +81,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $addx = ($ver>=3.03); } @@ -116,7 +116,7 @@ rsaz_512_sqr: # 25-29% faster than rsaz_512_mul subq \$128+24, %rsp .cfi_adjust_cfa_offset 128+24 .Lsqr_body: - movq $mod, %rbp # common argument + movq $mod, %xmm1 # common off-load movq ($inp), %rdx movq 8($inp), %rax movq $n0, 128(%rsp) @@ -134,7 +134,8 @@ $code.=<<___; .Loop_sqr: movl $times,128+8(%rsp) #first iteration - movq %rdx, %rbx + movq %rdx, %rbx # 0($inp) + mov %rax, %rbp # 8($inp) mulq %rdx movq %rax, %r8 movq 16($inp), %rax @@ -173,31 +174,29 @@ $code.=<<___; mulq %rbx addq %rax, %r14 movq %rbx, %rax - movq %rdx, %r15 - adcq \$0, %r15 + adcq \$0, %rdx - addq %r8, %r8 #shlq \$1, %r8 - movq %r9, %rcx - adcq %r9, %r9 #shld \$1, %r8, %r9 + xorq %rcx,%rcx # rcx:r8 = r8 << 1 + addq %r8, %r8 + movq %rdx, %r15 + adcq \$0, %rcx mulq %rax - movq %rax, (%rsp) - addq %rdx, %r8 - adcq \$0, %r9 + addq %r8, %rdx + adcq \$0, %rcx - movq %r8, 8(%rsp) - shrq \$63, %rcx + movq %rax, (%rsp) + movq %rdx, 8(%rsp) #second iteration - movq 8($inp), %r8 movq 16($inp), %rax - mulq %r8 + mulq %rbp addq %rax, %r10 movq 24($inp), %rax movq %rdx, %rbx adcq \$0, %rbx - mulq %r8 + mulq %rbp addq %rax, %r11 movq 32($inp), %rax adcq \$0, %rdx @@ -205,7 +204,7 @@ $code.=<<___; movq %rdx, %rbx adcq \$0, %rbx - mulq %r8 + mulq %rbp addq %rax, %r12 movq 40($inp), %rax adcq \$0, %rdx @@ -213,7 +212,7 @@ $code.=<<___; movq %rdx, %rbx adcq \$0, %rbx - mulq %r8 + mulq %rbp addq %rax, %r13 movq 48($inp), %rax adcq \$0, %rdx @@ -221,7 +220,7 @@ $code.=<<___; movq %rdx, %rbx adcq \$0, %rbx - mulq %r8 + mulq %rbp addq %rax, %r14 movq 56($inp), %rax adcq \$0, %rdx @@ -229,39 +228,39 @@ $code.=<<___; movq %rdx, %rbx adcq \$0, %rbx - mulq %r8 + mulq %rbp addq %rax, %r15 - movq %r8, %rax + movq %rbp, %rax adcq \$0, %rdx addq %rbx, %r15 - movq %rdx, %r8 - movq %r10, %rdx - adcq \$0, %r8 + adcq \$0, %rdx - add %rdx, %rdx - lea (%rcx,%r10,2), %r10 #shld \$1, %rcx, %r10 - movq %r11, %rbx - adcq %r11, %r11 #shld \$1, %r10, %r11 + xorq %rbx, %rbx # rbx:r10:r9 = r10:r9 << 1 + addq %r9, %r9 + movq %rdx, %r8 + adcq %r10, %r10 + adcq \$0, %rbx mulq %rax + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rcx, %rax + movq 16($inp), %rbp addq %rax, %r9 + movq 24($inp), %rax adcq %rdx, %r10 - adcq \$0, %r11 + adcq \$0, %rbx movq %r9, 16(%rsp) movq %r10, 24(%rsp) - shrq \$63, %rbx #third iteration - movq 16($inp), %r9 - movq 24($inp), %rax - mulq %r9 + mulq %rbp addq %rax, %r12 movq 32($inp), %rax movq %rdx, %rcx adcq \$0, %rcx - mulq %r9 + mulq %rbp addq %rax, %r13 movq 40($inp), %rax adcq \$0, %rdx @@ -269,7 +268,7 @@ $code.=<<___; movq %rdx, %rcx adcq \$0, %rcx - mulq %r9 + mulq %rbp addq %rax, %r14 movq 48($inp), %rax adcq \$0, %rdx @@ -277,9 +276,7 @@ $code.=<<___; movq %rdx, %rcx adcq \$0, %rcx - mulq %r9 - movq %r12, %r10 - lea (%rbx,%r12,2), %r12 #shld \$1, %rbx, %r12 + mulq %rbp addq %rax, %r15 movq 56($inp), %rax adcq \$0, %rdx @@ -287,36 +284,40 @@ $code.=<<___; movq %rdx, %rcx adcq \$0, %rcx - mulq %r9 - shrq \$63, %r10 + mulq %rbp addq %rax, %r8 - movq %r9, %rax + movq %rbp, %rax adcq \$0, %rdx addq %rcx, %r8 - movq %rdx, %r9 - adcq \$0, %r9 + adcq \$0, %rdx - movq %r13, %rcx - leaq (%r10,%r13,2), %r13 #shld \$1, %r12, %r13 + xorq %rcx, %rcx # rcx:r12:r11 = r12:r11 << 1 + addq %r11, %r11 + movq %rdx, %r9 + adcq %r12, %r12 + adcq \$0, %rcx mulq %rax + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rbx, %rax + movq 24($inp), %r10 addq %rax, %r11 + movq 32($inp), %rax adcq %rdx, %r12 - adcq \$0, %r13 + adcq \$0, %rcx movq %r11, 32(%rsp) movq %r12, 40(%rsp) - shrq \$63, %rcx #fourth iteration - movq 24($inp), %r10 - movq 32($inp), %rax + mov %rax, %r11 # 32($inp) mulq %r10 addq %rax, %r14 movq 40($inp), %rax movq %rdx, %rbx adcq \$0, %rbx + mov %rax, %r12 # 40($inp) mulq %r10 addq %rax, %r15 movq 48($inp), %rax @@ -325,9 +326,8 @@ $code.=<<___; movq %rdx, %rbx adcq \$0, %rbx + mov %rax, %rbp # 48($inp) mulq %r10 - movq %r14, %r12 - leaq (%rcx,%r14,2), %r14 #shld \$1, %rcx, %r14 addq %rax, %r8 movq 56($inp), %rax adcq \$0, %rdx @@ -336,32 +336,33 @@ $code.=<<___; adcq \$0, %rbx mulq %r10 - shrq \$63, %r12 addq %rax, %r9 movq %r10, %rax adcq \$0, %rdx addq %rbx, %r9 - movq %rdx, %r10 - adcq \$0, %r10 + adcq \$0, %rdx - movq %r15, %rbx - leaq (%r12,%r15,2),%r15 #shld \$1, %r14, %r15 + xorq %rbx, %rbx # rbx:r13:r14 = r13:r14 << 1 + addq %r13, %r13 + movq %rdx, %r10 + adcq %r14, %r14 + adcq \$0, %rbx mulq %rax + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rcx, %rax addq %rax, %r13 + movq %r12, %rax # 40($inp) adcq %rdx, %r14 - adcq \$0, %r15 + adcq \$0, %rbx movq %r13, 48(%rsp) movq %r14, 56(%rsp) - shrq \$63, %rbx #fifth iteration - movq 32($inp), %r11 - movq 40($inp), %rax mulq %r11 addq %rax, %r8 - movq 48($inp), %rax + movq %rbp, %rax # 48($inp) movq %rdx, %rcx adcq \$0, %rcx @@ -369,97 +370,99 @@ $code.=<<___; addq %rax, %r9 movq 56($inp), %rax adcq \$0, %rdx - movq %r8, %r12 - leaq (%rbx,%r8,2), %r8 #shld \$1, %rbx, %r8 addq %rcx, %r9 movq %rdx, %rcx adcq \$0, %rcx + mov %rax, %r14 # 56($inp) mulq %r11 - shrq \$63, %r12 addq %rax, %r10 movq %r11, %rax adcq \$0, %rdx addq %rcx, %r10 - movq %rdx, %r11 - adcq \$0, %r11 + adcq \$0, %rdx - movq %r9, %rcx - leaq (%r12,%r9,2), %r9 #shld \$1, %r8, %r9 + xorq %rcx, %rcx # rcx:r8:r15 = r8:r15 << 1 + addq %r15, %r15 + movq %rdx, %r11 + adcq %r8, %r8 + adcq \$0, %rcx mulq %rax + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rbx, %rax addq %rax, %r15 + movq %rbp, %rax # 48($inp) adcq %rdx, %r8 - adcq \$0, %r9 + adcq \$0, %rcx movq %r15, 64(%rsp) movq %r8, 72(%rsp) - shrq \$63, %rcx #sixth iteration - movq 40($inp), %r12 - movq 48($inp), %rax mulq %r12 addq %rax, %r10 - movq 56($inp), %rax + movq %r14, %rax # 56($inp) movq %rdx, %rbx adcq \$0, %rbx mulq %r12 addq %rax, %r11 movq %r12, %rax - movq %r10, %r15 - leaq (%rcx,%r10,2), %r10 #shld \$1, %rcx, %r10 adcq \$0, %rdx - shrq \$63, %r15 addq %rbx, %r11 - movq %rdx, %r12 - adcq \$0, %r12 + adcq \$0, %rdx - movq %r11, %rbx - leaq (%r15,%r11,2), %r11 #shld \$1, %r10, %r11 + xorq %rbx, %rbx # rbx:r10:r9 = r10:r9 << 1 + addq %r9, %r9 + movq %rdx, %r12 + adcq %r10, %r10 + adcq \$0, %rbx mulq %rax + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rcx, %rax addq %rax, %r9 + movq %r14, %rax # 56($inp) adcq %rdx, %r10 - adcq \$0, %r11 + adcq \$0, %rbx movq %r9, 80(%rsp) movq %r10, 88(%rsp) #seventh iteration - movq 48($inp), %r13 - movq 56($inp), %rax - mulq %r13 + mulq %rbp addq %rax, %r12 - movq %r13, %rax - movq %rdx, %r13 - adcq \$0, %r13 + movq %rbp, %rax + adcq \$0, %rdx - xorq %r14, %r14 - shlq \$1, %rbx - adcq %r12, %r12 #shld \$1, %rbx, %r12 - adcq %r13, %r13 #shld \$1, %r12, %r13 - adcq %r14, %r14 #shld \$1, %r13, %r14 + xorq %rcx, %rcx # rcx:r12:r11 = r12:r11 << 1 + addq %r11, %r11 + movq %rdx, %r13 + adcq %r12, %r12 + adcq \$0, %rcx mulq %rax + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rbx, %rax addq %rax, %r11 + movq %r14, %rax # 56($inp) adcq %rdx, %r12 - adcq \$0, %r13 + adcq \$0, %rcx movq %r11, 96(%rsp) movq %r12, 104(%rsp) #eighth iteration - movq 56($inp), %rax - mulq %rax - addq %rax, %r13 - adcq \$0, %rdx - - addq %rdx, %r14 + xorq %rbx, %rbx # rbx:r13 = r13 << 1 + addq %r13, %r13 + adcq \$0, %rbx - movq %r13, 112(%rsp) - movq %r14, 120(%rsp) + mulq %rax + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + addq %rcx, %rax + addq %r13, %rax + adcq %rbx, %rdx movq (%rsp), %r8 movq 8(%rsp), %r9 @@ -469,6 +472,10 @@ $code.=<<___; movq 40(%rsp), %r13 movq 48(%rsp), %r14 movq 56(%rsp), %r15 + movq %xmm1, %rbp + + movq %rax, 112(%rsp) + movq %rdx, 120(%rsp) call __rsaz_512_reduce @@ -500,9 +507,9 @@ $code.=<<___; .Loop_sqrx: movl $times,128+8(%rsp) movq $out, %xmm0 # off-load - movq %rbp, %xmm1 # off-load #first iteration mulx %rax, %r8, %r9 + mov %rax, %rbx mulx 16($inp), %rcx, %r10 xor %rbp, %rbp # cf=0, of=0 @@ -510,40 +517,39 @@ $code.=<<___; mulx 24($inp), %rax, %r11 adcx %rcx, %r9 - mulx 32($inp), %rcx, %r12 + .byte 0xc4,0x62,0xf3,0xf6,0xa6,0x20,0x00,0x00,0x00 # mulx 32($inp), %rcx, %r12 adcx %rax, %r10 - mulx 40($inp), %rax, %r13 + .byte 0xc4,0x62,0xfb,0xf6,0xae,0x28,0x00,0x00,0x00 # mulx 40($inp), %rax, %r13 adcx %rcx, %r11 - .byte 0xc4,0x62,0xf3,0xf6,0xb6,0x30,0x00,0x00,0x00 # mulx 48($inp), %rcx, %r14 + mulx 48($inp), %rcx, %r14 adcx %rax, %r12 adcx %rcx, %r13 - .byte 0xc4,0x62,0xfb,0xf6,0xbe,0x38,0x00,0x00,0x00 # mulx 56($inp), %rax, %r15 + mulx 56($inp), %rax, %r15 adcx %rax, %r14 adcx %rbp, %r15 # %rbp is 0 - mov %r9, %rcx - shld \$1, %r8, %r9 - shl \$1, %r8 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx - adcx %rdx, %r8 - mov 8($inp), %rdx - adcx %rbp, %r9 + mulx %rdx, %rax, $out + mov %rbx, %rdx # 8($inp) + xor %rcx, %rcx + adox %r8, %r8 + adcx $out, %r8 + adox %rbp, %rcx + adcx %rbp, %rcx mov %rax, (%rsp) mov %r8, 8(%rsp) #second iteration - mulx 16($inp), %rax, %rbx + .byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x10,0x00,0x00,0x00 # mulx 16($inp), %rax, %rbx adox %rax, %r10 adcx %rbx, %r11 - .byte 0xc4,0x62,0xc3,0xf6,0x86,0x18,0x00,0x00,0x00 # mulx 24($inp), $out, %r8 + mulx 24($inp), $out, %r8 adox $out, %r11 + .byte 0x66 adcx %r8, %r12 mulx 32($inp), %rax, %rbx @@ -561,24 +567,25 @@ $code.=<<___; .byte 0xc4,0x62,0xc3,0xf6,0x86,0x38,0x00,0x00,0x00 # mulx 56($inp), $out, %r8 adox $out, %r15 adcx %rbp, %r8 + mulx %rdx, %rax, $out adox %rbp, %r8 + .byte 0x48,0x8b,0x96,0x10,0x00,0x00,0x00 # mov 16($inp), %rdx - mov %r11, %rbx - shld \$1, %r10, %r11 - shld \$1, %rcx, %r10 - - xor %ebp,%ebp - mulx %rdx, %rax, %rcx - mov 16($inp), %rdx + xor %rbx, %rbx + adox %r9, %r9 + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rcx, %rax + adox %r10, %r10 adcx %rax, %r9 - adcx %rcx, %r10 - adcx %rbp, %r11 + adox %rbp, %rbx + adcx $out, %r10 + adcx %rbp, %rbx mov %r9, 16(%rsp) .byte 0x4c,0x89,0x94,0x24,0x18,0x00,0x00,0x00 # mov %r10, 24(%rsp) #third iteration - .byte 0xc4,0x62,0xc3,0xf6,0x8e,0x18,0x00,0x00,0x00 # mulx 24($inp), $out, %r9 + mulx 24($inp), $out, %r9 adox $out, %r12 adcx %r9, %r13 @@ -586,7 +593,7 @@ $code.=<<___; adox %rax, %r13 adcx %rcx, %r14 - mulx 40($inp), $out, %r9 + .byte 0xc4,0x62,0xc3,0xf6,0x8e,0x28,0x00,0x00,0x00 # mulx 40($inp), $out, %r9 adox $out, %r14 adcx %r9, %r15 @@ -594,27 +601,28 @@ $code.=<<___; adox %rax, %r15 adcx %rcx, %r8 - .byte 0xc4,0x62,0xc3,0xf6,0x8e,0x38,0x00,0x00,0x00 # mulx 56($inp), $out, %r9 + mulx 56($inp), $out, %r9 adox $out, %r8 adcx %rbp, %r9 + mulx %rdx, %rax, $out adox %rbp, %r9 + mov 24($inp), %rdx - mov %r13, %rcx - shld \$1, %r12, %r13 - shld \$1, %rbx, %r12 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx + xor %rcx, %rcx + adox %r11, %r11 + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rbx, %rax + adox %r12, %r12 adcx %rax, %r11 - adcx %rdx, %r12 - mov 24($inp), %rdx - adcx %rbp, %r13 + adox %rbp, %rcx + adcx $out, %r12 + adcx %rbp, %rcx mov %r11, 32(%rsp) - .byte 0x4c,0x89,0xa4,0x24,0x28,0x00,0x00,0x00 # mov %r12, 40(%rsp) + mov %r12, 40(%rsp) #fourth iteration - .byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x20,0x00,0x00,0x00 # mulx 32($inp), %rax, %rbx + mulx 32($inp), %rax, %rbx adox %rax, %r14 adcx %rbx, %r15 @@ -629,25 +637,25 @@ $code.=<<___; mulx 56($inp), $out, %r10 adox $out, %r9 adcx %rbp, %r10 + mulx %rdx, %rax, $out adox %rbp, %r10 + mov 32($inp), %rdx - .byte 0x66 - mov %r15, %rbx - shld \$1, %r14, %r15 - shld \$1, %rcx, %r14 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx + xor %rbx, %rbx + adox %r13, %r13 + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rcx, %rax + adox %r14, %r14 adcx %rax, %r13 - adcx %rdx, %r14 - mov 32($inp), %rdx - adcx %rbp, %r15 + adox %rbp, %rbx + adcx $out, %r14 + adcx %rbp, %rbx mov %r13, 48(%rsp) mov %r14, 56(%rsp) #fifth iteration - .byte 0xc4,0x62,0xc3,0xf6,0x9e,0x28,0x00,0x00,0x00 # mulx 40($inp), $out, %r11 + mulx 40($inp), $out, %r11 adox $out, %r8 adcx %r11, %r9 @@ -658,18 +666,19 @@ $code.=<<___; mulx 56($inp), $out, %r11 adox $out, %r10 adcx %rbp, %r11 + mulx %rdx, %rax, $out + mov 40($inp), %rdx adox %rbp, %r11 - mov %r9, %rcx - shld \$1, %r8, %r9 - shld \$1, %rbx, %r8 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx + xor %rcx, %rcx + adox %r15, %r15 + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rbx, %rax + adox %r8, %r8 adcx %rax, %r15 - adcx %rdx, %r8 - mov 40($inp), %rdx - adcx %rbp, %r9 + adox %rbp, %rcx + adcx $out, %r8 + adcx %rbp, %rcx mov %r15, 64(%rsp) mov %r8, 72(%rsp) @@ -682,18 +691,19 @@ $code.=<<___; .byte 0xc4,0x62,0xc3,0xf6,0xa6,0x38,0x00,0x00,0x00 # mulx 56($inp), $out, %r12 adox $out, %r11 adcx %rbp, %r12 + mulx %rdx, %rax, $out adox %rbp, %r12 + mov 48($inp), %rdx - mov %r11, %rbx - shld \$1, %r10, %r11 - shld \$1, %rcx, %r10 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx + xor %rbx, %rbx + adox %r9, %r9 + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rcx, %rax + adox %r10, %r10 adcx %rax, %r9 - adcx %rdx, %r10 - mov 48($inp), %rdx - adcx %rbp, %r11 + adcx $out, %r10 + adox %rbp, %rbx + adcx %rbp, %rbx mov %r9, 80(%rsp) mov %r10, 88(%rsp) @@ -703,31 +713,31 @@ $code.=<<___; adox %rax, %r12 adox %rbp, %r13 - xor %r14, %r14 - shld \$1, %r13, %r14 - shld \$1, %r12, %r13 - shld \$1, %rbx, %r12 - - xor %ebp, %ebp - mulx %rdx, %rax, %rdx - adcx %rax, %r11 - adcx %rdx, %r12 + mulx %rdx, %rax, $out + xor %rcx, %rcx mov 56($inp), %rdx - adcx %rbp, %r13 + adox %r11, %r11 + # rbx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rbx, %rax + adox %r12, %r12 + adcx %rax, %r11 + adox %rbp, %rcx + adcx $out, %r12 + adcx %rbp, %rcx .byte 0x4c,0x89,0x9c,0x24,0x60,0x00,0x00,0x00 # mov %r11, 96(%rsp) .byte 0x4c,0x89,0xa4,0x24,0x68,0x00,0x00,0x00 # mov %r12, 104(%rsp) #eighth iteration mulx %rdx, %rax, %rdx - adox %rax, %r13 - adox %rbp, %rdx + xor %rbx, %rbx + adox %r13, %r13 + # rcx <= 2 and rax <= 0xFFFF..F9, so carry must be zero here + adcx %rcx, %rax + adox %rbp, %rbx + adcx %r13, %rax + adcx %rdx, %rbx - .byte 0x66 - add %rdx, %r14 - - movq %r13, 112(%rsp) - movq %r14, 120(%rsp) movq %xmm0, $out movq %xmm1, %rbp @@ -741,6 +751,9 @@ $code.=<<___; movq 48(%rsp), %r14 movq 56(%rsp), %r15 + movq %rax, 112(%rsp) + movq %rbx, 120(%rsp) + call __rsaz_512_reducex addq 64(%rsp), %r8 @@ -1606,6 +1619,7 @@ $code.=<<___; .type __rsaz_512_reduce,\@abi-omnipotent .align 32 __rsaz_512_reduce: +.cfi_startproc movq %r8, %rbx imulq 128+8(%rsp), %rbx movq 0(%rbp), %rax @@ -1685,6 +1699,7 @@ __rsaz_512_reduce: jne .Lreduction_loop ret +.cfi_endproc .size __rsaz_512_reduce,.-__rsaz_512_reduce ___ } @@ -1698,6 +1713,7 @@ $code.=<<___; .type __rsaz_512_reducex,\@abi-omnipotent .align 32 __rsaz_512_reducex: +.cfi_startproc #movq 128+8(%rsp), %rdx # pull $n0 imulq %r8, %rdx xorq %rsi, %rsi # cf=0,of=0 @@ -1750,6 +1766,7 @@ __rsaz_512_reducex: jne .Lreduction_loopx ret +.cfi_endproc .size __rsaz_512_reducex,.-__rsaz_512_reducex ___ } @@ -1761,6 +1778,7 @@ $code.=<<___; .type __rsaz_512_subtract,\@abi-omnipotent .align 32 __rsaz_512_subtract: +.cfi_startproc movq %r8, ($out) movq %r9, 8($out) movq %r10, 16($out) @@ -1814,6 +1832,7 @@ __rsaz_512_subtract: movq %r15, 56($out) ret +.cfi_endproc .size __rsaz_512_subtract,.-__rsaz_512_subtract ___ } @@ -1827,6 +1846,7 @@ $code.=<<___; .type __rsaz_512_mul,\@abi-omnipotent .align 32 __rsaz_512_mul: +.cfi_startproc leaq 8(%rsp), %rdi movq ($ap), %rax @@ -1965,6 +1985,7 @@ __rsaz_512_mul: movq %r15, 56(%rdi) ret +.cfi_endproc .size __rsaz_512_mul,.-__rsaz_512_mul ___ } @@ -1979,6 +2000,7 @@ $code.=<<___; .type __rsaz_512_mulx,\@abi-omnipotent .align 32 __rsaz_512_mulx: +.cfi_startproc mulx ($ap), %rbx, %r8 # initial %rdx preloaded by caller mov \$-6, %rcx @@ -2095,6 +2117,7 @@ __rsaz_512_mulx: mov %r15, 8+64+56(%rsp) ret +.cfi_endproc .size __rsaz_512_mulx,.-__rsaz_512_mulx ___ } @@ -2105,6 +2128,7 @@ $code.=<<___; .type rsaz_512_scatter4,\@abi-omnipotent .align 16 rsaz_512_scatter4: +.cfi_startproc leaq ($out,$power,8), $out movl \$8, %r9d jmp .Loop_scatter @@ -2117,12 +2141,14 @@ rsaz_512_scatter4: decl %r9d jnz .Loop_scatter ret +.cfi_endproc .size rsaz_512_scatter4,.-rsaz_512_scatter4 .globl rsaz_512_gather4 .type rsaz_512_gather4,\@abi-omnipotent .align 16 rsaz_512_gather4: +.cfi_startproc ___ $code.=<<___ if ($win64); .LSEH_begin_rsaz_512_gather4: @@ -2217,6 +2243,7 @@ ___ $code.=<<___; ret .LSEH_end_rsaz_512_gather4: +.cfi_endproc .size rsaz_512_gather4,.-rsaz_512_gather4 .align 64 @@ -2401,4 +2428,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-gf2m.pl index 06181bf9b95..a7e4b8a97d3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -225,4 +225,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-mont.pl index c2fc5adffe0..bc8c8951e06 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -145,7 +145,7 @@ $code.=<<___; lghi $NHI,0 alcgr $NHI,$nhi - la $j,8(%r0) # j=1 + la $j,8 # j=1 lr $count,$num .align 16 @@ -197,7 +197,7 @@ $code.=<<___; lghi $NHI,0 alcgr $NHI,$nhi - la $j,8(%r0) # j=1 + la $j,8 # j=1 lr $count,$num .align 16 @@ -241,7 +241,7 @@ $code.=<<___; la $ap,$stdframe($sp) ahi $num,1 # restore $num, incidentally clears "borrow" - la $j,0(%r0) + la $j,0 lr $count,$num .Lsub: lg $alo,0($j,$ap) lg $nlo,0($j,$np) @@ -255,7 +255,7 @@ $code.=<<___; lghi $NHI,-1 xgr $NHI,$AHI - la $j,0(%r0) + la $j,0 lgr $count,$num .Lcopy: lg $ahi,$stdframe($j,$sp) # conditional copy lg $alo,0($j,$rp) @@ -281,4 +281,4 @@ foreach (split("\n",$code)) { s/_dswap\s+(%r[0-9]+)/sprintf("rllg\t%s,%s,32",$1,$1) if($SIZE_T==4)/e; print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x.S b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x.S index 292a7a9998b..b666c41a88a 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x.S +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/s390x.S @@ -511,7 +511,7 @@ bn_mul_comba4: lghi zero,0 mul_add_c(0,0,c1,c2,c3); - stg c1,0*8(%r3) + stg c1,0*8(%r2) lghi c1,0 mul_add_c(0,1,c2,c3,c1); diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparct4-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparct4-mont.pl index fcae9cfc5b4..62e297a0169 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparct4-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparct4-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1225,4 +1225,4 @@ ___ &emit_assembler(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-gf2m.pl index dcf11a87a18..238a93dca56 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -197,4 +197,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-mont.pl index b41903af985..d1a3c2bc434 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -617,4 +617,4 @@ $code.=<<___; ___ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9a-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9a-mont.pl index c8f759df9fb..7a1fca1263a 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9a-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/sparcv9a-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -884,4 +884,4 @@ $code =~ s/fzeros\s+%f([0-9]+)/ print $code; # flush -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/via-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/via-mont.pl index 9cf717e8410..9dbc8d45879 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/via-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/via-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -248,4 +248,4 @@ $sp=&DWP(28,"esp"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/vis3-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/vis3-mont.pl index 04833a0c876..d797af8745d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/vis3-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/vis3-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -381,4 +381,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-gf2m.pl index d03efcc7502..436d90b11ea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -322,4 +322,4 @@ if ($sse2) { &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-mont.pl index 7ba2133ac9c..2103f806b65 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -628,4 +628,4 @@ $sbit=$num; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gcc.c b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gcc.c index 31839ba060f..a03dba41067 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gcc.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gcc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "../bn_lcl.h" +#include "../bn_local.h" #if !(defined(__GNUC__) && __GNUC__>=2) # include "../bn_asm.c" /* kind of dirty hack for Sun Studio */ #else @@ -219,10 +219,9 @@ BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, " adcq (%5,%2,8),%0 \n" " movq %0,(%3,%2,8) \n" " lea 1(%2),%2 \n" - " dec %1 \n" - " jnz 1b \n" - " sbbq %0,%0 \n" - :"=&r" (ret), "+c"(n), "+r"(i) + " loop 1b \n" + " sbbq %0,%0 \n":"=&r" (ret), "+c"(n), + "+r"(i) :"r"(rp), "r"(ap), "r"(bp) :"cc", "memory"); @@ -246,10 +245,9 @@ BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, " sbbq (%5,%2,8),%0 \n" " movq %0,(%3,%2,8) \n" " lea 1(%2),%2 \n" - " dec %1 \n" - " jnz 1b \n" - " sbbq %0,%0 \n" - :"=&r" (ret), "+c"(n), "+r"(i) + " loop 1b \n" + " sbbq %0,%0 \n":"=&r" (ret), "+c"(n), + "+r"(i) :"r"(rp), "r"(ap), "r"(bp) :"cc", "memory"); diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl index 0fd6e985d7b..655f13c89ee 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-gf2m.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -421,4 +421,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont.pl index c051135e30d..e00cac448b8 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -75,7 +75,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $addx = ($ver>=3.03); } @@ -1589,4 +1589,4 @@ ___ } print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont5.pl b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont5.pl index f43e13d1164..887770b30db 100755 --- a/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont5.pl +++ b/crypto/external/bsd/openssl/dist/crypto/bn/asm/x86_64-mont5.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -60,7 +60,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $addx = ($ver>=3.03); } @@ -580,6 +580,7 @@ $code.=<<___; .type mul4x_internal,\@abi-omnipotent .align 32 mul4x_internal: +.cfi_startproc shl \$5,$num # $num was in bytes movd `($win64?56:8)`(%rax),%xmm5 # load 7th argument, index lea .Linc(%rip),%rax @@ -1074,6 +1075,7 @@ $code.=<<___ ___ } $code.=<<___; +.cfi_endproc .size mul4x_internal,.-mul4x_internal ___ }}} @@ -1239,6 +1241,7 @@ $code.=<<___; .align 32 bn_sqr8x_internal: __bn_sqr8x_internal: +.cfi_startproc ############################################################## # Squaring part: # @@ -2030,6 +2033,7 @@ __bn_sqr8x_reduction: cmp %rdx,$tptr # end of t[]? jb .L8x_reduction_loop ret +.cfi_endproc .size bn_sqr8x_internal,.-bn_sqr8x_internal ___ } @@ -2042,6 +2046,7 @@ $code.=<<___; .type __bn_post4x_internal,\@abi-omnipotent .align 32 __bn_post4x_internal: +.cfi_startproc mov 8*0($nptr),%r12 lea (%rdi,$num),$tptr # %rdi was $tptr above mov $num,%rcx @@ -2092,6 +2097,7 @@ __bn_post4x_internal: mov $num,%r10 # prepare for back-to-back call neg $num # restore $num ret +.cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal ___ } @@ -2101,10 +2107,12 @@ $code.=<<___; .type bn_from_montgomery,\@abi-omnipotent .align 32 bn_from_montgomery: +.cfi_startproc testl \$7,`($win64?"48(%rsp)":"%r9d")` jz bn_from_mont8x xor %eax,%eax ret +.cfi_endproc .size bn_from_montgomery,.-bn_from_montgomery .type bn_from_mont8x,\@function,6 @@ -2400,6 +2408,7 @@ bn_mulx4x_mont_gather5: .type mulx4x_internal,\@abi-omnipotent .align 32 mulx4x_internal: +.cfi_startproc mov $num,8(%rsp) # save -$num (it was in bytes) mov $num,%r10 neg $num # restore $num @@ -2750,6 +2759,7 @@ $code.=<<___; mov 8*2(%rbp),%r14 mov 8*3(%rbp),%r15 jmp .Lsqrx4x_sub_entry # common post-condition +.cfi_endproc .size mulx4x_internal,.-mulx4x_internal ___ }{ @@ -3555,6 +3565,7 @@ my ($rptr,$nptr)=("%rdx","%rbp"); $code.=<<___; .align 32 __bn_postx4x_internal: +.cfi_startproc mov 8*0($nptr),%r12 mov %rcx,%r10 # -$num mov %rcx,%r9 # -$num @@ -3602,6 +3613,7 @@ __bn_postx4x_internal: neg %r9 # restore $num ret +.cfi_endproc .size __bn_postx4x_internal,.-__bn_postx4x_internal ___ } @@ -3618,6 +3630,7 @@ $code.=<<___; .type bn_get_bits5,\@abi-omnipotent .align 16 bn_get_bits5: +.cfi_startproc lea 0($inp),%r10 lea 1($inp),%r11 mov $num,%ecx @@ -3631,12 +3644,14 @@ bn_get_bits5: shrl %cl,%eax and \$31,%eax ret +.cfi_endproc .size bn_get_bits5,.-bn_get_bits5 .globl bn_scatter5 .type bn_scatter5,\@abi-omnipotent .align 16 bn_scatter5: +.cfi_startproc cmp \$0, $num jz .Lscatter_epilogue lea ($tbl,$idx,8),$tbl @@ -3649,6 +3664,7 @@ bn_scatter5: jnz .Lscatter .Lscatter_epilogue: ret +.cfi_endproc .size bn_scatter5,.-bn_scatter5 .globl bn_gather5 @@ -3656,6 +3672,7 @@ bn_scatter5: .align 32 bn_gather5: .LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases +.cfi_startproc # I can't trust assembler to use specific encoding:-( .byte 0x4c,0x8d,0x14,0x24 #lea (%rsp),%r10 .byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 #sub $0x108,%rsp @@ -3740,6 +3757,7 @@ $code.=<<___; lea (%r10),%rsp ret .LSEH_end_bn_gather5: +.cfi_endproc .size bn_gather5,.-bn_gather5 ___ } @@ -3942,4 +3960,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_add.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_add.c index f2736b8f6d4..8ffe49618a8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_add.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_add.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* signed add of b to a. */ int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_asm.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_asm.c index 729b2480acd..4d83a8cf111 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_asm.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_asm.c @@ -10,7 +10,7 @@ #include <assert.h> #include <openssl/crypto.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #if defined(BN_LLONG) || defined(BN_UMULT_HIGH) diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_blind.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_blind.c index 450cdfb3486..76fc7ebcffc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_blind.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_blind.c @@ -9,7 +9,7 @@ #include <openssl/opensslconf.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #define BN_BLINDING_COUNTER 32 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_ctx.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_ctx.c index 90cecea2aa5..042cb247d37 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_ctx.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_ctx.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /*- * TODO list diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_depr.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_depr.c index 58bcf197a49..b60269cd57a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_depr.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_depr.c @@ -20,7 +20,7 @@ NON_EMPTY_TRANSLATION_UNIT # include <stdio.h> # include <time.h> # include "internal/cryptlib.h" -# include "bn_lcl.h" +# include "bn_local.h" BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, const BIGNUM *add, const BIGNUM *rem, diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_dh.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_dh.c index 38acdee234d..58c44f0b179 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_dh.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_dh.c @@ -7,12 +7,12 @@ * https://www.openssl.org/source/license.html */ -#include "bn_lcl.h" +#include "bn_local.h" #include "internal/nelem.h" #ifndef OPENSSL_NO_DH #include <openssl/dh.h> -#include "internal/bn_dh.h" +#include "crypto/bn_dh.h" /* DH parameters from RFC5114 */ # if BN_BITS2 == 64 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_div.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_div.c index 7fc0132830a..286d69c895f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_div.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_div.c @@ -10,7 +10,7 @@ #include <assert.h> #include <openssl/bn.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* The old slow way */ #if 0 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp.c index 1f5bc79e7f5..ef6a8f346d0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp.c @@ -8,8 +8,8 @@ */ #include "internal/cryptlib.h" -#include "internal/constant_time_locl.h" -#include "bn_lcl.h" +#include "internal/constant_time.h" +#include "bn_local.h" #include <stdlib.h> #ifdef _WIN32 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp2.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp2.c index 082c9286a0f..e542abe46fa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp2.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_exp2.c @@ -9,7 +9,7 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #define TABLE_SIZE 32 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_gcd.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_gcd.c index 0091ea4e08a..ef81acb77ba 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_gcd.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_gcd.c @@ -8,113 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" - -static BIGNUM *euclid(BIGNUM *a, BIGNUM *b); - -int BN_gcd(BIGNUM *r, const BIGNUM *in_a, const BIGNUM *in_b, BN_CTX *ctx) -{ - BIGNUM *a, *b, *t; - int ret = 0; - - bn_check_top(in_a); - bn_check_top(in_b); - - BN_CTX_start(ctx); - a = BN_CTX_get(ctx); - b = BN_CTX_get(ctx); - if (b == NULL) - goto err; - - if (BN_copy(a, in_a) == NULL) - goto err; - if (BN_copy(b, in_b) == NULL) - goto err; - a->neg = 0; - b->neg = 0; - - if (BN_cmp(a, b) < 0) { - t = a; - a = b; - b = t; - } - t = euclid(a, b); - if (t == NULL) - goto err; - - if (BN_copy(r, t) == NULL) - goto err; - ret = 1; - err: - BN_CTX_end(ctx); - bn_check_top(r); - return ret; -} - -static BIGNUM *euclid(BIGNUM *a, BIGNUM *b) -{ - BIGNUM *t; - int shifts = 0; - - bn_check_top(a); - bn_check_top(b); - - /* 0 <= b <= a */ - while (!BN_is_zero(b)) { - /* 0 < b <= a */ - - if (BN_is_odd(a)) { - if (BN_is_odd(b)) { - if (!BN_sub(a, a, b)) - goto err; - if (!BN_rshift1(a, a)) - goto err; - if (BN_cmp(a, b) < 0) { - t = a; - a = b; - b = t; - } - } else { /* a odd - b even */ - - if (!BN_rshift1(b, b)) - goto err; - if (BN_cmp(a, b) < 0) { - t = a; - a = b; - b = t; - } - } - } else { /* a is even */ - - if (BN_is_odd(b)) { - if (!BN_rshift1(a, a)) - goto err; - if (BN_cmp(a, b) < 0) { - t = a; - a = b; - b = t; - } - } else { /* a even - b even */ - - if (!BN_rshift1(a, a)) - goto err; - if (!BN_rshift1(b, b)) - goto err; - shifts++; - } - } - /* 0 <= b <= a */ - } - - if (shifts) { - if (!BN_lshift(a, a, shifts)) - goto err; - } - bn_check_top(a); - return a; - err: - return NULL; -} +#include "bn_local.h" /* solves ax == 1 (mod n) */ static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in, @@ -621,3 +515,115 @@ static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in, bn_check_top(ret); return ret; } + +/*- + * This function is based on the constant-time GCD work by Bernstein and Yang: + * https://eprint.iacr.org/2019/266 + * Generalized fast GCD function to allow even inputs. + * The algorithm first finds the shared powers of 2 between + * the inputs, and removes them, reducing at least one of the + * inputs to an odd value. Then it proceeds to calculate the GCD. + * Before returning the resulting GCD, we take care of adding + * back the powers of two removed at the beginning. + * Note 1: we assume the bit length of both inputs is public information, + * since access to top potentially leaks this information. + */ +int BN_gcd(BIGNUM *r, const BIGNUM *in_a, const BIGNUM *in_b, BN_CTX *ctx) +{ + BIGNUM *g, *temp = NULL; + BN_ULONG mask = 0; + int i, j, top, rlen, glen, m, bit = 1, delta = 1, cond = 0, shifts = 0, ret = 0; + + /* Note 2: zero input corner cases are not constant-time since they are + * handled immediately. An attacker can run an attack under this + * assumption without the need of side-channel information. */ + if (BN_is_zero(in_b)) { + ret = BN_copy(r, in_a) != NULL; + r->neg = 0; + return ret; + } + if (BN_is_zero(in_a)) { + ret = BN_copy(r, in_b) != NULL; + r->neg = 0; + return ret; + } + + bn_check_top(in_a); + bn_check_top(in_b); + + BN_CTX_start(ctx); + temp = BN_CTX_get(ctx); + g = BN_CTX_get(ctx); + + /* make r != 0, g != 0 even, so BN_rshift is not a potential nop */ + if (g == NULL + || !BN_lshift1(g, in_b) + || !BN_lshift1(r, in_a)) + goto err; + + /* find shared powers of two, i.e. "shifts" >= 1 */ + for (i = 0; i < r->dmax && i < g->dmax; i++) { + mask = ~(r->d[i] | g->d[i]); + for (j = 0; j < BN_BITS2; j++) { + bit &= mask; + shifts += bit; + mask >>= 1; + } + } + + /* subtract shared powers of two; shifts >= 1 */ + if (!BN_rshift(r, r, shifts) + || !BN_rshift(g, g, shifts)) + goto err; + + /* expand to biggest nword, with room for a possible extra word */ + top = 1 + ((r->top >= g->top) ? r->top : g->top); + if (bn_wexpand(r, top) == NULL + || bn_wexpand(g, top) == NULL + || bn_wexpand(temp, top) == NULL) + goto err; + + /* re arrange inputs s.t. r is odd */ + BN_consttime_swap((~r->d[0]) & 1, r, g, top); + + /* compute the number of iterations */ + rlen = BN_num_bits(r); + glen = BN_num_bits(g); + m = 4 + 3 * ((rlen >= glen) ? rlen : glen); + + for (i = 0; i < m; i++) { + /* conditionally flip signs if delta is positive and g is odd */ + cond = (-delta >> (8 * sizeof(delta) - 1)) & g->d[0] & 1 + /* make sure g->top > 0 (i.e. if top == 0 then g == 0 always) */ + & (~((g->top - 1) >> (sizeof(g->top) * 8 - 1))); + delta = (-cond & -delta) | ((cond - 1) & delta); + r->neg ^= cond; + /* swap */ + BN_consttime_swap(cond, r, g, top); + + /* elimination step */ + delta++; + if (!BN_add(temp, g, r)) + goto err; + BN_consttime_swap(g->d[0] & 1 /* g is odd */ + /* make sure g->top > 0 (i.e. if top == 0 then g == 0 always) */ + & (~((g->top - 1) >> (sizeof(g->top) * 8 - 1))), + g, temp, top); + if (!BN_rshift1(g, g)) + goto err; + } + + /* remove possible negative sign */ + r->neg = 0; + /* add powers of 2 removed, then correct the artificial shift */ + if (!BN_lshift(r, r, shifts) + || !BN_rshift1(r, r)) + goto err; + + ret = 1; + + err: + BN_CTX_end(ctx); + bn_check_top(r); + return ret; +} diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_gf2m.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_gf2m.c index 34d8b69c1ec..a2ea8675518 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_gf2m.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_gf2m.c @@ -12,7 +12,7 @@ #include <limits.h> #include <stdio.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #ifndef OPENSSL_NO_EC2M diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_intern.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_intern.c index 46bc97575df..147b4fa022c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_intern.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_intern.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* * Determine the modified width-(w+1) Non-Adjacent Form (wNAF) of 'scalar'. diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_kron.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_kron.c index b9bc6cca27f..c1e09d27212 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_kron.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_kron.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* least significant word */ #define BN_lsw(n) (((n)->top == 0) ? (BN_ULONG) 0 : (n)->d[0]) diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_lib.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_lib.c index 254069ff381..86d4956c8a8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_lib.c @@ -10,9 +10,9 @@ #include <assert.h> #include <limits.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #include <openssl/opensslconf.h> -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" /* This stuff appears to be completely unused, so is deprecated */ #if OPENSSL_API_COMPAT < 0x00908000L diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_lcl.h b/crypto/external/bsd/openssl/dist/crypto/bn/bn_local.h index 7f823a6178a..8ad69ccd363 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_BN_LCL_H -# define HEADER_BN_LCL_H +#ifndef OSSL_CRYPTO_BN_LOCAL_H +# define OSSL_CRYPTO_BN_LOCAL_H /* * The EDK2 build doesn't use bn_conf.h; it sets THIRTY_TWO_BIT or @@ -18,10 +18,10 @@ # include <openssl/opensslconf.h> # if !defined(OPENSSL_SYS_UEFI) -# include "internal/bn_conf.h" +# include "crypto/bn_conf.h" # endif -# include "internal/bn_int.h" +# include "crypto/bn.h" /* * These preprocessor symbols control various aspects of the bignum headers @@ -654,9 +654,6 @@ BIGNUM *int_bn_mod_inverse(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx, int *noinv); -int bn_probable_prime_dh(BIGNUM *rnd, int bits, - const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx); - static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits) { if (bits > (INT_MAX - BN_BITS2 + 1)) diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mod.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mod.c index 712fc8ac145..f7d2e2650ed 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mod.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mod.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mont.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mont.c index 5c6befb9b5d..1e5045a010b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mont.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mont.c @@ -15,7 +15,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #define MONT_WORD /* use the faster word-based algorithm */ @@ -207,12 +207,10 @@ int bn_from_mont_fixed_top(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont, if (!BN_rshift(ret, t2, mont->ri)) goto err; -#if !defined(BRANCH_FREE) || BRANCH_FREE==0 if (BN_ucmp(ret, &(mont->N)) >= 0) { if (!BN_usub(ret, ret, &(mont->N))) goto err; } -#endif retn = 1; bn_check_top(ret); err: diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mpi.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mpi.c index 043e21d26a3..bdbe822415c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mpi.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mpi.c @@ -9,7 +9,7 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" int BN_bn2mpi(const BIGNUM *a, unsigned char *d) { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mul.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mul.c index 5eda65cfbb0..6743e7be816 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_mul.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_mul.c @@ -9,7 +9,7 @@ #include <assert.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #if defined(OPENSSL_NO_ASM) || !defined(OPENSSL_BN_ASM_PART_WORDS) /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_nist.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_nist.c index dcdd321c668..325dc228490 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_nist.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_nist.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "bn_lcl.h" +#include "bn_local.h" #include "internal/cryptlib.h" #define BN_NIST_192_TOP (192+BN_BITS2-1)/BN_BITS2 diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.c index 19b081f38eb..d0cf3779fa5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,7 @@ #include <stdio.h> #include <time.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* * The quick sieve algorithm approach to weeding out primes is Philip @@ -22,10 +22,12 @@ static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1, const BIGNUM *a1_odd, int k, BN_CTX *ctx, BN_MONT_CTX *mont); -static int probable_prime(BIGNUM *rnd, int bits, prime_t *mods); -static int probable_prime_dh_safe(BIGNUM *rnd, int bits, - const BIGNUM *add, const BIGNUM *rem, - BN_CTX *ctx); +static int probable_prime(BIGNUM *rnd, int bits, int safe, prime_t *mods); +static int probable_prime_dh(BIGNUM *rnd, int bits, int safe, prime_t *mods, + const BIGNUM *add, const BIGNUM *rem, + BN_CTX *ctx); + +#define square(x) ((BN_ULONG)(x) * (BN_ULONG)(x)) int BN_GENCB_call(BN_GENCB *cb, int a, int b) { @@ -87,16 +89,11 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, loop: /* make a random number and set the top and bottom bits */ if (add == NULL) { - if (!probable_prime(ret, bits, mods)) + if (!probable_prime(ret, bits, safe, mods)) goto err; } else { - if (safe) { - if (!probable_prime_dh_safe(ret, bits, add, rem, ctx)) - goto err; - } else { - if (!bn_probable_prime_dh(ret, bits, add, rem, ctx)) - goto err; - } + if (!probable_prime_dh(ret, bits, safe, mods, add, rem, ctx)) + goto err; } if (!BN_GENCB_call(cb, 0, c1++)) @@ -272,17 +269,18 @@ static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1, return 1; } -static int probable_prime(BIGNUM *rnd, int bits, prime_t *mods) +static int probable_prime(BIGNUM *rnd, int bits, int safe, prime_t *mods) { int i; BN_ULONG delta; BN_ULONG maxdelta = BN_MASK2 - primes[NUMPRIMES - 1]; - char is_single_word = bits <= BN_BITS2; again: /* TODO: Not all primes are private */ if (!BN_priv_rand(rnd, bits, BN_RAND_TOP_TWO, BN_RAND_BOTTOM_ODD)) return 0; + if (safe && !BN_set_bit(rnd, 1)) + return 0; /* we now have a random number 'rnd' to test. */ for (i = 1; i < NUMPRIMES; i++) { BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]); @@ -290,61 +288,25 @@ static int probable_prime(BIGNUM *rnd, int bits, prime_t *mods) return 0; mods[i] = (prime_t) mod; } - /* - * If bits is so small that it fits into a single word then we - * additionally don't want to exceed that many bits. - */ - if (is_single_word) { - BN_ULONG size_limit; - - if (bits == BN_BITS2) { - /* - * Shifting by this much has undefined behaviour so we do it a - * different way - */ - size_limit = ~((BN_ULONG)0) - BN_get_word(rnd); - } else { - size_limit = (((BN_ULONG)1) << bits) - BN_get_word(rnd) - 1; - } - if (size_limit < maxdelta) - maxdelta = size_limit; - } delta = 0; loop: - if (is_single_word) { - BN_ULONG rnd_word = BN_get_word(rnd); - - /*- - * In the case that the candidate prime is a single word then - * we check that: - * 1) It's greater than primes[i] because we shouldn't reject - * 3 as being a prime number because it's a multiple of - * three. - * 2) That it's not a multiple of a known prime. We don't - * check that rnd-1 is also coprime to all the known - * primes because there aren't many small primes where - * that's true. + for (i = 1; i < NUMPRIMES; i++) { + /* + * check that rnd is a prime and also that + * gcd(rnd-1,primes) == 1 (except for 2) + * do the second check only if we are interested in safe primes + * in the case that the candidate prime is a single word then + * we check only the primes up to sqrt(rnd) */ - for (i = 1; i < NUMPRIMES && primes[i] < rnd_word; i++) { - if ((mods[i] + delta) % primes[i] == 0) { - delta += 2; - if (delta > maxdelta) - goto again; - goto loop; - } - } - } else { - for (i = 1; i < NUMPRIMES; i++) { - /* - * check that rnd is not a prime and also that gcd(rnd-1,primes) - * == 1 (except for 2) - */ - if (((mods[i] + delta) % primes[i]) <= 1) { - delta += 2; - if (delta > maxdelta) - goto again; - goto loop; - } + if (bits <= 31 && delta <= 0x7fffffff + && square(primes[i]) > BN_get_word(rnd) + delta) + break; + if (safe ? (mods[i] + delta) % primes[i] <= 1 + : (mods[i] + delta) % primes[i] == 0) { + delta += safe ? 4 : 2; + if (delta > maxdelta) + goto again; + goto loop; } } if (!BN_add_word(rnd, delta)) @@ -355,16 +317,23 @@ static int probable_prime(BIGNUM *rnd, int bits, prime_t *mods) return 1; } -int bn_probable_prime_dh(BIGNUM *rnd, int bits, - const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx) +static int probable_prime_dh(BIGNUM *rnd, int bits, int safe, prime_t *mods, + const BIGNUM *add, const BIGNUM *rem, + BN_CTX *ctx) { int i, ret = 0; BIGNUM *t1; + BN_ULONG delta; + BN_ULONG maxdelta = BN_MASK2 - primes[NUMPRIMES - 1]; BN_CTX_start(ctx); if ((t1 = BN_CTX_get(ctx)) == NULL) goto err; + if (maxdelta > BN_MASK2 - BN_get_word(add)) + maxdelta = BN_MASK2 - BN_get_word(add); + + again: if (!BN_rand(rnd, bits, BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ODD)) goto err; @@ -375,98 +344,48 @@ int bn_probable_prime_dh(BIGNUM *rnd, int bits, if (!BN_sub(rnd, rnd, t1)) goto err; if (rem == NULL) { - if (!BN_add_word(rnd, 1)) + if (!BN_add_word(rnd, safe ? 3u : 1u)) goto err; } else { if (!BN_add(rnd, rnd, rem)) goto err; } - /* we now have a random number 'rand' to test. */ + if (BN_num_bits(rnd) < bits + || BN_get_word(rnd) < (safe ? 5u : 3u)) { + if (!BN_add(rnd, rnd, add)) + goto err; + } - loop: + /* we now have a random number 'rnd' to test. */ for (i = 1; i < NUMPRIMES; i++) { - /* check that rnd is a prime */ BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]); if (mod == (BN_ULONG)-1) goto err; - if (mod <= 1) { - if (!BN_add(rnd, rnd, add)) - goto err; - goto loop; - } - } - ret = 1; - - err: - BN_CTX_end(ctx); - bn_check_top(rnd); - return ret; -} - -static int probable_prime_dh_safe(BIGNUM *p, int bits, const BIGNUM *padd, - const BIGNUM *rem, BN_CTX *ctx) -{ - int i, ret = 0; - BIGNUM *t1, *qadd, *q; - - bits--; - BN_CTX_start(ctx); - t1 = BN_CTX_get(ctx); - q = BN_CTX_get(ctx); - qadd = BN_CTX_get(ctx); - if (qadd == NULL) - goto err; - - if (!BN_rshift1(qadd, padd)) - goto err; - - if (!BN_rand(q, bits, BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ODD)) - goto err; - - /* we need ((rnd-rem) % add) == 0 */ - if (!BN_mod(t1, q, qadd, ctx)) - goto err; - if (!BN_sub(q, q, t1)) - goto err; - if (rem == NULL) { - if (!BN_add_word(q, 1)) - goto err; - } else { - if (!BN_rshift1(t1, rem)) - goto err; - if (!BN_add(q, q, t1)) - goto err; + mods[i] = (prime_t) mod; } - - /* we now have a random number 'rand' to test. */ - if (!BN_lshift1(p, q)) - goto err; - if (!BN_add_word(p, 1)) - goto err; - + delta = 0; loop: for (i = 1; i < NUMPRIMES; i++) { - /* check that p and q are prime */ - /* - * check that for p and q gcd(p-1,primes) == 1 (except for 2) - */ - BN_ULONG pmod = BN_mod_word(p, (BN_ULONG)primes[i]); - BN_ULONG qmod = BN_mod_word(q, (BN_ULONG)primes[i]); - if (pmod == (BN_ULONG)-1 || qmod == (BN_ULONG)-1) - goto err; - if (pmod == 0 || qmod == 0) { - if (!BN_add(p, p, padd)) - goto err; - if (!BN_add(q, q, qadd)) - goto err; + /* check that rnd is a prime */ + if (bits <= 31 && delta <= 0x7fffffff + && square(primes[i]) > BN_get_word(rnd) + delta) + break; + /* rnd mod p == 1 implies q = (rnd-1)/2 is divisible by p */ + if (safe ? (mods[i] + delta) % primes[i] <= 1 + : (mods[i] + delta) % primes[i] == 0) { + delta += BN_get_word(add); + if (delta > maxdelta) + goto again; goto loop; } } + if (!BN_add_word(rnd, delta)) + goto err; ret = 1; err: BN_CTX_end(ctx); - bn_check_top(p); + bn_check_top(rnd); return ret; } diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.h b/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.h index 2eb7b52f76f..ba48244534b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.h +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_prime.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/bn/bn_prime.pl * - * Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_print.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_print.c index 1853269d903..69749a9fa7d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_print.c @@ -8,11 +8,11 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <limits.h> #include "internal/cryptlib.h" #include <openssl/buffer.h> -#include "bn_lcl.h" +#include "bn_local.h" static const char Hex[] = "0123456789ABCDEF"; diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_rand.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_rand.c index 1df5ea0eddf..6b4b50a068f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_rand.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_rand.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <time.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" #include <openssl/rand.h> #include <openssl/sha.h> @@ -239,7 +239,7 @@ int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, if (RAND_priv_bytes(random_bytes, sizeof(random_bytes)) != 1) goto err; SHA512_Init(&sha); - SHA512_Update(&sha, (void *)&done, sizeof(done)); + SHA512_Update(&sha, &done, sizeof(done)); SHA512_Update(&sha, private_bytes, sizeof(private_bytes)); SHA512_Update(&sha, message, message_len); SHA512_Update(&sha, random_bytes, sizeof(random_bytes)); diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_recp.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_recp.c index 9ab767f42fe..e8223133412 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_recp.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_recp.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" void BN_RECP_CTX_init(BN_RECP_CTX *recp) { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_shift.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_shift.c index b7a1e0ff9ae..210a83f586d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_shift.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_shift.c @@ -9,7 +9,7 @@ #include <assert.h> #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" int BN_lshift1(BIGNUM *r, const BIGNUM *a) { @@ -34,12 +34,10 @@ int BN_lshift1(BIGNUM *r, const BIGNUM *a) for (i = 0; i < a->top; i++) { t = *(ap++); *(rp++) = ((t << 1) | c) & BN_MASK2; - c = (t & BN_TBIT) ? 1 : 0; - } - if (c) { - *rp = 1; - r->top++; + c = t >> (BN_BITS2 - 1); } + *rp = c; + r->top += c; bn_check_top(r); return 1; } @@ -47,7 +45,7 @@ int BN_lshift1(BIGNUM *r, const BIGNUM *a) int BN_rshift1(BIGNUM *r, const BIGNUM *a) { BN_ULONG *ap, *rp, t, c; - int i, j; + int i; bn_check_top(r); bn_check_top(a); @@ -58,23 +56,22 @@ int BN_rshift1(BIGNUM *r, const BIGNUM *a) } i = a->top; ap = a->d; - j = i - (ap[i - 1] == 1); if (a != r) { - if (bn_wexpand(r, j) == NULL) + if (bn_wexpand(r, i) == NULL) return 0; r->neg = a->neg; } rp = r->d; + r->top = i; t = ap[--i]; - c = (t & 1) ? BN_TBIT : 0; - if (t >>= 1) - rp[i] = t; + rp[i] = t >> 1; + c = t << (BN_BITS2 - 1); + r->top -= (t == 1); while (i > 0) { t = ap[--i]; rp[i] = ((t >> 1) & BN_MASK2) | c; - c = (t & 1) ? BN_TBIT : 0; + c = t << (BN_BITS2 - 1); } - r->top = j; if (!r->top) r->neg = 0; /* don't allow negative zero */ bn_check_top(r); @@ -152,57 +149,19 @@ int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n) int BN_rshift(BIGNUM *r, const BIGNUM *a, int n) { - int i, j, nw, lb, rb; - BN_ULONG *t, *f; - BN_ULONG l, tmp; - - bn_check_top(r); - bn_check_top(a); + int ret = 0; if (n < 0) { BNerr(BN_F_BN_RSHIFT, BN_R_INVALID_SHIFT); return 0; } - nw = n / BN_BITS2; - rb = n % BN_BITS2; - lb = BN_BITS2 - rb; - if (nw >= a->top || a->top == 0) { - BN_zero(r); - return 1; - } - i = (BN_num_bits(a) - n + (BN_BITS2 - 1)) / BN_BITS2; - if (r != a) { - if (bn_wexpand(r, i) == NULL) - return 0; - r->neg = a->neg; - } else { - if (n == 0) - return 1; /* or the copying loop will go berserk */ - } - - f = &(a->d[nw]); - t = r->d; - j = a->top - nw; - r->top = i; + ret = bn_rshift_fixed_top(r, a, n); - if (rb == 0) { - for (i = j; i != 0; i--) - *(t++) = *(f++); - } else { - l = *(f++); - for (i = j - 1; i != 0; i--) { - tmp = (l >> rb) & BN_MASK2; - l = *(f++); - *(t++) = (tmp | (l << lb)) & BN_MASK2; - } - if ((l = (l >> rb) & BN_MASK2)) - *(t) = l; - } - if (!r->top) - r->neg = 0; /* don't allow negative zero */ + bn_correct_top(r); bn_check_top(r); - return 1; + + return ret; } /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqr.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqr.c index 0c0a590f0c6..7f3a179177b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqr.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqr.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" /* r must not be a */ /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqrt.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqrt.c index c3e66b033bd..1723d5ded5a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqrt.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_sqrt.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) /* diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_srp.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_srp.c index 27b6ebe518e..820757be60e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_srp.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_srp.c @@ -7,13 +7,13 @@ * https://www.openssl.org/source/license.html */ -#include "bn_lcl.h" +#include "bn_local.h" #include "internal/nelem.h" #ifndef OPENSSL_NO_SRP #include <openssl/srp.h> -#include "internal/bn_srp.h" +#include "crypto/bn_srp.h" # if (BN_BYTES == 8) # if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_word.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_word.c index 262d7668fcd..18fb3030a8f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_word.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_word.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "bn_lcl.h" +#include "bn_local.h" BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w) { diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/bn_x931p.c b/crypto/external/bsd/openssl/dist/crypto/bn/bn_x931p.c index 9eb8384fdeb..009950259d4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/bn_x931p.c +++ b/crypto/external/bsd/openssl/dist/crypto/bn/bn_x931p.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <openssl/bn.h> -#include "bn_lcl.h" +#include "bn_local.h" /* X9.31 routines for prime derivation */ diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/build.info b/crypto/external/bsd/openssl/dist/crypto/bn/build.info index a463eddabbb..b9ed5322fa6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/build.info +++ b/crypto/external/bsd/openssl/dist/crypto/bn/build.info @@ -6,7 +6,6 @@ SOURCE[../../libcrypto]=\ {- $target{bn_asm_src} -} \ bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \ bn_depr.c bn_const.c bn_x931p.c bn_intern.c bn_dh.c bn_srp.c -INCLUDE[../../libcrypto]=../../crypto/include INCLUDE[bn_exp.o]=.. diff --git a/crypto/external/bsd/openssl/dist/crypto/bn/rsaz_exp.h b/crypto/external/bsd/openssl/dist/crypto/bn/rsaz_exp.h index c5864f8aaa8..88f65a4bae4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/bn/rsaz_exp.h +++ b/crypto/external/bsd/openssl/dist/crypto/bn/rsaz_exp.h @@ -12,8 +12,8 @@ * (2) University of Haifa, Israel */ -#ifndef RSAZ_EXP_H -# define RSAZ_EXP_H +#ifndef OSSL_CRYPTO_BN_RSAZ_EXP_H +# define OSSL_CRYPTO_BN_RSAZ_EXP_H # undef RSAZ_ENABLED # if defined(OPENSSL_BN_ASM_MONT) && \ diff --git a/crypto/external/bsd/openssl/dist/crypto/c64xpluscpuid.pl b/crypto/external/bsd/openssl/dist/crypto/c64xpluscpuid.pl index b7b11d50316..9aeee574ebf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/c64xpluscpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/c64xpluscpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -284,4 +284,4 @@ bus_loop2_done?: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86.pl b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86.pl index 55af9b4e3d0..cd514acfae4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1147,4 +1147,4 @@ my ($s0,$s1,$s2,$s3) = @T; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86_64.pl index 02c52c3efe4..59e1840160f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmll-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -125,11 +125,13 @@ $code=<<___; .type Camellia_EncryptBlock,\@abi-omnipotent .align 16 Camellia_EncryptBlock: +.cfi_startproc movl \$128,%eax subl $arg0d,%eax movl \$3,$arg0d adcl \$0,$arg0d # keyBitLength==128?3:4 jmp .Lenc_rounds +.cfi_endproc .size Camellia_EncryptBlock,.-Camellia_EncryptBlock # V2 .globl Camellia_EncryptBlock_Rounds @@ -198,6 +200,7 @@ Camellia_EncryptBlock_Rounds: .type _x86_64_Camellia_encrypt,\@abi-omnipotent .align 16 _x86_64_Camellia_encrypt: +.cfi_startproc xor 0($key),@S[1] xor 4($key),@S[0] # ^=key[0-3] xor 8($key),@S[3] @@ -241,6 +244,7 @@ $code.=<<___; mov $t3,@S[3] .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt # V1.x API @@ -248,11 +252,13 @@ $code.=<<___; .type Camellia_DecryptBlock,\@abi-omnipotent .align 16 Camellia_DecryptBlock: +.cfi_startproc movl \$128,%eax subl $arg0d,%eax movl \$3,$arg0d adcl \$0,$arg0d # keyBitLength==128?3:4 jmp .Ldec_rounds +.cfi_endproc .size Camellia_DecryptBlock,.-Camellia_DecryptBlock # V2 .globl Camellia_DecryptBlock_Rounds @@ -321,6 +327,7 @@ Camellia_DecryptBlock_Rounds: .type _x86_64_Camellia_decrypt,\@abi-omnipotent .align 16 _x86_64_Camellia_decrypt: +.cfi_startproc xor 0($key),@S[1] xor 4($key),@S[0] # ^=key[0-3] xor 8($key),@S[3] @@ -365,6 +372,7 @@ $code.=<<___; mov $t1,@S[3] .byte 0xf3,0xc3 # rep ret +.cfi_endproc .size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt ___ @@ -1142,4 +1150,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmllt4-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmllt4-sparcv9.pl index 6396679a5af..71a40f6af90 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmllt4-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/asm/cmllt4-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -936,4 +936,4 @@ ___ &emit_assembler(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/camellia.c b/crypto/external/bsd/openssl/dist/crypto/camellia/camellia.c index c200b823041..f623864bc41 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/camellia.c +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/camellia.c @@ -40,7 +40,7 @@ */ #include <openssl/camellia.h> -#include "cmll_locl.h" +#include "cmll_local.h" #include <string.h> #include <stdlib.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_ecb.c b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_ecb.c index d932f1b3751..5760d1ed35f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/camellia.h> -#include "cmll_locl.h" +#include "cmll_local.h" void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, const CAMELLIA_KEY *key, const int enc) diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_locl.h b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_local.h index 6403b390d82..d16baa55fac 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_local.h @@ -22,8 +22,8 @@ * to the OpenSSL project. */ -#ifndef HEADER_CAMELLIA_LOCL_H -# define HEADER_CAMELLIA_LOCL_H +#ifndef OSSL_CRYPTO_CAMELLIA_CMLL_LOCAL_H +# define OSSL_CRYPTO_CAMELLIA_CMLL_LOCAL_H typedef unsigned int u32; typedef unsigned char u8; @@ -40,4 +40,4 @@ void Camellia_EncryptBlock(int keyBitLength, const u8 plaintext[], const KEY_TABLE_TYPE keyTable, u8 ciphertext[]); void Camellia_DecryptBlock(int keyBitLength, const u8 ciphertext[], const KEY_TABLE_TYPE keyTable, u8 plaintext[]); -#endif /* #ifndef HEADER_CAMELLIA_LOCL_H */ +#endif /* #ifndef OSSL_CRYPTO_CAMELLIA_CMLL_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_misc.c b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_misc.c index e5f014b79cb..d8fc3738c40 100644 --- a/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_misc.c +++ b/crypto/external/bsd/openssl/dist/crypto/camellia/cmll_misc.c @@ -9,7 +9,7 @@ #include <openssl/opensslv.h> #include <openssl/camellia.h> -#include "cmll_locl.h" +#include "cmll_local.h" int Camellia_set_key(const unsigned char *userKey, const int bits, CAMELLIA_KEY *key) diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/asm/cast-586.pl b/crypto/external/bsd/openssl/dist/crypto/cast/asm/cast-586.pl index d5d38965cf7..04710819380 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/asm/cast-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/cast/asm/cast-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -46,7 +46,7 @@ $S4="CAST_S_table3"; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub CAST_encrypt { local($name,$enc)=@_; diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/c_cfb64.c b/crypto/external/bsd/openssl/dist/crypto/cast/c_cfb64.c index bd7cb2f4684..72221595382 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/c_cfb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/cast/c_cfb64.c @@ -8,7 +8,7 @@ */ #include <openssl/cast.h> -#include "cast_lcl.h" +#include "cast_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/c_ecb.c b/crypto/external/bsd/openssl/dist/crypto/cast/c_ecb.c index da4179438f1..6fe093f75b1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/c_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/cast/c_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/cast.h> -#include "cast_lcl.h" +#include "cast_local.h" #include <openssl/opensslv.h> void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/c_enc.c b/crypto/external/bsd/openssl/dist/crypto/cast/c_enc.c index 700b6d162a9..d27d1fc0a54 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/c_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/cast/c_enc.c @@ -8,7 +8,7 @@ */ #include <openssl/cast.h> -#include "cast_lcl.h" +#include "cast_local.h" void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key) { diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/c_ofb64.c b/crypto/external/bsd/openssl/dist/crypto/cast/c_ofb64.c index dffb074762c..49c0cfade57 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/c_ofb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/cast/c_ofb64.c @@ -8,7 +8,7 @@ */ #include <openssl/cast.h> -#include "cast_lcl.h" +#include "cast_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/c_skey.c b/crypto/external/bsd/openssl/dist/crypto/cast/c_skey.c index 962d2a60b4c..0311482d20d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/c_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/cast/c_skey.c @@ -8,7 +8,7 @@ */ #include <openssl/cast.h> -#include "cast_lcl.h" +#include "cast_local.h" #include "cast_s.h" #define CAST_exp(l,A,a,n) \ diff --git a/crypto/external/bsd/openssl/dist/crypto/cast/cast_lcl.h b/crypto/external/bsd/openssl/dist/crypto/cast/cast_local.h index 35e89930a8c..35e89930a8c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cast/cast_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/cast/cast_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv4.pl index d3fadcc63d3..81c616add31 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1157,4 +1157,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv8.pl index e90be6d0e5b..22655747295 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1141,4 +1141,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # flush +close STDOUT or die "error closing STDOUT: $!"; # flush diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-c64xplus.pl index 266401eb164..4bd18a4f8f9 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -923,4 +923,4 @@ $code.=<<___; ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-ppc.pl index f4f8610bf3b..3073deac17e 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1345,4 +1345,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-s390x.pl index c31526473db..dd66a9c6030 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -323,4 +323,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86.pl index 13c217dcf1f..a1f5694b691 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -62,7 +62,7 @@ $ymm=1 if ($xmm && !$ymm && $ARGV[0] eq "win32" && $1>=10); # first version supporting AVX $ymm=1 if ($xmm && !$ymm && - `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9]\.[0-9]+)/ && + `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0); # first version supporting AVX $a="eax"; @@ -1152,4 +1152,4 @@ sub XOPROUND { &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86_64.pl index b54f3b1525b..647d2537cea 100755 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/asm/chacha-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -85,7 +85,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -4002,4 +4002,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/chacha/chacha_enc.c b/crypto/external/bsd/openssl/dist/crypto/chacha/chacha_enc.c index 239f68ab825..18251eac08d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/chacha/chacha_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/chacha/chacha_enc.c @@ -11,7 +11,8 @@ #include <string.h> -#include "internal/chacha.h" +#include "crypto/chacha.h" +#include "crypto/ctype.h" typedef unsigned int u32; typedef unsigned char u8; @@ -78,10 +79,18 @@ void ChaCha20_ctr32(unsigned char *out, const unsigned char *inp, size_t todo, i; /* sigma constant "expand 32-byte k" in little-endian encoding */ - input[0] = ((u32)'e') | ((u32)'x'<<8) | ((u32)'p'<<16) | ((u32)'a'<<24); - input[1] = ((u32)'n') | ((u32)'d'<<8) | ((u32)' '<<16) | ((u32)'3'<<24); - input[2] = ((u32)'2') | ((u32)'-'<<8) | ((u32)'b'<<16) | ((u32)'y'<<24); - input[3] = ((u32)'t') | ((u32)'e'<<8) | ((u32)' '<<16) | ((u32)'k'<<24); + input[0] = ((u32)ossl_toascii('e')) | ((u32)ossl_toascii('x') << 8) + | ((u32)ossl_toascii('p') << 16) + | ((u32)ossl_toascii('a') << 24); + input[1] = ((u32)ossl_toascii('n')) | ((u32)ossl_toascii('d') << 8) + | ((u32)ossl_toascii(' ') << 16) + | ((u32)ossl_toascii('3') << 24); + input[2] = ((u32)ossl_toascii('2')) | ((u32)ossl_toascii('-') << 8) + | ((u32)ossl_toascii('b') << 16) + | ((u32)ossl_toascii('y') << 24); + input[3] = ((u32)ossl_toascii('t')) | ((u32)ossl_toascii('e') << 8) + | ((u32)ossl_toascii(' ') << 16) + | ((u32)ossl_toascii('k') << 24); input[4] = key[0]; input[5] = key[1]; diff --git a/crypto/external/bsd/openssl/dist/crypto/cmac/cm_ameth.c b/crypto/external/bsd/openssl/dist/crypto/cmac/cm_ameth.c index a58454a089c..82adf18c801 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cmac/cm_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/cmac/cm_ameth.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/cmac.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" /* * CMAC "ASN1" method. This is just here to indicate the maximum CMAC output diff --git a/crypto/external/bsd/openssl/dist/crypto/cmac/cm_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/cmac/cm_pmeth.c index 10748f14885..5574f25be86 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cmac/cm_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/cmac/cm_pmeth.c @@ -13,7 +13,7 @@ #include <openssl/x509v3.h> #include <openssl/evp.h> #include <openssl/cmac.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" /* The context structure and "key" is simply a CMAC_CTX */ diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_asn1.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_asn1.c index 993ea6b219a..08069d72a29 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_asn1.c @@ -11,7 +11,7 @@ #include <openssl/pem.h> #include <openssl/x509v3.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" ASN1_SEQUENCE(CMS_IssuerAndSerialNumber) = { diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_att.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_att.c index 0566019753b..4f716619193 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_att.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_att.c @@ -12,7 +12,7 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" #include "internal/nelem.h" /*- diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_cd.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_cd.c index f05e308418f..45365b8ba24 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_cd.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_cd.c @@ -15,7 +15,7 @@ #include <openssl/cms.h> #include <openssl/bio.h> #include <openssl/comp.h> -#include "cms_lcl.h" +#include "cms_local.h" #ifdef ZLIB diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_dd.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_dd.c index 5da6802fcd5..0df2e698c23 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_dd.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_dd.c @@ -13,7 +13,7 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" /* CMS DigestedData Utilities */ diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_enc.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_enc.c index a1719830e8d..fc490303d4c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_enc.c @@ -14,7 +14,7 @@ #include <openssl/err.h> #include <openssl/cms.h> #include <openssl/rand.h> -#include "cms_lcl.h" +#include "cms_local.h" /* CMS EncryptedData Utilities */ diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_env.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_env.c index 26fb81f79ab..04940146fd2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_env.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_env.c @@ -14,9 +14,9 @@ #include <openssl/err.h> #include <openssl/cms.h> #include <openssl/aes.h> -#include "cms_lcl.h" -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "cms_local.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" /* CMS EnvelopedData Utilities */ diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_ess.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_ess.c index 4780231c22b..a21c443ae85 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_ess.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_ess.c @@ -14,7 +14,7 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" IMPLEMENT_ASN1_FUNCTIONS(CMS_ReceiptRequest) diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_io.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_io.c index d18f980a973..b37e485f5a2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_io.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_io.c @@ -12,7 +12,7 @@ #include <openssl/err.h> #include <openssl/pem.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms) { diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_kari.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_kari.c index 5e83814d0fc..cafc3040ac7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_kari.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_kari.c @@ -14,8 +14,8 @@ #include <openssl/err.h> #include <openssl/cms.h> #include <openssl/aes.h> -#include "cms_lcl.h" -#include "internal/asn1_int.h" +#include "cms_local.h" +#include "crypto/asn1.h" /* Key Agreement Recipient Info (KARI) routines */ @@ -162,7 +162,7 @@ int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk) if (!pk) return 1; pctx = EVP_PKEY_CTX_new(pk, NULL); - if (!pctx || !EVP_PKEY_derive_init(pctx)) + if (!pctx || EVP_PKEY_derive_init(pctx) <= 0) goto err; kari->pctx = pctx; return 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_lib.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_lib.c index c2cac260109..57afba43611 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_lib.c @@ -14,7 +14,7 @@ #include <openssl/bio.h> #include <openssl/asn1.h> #include <openssl/cms.h> -#include "cms_lcl.h" +#include "cms_local.h" IMPLEMENT_ASN1_FUNCTIONS(CMS_ContentInfo) IMPLEMENT_ASN1_PRINT_FUNCTION(CMS_ContentInfo) diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_lcl.h b/crypto/external/bsd/openssl/dist/crypto/cms/cms_local.h index 68aa01271bc..a0ce4448f60 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CMS_LCL_H -# define HEADER_CMS_LCL_H +#ifndef OSSL_CRYPTO_CMS_LOCAL_H +# define OSSL_CRYPTO_CMS_LOCAL_H # include <openssl/x509.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_pwri.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_pwri.c index 26e3bdcf9e4..d7414883396 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_pwri.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_pwri.c @@ -15,8 +15,8 @@ #include <openssl/cms.h> #include <openssl/rand.h> #include <openssl/aes.h> -#include "cms_lcl.h" -#include "internal/asn1_int.h" +#include "cms_local.h" +#include "crypto/asn1.h" int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, unsigned char *pass, ossl_ssize_t passlen) diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_sd.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_sd.c index 3841513f8bd..29ba4c1b133 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_sd.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_sd.c @@ -14,9 +14,9 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/cms.h> -#include "cms_lcl.h" -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "cms_local.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" /* CMS SignedData Utilities */ diff --git a/crypto/external/bsd/openssl/dist/crypto/cms/cms_smime.c b/crypto/external/bsd/openssl/dist/crypto/cms/cms_smime.c index 10815639f81..652e97b2e87 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cms/cms_smime.c +++ b/crypto/external/bsd/openssl/dist/crypto/cms/cms_smime.c @@ -13,8 +13,8 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/cms.h> -#include "cms_lcl.h" -#include "internal/asn1_int.h" +#include "cms_local.h" +#include "crypto/asn1.h" static BIO *cms_get_text_bio(BIO *out, unsigned int flags) { diff --git a/crypto/external/bsd/openssl/dist/crypto/comp/c_zlib.c b/crypto/external/bsd/openssl/dist/crypto/comp/c_zlib.c index d688deee5f2..b8193379131 100644 --- a/crypto/external/bsd/openssl/dist/crypto/comp/c_zlib.c +++ b/crypto/external/bsd/openssl/dist/crypto/comp/c_zlib.c @@ -13,9 +13,9 @@ #include <openssl/objects.h> #include "internal/comp.h" #include <openssl/err.h> -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include "internal/bio.h" -#include "comp_lcl.h" +#include "comp_local.h" COMP_METHOD *COMP_zlib(void); @@ -598,6 +598,28 @@ static long bio_zlib_ctrl(BIO *b, int cmd, long num, void *ptr) BIO_copy_next_retry(b); break; + case BIO_CTRL_WPENDING: + if (ctx->obuf == NULL) + return 0; + + if (ctx->odone) { + ret = ctx->ocount; + } else { + ret = ctx->ocount; + if (ret == 0) + /* Unknown amount pending but we are not finished */ + ret = 1; + } + if (ret == 0) + ret = BIO_ctrl(next, cmd, num, ptr); + break; + + case BIO_CTRL_PENDING: + ret = ctx->zin.avail_in; + if (ret == 0) + ret = BIO_ctrl(next, cmd, num, ptr); + break; + default: ret = BIO_ctrl(next, cmd, num, ptr); break; diff --git a/crypto/external/bsd/openssl/dist/crypto/comp/comp_lib.c b/crypto/external/bsd/openssl/dist/crypto/comp/comp_lib.c index 6ae2114496b..56920e1cca5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/comp/comp_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/comp/comp_lib.c @@ -13,7 +13,7 @@ #include <openssl/objects.h> #include <openssl/comp.h> #include <openssl/err.h> -#include "comp_lcl.h" +#include "comp_local.h" COMP_CTX *COMP_CTX_new(COMP_METHOD *meth) { diff --git a/crypto/external/bsd/openssl/dist/crypto/comp/comp_lcl.h b/crypto/external/bsd/openssl/dist/crypto/comp/comp_local.h index aa45fca238d..aa45fca238d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/comp/comp_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/comp/comp_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c b/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c index 8e3f42a0cac..ca76fa3679b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.c @@ -703,7 +703,9 @@ static BIO *process_include(char *include, OPENSSL_DIR_CTX **dirctx, static BIO *get_next_file(const char *path, OPENSSL_DIR_CTX **dirctx) { const char *filename; + size_t pathlen; + pathlen = strlen(path); while ((filename = OPENSSL_DIR_read(dirctx, path)) != NULL) { size_t namelen; @@ -716,7 +718,7 @@ static BIO *get_next_file(const char *path, OPENSSL_DIR_CTX **dirctx) char *newpath; BIO *bio; - newlen = strlen(path) + namelen + 2; + newlen = pathlen + namelen + 2; newpath = OPENSSL_zalloc(newlen); if (newpath == NULL) { CONFerr(CONF_F_GET_NEXT_FILE, ERR_R_MALLOC_FAILURE); @@ -727,14 +729,11 @@ static BIO *get_next_file(const char *path, OPENSSL_DIR_CTX **dirctx) * If the given path isn't clear VMS syntax, * we treat it as on Unix. */ - { - size_t pathlen = strlen(path); - - if (path[pathlen - 1] == ']' || path[pathlen - 1] == '>' - || path[pathlen - 1] == ':') { - /* Clear VMS directory syntax, just copy as is */ - OPENSSL_strlcpy(newpath, path, newlen); - } + if (path[pathlen - 1] == ']' + || path[pathlen - 1] == '>' + || path[pathlen - 1] == ':') { + /* Clear VMS directory syntax, just copy as is */ + OPENSSL_strlcpy(newpath, path, newlen); } #endif if (newpath[0] == '\0') { diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.h b/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.h index 2016d31b892..2ced300e40d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.h +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_def.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/conf/keysets.pl * - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_lib.c b/crypto/external/bsd/openssl/dist/crypto/conf/conf_lib.c index 2d40ac97ec2..add1dfa1c18 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,7 +11,7 @@ #include <stdio.h> #include <string.h> #include "internal/conf.h" -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <openssl/crypto.h> #include <openssl/err.h> #include <openssl/conf.h> @@ -356,8 +356,10 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void) { OPENSSL_INIT_SETTINGS *ret = malloc(sizeof(*ret)); - if (ret != NULL) - memset(ret, 0, sizeof(*ret)); + if (ret == NULL) + return NULL; + + memset(ret, 0, sizeof(*ret)); ret->flags = DEFAULT_CONF_MFLAGS; return ret; diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_lcl.h b/crypto/external/bsd/openssl/dist/crypto/conf/conf_local.h index 6e1f7fe00d7..6e1f7fe00d7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_mall.c b/crypto/external/bsd/openssl/dist/crypto/conf/conf_mall.c index 7e86948e89e..d7eaa8509b2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_mall.c +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_mall.c @@ -14,7 +14,7 @@ #include <openssl/x509.h> #include <openssl/asn1.h> #include <openssl/engine.h> -#include "conf_lcl.h" +#include "conf_local.h" /* Load all OpenSSL builtin modules */ diff --git a/crypto/external/bsd/openssl/dist/crypto/conf/conf_ssl.c b/crypto/external/bsd/openssl/dist/crypto/conf/conf_ssl.c index 387f2cf46c3..4bd8117d365 100644 --- a/crypto/external/bsd/openssl/dist/crypto/conf/conf_ssl.c +++ b/crypto/external/bsd/openssl/dist/crypto/conf/conf_ssl.c @@ -12,7 +12,7 @@ #include <openssl/conf.h> #include <openssl/err.h> #include "internal/sslconf.h" -#include "conf_lcl.h" +#include "conf_local.h" /* * SSL library configuration module placeholder. We load it here but defer diff --git a/crypto/external/bsd/openssl/dist/crypto/cryptlib.c b/crypto/external/bsd/openssl/dist/crypto/cryptlib.c index 7b761a3adce..1f36b20c86e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/cryptlib.c +++ b/crypto/external/bsd/openssl/dist/crypto/cryptlib.c @@ -9,7 +9,7 @@ */ #include "e_os.h" -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include <openssl/safestack.h> #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ @@ -49,7 +49,7 @@ typedef char variant_char; # define ossl_getenv getenv # endif -# include "internal/ctype.h" +# include "crypto/ctype.h" static int todigit(variant_char c) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_b64.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_b64.c index 109ffcdcf24..4abe11ca298 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_b64.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_b64.c @@ -14,7 +14,7 @@ #include <openssl/err.h> #include <openssl/evp.h> -#include "ct_locl.h" +#include "ct_local.h" /* * Decodes the base64 string |in| into |out|. diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_locl.h b/crypto/external/bsd/openssl/dist/crypto/ct/ct_local.h index 9f983c91bea..9f983c91bea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_oct.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_oct.c index 0dd691c0f71..d4b6645af48 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_oct.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_oct.c @@ -19,7 +19,7 @@ #include <openssl/ct.h> #include <openssl/err.h> -#include "ct_locl.h" +#include "ct_local.h" int o2i_SCT_signature(SCT *sct, const unsigned char **in, size_t len) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_policy.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_policy.c index 0d7b3463877..df66e8a494d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_policy.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_policy.c @@ -15,7 +15,7 @@ #include <openssl/err.h> #include <time.h> -#include "ct_locl.h" +#include "ct_local.h" /* * Number of seconds in the future that an SCT timestamp can be, by default, diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_prn.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_prn.c index 376e04523e5..e6584b57f39 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_prn.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_prn.c @@ -14,7 +14,7 @@ #include <openssl/asn1.h> #include <openssl/bio.h> -#include "ct_locl.h" +#include "ct_local.h" static void SCT_signature_algorithms_print(const SCT *sct, BIO *out) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct.c index 1dc16857ba5..4ff36e2fbd4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct.c @@ -17,7 +17,7 @@ #include <openssl/tls1.h> #include <openssl/x509.h> -#include "ct_locl.h" +#include "ct_local.h" SCT *SCT_new(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct_ctx.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct_ctx.c index 75a5027df0e..841e768033e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct_ctx.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_sct_ctx.c @@ -18,7 +18,7 @@ #include <openssl/obj_mac.h> #include <openssl/x509.h> -#include "ct_locl.h" +#include "ct_local.h" SCT_CTX *SCT_CTX_new(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_vfy.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_vfy.c index cabcf5782aa..74fd34f4154 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_vfy.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_vfy.c @@ -14,7 +14,7 @@ #include <openssl/evp.h> #include <openssl/x509.h> -#include "ct_locl.h" +#include "ct_local.h" typedef enum sct_signature_type_t { SIGNATURE_TYPE_NOT_SET = -1, diff --git a/crypto/external/bsd/openssl/dist/crypto/ct/ct_x509v3.c b/crypto/external/bsd/openssl/dist/crypto/ct/ct_x509v3.c index ec186d1f5b8..19c2a852d24 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ct/ct_x509v3.c +++ b/crypto/external/bsd/openssl/dist/crypto/ct/ct_x509v3.c @@ -11,7 +11,7 @@ # error "CT is disabled" #endif -#include "ct_locl.h" +#include "ct_local.h" static char *i2s_poison(const X509V3_EXT_METHOD *method, void *val) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ctype.c b/crypto/external/bsd/openssl/dist/crypto/ctype.c index e05f84cd408..b7f1183f9cc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ctype.c +++ b/crypto/external/bsd/openssl/dist/crypto/ctype.c @@ -9,7 +9,7 @@ #include <string.h> #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "openssl/ebcdic.h" /* diff --git a/crypto/external/bsd/openssl/dist/crypto/des/asm/crypt586.pl b/crypto/external/bsd/openssl/dist/crypto/des/asm/crypt586.pl index a02d1806314..d14b9f89b6b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/asm/crypt586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/des/asm/crypt586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -25,7 +25,7 @@ $R="esi"; &fcrypt_body("fcrypt_body"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub fcrypt_body { diff --git a/crypto/external/bsd/openssl/dist/crypto/des/asm/des-586.pl b/crypto/external/bsd/openssl/dist/crypto/des/asm/des-586.pl index 2bcc54ef2f2..07d9d87ac73 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/asm/des-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/des/asm/des-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -47,7 +47,7 @@ $small_footprint=1 if (grep(/\-DOPENSSL_SMALL_FOOTPRINT/,@ARGV)); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub DES_encrypt_internal() { diff --git a/crypto/external/bsd/openssl/dist/crypto/des/asm/des_enc.m4 b/crypto/external/bsd/openssl/dist/crypto/des/asm/des_enc.m4 index 4ada97b175d..ebb5e7cd1d7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/asm/des_enc.m4 +++ b/crypto/external/bsd/openssl/dist/crypto/des/asm/des_enc.m4 @@ -106,15 +106,15 @@ changequote({,}) ! technique. ! ! The macro also loads address sbox 1 to 5 to global 1 to 5, address -! sbox 6 to local6, and addres sbox 8 to out3. +! sbox 6 to local6, and address sbox 8 to out3. ! -! Rotates the halfs 3 left to bring the sbox bits in convenient positions. +! Rotates the halves 3 left to bring the sbox bits in convenient positions. ! ! Loads key first round from address in parameter 5 to out0, out1. ! ! After the original LibDES initial permutation, the resulting left ! is in the variable initially used for right and vice versa. The macro -! implements the possibility to keep the halfs in the original registers. +! implements the possibility to keep the halves in the original registers. ! ! parameter 1 left ! parameter 2 right @@ -1184,7 +1184,7 @@ DES_encrypt2: add %o7,global1,global1 sub global1,.PIC.DES_SPtrans-.des_and,out2 - ! Set sbox address 1 to 6 and rotate halfs 3 left + ! Set sbox address 1 to 6 and rotate halves 3 left ! Errors caught by destest? Yes. Still? *NO* !sethi %hi(DES_SPtrans), global1 ! address sbox 1 diff --git a/crypto/external/bsd/openssl/dist/crypto/des/asm/dest4-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/des/asm/dest4-sparcv9.pl index fe1fdc7025c..5c92a52b795 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/asm/dest4-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/des/asm/dest4-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -624,4 +624,4 @@ ___ &emit_assembler(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/des/cbc_cksm.c b/crypto/external/bsd/openssl/dist/crypto/des/cbc_cksm.c index 5a1f72f82db..c5e2e017b84 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/cbc_cksm.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/cbc_cksm.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" DES_LONG DES_cbc_cksum(const unsigned char *in, DES_cblock *output, long length, DES_key_schedule *schedule, diff --git a/crypto/external/bsd/openssl/dist/crypto/des/cfb64ede.c b/crypto/external/bsd/openssl/dist/crypto/des/cfb64ede.c index 21943f6143e..490d925f46f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/cfb64ede.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/cfb64ede.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/des/cfb64enc.c b/crypto/external/bsd/openssl/dist/crypto/des/cfb64enc.c index 96de51b055e..ca0e8216480 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/cfb64enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/cfb64enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/des/cfb_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/cfb_enc.c index 544392e405c..17018420e6c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/cfb_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/cfb_enc.c @@ -8,7 +8,7 @@ */ #include "e_os.h" -#include "des_locl.h" +#include "des_local.h" #include <assert.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/des/des_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/des_enc.c index ed134ace8c3..45eec615d8b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/des_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/des_enc.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "des_locl.h" +#include "des_local.h" #include "spr.h" void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) diff --git a/crypto/external/bsd/openssl/dist/crypto/des/des_locl.h b/crypto/external/bsd/openssl/dist/crypto/des/des_local.h index f401e6f3ebe..0f58a1c9ae2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/des_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/des/des_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_DES_LOCL_H -# define HEADER_DES_LOCL_H +#ifndef OSSL_CRYPTO_DES_LOCAL_H +# define OSSL_CRYPTO_DES_LOCAL_H # include <openssl/e_os2.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ecb3_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/ecb3_enc.c index 6ac89d4e78b..7afa8eaadde 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ecb3_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ecb3_enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ecb_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/ecb_enc.c index 5ed079d15fd..513c65e116c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ecb_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ecb_enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" #include <openssl/opensslv.h> #include <openssl/bio.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/des/fcrypt.c b/crypto/external/bsd/openssl/dist/crypto/des/fcrypt.c index aaee4bf236a..e83cf76b615 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/fcrypt.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/fcrypt.c @@ -19,7 +19,7 @@ #endif #include <openssl/crypto.h> -#include "des_locl.h" +#include "des_local.h" /* * Added more values to handle illegal salt values the way normal crypt() diff --git a/crypto/external/bsd/openssl/dist/crypto/des/fcrypt_b.c b/crypto/external/bsd/openssl/dist/crypto/des/fcrypt_b.c index fe2369a9352..22f967b8c6d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/fcrypt_b.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/fcrypt_b.c @@ -10,7 +10,7 @@ #include <stdio.h> #define DES_FCRYPT -#include "des_locl.h" +#include "des_local.h" #undef DES_FCRYPT #undef PERM_OP diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ncbc_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/ncbc_enc.c index 244f15ca2a9..cd4b071a3d7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ncbc_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ncbc_enc.c @@ -13,7 +13,7 @@ * des_enc.c (DES_ncbc_encrypt) */ -#include "des_locl.h" +#include "des_local.h" #ifdef CBC_ENC_C__DONT_UPDATE_IV void DES_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ofb64ede.c b/crypto/external/bsd/openssl/dist/crypto/des/ofb64ede.c index a551a07e0eb..68cf2dc557c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ofb64ede.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ofb64ede.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ofb64enc.c b/crypto/external/bsd/openssl/dist/crypto/des/ofb64enc.c index 30976c871da..5796980c186 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ofb64enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ofb64enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/des/ofb_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/ofb_enc.c index 65a9b8604d8..2b0498994b5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/ofb_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/ofb_enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* * The input and output are loaded in multiples of 8 bits. What this means is diff --git a/crypto/external/bsd/openssl/dist/crypto/des/pcbc_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/pcbc_enc.c index 0fa058f03f0..3490592741c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/pcbc_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/pcbc_enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, long length, DES_key_schedule *schedule, diff --git a/crypto/external/bsd/openssl/dist/crypto/des/qud_cksm.c b/crypto/external/bsd/openssl/dist/crypto/des/qud_cksm.c index 81e6be8226a..10b6abf69ea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/qud_cksm.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/qud_cksm.c @@ -13,7 +13,7 @@ * only based on the code in this paper and is almost definitely not the same * as the MIT implementation. */ -#include "des_locl.h" +#include "des_local.h" #define Q_B0(a) (((DES_LONG)(a))) #define Q_B1(a) (((DES_LONG)(a))<<8) diff --git a/crypto/external/bsd/openssl/dist/crypto/des/set_key.c b/crypto/external/bsd/openssl/dist/crypto/des/set_key.c index adbad72362f..cbcb616cb2a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/set_key.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/set_key.c @@ -16,7 +16,7 @@ * 1.0 First working version */ #include <openssl/crypto.h> -#include "des_locl.h" +#include "des_local.h" /* defaults to false */ OPENSSL_IMPLEMENT_GLOBAL(int, DES_check_key, 0) diff --git a/crypto/external/bsd/openssl/dist/crypto/des/str2key.c b/crypto/external/bsd/openssl/dist/crypto/des/str2key.c index e18d726522b..61db6051256 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/str2key.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/str2key.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "des_locl.h" +#include "des_local.h" void DES_string_to_key(const char *str, DES_cblock *key) { diff --git a/crypto/external/bsd/openssl/dist/crypto/des/xcbc_enc.c b/crypto/external/bsd/openssl/dist/crypto/des/xcbc_enc.c index c4e455d9b91..fb3fd5292cb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/des/xcbc_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/des/xcbc_enc.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "des_locl.h" +#include "des_local.h" /* RSA's DESX */ diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_ameth.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_ameth.c index 05a1d4227ee..d53004080d5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_ameth.c @@ -11,10 +11,10 @@ #include "internal/cryptlib.h" #include <openssl/x509.h> #include <openssl/asn1.h> -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/bn.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" #include <openssl/cms.h> /* @@ -901,6 +901,7 @@ static int dh_cms_encrypt(CMS_RecipientInfo *ri) err: OPENSSL_free(penc); X509_ALGOR_free(wrap_alg); + OPENSSL_free(dukm); return rv; } diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_asn1.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_asn1.c index 1a40633b480..e37f0904e56 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_asn1.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/bn.h> -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/objects.h> #include <openssl/asn1t.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_check.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_check.c index d13d8206ce5..4ac169e75c2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_check.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_check.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/bn.h> -#include "dh_locl.h" +#include "dh_local.h" # define DH_NUMBER_ITERATIONS_FOR_PRIME 64 diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_gen.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_gen.c index d293835eb22..ab82ab58bd2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_gen.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_gen.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,7 +15,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/bn.h> -#include "dh_locl.h" +#include "dh_local.h" static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb); @@ -54,7 +54,7 @@ int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, * for 3, p mod 12 == 11 * for 5, p mod 60 == 59 * - * However for compatibilty with previous versions we use: + * However for compatibility with previous versions we use: * for 2, p mod 24 == 11 * for 5, p mod 60 == 23 */ diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_key.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_key.c index 718aa422d93..daffdf74dd3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_key.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_key.c @@ -9,8 +9,8 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "dh_locl.h" -#include "internal/bn_int.h" +#include "dh_local.h" +#include "crypto/bn.h" static int generate_key(DH *dh); static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_lib.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_lib.c index e7e7ef08e9e..04b79d355ca 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_lib.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include "internal/refcount.h" #include <openssl/bn.h> -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/engine.h> int DH_set_method(DH *dh, const DH_METHOD *meth) diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_locl.h b/crypto/external/bsd/openssl/dist/crypto/dh/dh_local.h index 0a8391a6c00..0a8391a6c00 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_meth.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_meth.c index 59c4d7e9678..8a54a8108fc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_meth.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "dh_locl.h" +#include "dh_local.h" #include <string.h> #include <openssl/err.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_pmeth.c index 568831f1c2a..1fd94deb473 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_pmeth.c @@ -12,11 +12,11 @@ #include <openssl/asn1t.h> #include <openssl/x509.h> #include <openssl/evp.h> -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/bn.h> #include <openssl/dsa.h> #include <openssl/objects.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" /* DH pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc5114.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc5114.c index c4a219590e9..e3603a05a32 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc5114.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc5114.c @@ -9,9 +9,9 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/bn.h> -#include "internal/bn_dh.h" +#include "crypto/bn_dh.h" /* * Macro to make a DH structure from BIGNUM data. NB: although just copying diff --git a/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc7919.c b/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc7919.c index a54b468e552..03d30a1f5d5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc7919.c +++ b/crypto/external/bsd/openssl/dist/crypto/dh/dh_rfc7919.c @@ -9,10 +9,10 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "dh_locl.h" +#include "dh_local.h" #include <openssl/bn.h> #include <openssl/objects.h> -#include "internal/bn_dh.h" +#include "crypto/bn_dh.h" static DH *dh_param_init(const BIGNUM *p, int32_t nbits) { diff --git a/crypto/external/bsd/openssl/dist/crypto/dllmain.c b/crypto/external/bsd/openssl/dist/crypto/dllmain.c index 0838c55e489..e8217893b9e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dllmain.c +++ b/crypto/external/bsd/openssl/dist/crypto/dllmain.c @@ -8,7 +8,7 @@ */ #include "e_os.h" -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #if defined(_WIN32) || defined(__CYGWIN__) # ifdef __CYGWIN__ diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ameth.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ameth.c index 49aa1ae23ba..2dcaa0815fd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ameth.c @@ -11,11 +11,11 @@ #include "internal/cryptlib.h" #include <openssl/x509.h> #include <openssl/asn1.h> -#include "dsa_locl.h" +#include "dsa_local.h" #include <openssl/bn.h> #include <openssl/cms.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" static int dsa_pub_decode(EVP_PKEY *pkey, X509_PUBKEY *pubkey) { diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_asn1.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_asn1.c index 6499e87ef31..9cafd5ca8a9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_asn1.c @@ -9,7 +9,7 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "dsa_locl.h" +#include "dsa_local.h" #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/rand.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_gen.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_gen.c index af59a582b53..5d066a06c54 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_gen.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_gen.c @@ -21,7 +21,7 @@ #include <openssl/bn.h> #include <openssl/rand.h> #include <openssl/sha.h> -#include "dsa_locl.h" +#include "dsa_local.h" int DSA_generate_parameters_ex(DSA *ret, int bits, const unsigned char *seed_in, int seed_len, diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_key.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_key.c index a48af584929..bdeddd4f61d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_key.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_key.c @@ -11,7 +11,7 @@ #include <time.h> #include "internal/cryptlib.h" #include <openssl/bn.h> -#include "dsa_locl.h" +#include "dsa_local.h" static int dsa_builtin_keygen(DSA *dsa); diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_lib.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_lib.c index 1048601bebd..f98af5853dc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_lib.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include "internal/refcount.h" #include <openssl/bn.h> -#include "dsa_locl.h" +#include "dsa_local.h" #include <openssl/asn1.h> #include <openssl/engine.h> #include <openssl/dh.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_locl.h b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_local.h index a81a4b49788..a81a4b49788 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_meth.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_meth.c index ff4fae44a7c..1e6ee2f4ed3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_meth.c @@ -15,7 +15,7 @@ * or in the file LICENSE in the source distribution. */ -#include "dsa_locl.h" +#include "dsa_local.h" #include <string.h> #include <openssl/err.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ossl.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ossl.c index 16161dcadf2..a983def64e7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ossl.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_ossl.c @@ -9,10 +9,10 @@ #include <stdio.h> #include "internal/cryptlib.h" -#include "internal/bn_int.h" +#include "crypto/bn.h" #include <openssl/bn.h> #include <openssl/sha.h> -#include "dsa_locl.h" +#include "dsa_local.h" #include <openssl/asn1.h> static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_pmeth.c index 1dd2fef9beb..4ca3747a464 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_pmeth.c @@ -13,8 +13,8 @@ #include <openssl/x509.h> #include <openssl/evp.h> #include <openssl/bn.h> -#include "internal/evp_int.h" -#include "dsa_locl.h" +#include "crypto/evp.h" +#include "dsa_local.h" /* DSA pkey context structure */ @@ -178,9 +178,7 @@ static int pkey_dsa_ctrl_str(EVP_PKEY_CTX *ctx, } if (strcmp(type, "dsa_paramgen_q_bits") == 0) { int qbits = atoi(value); - return EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, - EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, - NULL); + return EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits); } if (strcmp(type, "dsa_paramgen_md") == 0) { const EVP_MD *md = EVP_get_digestbyname(value); @@ -189,9 +187,7 @@ static int pkey_dsa_ctrl_str(EVP_PKEY_CTX *ctx, DSAerr(DSA_F_PKEY_DSA_CTRL_STR, DSA_R_INVALID_DIGEST_TYPE); return 0; } - return EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, - EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, - (void *)md); + return EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md); } return -2; } diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_sign.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_sign.c index e9466b29f1d..51c7754b93e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_sign.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "dsa_locl.h" +#include "dsa_local.h" #include <openssl/bn.h> DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) diff --git a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_vrf.c b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_vrf.c index 21f98cd94e5..6f80a4aab7a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_vrf.c +++ b/crypto/external/bsd/openssl/dist/crypto/dsa/dsa_vrf.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "dsa_locl.h" +#include "dsa_local.h" int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, DSA *dsa) diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_dl.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_dl.c index 290d73cf357..3bbb10e5ca9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_dl.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_dl.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "dso_locl.h" +#include "dso_local.h" #ifdef DSO_DL diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_dlfcn.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_dlfcn.c index c7f272b8a6d..c1a7d9f91a2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_dlfcn.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_dlfcn.c @@ -16,7 +16,7 @@ # define _GNU_SOURCE /* make sure dladdr is declared */ #endif -#include "dso_locl.h" +#include "dso_local.h" #include "e_os.h" #ifdef DSO_DLFCN @@ -275,7 +275,7 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename) else snprintf(translated, rsize, "%s" DSO_EXTENSION, filename); } else - snprintf(translated, rsize, "%s", filename); + sprintf(translated, "%s", filename); return translated; } diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_lib.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_lib.c index 2e75021d39e..50a39bb7d5d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_lib.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "dso_locl.h" +#include "dso_local.h" #include "internal/refcount.h" static DSO_METHOD *default_DSO_meth = NULL; diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_locl.h b/crypto/external/bsd/openssl/dist/crypto/dso/dso_local.h index 14a0ccb7c01..43b7df9d783 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_local.h @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include "internal/dso.h" -#include "internal/dso_conf.h" +#include "crypto/dso_conf.h" #include "internal/refcount.h" /**********************************************************************/ diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_openssl.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_openssl.c index f0dd38ace25..c76a04db23f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_openssl.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_openssl.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "dso_locl.h" +#include "dso_local.h" #ifdef DSO_NONE diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_vms.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_vms.c index 178e7257983..9d1066f915a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_vms.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_vms.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "dso_locl.h" +#include "dso_local.h" #ifdef OPENSSL_SYS_VMS diff --git a/crypto/external/bsd/openssl/dist/crypto/dso/dso_win32.c b/crypto/external/bsd/openssl/dist/crypto/dso/dso_win32.c index 6631d517f4c..37892170c0f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/dso/dso_win32.c +++ b/crypto/external/bsd/openssl/dist/crypto/dso/dso_win32.c @@ -8,7 +8,7 @@ */ #include "e_os.h" -#include "dso_locl.h" +#include "dso_local.h" #if defined(DSO_WIN32) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv4.pl index 83abbdd8957..ea538c0698d 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1394,7 +1394,7 @@ my ($Z1sqr, $Z2sqr) = ($Hsqr, $Rsqr); # 256-bit vectors on top. Then note that we push # starting from r0, which means that we have copy of # input arguments just below these temporary vectors. -# We use three of them for !in1infty, !in2intfy and +# We use three of them for ~in1infty, ~in2infty and # result of check for zero. $code.=<<___; @@ -1424,7 +1424,7 @@ ecp_nistz256_point_add: #endif movne r12,#-1 stmia r3,{r4-r11} - str r12,[sp,#32*18+8] @ !in2infty + str r12,[sp,#32*18+8] @ ~in2infty ldmia $a_ptr!,{r4-r11} @ copy in1_x add r3,sp,#$in1_x @@ -1445,7 +1445,7 @@ ecp_nistz256_point_add: #endif movne r12,#-1 stmia r3,{r4-r11} - str r12,[sp,#32*18+4] @ !in1infty + str r12,[sp,#32*18+4] @ ~in1infty add $a_ptr,sp,#$in2_z add $b_ptr,sp,#$in2_z @@ -1510,33 +1510,20 @@ ecp_nistz256_point_add: orr $a0,$a0,$a2 orr $a4,$a4,$a6 orr $a0,$a0,$a7 - orrs $a0,$a0,$a4 + orr $a0,$a0,$a4 @ ~is_equal(U1,U2) - bne .Ladd_proceed @ is_equal(U1,U2)? + ldr $t0,[sp,#32*18+4] @ ~in1infty + ldr $t1,[sp,#32*18+8] @ ~in2infty + ldr $t2,[sp,#32*18+12] @ ~is_equal(S1,S2) + mvn $t0,$t0 @ -1/0 -> 0/-1 + mvn $t1,$t1 @ -1/0 -> 0/-1 + orr $a0,$t0 + orr $a0,$t1 + orrs $a0,$t2 @ set flags - ldr $t0,[sp,#32*18+4] - ldr $t1,[sp,#32*18+8] - ldr $t2,[sp,#32*18+12] - tst $t0,$t1 - beq .Ladd_proceed @ (in1infty || in2infty)? - tst $t2,$t2 - beq .Ladd_double @ is_equal(S1,S2)? + @ if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + bne .Ladd_proceed - ldr $r_ptr,[sp,#32*18+16] - eor r4,r4,r4 - eor r5,r5,r5 - eor r6,r6,r6 - eor r7,r7,r7 - eor r8,r8,r8 - eor r9,r9,r9 - eor r10,r10,r10 - eor r11,r11,r11 - stmia $r_ptr!,{r4-r11} - stmia $r_ptr!,{r4-r11} - stmia $r_ptr!,{r4-r11} - b .Ladd_done - -.align 4 .Ladd_double: ldr $a_ptr,[sp,#32*18+20] add sp,sp,#32*(18-5)+16 @ difference in frame sizes @@ -1601,15 +1588,15 @@ ecp_nistz256_point_add: add $b_ptr,sp,#$S2 bl __ecp_nistz256_sub_from @ p256_sub(res_y, res_y, S2); - ldr r11,[sp,#32*18+4] @ !in1intfy - ldr r12,[sp,#32*18+8] @ !in2intfy + ldr r11,[sp,#32*18+4] @ ~in1infty + ldr r12,[sp,#32*18+8] @ ~in2infty add r1,sp,#$res_x add r2,sp,#$in2_x - and r10,r11,r12 + and r10,r11,r12 @ ~in1infty & ~in2infty mvn r11,r11 add r3,sp,#$in1_x - and r11,r11,r12 - mvn r12,r12 + and r11,r11,r12 @ in1infty & ~in2infty + mvn r12,r12 @ in2infty ldr $r_ptr,[sp,#32*18+16] ___ for($i=0;$i<96;$i+=8) { # conditional moves @@ -1617,11 +1604,11 @@ $code.=<<___; ldmia r1!,{r4-r5} @ res_x ldmia r2!,{r6-r7} @ in2_x ldmia r3!,{r8-r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -1656,7 +1643,7 @@ my $Z1sqr = $S2; # 256-bit vectors on top. Then note that we push # starting from r0, which means that we have copy of # input arguments just below these temporary vectors. -# We use two of them for !in1infty, !in2intfy. +# We use two of them for ~in1infty, ~in2infty. my @ONE_mont=(1,0,0,-1,-1,-1,-2,0); @@ -1687,7 +1674,7 @@ ecp_nistz256_point_add_affine: #endif movne r12,#-1 stmia r3,{r4-r11} - str r12,[sp,#32*15+4] @ !in1infty + str r12,[sp,#32*15+4] @ ~in1infty ldmia $b_ptr!,{r4-r11} @ copy in2_x add r3,sp,#$in2_x @@ -1714,7 +1701,7 @@ ecp_nistz256_point_add_affine: it ne #endif movne r12,#-1 - str r12,[sp,#32*15+8] @ !in2infty + str r12,[sp,#32*15+8] @ ~in2infty add $a_ptr,sp,#$in1_z add $b_ptr,sp,#$in1_z @@ -1796,15 +1783,15 @@ ecp_nistz256_point_add_affine: add $b_ptr,sp,#$S2 bl __ecp_nistz256_sub_from @ p256_sub(res_y, res_y, S2); - ldr r11,[sp,#32*15+4] @ !in1intfy - ldr r12,[sp,#32*15+8] @ !in2intfy + ldr r11,[sp,#32*15+4] @ ~in1infty + ldr r12,[sp,#32*15+8] @ ~in2infty add r1,sp,#$res_x add r2,sp,#$in2_x - and r10,r11,r12 + and r10,r11,r12 @ ~in1infty & ~in2infty mvn r11,r11 add r3,sp,#$in1_x - and r11,r11,r12 - mvn r12,r12 + and r11,r11,r12 @ in1infty & ~in2infty + mvn r12,r12 @ in2infty ldr $r_ptr,[sp,#32*15] ___ for($i=0;$i<64;$i+=8) { # conditional moves @@ -1812,11 +1799,11 @@ $code.=<<___; ldmia r1!,{r4-r5} @ res_x ldmia r2!,{r6-r7} @ in2_x ldmia r3!,{r8-r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -1862,4 +1849,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv8.pl index 887ddfb1ea9..e93e18f29f1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -722,7 +722,7 @@ $code.=<<___; .align 5 ecp_nistz256_point_double: .inst 0xd503233f // paciasp - stp x29,x30,[sp,#-80]! + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] @@ -855,7 +855,7 @@ ecp_nistz256_point_double: add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 + ldp x29,x30,[sp],#96 .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_double,.-ecp_nistz256_point_double @@ -872,7 +872,7 @@ my ($res_x,$res_y,$res_z, my ($Z1sqr, $Z2sqr) = ($Hsqr, $Rsqr); # above map() describes stack layout with 12 temporary # 256-bit vectors on top. -my ($rp_real,$ap_real,$bp_real,$in1infty,$in2infty,$temp)=map("x$_",(21..26)); +my ($rp_real,$ap_real,$bp_real,$in1infty,$in2infty,$temp0,$temp1,$temp2)=map("x$_",(21..28)); $code.=<<___; .globl ecp_nistz256_point_add @@ -880,12 +880,13 @@ $code.=<<___; .align 5 ecp_nistz256_point_add: .inst 0xd503233f // paciasp - stp x29,x30,[sp,#-80]! + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] stp x23,x24,[sp,#48] stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] sub sp,sp,#32*12 ldp $a0,$a1,[$bp,#64] // in2_z @@ -899,7 +900,7 @@ ecp_nistz256_point_add: orr $t2,$a2,$a3 orr $in2infty,$t0,$t2 cmp $in2infty,#0 - csetm $in2infty,ne // !in2infty + csetm $in2infty,ne // ~in2infty add $rp,sp,#$Z2sqr bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); @@ -909,7 +910,7 @@ ecp_nistz256_point_add: orr $t2,$a2,$a3 orr $in1infty,$t0,$t2 cmp $in1infty,#0 - csetm $in1infty,ne // !in1infty + csetm $in1infty,ne // ~in1infty add $rp,sp,#$Z1sqr bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -950,7 +951,7 @@ ecp_nistz256_point_add: orr $acc0,$acc0,$acc1 // see if result is zero orr $acc2,$acc2,$acc3 - orr $temp,$acc0,$acc2 + orr $temp0,$acc0,$acc2 // ~is_equal(S1,S2) add $bp,sp,#$Z2sqr add $rp,sp,#$U1 @@ -971,32 +972,21 @@ ecp_nistz256_point_add: orr $acc0,$acc0,$acc1 // see if result is zero orr $acc2,$acc2,$acc3 - orr $acc0,$acc0,$acc2 - tst $acc0,$acc0 - b.ne .Ladd_proceed // is_equal(U1,U2)? + orr $acc0,$acc0,$acc2 // ~is_equal(U1,U2) - tst $in1infty,$in2infty - b.eq .Ladd_proceed // (in1infty || in2infty)? + mvn $temp1,$in1infty // -1/0 -> 0/-1 + mvn $temp2,$in2infty // -1/0 -> 0/-1 + orr $acc0,$acc0,$temp1 + orr $acc0,$acc0,$temp2 + orr $acc0,$acc0,$temp0 + cbnz $acc0,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) - tst $temp,$temp - b.eq .Ladd_double // is_equal(S1,S2)? - - eor $a0,$a0,$a0 - eor $a1,$a1,$a1 - stp $a0,$a1,[$rp_real] - stp $a0,$a1,[$rp_real,#16] - stp $a0,$a1,[$rp_real,#32] - stp $a0,$a1,[$rp_real,#48] - stp $a0,$a1,[$rp_real,#64] - stp $a0,$a1,[$rp_real,#80] - b .Ladd_done - -.align 4 .Ladd_double: mov $ap,$ap_real mov $rp,$rp_real ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] add sp,sp,#32*(12-4) // difference in stack frames b .Ldouble_shortcut @@ -1081,14 +1071,14 @@ ___ for($i=0;$i<64;$i+=32) { # conditional moves $code.=<<___; ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? + cmp $in1infty,#0 // ~$in1intfy, remember? ldp $acc2,$acc3,[$ap_real,#$i+16] csel $t0,$a0,$t0,ne csel $t1,$a1,$t1,ne ldp $a0,$a1,[sp,#$res_x+$i+32] // res csel $t2,$a2,$t2,ne csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? + cmp $in2infty,#0 // ~$in2intfy, remember? ldp $a2,$a3,[sp,#$res_x+$i+48] csel $acc0,$t0,$acc0,ne csel $acc1,$t1,$acc1,ne @@ -1102,13 +1092,13 @@ ___ } $code.=<<___; ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? + cmp $in1infty,#0 // ~$in1intfy, remember? ldp $acc2,$acc3,[$ap_real,#$i+16] csel $t0,$a0,$t0,ne csel $t1,$a1,$t1,ne csel $t2,$a2,$t2,ne csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? + cmp $in2infty,#0 // ~$in2intfy, remember? csel $acc0,$t0,$acc0,ne csel $acc1,$t1,$acc1,ne csel $acc2,$t2,$acc2,ne @@ -1122,7 +1112,8 @@ $code.=<<___; ldp x21,x22,[x29,#32] ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 .inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add,.-ecp_nistz256_point_add @@ -1166,7 +1157,7 @@ ecp_nistz256_point_add_affine: orr $t2,$a2,$a3 orr $in1infty,$t0,$t2 cmp $in1infty,#0 - csetm $in1infty,ne // !in1infty + csetm $in1infty,ne // ~in1infty ldp $acc0,$acc1,[$bp] // in2_x ldp $acc2,$acc3,[$bp,#16] @@ -1180,7 +1171,7 @@ ecp_nistz256_point_add_affine: orr $t0,$t0,$t2 orr $in2infty,$acc0,$t0 cmp $in2infty,#0 - csetm $in2infty,ne // !in2infty + csetm $in2infty,ne // ~in2infty add $rp,sp,#$Z1sqr bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -1290,14 +1281,14 @@ ___ for($i=0;$i<64;$i+=32) { # conditional moves $code.=<<___; ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? + cmp $in1infty,#0 // ~$in1intfy, remember? ldp $acc2,$acc3,[$ap_real,#$i+16] csel $t0,$a0,$t0,ne csel $t1,$a1,$t1,ne ldp $a0,$a1,[sp,#$res_x+$i+32] // res csel $t2,$a2,$t2,ne csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? + cmp $in2infty,#0 // ~$in2intfy, remember? ldp $a2,$a3,[sp,#$res_x+$i+48] csel $acc0,$t0,$acc0,ne csel $acc1,$t1,$acc1,ne @@ -1314,13 +1305,13 @@ ___ } $code.=<<___; ldp $acc0,$acc1,[$ap_real,#$i] // in1 - cmp $in1infty,#0 // !$in1intfy, remember? + cmp $in1infty,#0 // ~$in1intfy, remember? ldp $acc2,$acc3,[$ap_real,#$i+16] csel $t0,$a0,$t0,ne csel $t1,$a1,$t1,ne csel $t2,$a2,$t2,ne csel $t3,$a3,$t3,ne - cmp $in2infty,#0 // !$in2intfy, remember? + cmp $in2infty,#0 // ~$in2intfy, remember? csel $acc0,$t0,$acc0,ne csel $acc1,$t1,$acc1,ne csel $acc2,$t2,$acc2,ne @@ -1880,4 +1871,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-avx2.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-avx2.pl index 794e56a082f..5071d09ac2e 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-avx2.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-avx2.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2014, Intel Corporation. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use @@ -47,7 +47,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $avx = ($ver>=3.0) + ($ver>=3.01); $addx = ($ver>=3.03); @@ -2077,4 +2077,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-ppc64.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-ppc64.pl index 984c7f20505..2bf54e2aa54 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-ppc64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-ppc64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -2379,4 +2379,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-sparcv9.pl index 4383bea4a7b..042e122718b 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -3057,4 +3057,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86.pl index 0c6fc665bf4..e926d69b020 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1388,7 +1388,7 @@ for ($i=0;$i<7;$i++) { # above map() describes stack layout with 18 temporary # 256-bit vectors on top, then we take extra words for - # !in1infty, !in2infty, result of check for zero and + # ~in1infty, ~in2infty, result of check for zero and # OPENSSL_ia32cap_P copy. [one unused word for padding] &stack_push(8*18+5); if ($sse2) { @@ -1419,7 +1419,7 @@ for ($i=0;$i<7;$i++) { &sub ("eax","ebp"); &or ("ebp","eax"); &sar ("ebp",31); - &mov (&DWP(32*18+4,"esp"),"ebp"); # !in2infty + &mov (&DWP(32*18+4,"esp"),"ebp"); # ~in2infty &lea ("edi",&DWP($in1_x,"esp")); for($i=0;$i<96;$i+=16) { @@ -1441,7 +1441,7 @@ for ($i=0;$i<7;$i++) { &sub ("eax","ebp"); &or ("ebp","eax"); &sar ("ebp",31); - &mov (&DWP(32*18+0,"esp"),"ebp"); # !in1infty + &mov (&DWP(32*18+0,"esp"),"ebp"); # ~in1infty &mov ("eax",&DWP(32*18+12,"esp")); # OPENSSL_ia32cap_P copy &lea ("esi",&DWP($in2_z,"esp")); @@ -1516,23 +1516,19 @@ for ($i=0;$i<7;$i++) { &or ("eax",&DWP(0,"edi")); &or ("eax",&DWP(4,"edi")); &or ("eax",&DWP(8,"edi")); - &or ("eax",&DWP(12,"edi")); + &or ("eax",&DWP(12,"edi")); # ~is_equal(U1,U2) - &data_byte(0x3e); # predict taken - &jnz (&label("add_proceed")); # is_equal(U1,U2)? - - &mov ("eax",&DWP(32*18+0,"esp")); - &and ("eax",&DWP(32*18+4,"esp")); - &mov ("ebx",&DWP(32*18+8,"esp")); - &jz (&label("add_proceed")); # (in1infty || in2infty)? - &test ("ebx","ebx"); - &jz (&label("add_double")); # is_equal(S1,S2)? + &mov ("ebx",&DWP(32*18+0,"esp")); # ~in1infty + ¬ ("ebx"); # -1/0 -> 0/-1 + &or ("eax","ebx"); + &mov ("ebx",&DWP(32*18+4,"esp")); # ~in2infty + ¬ ("ebx"); # -1/0 -> 0/-1 + &or ("eax","ebx"); + &or ("eax",&DWP(32*18+8,"esp")); # ~is_equal(S1,S2) - &mov ("edi",&wparam(0)); - &xor ("eax","eax"); - &mov ("ecx",96/4); - &data_byte(0xfc,0xf3,0xab); # cld; stosd - &jmp (&label("add_done")); + # if (~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + &data_byte(0x3e); # predict taken + &jnz (&label("add_proceed")); &set_label("add_double",16); &mov ("esi",&wparam(1)); @@ -1614,34 +1610,34 @@ for ($i=0;$i<7;$i++) { &lea ("edi",&DWP($res_y,"esp")); &call ("_ecp_nistz256_sub"); # p256_sub(res_y, res_y, S2); - &mov ("ebp",&DWP(32*18+0,"esp")); # !in1infty - &mov ("esi",&DWP(32*18+4,"esp")); # !in2infty + &mov ("ebp",&DWP(32*18+0,"esp")); # ~in1infty + &mov ("esi",&DWP(32*18+4,"esp")); # ~in2infty &mov ("edi",&wparam(0)); &mov ("edx","ebp"); ¬ ("ebp"); - &and ("edx","esi"); - &and ("ebp","esi"); - ¬ ("esi"); + &and ("edx","esi"); # ~in1infty & ~in2infty + &and ("ebp","esi"); # in1infty & ~in2infty + ¬ ("esi"); # in2infty ######################################## # conditional moves for($i=64;$i<96;$i+=4) { - &mov ("eax","edx"); + &mov ("eax","edx"); # ~in1infty & ~in2infty &and ("eax",&DWP($res_x+$i,"esp")); - &mov ("ebx","ebp"); + &mov ("ebx","ebp"); # in1infty & ~in2infty &and ("ebx",&DWP($in2_x+$i,"esp")); - &mov ("ecx","esi"); + &mov ("ecx","esi"); # in2infty &and ("ecx",&DWP($in1_x+$i,"esp")); &or ("eax","ebx"); &or ("eax","ecx"); &mov (&DWP($i,"edi"),"eax"); } for($i=0;$i<64;$i+=4) { - &mov ("eax","edx"); + &mov ("eax","edx"); # ~in1infty & ~in2infty &and ("eax",&DWP($res_x+$i,"esp")); - &mov ("ebx","ebp"); + &mov ("ebx","ebp"); # in1infty & ~in2infty &and ("ebx",&DWP($in2_x+$i,"esp")); - &mov ("ecx","esi"); + &mov ("ecx","esi"); # in2infty &and ("ecx",&DWP($in1_x+$i,"esp")); &or ("eax","ebx"); &or ("eax","ecx"); @@ -1668,7 +1664,7 @@ for ($i=0;$i<7;$i++) { # above map() describes stack layout with 15 temporary # 256-bit vectors on top, then we take extra words for - # !in1infty, !in2infty, and OPENSSL_ia32cap_P copy. + # ~in1infty, ~in2infty, and OPENSSL_ia32cap_P copy. &stack_push(8*15+3); if ($sse2) { &call ("_picup_eax"); @@ -1698,7 +1694,7 @@ for ($i=0;$i<7;$i++) { &sub ("eax","ebp"); &or ("ebp","eax"); &sar ("ebp",31); - &mov (&DWP(32*15+0,"esp"),"ebp"); # !in1infty + &mov (&DWP(32*15+0,"esp"),"ebp"); # ~in1infty &lea ("edi",&DWP($in2_x,"esp")); for($i=0;$i<64;$i+=16) { @@ -1724,7 +1720,7 @@ for ($i=0;$i<7;$i++) { &lea ("ebp",&DWP($in1_z,"esp")); &sar ("ebx",31); &lea ("edi",&DWP($Z1sqr,"esp")); - &mov (&DWP(32*15+4,"esp"),"ebx"); # !in2infty + &mov (&DWP(32*15+4,"esp"),"ebx"); # ~in2infty &call ("_ecp_nistz256_mul_mont"); # p256_sqr_mont(Z1sqr, in1_z); @@ -1823,14 +1819,14 @@ for ($i=0;$i<7;$i++) { &lea ("edi",&DWP($res_y,"esp")); &call ("_ecp_nistz256_sub"); # p256_sub(res_y, res_y, S2); - &mov ("ebp",&DWP(32*15+0,"esp")); # !in1infty - &mov ("esi",&DWP(32*15+4,"esp")); # !in2infty + &mov ("ebp",&DWP(32*15+0,"esp")); # ~in1infty + &mov ("esi",&DWP(32*15+4,"esp")); # ~in2infty &mov ("edi",&wparam(0)); &mov ("edx","ebp"); ¬ ("ebp"); - &and ("edx","esi"); - &and ("ebp","esi"); - ¬ ("esi"); + &and ("edx","esi"); # ~in1infty & ~in2infty + &and ("ebp","esi"); # in1infty & ~in2infty + ¬ ("esi"); # in2infty ######################################## # conditional moves @@ -1848,11 +1844,11 @@ for ($i=0;$i<7;$i++) { &mov (&DWP($i,"edi"),"eax"); } for($i=0;$i<64;$i+=4) { - &mov ("eax","edx"); + &mov ("eax","edx"); # ~in1infty & ~in2infty &and ("eax",&DWP($res_x+$i,"esp")); - &mov ("ebx","ebp"); + &mov ("ebx","ebp"); # in1infty & ~in2infty &and ("ebx",&DWP($in2_x+$i,"esp")); - &mov ("ecx","esi"); + &mov ("ecx","esi"); # in2infty &and ("ecx",&DWP($in1_x+$i,"esp")); &or ("eax","ebx"); &or ("eax","ecx"); @@ -1863,4 +1859,4 @@ for ($i=0;$i<7;$i++) { &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86_64.pl index 10ccc6414a4..de9b194510b 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/ecp_nistz256-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # Copyright (c) 2014, Intel Corporation. All Rights Reserved. # Copyright (c) 2015 CloudFlare, Inc. # @@ -72,7 +72,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $avx = ($ver>=3.0) + ($ver>=3.01); $addx = ($ver>=3.03); @@ -1579,6 +1579,7 @@ $code.=<<___; .type ecp_nistz256_to_mont,\@function,2 .align 32 ecp_nistz256_to_mont: +.cfi_startproc ___ $code.=<<___ if ($addx); mov \$0x80100, %ecx @@ -1587,6 +1588,7 @@ ___ $code.=<<___; lea .LRR(%rip), $b_org jmp .Lmul_mont +.cfi_endproc .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont ################################################################################ @@ -2562,6 +2564,7 @@ $code.=<<___; .type ecp_nistz256_scatter_w5,\@abi-omnipotent .align 32 ecp_nistz256_scatter_w5: +.cfi_startproc lea -3($index,$index,2), $index movdqa 0x00($in_t), %xmm0 shl \$5, $index @@ -2578,6 +2581,7 @@ ecp_nistz256_scatter_w5: movdqa %xmm5, 0x50($val,$index) ret +.cfi_endproc .size ecp_nistz256_scatter_w5,.-ecp_nistz256_scatter_w5 ################################################################################ @@ -2685,6 +2689,7 @@ $code.=<<___; .type ecp_nistz256_scatter_w7,\@abi-omnipotent .align 32 ecp_nistz256_scatter_w7: +.cfi_startproc movdqu 0x00($in_t), %xmm0 shl \$6, $index movdqu 0x10($in_t), %xmm1 @@ -2696,6 +2701,7 @@ ecp_nistz256_scatter_w7: movdqa %xmm3, 0x30($val,$index) ret +.cfi_endproc .size ecp_nistz256_scatter_w7,.-ecp_nistz256_scatter_w7 ################################################################################ @@ -3020,8 +3026,10 @@ $code.=<<___; .type ecp_nistz256_avx2_gather_w7,\@function,3 .align 32 ecp_nistz256_avx2_gather_w7: +.cfi_startproc .byte 0x0f,0x0b # ud2 ret +.cfi_endproc .size ecp_nistz256_avx2_gather_w7,.-ecp_nistz256_avx2_gather_w7 ___ } @@ -3618,28 +3626,18 @@ $code.=<<___; or $acc5, $acc4 # see if result is zero or $acc0, $acc4 + or $acc1, $acc4 # !is_equal(U1, U2) + + movq %xmm2, $acc0 # in1infty | in2infty + movq %xmm3, $acc1 # !is_equal(S1, S2) + + or $acc0, $acc4 or $acc1, $acc4 + # if (!is_equal(U1, U2) | in1infty | in2infty | !is_equal(S1, S2)) .byte 0x3e # predict taken - jnz .Ladd_proceed$x # is_equal(U1,U2)? - movq %xmm2, $acc0 - movq %xmm3, $acc1 - test $acc0, $acc0 - jnz .Ladd_proceed$x # (in1infty || in2infty)? - test $acc1, $acc1 - jz .Ladd_double$x # is_equal(S1,S2)? + jnz .Ladd_proceed$x - movq %xmm0, $r_ptr # restore $r_ptr - pxor %xmm0, %xmm0 - movdqu %xmm0, 0x00($r_ptr) - movdqu %xmm0, 0x10($r_ptr) - movdqu %xmm0, 0x20($r_ptr) - movdqu %xmm0, 0x30($r_ptr) - movdqu %xmm0, 0x40($r_ptr) - movdqu %xmm0, 0x50($r_ptr) - jmp .Ladd_done$x - -.align 32 .Ladd_double$x: movq %xmm1, $a_ptr # restore $a_ptr movq %xmm0, $r_ptr # restore $r_ptr @@ -4738,4 +4736,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-ppc64.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-ppc64.pl index 6e8b36420f5..f4b523bf8a0 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-ppc64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-ppc64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -821,4 +821,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-x86_64.pl index 18dc6af9fae..3d9d1dc1ad0 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ec/asm/x25519-x86_64.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -90,7 +90,7 @@ if (!$addx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $addx = ($1>=12); } -if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9])\.([0-9]+)/) { +if (!$addx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+)\.([0-9]+)/) { my $ver = $2 + $3/100.0; # 3.1->3.01, 3.10->3.10 $addx = ($ver>=3.03); } @@ -488,12 +488,14 @@ $code.=<<___; .type x25519_fe64_eligible,\@abi-omnipotent .align 32 x25519_fe64_eligible: +.cfi_startproc mov OPENSSL_ia32cap_P+8(%rip),%ecx xor %eax,%eax and \$0x80100,%ecx cmp \$0x80100,%ecx cmove %ecx,%eax ret +.cfi_endproc .size x25519_fe64_eligible,.-x25519_fe64_eligible .globl x25519_fe64_mul @@ -722,6 +724,7 @@ x25519_fe64_sqr: .align 32 x25519_fe64_mul121666: .Lfe64_mul121666_body: +.cfi_startproc mov \$121666,%edx mulx 8*0(%rsi),$acc0,%rcx mulx 8*1(%rsi),$acc1,%rax @@ -750,6 +753,7 @@ x25519_fe64_mul121666: .Lfe64_mul121666_epilogue: ret +.cfi_endproc .size x25519_fe64_mul121666,.-x25519_fe64_mul121666 .globl x25519_fe64_add @@ -757,6 +761,7 @@ x25519_fe64_mul121666: .align 32 x25519_fe64_add: .Lfe64_add_body: +.cfi_startproc mov 8*0(%rsi),$acc0 mov 8*1(%rsi),$acc1 mov 8*2(%rsi),$acc2 @@ -785,6 +790,7 @@ x25519_fe64_add: .Lfe64_add_epilogue: ret +.cfi_endproc .size x25519_fe64_add,.-x25519_fe64_add .globl x25519_fe64_sub @@ -792,6 +798,7 @@ x25519_fe64_add: .align 32 x25519_fe64_sub: .Lfe64_sub_body: +.cfi_startproc mov 8*0(%rsi),$acc0 mov 8*1(%rsi),$acc1 mov 8*2(%rsi),$acc2 @@ -820,6 +827,7 @@ x25519_fe64_sub: .Lfe64_sub_epilogue: ret +.cfi_endproc .size x25519_fe64_sub,.-x25519_fe64_sub .globl x25519_fe64_tobytes @@ -827,6 +835,7 @@ x25519_fe64_sub: .align 32 x25519_fe64_tobytes: .Lfe64_to_body: +.cfi_startproc mov 8*0(%rsi),$acc0 mov 8*1(%rsi),$acc1 mov 8*2(%rsi),$acc2 @@ -862,6 +871,7 @@ x25519_fe64_tobytes: .Lfe64_to_epilogue: ret +.cfi_endproc .size x25519_fe64_tobytes,.-x25519_fe64_tobytes ___ } else { @@ -870,8 +880,10 @@ $code.=<<___; .type x25519_fe64_eligible,\@abi-omnipotent .align 32 x25519_fe64_eligible: +.cfi_startproc xor %eax,%eax ret +.cfi_endproc .size x25519_fe64_eligible,.-x25519_fe64_eligible .globl x25519_fe64_mul @@ -887,8 +899,10 @@ x25519_fe64_mul121666: x25519_fe64_add: x25519_fe64_sub: x25519_fe64_tobytes: +.cfi_startproc .byte 0x0f,0x0b # ud2 ret +.cfi_endproc .size x25519_fe64_mul,.-x25519_fe64_mul ___ } @@ -1114,4 +1128,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve25519.c b/crypto/external/bsd/openssl/dist/crypto/ec/curve25519.c index c5d887ec4cd..952da0e6538 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve25519.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve25519.c @@ -8,7 +8,7 @@ */ #include <string.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/sha.h> #if defined(X25519_ASM) && (defined(__x86_64) || defined(__x86_64__) || \ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/arch_intrinsics.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/arch_intrinsics.h index 48081c77170..5f6389863d1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/arch_intrinsics.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/arch_intrinsics.h @@ -10,10 +10,10 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_ARCH_32_ARCH_INTRINSICS_H -# define HEADER_ARCH_32_ARCH_INTRINSICS_H +#ifndef OSSL_CRYPTO_EC_CURVE448_ARCH_32_INTRINSICS_H +# define OSSL_CRYPTO_EC_CURVE448_ARCH_32_INTRINSICS_H -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" # define ARCH_WORD_BITS 32 @@ -24,4 +24,4 @@ static ossl_inline uint64_t widemul(uint32_t a, uint32_t b) return ((uint64_t)a) * b; } -#endif /* HEADER_ARCH_32_ARCH_INTRINSICS_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_ARCH_32_INTRINSICS_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/f_impl.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/f_impl.h index bbde84a0389..e1ddddaee08 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/f_impl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/arch_32/f_impl.h @@ -10,8 +10,8 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_ARCH_32_F_IMPL_H -# define HEADER_ARCH_32_F_IMPL_H +#ifndef OSSL_CRYPTO_EC_CURVE448_ARCH_32_F_IMPL_H +# define OSSL_CRYPTO_EC_CURVE448_ARCH_32_F_IMPL_H # define GF_HEADROOM 2 # define LIMB(x) ((x) & ((1 << 28) - 1)), ((x) >> 28) @@ -57,4 +57,4 @@ void gf_weak_reduce(gf a) a->limb[0] = (a->limb[0] & mask) + tmp; } -#endif /* HEADER_ARCH_32_F_IMPL_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_ARCH_32_F_IMPL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448.c b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448.c index 19bd3857812..12d97f06795 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448.c @@ -15,7 +15,7 @@ #include "point_448.h" #include "ed448.h" -#include "curve448_lcl.h" +#include "curve448_local.h" #define COFACTOR 4 diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_lcl.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_local.h index 2bc3bd84c86..b27770661f8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448_local.h @@ -6,8 +6,8 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CURVE448_LCL_H -# define HEADER_CURVE448_LCL_H +#ifndef OSSL_CRYPTO_EC_CURVE448_LOCAL_H +# define OSSL_CRYPTO_EC_CURVE448_LOCAL_H # include "curve448utils.h" int X448(uint8_t out_shared_key[56], const uint8_t private_key[56], @@ -35,4 +35,4 @@ int ED448ph_verify(const uint8_t hash[64], const uint8_t signature[114], int ED448_public_from_private(uint8_t out_public_key[57], const uint8_t private_key[57]); -#endif /* HEADER_CURVE448_LCL_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448utils.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448utils.h index 9032bb4f730..86c258e745e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448utils.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/curve448utils.h @@ -10,8 +10,8 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_CURVE448UTILS_H -# define HEADER_CURVE448UTILS_H +#ifndef OSSL_CRYPTO_EC_CURVE448UTILS_H +# define OSSL_CRYPTO_EC_CURVE448UTILS_H # include <openssl/e_os2.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/ed448.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/ed448.h index 5fe939e8e19..c1e5c2832f9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/ed448.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/ed448.h @@ -10,8 +10,8 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_ED448_H -# define HEADER_ED448_H +#ifndef OSSL_CRYPTO_EC_CURVE448_ED448_H +# define OSSL_CRYPTO_EC_CURVE448_ED448_H # include "point_448.h" @@ -192,4 +192,4 @@ c448_error_t c448_ed448_convert_private_key_to_x448( uint8_t x[X448_PRIVATE_BYTES], const uint8_t ed[EDDSA_448_PRIVATE_BYTES]); -#endif /* HEADER_ED448_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_ED448_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/eddsa.c b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/eddsa.c index b28f7dff913..82741f54354 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/eddsa.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/eddsa.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2015-2016 Cryptography Research, Inc. * * Licensed under the OpenSSL license (the "License"). You may not use @@ -12,7 +12,7 @@ #include <string.h> #include <openssl/crypto.h> #include <openssl/evp.h> -#include "curve448_lcl.h" +#include "curve448_local.h" #include "word.h" #include "ed448.h" #include "internal/numbers.h" @@ -50,7 +50,12 @@ static c448_error_t hash_init_with_dom(EVP_MD_CTX *hashctx, uint8_t prehashed, const uint8_t *context, size_t context_len) { - const char *dom_s = "SigEd448"; +#ifdef CHARSET_EBCDIC + const char dom_s[] = {0x53, 0x69, 0x67, 0x45, + 0x64, 0x34, 0x34, 0x38, 0x00}; +#else + const char dom_s[] = "SigEd448"; +#endif uint8_t dom[2]; if (context_len > UINT8_MAX) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/field.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/field.h index d96d4c023d4..ccd04482d20 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/field.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/field.h @@ -10,10 +10,10 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_FIELD_H -# define HEADER_FIELD_H +#ifndef OSSL_CRYPTO_EC_CURVE448_FIELD_H +# define OSSL_CRYPTO_EC_CURVE448_FIELD_H -# include "internal/constant_time_locl.h" +# include "internal/constant_time.h" # include <string.h> # include <assert.h> # include "word.h" @@ -165,4 +165,4 @@ static ossl_inline void gf_cond_swap(gf x, gf_s * RESTRICT y, mask_t swap) } } -#endif /* HEADER_FIELD_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_FIELD_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/point_448.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/point_448.h index 399f91b9a1d..93e715fd9c8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/point_448.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/point_448.h @@ -10,8 +10,8 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_POINT_448_H -# define HEADER_POINT_448_H +#ifndef OSSL_CRYPTO_EC_CURVE448_POINT_448_H +# define OSSL_CRYPTO_EC_CURVE448_POINT_448_H # include "curve448utils.h" # include "field.h" @@ -298,4 +298,4 @@ void curve448_scalar_destroy(curve448_scalar_t scalar); /* Overwrite point with zeros. */ void curve448_point_destroy(curve448_point_t point); -#endif /* HEADER_POINT_448_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_POINT_448_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/word.h b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/word.h index a48b9e053a5..237cc9b6313 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/curve448/word.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/curve448/word.h @@ -10,8 +10,8 @@ * Originally written by Mike Hamburg */ -#ifndef HEADER_WORD_H -# define HEADER_WORD_H +#ifndef OSSL_CRYPTO_EC_CURVE448_WORD_H +# define OSSL_CRYPTO_EC_CURVE448_WORD_H # include <string.h> # include <assert.h> @@ -78,4 +78,4 @@ static ossl_inline mask_t bool_to_mask(c448_bool_t m) return ret; } -#endif /* HEADER_WORD_H */ +#endif /* OSSL_CRYPTO_EC_CURVE448_WORD_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec2_oct.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec2_oct.c index ee300518d69..48543265eea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec2_oct.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec2_oct.c @@ -10,7 +10,7 @@ #include <openssl/err.h> -#include "ec_lcl.h" +#include "ec_local.h" #ifndef OPENSSL_NO_EC2M diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec2_smpl.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec2_smpl.c index 898e741fcb9..84e5537a034 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec2_smpl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec2_smpl.c @@ -10,8 +10,8 @@ #include <openssl/err.h> -#include "internal/bn_int.h" -#include "ec_lcl.h" +#include "crypto/bn.h" +#include "ec_local.h" #ifndef OPENSSL_NO_EC2M diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_ameth.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_ameth.c index c086f47ab3c..22103837392 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_ameth.c @@ -14,9 +14,9 @@ #include <openssl/bn.h> #include <openssl/cms.h> #include <openssl/asn1t.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" -#include "ec_lcl.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" +#include "ec_local.h" #ifndef OPENSSL_NO_CMS static int ecdh_cms_decrypt(CMS_RecipientInfo *ri); diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_asn1.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_asn1.c index 1ce1181fc10..006f9a5dea1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_asn1.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,7 +8,7 @@ */ #include <string.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/err.h> #include <openssl/asn1t.h> #include <openssl/objects.h> @@ -446,6 +446,7 @@ ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, unsigned char *buffer = NULL; const EC_POINT *point = NULL; point_conversion_form_t form; + ASN1_INTEGER *orig; if (params == NULL) { if ((ret = ECPARAMETERS_new()) == NULL) { @@ -496,8 +497,9 @@ ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, ECerr(EC_F_EC_GROUP_GET_ECPARAMETERS, ERR_R_EC_LIB); goto err; } - ret->order = BN_to_ASN1_INTEGER(tmp, ret->order); + ret->order = BN_to_ASN1_INTEGER(tmp, orig = ret->order); if (ret->order == NULL) { + ret->order = orig; ECerr(EC_F_EC_GROUP_GET_ECPARAMETERS, ERR_R_ASN1_LIB); goto err; } @@ -505,8 +507,9 @@ ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, /* set the cofactor (optional) */ tmp = EC_GROUP_get0_cofactor(group); if (tmp != NULL) { - ret->cofactor = BN_to_ASN1_INTEGER(tmp, ret->cofactor); + ret->cofactor = BN_to_ASN1_INTEGER(tmp, orig = ret->cofactor); if (ret->cofactor == NULL) { + ret->cofactor = orig; ECerr(EC_F_EC_GROUP_GET_ECPARAMETERS, ERR_R_ASN1_LIB); goto err; } @@ -846,6 +849,20 @@ EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params) * serialized using explicit parameters by default. */ EC_GROUP_set_asn1_flag(ret, OPENSSL_EC_EXPLICIT_CURVE); + + /* + * If the input params do not contain the optional seed field we make + * sure it is not added to the returned group. + * + * The seed field is not really used inside libcrypto anyway, and + * adding it to parsed explicit parameter keys would alter their DER + * encoding output (because of the extra field) which could impact + * applications fingerprinting keys by their DER encoding. + */ + if (params->curve->seed == NULL) { + if (EC_GROUP_set_seed(ret, NULL, 0) != 1) + goto err; + } } ok = 1; @@ -1280,5 +1297,7 @@ int ECDSA_size(const EC_KEY *r) i = i2d_ASN1_INTEGER(&bs, NULL); i += i; /* r and s */ ret = ASN1_object_size(1, i, V_ASN1_SEQUENCE); + if (ret < 0) + return 0; return ret; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_check.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_check.c index eeb06ec1cbe..d0706d2857e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_check.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_check.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/err.h> int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_curve.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_curve.c index 477349d4413..8de486cbd76 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_curve.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_curve.c @@ -9,7 +9,7 @@ */ #include <string.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/err.h> #include <openssl/obj_mac.h> #include <openssl/opensslconf.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_cvt.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_cvt.c index 0ec346c125a..944e317d9d1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_cvt.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_cvt.c @@ -9,7 +9,7 @@ */ #include <openssl/err.h> -#include "ec_lcl.h" +#include "ec_local.h" EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_key.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_key.c index 557cc5b6041..08aaac5d8a6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_key.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_key.c @@ -10,7 +10,7 @@ #include "internal/cryptlib.h" #include <string.h> -#include "ec_lcl.h" +#include "ec_local.h" #include "internal/refcount.h" #include <openssl/err.h> #include <openssl/engine.h> @@ -122,6 +122,7 @@ EC_KEY *EC_KEY_copy(EC_KEY *dest, const EC_KEY *src) } } + /* copy the rest */ dest->enc_flag = src->enc_flag; dest->conv_form = src->conv_form; diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_kmeth.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_kmeth.c index 64a5d20872e..53a4a929520 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_kmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_kmeth.c @@ -11,7 +11,7 @@ #include <openssl/ec.h> #include <openssl/engine.h> #include <openssl/err.h> -#include "ec_lcl.h" +#include "ec_local.h" static const EC_KEY_METHOD openssl_ec_key_method = { diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_lib.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_lib.c index 1289c8608ed..6832383cad5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -13,7 +13,7 @@ #include <openssl/err.h> #include <openssl/opensslv.h> -#include "ec_lcl.h" +#include "ec_local.h" /* functions for EC_GROUP objects */ @@ -1007,14 +1007,14 @@ int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar, size_t i = 0; BN_CTX *new_ctx = NULL; - if ((scalar == NULL) && (num == 0)) { - return EC_POINT_set_to_infinity(group, r); - } - if (!ec_point_is_compat(r, group)) { ECerr(EC_F_EC_POINTS_MUL, EC_R_INCOMPATIBLE_OBJECTS); return 0; } + + if (scalar == NULL && num == 0) + return EC_POINT_set_to_infinity(group, r); + for (i = 0; i < num; i++) { if (!ec_point_is_compat(points[i], group)) { ECerr(EC_F_EC_POINTS_MUL, EC_R_INCOMPATIBLE_OBJECTS); diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_lcl.h b/crypto/external/bsd/openssl/dist/crypto/ec/ec_local.h index fbdb04ea3a0..e656fbd5e77 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_local.h @@ -14,7 +14,7 @@ #include <openssl/ec.h> #include <openssl/bn.h> #include "internal/refcount.h" -#include "internal/ec_int.h" +#include "crypto/ec.h" #if defined(__SUNPRO_C) # if __SUNPRO_C >= 0x520 diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_mult.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_mult.c index 57bdf116f1b..9a1e3974ed9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_mult.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_mult.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -12,8 +12,8 @@ #include <openssl/err.h> #include "internal/cryptlib.h" -#include "internal/bn_int.h" -#include "ec_lcl.h" +#include "crypto/bn.h" +#include "ec_local.h" #include "internal/refcount.h" /* @@ -260,17 +260,10 @@ int ec_scalar_mul_ladder(const EC_GROUP *group, EC_POINT *r, goto err; } - /*- - * Apply coordinate blinding for EC_POINT. - * - * The underlying EC_METHOD can optionally implement this function: - * ec_point_blind_coordinates() returns 0 in case of errors or 1 on - * success or if coordinate blinding is not implemented for this - * group. - */ - if (!ec_point_blind_coordinates(group, p, ctx)) { - ECerr(EC_F_EC_SCALAR_MUL_LADDER, EC_R_POINT_COORDINATES_BLIND_FAILURE); - goto err; + /* ensure input point is in affine coords for ladder step efficiency */ + if (!p->Z_is_one && !EC_POINT_make_affine(group, p, ctx)) { + ECerr(EC_F_EC_SCALAR_MUL_LADDER, ERR_R_EC_LIB); + goto err; } /* Initialize the Montgomery ladder */ @@ -747,6 +740,20 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar, if (r_is_at_infinity) { if (!EC_POINT_copy(r, val_sub[i][digit >> 1])) goto err; + + /*- + * Apply coordinate blinding for EC_POINT. + * + * The underlying EC_METHOD can optionally implement this function: + * ec_point_blind_coordinates() returns 0 in case of errors or 1 on + * success or if coordinate blinding is not implemented for this + * group. + */ + if (!ec_point_blind_coordinates(group, r, ctx)) { + ECerr(EC_F_EC_WNAF_MUL, EC_R_POINT_COORDINATES_BLIND_FAILURE); + goto err; + } + r_is_at_infinity = 0; } else { if (!EC_POINT_add diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_oct.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_oct.c index 522f79e6736..7ddc86b047c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_oct.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_oct.c @@ -13,7 +13,7 @@ #include <openssl/err.h> #include <openssl/opensslv.h> -#include "ec_lcl.h" +#include "ec_local.h" int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, int y_bit, BN_CTX *ctx) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_pmeth.c index 454be16c543..64d2cc93a62 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_pmeth.c @@ -12,9 +12,9 @@ #include <openssl/asn1t.h> #include <openssl/x509.h> #include <openssl/ec.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" /* EC pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ec_print.c b/crypto/external/bsd/openssl/dist/crypto/ec/ec_print.c index 027a51928aa..660fc400fb7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ec_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ec_print.c @@ -9,7 +9,7 @@ #include <openssl/crypto.h> #include <openssl/err.h> -#include "ec_lcl.h" +#include "ec_local.h" BIGNUM *EC_POINT_point2bn(const EC_GROUP *group, const EC_POINT *point, @@ -39,13 +39,13 @@ EC_POINT *EC_POINT_bn2point(const EC_GROUP *group, EC_POINT *ret; if ((buf_len = BN_num_bytes(bn)) == 0) - return NULL; + buf_len = 1; if ((buf = OPENSSL_malloc(buf_len)) == NULL) { ECerr(EC_F_EC_POINT_BN2POINT, ERR_R_MALLOC_FAILURE); return NULL; } - if (!BN_bn2bin(bn, buf)) { + if (!BN_bn2binpad(bn, buf, buf_len)) { OPENSSL_free(buf); return NULL; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_kdf.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_kdf.c index d686f9d897d..96efac62f66 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_kdf.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_kdf.c @@ -10,7 +10,7 @@ #include <string.h> #include <openssl/ec.h> #include <openssl/evp.h> -#include "ec_lcl.h" +#include "ec_local.h" /* Key derivation function from X9.63/SECG */ /* Way more than we will ever need */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_ossl.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_ossl.c index ab51ee7138f..0be00d43da4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_ossl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecdh_ossl.c @@ -17,7 +17,7 @@ #include <openssl/bn.h> #include <openssl/objects.h> #include <openssl/ec.h> -#include "ec_lcl.h" +#include "ec_local.h" int ossl_ecdh_compute_key(unsigned char **psec, size_t *pseclen, const EC_POINT *pub_key, const EC_KEY *ecdh) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_ossl.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_ossl.c index c35ed2dcd0e..1da87bfb5e3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_ossl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_ossl.c @@ -11,8 +11,8 @@ #include <openssl/err.h> #include <openssl/obj_mac.h> #include <openssl/rand.h> -#include "internal/bn_int.h" -#include "ec_lcl.h" +#include "crypto/bn.h" +#include "ec_local.h" int ossl_ecdsa_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, unsigned int *siglen, @@ -309,7 +309,7 @@ int ossl_ecdsa_verify(int type, const unsigned char *dgst, int dgst_len, goto err; ret = ECDSA_do_verify(dgst, dgst_len, s, eckey); err: - OPENSSL_clear_free(der, derlen); + OPENSSL_free(der); ECDSA_SIG_free(s); return ret; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_sign.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_sign.c index aee06e991ba..dc79c8c8e3d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_sign.c @@ -8,7 +8,7 @@ */ #include <openssl/ec.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/err.h> ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_vrf.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_vrf.c index f61a20063e4..ff597bdc143 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_vrf.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecdsa_vrf.c @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,7 +8,7 @@ */ #include <openssl/ec.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/err.h> /*- @@ -23,7 +23,7 @@ int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, if (eckey->meth->verify_sig != NULL) return eckey->meth->verify_sig(dgst, dgst_len, sig, eckey); ECerr(EC_F_ECDSA_DO_VERIFY, EC_R_OPERATION_NOT_SUPPORTED); - return 0; + return -1; } /*- @@ -39,5 +39,5 @@ int ECDSA_verify(int type, const unsigned char *dgst, int dgst_len, return eckey->meth->verify(type, dgst, dgst_len, sigbuf, sig_len, eckey); ECerr(EC_F_ECDSA_VERIFY, EC_R_OPERATION_NOT_SUPPORTED); - return 0; + return -1; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_mont.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_mont.c index 252e66ef379..bdc39d5efb0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_mont.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_mont.c @@ -10,7 +10,7 @@ #include <openssl/err.h> -#include "ec_lcl.h" +#include "ec_local.h" const EC_METHOD *EC_GFp_mont_method(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nist.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nist.c index 5eaa99d8402..9fd01279a89 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nist.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nist.c @@ -12,7 +12,7 @@ #include <openssl/err.h> #include <openssl/obj_mac.h> -#include "ec_lcl.h" +#include "ec_local.h" const EC_METHOD *EC_GFp_nist_method(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp224.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp224.c index fbbdb9d9386..9a9ced8f134 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp224.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp224.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -38,7 +38,7 @@ NON_EMPTY_TRANSLATION_UNIT # include <stdint.h> # include <string.h> # include <openssl/err.h> -# include "ec_lcl.h" +# include "ec_local.h" # if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__==16 /* even with gcc, the typedef won't work for 32-bit platforms */ @@ -907,6 +907,7 @@ static void point_add(felem x3, felem y3, felem z3, felem ftmp, ftmp2, ftmp3, ftmp4, ftmp5, x_out, y_out, z_out; widefelem tmp, tmp2; limb z1_is_zero, z2_is_zero, x_equal, y_equal; + limb points_equal; if (!mixed) { /* ftmp2 = z2^2 */ @@ -963,15 +964,41 @@ static void point_add(felem x3, felem y3, felem z3, felem_reduce(ftmp, tmp); /* - * the formulae are incorrect if the points are equal so we check for - * this and do doubling if this happens + * The formulae are incorrect if the points are equal, in affine coordinates + * (X_1, Y_1) == (X_2, Y_2), so we check for this and do doubling if this + * happens. + * + * We use bitwise operations to avoid potential side-channels introduced by + * the short-circuiting behaviour of boolean operators. */ x_equal = felem_is_zero(ftmp); y_equal = felem_is_zero(ftmp3); + /* + * The special case of either point being the point at infinity (z1 and/or + * z2 are zero), is handled separately later on in this function, so we + * avoid jumping to point_double here in those special cases. + */ z1_is_zero = felem_is_zero(z1); z2_is_zero = felem_is_zero(z2); - /* In affine coordinates, (X_1, Y_1) == (X_2, Y_2) */ - if (x_equal && y_equal && !z1_is_zero && !z2_is_zero) { + + /* + * Compared to `ecp_nistp256.c` and `ecp_nistp521.c`, in this + * specific implementation `felem_is_zero()` returns truth as `0x1` + * (rather than `0xff..ff`). + * + * This implies that `~true` in this implementation becomes + * `0xff..fe` (rather than `0x0`): for this reason, to be used in + * the if expression, we mask out only the last bit in the next + * line. + */ + points_equal = (x_equal & y_equal & (~z1_is_zero) & (~z2_is_zero)) & 1; + + if (points_equal) { + /* + * This is obviously not constant-time but, as mentioned before, this + * case never happens during single point multiplication, so there is no + * timing leak for ECDH or ECDSA signing. + */ point_double(x3, y3, z3, x1, y1, z1); return; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp256.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp256.c index 22ba69aa44b..e23e9d2a0b3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp256.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp256.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,7 +39,7 @@ NON_EMPTY_TRANSLATION_UNIT # include <stdint.h> # include <string.h> # include <openssl/err.h> -# include "ec_lcl.h" +# include "ec_local.h" # if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__==16 /* even with gcc, the typedef won't work for 32-bit platforms */ @@ -74,8 +74,8 @@ static const felem_bytearray nistp256_curve_params[5] = { {0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, /* a = -3 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc}, /* b */ - {0x5a, 0xc6, 0x35, 0xd8, 0xaa, 0x3a, 0x93, 0xe7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc}, + {0x5a, 0xc6, 0x35, 0xd8, 0xaa, 0x3a, 0x93, 0xe7, /* b */ 0xb3, 0xeb, 0xbd, 0x55, 0x76, 0x98, 0x86, 0xbc, 0x65, 0x1d, 0x06, 0xb0, 0xcc, 0x53, 0xb0, 0xf6, 0x3b, 0xce, 0x3c, 0x3e, 0x27, 0xd2, 0x60, 0x4b}, @@ -1241,6 +1241,7 @@ static void point_add(felem x3, felem y3, felem z3, longfelem tmp, tmp2; smallfelem small1, small2, small3, small4, small5; limb x_equal, y_equal, z1_is_zero, z2_is_zero; + limb points_equal; felem_shrink(small3, z1); @@ -1340,7 +1341,26 @@ static void point_add(felem x3, felem y3, felem z3, felem_shrink(small1, ftmp5); y_equal = smallfelem_is_zero(small1); - if (x_equal && y_equal && !z1_is_zero && !z2_is_zero) { + /* + * The formulae are incorrect if the points are equal, in affine coordinates + * (X_1, Y_1) == (X_2, Y_2), so we check for this and do doubling if this + * happens. + * + * We use bitwise operations to avoid potential side-channels introduced by + * the short-circuiting behaviour of boolean operators. + * + * The special case of either point being the point at infinity (z1 and/or + * z2 are zero), is handled separately later on in this function, so we + * avoid jumping to point_double here in those special cases. + */ + points_equal = (x_equal & y_equal & (~z1_is_zero) & (~z2_is_zero)); + + if (points_equal) { + /* + * This is obviously not constant-time but, as mentioned before, this + * case never happens during single point multiplication, so there is no + * timing leak for ECDH or ECDSA signing. + */ point_double(x3, y3, z3, x1, y1, z1); return; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp521.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp521.c index 6340f482793..75eeba85367 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp521.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistp521.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -38,7 +38,7 @@ NON_EMPTY_TRANSLATION_UNIT # include <string.h> # include <openssl/err.h> -# include "ec_lcl.h" +# include "ec_local.h" # if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__==16 /* even with gcc, the typedef won't work for 32-bit platforms */ @@ -1158,6 +1158,7 @@ static void point_add(felem x3, felem y3, felem z3, felem ftmp, ftmp2, ftmp3, ftmp4, ftmp5, ftmp6, x_out, y_out, z_out; largefelem tmp, tmp2; limb x_equal, y_equal, z1_is_zero, z2_is_zero; + limb points_equal; z1_is_zero = felem_is_zero(z1); z2_is_zero = felem_is_zero(z2); @@ -1242,7 +1243,24 @@ static void point_add(felem x3, felem y3, felem z3, felem_scalar64(ftmp5, 2); /* ftmp5[i] < 2^61 */ - if (x_equal && y_equal && !z1_is_zero && !z2_is_zero) { + /* + * The formulae are incorrect if the points are equal, in affine coordinates + * (X_1, Y_1) == (X_2, Y_2), so we check for this and do doubling if this + * happens. + * + * We use bitwise operations to avoid potential side-channels introduced by + * the short-circuiting behaviour of boolean operators. + * + * The special case of either point being the point at infinity (z1 and/or + * z2 are zero), is handled separately later on in this function, so we + * avoid jumping to point_double here in those special cases. + * + * Notice the comment below on the implications of this branching for timing + * leaks and why it is considered practically irrelevant. + */ + points_equal = (x_equal & y_equal & (~z1_is_zero) & (~z2_is_zero)); + + if (points_equal) { /* * This is obviously not constant-time but it will almost-never happen * for ECDH / ECDSA. The case where it can happen is during scalar-mult diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistputil.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistputil.c index f89a2f0aacc..60e1325c340 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistputil.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistputil.c @@ -33,7 +33,7 @@ NON_EMPTY_TRANSLATION_UNIT */ # include <stddef.h> -# include "ec_lcl.h" +# include "ec_local.h" /* * Convert an array of points into affine coordinates. (If the point at diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistz256.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistz256.c index 7ad5eb627de..ba926813886 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistz256.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_nistz256.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2014, Intel Corporation. All Rights Reserved. * Copyright (c) 2015, CloudFlare, Inc. * @@ -21,8 +21,8 @@ #include <string.h> #include "internal/cryptlib.h" -#include "internal/bn_int.h" -#include "ec_lcl.h" +#include "crypto/bn.h" +#include "ec_local.h" #include "internal/refcount.h" #if BN_BITS2 != 64 @@ -358,16 +358,47 @@ static void ecp_nistz256_point_add(P256_POINT *r, ecp_nistz256_sub(H, U2, U1); /* H = U2 - U1 */ /* - * This should not happen during sign/ecdh, so no constant time violation + * The formulae are incorrect if the points are equal so we check for + * this and do doubling if this happens. + * + * Points here are in Jacobian projective coordinates (Xi, Yi, Zi) + * that are bound to the affine coordinates (xi, yi) by the following + * equations: + * - xi = Xi / (Zi)^2 + * - y1 = Yi / (Zi)^3 + * + * For the sake of optimization, the algorithm operates over + * intermediate variables U1, U2 and S1, S2 that are derived from + * the projective coordinates: + * - U1 = X1 * (Z2)^2 ; U2 = X2 * (Z1)^2 + * - S1 = Y1 * (Z2)^3 ; S2 = Y2 * (Z1)^3 + * + * It is easy to prove that is_equal(U1, U2) implies that the affine + * x-coordinates are equal, or either point is at infinity. + * Likewise is_equal(S1, S2) implies that the affine y-coordinates are + * equal, or either point is at infinity. + * + * The special case of either point being the point at infinity (Z1 or Z2 + * is zero), is handled separately later on in this function, so we avoid + * jumping to point_double here in those special cases. + * + * When both points are inverse of each other, we know that the affine + * x-coordinates are equal, and the y-coordinates have different sign. + * Therefore since U1 = U2, we know H = 0, and therefore Z3 = H*Z1*Z2 + * will equal 0, thus the result is infinity, if we simply let this + * function continue normally. + * + * We use bitwise operations to avoid potential side-channels introduced by + * the short-circuiting behaviour of boolean operators. */ - if (is_equal(U1, U2) && !in1infty && !in2infty) { - if (is_equal(S1, S2)) { - ecp_nistz256_point_double(r, a); - return; - } else { - memset(r, 0, sizeof(*r)); - return; - } + if (is_equal(U1, U2) & ~in1infty & ~in2infty & is_equal(S1, S2)) { + /* + * This is obviously not constant-time but it should never happen during + * single point multiplication, so there is no timing leak for ECDH or + * ECDSA signing. + */ + ecp_nistz256_point_double(r, a); + return; } ecp_nistz256_sqr_mont(Rsqr, R); /* R^2 */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_oct.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_oct.c index 7ade1b3d217..9460763256f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_oct.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_oct.c @@ -11,7 +11,7 @@ #include <openssl/err.h> #include <openssl/symhacks.h> -#include "ec_lcl.h" +#include "ec_local.h" int ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_smpl.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_smpl.c index e6e4c9d2cbb..b3110ec89db 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecp_smpl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecp_smpl.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -11,7 +11,7 @@ #include <openssl/err.h> #include <openssl/symhacks.h> -#include "ec_lcl.h" +#include "ec_local.h" const EC_METHOD *EC_GFp_simple_method(void) { @@ -1372,6 +1372,7 @@ int ec_GFp_simple_field_sqr(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, * Computes the multiplicative inverse of a in GF(p), storing the result in r. * If a is zero (or equivalent), you'll get a EC_R_CANNOT_INVERT error. * Since we don't have a Mont structure here, SCA hardening is with blinding. + * NB: "a" must be in _decoded_ form. (i.e. field_decode must precede.) */ int ec_GFp_simple_field_inv(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) @@ -1431,112 +1432,133 @@ int ec_GFp_simple_blind_coordinates(const EC_GROUP *group, EC_POINT *p, temp = BN_CTX_get(ctx); if (temp == NULL) { ECerr(EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES, ERR_R_MALLOC_FAILURE); - goto err; + goto end; } - /* make sure lambda is not zero */ + /*- + * Make sure lambda is not zero. + * If the RNG fails, we cannot blind but nevertheless want + * code to continue smoothly and not clobber the error stack. + */ do { - if (!BN_priv_rand_range(lambda, group->field)) { - ECerr(EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES, ERR_R_BN_LIB); - goto err; + ERR_set_mark(); + ret = BN_priv_rand_range(lambda, group->field); + ERR_pop_to_mark(); + if (ret == 0) { + ret = 1; + goto end; } } while (BN_is_zero(lambda)); /* if field_encode defined convert between representations */ - if (group->meth->field_encode != NULL - && !group->meth->field_encode(group, lambda, lambda, ctx)) - goto err; - if (!group->meth->field_mul(group, p->Z, p->Z, lambda, ctx)) - goto err; - if (!group->meth->field_sqr(group, temp, lambda, ctx)) - goto err; - if (!group->meth->field_mul(group, p->X, p->X, temp, ctx)) - goto err; - if (!group->meth->field_mul(group, temp, temp, lambda, ctx)) - goto err; - if (!group->meth->field_mul(group, p->Y, p->Y, temp, ctx)) - goto err; - p->Z_is_one = 0; + if ((group->meth->field_encode != NULL + && !group->meth->field_encode(group, lambda, lambda, ctx)) + || !group->meth->field_mul(group, p->Z, p->Z, lambda, ctx) + || !group->meth->field_sqr(group, temp, lambda, ctx) + || !group->meth->field_mul(group, p->X, p->X, temp, ctx) + || !group->meth->field_mul(group, temp, temp, lambda, ctx) + || !group->meth->field_mul(group, p->Y, p->Y, temp, ctx)) + goto end; + p->Z_is_one = 0; ret = 1; - err: + end: BN_CTX_end(ctx); return ret; } /*- - * Set s := p, r := 2p. + * Input: + * - p: affine coordinates + * + * Output: + * - s := p, r := 2p: blinded projective (homogeneous) coordinates * * For doubling we use Formula 3 from Izu-Takagi "A fast parallel elliptic curve - * multiplication resistant against side channel attacks" appendix, as described - * at + * multiplication resistant against side channel attacks" appendix, described at * https://hyperelliptic.org/EFD/g1p/auto-shortw-xz.html#doubling-dbl-2002-it-2 + * simplified for Z1=1. * - * The input point p will be in randomized Jacobian projective coords: - * x = X/Z**2, y=Y/Z**3 - * - * The output points p, s, and r are converted to standard (homogeneous) - * projective coords: - * x = X/Z, y=Y/Z + * Blinding uses the equivalence relation (\lambda X, \lambda Y, \lambda Z) + * for any non-zero \lambda that holds for projective (homogeneous) coords. */ int ec_GFp_simple_ladder_pre(const EC_GROUP *group, EC_POINT *r, EC_POINT *s, EC_POINT *p, BN_CTX *ctx) { - BIGNUM *t1, *t2, *t3, *t4, *t5, *t6 = NULL; + BIGNUM *t1, *t2, *t3, *t4, *t5 = NULL; - t1 = r->Z; - t2 = r->Y; + t1 = s->Z; + t2 = r->Z; t3 = s->X; t4 = r->X; t5 = s->Y; - t6 = s->Z; - - /* convert p: (X,Y,Z) -> (XZ,Y,Z**3) */ - if (!group->meth->field_mul(group, p->X, p->X, p->Z, ctx) - || !group->meth->field_sqr(group, t1, p->Z, ctx) - || !group->meth->field_mul(group, p->Z, p->Z, t1, ctx) - /* r := 2p */ - || !group->meth->field_sqr(group, t2, p->X, ctx) - || !group->meth->field_sqr(group, t3, p->Z, ctx) - || !group->meth->field_mul(group, t4, t3, group->a, ctx) - || !BN_mod_sub_quick(t5, t2, t4, group->field) - || !BN_mod_add_quick(t2, t2, t4, group->field) - || !group->meth->field_sqr(group, t5, t5, ctx) - || !group->meth->field_mul(group, t6, t3, group->b, ctx) - || !group->meth->field_mul(group, t1, p->X, p->Z, ctx) - || !group->meth->field_mul(group, t4, t1, t6, ctx) - || !BN_mod_lshift_quick(t4, t4, 3, group->field) + + if (!p->Z_is_one /* r := 2p */ + || !group->meth->field_sqr(group, t3, p->X, ctx) + || !BN_mod_sub_quick(t4, t3, group->a, group->field) + || !group->meth->field_sqr(group, t4, t4, ctx) + || !group->meth->field_mul(group, t5, p->X, group->b, ctx) + || !BN_mod_lshift_quick(t5, t5, 3, group->field) /* r->X coord output */ - || !BN_mod_sub_quick(r->X, t5, t4, group->field) - || !group->meth->field_mul(group, t1, t1, t2, ctx) - || !group->meth->field_mul(group, t2, t3, t6, ctx) - || !BN_mod_add_quick(t1, t1, t2, group->field) + || !BN_mod_sub_quick(r->X, t4, t5, group->field) + || !BN_mod_add_quick(t1, t3, group->a, group->field) + || !group->meth->field_mul(group, t2, p->X, t1, ctx) + || !BN_mod_add_quick(t2, group->b, t2, group->field) /* r->Z coord output */ - || !BN_mod_lshift_quick(r->Z, t1, 2, group->field) - || !EC_POINT_copy(s, p)) + || !BN_mod_lshift_quick(r->Z, t2, 2, group->field)) + return 0; + + /* make sure lambda (r->Y here for storage) is not zero */ + do { + if (!BN_priv_rand_range(r->Y, group->field)) + return 0; + } while (BN_is_zero(r->Y)); + + /* make sure lambda (s->Z here for storage) is not zero */ + do { + if (!BN_priv_rand_range(s->Z, group->field)) + return 0; + } while (BN_is_zero(s->Z)); + + /* if field_encode defined convert between representations */ + if (group->meth->field_encode != NULL + && (!group->meth->field_encode(group, r->Y, r->Y, ctx) + || !group->meth->field_encode(group, s->Z, s->Z, ctx))) + return 0; + + /* blind r and s independently */ + if (!group->meth->field_mul(group, r->Z, r->Z, r->Y, ctx) + || !group->meth->field_mul(group, r->X, r->X, r->Y, ctx) + || !group->meth->field_mul(group, s->X, p->X, s->Z, ctx)) /* s := p */ return 0; r->Z_is_one = 0; s->Z_is_one = 0; - p->Z_is_one = 0; return 1; } /*- - * Differential addition-and-doubling using Eq. (9) and (10) from Izu-Takagi + * Input: + * - s, r: projective (homogeneous) coordinates + * - p: affine coordinates + * + * Output: + * - s := r + s, r := 2r: projective (homogeneous) coordinates + * + * Differential addition-and-doubling using Eq. (9) and (10) from Izu-Takagi * "A fast parallel elliptic curve multiplication resistant against side channel * attacks", as described at - * https://hyperelliptic.org/EFD/g1p/auto-shortw-xz.html#ladder-ladd-2002-it-4 + * https://hyperelliptic.org/EFD/g1p/auto-shortw-xz.html#ladder-mladd-2002-it-4 */ int ec_GFp_simple_ladder_step(const EC_GROUP *group, EC_POINT *r, EC_POINT *s, EC_POINT *p, BN_CTX *ctx) { int ret = 0; - BIGNUM *t0, *t1, *t2, *t3, *t4, *t5, *t6, *t7 = NULL; + BIGNUM *t0, *t1, *t2, *t3, *t4, *t5, *t6 = NULL; BN_CTX_start(ctx); t0 = BN_CTX_get(ctx); @@ -1546,50 +1568,47 @@ int ec_GFp_simple_ladder_step(const EC_GROUP *group, t4 = BN_CTX_get(ctx); t5 = BN_CTX_get(ctx); t6 = BN_CTX_get(ctx); - t7 = BN_CTX_get(ctx); - if (t7 == NULL - || !group->meth->field_mul(group, t0, r->X, s->X, ctx) - || !group->meth->field_mul(group, t1, r->Z, s->Z, ctx) - || !group->meth->field_mul(group, t2, r->X, s->Z, ctx) + if (t6 == NULL + || !group->meth->field_mul(group, t6, r->X, s->X, ctx) + || !group->meth->field_mul(group, t0, r->Z, s->Z, ctx) + || !group->meth->field_mul(group, t4, r->X, s->Z, ctx) || !group->meth->field_mul(group, t3, r->Z, s->X, ctx) - || !group->meth->field_mul(group, t4, group->a, t1, ctx) - || !BN_mod_add_quick(t0, t0, t4, group->field) - || !BN_mod_add_quick(t4, t3, t2, group->field) - || !group->meth->field_mul(group, t0, t4, t0, ctx) - || !group->meth->field_sqr(group, t1, t1, ctx) - || !BN_mod_lshift_quick(t7, group->b, 2, group->field) - || !group->meth->field_mul(group, t1, t7, t1, ctx) - || !BN_mod_lshift1_quick(t0, t0, group->field) - || !BN_mod_add_quick(t0, t1, t0, group->field) - || !BN_mod_sub_quick(t1, t2, t3, group->field) - || !group->meth->field_sqr(group, t1, t1, ctx) - || !group->meth->field_mul(group, t3, t1, p->X, ctx) - || !group->meth->field_mul(group, t0, p->Z, t0, ctx) - /* s->X coord output */ - || !BN_mod_sub_quick(s->X, t0, t3, group->field) - /* s->Z coord output */ - || !group->meth->field_mul(group, s->Z, p->Z, t1, ctx) - || !group->meth->field_sqr(group, t3, r->X, ctx) - || !group->meth->field_sqr(group, t2, r->Z, ctx) - || !group->meth->field_mul(group, t4, t2, group->a, ctx) - || !BN_mod_add_quick(t5, r->X, r->Z, group->field) - || !group->meth->field_sqr(group, t5, t5, ctx) - || !BN_mod_sub_quick(t5, t5, t3, group->field) - || !BN_mod_sub_quick(t5, t5, t2, group->field) - || !BN_mod_sub_quick(t6, t3, t4, group->field) - || !group->meth->field_sqr(group, t6, t6, ctx) - || !group->meth->field_mul(group, t0, t2, t5, ctx) - || !group->meth->field_mul(group, t0, t7, t0, ctx) - /* r->X coord output */ - || !BN_mod_sub_quick(r->X, t6, t0, group->field) + || !group->meth->field_mul(group, t5, group->a, t0, ctx) + || !BN_mod_add_quick(t5, t6, t5, group->field) || !BN_mod_add_quick(t6, t3, t4, group->field) - || !group->meth->field_sqr(group, t3, t2, ctx) - || !group->meth->field_mul(group, t7, t3, t7, ctx) - || !group->meth->field_mul(group, t5, t5, t6, ctx) + || !group->meth->field_mul(group, t5, t6, t5, ctx) + || !group->meth->field_sqr(group, t0, t0, ctx) + || !BN_mod_lshift_quick(t2, group->b, 2, group->field) + || !group->meth->field_mul(group, t0, t2, t0, ctx) || !BN_mod_lshift1_quick(t5, t5, group->field) + || !BN_mod_sub_quick(t3, t4, t3, group->field) + /* s->Z coord output */ + || !group->meth->field_sqr(group, s->Z, t3, ctx) + || !group->meth->field_mul(group, t4, s->Z, p->X, ctx) + || !BN_mod_add_quick(t0, t0, t5, group->field) + /* s->X coord output */ + || !BN_mod_sub_quick(s->X, t0, t4, group->field) + || !group->meth->field_sqr(group, t4, r->X, ctx) + || !group->meth->field_sqr(group, t5, r->Z, ctx) + || !group->meth->field_mul(group, t6, t5, group->a, ctx) + || !BN_mod_add_quick(t1, r->X, r->Z, group->field) + || !group->meth->field_sqr(group, t1, t1, ctx) + || !BN_mod_sub_quick(t1, t1, t4, group->field) + || !BN_mod_sub_quick(t1, t1, t5, group->field) + || !BN_mod_sub_quick(t3, t4, t6, group->field) + || !group->meth->field_sqr(group, t3, t3, ctx) + || !group->meth->field_mul(group, t0, t5, t1, ctx) + || !group->meth->field_mul(group, t0, t2, t0, ctx) + /* r->X coord output */ + || !BN_mod_sub_quick(r->X, t3, t0, group->field) + || !BN_mod_add_quick(t3, t4, t6, group->field) + || !group->meth->field_sqr(group, t4, t5, ctx) + || !group->meth->field_mul(group, t4, t4, t2, ctx) + || !group->meth->field_mul(group, t1, t1, t3, ctx) + || !BN_mod_lshift1_quick(t1, t1, group->field) /* r->Z coord output */ - || !BN_mod_add_quick(r->Z, t7, t5, group->field)) + || !BN_mod_add_quick(r->Z, t4, t1, group->field)) goto err; ret = 1; @@ -1600,17 +1619,23 @@ int ec_GFp_simple_ladder_step(const EC_GROUP *group, } /*- + * Input: + * - s, r: projective (homogeneous) coordinates + * - p: affine coordinates + * + * Output: + * - r := (x,y): affine coordinates + * * Recovers the y-coordinate of r using Eq. (8) from Brier-Joye, "Weierstrass - * Elliptic Curves and Side-Channel Attacks", modified to work in projective - * coordinates and return r in Jacobian projective coordinates. + * Elliptic Curves and Side-Channel Attacks", modified to work in mixed + * projective coords, i.e. p is affine and (r,s) in projective (homogeneous) + * coords, and return r in affine coordinates. * - * X4 = two*Y1*X2*Z3*Z2*Z1; - * Y4 = two*b*Z3*SQR(Z2*Z1) + Z3*(a*Z2*Z1+X1*X2)*(X1*Z2+X2*Z1) - X3*SQR(X1*Z2-X2*Z1); - * Z4 = two*Y1*Z3*SQR(Z2)*Z1; + * X4 = two*Y1*X2*Z3*Z2; + * Y4 = two*b*Z3*SQR(Z2) + Z3*(a*Z2+X1*X2)*(X1*Z2+X2) - X3*SQR(X1*Z2-X2); + * Z4 = two*Y1*Z3*SQR(Z2); * * Z4 != 0 because: - * - Z1==0 implies p is at infinity, which would have caused an early exit in - * the caller; * - Z2==0 implies r is at infinity (handled by the BN_is_zero(r->Z) branch); * - Z3==0 implies s is at infinity (handled by the BN_is_zero(s->Z) branch); * - Y1==0 implies p has order 2, so either r or s are infinity and handled by @@ -1627,11 +1652,7 @@ int ec_GFp_simple_ladder_post(const EC_GROUP *group, return EC_POINT_set_to_infinity(group, r); if (BN_is_zero(s->Z)) { - /* (X,Y,Z) -> (XZ,YZ**2,Z) */ - if (!group->meth->field_mul(group, r->X, p->X, p->Z, ctx) - || !group->meth->field_sqr(group, r->Z, p->Z, ctx) - || !group->meth->field_mul(group, r->Y, p->Y, r->Z, ctx) - || !BN_copy(r->Z, p->Z) + if (!EC_POINT_copy(r, p) || !EC_POINT_invert(group, r, ctx)) return 0; return 1; @@ -1647,38 +1668,46 @@ int ec_GFp_simple_ladder_post(const EC_GROUP *group, t6 = BN_CTX_get(ctx); if (t6 == NULL - || !BN_mod_lshift1_quick(t0, p->Y, group->field) - || !group->meth->field_mul(group, t1, r->X, p->Z, ctx) - || !group->meth->field_mul(group, t2, r->Z, s->Z, ctx) - || !group->meth->field_mul(group, t2, t1, t2, ctx) - || !group->meth->field_mul(group, t3, t2, t0, ctx) - || !group->meth->field_mul(group, t2, r->Z, p->Z, ctx) - || !group->meth->field_sqr(group, t4, t2, ctx) - || !BN_mod_lshift1_quick(t5, group->b, group->field) - || !group->meth->field_mul(group, t4, t4, t5, ctx) - || !group->meth->field_mul(group, t6, t2, group->a, ctx) - || !group->meth->field_mul(group, t5, r->X, p->X, ctx) - || !BN_mod_add_quick(t5, t6, t5, group->field) - || !group->meth->field_mul(group, t6, r->Z, p->X, ctx) - || !BN_mod_add_quick(t2, t6, t1, group->field) - || !group->meth->field_mul(group, t5, t5, t2, ctx) - || !BN_mod_sub_quick(t6, t6, t1, group->field) - || !group->meth->field_sqr(group, t6, t6, ctx) - || !group->meth->field_mul(group, t6, t6, s->X, ctx) - || !BN_mod_add_quick(t4, t5, t4, group->field) - || !group->meth->field_mul(group, t4, t4, s->Z, ctx) - || !BN_mod_sub_quick(t4, t4, t6, group->field) - || !group->meth->field_sqr(group, t5, r->Z, ctx) - || !group->meth->field_mul(group, r->Z, p->Z, s->Z, ctx) - || !group->meth->field_mul(group, r->Z, t5, r->Z, ctx) - || !group->meth->field_mul(group, r->Z, r->Z, t0, ctx) - /* t3 := X, t4 := Y */ - /* (X,Y,Z) -> (XZ,YZ**2,Z) */ - || !group->meth->field_mul(group, r->X, t3, r->Z, ctx) + || !BN_mod_lshift1_quick(t4, p->Y, group->field) + || !group->meth->field_mul(group, t6, r->X, t4, ctx) + || !group->meth->field_mul(group, t6, s->Z, t6, ctx) + || !group->meth->field_mul(group, t5, r->Z, t6, ctx) + || !BN_mod_lshift1_quick(t1, group->b, group->field) + || !group->meth->field_mul(group, t1, s->Z, t1, ctx) || !group->meth->field_sqr(group, t3, r->Z, ctx) - || !group->meth->field_mul(group, r->Y, t4, t3, ctx)) + || !group->meth->field_mul(group, t2, t3, t1, ctx) + || !group->meth->field_mul(group, t6, r->Z, group->a, ctx) + || !group->meth->field_mul(group, t1, p->X, r->X, ctx) + || !BN_mod_add_quick(t1, t1, t6, group->field) + || !group->meth->field_mul(group, t1, s->Z, t1, ctx) + || !group->meth->field_mul(group, t0, p->X, r->Z, ctx) + || !BN_mod_add_quick(t6, r->X, t0, group->field) + || !group->meth->field_mul(group, t6, t6, t1, ctx) + || !BN_mod_add_quick(t6, t6, t2, group->field) + || !BN_mod_sub_quick(t0, t0, r->X, group->field) + || !group->meth->field_sqr(group, t0, t0, ctx) + || !group->meth->field_mul(group, t0, t0, s->X, ctx) + || !BN_mod_sub_quick(t0, t6, t0, group->field) + || !group->meth->field_mul(group, t1, s->Z, t4, ctx) + || !group->meth->field_mul(group, t1, t3, t1, ctx) + || (group->meth->field_decode != NULL + && !group->meth->field_decode(group, t1, t1, ctx)) + || !group->meth->field_inv(group, t1, t1, ctx) + || (group->meth->field_encode != NULL + && !group->meth->field_encode(group, t1, t1, ctx)) + || !group->meth->field_mul(group, r->X, t5, t1, ctx) + || !group->meth->field_mul(group, r->Y, t0, t1, ctx)) goto err; + if (group->meth->field_set_to_one != NULL) { + if (!group->meth->field_set_to_one(group, r->Z, ctx)) + goto err; + } else { + if (!BN_one(r->Z)) + goto err; + } + + r->Z_is_one = 1; ret = 1; err: diff --git a/crypto/external/bsd/openssl/dist/crypto/ec/ecx_meth.c b/crypto/external/bsd/openssl/dist/crypto/ec/ecx_meth.c index c87419b5db3..9dc5259e4af 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ec/ecx_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/ec/ecx_meth.c @@ -12,10 +12,10 @@ #include <openssl/x509.h> #include <openssl/ec.h> #include <openssl/rand.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" -#include "ec_lcl.h" -#include "curve448/curve448_lcl.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" +#include "ec_local.h" +#include "curve448/curve448_local.h" #define X25519_BITS 253 #define X25519_SECURITY_BITS 128 @@ -191,7 +191,7 @@ static int ecx_priv_decode(EVP_PKEY *pkey, const PKCS8_PRIV_KEY_INFO *p8) } rv = ecx_key_op(pkey, pkey->ameth->pkey_id, palg, p, plen, KEY_OP_PRIVATE); - ASN1_OCTET_STRING_free(oct); + ASN1_STRING_clear_free(oct); return rv; } diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/README b/crypto/external/bsd/openssl/dist/crypto/engine/README index c7a5696ca14..0f8a8fbde41 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/README +++ b/crypto/external/bsd/openssl/dist/crypto/engine/README @@ -9,7 +9,7 @@ for masochists" document *and* a rather extensive commit log message. (I'd get lynched for sticking all this in CHANGES or the commit mails :-). ENGINE_TABLE underlies this restructuring, as described in the internal header -"eng_int.h", implemented in eng_table.c, and used in each of the "class" files; +"eng_local.h", implemented in eng_table.c, and used in each of the "class" files; tb_rsa.c, tb_dsa.c, etc. However, "EVP_CIPHER" underlies the motivation and design of ENGINE_TABLE so diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_all.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_all.c index af306ccffc1..b675ed7892e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_all.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_all.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "eng_int.h" +#include "eng_local.h" void ENGINE_load_builtin_engines(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_cnf.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_cnf.c index 6f0a066d06d..df00df6acd6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_cnf.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_cnf.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" #include <openssl/conf.h> /* #define ENGINE_CONF_DEBUG */ diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_ctrl.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_ctrl.c index 3bc4aab16fe..e65e78447b4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_ctrl.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_ctrl.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" /* * When querying a ENGINE-specific control command's 'description', this diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_devcrypto.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_devcrypto.c index ca10acb1de3..49e9ce1af33 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_devcrypto.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_devcrypto.c @@ -22,7 +22,7 @@ #include <openssl/objects.h> #include <crypto/cryptodev.h> -#include "internal/engine.h" +#include "crypto/engine.h" /* #define ENGINE_DEVCRYPTO_DEBUG */ @@ -761,7 +761,7 @@ void engine_load_devcrypto_int() if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) { #ifndef ENGINE_DEVCRYPTO_DEBUG - if (errno != ENOENT && errno != ENXIO) + if (errno != ENOENT) #endif fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno)); return; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_dyn.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_dyn.c index 843226c077d..06e677290a7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_dyn.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_dyn.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" #include "internal/dso.h" #include <openssl/crypto.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_fat.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_fat.c index 591fddc8e4f..fe231a65f65 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_fat.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_fat.c @@ -8,7 +8,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" #include <openssl/conf.h> int ENGINE_set_default(ENGINE *e, unsigned int flags) diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_init.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_init.c index 7c235fc472a..6c9063f8f68 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_init.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_init.c @@ -8,7 +8,7 @@ */ #include "e_os.h" -#include "eng_int.h" +#include "eng_local.h" /* * Initialise a engine type for use (or up its functional reference count if diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_lib.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_lib.c index d7f2026fac5..b851ff69575 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_lib.c @@ -8,7 +8,7 @@ */ #include "e_os.h" -#include "eng_int.h" +#include "eng_local.h" #include <openssl/rand.h> #include "internal/refcount.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_list.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_list.c index 45c339c5415..1352fb7c961 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_list.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_list.c @@ -8,7 +8,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" /* * The linked-list of pointers to engine types. engine_list_head incorporates diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_int.h b/crypto/external/bsd/openssl/dist/crypto/engine/eng_local.h index b95483341e2..8ef7172b9f4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_int.h +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_local.h @@ -8,11 +8,11 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_ENGINE_INT_H -# define HEADER_ENGINE_INT_H +#ifndef OSSL_CRYPTO_ENGINE_ENG_LOCAL_H +# define OSSL_CRYPTO_ENGINE_ENG_LOCAL_H # include "internal/cryptlib.h" -# include "internal/engine.h" +# include "crypto/engine.h" # include "internal/thread_once.h" # include "internal/refcount.h" @@ -168,4 +168,4 @@ typedef struct st_engine_pile ENGINE_PILE; DEFINE_LHASH_OF(ENGINE_PILE); -#endif /* HEADER_ENGINE_INT_H */ +#endif /* OSSL_CRYPTO_ENGINE_ENG_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_openssl.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_openssl.c index d9b3067a132..25631fb879e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_openssl.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_openssl.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -11,7 +11,7 @@ #include <stdio.h> #include <openssl/crypto.h> #include "internal/cryptlib.h" -#include "internal/engine.h" +#include "crypto/engine.h" #include <openssl/pem.h> #include <openssl/evp.h> #include <openssl/rand.h> @@ -167,7 +167,7 @@ static int bind_fn(ENGINE *e, const char *id) } IMPLEMENT_DYNAMIC_CHECK_FN() - IMPLEMENT_DYNAMIC_BIND_FN(bind_fn) +IMPLEMENT_DYNAMIC_BIND_FN(bind_fn) #endif /* ENGINE_DYNAMIC_SUPPORT */ #ifdef TEST_ENG_OPENSSL_RC4 /*- diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_pkey.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_pkey.c index 305a648feb6..e813bc6db0e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_pkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_pkey.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" /* Basic get/set stuff */ diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_rdrand.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_rdrand.c index 261e5debbfd..9dceb167109 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_rdrand.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_rdrand.c @@ -11,7 +11,7 @@ #include <stdio.h> #include <string.h> -#include "internal/engine.h" +#include "crypto/engine.h" #include <openssl/rand.h> #include <openssl/err.h> #include <openssl/crypto.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/eng_table.c b/crypto/external/bsd/openssl/dist/crypto/engine/eng_table.c index ac4b02fc12a..72f393dbe14 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/eng_table.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/eng_table.c @@ -10,7 +10,7 @@ #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/lhash.h> -#include "eng_int.h" +#include "eng_local.h" /* The type of the items in the table */ struct st_engine_pile { @@ -26,7 +26,7 @@ struct st_engine_pile { int uptodate; }; -/* The type exposed in eng_int.h */ +/* The type exposed in eng_local.h */ struct st_engine_table { LHASH_OF(ENGINE_PILE) piles; }; /* ENGINE_TABLE */ @@ -76,7 +76,7 @@ static int int_table_check(ENGINE_TABLE **t, int create) } /* - * Privately exposed (via eng_int.h) functions for adding and/or removing + * Privately exposed (via eng_local.h) functions for adding and/or removing * ENGINEs from the implementation table */ int engine_table_register(ENGINE_TABLE **table, ENGINE_CLEANUP_CB *cleanup, diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_asnmth.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_asnmth.c index 4bcc76136a1..72850b9398e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_asnmth.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_asnmth.c @@ -8,9 +8,9 @@ */ #include "e_os.h" -#include "eng_int.h" +#include "eng_local.h" #include <openssl/evp.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" /* * If this symbol is defined then ENGINE_get_pkey_asn1_meth_engine(), the @@ -147,7 +147,8 @@ const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, nidcount = e->pkey_asn1_meths(e, NULL, &nids, 0); for (i = 0; i < nidcount; i++) { e->pkey_asn1_meths(e, &ameth, NULL, nids[i]); - if (((int)strlen(ameth->pem_str) == len) + if (ameth != NULL + && ((int)strlen(ameth->pem_str) == len) && strncasecmp(ameth->pem_str, str, len) == 0) return ameth; } diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_cipher.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_cipher.c index faa967c475f..236da346cd4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_cipher.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_cipher.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *cipher_table = NULL; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_dh.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_dh.c index 785119f65af..a13a1395008 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_dh.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_dh.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *dh_table = NULL; static const int dummy_nid = 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_digest.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_digest.c index d644b1b0a82..a6e6337a01d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_digest.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_digest.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *digest_table = NULL; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_dsa.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_dsa.c index 65b6ea8d3a0..2c77f0f3e15 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_dsa.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_dsa.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *dsa_table = NULL; static const int dummy_nid = 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_eckey.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_eckey.c index 1e507368541..907d55ae8c4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_eckey.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_eckey.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *dh_table = NULL; static const int dummy_nid = 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_pkmeth.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_pkmeth.c index 03cd1e69dd6..c5c001c5cbe 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_pkmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_pkmeth.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" #include <openssl/evp.h> static ENGINE_TABLE *pkey_meth_table = NULL; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_rand.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_rand.c index 98a98073cdd..92f61c5a884 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_rand.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_rand.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *rand_table = NULL; static const int dummy_nid = 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/engine/tb_rsa.c b/crypto/external/bsd/openssl/dist/crypto/engine/tb_rsa.c index d8d2e34f848..43e865e6d6d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/engine/tb_rsa.c +++ b/crypto/external/bsd/openssl/dist/crypto/engine/tb_rsa.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "eng_int.h" +#include "eng_local.h" static ENGINE_TABLE *rsa_table = NULL; static const int dummy_nid = 1; diff --git a/crypto/external/bsd/openssl/dist/crypto/err/err.c b/crypto/external/bsd/openssl/dist/crypto/err/err.c index 3a58ccb9588..1372d52f80e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/err/err.c +++ b/crypto/external/bsd/openssl/dist/crypto/err/err.c @@ -10,17 +10,17 @@ #include <stdio.h> #include <stdarg.h> #include <string.h> -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include "internal/err.h" -#include "internal/err_int.h" +#include "crypto/err.h" #include <openssl/err.h> #include <openssl/crypto.h> #include <openssl/buffer.h> #include <openssl/bio.h> #include <openssl/opensslconf.h> #include "internal/thread_once.h" -#include "internal/ctype.h" -#include "internal/constant_time_locl.h" +#include "crypto/ctype.h" +#include "internal/constant_time.h" #include "e_os.h" static int err_load_strings(const ERR_STRING_DATA *str); diff --git a/crypto/external/bsd/openssl/dist/crypto/err/err_all.c b/crypto/external/bsd/openssl/dist/crypto/err/err_all.c index d9ec04b6067..7c0a5f0b9c5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/err/err_all.c +++ b/crypto/external/bsd/openssl/dist/crypto/err/err_all.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/err_int.h" +#include "crypto/err.h" #include <openssl/asn1err.h> #include <openssl/bnerr.h> #include <openssl/ecerr.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/err/openssl.ec b/crypto/external/bsd/openssl/dist/crypto/err/openssl.ec index 3e092eae0a2..5976d1501f5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/err/openssl.ec +++ b/crypto/external/bsd/openssl/dist/crypto/err/openssl.ec @@ -32,15 +32,15 @@ L CMS include/openssl/cms.h crypto/cms/cms_err.c L CT include/openssl/ct.h crypto/ct/ct_err.c L ASYNC include/openssl/async.h crypto/async/async_err.c L KDF include/openssl/kdf.h crypto/kdf/kdf_err.c -L SM2 crypto/include/internal/sm2.h crypto/sm2/sm2_err.c +L SM2 include/crypto/sm2.h crypto/sm2/sm2_err.c L OSSL_STORE include/openssl/store.h crypto/store/store_err.c # additional header files to be scanned for function names L NONE include/openssl/x509_vfy.h NONE -L NONE crypto/ec/ec_lcl.h NONE -L NONE crypto/cms/cms_lcl.h NONE -L NONE crypto/ct/ct_locl.h NONE -L NONE ssl/ssl_locl.h NONE +L NONE crypto/ec/ec_local.h NONE +L NONE crypto/cms/cms_local.h NONE +L NONE crypto/ct/ct_local.h NONE +L NONE ssl/ssl_local.h NONE # SSL/TLS alerts R SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 diff --git a/crypto/external/bsd/openssl/dist/crypto/err/openssl.txt b/crypto/external/bsd/openssl/dist/crypto/err/openssl.txt index a433b032407..35512f9caf9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/err/openssl.txt +++ b/crypto/external/bsd/openssl/dist/crypto/err/openssl.txt @@ -1,4 +1,4 @@ -# Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1002,6 +1002,7 @@ PKCS7_F_PKCS7_SIGNER_INFO_SIGN:139:PKCS7_SIGNER_INFO_sign PKCS7_F_PKCS7_SIGN_ADD_SIGNER:137:PKCS7_sign_add_signer PKCS7_F_PKCS7_SIMPLE_SMIMECAP:119:PKCS7_simple_smimecap PKCS7_F_PKCS7_VERIFY:117:PKCS7_verify +RAND_F_DATA_COLLECT_METHOD:127:data_collect_method RAND_F_DRBG_BYTES:101:drbg_bytes RAND_F_DRBG_GET_ENTROPY:105:drbg_get_entropy RAND_F_DRBG_SETUP:117:drbg_setup @@ -1027,6 +1028,7 @@ RAND_F_RAND_POOL_ATTACH:124:rand_pool_attach RAND_F_RAND_POOL_BYTES_NEEDED:115:rand_pool_bytes_needed RAND_F_RAND_POOL_GROW:125:rand_pool_grow RAND_F_RAND_POOL_NEW:116:rand_pool_new +RAND_F_RAND_PSEUDO_BYTES:126:RAND_pseudo_bytes RAND_F_RAND_WRITE_FILE:112:RAND_write_file RSA_F_CHECK_PADDING_MD:140:check_padding_md RSA_F_ENCODE_PKCS1:146:encode_pkcs1 @@ -1178,6 +1180,7 @@ SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE:431:* SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE:601:\ ossl_statem_server_post_process_message SSL_F_OSSL_STATEM_SERVER_POST_WORK:602:ossl_statem_server_post_work +SSL_F_OSSL_STATEM_SERVER_PRE_WORK:640: SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE:603:ossl_statem_server_process_message SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION:418:ossl_statem_server_read_transition SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION:604:\ @@ -2254,6 +2257,7 @@ EVP_R_INITIALIZATION_ERROR:134:initialization error EVP_R_INPUT_NOT_INITIALIZED:111:input not initialized EVP_R_INVALID_DIGEST:152:invalid digest EVP_R_INVALID_FIPS_MODE:168:invalid fips mode +EVP_R_INVALID_IV_LENGTH:194:invalid iv length EVP_R_INVALID_KEY:163:invalid key EVP_R_INVALID_KEY_LENGTH:130:invalid key length EVP_R_INVALID_OPERATION:148:invalid operation diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/bio_md.c b/crypto/external/bsd/openssl/dist/crypto/evp/bio_md.c index 288dee01b22..fed4cf1eb1f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/bio_md.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/bio_md.c @@ -12,8 +12,8 @@ #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/evp.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" #include "internal/bio.h" /* diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/bio_ok.c b/crypto/external/bsd/openssl/dist/crypto/evp/bio_ok.c index 300db6cd320..a77cfb1552d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/bio_ok.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/bio_ok.c @@ -76,7 +76,7 @@ #include "internal/bio.h" #include <openssl/evp.h> #include <openssl/rand.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" static int ok_write(BIO *h, const char *buf, int num); static int ok_read(BIO *h, char *buf, int size); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/c_allc.c b/crypto/external/bsd/openssl/dist/crypto/evp/c_allc.c index 086b3c4d51b..22fdcc409c1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/c_allc.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/c_allc.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" #include <openssl/pkcs12.h> #include <openssl/objects.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/c_alld.c b/crypto/external/bsd/openssl/dist/crypto/evp/c_alld.c index 1267531a7d2..16ac1b67f46 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/c_alld.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/c_alld.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" #include <openssl/pkcs12.h> #include <openssl/objects.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/cmeth_lib.c b/crypto/external/bsd/openssl/dist/crypto/evp/cmeth_lib.c index e2295c4dc58..272e48249e4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/cmeth_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/cmeth_lib.c @@ -10,8 +10,8 @@ #include <string.h> #include <openssl/evp.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/digest.c b/crypto/external/bsd/openssl/dist/crypto/evp/digest.c index 6693f270b69..d1bfa274ca8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/digest.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/digest.c @@ -12,8 +12,8 @@ #include <openssl/objects.h> #include <openssl/evp.h> #include <openssl/engine.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" /* This call frees resources associated with the context */ int EVP_MD_CTX_reset(EVP_MD_CTX *ctx) diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes.c index 5bf259840ce..301ed00fd2a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,10 +14,10 @@ #include <string.h> #include <assert.h> #include <openssl/aes.h> -#include "internal/evp_int.h" -#include "modes_lcl.h" +#include "crypto/evp.h" +#include "modes_local.h" #include <openssl/rand.h> -#include "evp_locl.h" +#include "evp_local.h" typedef struct { union { @@ -130,6 +130,11 @@ void bsaes_xts_decrypt(const unsigned char *inp, unsigned char *out, size_t len, const AES_KEY *key1, const AES_KEY *key2, const unsigned char iv[16]); #endif +#if !defined(AES_ASM) && !defined(AES_CTR_ASM) \ + && defined(OPENSSL_AES_CONST_TIME) \ + && !defined(OPENSSL_SMALL_FOOTPRINT) +# define AES_CTR_ASM +#endif #ifdef AES_CTR_ASM void AES_ctr32_encrypt(const unsigned char *in, unsigned char *out, size_t blocks, const AES_KEY *key, @@ -176,7 +181,7 @@ static void ctr64_inc(unsigned char *counter) # define HWAES_xts_decrypt aes_p8_xts_decrypt #endif -#if !defined(OPENSSL_NO_ASM) && ( \ +#if defined(OPENSSL_CPUID_OBJ) && ( \ ((defined(__i386) || defined(__i386__) || \ defined(_M_IX86)) && defined(OPENSSL_IA32_SSE2))|| \ defined(__x86_64) || defined(__x86_64__) || \ @@ -1127,7 +1132,7 @@ typedef struct { } icv; unsigned char k[32]; } kmac_param; - /* KMAC-AES paramater block - end */ + /* KMAC-AES parameter block - end */ union { unsigned long long g[2]; @@ -1414,7 +1419,7 @@ static int s390x_aes_ctr_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, (OPENSSL_s390xcap_P.kma[0] & \ S390X_CAPBIT(S390X_AES_256))) -/* iv + padding length for iv lenghts != 12 */ +/* iv + padding length for iv lengths != 12 */ # define S390X_gcm_ivpadlen(i) ((((i) + 15) >> 4 << 4) + 16) /*- @@ -2551,7 +2556,7 @@ const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ #if defined(OPENSSL_CPUID_OBJ) && defined(AES_ASM) && (defined(__arm__) || defined(__arm) || defined(__aarch64__)) # include "arm_arch.h" -# if __ARM_MAX_ARCH__>= 7 +# if __ARM_MAX_ARCH__>=7 # if defined(BSAES_ASM) # define BSAES_CAPABLE (OPENSSL_armcap_P & ARMV7_NEON) # endif @@ -2559,7 +2564,7 @@ const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \ # define VPAES_CAPABLE (OPENSSL_armcap_P & ARMV7_NEON) # endif # endif -# if __ARM_MAX_ARCH__>= 8 +# if __ARM_MAX_ARCH__>=8 # define HWAES_CAPABLE (OPENSSL_armcap_P & ARMV8_AES) # define HWAES_set_encrypt_key aes_v8_set_encrypt_key # define HWAES_set_decrypt_key aes_v8_set_decrypt_key diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha1.c index 09d24dc3d02..27c36b46e7a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha1.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha1.c @@ -17,9 +17,9 @@ #include <openssl/aes.h> #include <openssl/sha.h> #include <openssl/rand.h> -#include "modes_lcl.h" -#include "internal/evp_int.h" -#include "internal/constant_time_locl.h" +#include "modes_local.h" +#include "crypto/evp.h" +#include "internal/constant_time.h" typedef struct { AES_KEY ks; @@ -33,7 +33,7 @@ typedef struct { #define NO_PAYLOAD_LENGTH ((size_t)-1) -#if defined(AES_ASM) && ( \ +#if defined(AESNI_ASM) && ( \ defined(__x86_64) || defined(__x86_64__) || \ defined(_M_AMD64) || defined(_M_X64) ) diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha256.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha256.c index caac0c9d3da..cc622b6faa8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha256.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_aes_cbc_hmac_sha256.c @@ -18,9 +18,9 @@ #include <openssl/aes.h> #include <openssl/sha.h> #include <openssl/rand.h> -#include "modes_lcl.h" -#include "internal/constant_time_locl.h" -#include "internal/evp_int.h" +#include "modes_local.h" +#include "internal/constant_time.h" +#include "crypto/evp.h" typedef struct { AES_KEY ks; @@ -34,7 +34,7 @@ typedef struct { # define NO_PAYLOAD_LENGTH ((size_t)-1) -#if defined(AES_ASM) && ( \ +#if defined(AESNI_ASM) && ( \ defined(__x86_64) || defined(__x86_64__) || \ defined(_M_AMD64) || defined(_M_X64) ) @@ -947,4 +947,4 @@ const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void) { return NULL; } -#endif +#endif /* AESNI_ASM */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_aria.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_aria.c index fcaceb3bcad..1cc6dd91a95 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_aria.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_aria.c @@ -14,10 +14,10 @@ # include <openssl/modes.h> # include <openssl/rand.h> # include <openssl/rand_drbg.h> -# include "internal/aria.h" -# include "internal/evp_int.h" -# include "modes_lcl.h" -# include "evp_locl.h" +# include "crypto/aria.h" +# include "crypto/evp.h" +# include "modes_local.h" +# include "evp_local.h" /* ARIA subkey Structure */ typedef struct { @@ -695,8 +695,6 @@ static int aria_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, if (!cctx->iv_set) return -1; - if (!EVP_CIPHER_CTX_encrypting(ctx) && !cctx->tag_set) - return -1; if (!out) { if (!in) { if (CRYPTO_ccm128_setiv(ccm, EVP_CIPHER_CTX_iv_noconst(ctx), @@ -711,6 +709,11 @@ static int aria_ccm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, CRYPTO_ccm128_aad(ccm, in, len); return len; } + + /* The tag must be set before actually decrypting data */ + if (!EVP_CIPHER_CTX_encrypting(ctx) && !cctx->tag_set) + return -1; + /* If not set length yet do it */ if (!cctx->len_set) { if (CRYPTO_ccm128_setiv(ccm, EVP_CIPHER_CTX_iv_noconst(ctx), diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_bf.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_bf.c index dc386905c5c..9a065582c6c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_bf.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_bf.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #ifndef OPENSSL_NO_BF # include <openssl/evp.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/objects.h> # include <openssl/blowfish.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_camellia.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_camellia.c index 2df4a6e3e01..502d6936cc1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_camellia.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_camellia.c @@ -17,8 +17,8 @@ NON_EMPTY_TRANSLATION_UNIT # include <string.h> # include <assert.h> # include <openssl/camellia.h> -# include "internal/evp_int.h" -# include "modes_lcl.h" +# include "crypto/evp.h" +# include "modes_local.h" static int camellia_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_cast.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_cast.c index 259d44059b2..df9f445bd0a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_cast.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_cast.c @@ -13,7 +13,7 @@ #ifndef OPENSSL_NO_CAST # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/cast.h> static int cast_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_chacha20_poly1305.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_chacha20_poly1305.c index 435a38d3658..bdc406bb69d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_chacha20_poly1305.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_chacha20_poly1305.c @@ -14,9 +14,9 @@ # include <openssl/evp.h> # include <openssl/objects.h> -# include "evp_locl.h" -# include "internal/evp_int.h" -# include "internal/chacha.h" +# include "evp_local.h" +# include "crypto/evp.h" +# include "crypto/chacha.h" typedef struct { union { @@ -146,7 +146,7 @@ const EVP_CIPHER *EVP_chacha20(void) } # ifndef OPENSSL_NO_POLY1305 -# include "internal/poly1305.h" +# include "crypto/poly1305.h" typedef struct { EVP_CHACHA_KEY key; diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_des.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_des.c index c13fb3e25a9..6d6e919af69 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_des.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_des.c @@ -12,7 +12,7 @@ #ifndef OPENSSL_NO_DES # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/des.h> # include <openssl/rand.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_des3.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_des3.c index 6b492ce4702..2a5597fee52 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_des3.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_des3.c @@ -12,10 +12,10 @@ #ifndef OPENSSL_NO_DES # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/des.h> # include <openssl/rand.h> -# include "evp_locl.h" +# include "evp_local.h" typedef struct { union { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_idea.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_idea.c index 93f6a4131fa..1068378ddc7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_idea.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_idea.c @@ -13,7 +13,7 @@ #ifndef OPENSSL_NO_IDEA # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/idea.h> /* Can't use IMPLEMENT_BLOCK_CIPHER because IDEA_ecb_encrypt is different */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_null.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_null.c index 18a8468216a..0725454a3a4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_null.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/objects.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc2.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc2.c index aa0d1401868..4d8a0ee4b01 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc2.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc2.c @@ -14,7 +14,7 @@ # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/rc2.h> static int rc2_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4.c index d16abdd0d2d..c24bc8fe598 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4.c @@ -16,7 +16,7 @@ # include <openssl/objects.h> # include <openssl/rc4.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" typedef struct { RC4_KEY ks; /* working key */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4_hmac_md5.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4_hmac_md5.c index b1e8ccd6ddc..201ce443435 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4_hmac_md5.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc4_hmac_md5.c @@ -19,7 +19,7 @@ # include <openssl/objects.h> # include <openssl/rc4.h> # include <openssl/md5.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" typedef struct { RC4_KEY ks; diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc5.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc5.c index dc5589b6881..c86e87b65ab 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_rc5.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_rc5.c @@ -13,9 +13,9 @@ #ifndef OPENSSL_NO_RC5 # include <openssl/evp.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/objects.h> -# include "evp_locl.h" +# include "evp_local.h" # include <openssl/rc5.h> static int r_32_12_16_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_seed.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_seed.c index 40aec5fc6ac..aeb2363bead 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_seed.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_seed.c @@ -16,7 +16,7 @@ NON_EMPTY_TRANSLATION_UNIT # include <string.h> # include <assert.h> # include <openssl/seed.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int seed_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_sm4.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_sm4.c index 79deb656364..fce32794fc5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_sm4.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_sm4.c @@ -13,8 +13,8 @@ #ifndef OPENSSL_NO_SM4 # include <openssl/evp.h> # include <openssl/modes.h> -# include "internal/sm4.h" -# include "internal/evp_int.h" +# include "crypto/sm4.h" +# include "crypto/evp.h" typedef struct { SM4_KEY ks; diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/e_xcbc_d.c b/crypto/external/bsd/openssl/dist/crypto/evp/e_xcbc_d.c index 57ce813da82..b7307754226 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/e_xcbc_d.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/e_xcbc_d.c @@ -14,7 +14,7 @@ # include <openssl/evp.h> # include <openssl/objects.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/des.h> static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/encode.c b/crypto/external/bsd/openssl/dist/crypto/evp/encode.c index da32d4fd197..9307ff04642 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/encode.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/encode.c @@ -11,8 +11,8 @@ #include <limits.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "evp_locl.h" -#include "internal/evp_int.h" +#include "evp_local.h" +#include "crypto/evp.h" static unsigned char conv_ascii2bin(unsigned char a, const unsigned char *table); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_enc.c b/crypto/external/bsd/openssl/dist/crypto/evp/evp_enc.c index 05dd791b6cb..b9b6490fe06 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_enc.c @@ -15,8 +15,8 @@ #include <openssl/rand.h> #include <openssl/rand_drbg.h> #include <openssl/engine.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c) { @@ -305,6 +305,17 @@ static int evp_EncryptDecryptUpdate(EVP_CIPHER_CTX *ctx, bl = ctx->cipher->block_size; + /* + * CCM mode needs to know about the case where inl == 0 && in == NULL - it + * means the plaintext/ciphertext length is 0 + */ + if (inl < 0 + || (inl == 0 + && EVP_CIPHER_mode(ctx->cipher) != EVP_CIPH_CCM_MODE)) { + *outl = 0; + return inl == 0; + } + if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) { /* If block size > 1 then the cipher will have to do this check */ if (bl == 1 && is_partially_overlapping(out, in, cmpl)) { @@ -320,10 +331,6 @@ static int evp_EncryptDecryptUpdate(EVP_CIPHER_CTX *ctx, return 1; } - if (inl <= 0) { - *outl = 0; - return inl == 0; - } if (is_partially_overlapping(out + ctx->buf_len, in, cmpl)) { EVPerr(EVP_F_EVP_ENCRYPTDECRYPTUPDATE, EVP_R_PARTIALLY_OVERLAPPING); return 0; @@ -457,6 +464,17 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, if (EVP_CIPHER_CTX_test_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS)) cmpl = (cmpl + 7) / 8; + /* + * CCM mode needs to know about the case where inl == 0 - it means the + * plaintext/ciphertext length is 0 + */ + if (inl < 0 + || (inl == 0 + && EVP_CIPHER_mode(ctx->cipher) != EVP_CIPH_CCM_MODE)) { + *outl = 0; + return inl == 0; + } + if (ctx->cipher->flags & EVP_CIPH_FLAG_CUSTOM_CIPHER) { if (b == 1 && is_partially_overlapping(out, in, cmpl)) { EVPerr(EVP_F_EVP_DECRYPTUPDATE, EVP_R_PARTIALLY_OVERLAPPING); @@ -472,11 +490,6 @@ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, return 1; } - if (inl <= 0) { - *outl = 0; - return inl == 0; - } - if (ctx->flags & EVP_CIPH_NO_PADDING) return evp_EncryptDecryptUpdate(ctx, out, outl, in, inl); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_err.c b/crypto/external/bsd/openssl/dist/crypto/evp/evp_err.c index 84bd3c2dab2..05481d827fb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_err.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -213,6 +213,7 @@ static const ERR_STRING_DATA EVP_str_reasons[] = { "input not initialized"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_DIGEST), "invalid digest"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_FIPS_MODE), "invalid fips mode"}, + {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_IV_LENGTH), "invalid iv length"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY), "invalid key"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_KEY_LENGTH), "invalid key length"}, {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_OPERATION), "invalid operation"}, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_lib.c b/crypto/external/bsd/openssl/dist/crypto/evp/evp_lib.c index 4935c2a94a1..45cde0da8bf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_lib.c @@ -11,8 +11,8 @@ #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/objects.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_locl.h b/crypto/external/bsd/openssl/dist/crypto/evp/evp_local.h index f1589d68289..f1589d68289 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_pbe.c b/crypto/external/bsd/openssl/dist/crypto/evp/evp_pbe.c index 5a88817b4aa..967203f373c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_pbe.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_pbe.c @@ -12,7 +12,7 @@ #include <openssl/evp.h> #include <openssl/pkcs12.h> #include <openssl/x509.h> -#include "evp_locl.h" +#include "evp_local.h" /* Password based encryption (PBE) functions */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/evp_pkey.c b/crypto/external/bsd/openssl/dist/crypto/evp/evp_pkey.c index e61a8761a92..586b74605cb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/evp_pkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/evp_pkey.c @@ -12,9 +12,9 @@ #include "internal/cryptlib.h" #include <openssl/x509.h> #include <openssl/rand.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" -#include "internal/x509_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" +#include "crypto/x509.h" /* Extract a private key from a PKCS8 structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_md2.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_md2.c index c4e28ae17af..1aec5185239 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_md2.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_md2.c @@ -18,7 +18,7 @@ # include <openssl/md2.h> # include <openssl/rsa.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_md4.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_md4.c index 0efc586dbaf..45d2cafee10 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_md4.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_md4.c @@ -17,7 +17,7 @@ # include <openssl/x509.h> # include <openssl/md4.h> # include <openssl/rsa.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_md5.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_md5.c index 3d96ae93b6c..d26b5a4d31d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_md5.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_md5.c @@ -17,7 +17,7 @@ # include <openssl/x509.h> # include <openssl/md5.h> # include <openssl/rsa.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_md5_sha1.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_md5_sha1.c index 2d98886ba0e..eeec2b13e9e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_md5_sha1.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_md5_sha1.c @@ -15,7 +15,7 @@ # include <openssl/md5.h> # include <openssl/sha.h> # include "internal/cryptlib.h" -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/rsa.h> struct md5_sha1_ctx { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_mdc2.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_mdc2.c index 1051a9070f9..fffa751efd1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_mdc2.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_mdc2.c @@ -17,7 +17,7 @@ # include <openssl/x509.h> # include <openssl/mdc2.h> # include <openssl/rsa.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_null.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_null.c index 5dce1d510e2..0847139df17 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_null.c @@ -12,7 +12,7 @@ #include <openssl/evp.h> #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_ripemd.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_ripemd.c index 7ab320843ce..d93ad24fe58 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_ripemd.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_ripemd.c @@ -17,7 +17,7 @@ # include <openssl/objects.h> # include <openssl/x509.h> # include <openssl/rsa.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_sha1.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_sha1.c index ac52417855b..f802912d692 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_sha1.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_sha1.c @@ -14,8 +14,8 @@ #include <openssl/objects.h> #include <openssl/sha.h> #include <openssl/rsa.h> -#include "internal/evp_int.h" -#include "internal/sha.h" +#include "crypto/evp.h" +#include "crypto/sha.h" static int init(EVP_MD_CTX *ctx) { @@ -116,21 +116,16 @@ static int init224(EVP_MD_CTX *ctx) return SHA224_Init(EVP_MD_CTX_md_data(ctx)); } -static int update224(EVP_MD_CTX *ctx, const void *data, size_t count) -{ - return SHA224_Update(EVP_MD_CTX_md_data(ctx), data, count); -} - -static int final224(EVP_MD_CTX *ctx, unsigned char *md) -{ - return SHA224_Final(md, EVP_MD_CTX_md_data(ctx)); -} - static int init256(EVP_MD_CTX *ctx) { return SHA256_Init(EVP_MD_CTX_md_data(ctx)); } +/* + * Even though there're separate SHA224_[Update|Final], we call + * SHA256 functions even in SHA224 context. This is what happens + * there anyway, so we can spare few CPU cycles:-) + */ static int update256(EVP_MD_CTX *ctx, const void *data, size_t count) { return SHA256_Update(EVP_MD_CTX_md_data(ctx), data, count); @@ -147,8 +142,8 @@ static const EVP_MD sha224_md = { SHA224_DIGEST_LENGTH, EVP_MD_FLAG_DIGALGID_ABSENT, init224, - update224, - final224, + update256, + final256, NULL, NULL, SHA256_CBLOCK, diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_sha3.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_sha3.c index 01cf57d313d..54c592a3cce 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_sha3.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_sha3.c @@ -12,8 +12,8 @@ #include <openssl/evp.h> #include <openssl/objects.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, size_t r); diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_sigver.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_sigver.c index 94e37f02b22..04643acc883 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_sigver.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_sigver.c @@ -12,8 +12,8 @@ #include <openssl/evp.h> #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/evp_int.h" -#include "evp_locl.h" +#include "crypto/evp.h" +#include "evp_local.h" static int update(EVP_MD_CTX *ctx, const void *data, size_t datalen) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/m_wp.c b/crypto/external/bsd/openssl/dist/crypto/evp/m_wp.c index 27e2b3c5cab..5ce15d2d5e5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/m_wp.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/m_wp.c @@ -16,7 +16,7 @@ # include <openssl/objects.h> # include <openssl/x509.h> # include <openssl/whrlpool.h> -# include "internal/evp_int.h" +# include "crypto/evp.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/names.c b/crypto/external/bsd/openssl/dist/crypto/evp/names.c index 077c2a6c4b9..90c7b73b7a4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/names.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/names.c @@ -10,9 +10,9 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/objects.h" +#include "crypto/objects.h" #include <openssl/x509.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" int EVP_add_cipher(const EVP_CIPHER *c) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt.c b/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt.c index 7e55d0bfb81..6c5f45f7336 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -28,7 +28,7 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, EVP_MD_CTX *ctx; unsigned char md_tmp[EVP_MAX_MD_SIZE]; unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; - int i; + int i, ivl, kl; PBEPARAM *pbe; int saltlen, iter; unsigned char *salt; @@ -48,6 +48,19 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, return 0; } + ivl = EVP_CIPHER_iv_length(cipher); + if (ivl < 0 || ivl > 16) { + EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_INVALID_IV_LENGTH); + PBEPARAM_free(pbe); + return 0; + } + kl = EVP_CIPHER_key_length(cipher); + if (kl < 0 || kl > (int)sizeof(md_tmp)) { + EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_INVALID_KEY_LENGTH); + PBEPARAM_free(pbe); + return 0; + } + if (!pbe->iter) iter = 1; else @@ -73,6 +86,7 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, if (!EVP_DigestUpdate(ctx, salt, saltlen)) goto err; PBEPARAM_free(pbe); + pbe = NULL; if (!EVP_DigestFinal_ex(ctx, md_tmp, NULL)) goto err; mdsize = EVP_MD_size(md); @@ -86,11 +100,8 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, if (!EVP_DigestFinal_ex(ctx, md_tmp, NULL)) goto err; } - OPENSSL_assert(EVP_CIPHER_key_length(cipher) <= (int)sizeof(md_tmp)); - memcpy(key, md_tmp, EVP_CIPHER_key_length(cipher)); - OPENSSL_assert(EVP_CIPHER_iv_length(cipher) <= 16); - memcpy(iv, md_tmp + (16 - EVP_CIPHER_iv_length(cipher)), - EVP_CIPHER_iv_length(cipher)); + memcpy(key, md_tmp, kl); + memcpy(iv, md_tmp + (16 - ivl), ivl); if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, iv, en_de)) goto err; OPENSSL_cleanse(md_tmp, EVP_MAX_MD_SIZE); @@ -98,6 +109,7 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, OPENSSL_cleanse(iv, EVP_MAX_IV_LENGTH); rv = 1; err: + PBEPARAM_free(pbe); EVP_MD_CTX_free(ctx); return rv; } diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt2.c b/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt2.c index e819eb9b47d..7f625b3d57f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt2.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/p5_crpt2.c @@ -13,7 +13,7 @@ # include <openssl/x509.h> # include <openssl/evp.h> # include <openssl/hmac.h> -# include "evp_locl.h" +# include "evp_local.h" /* set this to print out info about the keygen algorithm */ /* #define OPENSSL_DEBUG_PKCS5V2 */ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/p_lib.c b/crypto/external/bsd/openssl/dist/crypto/evp/p_lib.c index 3cd7ca8d54c..9f1a485a5b8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/p_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/p_lib.c @@ -21,8 +21,8 @@ #include <openssl/cmac.h> #include <openssl/engine.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" static void EVP_PKEY_free_it(EVP_PKEY *x); @@ -102,7 +102,7 @@ int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from) int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey) { - if (pkey->ameth && pkey->ameth->param_missing) + if (pkey != NULL && pkey->ameth && pkey->ameth->param_missing) return pkey->ameth->param_missing(pkey); return 0; } @@ -465,7 +465,7 @@ int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key) RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey) { - if (pkey->type != EVP_PKEY_RSA) { + if (pkey->type != EVP_PKEY_RSA && pkey->type != EVP_PKEY_RSA_PSS) { EVPerr(EVP_F_EVP_PKEY_GET0_RSA, EVP_R_EXPECTING_AN_RSA_KEY); return NULL; } @@ -540,7 +540,9 @@ EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey) int EVP_PKEY_set1_DH(EVP_PKEY *pkey, DH *key) { - int ret = EVP_PKEY_assign_DH(pkey, key); + int type = DH_get0_q(key) == NULL ? EVP_PKEY_DH : EVP_PKEY_DHX; + int ret = EVP_PKEY_assign(pkey, type, key); + if (ret) DH_up_ref(key); return ret; diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/p_sign.c b/crypto/external/bsd/openssl/dist/crypto/evp/p_sign.c index 6cb442e4f91..0383294a87c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/p_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/p_sign.c @@ -12,7 +12,7 @@ #include <openssl/evp.h> #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, unsigned int *siglen, EVP_PKEY *pkey) diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/p_verify.c b/crypto/external/bsd/openssl/dist/crypto/evp/p_verify.c index 6e8c565dfd6..e27196f7c2e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/p_verify.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/p_verify.c @@ -12,7 +12,7 @@ #include <openssl/evp.h> #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, unsigned int siglen, EVP_PKEY *pkey) diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_fn.c b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_fn.c index de1c07e1711..02f4093461d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_fn.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_fn.c @@ -12,7 +12,7 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" #define M_check_autoarg(ctx, arg, arglen, err) \ if (ctx->pmeth->flags & EVP_PKEY_FLAG_AUTOARGLEN) { \ diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_gn.c b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_gn.c index e14965f3338..3ad6d5c7c7a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_gn.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_gn.c @@ -12,9 +12,9 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/evp.h> -#include "internal/bn_int.h" -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/bn.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_lib.c b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_lib.c index 7fbf895e073..603ccd83521 100644 --- a/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/evp/pmeth_lib.c @@ -13,8 +13,8 @@ #include <openssl/engine.h> #include <openssl/evp.h> #include <openssl/x509v3.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" #include "internal/numbers.h" typedef int sk_cmp_fn_type(const char *const *a, const char *const *b); @@ -642,6 +642,21 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, pmeth->ctrl_str = ctrl_str; } +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)) +{ + pmeth->digestsign = digestsign; +} + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)) +{ + pmeth->digestverify = digestverify; +} + void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)) { @@ -834,6 +849,23 @@ void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, *pctrl_str = pmeth->ctrl_str; } +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)) +{ + if (digestsign) + *digestsign = pmeth->digestsign; +} + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)) +{ + if (digestverify) + *digestverify = pmeth->digestverify; +} + void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ex_data.c b/crypto/external/bsd/openssl/dist/crypto/ex_data.c index 08dc7c40734..0f5a9295056 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ex_data.c +++ b/crypto/external/bsd/openssl/dist/crypto/ex_data.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include "internal/thread_once.h" /* @@ -235,7 +235,7 @@ int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) return 0; } for (i = 0; i < mx; i++) { - if (storage[i] && storage[i]->new_func) { + if (storage[i] != NULL && storage[i]->new_func != NULL) { ptr = CRYPTO_get_ex_data(ad, i); storage[i]->new_func(obj, ptr, ad, i, storage[i]->argl, storage[i]->argp); @@ -299,7 +299,7 @@ int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, for (i = 0; i < mx; i++) { ptr = CRYPTO_get_ex_data(from, i); - if (storage[i] && storage[i]->dup_func) + if (storage[i] != NULL && storage[i]->dup_func != NULL) if (!storage[i]->dup_func(to, from, &ptr, i, storage[i]->argl, storage[i]->argp)) goto err; diff --git a/crypto/external/bsd/openssl/dist/crypto/hmac/hm_ameth.c b/crypto/external/bsd/openssl/dist/crypto/hmac/hm_ameth.c index fa204e9068e..638f61b5863 100644 --- a/crypto/external/bsd/openssl/dist/crypto/hmac/hm_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/hmac/hm_ameth.c @@ -10,8 +10,8 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" /* * HMAC "ASN1" method. This is just here to indicate the maximum HMAC output diff --git a/crypto/external/bsd/openssl/dist/crypto/hmac/hm_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/hmac/hm_pmeth.c index 55dd27d63b5..56f98707f53 100644 --- a/crypto/external/bsd/openssl/dist/crypto/hmac/hm_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/hmac/hm_pmeth.c @@ -14,7 +14,7 @@ #include <openssl/evp.h> #include <openssl/hmac.h> #include <openssl/err.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" /* HMAC pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/hmac/hmac.c b/crypto/external/bsd/openssl/dist/crypto/hmac/hmac.c index 0c0a7133fb5..5e087bf92ff 100644 --- a/crypto/external/bsd/openssl/dist/crypto/hmac/hmac.c +++ b/crypto/external/bsd/openssl/dist/crypto/hmac/hmac.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -13,21 +13,22 @@ #include "internal/cryptlib.h" #include <openssl/hmac.h> #include <openssl/opensslconf.h> -#include "hmac_lcl.h" +#include "hmac_local.h" int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md, ENGINE *impl) { - int rv = 0; - int i, j, reset = 0; + int rv = 0, reset = 0; + int i, j; unsigned char pad[HMAC_MAX_MD_CBLOCK_SIZE]; + unsigned int keytmp_length; + unsigned char keytmp[HMAC_MAX_MD_CBLOCK_SIZE]; /* If we are changing MD then we must have a key */ if (md != NULL && md != ctx->md && (key == NULL || len < 0)) return 0; if (md != NULL) { - reset = 1; ctx->md = md; } else if (ctx->md) { md = ctx->md; @@ -44,35 +45,34 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, if (key != NULL) { reset = 1; + j = EVP_MD_block_size(md); - if (!ossl_assert(j <= (int)sizeof(ctx->key))) + if (!ossl_assert(j <= (int)sizeof(keytmp))) return 0; if (j < len) { if (!EVP_DigestInit_ex(ctx->md_ctx, md, impl) || !EVP_DigestUpdate(ctx->md_ctx, key, len) - || !EVP_DigestFinal_ex(ctx->md_ctx, ctx->key, - &ctx->key_length)) + || !EVP_DigestFinal_ex(ctx->md_ctx, keytmp, + &keytmp_length)) return 0; } else { - if (len < 0 || len > (int)sizeof(ctx->key)) + if (len < 0 || len > (int)sizeof(keytmp)) return 0; - memcpy(ctx->key, key, len); - ctx->key_length = len; + memcpy(keytmp, key, len); + keytmp_length = len; } - if (ctx->key_length != HMAC_MAX_MD_CBLOCK_SIZE) - memset(&ctx->key[ctx->key_length], 0, - HMAC_MAX_MD_CBLOCK_SIZE - ctx->key_length); - } + if (keytmp_length != HMAC_MAX_MD_CBLOCK_SIZE) + memset(&keytmp[keytmp_length], 0, + HMAC_MAX_MD_CBLOCK_SIZE - keytmp_length); - if (reset) { for (i = 0; i < HMAC_MAX_MD_CBLOCK_SIZE; i++) - pad[i] = 0x36 ^ ctx->key[i]; + pad[i] = 0x36 ^ keytmp[i]; if (!EVP_DigestInit_ex(ctx->i_ctx, md, impl) || !EVP_DigestUpdate(ctx->i_ctx, pad, EVP_MD_block_size(md))) goto err; for (i = 0; i < HMAC_MAX_MD_CBLOCK_SIZE; i++) - pad[i] = 0x5c ^ ctx->key[i]; + pad[i] = 0x5c ^ keytmp[i]; if (!EVP_DigestInit_ex(ctx->o_ctx, md, impl) || !EVP_DigestUpdate(ctx->o_ctx, pad, EVP_MD_block_size(md))) goto err; @@ -81,8 +81,10 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, goto err; rv = 1; err: - if (reset) + if (reset) { + OPENSSL_cleanse(keytmp, sizeof(keytmp)); OPENSSL_cleanse(pad, sizeof(pad)); + } return rv; } @@ -149,8 +151,6 @@ static void hmac_ctx_cleanup(HMAC_CTX *ctx) EVP_MD_CTX_reset(ctx->o_ctx); EVP_MD_CTX_reset(ctx->md_ctx); ctx->md = NULL; - ctx->key_length = 0; - OPENSSL_cleanse(ctx->key, sizeof(ctx->key)); } void HMAC_CTX_free(HMAC_CTX *ctx) @@ -201,8 +201,6 @@ int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx) goto err; if (!EVP_MD_CTX_copy_ex(dctx->md_ctx, sctx->md_ctx)) goto err; - memcpy(dctx->key, sctx->key, HMAC_MAX_MD_CBLOCK_SIZE); - dctx->key_length = sctx->key_length; dctx->md = sctx->md; return 1; err: diff --git a/crypto/external/bsd/openssl/dist/crypto/hmac/hmac_lcl.h b/crypto/external/bsd/openssl/dist/crypto/hmac/hmac_local.h index 8fd8345694a..8bcc55817ae 100644 --- a/crypto/external/bsd/openssl/dist/crypto/hmac/hmac_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/hmac/hmac_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_HMAC_LCL_H -# define HEADER_HMAC_LCL_H +#ifndef OSSL_CRYPTO_HMAC_LOCAL_H +# define OSSL_CRYPTO_HMAC_LOCAL_H /* The current largest case is for SHA3-224 */ #define HMAC_MAX_MD_CBLOCK_SIZE 144 @@ -18,8 +18,6 @@ struct hmac_ctx_st { EVP_MD_CTX *md_ctx; EVP_MD_CTX *i_ctx; EVP_MD_CTX *o_ctx; - unsigned int key_length; - unsigned char key[HMAC_MAX_MD_CBLOCK_SIZE]; }; #endif diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/i_cbc.c b/crypto/external/bsd/openssl/dist/crypto/idea/i_cbc.c index 774ab3cad2e..f4601132991 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/i_cbc.c +++ b/crypto/external/bsd/openssl/dist/crypto/idea/i_cbc.c @@ -8,7 +8,7 @@ */ #include <openssl/idea.h> -#include "idea_lcl.h" +#include "idea_local.h" void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/i_cfb64.c b/crypto/external/bsd/openssl/dist/crypto/idea/i_cfb64.c index 049927b64f9..6e4b65cfdbb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/i_cfb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/idea/i_cfb64.c @@ -8,7 +8,7 @@ */ #include <openssl/idea.h> -#include "idea_lcl.h" +#include "idea_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/i_ecb.c b/crypto/external/bsd/openssl/dist/crypto/idea/i_ecb.c index 9150d2a9d94..969bd40f5fd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/i_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/idea/i_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/idea.h> -#include "idea_lcl.h" +#include "idea_local.h" #include <openssl/opensslv.h> const char *IDEA_options(void) diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/i_ofb64.c b/crypto/external/bsd/openssl/dist/crypto/idea/i_ofb64.c index 29a6effebf5..aef64cbbaca 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/i_ofb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/idea/i_ofb64.c @@ -8,7 +8,7 @@ */ #include <openssl/idea.h> -#include "idea_lcl.h" +#include "idea_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/i_skey.c b/crypto/external/bsd/openssl/dist/crypto/idea/i_skey.c index 26f5b9884cd..8f6099eb571 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/i_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/idea/i_skey.c @@ -7,9 +7,9 @@ * https://www.openssl.org/source/license.html */ -#include <openssl/idea.h> #include <inttypes.h> -#include "idea_lcl.h" +#include <openssl/idea.h> +#include "idea_local.h" static IDEA_INT inverse(unsigned int xin); void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks) diff --git a/crypto/external/bsd/openssl/dist/crypto/idea/idea_lcl.h b/crypto/external/bsd/openssl/dist/crypto/idea/idea_local.h index 37a5b84f068..50f81dfd8de 100644 --- a/crypto/external/bsd/openssl/dist/crypto/idea/idea_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/idea/idea_local.h @@ -8,7 +8,7 @@ */ #define idea_mul(r,a,b,ul) \ -ul=(IDEA_INT)a*b; \ +ul=(unsigned long)a*b; \ if (ul != 0) \ { \ r=(ul&0xffff)-(ul>>16); \ @@ -22,14 +22,21 @@ else \ c+=n; \ l1=l2=0; \ switch (n) { \ - case 8: l2 =((IDEA_INT)(*(--(c)))) ; \ - case 7: l2|=((IDEA_INT)(*(--(c))))<< 8; \ - case 6: l2|=((IDEA_INT)(*(--(c))))<<16; \ - case 5: l2|=((IDEA_INT)(*(--(c))))<<24; \ - case 4: l1 =((IDEA_INT)(*(--(c)))) ; \ - case 3: l1|=((IDEA_INT)(*(--(c))))<< 8; \ - case 2: l1|=((IDEA_INT)(*(--(c))))<<16; \ - case 1: l1|=((IDEA_INT)(*(--(c))))<<24; \ + case 8: l2 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 6: l2|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 5: l2|=((unsigned long)(*(--(c))))<<24; \ + /* fall thru */ \ + case 4: l1 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 2: l1|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 1: l1|=((unsigned long)(*(--(c))))<<24; \ } \ } @@ -56,10 +63,10 @@ else \ } #undef n2l -#define n2l(c,l) (l =((IDEA_INT)(*((c)++)))<<24L, \ - l|=((IDEA_INT)(*((c)++)))<<16L, \ - l|=((IDEA_INT)(*((c)++)))<< 8L, \ - l|=((IDEA_INT)(*((c)++)))) +#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))) #undef l2n #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \ diff --git a/crypto/external/bsd/openssl/dist/crypto/init.c b/crypto/external/bsd/openssl/dist/crypto/init.c index 9fc0e8ef68a..1b0d523beae 100644 --- a/crypto/external/bsd/openssl/dist/crypto/init.c +++ b/crypto/external/bsd/openssl/dist/crypto/init.c @@ -8,25 +8,25 @@ */ #include "e_os.h" -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include <openssl/err.h> -#include "internal/rand_int.h" +#include "crypto/rand.h" #include "internal/bio.h" #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" #include "internal/conf.h" -#include "internal/async.h" -#include "internal/engine.h" +#include "crypto/async.h" +#include "crypto/engine.h" #include "internal/comp.h" #include "internal/err.h" -#include "internal/err_int.h" -#include "internal/objects.h" +#include "crypto/err.h" +#include "crypto/objects.h" #include <stdlib.h> #include <assert.h> #include "internal/thread_once.h" -#include "internal/dso_conf.h" +#include "crypto/dso_conf.h" #include "internal/dso.h" -#include "internal/store.h" +#include "crypto/store.h" static int stopped = 0; diff --git a/crypto/external/bsd/openssl/dist/crypto/kdf/hkdf.c b/crypto/external/bsd/openssl/dist/crypto/kdf/hkdf.c index ae46fad609a..25bf4b729f6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/kdf/hkdf.c +++ b/crypto/external/bsd/openssl/dist/crypto/kdf/hkdf.c @@ -13,7 +13,7 @@ #include <openssl/kdf.h> #include <openssl/evp.h> #include "internal/cryptlib.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" #define HKDF_MAXBUF 1024 diff --git a/crypto/external/bsd/openssl/dist/crypto/kdf/scrypt.c b/crypto/external/bsd/openssl/dist/crypto/kdf/scrypt.c index 61fd390e95f..68606ac00ae 100644 --- a/crypto/external/bsd/openssl/dist/crypto/kdf/scrypt.c +++ b/crypto/external/bsd/openssl/dist/crypto/kdf/scrypt.c @@ -13,7 +13,7 @@ #include <openssl/kdf.h> #include <openssl/evp.h> #include "internal/cryptlib.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" #ifndef OPENSSL_NO_SCRYPT diff --git a/crypto/external/bsd/openssl/dist/crypto/kdf/tls1_prf.c b/crypto/external/bsd/openssl/dist/crypto/kdf/tls1_prf.c index 49f7ecced90..e9ca8e12780 100644 --- a/crypto/external/bsd/openssl/dist/crypto/kdf/tls1_prf.c +++ b/crypto/external/bsd/openssl/dist/crypto/kdf/tls1_prf.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/kdf.h> #include <openssl/evp.h> -#include "internal/evp_int.h" +#include "crypto/evp.h" static int tls1_prf_alg(const EVP_MD *md, const unsigned char *sec, size_t slen, diff --git a/crypto/external/bsd/openssl/dist/crypto/lhash/lh_stats.c b/crypto/external/bsd/openssl/dist/crypto/lhash/lh_stats.c index 65b91e1ef41..45f1b105554 100644 --- a/crypto/external/bsd/openssl/dist/crypto/lhash/lh_stats.c +++ b/crypto/external/bsd/openssl/dist/crypto/lhash/lh_stats.c @@ -18,7 +18,7 @@ #include <openssl/bio.h> #include <openssl/lhash.h> -#include "lhash_lcl.h" +#include "lhash_local.h" # ifndef OPENSSL_NO_STDIO void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp) diff --git a/crypto/external/bsd/openssl/dist/crypto/lhash/lhash.c b/crypto/external/bsd/openssl/dist/crypto/lhash/lhash.c index 485d4c3ffff..9dc887d91e4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/lhash/lhash.c +++ b/crypto/external/bsd/openssl/dist/crypto/lhash/lhash.c @@ -13,9 +13,9 @@ #include <openssl/crypto.h> #include <openssl/lhash.h> #include <openssl/err.h> -#include "internal/ctype.h" -#include "internal/lhash.h" -#include "lhash_lcl.h" +#include "crypto/ctype.h" +#include "crypto/lhash.h" +#include "lhash_local.h" /* * A hashing implementation that appears to be based on the linear hashing diff --git a/crypto/external/bsd/openssl/dist/crypto/lhash/lhash_lcl.h b/crypto/external/bsd/openssl/dist/crypto/lhash/lhash_local.h index 678224acd5d..678224acd5d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/lhash/lhash_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/lhash/lhash_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/md4/md4_dgst.c b/crypto/external/bsd/openssl/dist/crypto/md4/md4_dgst.c index a3c92f7b3d8..29b6b252bae 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md4/md4_dgst.c +++ b/crypto/external/bsd/openssl/dist/crypto/md4/md4_dgst.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <openssl/opensslv.h> -#include "md4_locl.h" +#include "md4_local.h" /* * Implemented from RFC1186 The MD4 Message-Digest Algorithm @@ -37,10 +37,10 @@ int MD4_Init(MD4_CTX *c) void md4_block_data_order(MD4_CTX *c, const void *data_, size_t num) { const unsigned char *data = data_; - register MD32_REG_T A, B, C, D, l; + register unsigned MD32_REG_T A, B, C, D, l; # ifndef MD32_XARRAY - /* See comment in crypto/sha/sha_locl.h for details. */ - MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, + /* See comment in crypto/sha/sha_local.h for details. */ + unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15; # define X(i) XX##i # else diff --git a/crypto/external/bsd/openssl/dist/crypto/md4/md4_locl.h b/crypto/external/bsd/openssl/dist/crypto/md4/md4_local.h index a6c4003fdbc..5f05720e976 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md4/md4_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/md4/md4_local.h @@ -31,7 +31,7 @@ void md4_block_data_order(MD4_CTX *c, const void *p, size_t num); } while (0) #define HASH_BLOCK_DATA_ORDER md4_block_data_order -#include "internal/md32_common.h" +#include "crypto/md32_common.h" /*- #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) @@ -53,7 +53,7 @@ void md4_block_data_order(MD4_CTX *c, const void *p, size_t num); #define R1(a,b,c,d,k,s,t) { \ a+=((k)+(t)+G((b),(c),(d))); \ - a=ROTATE(a,s); };\ + a=ROTATE(a,s); }; #define R2(a,b,c,d,k,s,t) { \ a+=((k)+(t)+H((b),(c),(d))); \ diff --git a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-586.pl b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-586.pl index 15e14864d19..7986a2413da 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -43,7 +43,7 @@ $X="esi"; &md5_block("md5_block_asm_data_order"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub Np { diff --git a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-sparcv9.pl index 6a62c625318..3595e3d32fc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -434,4 +434,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-x86_64.pl index 386d8048ec0..c6a172d448c 100755 --- a/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/md5/asm/md5-x86_64.pl @@ -1,6 +1,6 @@ #! /usr/bin/env perl # Author: Marc Bevand <bevand_m (at) epita.fr> -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -390,4 +390,4 @@ ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/md5/md5_dgst.c b/crypto/external/bsd/openssl/dist/crypto/md5/md5_dgst.c index ac2e9c68882..7d0029376a2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md5/md5_dgst.c +++ b/crypto/external/bsd/openssl/dist/crypto/md5/md5_dgst.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "md5_locl.h" +#include "md5_local.h" #include <openssl/opensslv.h> /* @@ -37,10 +37,10 @@ int MD5_Init(MD5_CTX *c) void md5_block_data_order(MD5_CTX *c, const void *data_, size_t num) { const unsigned char *data = data_; - register MD32_REG_T A, B, C, D, l; + register unsigned MD32_REG_T A, B, C, D, l; # ifndef MD32_XARRAY - /* See comment in crypto/sha/sha_locl.h for details. */ - MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, + /* See comment in crypto/sha/sha_local.h for details. */ + unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15; # define X(i) XX##i # else diff --git a/crypto/external/bsd/openssl/dist/crypto/md5/md5_locl.h b/crypto/external/bsd/openssl/dist/crypto/md5/md5_local.h index 4eb7e50ef4d..b0087bea81c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/md5/md5_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/md5/md5_local.h @@ -42,7 +42,7 @@ void md5_block_data_order(MD5_CTX *c, const void *p, size_t num); } while (0) #define HASH_BLOCK_DATA_ORDER md5_block_data_order -#include "internal/md32_common.h" +#include "crypto/md32_common.h" /*- #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) @@ -62,7 +62,7 @@ void md5_block_data_order(MD5_CTX *c, const void *p, size_t num); #define R0(a,b,c,d,k,s,t) { \ a+=((k)+(t)+F((b),(c),(d))); \ a=ROTATE(a,s); \ - a+=b; };\ + a+=b; }; #define R1(a,b,c,d,k,s,t) { \ a+=((k)+(t)+G((b),(c),(d))); \ diff --git a/crypto/external/bsd/openssl/dist/crypto/mem.c b/crypto/external/bsd/openssl/dist/crypto/mem.c index 780053ffeff..2b39ca3a104 100644 --- a/crypto/external/bsd/openssl/dist/crypto/mem.c +++ b/crypto/external/bsd/openssl/dist/crypto/mem.c @@ -9,7 +9,7 @@ #include "e_os.h" #include "internal/cryptlib.h" -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" #include <stdio.h> #include <stdlib.h> #include <limits.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/mips_arch.h b/crypto/external/bsd/openssl/dist/crypto/mips_arch.h index e18ac07210c..4ae1a1a9339 100644 --- a/crypto/external/bsd/openssl/dist/crypto/mips_arch.h +++ b/crypto/external/bsd/openssl/dist/crypto/mips_arch.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef __MIPS_ARCH_H__ -# define __MIPS_ARCH_H__ +#ifndef OSSL_CRYPTO_MIPS_ARCH_H +# define OSSL_CRYPTO_MIPS_ARCH_H # if (defined(__mips_smartmips) || defined(_MIPS_ARCH_MIPS32R3) || \ defined(_MIPS_ARCH_MIPS32R5) || defined(_MIPS_ARCH_MIPS32R6)) \ diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/aesni-gcm-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/aesni-gcm-x86_64.pl index b42016101eb..959efedb0de 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/aesni-gcm-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/aesni-gcm-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -90,6 +90,7 @@ $code=<<___; .type _aesni_ctr32_ghash_6x,\@abi-omnipotent .align 32 _aesni_ctr32_ghash_6x: +.cfi_startproc vmovdqu 0x20($const),$T2 # borrow $T2, .Lone_msb sub \$6,$len vpxor $Z0,$Z0,$Z0 # $Z0 = 0 @@ -397,6 +398,7 @@ _aesni_ctr32_ghash_6x: vpxor $Z0,$Xi,$Xi # modulo-scheduled ret +.cfi_endproc .size _aesni_ctr32_ghash_6x,.-_aesni_ctr32_ghash_6x ___ ###################################################################### @@ -543,6 +545,7 @@ $code.=<<___; .type _aesni_ctr32_6x,\@abi-omnipotent .align 32 _aesni_ctr32_6x: +.cfi_startproc vmovdqu 0x00-0x80($key),$Z0 # borrow $Z0 for $rndkey vmovdqu 0x20($const),$T2 # borrow $T2, .Lone_msb lea -1($rounds),%r13 @@ -629,6 +632,7 @@ _aesni_ctr32_6x: vpshufb $Ii,$T1,$T1 # next counter value vpxor $Z0,$inout5,$inout5 jmp .Loop_ctr32 +.cfi_endproc .size _aesni_ctr32_6x,.-_aesni_ctr32_6x .globl aesni_gcm_encrypt @@ -1079,15 +1083,19 @@ $code=<<___; # assembler is too old .globl aesni_gcm_encrypt .type aesni_gcm_encrypt,\@abi-omnipotent aesni_gcm_encrypt: +.cfi_startproc xor %eax,%eax ret +.cfi_endproc .size aesni_gcm_encrypt,.-aesni_gcm_encrypt .globl aesni_gcm_decrypt .type aesni_gcm_decrypt,\@abi-omnipotent aesni_gcm_decrypt: +.cfi_startproc xor %eax,%eax ret +.cfi_endproc .size aesni_gcm_decrypt,.-aesni_gcm_decrypt ___ }}} @@ -1096,4 +1104,4 @@ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-alpha.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-alpha.pl index ccf6b2bd6fa..d80920723b0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-alpha.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-alpha.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -463,5 +463,5 @@ rem_4bit: ___ $output=pop and open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-armv4.pl index dcc23f7d7db..d84ac6f2bf4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -548,4 +548,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-c64xplus.pl index 3cadda39945..5826dcbdfe6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -244,4 +244,4 @@ $code.=<<___; ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-ia64.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-ia64.pl index eb9ded91e5b..6e29f995fa8 100755 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-ia64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-ia64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -467,4 +467,4 @@ $code =~ s/mux1(\s+)\S+\@rev/nop.i$1 0x0/gm if ($big_endian); $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-parisc.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-parisc.pl index a614c99c22c..d798b7abf49 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-parisc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-parisc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -745,4 +745,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-s390x.pl index 17dc375053c..2f3ca295bdc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -259,4 +259,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-sparcv9.pl index c4eb3b1f020..ccebc74b4e9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -578,4 +578,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86.pl index bcbe6e399d1..4183d99b68b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1378,7 +1378,7 @@ my ($Xhi,$Xi)=@_; &asciz("GHASH for x86, CRYPTOGAMS by <appro\@openssl.org>"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; # A question was risen about choice of vanilla MMX. Or rather why wasn't # SSE2 chosen instead? In addition to the fact that MMX runs on legacy diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86_64.pl index 6b2a51ecd77..0a0bfd575ce 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghash-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -116,7 +116,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -1815,4 +1815,4 @@ $code =~ s/\`([^\`]*)\`/eval($1)/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashp8-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashp8-ppc.pl index 6a2ac712950..447472cb459 100755 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashp8-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashp8-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -668,4 +668,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashv8-armx.pl b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashv8-armx.pl index 47e88200806..d0e398b50ae 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashv8-armx.pl +++ b/crypto/external/bsd/openssl/dist/crypto/modes/asm/ghashv8-armx.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -778,4 +778,4 @@ if ($flavour =~ /64/) { ######## 64-bit code } } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/cbc128.c b/crypto/external/bsd/openssl/dist/crypto/modes/cbc128.c index 4ce5eb2ae34..fc7e0b60510 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/cbc128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/cbc128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> #if !defined(STRICT_ALIGNMENT) && !defined(PEDANTIC) diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/ccm128.c b/crypto/external/bsd/openssl/dist/crypto/modes/ccm128.c index 05a33239f56..424722811c1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/ccm128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/ccm128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/cfb128.c b/crypto/external/bsd/openssl/dist/crypto/modes/cfb128.c index e439567fe59..b6bec414a96 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/cfb128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/cfb128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/ctr128.c b/crypto/external/bsd/openssl/dist/crypto/modes/ctr128.c index 03920b44733..ae35116e952 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/ctr128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/ctr128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/cts128.c b/crypto/external/bsd/openssl/dist/crypto/modes/cts128.c index 93826a1e2f0..9052e857764 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/cts128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/cts128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/gcm128.c b/crypto/external/bsd/openssl/dist/crypto/modes/gcm128.c index 0583026a810..e48233fca63 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/gcm128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/gcm128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> #if defined(BSWAP4) && defined(STRICT_ALIGNMENT) diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/modes_lcl.h b/crypto/external/bsd/openssl/dist/crypto/modes/modes_local.h index f2ae01d11af..f2ae01d11af 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/modes_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/modes/modes_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/ocb128.c b/crypto/external/bsd/openssl/dist/crypto/modes/ocb128.c index 713b9aaf19d..b39a55a1a14 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/ocb128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/ocb128.c @@ -10,7 +10,7 @@ #include <string.h> #include <openssl/crypto.h> #include <openssl/err.h> -#include "modes_lcl.h" +#include "modes_local.h" #ifndef OPENSSL_NO_OCB diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/ofb128.c b/crypto/external/bsd/openssl/dist/crypto/modes/ofb128.c index 83092564c6b..44bdf888db1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/ofb128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/ofb128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> /* diff --git a/crypto/external/bsd/openssl/dist/crypto/modes/xts128.c b/crypto/external/bsd/openssl/dist/crypto/modes/xts128.c index 81b1eacd592..b5bda5e6402 100644 --- a/crypto/external/bsd/openssl/dist/crypto/modes/xts128.c +++ b/crypto/external/bsd/openssl/dist/crypto/modes/xts128.c @@ -8,7 +8,7 @@ */ #include <openssl/crypto.h> -#include "modes_lcl.h" +#include "modes_local.h" #include <string.h> int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/o_names.c b/crypto/external/bsd/openssl/dist/crypto/objects/o_names.c index c4355370cb1..979d83577c2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/o_names.c +++ b/crypto/external/bsd/openssl/dist/crypto/objects/o_names.c @@ -17,8 +17,8 @@ #include <openssl/safestack.h> #include <openssl/e_os2.h> #include "internal/thread_once.h" -#include "internal/lhash.h" -#include "obj_lcl.h" +#include "crypto/lhash.h" +#include "obj_local.h" #include "e_os.h" /* diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.c b/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.c index ef2d1e0ddaf..46006fe6cf9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.c +++ b/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.c @@ -8,15 +8,15 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <limits.h> #include "internal/cryptlib.h" #include <openssl/lhash.h> #include <openssl/asn1.h> -#include "internal/objects.h" +#include "crypto/objects.h" #include <openssl/bn.h> -#include "internal/asn1_int.h" -#include "obj_lcl.h" +#include "crypto/asn1.h" +#include "obj_local.h" /* obj_dat.h is generated from objects.h by obj_dat.pl */ #include "obj_dat.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.h b/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.h index ea91db660b6..d1b1bc7faf9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.h +++ b/crypto/external/bsd/openssl/dist/crypto/objects/obj_dat.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/objects/obj_dat.pl * - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at @@ -1728,8 +1728,8 @@ static const ASN1_OBJECT nid_objs[NUM_NID] = { {"ITU-T", "itu-t", NID_itu_t}, {"JOINT-ISO-ITU-T", "joint-iso-itu-t", NID_joint_iso_itu_t}, {"international-organizations", "International Organizations", NID_international_organizations, 1, &so[4439]}, - {"msSmartcardLogin", "Microsoft Smartcardlogin", NID_ms_smartcard_login, 10, &so[4440]}, - {"msUPN", "Microsoft Universal Principal Name", NID_ms_upn, 10, &so[4450]}, + {"msSmartcardLogin", "Microsoft Smartcard Login", NID_ms_smartcard_login, 10, &so[4440]}, + {"msUPN", "Microsoft User Principal Name", NID_ms_upn, 10, &so[4450]}, {"AES-128-CFB1", "aes-128-cfb1", NID_aes_128_cfb1}, {"AES-192-CFB1", "aes-192-cfb1", NID_aes_192_cfb1}, {"AES-256-CFB1", "aes-256-cfb1", NID_aes_256_cfb1}, @@ -3578,9 +3578,9 @@ static const unsigned int ln_objs[NUM_LN] = { 134, /* "Microsoft Individual Code Signing" */ 856, /* "Microsoft Local Key set" */ 137, /* "Microsoft Server Gated Crypto" */ - 648, /* "Microsoft Smartcardlogin" */ + 648, /* "Microsoft Smartcard Login" */ 136, /* "Microsoft Trust List Signing" */ - 649, /* "Microsoft Universal Principal Name" */ + 649, /* "Microsoft User Principal Name" */ 393, /* "NULL" */ 404, /* "NULL" */ 72, /* "Netscape Base Url" */ diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/obj_lib.c b/crypto/external/bsd/openssl/dist/crypto/objects/obj_lib.c index acbdeec2c98..456a1598cec 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/obj_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/objects/obj_lib.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/buffer.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o) { diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/obj_lcl.h b/crypto/external/bsd/openssl/dist/crypto/objects/obj_local.h index a417f7c46ef..a417f7c46ef 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/obj_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/objects/obj_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/obj_xref.h b/crypto/external/bsd/openssl/dist/crypto/objects/obj_xref.h index 9144d569dcd..1ca04bbff19 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/obj_xref.h +++ b/crypto/external/bsd/openssl/dist/crypto/objects/obj_xref.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by objxref.pl * - * Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/crypto/objects/objects.txt b/crypto/external/bsd/openssl/dist/crypto/objects/objects.txt index 5b2bb54eb92..c49d4c568b5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/objects/objects.txt +++ b/crypto/external/bsd/openssl/dist/crypto/objects/objects.txt @@ -426,9 +426,9 @@ rsadsi 3 8 : RC5-CBC : rc5-cbc !Cname ms-efs 1 3 6 1 4 1 311 10 3 4 : msEFS : Microsoft Encrypted File System !Cname ms-smartcard-login -1 3 6 1 4 1 311 20 2 2 : msSmartcardLogin : Microsoft Smartcardlogin +1 3 6 1 4 1 311 20 2 2 : msSmartcardLogin : Microsoft Smartcard Login !Cname ms-upn -1 3 6 1 4 1 311 20 2 3 : msUPN : Microsoft Universal Principal Name +1 3 6 1 4 1 311 20 2 3 : msUPN : Microsoft User Principal Name 1 3 6 1 4 1 188 7 1 1 2 : IDEA-CBC : idea-cbc : IDEA-ECB : idea-ecb diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_asn.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_asn.c index 1e0b82797bd..a869e32bc8b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_asn.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_asn.c @@ -10,7 +10,7 @@ #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" ASN1_SEQUENCE(OCSP_SIGNATURE) = { ASN1_EMBED(OCSP_SIGNATURE, signatureAlgorithm, X509_ALGOR), diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_cl.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_cl.c index 739ac01807a..55ffd45c6ec 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_cl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_cl.c @@ -16,7 +16,7 @@ #include <openssl/pem.h> #include <openssl/x509v3.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" /* * Utility functions related to sending OCSP requests and extracting relevant diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ext.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ext.c index 3ab5308a12b..f6c387ffb7d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ext.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ext.c @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/x509.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" #include <openssl/rand.h> #include <openssl/x509v3.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ht.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ht.c index 42c36864313..ba408bc86f9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ht.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_ht.c @@ -10,7 +10,7 @@ #include "e_os.h" #include <stdio.h> #include <stdlib.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <string.h> #include <openssl/asn1.h> #include <openssl/ocsp.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lib.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lib.c index b8b91cc9eb3..37ac6c03fd0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lib.c @@ -14,7 +14,7 @@ #include <openssl/pem.h> #include <openssl/x509v3.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" #include <openssl/asn1t.h> /* Convert a certificate and its issuer to an OCSP_CERTID */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lcl.h b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_local.h index 36646fdfc97..36646fdfc97 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_prn.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_prn.c index 5605812ef74..1965f2a183b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_prn.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_prn.c @@ -10,7 +10,7 @@ #include <openssl/bio.h> #include <openssl/err.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" #include "internal/cryptlib.h" #include <openssl/pem.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_srv.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_srv.c index 6bd6f7b6d89..e35fc52fd94 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_srv.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_srv.c @@ -14,7 +14,7 @@ #include <openssl/pem.h> #include <openssl/x509v3.h> #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" /* * Utility functions related to sending OCSP responses and extracting diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_vfy.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_vfy.c index 9a8d3438662..e87b71c0c79 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_vfy.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/ocsp_vfy.c @@ -8,7 +8,7 @@ */ #include <openssl/ocsp.h> -#include "ocsp_lcl.h" +#include "ocsp_local.h" #include <openssl/err.h> #include <string.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ocsp/v3_ocsp.c b/crypto/external/bsd/openssl/dist/crypto/ocsp/v3_ocsp.c index 2d425a8951d..a174ce15a60 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ocsp/v3_ocsp.c +++ b/crypto/external/bsd/openssl/dist/crypto/ocsp/v3_ocsp.c @@ -12,7 +12,7 @@ # include <openssl/conf.h> # include <openssl/asn1.h> # include <openssl/ocsp.h> -# include "ocsp_lcl.h" +# include "ocsp_local.h" # include <openssl/x509v3.h> # include "../x509v3/ext_dat.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/pariscid.pl b/crypto/external/bsd/openssl/dist/crypto/pariscid.pl index 5a231c49f02..f4d364754a1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pariscid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/pariscid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -272,5 +272,5 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/pem/pem_all.c b/crypto/external/bsd/openssl/dist/crypto/pem/pem_all.c index 0e718131134..9d57ee7cc2e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pem/pem_all.c +++ b/crypto/external/bsd/openssl/dist/crypto/pem/pem_all.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -84,9 +84,8 @@ IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, - RSAPublicKey) IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, - PEM_STRING_PUBLIC, - RSA_PUBKEY) + RSAPublicKey) +IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY) #endif #ifndef OPENSSL_NO_DSA static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa) @@ -115,7 +114,7 @@ DSA *PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey) - IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) +IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) # ifndef OPENSSL_NO_STDIO DSA *PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u) { @@ -176,6 +175,6 @@ EC_KEY *PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, #ifndef OPENSSL_NO_DH IMPLEMENT_PEM_write_const(DHparams, DH, PEM_STRING_DHPARAMS, DHparams) - IMPLEMENT_PEM_write_const(DHxparams, DH, PEM_STRING_DHXPARAMS, DHxparams) +IMPLEMENT_PEM_write_const(DHxparams, DH, PEM_STRING_DHXPARAMS, DHxparams) #endif IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY) diff --git a/crypto/external/bsd/openssl/dist/crypto/pem/pem_lib.c b/crypto/external/bsd/openssl/dist/crypto/pem/pem_lib.c index 4bb86463fae..64baf7108ea 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pem/pem_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/pem/pem_lib.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <string.h> #include "internal/cryptlib.h" #include <openssl/buffer.h> @@ -18,7 +18,7 @@ #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/pkcs12.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #include <openssl/des.h> #include <openssl/engine.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/pem/pem_pkey.c b/crypto/external/bsd/openssl/dist/crypto/pem/pem_pkey.c index aa032d2b1ca..e58cdf4a3e0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pem/pem_pkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/pem/pem_pkey.c @@ -17,8 +17,8 @@ #include <openssl/pem.h> #include <openssl/engine.h> #include <openssl/dh.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" int pem_check_suffix(const char *pem_str, const char *suffix); diff --git a/crypto/external/bsd/openssl/dist/crypto/pem/pvkfmt.c b/crypto/external/bsd/openssl/dist/crypto/pem/pvkfmt.c index 2bbee4a306e..1fc19c17f91 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pem/pvkfmt.c +++ b/crypto/external/bsd/openssl/dist/crypto/pem/pvkfmt.c @@ -844,9 +844,9 @@ static int i2b_PVK(unsigned char **out, EVP_PKEY *pk, int enclevel, if (!EVP_EncryptInit_ex(cctx, EVP_rc4(), NULL, keybuf, NULL)) goto error; OPENSSL_cleanse(keybuf, 20); - if (!EVP_DecryptUpdate(cctx, p, &enctmplen, p, pklen - 8)) + if (!EVP_EncryptUpdate(cctx, p, &enctmplen, p, pklen - 8)) goto error; - if (!EVP_DecryptFinal_ex(cctx, p + enctmplen, &enctmplen)) + if (!EVP_EncryptFinal_ex(cctx, p + enctmplen, &enctmplen)) goto error; } diff --git a/crypto/external/bsd/openssl/dist/crypto/perlasm/README b/crypto/external/bsd/openssl/dist/crypto/perlasm/README index 3177c371654..59f2c95515f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/perlasm/README +++ b/crypto/external/bsd/openssl/dist/crypto/perlasm/README @@ -35,7 +35,7 @@ Functions of interest are: &function_begin_B(name,extra) Same as normal function_begin but no pushing. &function_end(name) Call at end of function. &function_end_A(name) Standard pop and ret, for use inside functions -&function_end_B(name) Call at end but with poping or 'ret'. +&function_end_B(name) Call at end but with pop or ret. &swtmp(num) Address on stack temp word. &wparam(num) Parameter number num, that was push in C convention. This all works over pushes diff --git a/crypto/external/bsd/openssl/dist/crypto/perlasm/arm-xlate.pl b/crypto/external/bsd/openssl/dist/crypto/perlasm/arm-xlate.pl index ca2f8b990b9..48819be5405 100755 --- a/crypto/external/bsd/openssl/dist/crypto/perlasm/arm-xlate.pl +++ b/crypto/external/bsd/openssl/dist/crypto/perlasm/arm-xlate.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -174,4 +174,4 @@ while(my $line=<>) { print "\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/perlasm/ppc-xlate.pl b/crypto/external/bsd/openssl/dist/crypto/perlasm/ppc-xlate.pl index d220c6245b5..08668b295bf 100755 --- a/crypto/external/bsd/openssl/dist/crypto/perlasm/ppc-xlate.pl +++ b/crypto/external/bsd/openssl/dist/crypto/perlasm/ppc-xlate.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -341,4 +341,4 @@ while($line=<>) { print "\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/perlasm/x86_64-xlate.pl b/crypto/external/bsd/openssl/dist/crypto/perlasm/x86_64-xlate.pl index 29a0eacfd53..59af6df9c20 100755 --- a/crypto/external/bsd/openssl/dist/crypto/perlasm/x86_64-xlate.pl +++ b/crypto/external/bsd/openssl/dist/crypto/perlasm/x86_64-xlate.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1216,7 +1216,7 @@ while(defined(my $line=<>)) { print "\n$current_segment\tENDS\n" if ($current_segment && $masm); print "END\n" if ($masm); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; ################################################# # Cross-reference x86_64 ABI "card" diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_add.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_add.c index 193ed8097dc..af184c86af5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_add.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_add.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" /* Pack an object into an OCTET STRING and turn into a safebag */ diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_asn.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_asn.c index 422dfc398fa..88f145890cf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_asn.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_asn.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" /* PKCS#12 ASN1 module */ diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_attr.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_attr.c index c324f505146..a958fdf3465 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_attr.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_attr.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" /* Add a local keyid to a safebag */ diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_crt.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_crt.c index 10cf8dd589d..bfcae3f697e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_crt.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_crt.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag); @@ -62,7 +62,8 @@ PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 * if (pkey && cert) { if (!X509_check_private_key(cert, pkey)) return NULL; - X509_digest(cert, EVP_sha1(), keyid, &keyidlen); + if (!X509_digest(cert, EVP_sha1(), keyid, &keyidlen)) + return NULL; } if (cert) { diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_init.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_init.c index 88db0f2dc4f..7ecc29ec0ce 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_init.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_init.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" /* Initialise a PKCS12 structure to take data */ diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_lcl.h b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_local.h index 0b52f1e1fed..0b52f1e1fed 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_mutl.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_mutl.c index 0cbbed364a2..3658003fe59 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_mutl.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_mutl.c @@ -13,7 +13,7 @@ #include <openssl/hmac.h> #include <openssl/rand.h> #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" int PKCS12_mac_present(const PKCS12 *p12) { diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_npas.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_npas.c index 0ce75ed330e..0334289a89f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_npas.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_npas.c @@ -13,7 +13,7 @@ #include <openssl/pem.h> #include <openssl/err.h> #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" /* PKCS#12 password change routine */ diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_p8e.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_p8e.c index 86a07e1335e..05fc388a996 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_p8e.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_p8e.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, const char *pass, int passlen, diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_sbag.c b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_sbag.c index a09c5b93132..7cf522786b0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_sbag.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs12/p12_sbag.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/pkcs12.h> -#include "p12_lcl.h" +#include "p12_local.h" #if OPENSSL_API_COMPAT < 0x10100000L ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid) diff --git a/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_lib.c b/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_lib.c index 16b76431d1b..ec4d9abd587 100644 --- a/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/pkcs7/pk7_lib.c @@ -11,8 +11,8 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) { diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv4.pl index 5cdb6be0591..f77e1170f66 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1250,4 +1250,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv8.pl index 6c6c9bb05be..9bfee275957 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -943,4 +943,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-mips.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-mips.pl index 28b6772ee5f..965825dc3ed 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-mips.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -433,5 +433,5 @@ ___ $output=pop and open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppc.pl index 0c6d015d585..e5d6933ac4d 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -642,4 +642,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppcfp.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppcfp.pl index 09f81858484..a9ab2071469 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppcfp.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-ppcfp.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -736,4 +736,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-s390x.pl index 82d757d9a1c..bcc8fd3b886 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -224,4 +224,4 @@ $code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/\b(srlg\s+)(%r[0-9]+\s*,)\s*([0-9]+)/$1$2$2$3/gm; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-sparcv9.pl index 0bdd0489254..997e0d8344c 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1117,4 +1117,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86.pl index 1e09ddcc10d..4aaf63a0a1d 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -71,7 +71,7 @@ if ($sse2) { $avx = ($1>=2.09) + ($1>=2.10); } - if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9]\.[0-9]+)/) { + if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } } @@ -1812,4 +1812,4 @@ sub vlazy_reduction { &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86_64.pl index 342ad7f18aa..c014be1ca9f 100755 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/asm/poly1305-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -90,7 +90,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=12); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -168,6 +168,7 @@ $code.=<<___; .type poly1305_init,\@function,3 .align 32 poly1305_init: +.cfi_startproc xor %rax,%rax mov %rax,0($ctx) # initialize hash value mov %rax,8($ctx) @@ -219,6 +220,7 @@ $code.=<<___; mov \$1,%eax .Lno_key: ret +.cfi_endproc .size poly1305_init,.-poly1305_init .type poly1305_blocks,\@function,4 @@ -298,6 +300,7 @@ $code.=<<___; .type poly1305_emit,\@function,3 .align 32 poly1305_emit: +.cfi_startproc .Lemit: mov 0($ctx),%r8 # load hash value mov 8($ctx),%r9 @@ -318,6 +321,7 @@ poly1305_emit: mov %rcx,8($mac) ret +.cfi_endproc .size poly1305_emit,.-poly1305_emit ___ if ($avx) { @@ -342,15 +346,18 @@ $code.=<<___; .type __poly1305_block,\@abi-omnipotent .align 32 __poly1305_block: +.cfi_startproc ___ &poly1305_iteration(); $code.=<<___; ret +.cfi_endproc .size __poly1305_block,.-__poly1305_block .type __poly1305_init_avx,\@abi-omnipotent .align 32 __poly1305_init_avx: +.cfi_startproc mov $r0,$h0 mov $r1,$h1 xor $h2,$h2 @@ -508,6 +515,7 @@ __poly1305_init_avx: lea -48-64($ctx),$ctx # size [de-]optimization ret +.cfi_endproc .size __poly1305_init_avx,.-__poly1305_init_avx .type poly1305_blocks_avx,\@function,4 @@ -1373,6 +1381,7 @@ $code.=<<___; .type poly1305_emit_avx,\@function,3 .align 32 poly1305_emit_avx: +.cfi_startproc cmpl \$0,20($ctx) # is_base2_26? je .Lemit @@ -1423,6 +1432,7 @@ poly1305_emit_avx: mov %rcx,8($mac) ret +.cfi_endproc .size poly1305_emit_avx,.-poly1305_emit_avx ___ @@ -2741,6 +2751,7 @@ $code.=<<___; .type poly1305_init_base2_44,\@function,3 .align 32 poly1305_init_base2_44: +.cfi_startproc xor %rax,%rax mov %rax,0($ctx) # initialize hash value mov %rax,8($ctx) @@ -2782,6 +2793,7 @@ ___ $code.=<<___; mov \$1,%eax ret +.cfi_endproc .size poly1305_init_base2_44,.-poly1305_init_base2_44 ___ { @@ -2793,6 +2805,7 @@ $code.=<<___; .type poly1305_blocks_vpmadd52,\@function,4 .align 32 poly1305_blocks_vpmadd52: +.cfi_startproc shr \$4,$len jz .Lno_data_vpmadd52 # too short @@ -2899,6 +2912,7 @@ poly1305_blocks_vpmadd52: .Lno_data_vpmadd52: ret +.cfi_endproc .size poly1305_blocks_vpmadd52,.-poly1305_blocks_vpmadd52 ___ } @@ -2916,6 +2930,7 @@ $code.=<<___; .type poly1305_blocks_vpmadd52_4x,\@function,4 .align 32 poly1305_blocks_vpmadd52_4x: +.cfi_startproc shr \$4,$len jz .Lno_data_vpmadd52_4x # too short @@ -3340,6 +3355,7 @@ poly1305_blocks_vpmadd52_4x: .Lno_data_vpmadd52_4x: ret +.cfi_endproc .size poly1305_blocks_vpmadd52_4x,.-poly1305_blocks_vpmadd52_4x ___ } @@ -3358,6 +3374,7 @@ $code.=<<___; .type poly1305_blocks_vpmadd52_8x,\@function,4 .align 32 poly1305_blocks_vpmadd52_8x: +.cfi_startproc shr \$4,$len jz .Lno_data_vpmadd52_8x # too short @@ -3713,6 +3730,7 @@ $code.=<<___; .Lno_data_vpmadd52_8x: ret +.cfi_endproc .size poly1305_blocks_vpmadd52_8x,.-poly1305_blocks_vpmadd52_8x ___ } @@ -3720,6 +3738,7 @@ $code.=<<___; .type poly1305_emit_base2_44,\@function,3 .align 32 poly1305_emit_base2_44: +.cfi_startproc mov 0($ctx),%r8 # load hash value mov 8($ctx),%r9 mov 16($ctx),%r10 @@ -3750,6 +3769,7 @@ poly1305_emit_base2_44: mov %rcx,8($mac) ret +.cfi_endproc .size poly1305_emit_base2_44,.-poly1305_emit_base2_44 ___ } } } @@ -3800,6 +3820,7 @@ $code.=<<___; .type xor128_encrypt_n_pad,\@abi-omnipotent .align 16 xor128_encrypt_n_pad: +.cfi_startproc sub $otp,$inp sub $otp,$out mov $len,%r10 # put len aside @@ -3841,12 +3862,14 @@ xor128_encrypt_n_pad: .Ldone_enc: mov $otp,%rax ret +.cfi_endproc .size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad .globl xor128_decrypt_n_pad .type xor128_decrypt_n_pad,\@abi-omnipotent .align 16 xor128_decrypt_n_pad: +.cfi_startproc sub $otp,$inp sub $otp,$out mov $len,%r10 # put len aside @@ -3892,6 +3915,7 @@ xor128_decrypt_n_pad: .Ldone_dec: mov $otp,%rax ret +.cfi_endproc .size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad ___ } @@ -4156,4 +4180,4 @@ foreach (split('\n',$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305.c b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305.c index 1d182364aee..e7f5b92c8f3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305.c +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305.c @@ -11,7 +11,7 @@ #include <string.h> #include <openssl/crypto.h> -#include "internal/poly1305.h" +#include "crypto/poly1305.h" #include "poly1305_local.h" size_t Poly1305_ctx_size(void) @@ -89,7 +89,7 @@ static void poly1305_blocks(void *ctx, const unsigned char *inp, size_t len, u32 padbit); /* - * Type-agnostic "rip-off" from constant_time_locl.h + * Type-agnostic "rip-off" from constant_time.h */ # define CONSTANT_TIME_CARRY(a,b) ( \ (a ^ ((a ^ b) | ((a - b) ^ b))) >> (sizeof(a) * 8 - 1) \ diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_ameth.c b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_ameth.c index 033ee8cd969..0c8a91dc79d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_ameth.c @@ -10,10 +10,10 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/asn1_int.h" -#include "internal/poly1305.h" +#include "crypto/asn1.h" +#include "crypto/poly1305.h" #include "poly1305_local.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" /* * POLY1305 "ASN1" method. This is just here to indicate the maximum diff --git a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_pmeth.c index 3bc24c98cd6..49a799a12f5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/poly1305/poly1305_pmeth.c @@ -13,9 +13,9 @@ #include <openssl/x509v3.h> #include <openssl/evp.h> #include <openssl/err.h> -#include "internal/poly1305.h" +#include "crypto/poly1305.h" #include "poly1305_local.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" /* POLY1305 pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ppc_arch.h b/crypto/external/bsd/openssl/dist/crypto/ppc_arch.h index 72bd7468745..e3845e9394a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ppc_arch.h +++ b/crypto/external/bsd/openssl/dist/crypto/ppc_arch.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_PPC_ARCH_H -# define HEADER_PPC_ARCH_H +#ifndef OSSL_CRYPTO_PPC_ARCH_H +# define OSSL_CRYPTO_PPC_ARCH_H extern unsigned int OPENSSL_ppccap_P; diff --git a/crypto/external/bsd/openssl/dist/crypto/ppccap.c b/crypto/external/bsd/openssl/dist/crypto/ppccap.c index 5593847fc26..8043bbfb71a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ppccap.c +++ b/crypto/external/bsd/openssl/dist/crypto/ppccap.c @@ -29,8 +29,8 @@ #include <openssl/crypto.h> #include <openssl/bn.h> #include <internal/cryptlib.h> -#include <internal/chacha.h> -#include "bn/bn_lcl.h" +#include <crypto/chacha.h> +#include "bn/bn_local.h" #include "ppc_arch.h" @@ -160,6 +160,37 @@ void ecp_nistz256_from_mont(unsigned long res[4], const unsigned long in[4]) } #endif +size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, + size_t r); +void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); + +size_t SHA3_absorb_default(uint64_t A[5][5], const unsigned char *inp, + size_t len, size_t r); +void SHA3_squeeze_default(uint64_t A[5][5], unsigned char *out, size_t len, + size_t r); + +size_t SHA3_absorb_vsx(uint64_t A[5][5], const unsigned char *inp, + size_t len, size_t r); +void SHA3_squeeze_vsx(uint64_t A[5][5], unsigned char *out, size_t len, + size_t r); + +size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, + size_t r) +{ + return OPENSSL_ppccap_P & PPC_CRYPTO207 + ? SHA3_absorb_vsx(A, inp, len, r) + : SHA3_absorb_default(A, inp, len, r); +} + +void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r) +{ + OPENSSL_ppccap_P & PPC_CRYPTO207 + ? SHA3_absorb_vsx(A, out, len, r) + : SHA3_squeeze_default(A, out, len, r); +} + + + static sigjmp_buf ill_jmp; static void ill_handler(int sig) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl b/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl index 53e86bd3542..2065cbb84b1 100755 --- a/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ppccpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -128,27 +128,6 @@ Ladd: lwarx r5,0,r3 .align 4 .OPENSSL_rdtsc_mftb: mftb r3 -___ -$code.=<<___ if ($flavour !~ /64/); - mfspr r0,287 - srwi r0,r0,0x10 - cmplwi r0,0x1 - bgt .Loop_rdtsc -.Loop_rdtsc_601: - mfrtcu r5 - mfrtcl r3 - mfrtcu r4 - cmplw r4,r5 - bne .Loop_rdtsc_601 - blr -Loop_rdtsc: - mftbu r5 - mftb r3 - mftbu r4 - cmplw r4,r5 - bne Loop_rdtsc -___ -$code.=<<___; blr .long 0 .byte 0,12,0x14,0,0,0,0,0 @@ -400,4 +379,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/build.info b/crypto/external/bsd/openssl/dist/crypto/rand/build.info index df9bac67f04..a4e7900bdbf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/build.info +++ b/crypto/external/bsd/openssl/dist/crypto/rand/build.info @@ -2,3 +2,5 @@ LIBS=../../libcrypto SOURCE[../../libcrypto]=\ randfile.c rand_lib.c rand_err.c rand_egd.c \ rand_win.c rand_unix.c rand_vms.c drbg_lib.c drbg_ctr.c + +INCLUDE[drbg_ctr.o]=../modes diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/drbg_ctr.c b/crypto/external/bsd/openssl/dist/crypto/rand/drbg_ctr.c index a243361b56e..0f0ad1b37be 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/drbg_ctr.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/drbg_ctr.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,28 +12,25 @@ #include <openssl/crypto.h> #include <openssl/err.h> #include <openssl/rand.h> +#include "modes_local.h" #include "internal/thread_once.h" -#include "internal/thread_once.h" -#include "rand_lcl.h" +#include "rand_local.h" + /* * Implementation of NIST SP 800-90A CTR DRBG. */ static void inc_128(RAND_DRBG_CTR *ctr) { - int i; - unsigned char c; - unsigned char *p = &ctr->V[15]; - - for (i = 0; i < 16; i++, p--) { - c = *p; - c++; - *p = c; - if (c != 0) { - /* If we didn't wrap around, we're done. */ - break; - } - } + unsigned char *p = &ctr->V[0]; + u32 n = 16, c = 1; + + do { + --n; + c += p[n]; + p[n] = (u8)c; + c >>= 8; + } while (n); } static void ctr_XOR(RAND_DRBG_CTR *ctr, const unsigned char *in, size_t inlen) diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/drbg_lib.c b/crypto/external/bsd/openssl/dist/crypto/rand/drbg_lib.c index 12bb627a04e..faf0590c6c2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/drbg_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/drbg_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,10 +11,10 @@ #include <openssl/crypto.h> #include <openssl/err.h> #include <openssl/rand.h> -#include "rand_lcl.h" +#include "rand_local.h" #include "internal/thread_once.h" -#include "internal/rand_int.h" -#include "internal/cryptlib_int.h" +#include "crypto/rand.h" +#include "crypto/cryptlib.h" /* * Support framework for NIST SP 800-90A DRBG @@ -1044,7 +1044,7 @@ static int drbg_add(const void *buf, int num, double randomness) return ret; #else /* - * If an os entropy source is avaible then we declare the buffer content + * If an os entropy source is available then we declare the buffer content * as additional data by setting randomness to zero and trigger a regular * reseeding. */ diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_err.c b/crypto/external/bsd/openssl/dist/crypto/rand/rand_err.c index ae4d8559fb2..a3ae5f53c29 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_err.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,6 +14,8 @@ #ifndef OPENSSL_NO_ERR static const ERR_STRING_DATA RAND_str_functs[] = { + {ERR_PACK(ERR_LIB_RAND, RAND_F_DATA_COLLECT_METHOD, 0), + "data_collect_method"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_DRBG_BYTES, 0), "drbg_bytes"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_DRBG_GET_ENTROPY, 0), "drbg_get_entropy"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_DRBG_SETUP, 0), "drbg_setup"}, @@ -49,6 +51,7 @@ static const ERR_STRING_DATA RAND_str_functs[] = { "rand_pool_bytes_needed"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_RAND_POOL_GROW, 0), "rand_pool_grow"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_RAND_POOL_NEW, 0), "rand_pool_new"}, + {ERR_PACK(ERR_LIB_RAND, RAND_F_RAND_PSEUDO_BYTES, 0), "RAND_pseudo_bytes"}, {ERR_PACK(ERR_LIB_RAND, RAND_F_RAND_WRITE_FILE, 0), "RAND_write_file"}, {0, NULL} }; diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_lib.c b/crypto/external/bsd/openssl/dist/crypto/rand/rand_lib.c index 91b26523110..ab4e9b5486c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,10 +11,10 @@ #include <time.h> #include "internal/cryptlib.h" #include <openssl/opensslconf.h> -#include "internal/rand_int.h" +#include "crypto/rand.h" #include <openssl/engine.h> #include "internal/thread_once.h" -#include "rand_lcl.h" +#include "rand_local.h" #include "e_os.h" #ifndef OPENSSL_NO_ENGINE @@ -386,6 +386,9 @@ int RAND_poll(void) const RAND_METHOD *meth = RAND_get_rand_method(); + if (meth == NULL) + return 0; + if (meth == RAND_OpenSSL()) { /* fill random pool and seed the master DRBG */ RAND_DRBG *drbg = RAND_DRBG_get0_master(); @@ -765,7 +768,7 @@ int rand_pool_add(RAND_POOL *pool, * is returned without producing an error message. * * After updating the buffer, rand_pool_add_end() needs to be called - * to finish the udpate operation (see next comment). + * to finish the update operation (see next comment). */ unsigned char *rand_pool_add_begin(RAND_POOL *pool, size_t len) { @@ -896,7 +899,7 @@ void RAND_seed(const void *buf, int num) { const RAND_METHOD *meth = RAND_get_rand_method(); - if (meth->seed != NULL) + if (meth != NULL && meth->seed != NULL) meth->seed(buf, num); } @@ -904,7 +907,7 @@ void RAND_add(const void *buf, int num, double randomness) { const RAND_METHOD *meth = RAND_get_rand_method(); - if (meth->add != NULL) + if (meth != NULL && meth->add != NULL) meth->add(buf, num, randomness); } @@ -917,24 +920,22 @@ int RAND_priv_bytes(unsigned char *buf, int num) { const RAND_METHOD *meth = RAND_get_rand_method(); RAND_DRBG *drbg; - int ret; - if (meth != RAND_OpenSSL()) + if (meth != NULL && meth != RAND_OpenSSL()) return RAND_bytes(buf, num); drbg = RAND_DRBG_get0_private(); - if (drbg == NULL) - return 0; + if (drbg != NULL) + return RAND_DRBG_bytes(drbg, buf, num); - ret = RAND_DRBG_bytes(drbg, buf, num); - return ret; + return 0; } int RAND_bytes(unsigned char *buf, int num) { const RAND_METHOD *meth = RAND_get_rand_method(); - if (meth->bytes != NULL) + if (meth != NULL && meth->bytes != NULL) return meth->bytes(buf, num); RANDerr(RAND_F_RAND_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED); return -1; @@ -945,8 +946,9 @@ int RAND_pseudo_bytes(unsigned char *buf, int num) { const RAND_METHOD *meth = RAND_get_rand_method(); - if (meth->pseudorand != NULL) + if (meth != NULL && meth->pseudorand != NULL) return meth->pseudorand(buf, num); + RANDerr(RAND_F_RAND_PSEUDO_BYTES, RAND_R_FUNC_NOT_IMPLEMENTED); return -1; } #endif @@ -955,7 +957,7 @@ int RAND_status(void) { const RAND_METHOD *meth = RAND_get_rand_method(); - if (meth->status != NULL) + if (meth != NULL && meth->status != NULL) return meth->status(); return 0; } diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_lcl.h b/crypto/external/bsd/openssl/dist/crypto/rand/rand_local.h index 306c59f6efa..1bc9bf7d266 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_RAND_LCL_H -# define HEADER_RAND_LCL_H +#ifndef OSSL_CRYPTO_RAND_LOCAL_H +# define OSSL_CRYPTO_RAND_LOCAL_H # include <openssl/aes.h> # include <openssl/evp.h> @@ -82,7 +82,7 @@ * Typically, the DRBGs will set a minimum larger than this so optimal * allocation ought to take place (for full quality seed material). * - * The normal value has been chosed by noticing that the rand_drbg_get_nonce + * The normal value has been chosen by noticing that the rand_drbg_get_nonce * function is usually the largest of the built in allocation (twenty four * bytes and then appending another sixteen bytes). This means the buffer ends * with 40 bytes. The value of forty eight is comfortably above this which diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_unix.c b/crypto/external/bsd/openssl/dist/crypto/rand/rand_unix.c index 0914b0094d6..fe457cab4a3 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_unix.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_unix.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,8 +15,8 @@ #include "internal/cryptlib.h" #include <openssl/rand.h> #include <openssl/crypto.h> -#include "rand_lcl.h" -#include "internal/rand_int.h" +#include "rand_local.h" +#include "crypto/rand.h" #include <stdio.h> #include "internal/dso.h" #ifdef __linux @@ -80,7 +80,8 @@ static uint64_t get_timer_bits(void); # define OSSL_POSIX_TIMER_OKAY # endif # endif -#endif /* defined(OPENSSL_SYS_UNIX) || defined(__DJGPP__) */ +#endif /* (defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_SYS_VXWORKS)) + || defined(__DJGPP__) */ #if defined(OPENSSL_RAND_SEED_NONE) /* none means none. this simplifies the following logic */ @@ -282,12 +283,58 @@ static ssize_t sysctl_random(char *buf, size_t buflen) # if defined(OPENSSL_RAND_SEED_GETRANDOM) # if defined(__linux) && !defined(__NR_getrandom) -# if defined(__arm__) && defined(__NR_SYSCALL_BASE) +# if defined(__arm__) # define __NR_getrandom (__NR_SYSCALL_BASE+384) # elif defined(__i386__) # define __NR_getrandom 355 -# elif defined(__x86_64__) && !defined(__ILP32__) -# define __NR_getrandom 318 +# elif defined(__x86_64__) +# if defined(__ILP32__) +# define __NR_getrandom (__X32_SYSCALL_BIT + 318) +# else +# define __NR_getrandom 318 +# endif +# elif defined(__xtensa__) +# define __NR_getrandom 338 +# elif defined(__s390__) || defined(__s390x__) +# define __NR_getrandom 349 +# elif defined(__bfin__) +# define __NR_getrandom 389 +# elif defined(__powerpc__) +# define __NR_getrandom 359 +# elif defined(__mips__) || defined(__mips64) +# if _MIPS_SIM == _MIPS_SIM_ABI32 +# define __NR_getrandom (__NR_Linux + 353) +# elif _MIPS_SIM == _MIPS_SIM_ABI64 +# define __NR_getrandom (__NR_Linux + 313) +# elif _MIPS_SIM == _MIPS_SIM_NABI32 +# define __NR_getrandom (__NR_Linux + 317) +# endif +# elif defined(__hppa__) +# define __NR_getrandom (__NR_Linux + 339) +# elif defined(__sparc__) +# define __NR_getrandom 347 +# elif defined(__ia64__) +# define __NR_getrandom 1339 +# elif defined(__alpha__) +# define __NR_getrandom 511 +# elif defined(__sh__) +# if defined(__SH5__) +# define __NR_getrandom 373 +# else +# define __NR_getrandom 384 +# endif +# elif defined(__avr32__) +# define __NR_getrandom 317 +# elif defined(__microblaze__) +# define __NR_getrandom 385 +# elif defined(__m68k__) +# define __NR_getrandom 352 +# elif defined(__cris__) +# define __NR_getrandom 356 +# elif defined(__aarch64__) +# define __NR_getrandom 278 +# else /* generic */ +# define __NR_getrandom 278 # endif # endif @@ -479,7 +526,7 @@ static int get_random_device(size_t n) return rd->fd; /* open the random device ... */ - if ((rd->fd = open(random_device_paths[n], O_RDONLY|O_CLOEXEC)) == -1) + if ((rd->fd = open(random_device_paths[n], O_RDONLY)) == -1) return rd->fd; /* ... and cache its relevant stat(2) data */ @@ -814,4 +861,5 @@ static uint64_t get_timer_bits(void) # endif return time(NULL); } -#endif /* defined(OPENSSL_SYS_UNIX) || defined(__DJGPP__) */ +#endif /* (defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_SYS_VXWORKS)) + || defined(__DJGPP__) */ diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_vms.c b/crypto/external/bsd/openssl/dist/crypto/rand/rand_vms.c index e1e1c0b9db8..61c2f102997 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_vms.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_vms.c @@ -1,5 +1,5 @@ /* - * Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -13,9 +13,11 @@ # define __NEW_STARLET 1 /* New starlet definitions since VMS 7.0 */ # include <unistd.h> # include "internal/cryptlib.h" +# include <openssl/bio.h> +# include <openssl/err.h> # include <openssl/rand.h> -# include "internal/rand_int.h" -# include "rand_lcl.h" +# include "crypto/rand.h" +# include "rand_local.h" # include <descrip.h> # include <dvidef.h> # include <jpidef.h> @@ -32,10 +34,21 @@ # pragma message disable DOLLARID # endif +# include <dlfcn.h> /* SYS$GET_ENTROPY presence */ + # ifndef OPENSSL_RAND_SEED_OS # error "Unsupported seeding method configured; must be os" # endif +/* + * DATA COLLECTION METHOD + * ====================== + * + * This is a method to get low quality entropy. + * It works by collecting all kinds of statistical data that + * VMS offers and using them as random seed. + */ + /* We need to make sure we have the right size pointer in some cases */ # if __INITIAL_POINTER_SIZE == 64 # pragma pointer_size save @@ -330,7 +343,7 @@ static void massage_JPI(ILE3 *items) */ #define ENTROPY_FACTOR 20 -size_t rand_pool_acquire_entropy(RAND_POOL *pool) +size_t data_collect_method(RAND_POOL *pool) { ILE3 JPI_items_64bit[OSSL_NELEM(JPI_item_data_64bit) + 1]; ILE3 RMI_items_64bit[OSSL_NELEM(RMI_item_data_64bit) + 1]; @@ -445,15 +458,12 @@ size_t rand_pool_acquire_entropy(RAND_POOL *pool) * If we can't feed the requirements from the caller, we're in deep trouble. */ if (!ossl_assert(total_length >= bytes_needed)) { - char neededstr[20]; - char availablestr[20]; - - BIO_snprintf(neededstr, sizeof(neededstr), "%zu", bytes_needed); - BIO_snprintf(availablestr, sizeof(availablestr), "%zu", total_length); - RANDerr(RAND_F_RAND_POOL_ACQUIRE_ENTROPY, - RAND_R_RANDOM_POOL_UNDERFLOW); - ERR_add_error_data(4, "Needed: ", neededstr, ", Available: ", - availablestr); + char buf[100]; /* That should be enough */ + + BIO_snprintf(buf, sizeof(buf), "Needed: %zu, Available: %zu", + bytes_needed, total_length); + RANDerr(RAND_F_DATA_COLLECT_METHOD, RAND_R_RANDOM_POOL_UNDERFLOW); + ERR_add_error_data(1, buf); return 0; } @@ -480,7 +490,7 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) /* * Add process id, thread id, and a high resolution timestamp * (where available, which is OpenVMS v8.4 and up) to ensure that - * the nonce is unique whith high probability for different process + * the nonce is unique with high probability for different process * instances. */ data.pid = getpid(); @@ -494,6 +504,80 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) return rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0); } +/* + * SYS$GET_ENTROPY METHOD + * ====================== + * + * This is a high entropy method based on a new system service that is + * based on getentropy() from FreeBSD 12. It's only used if available, + * and its availability is detected at run-time. + * + * We assume that this function provides full entropy random output. + */ +#define PUBLIC_VECTORS "SYS$LIBRARY:SYS$PUBLIC_VECTORS.EXE" +#define GET_ENTROPY "SYS$GET_ENTROPY" + +static int get_entropy_address_flag = 0; +static int (*get_entropy_address)(void *buffer, size_t buffer_size) = NULL; +static int init_get_entropy_address(void) +{ + if (get_entropy_address_flag == 0) + get_entropy_address = dlsym(dlopen(PUBLIC_VECTORS, 0), GET_ENTROPY); + get_entropy_address_flag = 1; + return get_entropy_address != NULL; +} + +size_t get_entropy_method(RAND_POOL *pool) +{ + /* + * The documentation says that SYS$GET_ENTROPY will give a maximum of + * 256 bytes of data. + */ + unsigned char buffer[256]; + size_t bytes_needed; + size_t bytes_to_get = 0; + uint32_t status; + + for (bytes_needed = rand_pool_bytes_needed(pool, 1); + bytes_needed > 0; + bytes_needed -= bytes_to_get) { + bytes_to_get = + bytes_needed > sizeof(buffer) ? sizeof(buffer) : bytes_needed; + + status = get_entropy_address(buffer, bytes_to_get); + if (status == SS$_RETRY) { + /* Set to zero so the loop doesn't diminish |bytes_needed| */ + bytes_to_get = 0; + /* Should sleep some amount of time */ + continue; + } + + if (status != SS$_NORMAL) { + lib$signal(status); + return 0; + } + + rand_pool_add(pool, buffer, bytes_to_get, 8 * bytes_to_get); + } + + return rand_pool_entropy_available(pool); +} + +/* + * MAIN ENTROPY ACQUISITION FUNCTIONS + * ================================== + * + * These functions are called by the RAND / DRBG functions + */ + +size_t rand_pool_acquire_entropy(RAND_POOL *pool) +{ + if (init_get_entropy_address()) + return get_entropy_method(pool); + return data_collect_method(pool); +} + + int rand_pool_add_additional_data(RAND_POOL *pool) { struct { diff --git a/crypto/external/bsd/openssl/dist/crypto/rand/rand_win.c b/crypto/external/bsd/openssl/dist/crypto/rand/rand_win.c index a9c5751f1a2..90365460085 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rand/rand_win.c +++ b/crypto/external/bsd/openssl/dist/crypto/rand/rand_win.c @@ -9,8 +9,8 @@ #include "internal/cryptlib.h" #include <openssl/rand.h> -#include "rand_lcl.h" -#include "internal/rand_int.h" +#include "rand_local.h" +#include "crypto/rand.h" #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) # ifndef OPENSSL_RAND_SEED_OS @@ -130,7 +130,7 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) /* * Add process id, thread id, and a high resolution timestamp to - * ensure that the nonce is unique whith high probability for + * ensure that the nonce is unique with high probability for * different process instances. */ data.pid = GetCurrentProcessId(); diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_cbc.c b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_cbc.c index ef2b058f0e4..da5d61b04b6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_cbc.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_cbc.c @@ -8,7 +8,7 @@ */ #include <openssl/rc2.h> -#include "rc2_locl.h" +#include "rc2_local.h" void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, RC2_KEY *ks, unsigned char *iv, int encrypt) diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_ecb.c b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_ecb.c index 6d063ac2d24..abeae088db5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/rc2.h> -#include "rc2_locl.h" +#include "rc2_local.h" #include <openssl/opensslv.h> /*- diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_locl.h b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_local.h index ce83496dc53..fe21002db47 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_local.h @@ -6,13 +6,14 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -#include <stdint.h> + +#include <inttypes.h> #undef c2l -#define c2l(c,l) (l =((uint32_t)(*((c)++))) , \ - l|=((uint32_t)(*((c)++)))<< 8L, \ - l|=((uint32_t)(*((c)++)))<<16L, \ - l|=((uint32_t)(*((c)++)))<<24L) +#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<<24L) /* NOTE - c is not incremented as per c2l */ #undef c2ln @@ -20,14 +21,21 @@ c+=n; \ l1=l2=0; \ switch (n) { \ - case 8: l2 =((uint32_t)(*(--(c))))<<24L; \ - case 7: l2|=((uint32_t)(*(--(c))))<<16L; \ - case 6: l2|=((uint32_t)(*(--(c))))<< 8L; \ - case 5: l2|=((uint32_t)(*(--(c)))); \ - case 4: l1 =((uint32_t)(*(--(c))))<<24L; \ - case 3: l1|=((uint32_t)(*(--(c))))<<16L; \ - case 2: l1|=((uint32_t)(*(--(c))))<< 8L; \ - case 1: l1|=((uint32_t)(*(--(c)))); \ + case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ + /* fall thru */ \ + case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ + /* fall thru */ \ + case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ + /* fall thru */ \ + case 5: l2|=((unsigned long)(*(--(c)))); \ + /* fall thru */ \ + case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ + /* fall thru */ \ + case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ + /* fall thru */ \ + case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ + /* fall thru */ \ + case 1: l1|=((unsigned long)(*(--(c)))); \ } \ } @@ -65,14 +73,21 @@ c+=n; \ l1=l2=0; \ switch (n) { \ - case 8: l2 =((uint32_t)(*(--(c)))) ; \ - case 7: l2|=((uint32_t)(*(--(c))))<< 8; \ - case 6: l2|=((uint32_t)(*(--(c))))<<16; \ - case 5: l2|=((uint32_t)(*(--(c))))<<24; \ - case 4: l1 =((uint32_t)(*(--(c)))) ; \ - case 3: l1|=((uint32_t)(*(--(c))))<< 8; \ - case 2: l1|=((uint32_t)(*(--(c))))<<16; \ - case 1: l1|=((uint32_t)(*(--(c))))<<24; \ + case 8: l2 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 6: l2|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 5: l2|=((unsigned long)(*(--(c))))<<24; \ + /* fall thru */ \ + case 4: l1 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 2: l1|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 1: l1|=((unsigned long)(*(--(c))))<<24; \ } \ } @@ -99,10 +114,10 @@ } #undef n2l -#define n2l(c,l) (l =((uint32_t)(*((c)++)))<<24L, \ - l|=((uint32_t)(*((c)++)))<<16L, \ - l|=((uint32_t)(*((c)++)))<< 8L, \ - l|=((uint32_t)(*((c)++)))) +#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))) #undef l2n #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \ diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_skey.c b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_skey.c index 55d8ba37155..60ebd42f263 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2_skey.c @@ -8,7 +8,7 @@ */ #include <openssl/rc2.h> -#include "rc2_locl.h" +#include "rc2_local.h" static const unsigned char key_table[256] = { 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2cfb64.c b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2cfb64.c index e75c51f6dfb..33b1f720062 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2cfb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2cfb64.c @@ -8,7 +8,7 @@ */ #include <openssl/rc2.h> -#include "rc2_locl.h" +#include "rc2_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2ofb64.c b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2ofb64.c index 3c1ebf6e510..dc161932dd0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc2/rc2ofb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc2/rc2ofb64.c @@ -8,7 +8,7 @@ */ #include <openssl/rc2.h> -#include "rc2_locl.h" +#include "rc2_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-586.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-586.pl index 8c5cf87d05c..3a936de1f9a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -423,4 +423,4 @@ $idx="edx"; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-c64xplus.pl index 1354d182149..b12d044af46 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -189,4 +189,4 @@ ___ $output=pop; open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-md5-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-md5-x86_64.pl index 74e5191051e..7aa5c21bd83 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-md5-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-md5-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -484,6 +484,7 @@ $code.=<<___; .type RC4_set_key,\@function,3 .align 16 RC4_set_key: +.cfi_startproc lea 8($dat),$dat lea ($inp,$len),$inp neg $len @@ -519,6 +520,7 @@ RC4_set_key: mov %eax,-8($dat) mov %eax,-4($dat) ret +.cfi_endproc .size RC4_set_key,.-RC4_set_key .globl RC4_options @@ -658,4 +660,4 @@ $code =~ s/#rc4#//gm if ($rc4); print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-parisc.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-parisc.pl index 4111f339dae..631e742b739 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-parisc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-parisc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -330,4 +330,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-s390x.pl index 469f110fafe..dded0b75e7f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -184,7 +184,7 @@ $code.=<<___; RC4_set_key: stm${g} %r6,%r8,6*$SIZE_T($sp) lhi $cnt,256 - la $idx,0(%r0) + la $idx,0 sth $idx,0($key) .align 4 .L1stloop: @@ -194,8 +194,8 @@ RC4_set_key: lghi $ikey,-256 lr $cnt,$len - la $iinp,0(%r0) - la $idx,0(%r0) + la $iinp,0 + la $idx,0 .align 16 .L2ndloop: llgc $acc,2+256($ikey,$key) @@ -212,7 +212,7 @@ RC4_set_key: jz .Ldone brct $cnt,.L2ndloop lr $cnt,$len - la $iinp,0(%r0) + la $iinp,0 j .L2ndloop .Ldone: lm${g} %r6,%r8,6*$SIZE_T($sp) @@ -238,4 +238,4 @@ RC4_options: ___ print $code; -close STDOUT; # force flush +close STDOUT or die "error closing STDOUT: $!"; # force flush diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl index 1a9cc47d725..423eb5b4a99 100755 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/asm/rc4-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -138,11 +138,12 @@ $code=<<___; .globl RC4 .type RC4,\@function,4 .align 16 -RC4: or $len,$len +RC4: +.cfi_startproc + or $len,$len jne .Lentry ret .Lentry: -.cfi_startproc push %rbx .cfi_push %rbx push %r12 @@ -453,6 +454,7 @@ $code.=<<___; .type RC4_set_key,\@function,3 .align 16 RC4_set_key: +.cfi_startproc lea 8($dat),$dat lea ($inp,$len),$inp neg $len @@ -519,12 +521,14 @@ RC4_set_key: mov %eax,-8($dat) mov %eax,-4($dat) ret +.cfi_endproc .size RC4_set_key,.-RC4_set_key .globl RC4_options .type RC4_options,\@abi-omnipotent .align 16 RC4_options: +.cfi_startproc lea .Lopts(%rip),%rax mov OPENSSL_ia32cap_P(%rip),%edx bt \$20,%edx @@ -537,6 +541,7 @@ RC4_options: add \$12,%rax .Ldone: ret +.cfi_endproc .align 64 .Lopts: .asciz "rc4(8x,int)" @@ -693,4 +698,4 @@ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_enc.c b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_enc.c index 638a75bb06a..09ef6a896f0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_enc.c @@ -8,7 +8,7 @@ */ #include <openssl/rc4.h> -#include "rc4_locl.h" +#include "rc4_local.h" /*- * RC4 as implemented from a posting from diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_locl.h b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_local.h index 4380addbccb..e739be4be79 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_RC4_LOCL_H -# define HEADER_RC4_LOCL_H +#ifndef OSSL_CRYPTO_RC4_LOCAL_H +# define OSSL_CRYPTO_RC4_LOCAL_H # include <openssl/opensslconf.h> # include "internal/cryptlib.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_skey.c b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_skey.c index e9007331eb3..100eb79c2ad 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc4/rc4_skey.c @@ -8,7 +8,7 @@ */ #include <openssl/rc4.h> -#include "rc4_locl.h" +#include "rc4_local.h" #include <openssl/opensslv.h> const char *RC4_options(void) diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/asm/rc5-586.pl b/crypto/external/bsd/openssl/dist/crypto/rc5/asm/rc5-586.pl index e58a98bc83b..af11be81625 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/asm/rc5-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/asm/rc5-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -32,7 +32,7 @@ $tmp4="edx"; &cbc("RC5_32_cbc_encrypt","RC5_32_encrypt","RC5_32_decrypt",0,4,5,3,-1,-1); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub RC5_32_encrypt { diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_ecb.c b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_ecb.c index 32011afcb0e..28ba9dc0710 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_ecb.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_ecb.c @@ -8,7 +8,7 @@ */ #include <openssl/rc5.h> -#include "rc5_locl.h" +#include "rc5_local.h" #include <openssl/opensslv.h> void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_enc.c b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_enc.c index 5448fb763df..1b997a26b46 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_enc.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_enc.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <openssl/rc5.h> -#include "rc5_locl.h" +#include "rc5_local.h" void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, RC5_32_KEY *ks, unsigned char *iv, diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_locl.h b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_local.h index bfd8bf0d029..41130fe33be 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_local.h @@ -10,10 +10,10 @@ #include <stdlib.h> #undef c2l -#define c2l(c,l) (l =((RC5_32_INT)(*((c)++))) , \ - l|=((RC5_32_INT)(*((c)++)))<< 8L, \ - l|=((RC5_32_INT)(*((c)++)))<<16L, \ - l|=((RC5_32_INT)(*((c)++)))<<24L) +#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<<24L) /* NOTE - c is not incremented as per c2l */ #undef c2ln @@ -21,14 +21,21 @@ c+=n; \ l1=l2=0; \ switch (n) { \ - case 8: l2 =((RC5_32_INT)(*(--(c))))<<24L; \ - case 7: l2|=((RC5_32_INT)(*(--(c))))<<16L; \ - case 6: l2|=((RC5_32_INT)(*(--(c))))<< 8L; \ - case 5: l2|=((RC5_32_INT)(*(--(c)))); \ - case 4: l1 =((RC5_32_INT)(*(--(c))))<<24L; \ - case 3: l1|=((RC5_32_INT)(*(--(c))))<<16L; \ - case 2: l1|=((RC5_32_INT)(*(--(c))))<< 8L; \ - case 1: l1|=((RC5_32_INT)(*(--(c)))); \ + case 8: l2 =((unsigned long)(*(--(c))))<<24L; \ + /* fall thru */ \ + case 7: l2|=((unsigned long)(*(--(c))))<<16L; \ + /* fall thru */ \ + case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \ + /* fall thru */ \ + case 5: l2|=((unsigned long)(*(--(c)))); \ + /* fall thru */ \ + case 4: l1 =((unsigned long)(*(--(c))))<<24L; \ + /* fall thru */ \ + case 3: l1|=((unsigned long)(*(--(c))))<<16L; \ + /* fall thru */ \ + case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \ + /* fall thru */ \ + case 1: l1|=((unsigned long)(*(--(c)))); \ } \ } @@ -66,14 +73,21 @@ c+=n; \ l1=l2=0; \ switch (n) { \ - case 8: l2 =((RC5_32_INT)(*(--(c)))) ; \ - case 7: l2|=((RC5_32_INT)(*(--(c))))<< 8; \ - case 6: l2|=((RC5_32_INT)(*(--(c))))<<16; \ - case 5: l2|=((RC5_32_INT)(*(--(c))))<<24; \ - case 4: l1 =((RC5_32_INT)(*(--(c)))) ; \ - case 3: l1|=((RC5_32_INT)(*(--(c))))<< 8; \ - case 2: l1|=((RC5_32_INT)(*(--(c))))<<16; \ - case 1: l1|=((RC5_32_INT)(*(--(c))))<<24; \ + case 8: l2 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 7: l2|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 6: l2|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 5: l2|=((unsigned long)(*(--(c))))<<24; \ + /* fall thru */ \ + case 4: l1 =((unsigned long)(*(--(c)))) ; \ + /* fall thru */ \ + case 3: l1|=((unsigned long)(*(--(c))))<< 8; \ + /* fall thru */ \ + case 2: l1|=((unsigned long)(*(--(c))))<<16; \ + /* fall thru */ \ + case 1: l1|=((unsigned long)(*(--(c))))<<24; \ } \ } @@ -100,10 +114,10 @@ } #undef n2l -#define n2l(c,l) (l =((RC5_32_INT)(*((c)++)))<<24L, \ - l|=((RC5_32_INT)(*((c)++)))<<16L, \ - l|=((RC5_32_INT)(*((c)++)))<< 8L, \ - l|=((RC5_32_INT)(*((c)++)))) +#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \ + l|=((unsigned long)(*((c)++)))<<16L, \ + l|=((unsigned long)(*((c)++)))<< 8L, \ + l|=((unsigned long)(*((c)++)))) #undef l2n #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \ diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_skey.c b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_skey.c index 943a7849bb8..b2e6bbb1af2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5_skey.c @@ -8,7 +8,7 @@ */ #include <openssl/rc5.h> -#include "rc5_locl.h" +#include "rc5_local.h" void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, int rounds) diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5cfb64.c b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5cfb64.c index bc3f5dad009..43538e93a7d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5cfb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5cfb64.c @@ -8,7 +8,7 @@ */ #include <openssl/rc5.h> -#include "rc5_locl.h" +#include "rc5_local.h" /* * The input and output encrypted as though 64bit cfb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5ofb64.c b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5ofb64.c index f17e275edd7..7ed03b970ed 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rc5/rc5ofb64.c +++ b/crypto/external/bsd/openssl/dist/crypto/rc5/rc5ofb64.c @@ -8,7 +8,7 @@ */ #include <openssl/rc5.h> -#include "rc5_locl.h" +#include "rc5_local.h" /* * The input and output encrypted as though 64bit ofb mode is being used. diff --git a/crypto/external/bsd/openssl/dist/crypto/ripemd/asm/rmd-586.pl b/crypto/external/bsd/openssl/dist/crypto/ripemd/asm/rmd-586.pl index 84aa7ced17c..e8d02812ba5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ripemd/asm/rmd-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/ripemd/asm/rmd-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -70,7 +70,7 @@ $KR3=0x7A6D76E9; &ripemd160_block("ripemd160_block_asm_data_order"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; sub Xv { diff --git a/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_dgst.c b/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_dgst.c index aa4787d4ae4..e9e440f18c1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_dgst.c +++ b/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_dgst.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "rmd_locl.h" +#include "rmd_local.h" #include <openssl/opensslv.h> #ifdef RMD160_ASM @@ -36,11 +36,11 @@ int RIPEMD160_Init(RIPEMD160_CTX *c) void ripemd160_block_data_order(RIPEMD160_CTX *ctx, const void *p, size_t num) { const unsigned char *data = p; - register MD32_REG_T A, B, C, D, E; - MD32_REG_T a, b, c, d, e, l; + register unsigned MD32_REG_T A, B, C, D, E; + unsigned MD32_REG_T a, b, c, d, e, l; # ifndef MD32_XARRAY - /* See comment in crypto/sha/sha_locl.h for details. */ - MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, + /* See comment in crypto/sha/sha_local.h for details. */ + unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15; # define X(i) XX##i # else diff --git a/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_locl.h b/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_local.h index f1ae4323ca9..f3604e34900 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ripemd/rmd_local.h @@ -13,7 +13,7 @@ #include <openssl/ripemd.h> /* - * DO EXAMINE COMMENTS IN crypto/md5/md5_locl.h & crypto/md5/md5_dgst.c + * DO EXAMINE COMMENTS IN crypto/md5/md5_local.h & crypto/md5/md5_dgst.c * FOR EXPLANATIONS ON FOLLOWING "CODE." */ #ifdef RMD160_ASM @@ -42,7 +42,7 @@ void ripemd160_block_data_order(RIPEMD160_CTX *c, const void *p, size_t num); } while (0) #define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order -#include "internal/md32_common.h" +#include "crypto/md32_common.h" /* * Transformed F2 and F4 are courtesy of Wei Dai diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ameth.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ameth.c index 9dcb85d8375..6692a51ed8f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ameth.c @@ -13,9 +13,9 @@ #include <openssl/x509.h> #include <openssl/bn.h> #include <openssl/cms.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" -#include "rsa_locl.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" +#include "rsa_local.h" #ifndef OPENSSL_NO_CMS static int rsa_cms_sign(CMS_SignerInfo *si); diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_asn1.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_asn1.c index 9fe62c82eb2..e8df8d762e1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_asn1.c @@ -12,7 +12,7 @@ #include <openssl/bn.h> #include <openssl/x509.h> #include <openssl/asn1t.h> -#include "rsa_locl.h" +#include "rsa_local.h" /* * Override the default free and new methods, diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_chk.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_chk.c index 1b69be30ca4..b4ba7fce3ff 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_chk.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_chk.c @@ -9,7 +9,7 @@ #include <openssl/bn.h> #include <openssl/err.h> -#include "rsa_locl.h" +#include "rsa_local.h" int RSA_check_key(const RSA *key) { diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_crpt.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_crpt.c index f4ef8b4381f..f1131ce9e0a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_crpt.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_crpt.c @@ -10,9 +10,9 @@ #include <stdio.h> #include <openssl/crypto.h> #include "internal/cryptlib.h" -#include "internal/bn_int.h" +#include "crypto/bn.h" #include <openssl/rand.h> -#include "rsa_locl.h" +#include "rsa_local.h" int RSA_bits(const RSA *r) { diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c index 2b818088606..29056a62a1a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c @@ -17,7 +17,7 @@ #include <time.h> #include "internal/cryptlib.h" #include <openssl/bn.h> -#include "rsa_locl.h" +#include "rsa_local.h" static int rsa_builtin_keygen(RSA *rsa, int bits, int primes, BIGNUM *e_value, BN_GENCB *cb); diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_lib.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_lib.c index e737a28898c..63fd1a6db49 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_lib.c @@ -11,11 +11,11 @@ #include <openssl/crypto.h> #include "internal/cryptlib.h" #include "internal/refcount.h" -#include "internal/bn_int.h" +#include "crypto/bn.h" #include <openssl/engine.h> #include <openssl/evp.h> -#include "internal/evp_int.h" -#include "rsa_locl.h" +#include "crypto/evp.h" +#include "rsa_local.h" RSA *RSA_new(void) { @@ -451,6 +451,11 @@ const BIGNUM *RSA_get0_iqmp(const RSA *r) return r->iqmp; } +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r) +{ + return r->pss; +} + void RSA_clear_flags(RSA *r, int flags) { r->flags &= ~flags; diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_locl.h b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_local.h index 2b94462a94c..2b94462a94c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_meth.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_meth.c index def19f375f9..2845b79db8e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_meth.c @@ -8,7 +8,7 @@ */ #include <string.h> -#include "rsa_locl.h" +#include "rsa_local.h" #include <openssl/err.h> RSA_METHOD *RSA_meth_new(const char *name, int flags) diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_mp.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_mp.c index e7e810823b2..44dda8f800b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_mp.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_mp.c @@ -10,7 +10,7 @@ #include <openssl/bn.h> #include <openssl/err.h> -#include "rsa_locl.h" +#include "rsa_local.h" void rsa_multip_info_free_ex(RSA_PRIME_INFO *pinfo) { diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c index 48b888bf27a..302360a9641 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_oaep.c @@ -20,7 +20,7 @@ * one-wayness. For the RSA function, this is an equivalent notion. */ -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" #include <stdio.h> #include "internal/cryptlib.h" @@ -28,7 +28,7 @@ #include <openssl/evp.h> #include <openssl/rand.h> #include <openssl/sha.h> -#include "rsa_locl.h" +#include "rsa_local.h" int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, const unsigned char *from, int flen, diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c index c8c3b7886aa..b52a66f6a62 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ossl.c @@ -8,9 +8,9 @@ */ #include "internal/cryptlib.h" -#include "internal/bn_int.h" -#include "rsa_locl.h" -#include "internal/constant_time_locl.h" +#include "crypto/bn.h" +#include "rsa_local.h" +#include "internal/constant_time.h" static int rsa_ossl_public_encrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c index 5260d12f4c9..a3d0b7cef81 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pk1.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" #include <stdio.h> #include "internal/cryptlib.h" @@ -57,7 +57,7 @@ int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, * D - data. */ - if (num < 11) + if (num < RSA_PKCS1_PADDING_SIZE) return -1; /* Accept inputs with and without the leading 0-byte. */ @@ -120,7 +120,7 @@ int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, int i, j; unsigned char *p; - if (flen > (tlen - 11)) { + if (flen > (tlen - RSA_PKCS1_PADDING_SIZE)) { RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE); return 0; @@ -169,7 +169,7 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, * section 7.2.2. */ - if (flen > num || num < 11) { + if (flen > num || num < RSA_PKCS1_PADDING_SIZE) { RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2, RSA_R_PKCS_DECODING_ERROR); return -1; @@ -226,8 +226,8 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, good &= constant_time_ge(tlen, mlen); /* - * Move the result in-place by |num|-11-|mlen| bytes to the left. - * Then if |good| move |mlen| bytes from |em|+11 to |to|. + * Move the result in-place by |num|-RSA_PKCS1_PADDING_SIZE-|mlen| bytes to the left. + * Then if |good| move |mlen| bytes from |em|+RSA_PKCS1_PADDING_SIZE to |to|. * Otherwise leave |to| unchanged. * Copy the memory back in a way that does not reveal the size of * the data being copied via a timing side channel. This requires copying @@ -235,16 +235,16 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, * length. Clear bits do a non-copy with identical access pattern. * The loop below has overall complexity of O(N*log(N)). */ - tlen = constant_time_select_int(constant_time_lt(num - 11, tlen), - num - 11, tlen); - for (msg_index = 1; msg_index < num - 11; msg_index <<= 1) { - mask = ~constant_time_eq(msg_index & (num - 11 - mlen), 0); - for (i = 11; i < num - msg_index; i++) + tlen = constant_time_select_int(constant_time_lt(num - RSA_PKCS1_PADDING_SIZE, tlen), + num - RSA_PKCS1_PADDING_SIZE, tlen); + for (msg_index = 1; msg_index < num - RSA_PKCS1_PADDING_SIZE; msg_index <<= 1) { + mask = ~constant_time_eq(msg_index & (num - RSA_PKCS1_PADDING_SIZE - mlen), 0); + for (i = RSA_PKCS1_PADDING_SIZE; i < num - msg_index; i++) em[i] = constant_time_select_8(mask, em[i + msg_index], em[i]); } for (i = 0; i < tlen; i++) { mask = good & constant_time_lt(i, mlen); - to[i] = constant_time_select_8(mask, em[i + 11], to[i]); + to[i] = constant_time_select_8(mask, em[i + RSA_PKCS1_PADDING_SIZE], to[i]); } OPENSSL_clear_free(em, num); diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pmeth.c index 082ab8fd8a1..0eb21c8af97 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pmeth.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" #include <stdio.h> #include "internal/cryptlib.h" @@ -18,8 +18,8 @@ #include <openssl/evp.h> #include <openssl/x509v3.h> #include <openssl/cms.h> -#include "internal/evp_int.h" -#include "rsa_locl.h" +#include "crypto/evp.h" +#include "rsa_local.h" /* RSA pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pss.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pss.c index f7c575d00ab..40ce1c4d378 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pss.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_pss.c @@ -14,7 +14,7 @@ #include <openssl/evp.h> #include <openssl/rand.h> #include <openssl/sha.h> -#include "rsa_locl.h" +#include "rsa_local.h" static const unsigned char zeroes[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_sign.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_sign.c index 952d24fb8ae..7fc69361bf0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_sign.c @@ -13,8 +13,8 @@ #include <openssl/rsa.h> #include <openssl/objects.h> #include <openssl/x509.h> -#include "internal/x509_int.h" -#include "rsa_locl.h" +#include "crypto/x509.h" +#include "rsa_local.h" /* Size of an SSL signature: MD5+SHA1 */ #define SSL_SIG_LENGTH 36 diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ssl.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ssl.c index 3859128a6d8..1f155be175d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ssl.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_ssl.c @@ -12,7 +12,7 @@ #include <openssl/bn.h> #include <openssl/rsa.h> #include <openssl/rand.h> -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" int RSA_padding_add_SSLv23(unsigned char *to, int tlen, const unsigned char *from, int flen) @@ -20,7 +20,7 @@ int RSA_padding_add_SSLv23(unsigned char *to, int tlen, int i, j; unsigned char *p; - if (flen > (tlen - 11)) { + if (flen > (tlen - RSA_PKCS1_PADDING_SIZE)) { RSAerr(RSA_F_RSA_PADDING_ADD_SSLV23, RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE); return 0; @@ -70,7 +70,7 @@ int RSA_padding_check_SSLv23(unsigned char *to, int tlen, if (tlen <= 0 || flen <= 0) return -1; - if (flen > num || num < 11) { + if (flen > num || num < RSA_PKCS1_PADDING_SIZE) { RSAerr(RSA_F_RSA_PADDING_CHECK_SSLV23, RSA_R_DATA_TOO_SMALL); return -1; } @@ -141,8 +141,8 @@ int RSA_padding_check_SSLv23(unsigned char *to, int tlen, err = constant_time_select_int(mask | good, err, RSA_R_DATA_TOO_LARGE); /* - * Move the result in-place by |num|-11-|mlen| bytes to the left. - * Then if |good| move |mlen| bytes from |em|+11 to |to|. + * Move the result in-place by |num|-RSA_PKCS1_PADDING_SIZE-|mlen| bytes to the left. + * Then if |good| move |mlen| bytes from |em|+RSA_PKCS1_PADDING_SIZE to |to|. * Otherwise leave |to| unchanged. * Copy the memory back in a way that does not reveal the size of * the data being copied via a timing side channel. This requires copying @@ -150,16 +150,16 @@ int RSA_padding_check_SSLv23(unsigned char *to, int tlen, * length. Clear bits do a non-copy with identical access pattern. * The loop below has overall complexity of O(N*log(N)). */ - tlen = constant_time_select_int(constant_time_lt(num - 11, tlen), - num - 11, tlen); - for (msg_index = 1; msg_index < num - 11; msg_index <<= 1) { - mask = ~constant_time_eq(msg_index & (num - 11 - mlen), 0); - for (i = 11; i < num - msg_index; i++) + tlen = constant_time_select_int(constant_time_lt(num - RSA_PKCS1_PADDING_SIZE, tlen), + num - RSA_PKCS1_PADDING_SIZE, tlen); + for (msg_index = 1; msg_index < num - RSA_PKCS1_PADDING_SIZE; msg_index <<= 1) { + mask = ~constant_time_eq(msg_index & (num - RSA_PKCS1_PADDING_SIZE - mlen), 0); + for (i = RSA_PKCS1_PADDING_SIZE; i < num - msg_index; i++) em[i] = constant_time_select_8(mask, em[i + msg_index], em[i]); } for (i = 0; i < tlen; i++) { mask = good & constant_time_lt(i, mlen); - to[i] = constant_time_select_8(mask, em[i + 11], to[i]); + to[i] = constant_time_select_8(mask, em[i + RSA_PKCS1_PADDING_SIZE], to[i]); } OPENSSL_clear_free(em, num); diff --git a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_x931g.c b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_x931g.c index e7ac476bb4a..322cd14a840 100644 --- a/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_x931g.c +++ b/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_x931g.c @@ -12,7 +12,7 @@ #include <time.h> #include <openssl/err.h> #include <openssl/bn.h> -#include "rsa_locl.h" +#include "rsa_local.h" /* X9.31 RSA key derivation and generation */ diff --git a/crypto/external/bsd/openssl/dist/crypto/s390x_arch.h b/crypto/external/bsd/openssl/dist/crypto/s390x_arch.h index 4a775a927db..4d2cc02eb3d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/s390x_arch.h +++ b/crypto/external/bsd/openssl/dist/crypto/s390x_arch.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef S390X_ARCH_H -# define S390X_ARCH_H +#ifndef OSSL_CRYPTO_S390X_ARCH_H +# define OSSL_CRYPTO_S390X_ARCH_H # ifndef __ASSEMBLER__ diff --git a/crypto/external/bsd/openssl/dist/crypto/s390xcpuid.pl b/crypto/external/bsd/openssl/dist/crypto/s390xcpuid.pl index ec700a47d98..5cbb962530c 100755 --- a/crypto/external/bsd/openssl/dist/crypto/s390xcpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/s390xcpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -418,4 +418,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; # force flush +close STDOUT or die "error closing STDOUT: $!"; # force flush diff --git a/crypto/external/bsd/openssl/dist/crypto/seed/seed.c b/crypto/external/bsd/openssl/dist/crypto/seed/seed.c index d62da91edea..c3a1f183a5c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/seed/seed.c +++ b/crypto/external/bsd/openssl/dist/crypto/seed/seed.c @@ -42,7 +42,7 @@ # endif # include <openssl/seed.h> -# include "seed_locl.h" +# include "seed_local.h" # ifdef SS /* can get defined on Solaris by inclusion of * <stdlib.h> */ diff --git a/crypto/external/bsd/openssl/dist/crypto/seed/seed_locl.h b/crypto/external/bsd/openssl/dist/crypto/seed/seed_local.h index ac2950d97c2..e3681f8bd45 100644 --- a/crypto/external/bsd/openssl/dist/crypto/seed/seed_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/seed/seed_local.h @@ -32,8 +32,8 @@ * SUCH DAMAGE. * */ -#ifndef HEADER_SEED_LOCL_H -# define HEADER_SEED_LOCL_H +#ifndef OSSL_CRYPTO_SEED_LOCAL_H +# define OSSL_CRYPTO_SEED_LOCAL_H # include "openssl/e_os2.h" # include <openssl/seed.h> @@ -109,4 +109,4 @@ typedef unsigned int seed_word; (X1) ^= (T0); \ (X2) ^= (T1) -#endif /* HEADER_SEED_LOCL_H */ +#endif /* OSSL_CRYPTO_SEED_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv4.pl index cb8ccc90f5b..39fe559e974 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv4.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1603,4 +1603,4 @@ foreach (split($/,$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv8.pl index 3173c77f536..ce5df4d6de1 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-armv8.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -877,4 +877,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx2.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx2.pl index d9fc1c59ec2..6104caf4ff1 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx2.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx2.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -479,4 +479,4 @@ ___ $output=pop; open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512.pl index 9074ff02dec..6bfff788175 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -548,4 +548,4 @@ ___ $output=pop; open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512vl.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512vl.pl index a21bb8615a7..446706fc67d 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512vl.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-avx512vl.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -389,4 +389,4 @@ ___ $output=pop; open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-c64x.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-c64x.pl index b00af9af91d..4d1bbee2cfd 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-c64x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-c64x.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -882,4 +882,4 @@ ___ $output=pop; open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-mmx.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-mmx.pl index c7685add79d..353f1e147c3 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-mmx.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-mmx.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -30,7 +30,7 @@ # produce worse code. On the other hand one can wonder why not 128-bit # SSE2? Well, SSE2 won't provide double improvement, rather far from # that, if any at all on some processors, because it will take extra -# permutations and inter-bank data trasfers. Besides, contemporary +# permutations and inter-bank data transfers. Besides, contemporary # CPUs are better off executing 64-bit code, and it makes lesser sense # to invest into fancy 32-bit code. And the decision doesn't seem to # be inadequate, if one compares below results to "64-bit platforms in @@ -437,4 +437,4 @@ sub Rho() { ######### regular Rho step &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl index 30e70c5d6d7..da198c4124e 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-ppc64.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -405,10 +405,10 @@ dword_le_load: .long 0 .size dword_le_load,.-dword_le_load -.globl SHA3_absorb -.type SHA3_absorb,\@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,\@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: $STU $sp,-$FRAME($sp) mflr r0 $PUSH r14,`$FRAME-$SIZE_T*18`($sp) @@ -627,15 +627,15 @@ SHA3_absorb: .long 0 .byte 0,12,4,1,0x80,18,4,0 .long 0 -.size SHA3_absorb,.-SHA3_absorb +.size SHA3_absorb_vsx,.-SHA3_absorb_vsx ___ { my ($A_flat,$out,$len,$bsz) = map("r$_",(28..31)); $code.=<<___; -.globl SHA3_squeeze -.type SHA3_squeeze,\@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,\@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: $STU $sp,`-10*$SIZE_T`($sp) mflr r0 $PUSH r28,`6*$SIZE_T`($sp) @@ -705,7 +705,7 @@ SHA3_squeeze: .long 0 .byte 0,12,4,1,0x80,4,4,0 .long 0 -.size SHA3_squeeze,.-SHA3_squeeze +.size SHA3_squeeze_vsx,.-SHA3_squeeze_vsx ___ } @@ -755,4 +755,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-s390x.pl index 1184cf233eb..a7d819a5905 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-s390x.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -557,4 +557,4 @@ ___ $code =~ s/(srlg\s+)(%r[0-9]+),/$1$2,$2,/gm; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-x86_64.pl index 42de5bf1234..b1a7e65e6ba 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600-x86_64.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -44,7 +44,7 @@ # Ryzen 8.8 # # (*) Corresponds to SHA3-256. Improvement over compiler-generate -# varies a lot, most commont coefficient is 15% in comparison to +# varies a lot, most common coefficient is 15% in comparison to # gcc-5.x, 50% for gcc-4.x, 90% for gcc-3.x. # (**) Sandy Bridge has broken rotate instruction. Performance can be # improved by 14% by replacing rotates with double-precision @@ -84,6 +84,7 @@ $code.=<<___; .type __KeccakF1600,\@abi-omnipotent .align 32 __KeccakF1600: +.cfi_startproc mov $A[4][0](%rdi),@C[0] mov $A[4][1](%rdi),@C[1] mov $A[4][2](%rdi),@C[2] @@ -342,6 +343,7 @@ $code.=<<___; lea -192($iotas),$iotas # rewind iotas ret +.cfi_endproc .size __KeccakF1600,.-__KeccakF1600 .type KeccakF1600,\@abi-omnipotent @@ -604,4 +606,4 @@ foreach (split("\n",$code)) { print $_, "\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl index de2bcd660a0..a98dd4480c9 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/keccak1600p8-ppc.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -374,10 +374,10 @@ ___ my ($A_jagged,$inp,$len,$bsz) = map("r$_",(3..6)); $code.=<<___; -.globl SHA3_absorb -.type SHA3_absorb,\@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,\@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: $STU $sp,-$FRAME($sp) li r10,`15+6*$SIZE_T` li r11,`31+6*$SIZE_T` @@ -674,17 +674,17 @@ SHA3_absorb: .long 0 .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.size SHA3_absorb,.-SHA3_absorb +.size SHA3_absorb_vsx,.-SHA3_absorb_vsx ___ } { my ($A_jagged,$out,$len,$bsz) = map("r$_",(3..6)); $code.=<<___; -.globl SHA3_squeeze -.type SHA3_squeeze,\@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,\@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: mflr r9 ; r9 is not touched by KeccakF1600 subi $out,$out,1 ; prepare for stbu addi r8,$A_jagged,4 ; prepare volatiles @@ -770,7 +770,7 @@ SHA3_squeeze: .long 0 .byte 0,12,0x14,0,0,0,4,0 .long 0 -.size SHA3_squeeze,.-SHA3_squeeze +.size SHA3_squeeze_vsx,.-SHA3_squeeze_vsx ___ } $code.=<<___; @@ -847,4 +847,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-586.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-586.pl index 9d4ff7f39a5..f7b85e6c6d7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -144,7 +144,7 @@ $ymm=1 if ($xmm && !$ymm && $ARGV[0] eq "win32" && `ml 2>&1` =~ /Version ([0-9]+)\./ && $1>=10); # first version supporting AVX -$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9]\.[0-9]+)/ && +$ymm=1 if ($xmm && !$ymm && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/ && $2>=3.0); # first version supporting AVX $shaext=$xmm; ### set to zero if compiling for 1.0.1 @@ -1488,4 +1488,4 @@ sub Xtail_avx() &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-alpha.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-alpha.pl index c1a0b0c6904..540ef3b47b1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-alpha.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-alpha.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -326,4 +326,4 @@ $code.=<<___; ___ $output=pop and open STDOUT,">$output"; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv4-large.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv4-large.pl index 7ff5bfbba6c..52d426bb29f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv4-large.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv4-large.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -739,4 +739,4 @@ foreach (split($/,$code)) { print $_,$/; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv8.pl index 3ba871fedee..aa44feb9c7c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -361,4 +361,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-c64xplus.pl index 4db2bcb06b3..ceec503a982 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -334,4 +334,4 @@ $code.=<<___; ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mb-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mb-x86_64.pl index 443b649830f..a78266d62fc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mb-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mb-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -66,7 +66,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -1625,4 +1625,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mips.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mips.pl index 08f84bc3b3d..c293cd3bfa4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mips.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -458,4 +458,4 @@ $code.=<<___; .asciiz "SHA1 for MIPS, CRYPTOGAMS by <appro\@openssl.org>" ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-parisc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-parisc.pl index b001be16a23..70ef7956abf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-parisc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-parisc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -276,4 +276,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-ppc.pl index 0cda0a3e151..650a6291200 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -348,4 +348,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-s390x.pl index 5729c308987..653a6cb50a8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -246,4 +246,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9.pl index 3e612e3d5f6..8c23d85a3d0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -431,4 +431,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9a.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9a.pl index 50d3e136a12..4e90da4b8bc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9a.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-sparcv9a.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -605,4 +605,4 @@ $code =~ s/\b(alignaddr)\s+(%[goli][0-7]),(%[goli][0-7]),(%[goli][0-7])/ &unalignaddr($1,$2,$3,$4) /gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-thumb.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-thumb.pl index ac74a25d6ea..b53e0bee052 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-thumb.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-thumb.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -263,4 +263,4 @@ $code.=<<___; ___ print $code; -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl index 60819f61867..0680d6d0a2b 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha1-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -119,7 +119,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([2-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -468,8 +468,8 @@ $code.=<<___ if ($win64); .Lepilogue_shaext: ___ $code.=<<___; -.cfi_endproc ret +.cfi_endproc .size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext ___ }}} @@ -2129,4 +2129,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-586.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-586.pl index dccc771ad58..6989d59bd73 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -96,7 +96,7 @@ if ($xmm && !$avx && $ARGV[0] eq "win32" && $avx = ($1>=10) + ($1>=11); } -if ($xmm && !$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([3-9]\.[0-9]+)/) { +if ($xmm && !$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -1293,4 +1293,4 @@ sub bodyx_00_15 () { # +10% &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-armv4.pl index edcfc31278e..d120febb483 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -729,4 +729,4 @@ foreach (split($/,$code)) { print $_,"\n"; } -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-c64xplus.pl index 3ab7d9b6894..b2d00e4fb1a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -317,4 +317,4 @@ K256: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-mb-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-mb-x86_64.pl index 73978dbd81d..81ac814effc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-mb-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha256-mb-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -67,7 +67,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -1611,4 +1611,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-586.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-586.pl index 867ce30b972..66b6e96f9de 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-586.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-586.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -922,4 +922,4 @@ sub BODY_00_15_ssse3 { # "phase-less" copy of BODY_00_15_sse2 &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv4.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv4.pl index 0b4c5674d9d..e9c5e0ce768 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv4.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv4.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -665,4 +665,4 @@ while(<SELF>) { close SELF; print $code; -close STDOUT; # enforce flush +close STDOUT or die "error closing STDOUT: $!"; # enforce flush diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv8.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv8.pl index 01ffe9f98c3..07dcba42dcf 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv8.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-armv8.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -902,4 +902,4 @@ foreach(split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-c64xplus.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-c64xplus.pl index 9ebfc92e23a..4263fb1349a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-c64xplus.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-c64xplus.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -435,4 +435,4 @@ K512: ___ print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-mips.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-mips.pl index dab684dde5b..15acd5308dd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-mips.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-mips.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -518,4 +518,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-parisc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-parisc.pl index 59eb320ab6e..132f1db8eb9 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-parisc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-parisc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -804,4 +804,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-ppc.pl index 71699f66370..265ecfa58c8 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -796,4 +796,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-s390x.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-s390x.pl index 4c0f4e79315..9752fed4ea2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-s390x.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-s390x.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -321,4 +321,4 @@ $code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/(srlg\s+)(%r[0-9]+),/$1$2,$2,/gm; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-sparcv9.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-sparcv9.pl index c215909633a..54429d34e39 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-sparcv9.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-sparcv9.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -854,4 +854,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-x86_64.pl index f2ebdfdb68b..64ae641c140 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -135,7 +135,7 @@ if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) && $avx = ($1>=10) + ($1>=11); } -if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([3-9]\.[0-9]+)/) { +if (!$avx && `$ENV{CC} -v 2>&1` =~ /((?:^clang|LLVM) version|.*based on LLVM) ([0-9]+\.[0-9]+)/) { $avx = ($2>=3.0) + ($2>3.0); } @@ -569,6 +569,7 @@ $code.=<<___; .align 64 sha256_block_data_order_shaext: _shaext_shortcut: +.cfi_startproc ___ $code.=<<___ if ($win64); lea `-8-5*16`(%rsp),%rsp @@ -712,6 +713,7 @@ $code.=<<___ if ($win64); ___ $code.=<<___; ret +.cfi_endproc .size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext ___ }}} @@ -1992,7 +1994,23 @@ $code.=<<___; vmovdqa $t0,0x00(%rsp) xor $a1,$a1 vmovdqa $t1,0x20(%rsp) +___ +$code.=<<___ if (!$win64); +# temporarily use %rdi as frame pointer + mov $_rsp,%rdi +.cfi_def_cfa %rdi,8 +___ +$code.=<<___; lea -$PUSH8(%rsp),%rsp +___ +$code.=<<___ if (!$win64); +# the frame info is at $_rsp, but the stack is moving... +# so a second frame pointer is saved at -8(%rsp) +# that is in the red zone + mov %rdi,-8(%rsp) +.cfi_cfa_expression %rsp-8,deref,+8 +___ +$code.=<<___; mov $B,$a3 vmovdqa $t2,0x00(%rsp) xor $C,$a3 # magic @@ -2012,7 +2030,18 @@ my @X = @_; my @insns = (&$body,&$body,&$body,&$body); # 96 instructions my $base = "+2*$PUSH8(%rsp)"; - &lea ("%rsp","-$PUSH8(%rsp)") if (($j%2)==0); + if (($j%2)==0) { + &lea ("%rsp","-$PUSH8(%rsp)"); +$code.=<<___ if (!$win64); +.cfi_cfa_expression %rsp+`$PUSH8-8`,deref,+8 +# copy secondary frame pointer to new location again at -8(%rsp) + pushq $PUSH8-8(%rsp) +.cfi_cfa_expression %rsp,deref,+8 + lea 8(%rsp),%rsp +.cfi_cfa_expression %rsp-8,deref,+8 +___ + } + foreach (Xupdate_256_AVX()) { # 29 instructions eval; eval(shift(@insns)); @@ -2083,7 +2112,23 @@ $code.=<<___; vmovdqa $t2,0x40(%rsp) vpaddq 0x40($Tbl),@X[6],$t2 vmovdqa $t3,0x60(%rsp) +___ +$code.=<<___ if (!$win64); +# temporarily use %rdi as frame pointer + mov $_rsp,%rdi +.cfi_def_cfa %rdi,8 +___ +$code.=<<___; lea -$PUSH8(%rsp),%rsp +___ +$code.=<<___ if (!$win64); +# the frame info is at $_rsp, but the stack is moving... +# so a second frame pointer is saved at -8(%rsp) +# that is in the red zone + mov %rdi,-8(%rsp) +.cfi_cfa_expression %rsp-8,deref,+8 +___ +$code.=<<___; vpaddq 0x60($Tbl),@X[7],$t3 vmovdqa $t0,0x00(%rsp) xor $a1,$a1 @@ -2107,7 +2152,18 @@ my @X = @_; my @insns = (&$body,&$body); # 48 instructions my $base = "+2*$PUSH8(%rsp)"; - &lea ("%rsp","-$PUSH8(%rsp)") if (($j%4)==0); + if (($j%4)==0) { + &lea ("%rsp","-$PUSH8(%rsp)"); +$code.=<<___ if (!$win64); +.cfi_cfa_expression %rsp+`$PUSH8-8`,deref,+8 +# copy secondary frame pointer to new location again at -8(%rsp) + pushq $PUSH8-8(%rsp) +.cfi_cfa_expression %rsp,deref,+8 + lea 8(%rsp),%rsp +.cfi_cfa_expression %rsp-8,deref,+8 +___ + } + foreach (Xupdate_512_AVX()) { # 23 instructions eval; if ($_ !~ /\;$/) { @@ -2182,6 +2238,8 @@ $code.=<<___; add $a1,$A #mov `2*$SZ*$rounds+8`(%rsp),$inp # $_inp lea `2*$SZ*($rounds-8)`(%rsp),%rsp +# restore frame pointer to original location at $_rsp +.cfi_cfa_expression $_rsp,deref,+8 add $SZ*0($ctx),$A add $SZ*1($ctx),$B @@ -2207,22 +2265,24 @@ $code.=<<___; jbe .Loop_avx2 lea (%rsp),$Tbl +# temporarily use $Tbl as index to $_rsp +# this avoids the need to save a secondary frame pointer at -8(%rsp) +.cfi_cfa_expression $Tbl+`16*$SZ+3*8`,deref,+8 .Ldone_avx2: - lea ($Tbl),%rsp - mov $_rsp,%rsi + mov `16*$SZ+3*8`($Tbl),%rsi .cfi_def_cfa %rsi,8 vzeroupper ___ $code.=<<___ if ($win64); - movaps 16*$SZ+32(%rsp),%xmm6 - movaps 16*$SZ+48(%rsp),%xmm7 - movaps 16*$SZ+64(%rsp),%xmm8 - movaps 16*$SZ+80(%rsp),%xmm9 + movaps 16*$SZ+32($Tbl),%xmm6 + movaps 16*$SZ+48($Tbl),%xmm7 + movaps 16*$SZ+64($Tbl),%xmm8 + movaps 16*$SZ+80($Tbl),%xmm9 ___ $code.=<<___ if ($win64 && $SZ>4); - movaps 16*$SZ+96(%rsp),%xmm10 - movaps 16*$SZ+112(%rsp),%xmm11 + movaps 16*$SZ+96($Tbl),%xmm10 + movaps 16*$SZ+112($Tbl),%xmm11 ___ $code.=<<___; mov -48(%rsi),%r15 @@ -2495,4 +2555,4 @@ foreach (split("\n",$code)) { print $_,"\n"; } -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512p8-ppc.pl b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512p8-ppc.pl index 0d4fdd292c0..3f202964261 100755 --- a/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512p8-ppc.pl +++ b/crypto/external/bsd/openssl/dist/crypto/sha/asm/sha512p8-ppc.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -417,4 +417,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c b/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c index 55a44023d51..1828cc6e34c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c +++ b/crypto/external/bsd/openssl/dist/crypto/sha/keccak1600.c @@ -11,6 +11,12 @@ #include <string.h> #include <assert.h> +#ifdef __powerpc__ +#define SHA3_absorb SHA3_absorb_default +#define SHA3_squeeze SHA3_squeeze_default +#undef KECCAK1600_ASM +#endif + size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len, size_t r); void SHA3_squeeze(uint64_t A[5][5], unsigned char *out, size_t len, size_t r); diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/sha1dgst.c b/crypto/external/bsd/openssl/dist/crypto/sha/sha1dgst.c index 819370e6154..7965829e64b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/sha1dgst.c +++ b/crypto/external/bsd/openssl/dist/crypto/sha/sha1dgst.c @@ -14,4 +14,4 @@ /* The implementation is in ../md32_common.h */ -# include "sha_locl.h" +# include "sha_local.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/sha256.c b/crypto/external/bsd/openssl/dist/crypto/sha/sha256.c index 67e3570fd59..11050ba5471 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/sha256.c +++ b/crypto/external/bsd/openssl/dist/crypto/sha/sha256.c @@ -128,7 +128,7 @@ static #endif void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num); -#include "internal/md32_common.h" +#include "crypto/md32_common.h" #ifndef SHA256_ASM static const SHA_LONG K256[64] = { @@ -168,7 +168,7 @@ static const SHA_LONG K256[64] = { static void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num) { - MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1, T2; + unsigned MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1, T2; SHA_LONG X[16], l; int i; const unsigned char *data = in; @@ -246,7 +246,7 @@ static void sha256_block_data_order(SHA256_CTX *ctx, const void *in, static void sha256_block_data_order(SHA256_CTX *ctx, const void *in, size_t num) { - MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1; + unsigned MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1; SHA_LONG X[16]; int i; const unsigned char *data = in; diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/sha512.c b/crypto/external/bsd/openssl/dist/crypto/sha/sha512.c index 50b65ee811d..ca1f387a64f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/sha512.c +++ b/crypto/external/bsd/openssl/dist/crypto/sha/sha512.c @@ -50,7 +50,7 @@ #include <openssl/opensslv.h> #include "internal/cryptlib.h" -#include "internal/sha.h" +#include "crypto/sha.h" #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64) || \ diff --git a/crypto/external/bsd/openssl/dist/crypto/sha/sha_locl.h b/crypto/external/bsd/openssl/dist/crypto/sha/sha_local.h index a2bc6559a04..6edb9ef1d27 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sha/sha_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/sha/sha_local.h @@ -19,7 +19,7 @@ #define HASH_CTX SHA_CTX #define HASH_CBLOCK SHA_CBLOCK #define HASH_MAKE_STRING(c,s) do { \ - SHA_LONG ll; \ + unsigned long ll; \ ll=(c)->h0; (void)HOST_l2c(ll,(s)); \ ll=(c)->h1; (void)HOST_l2c(ll,(s)); \ ll=(c)->h2; (void)HOST_l2c(ll,(s)); \ @@ -42,7 +42,7 @@ static void sha1_block_data_order(SHA_CTX *c, const void *p, size_t num); void sha1_block_data_order(SHA_CTX *c, const void *p, size_t num); #endif -#include "internal/md32_common.h" +#include "crypto/md32_common.h" #define INIT_DATA_h0 0x67452301UL #define INIT_DATA_h1 0xefcdab89UL @@ -136,9 +136,9 @@ int HASH_INIT(SHA_CTX *c) static void HASH_BLOCK_DATA_ORDER(SHA_CTX *c, const void *p, size_t num) { const unsigned char *data = p; - register MD32_REG_T A, B, C, D, E, T, l; + register unsigned MD32_REG_T A, B, C, D, E, T, l; # ifndef MD32_XARRAY - MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, + unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15; # else SHA_LONG XX[16]; @@ -370,7 +370,7 @@ static void HASH_BLOCK_DATA_ORDER(SHA_CTX *c, const void *p, size_t num) static void HASH_BLOCK_DATA_ORDER(SHA_CTX *c, const void *p, size_t num) { const unsigned char *data = p; - register MD32_REG_T A, B, C, D, E, T, l; + register unsigned MD32_REG_T A, B, C, D, E, T, l; int i; SHA_LONG X[16]; diff --git a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash.c b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash.c index be74a38d934..07d94c1e6e5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash.c +++ b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash.c @@ -27,7 +27,7 @@ #include <string.h> #include <openssl/crypto.h> -#include "internal/siphash.h" +#include "crypto/siphash.h" #include "siphash_local.h" /* default: SipHash-2-4 */ diff --git a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_ameth.c b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_ameth.c index c0ab7efae4b..2da6dfec802 100644 --- a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_ameth.c +++ b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_ameth.c @@ -10,10 +10,10 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include "internal/asn1_int.h" -#include "internal/siphash.h" +#include "crypto/asn1.h" +#include "crypto/siphash.h" #include "siphash_local.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" /* * SIPHASH "ASN1" method. This is just here to indicate the maximum diff --git a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_pmeth.c index 66e552fec5e..0c7d2c61902 100644 --- a/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/siphash/siphash_pmeth.c @@ -13,9 +13,9 @@ #include <openssl/x509v3.h> #include <openssl/evp.h> #include <openssl/err.h> -#include "internal/siphash.h" +#include "crypto/siphash.h" #include "siphash_local.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" /* SIPHASH pkey context structure */ diff --git a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_crypt.c b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_crypt.c index 4389fc731ed..ef505f64412 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_crypt.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_crypt.c @@ -9,9 +9,9 @@ * https://www.openssl.org/source/license.html */ -#include "internal/sm2.h" -#include "internal/sm2err.h" -#include "internal/ec_int.h" /* ecdh_KDF_X9_63() */ +#include "crypto/sm2.h" +#include "crypto/sm2err.h" +#include "crypto/ec.h" /* ecdh_KDF_X9_63() */ #include <openssl/err.h> #include <openssl/evp.h> #include <openssl/bn.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_err.c b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_err.c index 653c6797f86..e5973e9c714 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_err.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_err.c @@ -9,7 +9,7 @@ */ #include <openssl/err.h> -#include "internal/sm2err.h" +#include "crypto/sm2err.h" #ifndef OPENSSL_NO_ERR diff --git a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_pmeth.c b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_pmeth.c index d187699cc41..b42a14c32f2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_pmeth.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_pmeth.c @@ -11,9 +11,9 @@ #include <openssl/asn1t.h> #include <openssl/ec.h> #include <openssl/evp.h> -#include "internal/evp_int.h" -#include "internal/sm2.h" -#include "internal/sm2err.h" +#include "crypto/evp.h" +#include "crypto/sm2.h" +#include "crypto/sm2err.h" /* EC pkey context structure */ @@ -220,6 +220,10 @@ static int pkey_sm2_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) *(size_t *)p2 = smctx->id_len; return 1; + case EVP_PKEY_CTRL_DIGESTINIT: + /* nothing to be inited, this is to suppress the error... */ + return 1; + default: return -2; } diff --git a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_sign.c b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_sign.c index 50ecb4d68cc..683f03f9358 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm2/sm2_sign.c @@ -9,9 +9,9 @@ * https://www.openssl.org/source/license.html */ -#include "internal/sm2.h" -#include "internal/sm2err.h" -#include "internal/ec_int.h" /* ec_group_do_inverse_ord() */ +#include "crypto/sm2.h" +#include "crypto/sm2err.h" +#include "crypto/ec.h" /* ec_group_do_inverse_ord() */ #include "internal/numbers.h" #include <openssl/err.h> #include <openssl/evp.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/sm3/m_sm3.c b/crypto/external/bsd/openssl/dist/crypto/sm3/m_sm3.c index 85538dc8af0..7e54f429843 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm3/m_sm3.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm3/m_sm3.c @@ -12,8 +12,8 @@ #ifndef OPENSSL_NO_SM3 # include <openssl/evp.h> -# include "internal/evp_int.h" -# include "internal/sm3.h" +# include "crypto/evp.h" +# include "crypto/sm3.h" static int init(EVP_MD_CTX *ctx) { diff --git a/crypto/external/bsd/openssl/dist/crypto/sm3/sm3.c b/crypto/external/bsd/openssl/dist/crypto/sm3/sm3.c index 1588dd115aa..d78292b4c5b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm3/sm3.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm3/sm3.c @@ -10,7 +10,7 @@ */ #include <openssl/e_os2.h> -#include "sm3_locl.h" +#include "sm3_local.h" int sm3_init(SM3_CTX *c) { diff --git a/crypto/external/bsd/openssl/dist/crypto/sm3/sm3_locl.h b/crypto/external/bsd/openssl/dist/crypto/sm3/sm3_local.h index efa6db57c6c..7171de510de 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm3/sm3_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/sm3/sm3_local.h @@ -10,7 +10,7 @@ */ #include <string.h> -#include "internal/sm3.h" +#include "crypto/sm3.h" #define DATA_ORDER_IS_BIG_ENDIAN @@ -36,7 +36,7 @@ void sm3_transform(SM3_CTX *c, const unsigned char *data); -#include "internal/md32_common.h" +#include "crypto/md32_common.h" #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17)) #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23)) diff --git a/crypto/external/bsd/openssl/dist/crypto/sm4/sm4.c b/crypto/external/bsd/openssl/dist/crypto/sm4/sm4.c index 0c819a4b68e..5750e763319 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sm4/sm4.c +++ b/crypto/external/bsd/openssl/dist/crypto/sm4/sm4.c @@ -10,7 +10,7 @@ */ #include <openssl/e_os2.h> -#include "internal/sm4.h" +#include "crypto/sm4.h" static const uint8_t SM4_S[256] = { 0xD6, 0x90, 0xE9, 0xFE, 0xCC, 0xE1, 0x3D, 0xB7, 0x16, 0xB6, 0x14, 0xC2, diff --git a/crypto/external/bsd/openssl/dist/crypto/sparc_arch.h b/crypto/external/bsd/openssl/dist/crypto/sparc_arch.h index 99eafb33135..c74063be2fa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sparc_arch.h +++ b/crypto/external/bsd/openssl/dist/crypto/sparc_arch.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef __SPARC_ARCH_H__ -# define __SPARC_ARCH_H__ +#ifndef OSSL_CRYPTO_SPARC_ARCH_H +# define OSSL_CRYPTO_SPARC_ARCH_H # define SPARCV9_TICK_PRIVILEGED (1<<0) # define SPARCV9_PREFER_FPU (1<<1) @@ -115,4 +115,4 @@ mov tmp, %o7; # endif -#endif /* __SPARC_ARCH_H__ */ +#endif /* OSSL_CRYPTO_SPARC_ARCH_H */ diff --git a/crypto/external/bsd/openssl/dist/crypto/sparccpuid.S b/crypto/external/bsd/openssl/dist/crypto/sparccpuid.S index 14aa94204d3..95acd2f9d4d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sparccpuid.S +++ b/crypto/external/bsd/openssl/dist/crypto/sparccpuid.S @@ -36,11 +36,11 @@ OPENSSL_wipe_cpu: #include <sys/trap.h> ta ST_CLEAN_WINDOWS #else - call _walk.reg.wins + call .walk.reg.wins #endif nop - call _PIC.zero.up - mov _zero-(.-4),%o0 + call .PIC.zero.up + mov .zero-(.-4),%o0 ld [%o0],%f0 ld [%o0],%f1 @@ -135,8 +135,8 @@ OPENSSL_wipe_cpu: ret restore -_zero: .long 0x0,0x0 -_PIC.zero.up: +.zero: .long 0x0,0x0 +.PIC.zero.up: retl add %o0,%o7,%o0 #ifdef DEBUG @@ -144,7 +144,7 @@ _PIC.zero.up: .type walk_reg_wins,#function walk_reg_wins: #endif -_walk.reg.wins: +.walk.reg.wins: save %sp,FRAME,%sp cmp %i7,%o7 be 2f @@ -152,7 +152,7 @@ _walk.reg.wins: cmp %o7,0 ! compiler never cleans %o7... be 1f ! could have been a leaf function... clr %o1 - call _walk.reg.wins + call .walk.reg.wins nop 1: clr %o2 clr %o3 diff --git a/crypto/external/bsd/openssl/dist/crypto/sparcv9cap.c b/crypto/external/bsd/openssl/dist/crypto/sparcv9cap.c index c8c567536b3..ff1a983ac98 100644 --- a/crypto/external/bsd/openssl/dist/crypto/sparcv9cap.c +++ b/crypto/external/bsd/openssl/dist/crypto/sparcv9cap.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -268,7 +268,7 @@ void OPENSSL_cpuid_setup(void) /* * In wait for better solution _sparcv9_rdcfr is masked by - * VIS3 flag, because it goes to uninterruptable endless + * VIS3 flag, because it goes to uninterruptible endless * loop on UltraSPARC II running Solaris. Things might be * different on Linux... */ diff --git a/crypto/external/bsd/openssl/dist/crypto/srp/srp_lib.c b/crypto/external/bsd/openssl/dist/crypto/srp/srp_lib.c index ca20f6d0979..4f417de0c98 100644 --- a/crypto/external/bsd/openssl/dist/crypto/srp/srp_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/srp/srp_lib.c @@ -16,7 +16,7 @@ # include <openssl/sha.h> # include <openssl/srp.h> # include <openssl/evp.h> -# include "internal/bn_srp.h" +# include "crypto/bn_srp.h" /* calculate = SHA1(PAD(x) || PAD(y)) */ diff --git a/crypto/external/bsd/openssl/dist/crypto/srp/srp_vfy.c b/crypto/external/bsd/openssl/dist/crypto/srp/srp_vfy.c index eb279dd4187..3dd2ab05075 100644 --- a/crypto/external/bsd/openssl/dist/crypto/srp/srp_vfy.c +++ b/crypto/external/bsd/openssl/dist/crypto/srp/srp_vfy.c @@ -13,7 +13,7 @@ #ifndef OPENSSL_NO_SRP # include "internal/cryptlib.h" -# include "internal/evp_int.h" +# include "crypto/evp.h" # include <openssl/sha.h> # include <openssl/srp.h> # include <openssl/evp.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/store/loader_file.c b/crypto/external/bsd/openssl/dist/crypto/store/loader_file.c index 6f569ee62d7..8f1d20e74aa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/store/loader_file.c +++ b/crypto/external/bsd/openssl/dist/crypto/store/loader_file.c @@ -24,12 +24,12 @@ #include <openssl/store.h> #include <openssl/ui.h> #include <openssl/x509.h> /* For the PKCS8 stuff o.O */ -#include "internal/asn1_int.h" -#include "internal/ctype.h" +#include "crypto/asn1.h" +#include "crypto/ctype.h" #include "internal/o_dir.h" #include "internal/cryptlib.h" -#include "internal/store_int.h" -#include "store_locl.h" +#include "crypto/store.h" +#include "store_local.h" #ifdef _WIN32 # define stat _stat diff --git a/crypto/external/bsd/openssl/dist/crypto/store/store_init.c b/crypto/external/bsd/openssl/dist/crypto/store/store_init.c index b398bf598ff..0103c8db8aa 100644 --- a/crypto/external/bsd/openssl/dist/crypto/store/store_init.c +++ b/crypto/external/bsd/openssl/dist/crypto/store/store_init.c @@ -8,8 +8,8 @@ */ #include <openssl/err.h> -#include "internal/store.h" -#include "store_locl.h" +#include "crypto/store.h" +#include "store_local.h" static CRYPTO_ONCE store_init = CRYPTO_ONCE_STATIC_INIT; DEFINE_RUN_ONCE_STATIC(do_store_init) diff --git a/crypto/external/bsd/openssl/dist/crypto/store/store_lib.c b/crypto/external/bsd/openssl/dist/crypto/store/store_lib.c index 7de2e31f556..fb8184d2d9b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/store/store_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/store/store_lib.c @@ -18,8 +18,8 @@ #include <openssl/err.h> #include <openssl/store.h> #include "internal/thread_once.h" -#include "internal/store_int.h" -#include "store_locl.h" +#include "crypto/store.h" +#include "store_local.h" struct ossl_store_ctx_st { const OSSL_STORE_LOADER *loader; diff --git a/crypto/external/bsd/openssl/dist/crypto/store/store_locl.h b/crypto/external/bsd/openssl/dist/crypto/store/store_local.h index 369dcb33f2d..369dcb33f2d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/store/store_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/store/store_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/store/store_register.c b/crypto/external/bsd/openssl/dist/crypto/store/store_register.c index e68cb3c5685..3631d9b5063 100644 --- a/crypto/external/bsd/openssl/dist/crypto/store/store_register.c +++ b/crypto/external/bsd/openssl/dist/crypto/store/store_register.c @@ -8,12 +8,12 @@ */ #include <string.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <assert.h> #include <openssl/err.h> #include <openssl/lhash.h> -#include "store_locl.h" +#include "store_local.h" static CRYPTO_RWLOCK *registry_lock; static CRYPTO_ONCE registry_init = CRYPTO_ONCE_STATIC_INIT; diff --git a/crypto/external/bsd/openssl/dist/crypto/threads_none.c b/crypto/external/bsd/openssl/dist/crypto/threads_none.c index aabf0e0dc09..aaaaae872a9 100644 --- a/crypto/external/bsd/openssl/dist/crypto/threads_none.c +++ b/crypto/external/bsd/openssl/dist/crypto/threads_none.c @@ -143,7 +143,7 @@ int openssl_get_fork_id(void) # if defined(OPENSSL_SYS_UNIX) return getpid(); # else - return return 0; + return 0; # endif } #endif diff --git a/crypto/external/bsd/openssl/dist/crypto/threads_win.c b/crypto/external/bsd/openssl/dist/crypto/threads_win.c index 44a360fcabb..83dccb84fb6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/threads_win.c +++ b/crypto/external/bsd/openssl/dist/crypto/threads_win.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -24,15 +24,15 @@ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void) return NULL; } -#if !defined(_WIN32_WCE) +# if !defined(_WIN32_WCE) /* 0x400 is the spin count value suggested in the documentation */ if (!InitializeCriticalSectionAndSpinCount(lock, 0x400)) { OPENSSL_free(lock); return NULL; } -#else +# else InitializeCriticalSection(lock); -#endif +# endif return lock; } @@ -155,7 +155,7 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b) int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) { - *ret = InterlockedExchangeAdd(val, amount) + amount; + *ret = (int)InterlockedExchangeAdd((long volatile *)val, (long)amount) + amount; return 1; } diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_asn1.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_asn1.c index 8707207082c..2840f5858ac 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_asn1.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_asn1.c @@ -10,7 +10,7 @@ #include <openssl/ts.h> #include <openssl/err.h> #include <openssl/asn1t.h> -#include "ts_lcl.h" +#include "ts_local.h" ASN1_SEQUENCE(TS_MSG_IMPRINT) = { ASN1_SIMPLE(TS_MSG_IMPRINT, hash_algo, X509_ALGOR), diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_lib.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_lib.c index ce2e12c593e..bfe981364b0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_lib.c @@ -14,7 +14,7 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> #include <openssl/ts.h> -#include "ts_lcl.h" +#include "ts_local.h" int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_lcl.h b/crypto/external/bsd/openssl/dist/crypto/ts/ts_local.h index 771784fef7c..771784fef7c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_print.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_print.c index 0dedf47d924..4eba5cf0181 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_print.c @@ -13,7 +13,7 @@ #include <openssl/bn.h> #include <openssl/x509v3.h> #include <openssl/ts.h> -#include "ts_lcl.h" +#include "ts_local.h" int TS_REQ_print_bio(BIO *bio, TS_REQ *a) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_utils.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_utils.c index 2073d3395d7..a4568e3b779 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_utils.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_req_utils.c @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/x509v3.h> #include <openssl/ts.h> -#include "ts_lcl.h" +#include "ts_local.h" int TS_REQ_set_version(TS_REQ *a, long version) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_print.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_print.c index 6eb0ec8d750..a2451aaa8d8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_print.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_print.c @@ -13,7 +13,7 @@ #include <openssl/bn.h> #include <openssl/x509v3.h> #include <openssl/ts.h> -#include "ts_lcl.h" +#include "ts_local.h" struct status_map_st { int bit; diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_sign.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_sign.c index 1b2b84ef6b6..041a187da68 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_sign.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_sign.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -14,7 +14,7 @@ #include <openssl/ts.h> #include <openssl/pkcs7.h> #include <openssl/crypto.h> -#include "ts_lcl.h" +#include "ts_local.h" static ASN1_INTEGER *def_serial_cb(struct TS_resp_ctx *, void *); static int def_time_cb(struct TS_resp_ctx *, void *, long *sec, long *usec); @@ -771,7 +771,8 @@ static ESS_CERT_ID *ess_CERT_ID_new_init(X509 *cert, int issuer_needed) X509_check_purpose(cert, -1, 0); if ((cid = ESS_CERT_ID_new()) == NULL) goto err; - X509_digest(cert, EVP_sha1(), cert_sha1, NULL); + if (!X509_digest(cert, EVP_sha1(), cert_sha1, NULL)) + goto err; if (!ASN1_OCTET_STRING_set(cid->hash, cert_sha1, SHA_DIGEST_LENGTH)) goto err; diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_utils.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_utils.c index 3ecee39a22c..3fa0dbd0f09 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_utils.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_utils.c @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/ts.h> #include <openssl/pkcs7.h> -#include "ts_lcl.h" +#include "ts_local.h" int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *status_info) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_verify.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_verify.c index 9deda81b07f..c2e7abd67f5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_verify.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_rsp_verify.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/ts.h> #include <openssl/pkcs7.h> -#include "ts_lcl.h" +#include "ts_local.h" static int ts_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, X509 *signer, STACK_OF(X509) **chain); @@ -289,11 +289,12 @@ static int ts_find_cert(STACK_OF(ESS_CERT_ID) *cert_ids, X509 *cert) if (!cert_ids || !cert) return -1; - X509_digest(cert, EVP_sha1(), cert_sha1, NULL); - /* Recompute SHA1 hash of certificate if necessary (side effect). */ X509_check_purpose(cert, -1, 0); + if (!X509_digest(cert, EVP_sha1(), cert_sha1, NULL)) + return -1; + /* Look for cert in the cert_ids vector. */ for (i = 0; i < sk_ESS_CERT_ID_num(cert_ids); ++i) { ESS_CERT_ID *cid = sk_ESS_CERT_ID_value(cert_ids, i); @@ -326,7 +327,8 @@ static int ts_find_cert_v2(STACK_OF(ESS_CERT_ID_V2) *cert_ids, X509 *cert) else md = EVP_sha256(); - X509_digest(cert, md, cert_digest, &len); + if (!X509_digest(cert, md, cert_digest, &len)) + return -1; if (cid->hash->length != (int)len) return -1; diff --git a/crypto/external/bsd/openssl/dist/crypto/ts/ts_verify_ctx.c b/crypto/external/bsd/openssl/dist/crypto/ts/ts_verify_ctx.c index d4792ee04f5..1e80e0d3702 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ts/ts_verify_ctx.c +++ b/crypto/external/bsd/openssl/dist/crypto/ts/ts_verify_ctx.c @@ -10,7 +10,7 @@ #include "internal/cryptlib.h" #include <openssl/objects.h> #include <openssl/ts.h> -#include "ts_lcl.h" +#include "ts_local.h" TS_VERIFY_CTX *TS_VERIFY_CTX_new(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ui/ui_lib.c b/crypto/external/bsd/openssl/dist/crypto/ui/ui_lib.c index f550972d3ee..49cc45057c4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ui/ui_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/ui/ui_lib.c @@ -13,7 +13,7 @@ #include <openssl/buffer.h> #include <openssl/ui.h> #include <openssl/err.h> -#include "ui_locl.h" +#include "ui_local.h" UI *UI_new(void) { diff --git a/crypto/external/bsd/openssl/dist/crypto/ui/ui_locl.h b/crypto/external/bsd/openssl/dist/crypto/ui/ui_local.h index 19b33b8fc67..8a7dbda1472 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ui/ui_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/ui/ui_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_UI_LOCL_H -# define HEADER_UI_LOCL_H +#ifndef OSSL_CRYPTO_UI_LOCAL_H +# define OSSL_CRYPTO_UI_LOCAL_H # include <openssl/ui.h> # include <openssl/crypto.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/ui/ui_null.c b/crypto/external/bsd/openssl/dist/crypto/ui/ui_null.c index 9e5f6fca59e..9ab00e0a7cb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ui/ui_null.c +++ b/crypto/external/bsd/openssl/dist/crypto/ui/ui_null.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ui_locl.h" +#include "ui_local.h" static const UI_METHOD ui_null = { "OpenSSL NULL UI", diff --git a/crypto/external/bsd/openssl/dist/crypto/ui/ui_openssl.c b/crypto/external/bsd/openssl/dist/crypto/ui/ui_openssl.c index 0ec9f0daf33..168de4630dc 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ui/ui_openssl.c +++ b/crypto/external/bsd/openssl/dist/crypto/ui/ui_openssl.c @@ -53,7 +53,7 @@ # endif # endif -# include "ui_locl.h" +# include "ui_local.h" # include "internal/cryptlib.h" # ifdef OPENSSL_SYS_VMS /* prototypes for sys$whatever */ diff --git a/crypto/external/bsd/openssl/dist/crypto/ui/ui_util.c b/crypto/external/bsd/openssl/dist/crypto/ui/ui_util.c index b379324f9ba..32a3c4e38de 100644 --- a/crypto/external/bsd/openssl/dist/crypto/ui/ui_util.c +++ b/crypto/external/bsd/openssl/dist/crypto/ui/ui_util.c @@ -8,8 +8,9 @@ */ #include <string.h> +#include <openssl/pem.h> /* PEM_def_callback() */ #include "internal/thread_once.h" -#include "ui_locl.h" +#include "ui_local.h" #ifndef BUFSIZ #define BUFSIZ 256 @@ -156,7 +157,7 @@ UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag) return NULL; } data->rwflag = rwflag; - data->cb = cb; + data->cb = cb != NULL ? cb : PEM_def_callback; return ui_method; } diff --git a/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-mmx.pl b/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-mmx.pl index 2241c6f0f24..176be50a67f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-mmx.pl +++ b/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-mmx.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -69,19 +69,19 @@ sub LL() unshift(@_,pop(@_)); } } - else { die "unvalid SCALE value"; } + else { die "invalid SCALE value"; } } sub scale() { if ($SCALE==2) { &lea(@_[0],&DWP(0,@_[1],@_[1])); } elsif ($SCALE==8) { &lea(@_[0],&DWP(0,"",@_[1],8)); } - else { die "unvalid SCALE value"; } + else { die "invalid SCALE value"; } } sub row() { if ($SCALE==2) { ((8-shift)&7); } elsif ($SCALE==8) { (8*shift); } - else { die "unvalid SCALE value"; } + else { die "invalid SCALE value"; } } $tbl="ebp"; @@ -504,4 +504,4 @@ for($i=0;$i<8;$i++) { &function_end_B("whirlpool_block_mmx"); &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-x86_64.pl b/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-x86_64.pl index fe23d8cad00..b4fcd8be3c7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-x86_64.pl +++ b/crypto/external/bsd/openssl/dist/crypto/whrlpool/asm/wp-x86_64.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -614,4 +614,4 @@ ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; print $code; -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_block.c b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_block.c index 2ae5c38aba6..c21c04dbc1b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_block.c +++ b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_block.c @@ -36,7 +36,7 @@ * */ -#include "wp_locl.h" +#include "wp_local.h" #include <string.h> typedef unsigned char u8; diff --git a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_dgst.c b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_dgst.c index 1ac29803a4d..e8a3392268a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_dgst.c +++ b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_dgst.c @@ -53,7 +53,7 @@ */ #include <openssl/crypto.h> -#include "wp_locl.h" +#include "wp_local.h" #include <string.h> int WHIRLPOOL_Init(WHIRLPOOL_CTX *c) diff --git a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_locl.h b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_local.h index 3a81cfd58c1..3a81cfd58c1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_locl.h +++ b/crypto/external/bsd/openssl/dist/crypto/whrlpool/wp_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/by_dir.c b/crypto/external/bsd/openssl/dist/crypto/x509/by_dir.c index b691a83a0df..238c2519a6e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/by_dir.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/by_dir.c @@ -19,8 +19,8 @@ #endif #include <openssl/x509.h> -#include "internal/x509_int.h" -#include "x509_lcl.h" +#include "crypto/x509.h" +#include "x509_local.h" struct lookup_dir_hashes_st { unsigned long hash; diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/by_file.c b/crypto/external/bsd/openssl/dist/crypto/x509/by_file.c index 244512c9352..237b362e274 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/by_file.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/by_file.c @@ -15,7 +15,7 @@ #include <openssl/buffer.h> #include <openssl/x509.h> #include <openssl/pem.h> -#include "x509_lcl.h" +#include "x509_local.h" static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret); diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/t_x509.c b/crypto/external/bsd/openssl/dist/crypto/x509/t_x509.c index ccacbe7cbf8..12d807f705e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/t_x509.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/t_x509.c @@ -14,7 +14,7 @@ #include <openssl/objects.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #ifndef OPENSSL_NO_STDIO int X509_print_fp(FILE *fp, X509 *x) diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_att.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_att.c index 3c4566d2e70..651aa780830 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_att.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_att.c @@ -15,7 +15,7 @@ #include <openssl/evp.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "x509_lcl.h" +#include "x509_local.h" int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_cmp.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_cmp.c index 833bfce1bf2..d1600e1e8dd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_cmp.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_cmp.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -13,7 +13,7 @@ #include <openssl/objects.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b) { @@ -134,9 +134,12 @@ unsigned long X509_subject_name_hash_old(X509 *x) int X509_cmp(const X509 *a, const X509 *b) { int rv; + /* ensure hash is valid */ - X509_check_purpose((X509 *)a, -1, 0); - X509_check_purpose((X509 *)b, -1, 0); + if (X509_check_purpose((X509 *)a, -1, 0) != 1) + return -2; + if (X509_check_purpose((X509 *)b, -1, 0) != 1) + return -2; rv = memcmp(a->sha1_hash, b->sha1_hash, SHA_DIGEST_LENGTH); if (rv) diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_ext.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_ext.c index 2db843760c6..4cdab724ead 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_ext.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_ext.c @@ -13,7 +13,7 @@ #include <openssl/objects.h> #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/x509v3.h> int X509_CRL_get_ext_count(const X509_CRL *x) diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_lcl.h b/crypto/external/bsd/openssl/dist/crypto/x509/x509_local.h index c517a774563..c517a774563 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_lcl.h +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_lu.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_lu.c index b7d2e66574c..641a41c35c7 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_lu.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_lu.c @@ -11,9 +11,9 @@ #include "internal/cryptlib.h" #include "internal/refcount.h" #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/x509v3.h> -#include "x509_lcl.h" +#include "x509_local.h" X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_meth.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_meth.c index 9dc587a0921..9348cc8eb78 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_meth.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_meth.c @@ -15,7 +15,7 @@ #include <openssl/asn1.h> #include <openssl/x509.h> #include <openssl/ossl_typ.h> -#include "x509_lcl.h" +#include "x509_local.h" X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_obj.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_obj.c index 85c39415c11..f54d483cc4d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_obj.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_obj.c @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/x509.h> #include <openssl/buffer.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" /* * Limit to ensure we don't overflow: much greater than diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_r2x.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_r2x.c index 3d72787d316..6b1623feacb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_r2x.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_r2x.c @@ -13,7 +13,7 @@ #include <openssl/evp.h> #include <openssl/asn1.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/objects.h> #include <openssl/buffer.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_req.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_req.c index 0bdbb81db89..7ba0f26495f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_req.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_req.c @@ -14,7 +14,7 @@ #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/objects.h> #include <openssl/buffer.h> #include <openssl/pem.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_set.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_set.c index 3ab6bf35115..164b4e2be13 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_set.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_set.c @@ -15,9 +15,9 @@ #include <openssl/evp.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/asn1_int.h" -#include "internal/x509_int.h" -#include "x509_lcl.h" +#include "crypto/asn1.h" +#include "crypto/x509.h" +#include "x509_local.h" int X509_set_version(X509 *x, long version) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_trs.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_trs.c index d749af4d590..a10d437735b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_trs.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_trs.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" static int tr_cmp(const X509_TRUST *const *a, const X509_TRUST *const *b); static void trtable_free(X509_TRUST *p); @@ -240,8 +240,9 @@ static int trust_1oid(X509_TRUST *trust, X509 *x, int flags) static int trust_compat(X509_TRUST *trust, X509 *x, int flags) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, 0); - if ((flags & X509_TRUST_NO_SS_COMPAT) == 0 && x->ex_flags & EXFLAG_SS) + if (X509_check_purpose(x, -1, 0) != 1) + return X509_TRUST_UNTRUSTED; + if ((flags & X509_TRUST_NO_SS_COMPAT) == 0 && (x->ex_flags & EXFLAG_SS)) return X509_TRUST_TRUSTED; else return X509_TRUST_UNTRUSTED; diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_v3.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_v3.c index 75ae767d608..c7876023304 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_v3.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_v3.c @@ -15,7 +15,7 @@ #include <openssl/evp.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "x509_lcl.h" +#include "x509_local.h" int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_vfy.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_vfy.c index 6be2c71e869..41625e75ad6 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_vfy.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_vfy.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,7 +12,7 @@ #include <errno.h> #include <limits.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/crypto.h> #include <openssl/buffer.h> @@ -22,8 +22,8 @@ #include <openssl/x509v3.h> #include <openssl/objects.h> #include "internal/dane.h" -#include "internal/x509_int.h" -#include "x509_lcl.h" +#include "crypto/x509.h" +#include "x509_local.h" /* CRL score values */ @@ -107,12 +107,8 @@ static int null_callback(int ok, X509_STORE_CTX *e) /* Return 1 is a certificate is self signed */ static int cert_self_signed(X509 *x) { - /* - * FIXME: x509v3_cache_extensions() needs to detect more failures and not - * set EXFLAG_SET when that happens. Especially, if the failures are - * parse errors, rather than memory pressure! - */ - X509_check_purpose(x, -1, 0); + if (X509_check_purpose(x, -1, 0) != 1) + return 0; if (x->ex_flags & EXFLAG_SS) return 1; else @@ -512,6 +508,12 @@ static int check_chain_extensions(X509_STORE_CTX *ctx) ret = 1; break; } + if ((x->ex_flags & EXFLAG_CA) == 0 + && x->ex_pathlen != -1 + && (ctx->param->flags & X509_V_FLAG_X509_STRICT)) { + ctx->error = X509_V_ERR_INVALID_EXTENSION; + ret = 0; + } if (ret == 0 && !verify_cb_cert(ctx, x, i, X509_V_OK)) return 0; /* check_purpose() makes the callback as needed */ diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509_vpm.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509_vpm.c index aea186295c2..68b681d5ee8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509_vpm.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509_vpm.c @@ -14,9 +14,9 @@ #include <openssl/buffer.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" -#include "x509_lcl.h" +#include "x509_local.h" /* X509_VERIFY_PARAM functions */ diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509cset.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509cset.c index 7645ce37597..6c08509138d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509cset.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509cset.c @@ -14,7 +14,7 @@ #include <openssl/objects.h> #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" int X509_CRL_set_version(X509_CRL *x, long version) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509name.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509name.c index 64a73e793fd..c86d8e7914f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509name.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509name.c @@ -14,7 +14,7 @@ #include <openssl/objects.h> #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x509rset.c b/crypto/external/bsd/openssl/dist/crypto/x509/x509rset.c index e8921b82a83..9da3f2ee27d 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x509rset.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x509rset.c @@ -13,7 +13,7 @@ #include <openssl/objects.h> #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" int X509_REQ_set_version(X509_REQ *x, long version) { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_all.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_all.c index 24e4114601c..aa5ccba4489 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_all.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_all.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -13,7 +13,7 @@ #include <openssl/asn1.h> #include <openssl/evp.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/ocsp.h> #include <openssl/rsa.h> #include <openssl/dsa.h> @@ -362,7 +362,8 @@ int X509_pubkey_digest(const X509 *data, const EVP_MD *type, int X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, unsigned int *len) { - if (type == EVP_sha1() && (data->ex_flags & EXFLAG_SET) != 0) { + if (type == EVP_sha1() && (data->ex_flags & EXFLAG_SET) != 0 + && (data->ex_flags & EXFLAG_INVALID) == 0) { /* Asking for SHA1 and we already computed it. */ if (len != NULL) *len = sizeof(data->sha1_hash); @@ -376,7 +377,8 @@ int X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, unsigned int *len) { - if (type == EVP_sha1() && (data->flags & EXFLAG_SET) != 0) { + if (type == EVP_sha1() && (data->flags & EXFLAG_SET) != 0 + && (data->flags & EXFLAG_INVALID) == 0) { /* Asking for SHA1; always computed in CRL d2i. */ if (len != NULL) *len = sizeof(data->sha1_hash); diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_attrib.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_attrib.c index 9a41e547cb2..813c5b01c3a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_attrib.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_attrib.c @@ -12,7 +12,7 @@ #include <openssl/objects.h> #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "x509_lcl.h" +#include "x509_local.h" /*- * X509_ATTRIBUTE: this has the following form: diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_crl.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_crl.c index 12ab3cca42c..c9762f9e239 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_crl.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_crl.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,13 +11,13 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/x509v3.h> -#include "x509_lcl.h" +#include "x509_local.h" static int X509_REVOKED_cmp(const X509_REVOKED *const *a, const X509_REVOKED *const *b); -static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp); +static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp); ASN1_SEQUENCE(X509_REVOKED) = { ASN1_EMBED(X509_REVOKED,serialNumber, ASN1_INTEGER), @@ -155,7 +155,7 @@ static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, X509_CRL *crl = (X509_CRL *)*pval; STACK_OF(X509_EXTENSION) *exts; X509_EXTENSION *ext; - int idx; + int idx, i; switch (operation) { case ASN1_OP_D2I_PRE: @@ -184,23 +184,35 @@ static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, break; case ASN1_OP_D2I_POST: - X509_CRL_digest(crl, EVP_sha1(), crl->sha1_hash, NULL); + if (!X509_CRL_digest(crl, EVP_sha1(), crl->sha1_hash, NULL)) + crl->flags |= EXFLAG_INVALID; crl->idp = X509_CRL_get_ext_d2i(crl, - NID_issuing_distribution_point, NULL, + NID_issuing_distribution_point, &i, NULL); - if (crl->idp) - setup_idp(crl, crl->idp); + if (crl->idp != NULL) { + if (!setup_idp(crl, crl->idp)) + crl->flags |= EXFLAG_INVALID; + } + else if (i != -1) { + crl->flags |= EXFLAG_INVALID; + } crl->akid = X509_CRL_get_ext_d2i(crl, - NID_authority_key_identifier, NULL, + NID_authority_key_identifier, &i, NULL); + if (crl->akid == NULL && i != -1) + crl->flags |= EXFLAG_INVALID; crl->crl_number = X509_CRL_get_ext_d2i(crl, - NID_crl_number, NULL, NULL); + NID_crl_number, &i, NULL); + if (crl->crl_number == NULL && i != -1) + crl->flags |= EXFLAG_INVALID; crl->base_crl_number = X509_CRL_get_ext_d2i(crl, - NID_delta_crl, NULL, + NID_delta_crl, &i, NULL); + if (crl->base_crl_number == NULL && i != -1) + crl->flags |= EXFLAG_INVALID; /* Delta CRLs must have CRL number */ if (crl->base_crl_number && !crl->crl_number) crl->flags |= EXFLAG_INVALID; @@ -259,9 +271,10 @@ static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, /* Convert IDP into a more convenient form */ -static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp) +static int setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp) { int idp_only = 0; + /* Set various flags according to IDP */ crl->idp_flags |= IDP_PRESENT; if (idp->onlyuser > 0) { @@ -292,7 +305,7 @@ static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp) crl->idp_reasons &= CRLDP_ALL_REASONS; } - DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl)); + return DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl)); } ASN1_SEQUENCE_ref(X509_CRL, crl_cb) = { diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_exten.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_exten.c index f10f4a4d876..bd7518ef12b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_exten.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_exten.c @@ -11,7 +11,7 @@ #include <openssl/x509.h> #include <openssl/asn1.h> #include <openssl/asn1t.h> -#include "x509_lcl.h" +#include "x509_local.h" ASN1_SEQUENCE(X509_EXTENSION) = { ASN1_SIMPLE(X509_EXTENSION, object, ASN1_OBJECT), diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_name.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_name.c index a1e9bbdb669..aa7f4722b6b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_name.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_name.c @@ -8,13 +8,13 @@ */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" -#include "internal/asn1_int.h" -#include "x509_lcl.h" +#include "crypto/x509.h" +#include "crypto/asn1.h" +#include "x509_local.h" /* * Maximum length of X509_NAME: much larger than anything we should diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_pubkey.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_pubkey.c index 1c87b8268eb..4f694b93fb0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_pubkey.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_pubkey.c @@ -11,9 +11,9 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/asn1_int.h" -#include "internal/evp_int.h" -#include "internal/x509_int.h" +#include "crypto/asn1.h" +#include "crypto/evp.h" +#include "crypto/x509.h" #include <openssl/rsa.h> #include <openssl/dsa.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_req.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_req.c index c2da95a73ec..d2b02f6dae8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_req.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_req.c @@ -11,7 +11,7 @@ #include "internal/cryptlib.h" #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" /*- * X509_REQ_INFO is handled in an unusual way to get round diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_x509.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_x509.c index afe59c46c51..7aa8b77ae73 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_x509.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_x509.c @@ -13,7 +13,7 @@ #include <openssl/asn1t.h> #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = { ASN1_EXP_OPT(X509_CINF, version, ASN1_INTEGER, 0), diff --git a/crypto/external/bsd/openssl/dist/crypto/x509/x_x509a.c b/crypto/external/bsd/openssl/dist/crypto/x509/x_x509a.c index 8c9ad71d1b2..c5175faef7a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509/x_x509a.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509/x_x509a.c @@ -12,7 +12,7 @@ #include <openssl/evp.h> #include <openssl/asn1t.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" /* * X509_CERT_AUX routines. These are used to encode additional user diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_cache.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_cache.c index 623870b1f6f..04401bace8c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_cache.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_cache.c @@ -10,9 +10,9 @@ #include "internal/cryptlib.h" #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" -#include "pcy_int.h" +#include "pcy_local.h" static int policy_data_cmp(const X509_POLICY_DATA *const *a, const X509_POLICY_DATA *const *b); diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_data.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_data.c index bd3bb0e40df..07350595132 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_data.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_data.c @@ -11,7 +11,7 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "pcy_int.h" +#include "pcy_local.h" /* Policy Node routines */ diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_lib.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_lib.c index 67f7eafc6e8..2e196b838ca 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_lib.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_lib.c @@ -11,7 +11,7 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "pcy_int.h" +#include "pcy_local.h" /* accessor functions */ diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_int.h b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_local.h index 5daf78de458..5daf78de458 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_int.h +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_local.h diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_map.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_map.c index ab9dd21b7d9..ae2a62c9778 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_map.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_map.c @@ -10,9 +10,9 @@ #include "internal/cryptlib.h" #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" -#include "pcy_int.h" +#include "pcy_local.h" /* * Set policy mapping entries in cache. Note: this modifies the passed diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_node.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_node.c index 1ffe98498bd..e2d7b153223 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_node.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_node.c @@ -12,7 +12,7 @@ #include <openssl/x509v3.h> #include <openssl/err.h> -#include "pcy_int.h" +#include "pcy_local.h" static int node_cmp(const X509_POLICY_NODE *const *a, const X509_POLICY_NODE *const *b) diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_tree.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_tree.c index 87f51d001bb..6e8322cbc5e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_tree.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/pcy_tree.c @@ -11,7 +11,7 @@ #include <openssl/x509.h> #include <openssl/x509v3.h> -#include "pcy_int.h" +#include "pcy_local.h" /* * Enable this to print out the complete policy tree at various point during diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_addr.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_addr.c index bb58e048461..4258dbc40c0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_addr.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_addr.c @@ -20,7 +20,7 @@ #include <openssl/asn1t.h> #include <openssl/buffer.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include "ext_dat.h" #ifndef OPENSSL_NO_RFC3779 diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_admis.h b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_admis.h index fa23fc76175..ea7632b3708 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_admis.h +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_admis.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_V3_ADMISSION_H -# define HEADER_V3_ADMISSION_H +#ifndef OSSL_CRYPTO_X509V3_V3_ADMIS_H +# define OSSL_CRYPTO_X509V3_V3_ADMIS_H struct NamingAuthority_st { ASN1_OBJECT* namingAuthorityId; diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_alt.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_alt.c index dfcb9094f4f..7ac2911b91a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_alt.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_alt.c @@ -52,11 +52,24 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, { int i; GENERAL_NAME *gen; + STACK_OF(CONF_VALUE) *tmpret = NULL, *origret = ret; + for (i = 0; i < sk_GENERAL_NAME_num(gens); i++) { gen = sk_GENERAL_NAME_value(gens, i); - ret = i2v_GENERAL_NAME(method, gen, ret); + /* + * i2v_GENERAL_NAME allocates ret if it is NULL. If something goes + * wrong we need to free the stack - but only if it was empty when we + * originally entered this function. + */ + tmpret = i2v_GENERAL_NAME(method, gen, ret); + if (tmpret == NULL) { + if (origret == NULL) + sk_CONF_VALUE_pop_free(ret, X509V3_conf_free); + return NULL; + } + ret = tmpret; } - if (!ret) + if (ret == NULL) return sk_CONF_VALUE_new_null(); return ret; } diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_asid.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_asid.c index 089f2ae29f0..ac685726729 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_asid.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_asid.c @@ -20,7 +20,7 @@ #include <openssl/asn1t.h> #include <openssl/x509v3.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/bn.h> #include "ext_dat.h" @@ -256,6 +256,7 @@ static int extract_min_max(ASIdOrRange *aor, static int ASIdentifierChoice_is_canonical(ASIdentifierChoice *choice) { ASN1_INTEGER *a_max_plus_one = NULL; + ASN1_INTEGER *orig; BIGNUM *bn = NULL; int i, ret = 0; @@ -298,9 +299,15 @@ static int ASIdentifierChoice_is_canonical(ASIdentifierChoice *choice) */ if ((bn == NULL && (bn = BN_new()) == NULL) || ASN1_INTEGER_to_BN(a_max, bn) == NULL || - !BN_add_word(bn, 1) || - (a_max_plus_one = - BN_to_ASN1_INTEGER(bn, a_max_plus_one)) == NULL) { + !BN_add_word(bn, 1)) { + X509V3err(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL, + ERR_R_MALLOC_FAILURE); + goto done; + } + + if ((a_max_plus_one = + BN_to_ASN1_INTEGER(bn, orig = a_max_plus_one)) == NULL) { + a_max_plus_one = orig; X509V3err(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL, ERR_R_MALLOC_FAILURE); goto done; @@ -351,6 +358,7 @@ int X509v3_asid_is_canonical(ASIdentifiers *asid) static int ASIdentifierChoice_canonize(ASIdentifierChoice *choice) { ASN1_INTEGER *a_max_plus_one = NULL; + ASN1_INTEGER *orig; BIGNUM *bn = NULL; int i, ret = 0; @@ -416,9 +424,15 @@ static int ASIdentifierChoice_canonize(ASIdentifierChoice *choice) */ if ((bn == NULL && (bn = BN_new()) == NULL) || ASN1_INTEGER_to_BN(a_max, bn) == NULL || - !BN_add_word(bn, 1) || - (a_max_plus_one = - BN_to_ASN1_INTEGER(bn, a_max_plus_one)) == NULL) { + !BN_add_word(bn, 1)) { + X509V3err(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE, + ERR_R_MALLOC_FAILURE); + goto done; + } + + if ((a_max_plus_one = + BN_to_ASN1_INTEGER(bn, orig = a_max_plus_one)) == NULL) { + a_max_plus_one = orig; X509V3err(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE, ERR_R_MALLOC_FAILURE); goto done; diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_conf.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_conf.c index 7acaebfa225..e93de345460 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_conf.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_conf.c @@ -10,11 +10,11 @@ /* extension creation utilities */ #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/cryptlib.h" #include <openssl/conf.h> #include <openssl/x509.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/x509v3.h> static int v3_check_critical(const char **value); diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_cpols.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_cpols.c index 7a47fd38b37..1d12c899125 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_cpols.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_cpols.c @@ -14,7 +14,7 @@ #include <openssl/asn1t.h> #include <openssl/x509v3.h> -#include "pcy_int.h" +#include "pcy_local.h" #include "ext_dat.h" /* Certificate policies extension support: this one is a bit complex... */ diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_crld.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_crld.c index 6cba4240abf..4854748ffb5 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_crld.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_crld.c @@ -14,7 +14,7 @@ #include <openssl/asn1t.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include "ext_dat.h" static void *v2i_crld(const X509V3_EXT_METHOD *method, diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_ncons.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_ncons.c index 9a2cd5af00c..2a7b4f0992a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_ncons.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_ncons.c @@ -10,12 +10,12 @@ #include "internal/cryptlib.h" #include "internal/numbers.h" #include <stdio.h> -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #include <openssl/asn1t.h> #include <openssl/conf.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include "ext_dat.h" static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_purp.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_purp.c index 2f06289d194..f023c648954 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_purp.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_purp.c @@ -1,5 +1,5 @@ /* - * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,7 +12,7 @@ #include "internal/numbers.h" #include <openssl/x509v3.h> #include <openssl/x509_vfy.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include "internal/tsan_assist.h" static void x509v3_cache_extensions(X509 *x); @@ -81,6 +81,8 @@ int X509_check_purpose(X509 *x, int id, int ca) const X509_PURPOSE *pt; x509v3_cache_extensions(x); + if (x->ex_flags & EXFLAG_INVALID) + return -1; /* Return if side-effect only call */ if (id == -1) @@ -300,10 +302,11 @@ int X509_supported_extension(X509_EXTENSION *ex) return 0; } -static void setup_dp(X509 *x, DIST_POINT *dp) +static int setup_dp(X509 *x, DIST_POINT *dp) { X509_NAME *iname = NULL; int i; + if (dp->reasons) { if (dp->reasons->length > 0) dp->dp_reasons = dp->reasons->data[0]; @@ -313,7 +316,7 @@ static void setup_dp(X509 *x, DIST_POINT *dp) } else dp->dp_reasons = CRLDP_ALL_REASONS; if (!dp->distpoint || (dp->distpoint->type != 1)) - return; + return 1; for (i = 0; i < sk_GENERAL_NAME_num(dp->CRLissuer); i++) { GENERAL_NAME *gen = sk_GENERAL_NAME_value(dp->CRLissuer, i); if (gen->type == GEN_DIRNAME) { @@ -324,16 +327,21 @@ static void setup_dp(X509 *x, DIST_POINT *dp) if (!iname) iname = X509_get_issuer_name(x); - DIST_POINT_set_dpname(dp->distpoint, iname); - + return DIST_POINT_set_dpname(dp->distpoint, iname); } -static void setup_crldp(X509 *x) +static int setup_crldp(X509 *x) { int i; - x->crldp = X509_get_ext_d2i(x, NID_crl_distribution_points, NULL, NULL); - for (i = 0; i < sk_DIST_POINT_num(x->crldp); i++) - setup_dp(x, sk_DIST_POINT_value(x->crldp, i)); + + x->crldp = X509_get_ext_d2i(x, NID_crl_distribution_points, &i, NULL); + if (x->crldp == NULL && i != -1) + return 0; + for (i = 0; i < sk_DIST_POINT_num(x->crldp); i++) { + if (!setup_dp(x, sk_DIST_POINT_value(x->crldp, i))) + return 0; + } + return 1; } #define V1_ROOT (EXFLAG_V1|EXFLAG_SS) @@ -366,28 +374,35 @@ static void x509v3_cache_extensions(X509 *x) return; } - X509_digest(x, EVP_sha1(), x->sha1_hash, NULL); + if (!X509_digest(x, EVP_sha1(), x->sha1_hash, NULL)) + x->ex_flags |= EXFLAG_INVALID; /* V1 should mean no extensions ... */ if (!X509_get_version(x)) x->ex_flags |= EXFLAG_V1; /* Handle basic constraints */ - if ((bs = X509_get_ext_d2i(x, NID_basic_constraints, NULL, NULL))) { + if ((bs = X509_get_ext_d2i(x, NID_basic_constraints, &i, NULL))) { if (bs->ca) x->ex_flags |= EXFLAG_CA; if (bs->pathlen) { - if ((bs->pathlen->type == V_ASN1_NEG_INTEGER) - || !bs->ca) { + if (bs->pathlen->type == V_ASN1_NEG_INTEGER) { x->ex_flags |= EXFLAG_INVALID; x->ex_pathlen = 0; - } else + } else { x->ex_pathlen = ASN1_INTEGER_get(bs->pathlen); + if (!bs->ca && x->ex_pathlen != 0) { + x->ex_flags |= EXFLAG_INVALID; + x->ex_pathlen = 0; + } + } } else x->ex_pathlen = -1; BASIC_CONSTRAINTS_free(bs); x->ex_flags |= EXFLAG_BCONS; + } else if (i != -1) { + x->ex_flags |= EXFLAG_INVALID; } /* Handle proxy certificates */ - if ((pci = X509_get_ext_d2i(x, NID_proxyCertInfo, NULL, NULL))) { + if ((pci = X509_get_ext_d2i(x, NID_proxyCertInfo, &i, NULL))) { if (x->ex_flags & EXFLAG_CA || X509_get_ext_by_NID(x, NID_subject_alt_name, -1) >= 0 || X509_get_ext_by_NID(x, NID_issuer_alt_name, -1) >= 0) { @@ -399,9 +414,11 @@ static void x509v3_cache_extensions(X509 *x) x->ex_pcpathlen = -1; PROXY_CERT_INFO_EXTENSION_free(pci); x->ex_flags |= EXFLAG_PROXY; + } else if (i != -1) { + x->ex_flags |= EXFLAG_INVALID; } /* Handle key usage */ - if ((usage = X509_get_ext_d2i(x, NID_key_usage, NULL, NULL))) { + if ((usage = X509_get_ext_d2i(x, NID_key_usage, &i, NULL))) { if (usage->length > 0) { x->ex_kusage = usage->data[0]; if (usage->length > 1) @@ -410,9 +427,11 @@ static void x509v3_cache_extensions(X509 *x) x->ex_kusage = 0; x->ex_flags |= EXFLAG_KUSAGE; ASN1_BIT_STRING_free(usage); + } else if (i != -1) { + x->ex_flags |= EXFLAG_INVALID; } x->ex_xkusage = 0; - if ((extusage = X509_get_ext_d2i(x, NID_ext_key_usage, NULL, NULL))) { + if ((extusage = X509_get_ext_d2i(x, NID_ext_key_usage, &i, NULL))) { x->ex_flags |= EXFLAG_XKUSAGE; for (i = 0; i < sk_ASN1_OBJECT_num(extusage); i++) { switch (OBJ_obj2nid(sk_ASN1_OBJECT_value(extusage, i))) { @@ -455,18 +474,26 @@ static void x509v3_cache_extensions(X509 *x) } } sk_ASN1_OBJECT_pop_free(extusage, ASN1_OBJECT_free); + } else if (i != -1) { + x->ex_flags |= EXFLAG_INVALID; } - if ((ns = X509_get_ext_d2i(x, NID_netscape_cert_type, NULL, NULL))) { + if ((ns = X509_get_ext_d2i(x, NID_netscape_cert_type, &i, NULL))) { if (ns->length > 0) x->ex_nscert = ns->data[0]; else x->ex_nscert = 0; x->ex_flags |= EXFLAG_NSCERT; ASN1_BIT_STRING_free(ns); + } else if (i != -1) { + x->ex_flags |= EXFLAG_INVALID; } - x->skid = X509_get_ext_d2i(x, NID_subject_key_identifier, NULL, NULL); - x->akid = X509_get_ext_d2i(x, NID_authority_key_identifier, NULL, NULL); + x->skid = X509_get_ext_d2i(x, NID_subject_key_identifier, &i, NULL); + if (x->skid == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; + x->akid = X509_get_ext_d2i(x, NID_authority_key_identifier, &i, NULL); + if (x->akid == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; /* Does subject name match issuer ? */ if (!X509_NAME_cmp(X509_get_subject_name(x), X509_get_issuer_name(x))) { x->ex_flags |= EXFLAG_SI; @@ -475,16 +502,22 @@ static void x509v3_cache_extensions(X509 *x) !ku_reject(x, KU_KEY_CERT_SIGN)) x->ex_flags |= EXFLAG_SS; } - x->altname = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL); + x->altname = X509_get_ext_d2i(x, NID_subject_alt_name, &i, NULL); + if (x->altname == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; x->nc = X509_get_ext_d2i(x, NID_name_constraints, &i, NULL); - if (!x->nc && (i != -1)) + if (x->nc == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; + if (!setup_crldp(x)) x->ex_flags |= EXFLAG_INVALID; - setup_crldp(x); #ifndef OPENSSL_NO_RFC3779 - x->rfc3779_addr = X509_get_ext_d2i(x, NID_sbgp_ipAddrBlock, NULL, NULL); - x->rfc3779_asid = X509_get_ext_d2i(x, NID_sbgp_autonomousSysNum, - NULL, NULL); + x->rfc3779_addr = X509_get_ext_d2i(x, NID_sbgp_ipAddrBlock, &i, NULL); + if (x->rfc3779_addr == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; + x->rfc3779_asid = X509_get_ext_d2i(x, NID_sbgp_autonomousSysNum, &i, NULL); + if (x->rfc3779_asid == NULL && i != -1) + x->ex_flags |= EXFLAG_INVALID; #endif for (i = 0; i < X509_get_ext_count(x); i++) { ex = X509_get_ext(x, i); @@ -516,9 +549,11 @@ static void x509v3_cache_extensions(X509 *x) * return codes: * 0 not a CA * 1 is a CA - * 2 basicConstraints absent so "maybe" a CA + * 2 Only possible in older versions of openSSL when basicConstraints are absent + * new versions will not return this value. May be a CA * 3 basicConstraints absent but self signed V1. * 4 basicConstraints absent but keyUsage present and keyCertSign asserted. + * 5 Netscape specific CA Flags present */ static int check_ca(const X509 *x) @@ -777,7 +812,11 @@ int X509_check_issued(X509 *issuer, X509 *subject) return X509_V_ERR_SUBJECT_ISSUER_MISMATCH; x509v3_cache_extensions(issuer); + if (issuer->ex_flags & EXFLAG_INVALID) + return X509_V_ERR_UNSPECIFIED; x509v3_cache_extensions(subject); + if (subject->ex_flags & EXFLAG_INVALID) + return X509_V_ERR_UNSPECIFIED; if (subject->akid) { int ret = X509_check_akid(issuer, subject->akid); @@ -842,7 +881,8 @@ uint32_t X509_get_extension_flags(X509 *x) uint32_t X509_get_key_usage(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return 0; if (x->ex_flags & EXFLAG_KUSAGE) return x->ex_kusage; return UINT32_MAX; @@ -851,7 +891,8 @@ uint32_t X509_get_key_usage(X509 *x) uint32_t X509_get_extended_key_usage(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return 0; if (x->ex_flags & EXFLAG_XKUSAGE) return x->ex_xkusage; return UINT32_MAX; @@ -860,28 +901,32 @@ uint32_t X509_get_extended_key_usage(X509 *x) const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return NULL; return x->skid; } const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return NULL; return (x->akid != NULL ? x->akid->keyid : NULL); } const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return NULL; return (x->akid != NULL ? x->akid->issuer : NULL); } const ASN1_INTEGER *X509_get0_authority_serial(X509 *x) { /* Call for side-effect of computing hash and caching extensions */ - X509_check_purpose(x, -1, -1); + if (X509_check_purpose(x, -1, -1) != 1) + return NULL; return (x->akid != NULL ? x->akid->serial : NULL); } diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_skey.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_skey.c index 749f51b2f00..c2e82045682 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_skey.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_skey.c @@ -10,7 +10,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include "ext_dat.h" static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, diff --git a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_utl.c b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_utl.c index c9b40d2c76e..7281a7b917a 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_utl.c +++ b/crypto/external/bsd/openssl/dist/crypto/x509v3/v3_utl.c @@ -12,11 +12,11 @@ #include "e_os.h" #include "internal/cryptlib.h" #include <stdio.h> -#include "internal/ctype.h" +#include "crypto/ctype.h" #include <openssl/conf.h> #include <openssl/crypto.h> #include <openssl/x509v3.h> -#include "internal/x509_int.h" +#include "crypto/x509.h" #include <openssl/bn.h> #include "ext_dat.h" diff --git a/crypto/external/bsd/openssl/dist/crypto/x86_64cpuid.pl b/crypto/external/bsd/openssl/dist/crypto/x86_64cpuid.pl index 6423e803b75..d9536d65768 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x86_64cpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/x86_64cpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -39,6 +39,7 @@ print<<___; .type OPENSSL_atomic_add,\@abi-omnipotent .align 16 OPENSSL_atomic_add: +.cfi_startproc movl ($arg1),%eax .Lspin: leaq ($arg2,%rax),%r8 .byte 0xf0 # lock @@ -47,16 +48,19 @@ OPENSSL_atomic_add: movl %r8d,%eax .byte 0x48,0x98 # cltq/cdqe ret +.cfi_endproc .size OPENSSL_atomic_add,.-OPENSSL_atomic_add .globl OPENSSL_rdtsc .type OPENSSL_rdtsc,\@abi-omnipotent .align 16 OPENSSL_rdtsc: +.cfi_startproc rdtsc shl \$32,%rdx or %rdx,%rax ret +.cfi_endproc .size OPENSSL_rdtsc,.-OPENSSL_rdtsc .globl OPENSSL_ia32_cpuid @@ -232,6 +236,7 @@ OPENSSL_ia32_cpuid: .type OPENSSL_cleanse,\@abi-omnipotent .align 16 OPENSSL_cleanse: +.cfi_startproc xor %rax,%rax cmp \$15,$arg2 jae .Lot @@ -261,12 +266,14 @@ OPENSSL_cleanse: cmp \$0,$arg2 jne .Little ret +.cfi_endproc .size OPENSSL_cleanse,.-OPENSSL_cleanse .globl CRYPTO_memcmp .type CRYPTO_memcmp,\@abi-omnipotent .align 16 CRYPTO_memcmp: +.cfi_startproc xor %rax,%rax xor %r10,%r10 cmp \$0,$arg3 @@ -295,6 +302,7 @@ CRYPTO_memcmp: shr \$63,%rax .Lno_data: ret +.cfi_endproc .size CRYPTO_memcmp,.-CRYPTO_memcmp ___ @@ -303,6 +311,7 @@ print<<___ if (!$win64); .type OPENSSL_wipe_cpu,\@abi-omnipotent .align 16 OPENSSL_wipe_cpu: +.cfi_startproc pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 pxor %xmm2,%xmm2 @@ -329,6 +338,7 @@ OPENSSL_wipe_cpu: xorq %r11,%r11 leaq 8(%rsp),%rax ret +.cfi_endproc .size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu ___ print<<___ if ($win64); @@ -365,6 +375,7 @@ print<<___; .type OPENSSL_instrument_bus,\@abi-omnipotent .align 16 OPENSSL_instrument_bus: +.cfi_startproc mov $arg1,$out # tribute to Win64 mov $arg2,$cnt mov $arg2,$max @@ -391,12 +402,14 @@ OPENSSL_instrument_bus: mov $max,%rax ret +.cfi_endproc .size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus .globl OPENSSL_instrument_bus2 .type OPENSSL_instrument_bus2,\@abi-omnipotent .align 16 OPENSSL_instrument_bus2: +.cfi_startproc mov $arg1,$out # tribute to Win64 mov $arg2,$cnt mov $arg3,$max @@ -439,6 +452,7 @@ OPENSSL_instrument_bus2: mov $redzone(%rsp),%rax sub $cnt,%rax ret +.cfi_endproc .size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 ___ } @@ -450,6 +464,7 @@ print<<___; .type OPENSSL_ia32_${rdop}_bytes,\@abi-omnipotent .align 16 OPENSSL_ia32_${rdop}_bytes: +.cfi_startproc xor %rax, %rax # return value cmp \$0,$arg2 je .Ldone_${rdop}_bytes @@ -486,10 +501,11 @@ OPENSSL_ia32_${rdop}_bytes: .Ldone_${rdop}_bytes: xor %r10,%r10 # Clear sensitive data from register ret +.cfi_endproc .size OPENSSL_ia32_${rdop}_bytes,.-OPENSSL_ia32_${rdop}_bytes ___ } gen_random("rdrand"); gen_random("rdseed"); -close STDOUT; # flush +close STDOUT or die "error closing STDOUT: $!"; # flush diff --git a/crypto/external/bsd/openssl/dist/crypto/x86cpuid.pl b/crypto/external/bsd/openssl/dist/crypto/x86cpuid.pl index d43dda4d935..ba4fd80fb32 100644 --- a/crypto/external/bsd/openssl/dist/crypto/x86cpuid.pl +++ b/crypto/external/bsd/openssl/dist/crypto/x86cpuid.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -506,4 +506,4 @@ my $rdop = shift; &asm_finish(); -close STDOUT; +close STDOUT or die "error closing STDOUT: $!"; diff --git a/crypto/external/bsd/openssl/dist/doc/HOWTO/proxy_certificates.txt b/crypto/external/bsd/openssl/dist/doc/HOWTO/proxy_certificates.txt deleted file mode 100644 index 3c423492611..00000000000 --- a/crypto/external/bsd/openssl/dist/doc/HOWTO/proxy_certificates.txt +++ /dev/null @@ -1,319 +0,0 @@ - HOWTO proxy certificates - -0. WARNING - -NONE OF THE CODE PRESENTED HERE HAS BEEN CHECKED! The code is just examples to -show you how things could be done. There might be typos or type conflicts, and -you will have to resolve them. - -1. Introduction - -Proxy certificates are defined in RFC 3820. They are really usual certificates -with the mandatory extension proxyCertInfo. - -Proxy certificates are issued by an End Entity (typically a user), either -directly with the EE certificate as issuing certificate, or by extension through -an already issued proxy certificate. Proxy certificates are used to extend -rights to some other entity (a computer process, typically, or sometimes to the -user itself). This allows the entity to perform operations on behalf of the -owner of the EE certificate. - -See https://www.ietf.org/rfc/rfc3820.txt for more information. - - -2. A warning about proxy certificates - -No one seems to have tested proxy certificates with security in mind. To this -date, it seems that proxy certificates have only been used in a context highly -aware of them. - -Existing applications might misbehave when trying to validate a chain of -certificates which use a proxy certificate. They might incorrectly consider the -leaf to be the certificate to check for authorisation data, which is controlled -by the EE certificate owner. - -subjectAltName and issuerAltName are forbidden in proxy certificates, and this -is enforced in OpenSSL. The subject must be the same as the issuer, with one -commonName added on. - -Possible threats we can think of at this time include: - - - impersonation through commonName (think server certificates). - - use of additional extensions, possibly non-standard ones used in certain - environments, that would grant extra or different authorisation rights. - -For these reasons, OpenSSL requires that the use of proxy certificates be -explicitly allowed. Currently, this can be done using the following methods: - - - if the application directly calls X509_verify_cert(), it can first call: - - X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_ALLOW_PROXY_CERTS); - - Where ctx is the pointer which then gets passed to X509_verify_cert(). - - - proxy certificate validation can be enabled before starting the application - by setting the environment variable OPENSSL_ALLOW_PROXY_CERTS. - -In the future, it might be possible to enable proxy certificates by editing -openssl.cnf. - - -3. How to create proxy certificates - -Creating proxy certificates is quite easy, by taking advantage of a lack of -checks in the 'openssl x509' application (*ahem*). You must first create a -configuration section that contains a definition of the proxyCertInfo extension, -for example: - - [ v3_proxy ] - # A proxy certificate MUST NEVER be a CA certificate. - basicConstraints=CA:FALSE - - # Usual authority key ID - authorityKeyIdentifier=keyid,issuer:always - - # The extension which marks this certificate as a proxy - proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:1,policy:text:AB - -It's also possible to specify the proxy extension in a separate section: - - proxyCertInfo=critical,@proxy_ext - - [ proxy_ext ] - language=id-ppl-anyLanguage - pathlen=0 - policy=text:BC - -The policy value has a specific syntax, {syntag}:{string}, where the syntag -determines what will be done with the string. The following syntags are -recognised: - - text indicates that the string is simply bytes, without any encoding: - - policy=text:räksmörgÃ¥s - - Previous versions of this design had a specific tag for UTF-8 text. - However, since the bytes are copied as-is anyway, there is no need for - such a specific tag. - - hex indicates the string is encoded in hex, with colons between each byte - (every second hex digit): - - policy=hex:72:E4:6B:73:6D:F6:72:67:E5:73 - - Previous versions of this design had a tag to insert a complete DER - blob. However, the only legal use for this would be to surround the - bytes that would go with the hex: tag with whatever is needed to - construct a correct OCTET STRING. The DER tag therefore felt - superfluous, and was removed. - - file indicates that the text of the policy should really be taken from a - file. The string is then really a file name. This is useful for - policies that are large (more than a few lines, e.g. XML documents). - -The 'policy' setting can be split up in multiple lines like this: - - 0.policy=This is - 1.policy= a multi- - 2.policy=line policy. - -NOTE: the proxy policy value is the part which determines the rights granted to -the process using the proxy certificate. The value is completely dependent on -the application reading and interpreting it! - -Now that you have created an extension section for your proxy certificate, you -can easily create a proxy certificate by doing: - - openssl req -new -config openssl.cnf -out proxy.req -keyout proxy.key - openssl x509 -req -CAcreateserial -in proxy.req -days 7 -out proxy.crt \ - -CA user.crt -CAkey user.key -extfile openssl.cnf -extensions v3_proxy - -You can also create a proxy certificate using another proxy certificate as -issuer (note: I'm using a different configuration section for it): - - openssl req -new -config openssl.cnf -out proxy2.req -keyout proxy2.key - openssl x509 -req -CAcreateserial -in proxy2.req -days 7 -out proxy2.crt \ - -CA proxy.crt -CAkey proxy.key -extfile openssl.cnf -extensions v3_proxy2 - - -4. How to have your application interpret the policy? - -The basic way to interpret proxy policies is to start with some default rights, -then compute the resulting rights by checking the proxy certificate against -the chain of proxy certificates, user certificate and CA certificates. You then -use the final computed rights. Sounds easy, huh? It almost is. - -The slightly complicated part is figuring out how to pass data between your -application and the certificate validation procedure. - -You need the following ingredients: - - - a callback function that will be called for every certificate being - validated. The callback be called several times for each certificate, - so you must be careful to do the proxy policy interpretation at the right - time. You also need to fill in the defaults when the EE certificate is - checked. - - - a data structure that is shared between your application code and the - callback. - - - a wrapper function that sets it all up. - - - an ex_data index function that creates an index into the generic ex_data - store that is attached to an X509 validation context. - -Here is some skeleton code you can fill in: - - #include <string.h> - #include <netdb.h> - #include <openssl/x509.h> - #include <openssl/x509v3.h> - - #define total_rights 25 - - /* - * In this example, I will use a view of granted rights as a bit - * array, one bit for each possible right. - */ - typedef struct your_rights { - unsigned char rights[(total_rights + 7) / 8]; - } YOUR_RIGHTS; - - /* - * The following procedure will create an index for the ex_data - * store in the X509 validation context the first time it's called. - * Subsequent calls will return the same index. */ - static int get_proxy_auth_ex_data_idx(X509_STORE_CTX *ctx) - { - static volatile int idx = -1; - if (idx < 0) { - X509_STORE_lock(X509_STORE_CTX_get0_store(ctx)); - if (idx < 0) { - idx = X509_STORE_CTX_get_ex_new_index(0, - "for verify callback", - NULL,NULL,NULL); - } - X509_STORE_unlock(X509_STORE_CTX_get0_store(ctx)); - } - return idx; - } - - /* Callback to be given to the X509 validation procedure. */ - static int verify_callback(int ok, X509_STORE_CTX *ctx) - { - if (ok == 1) { - /* - * It's REALLY important you keep the proxy policy - * check within this section. It's important to know - * that when ok is 1, the certificates are checked - * from top to bottom. You get the CA root first, - * followed by the possible chain of intermediate - * CAs, followed by the EE certificate, followed by - * the possible proxy certificates. - */ - X509 *xs = X509_STORE_CTX_get_current_cert(ctx); - - if (X509_get_extension_flags(xs) & EXFLAG_PROXY) { - YOUR_RIGHTS *rights = - (YOUR_RIGHTS *)X509_STORE_CTX_get_ex_data(ctx, - get_proxy_auth_ex_data_idx(ctx)); - PROXY_CERT_INFO_EXTENSION *pci = - X509_get_ext_d2i(xs, NID_proxyCertInfo, NULL, NULL); - - switch (OBJ_obj2nid(pci->proxyPolicy->policyLanguage)) { - case NID_Independent: - /* - * Do whatever you need to grant explicit rights to - * this particular proxy certificate, usually by - * pulling them from some database. If there are none - * to be found, clear all rights (making this and any - * subsequent proxy certificate void of any rights). - */ - memset(rights->rights, 0, sizeof(rights->rights)); - break; - case NID_id_ppl_inheritAll: - /* - * This is basically a NOP, we simply let the current - * rights stand as they are. - */ - break; - default: - /* This is usually the most complex section of code. - * You really do whatever you want as long as you - * follow RFC 3820. In the example we use here, the - * simplest thing to do is to build another, temporary - * bit array and fill it with the rights granted by - * the current proxy certificate, then use it as a - * mask on the accumulated rights bit array, and - * voilà , you now have a new accumulated rights bit - * array. - */ - { - int i; - YOUR_RIGHTS tmp_rights; - memset(tmp_rights.rights, 0, sizeof(tmp_rights.rights)); - - /* - * process_rights() is supposed to be a procedure - * that takes a string and its length, interprets - * it and sets the bits in the YOUR_RIGHTS pointed - * at by the third argument. - */ - process_rights((char *) pci->proxyPolicy->policy->data, - pci->proxyPolicy->policy->length, - &tmp_rights); - - for(i = 0; i < total_rights / 8; i++) - rights->rights[i] &= tmp_rights.rights[i]; - } - break; - } - PROXY_CERT_INFO_EXTENSION_free(pci); - } else if (!(X509_get_extension_flags(xs) & EXFLAG_CA)) { - /* We have an EE certificate, let's use it to set default! */ - YOUR_RIGHTS *rights = - (YOUR_RIGHTS *)X509_STORE_CTX_get_ex_data(ctx, - get_proxy_auth_ex_data_idx(ctx)); - - /* The following procedure finds out what rights the owner - * of the current certificate has, and sets them in the - * YOUR_RIGHTS structure pointed at by the second - * argument. - */ - set_default_rights(xs, rights); - } - } - return ok; - } - - static int my_X509_verify_cert(X509_STORE_CTX *ctx, - YOUR_RIGHTS *needed_rights) - { - int ok; - int (*save_verify_cb)(int ok,X509_STORE_CTX *ctx) = - X509_STORE_CTX_get_verify_cb(ctx); - YOUR_RIGHTS rights; - - X509_STORE_CTX_set_verify_cb(ctx, verify_callback); - X509_STORE_CTX_set_ex_data(ctx, get_proxy_auth_ex_data_idx(ctx), &rights); - X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_ALLOW_PROXY_CERTS); - ok = X509_verify_cert(ctx); - - if (ok == 1) { - ok = check_needed_rights(rights, needed_rights); - } - - X509_STORE_CTX_set_verify_cb(ctx, save_verify_cb); - - return ok; - } - - -If you use SSL or TLS, you can easily set up a callback to have the -certificates checked properly, using the code above: - - SSL_CTX_set_cert_verify_callback(s_ctx, my_X509_verify_cert, &needed_rights); - - --- -Richard Levitte diff --git a/crypto/external/bsd/openssl/dist/doc/man1/ca.pod b/crypto/external/bsd/openssl/dist/doc/man1/ca.pod index 7385a00941e..27bb31493a7 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/ca.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/ca.pod @@ -51,6 +51,7 @@ B<openssl> B<ca> [B<-engine id>] [B<-subj arg>] [B<-utf8>] +[B<-sigopt nm:v>] [B<-create_serial>] [B<-rand_serial>] [B<-multivalue-rdn>] @@ -134,6 +135,11 @@ The private key to sign requests with. The format of the data in the private key file. The default is PEM. +=item B<-sigopt nm:v> + +Pass options to the signature algorithm during sign or verify operations. +Names and values of these options are algorithm-specific. + =item B<-key password> The password used to encrypt the private key. Since on some diff --git a/crypto/external/bsd/openssl/dist/doc/man1/dgst.pod b/crypto/external/bsd/openssl/dist/doc/man1/dgst.pod index 66a6697eb10..ea2c4e3e159 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/dgst.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/dgst.pod @@ -12,6 +12,7 @@ B<openssl dgst> [B<-help>] [B<-c>] [B<-d>] +[B<-list>] [B<-hex>] [B<-binary>] [B<-r>] @@ -22,6 +23,7 @@ B<openssl dgst> [B<-verify filename>] [B<-prverify filename>] [B<-signature filename>] +[B<-sigopt nm:v>] [B<-hmac key>] [B<-fips-fingerprint>] [B<-rand file...>] @@ -66,6 +68,10 @@ B<hex> format output is used. Print out BIO debugging information. +=item B<-list> + +Prints out a list of supported message digests. + =item B<-hex> Digest is to be output as a hex dump. This is the default case for a "normal" @@ -78,7 +84,8 @@ Output the digest or signature in binary form. =item B<-r> -Output the digest in the "coreutils" format used by programs like B<sha1sum>. +Output the digest in the "coreutils" format, including newlines. +Used by programs like B<sha1sum>. =item B<-out filename> diff --git a/crypto/external/bsd/openssl/dist/doc/man1/enc.pod b/crypto/external/bsd/openssl/dist/doc/man1/enc.pod index a3e0b03b200..6f20ac1fc7d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/enc.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/enc.pod @@ -9,6 +9,7 @@ enc - symmetric cipher routines B<openssl enc -I<cipher>> [B<-help>] +[B<-list>] [B<-ciphers>] [B<-in filename>] [B<-out filename>] @@ -56,10 +57,14 @@ either by itself or in addition to the encryption or decryption. Print out a usage message. -=item B<-ciphers> +=item B<-list> List all supported ciphers. +=item B<-ciphers> + +Alias of -list to display all supported ciphers. + =item B<-in filename> The input filename, standard input by default. @@ -419,6 +424,8 @@ certain parameters. So if, for example, you want to use RC2 with a The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0. +The B<-list> option was added in OpenSSL 1.1.1e. + =head1 COPYRIGHT Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. diff --git a/crypto/external/bsd/openssl/dist/doc/man1/rand.pod b/crypto/external/bsd/openssl/dist/doc/man1/rand.pod index 5dd9e8e0a56..b5d45ab51cf 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/rand.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/rand.pod @@ -18,12 +18,14 @@ I<num> =head1 DESCRIPTION -The B<rand> command outputs I<num> pseudo-random bytes after seeding -the random number generator once. As in other B<openssl> command -line tools, PRNG seeding uses the file I<$HOME/>B<.rnd> or B<.rnd> -in addition to the files given in the B<-rand> option. A new -I<$HOME>/B<.rnd> or B<.rnd> file will be written back if enough -seeding was obtained from these sources. +This command generates I<num> random bytes using a cryptographically +secure pseudo random number generator (CSPRNG). + +The random bytes are generated using the L<RAND_bytes(3)> function, +which provides a security level of 256 bits, provided it managed to +seed itself successfully from a trusted operating system entropy source. +Otherwise, the command will fail with a nonzero error code. +For more details, see L<RAND_bytes(3)>, L<RAND(7)>, and L<RAND_DRBG(7)>. =head1 OPTIONS @@ -44,6 +46,8 @@ generator. Multiple files can be specified separated by an OS-dependent character. The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for all others. +Explicitly specifying a seed file is in general not necessary, see the +L</NOTES> section for more information. =item [B<-writerand file>] @@ -60,13 +64,28 @@ Show the output as a hex string. =back +=head1 NOTES + +Prior to OpenSSL 1.1.1, it was common for applications to store information +about the state of the random-number generator in a file that was loaded +at startup and rewritten upon exit. On modern operating systems, this is +generally no longer necessary as OpenSSL will seed itself from a trusted +entropy source provided by the operating system. The B<-rand> and +B<-writerand> flags are still supported for special platforms or +circumstances that might require them. + +It is generally an error to use the same seed file more than once and +every use of B<-rand> should be paired with B<-writerand>. + =head1 SEE ALSO -L<RAND_bytes(3)> +L<RAND_bytes(3)>, +L<RAND(7)>, +L<RAND_DRBG(7)> =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man1/req.pod b/crypto/external/bsd/openssl/dist/doc/man1/req.pod index a9b5b1690a5..730c59079d6 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/req.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/req.pod @@ -46,6 +46,7 @@ B<openssl> B<req> [B<-reqopt>] [B<-subject>] [B<-subj arg>] +[B<-sigopt nm:v>] [B<-batch>] [B<-verbose>] [B<-engine id>] @@ -82,6 +83,11 @@ This specifies the input filename to read a request from or standard input if this option is not specified. A request is only read if the creation options (B<-new> and B<-newkey>) are not specified. +=item B<-sigopt nm:v> + +Pass options to the signature algorithm during sign or verify operations. +Names and values of these options are algorithm-specific. + =item B<-passin arg> The input file password source. For more information about the format of B<arg> @@ -689,7 +695,7 @@ L<x509v3_config(5)> =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man1/s_client.pod b/crypto/external/bsd/openssl/dist/doc/man1/s_client.pod index e2475ea0678..68a152a272b 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/s_client.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/s_client.pod @@ -335,7 +335,7 @@ at a positive depth or else "matched EE certificate" at depth 0. Use one or more times to specify the RRDATA fields of the DANE TLSA RRset associated with the target service. The B<rrdata> value is -specied in "presentation form", that is four whitespace separated +specified in "presentation form", that is four whitespace separated fields that specify the usage, selector, matching type and associated data, with the last of these encoded in hexadecimal. Optional whitespace is ignored in the associated data field. For example: @@ -828,7 +828,7 @@ The B<-name> option was added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man1/s_time.pod b/crypto/external/bsd/openssl/dist/doc/man1/s_time.pod index ac32f36bc78..e1a3bef41cf 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/s_time.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/s_time.pod @@ -14,7 +14,7 @@ B<openssl> B<s_time> [B<-cert filename>] [B<-key filename>] [B<-CApath directory>] -[B<-cafile filename>] +[B<-CAfile filename>] [B<-no-CAfile>] [B<-no-CApath>] [B<-reuse>] @@ -202,7 +202,7 @@ L<s_client(1)>, L<s_server(1)>, L<ciphers(1)> =head1 COPYRIGHT -Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man1/sess_id.pod b/crypto/external/bsd/openssl/dist/doc/man1/sess_id.pod index 1f7a1e8670c..6c54ed988bb 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/sess_id.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/sess_id.pod @@ -93,7 +93,7 @@ Typical output: Timeout : 300 (sec) Verify return code 0 (ok) -Theses are described below in more detail. +These are described below in more detail. =over 4 @@ -156,7 +156,7 @@ L<ciphers(1)>, L<s_server(1)> =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man1/x509.pod b/crypto/external/bsd/openssl/dist/doc/man1/x509.pod index 7878753414d..65cec9dbda6 100644 --- a/crypto/external/bsd/openssl/dist/doc/man1/x509.pod +++ b/crypto/external/bsd/openssl/dist/doc/man1/x509.pod @@ -11,7 +11,7 @@ B<openssl> B<x509> [B<-help>] [B<-inform DER|PEM>] [B<-outform DER|PEM>] -[B<-keyform DER|PEM>] +[B<-keyform DER|PEM|ENGINE>] [B<-CAform DER|PEM>] [B<-CAkeyform DER|PEM>] [B<-in filename>] @@ -44,7 +44,7 @@ B<openssl> B<x509> [B<-setalias arg>] [B<-days arg>] [B<-set_serial n>] -[B<-signkey filename>] +[B<-signkey arg>] [B<-passin arg>] [B<-x509toreq>] [B<-req>] @@ -61,6 +61,7 @@ B<openssl> B<x509> [B<-clrext>] [B<-extfile filename>] [B<-extensions section>] +[B<-sigopt nm:v>] [B<-rand file...>] [B<-writerand file>] [B<-engine id>] @@ -349,10 +350,11 @@ can thus behave like a "mini CA". =over 4 -=item B<-signkey filename> +=item B<-signkey arg> This option causes the input file to be self signed using the supplied -private key. +private key or engine. The private key's format is specified with the +B<-keyform> option. If the input file is a certificate it sets the issuer name to the subject name (i.e. makes it self signed) changes the public key to the @@ -366,6 +368,11 @@ If the input is a certificate request then a self signed certificate is created using the supplied private key using the subject name in the request. +=item B<-sigopt nm:v> + +Pass options to the signature algorithm during sign or verify operations. +Names and values of these options are algorithm-specific. + =item B<-passin arg> The key password source. For more information about the format of B<arg> @@ -378,7 +385,7 @@ certificate is being created from another certificate (for example with the B<-signkey> or the B<-CA> options). Normally all extensions are retained. -=item B<-keyform PEM|DER> +=item B<-keyform PEM|DER|ENGINE> Specifies the format (DER or PEM) of the private key file used in the B<-signkey> option. @@ -925,7 +932,7 @@ the old form must have their links rebuilt using B<c_rehash> or similar. =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/ASN1_INTEGER_get_int64.pod b/crypto/external/bsd/openssl/dist/doc/man3/ASN1_INTEGER_get_int64.pod index 9b73290742d..ac6a5799df9 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/ASN1_INTEGER_get_int64.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/ASN1_INTEGER_get_int64.pod @@ -22,10 +22,10 @@ ASN1_INTEGER_get_int64, ASN1_INTEGER_get, ASN1_INTEGER_set_int64, ASN1_INTEGER_s ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); - int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_INTEGER *a); + int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); - int ASN1_ENUMERATED_set_int64(ASN1_INTEGER *a, int64_t r); + int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai); diff --git a/crypto/external/bsd/openssl/dist/doc/man3/ASN1_TYPE_get.pod b/crypto/external/bsd/openssl/dist/doc/man3/ASN1_TYPE_get.pod index 70c56878b8e..fb797220a47 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/ASN1_TYPE_get.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/ASN1_TYPE_get.pod @@ -69,7 +69,7 @@ If either or both of the parameters passed to ASN1_TYPE_cmp() is NULL the return value is non-zero. Technically if both parameters are NULL the two types could be absent OPTIONAL fields and so should match, however passing NULL values could also indicate a programming error (for example an -unparseable type which returns NULL) for types which do B<not> match. So +unparsable type which returns NULL) for types which do B<not> match. So applications should handle the case of two absent values separately. =head1 RETURN VALUES @@ -90,7 +90,7 @@ NULL on failure. =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/BIO_f_buffer.pod b/crypto/external/bsd/openssl/dist/doc/man3/BIO_f_buffer.pod index 8ceaaa3c034..047a11d2407 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/BIO_f_buffer.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/BIO_f_buffer.pod @@ -49,10 +49,20 @@ is expanded. These functions, other than BIO_f_buffer(), are implemented as macros. -Buffering BIOs implement BIO_gets() by using BIO_read_ex() operations on the -next BIO in the chain. By prepending a buffering BIO to a chain it is therefore -possible to provide BIO_gets() functionality if the following BIOs do not -support it (for example SSL BIOs). +Buffering BIOs implement BIO_read_ex() and BIO_gets() by using +BIO_read_ex() operations on the next BIO in the chain and storing the +result in an internal buffer, from which bytes are given back to the +caller as appropriate for the call; a BIO_gets() is guaranteed to give +the caller a whole line, and BIO_read_ex() is guaranteed to give the +caller the number of bytes it asks for, unless there's an error or end +of communication is reached in the next BIO. By prepending a +buffering BIO to a chain it is therefore possible to provide +BIO_gets() or exact size BIO_read_ex() functionality if the following +BIOs do not support it. + +Do not add more than one BIO_f_buffer() to a BIO chain. The result of +doing so will force a full read of the size of the internal buffer of +the top BIO_f_buffer(), which is 4 KiB at a minimum. Data is only written to the next BIO in the chain when the write buffer fills or when BIO_flush() is called. It is therefore important to call BIO_flush() @@ -82,7 +92,7 @@ L<BIO_ctrl(3)>. =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/BIO_get_ex_new_index.pod b/crypto/external/bsd/openssl/dist/doc/man3/BIO_get_ex_new_index.pod index e61228f1cae..89008531d38 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/BIO_get_ex_new_index.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/BIO_get_ex_new_index.pod @@ -39,7 +39,7 @@ L<CRYPTO_get_ex_new_index(3)>. These functions handle application-specific data for OpenSSL data structures. -TYPE_get_new_ex_index() is a macro that calls CRYPTO_get_ex_new_index() +TYPE_get_ex_new_index() is a macro that calls CRYPTO_get_ex_new_index() with the correct B<index> value. TYPE_set_ex_data() is a function that calls CRYPTO_set_ex_data() with @@ -50,7 +50,7 @@ an offset into the opaque exdata part of the TYPE object. =head1 RETURN VALUES -TYPE_get_new_ex_index() returns a new index on success or -1 on error. +TYPE_get_ex_new_index() returns a new index on success or -1 on error. TYPE_set_ex_data() returns 1 on success or 0 on error. @@ -62,7 +62,7 @@ L<CRYPTO_get_ex_new_index(3)>. =head1 COPYRIGHT -Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/BN_generate_prime.pod b/crypto/external/bsd/openssl/dist/doc/man3/BN_generate_prime.pod index 31fbc1ffa17..f1e63f3b3c4 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/BN_generate_prime.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/BN_generate_prime.pod @@ -52,7 +52,9 @@ Deprecated: BN_generate_prime_ex() generates a pseudo-random prime number of at least bit length B<bits>. The returned number is probably prime -with a negligible error. +with a negligible error. If B<add> is B<NULL> the returned prime +number will have exact bit length B<bits> with the top most two +bits set. If B<ret> is not B<NULL>, it will be used to store the number. @@ -89,7 +91,9 @@ If B<add> is not B<NULL>, the prime will fulfill the condition p % B<add> generator. If B<safe> is true, it will be a safe prime (i.e. a prime p so -that (p-1)/2 is also prime). +that (p-1)/2 is also prime). If B<safe> is true, and B<rem> == B<NULL> +the condition will be p % B<add> == 3. +It is recommended that B<add> is a multiple of 4. The random generator must be seeded prior to calling BN_generate_prime_ex(). If the automatic seeding or reseeding of the OpenSSL CSPRNG fails due to @@ -206,7 +210,7 @@ and BN_GENCB_get_arg() functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/DTLSv1_listen.pod b/crypto/external/bsd/openssl/dist/doc/man3/DTLSv1_listen.pod index 76be40b68f1..98511a475f9 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/DTLSv1_listen.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/DTLSv1_listen.pod @@ -66,9 +66,9 @@ the peer and continue the handshake in a connected state. Prior to calling DTLSv1_listen() user code must ensure that cookie generation and verification callbacks have been set up using -SSL_CTX_set_cookie_generate_cb() and SSL_CTX_set_cookie_verify_cb() -respectively. For SSL_stateless(), SSL_CTX_set_stateless_cookie_generate_cb() -and SSL_CTX_set_stateless_cookie_verify_cb() must be used instead. +L<SSL_CTX_set_cookie_generate_cb(3)> and L<SSL_CTX_set_cookie_verify_cb(3)> +respectively. For SSL_stateless(), L<SSL_CTX_set_stateless_cookie_generate_cb(3)> +and L<SSL_CTX_set_stateless_cookie_verify_cb(3)> must be used instead. Since DTLSv1_listen() operates entirely statelessly whilst processing incoming ClientHellos it is unable to process fragmented messages (since this would @@ -112,8 +112,10 @@ errors as non-fatal), whilst return codes >0 indicate success. =head1 SEE ALSO -L<SSL_get_error(3)>, L<SSL_accept(3)>, -L<ssl(7)>, L<bio(7)> +L<SSL_CTX_set_cookie_generate_cb(3)>, L<SSL_CTX_set_cookie_verify_cb(3)>, +L<SSL_CTX_set_stateless_cookie_generate_cb(3)>, +L<SSL_CTX_set_stateless_cookie_verify_cb(3)>, L<SSL_get_error(3)>, +L<SSL_accept(3)>, L<ssl(7)>, L<bio(7)> =head1 HISTORY diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_copy.pod b/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_copy.pod index 7bf35006237..0d50fdc0c74 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_copy.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_copy.pod @@ -40,7 +40,7 @@ EC_GROUP_get_pentanomial_basis int EC_GROUP_get_asn1_flag(const EC_GROUP *group); void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form); - point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *group); unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); size_t EC_GROUP_get_seed_len(const EC_GROUP *); @@ -61,34 +61,39 @@ EC_GROUP_get_pentanomial_basis =head1 DESCRIPTION -EC_GROUP_copy copies the curve B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. +EC_GROUP_copy() copies the curve B<src> into B<dst>. Both B<src> and B<dst> must use the same EC_METHOD. -EC_GROUP_dup creates a new EC_GROUP object and copies the content from B<src> to the newly created +EC_GROUP_dup() creates a new EC_GROUP object and copies the content from B<src> to the newly created EC_GROUP object. -EC_GROUP_method_of obtains the EC_METHOD of B<group>. +EC_GROUP_method_of() obtains the EC_METHOD of B<group>. -EC_GROUP_set_generator sets curve parameters that must be agreed by all participants using the curve. These +EC_GROUP_set_generator() sets curve parameters that must be agreed by all participants using the curve. These parameters include the B<generator>, the B<order> and the B<cofactor>. The B<generator> is a well defined point on the curve chosen for cryptographic operations. Integers used for point multiplications will be between 0 and n-1 where n is the B<order>. The B<order> multiplied by the B<cofactor> gives the number of points on the curve. -EC_GROUP_get0_generator returns the generator for the identified B<group>. +EC_GROUP_get0_generator() returns the generator for the identified B<group>. -The functions EC_GROUP_get_order and EC_GROUP_get_cofactor populate the provided B<order> and B<cofactor> parameters -with the respective order and cofactors for the B<group>. +EC_GROUP_get_order() retrieves the order of B<group> and copies its value into +B<order>. It fails in case B<group> is not fully initialized (i.e., its order +is not set or set to zero). -The functions EC_GROUP_set_curve_name and EC_GROUP_get_curve_name, set and get the NID for the curve respectively +EC_GROUP_get_cofactor() retrieves the cofactor of B<group> and copies its value +into B<cofactor>. It fails in case B<group> is not fully initialized or if the +cofactor is not set (or set to zero). + +The functions EC_GROUP_set_curve_name() and EC_GROUP_get_curve_name(), set and get the NID for the curve respectively (see L<EC_GROUP_new(3)>). If a curve does not have a NID associated with it, then EC_GROUP_get_curve_name -will return 0. +will return NID_undef. The asn1_flag value is used to determine whether the curve encoding uses explicit parameters or a named curve using an ASN1 OID: many applications only support the latter form. If asn1_flag is B<OPENSSL_EC_NAMED_CURVE> then the named curve form is used and the parameters must have a corresponding named curve NID set. If asn1_flags is B<OPENSSL_EC_EXPLICIT_CURVE> the -parameters are explicitly encoded. The functions EC_GROUP_get_asn1_flag and -EC_GROUP_set_asn1_flag get and set the status of the asn1_flag for the curve. +parameters are explicitly encoded. The functions EC_GROUP_get_asn1_flag() and +EC_GROUP_set_asn1_flag() get and set the status of the asn1_flag for the curve. Note: B<OPENSSL_EC_EXPLICIT_CURVE> was added in OpenSSL 1.1.0, for previous versions of OpenSSL the value 0 must be used instead. Before OpenSSL 1.1.0 the default form was to use explicit parameters (meaning that @@ -119,32 +124,32 @@ the two possible solutions for y has been used, followed by the octets for x. For POINT_CONVERSION_HYBRID the point is encoded as an octet signifying the HYBRID form has been used AND which of the two possible solutions for y has been used, followed by the octets for x, followed by the octets for y. -The functions EC_GROUP_set_point_conversion_form and EC_GROUP_get_point_conversion_form set and get the point_conversion_form +The functions EC_GROUP_set_point_conversion_form() and EC_GROUP_get_point_conversion_form(), set and get the point_conversion_form for the curve respectively. ANSI X9.62 (ECDSA standard) defines a method of generating the curve parameter b from a random number. This provides advantages in that a parameter obtained in this way is highly unlikely to be susceptible to special purpose attacks, or have any trapdoors in it. If the seed is present for a curve then the b parameter was generated in a verifiable fashion using that seed. The OpenSSL EC library -does not use this seed value but does enable you to inspect it using EC_GROUP_get0_seed. This returns a pointer to a memory block -containing the seed that was used. The length of the memory block can be obtained using EC_GROUP_get_seed_len. A number of the -builtin curves within the library provide seed values that can be obtained. It is also possible to set a custom seed using -EC_GROUP_set_seed and passing a pointer to a memory block, along with the length of the seed. Again, the EC library will not use +does not use this seed value but does enable you to inspect it using EC_GROUP_get0_seed(). This returns a pointer to a memory block +containing the seed that was used. The length of the memory block can be obtained using EC_GROUP_get_seed_len(). A number of the +built-in curves within the library provide seed values that can be obtained. It is also possible to set a custom seed using +EC_GROUP_set_seed() and passing a pointer to a memory block, along with the length of the seed. Again, the EC library will not use this seed value, although it will be preserved in any ASN1 based communications. -EC_GROUP_get_degree gets the degree of the field. For Fp fields this will be the number of bits in p. For F2^m fields this will be +EC_GROUP_get_degree() gets the degree of the field. For Fp fields this will be the number of bits in p. For F2^m fields this will be the value m. -The function EC_GROUP_check_discriminant calculates the discriminant for the curve and verifies that it is valid. +The function EC_GROUP_check_discriminant() calculates the discriminant for the curve and verifies that it is valid. For a curve defined over Fp the discriminant is given by the formula 4*a^3 + 27*b^2 whilst for F2^m curves the discriminant is simply b. In either case for the curve to be valid the discriminant must be non zero. -The function EC_GROUP_check performs a number of checks on a curve to verify that it is valid. Checks performed include +The function EC_GROUP_check() performs a number of checks on a curve to verify that it is valid. Checks performed include verifying that the discriminant is non zero; that a generator has been defined; that the generator is on the curve and has the correct order. -EC_GROUP_cmp compares B<a> and B<b> to determine whether they represent the same curve or not. +EC_GROUP_cmp() compares B<a> and B<b> to determine whether they represent the same curve or not. -The functions EC_GROUP_get_basis_type, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis should only be called for curves +The functions EC_GROUP_get_basis_type(), EC_GROUP_get_trinomial_basis() and EC_GROUP_get_pentanomial_basis() should only be called for curves defined over an F2^m field. Addition and multiplication operations within an F2^m field are performed using an irreducible polynomial function f(x). This function is either a trinomial of the form: @@ -154,39 +159,48 @@ or a pentanomial of the form: f(x) = x^m + x^k3 + x^k2 + x^k1 + 1 with m > k3 > k2 > k1 >= 1 -The function EC_GROUP_get_basis_type returns a NID identifying whether a trinomial or pentanomial is in use for the field. The -function EC_GROUP_get_trinomial_basis must only be called where f(x) is of the trinomial form, and returns the value of B<k>. Similarly -the function EC_GROUP_get_pentanomial_basis must only be called where f(x) is of the pentanomial form, and returns the values of B<k1>, +The function EC_GROUP_get_basis_type() returns a NID identifying whether a trinomial or pentanomial is in use for the field. The +function EC_GROUP_get_trinomial_basis() must only be called where f(x) is of the trinomial form, and returns the value of B<k>. Similarly +the function EC_GROUP_get_pentanomial_basis() must only be called where f(x) is of the pentanomial form, and returns the values of B<k1>, B<k2> and B<k3> respectively. =head1 RETURN VALUES -The following functions return 1 on success or 0 on error: EC_GROUP_copy, EC_GROUP_set_generator, EC_GROUP_check, -EC_GROUP_check_discriminant, EC_GROUP_get_trinomial_basis and EC_GROUP_get_pentanomial_basis. +The following functions return 1 on success or 0 on error: EC_GROUP_copy(), EC_GROUP_set_generator(), EC_GROUP_check(), +EC_GROUP_check_discriminant(), EC_GROUP_get_trinomial_basis() and EC_GROUP_get_pentanomial_basis(). + +EC_GROUP_dup() returns a pointer to the duplicated curve, or NULL on error. + +EC_GROUP_method_of() returns the EC_METHOD implementation in use for the given curve or NULL on error. + +EC_GROUP_get0_generator() returns the generator for the given curve or NULL on error. + +EC_GROUP_get_order() returns 0 if the order is not set (or set to zero) for +B<group> or if copying into B<order> fails, 1 otherwise. + +EC_GROUP_get_cofactor() returns 0 if the cofactor is not set (or is set to zero) for B<group> or if copying into B<cofactor> fails, 1 otherwise. -EC_GROUP_dup returns a pointer to the duplicated curve, or NULL on error. +EC_GROUP_get_curve_name() returns the curve name (NID) for B<group> or will return NID_undef if no curve name is associated. -EC_GROUP_method_of returns the EC_METHOD implementation in use for the given curve or NULL on error. +EC_GROUP_get_asn1_flag() returns the ASN1 flag for the specified B<group> . -EC_GROUP_get0_generator returns the generator for the given curve or NULL on error. +EC_GROUP_get_point_conversion_form() returns the point_conversion_form for B<group>. -EC_GROUP_get_order, EC_GROUP_get_cofactor, EC_GROUP_get_curve_name, EC_GROUP_get_asn1_flag, EC_GROUP_get_point_conversion_form -and EC_GROUP_get_degree return the order, cofactor, curve name (NID), ASN1 flag, point_conversion_form and degree for the -specified curve respectively. If there is no curve name associated with a curve then EC_GROUP_get_curve_name will return 0. +EC_GROUP_get_degree() returns the degree for B<group> or 0 if the operation is not supported by the underlying group implementation. EC_GROUP_get0_order() returns an internal pointer to the group order. EC_GROUP_order_bits() returns the number of bits in the group order. EC_GROUP_get0_cofactor() returns an internal pointer to the group cofactor. -EC_GROUP_get0_seed returns a pointer to the seed that was used to generate the parameter b, or NULL if the seed is not -specified. EC_GROUP_get_seed_len returns the length of the seed or 0 if the seed is not specified. +EC_GROUP_get0_seed() returns a pointer to the seed that was used to generate the parameter b, or NULL if the seed is not +specified. EC_GROUP_get_seed_len() returns the length of the seed or 0 if the seed is not specified. -EC_GROUP_set_seed returns the length of the seed that has been set. If the supplied seed is NULL, or the supplied seed length is +EC_GROUP_set_seed() returns the length of the seed that has been set. If the supplied seed is NULL, or the supplied seed length is 0, the return value will be 1. On error 0 is returned. -EC_GROUP_cmp returns 0 if the curves are equal, 1 if they are not equal, or -1 on error. +EC_GROUP_cmp() returns 0 if the curves are equal, 1 if they are not equal, or -1 on error. -EC_GROUP_get_basis_type returns the values NID_X9_62_tpBasis or NID_X9_62_ppBasis (as defined in <openssl/obj_mac.h>) for a +EC_GROUP_get_basis_type() returns the values NID_X9_62_tpBasis or NID_X9_62_ppBasis (as defined in <openssl/obj_mac.h>) for a trinomial or pentanomial respectively. Alternatively in the event of an error a 0 is returned. =head1 SEE ALSO diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_new.pod index 1eee494927f..c80b191785c 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EC_GROUP_new.pod @@ -57,49 +57,63 @@ objects =head1 DESCRIPTION -Within the library there are two forms of elliptic curve that are of interest. The first form is those defined over the -prime field Fp. The elements of Fp are the integers 0 to p-1, where p is a prime number. This gives us a revised +Within the library there are two forms of elliptic curve that are of interest. +The first form is those defined over the prime field Fp. The elements of Fp are +the integers 0 to p-1, where p is a prime number. This gives us a revised elliptic curve equation as follows: y^2 mod p = x^3 +ax + b mod p -The second form is those defined over a binary field F2^m where the elements of the field are integers of length at -most m bits. For this form the elliptic curve equation is modified to: +The second form is those defined over a binary field F2^m where the elements of +the field are integers of length at most m bits. For this form the elliptic +curve equation is modified to: y^2 + xy = x^3 + ax^2 + b (where b != 0) -Operations in a binary field are performed relative to an B<irreducible polynomial>. All such curves with OpenSSL -use a trinomial or a pentanomial for this parameter. - -A new curve can be constructed by calling EC_GROUP_new, using the implementation provided by B<meth> (see -L<EC_GFp_simple_method(3)>). It is then necessary to call EC_GROUP_set_curve() to set the curve parameters. -EC_GROUP_new_from_ecparameters() will create a group from the -specified B<params> and -EC_GROUP_new_from_ecpkparameters() will create a group from the specific PK B<params>. - -EC_GROUP_set_curve() sets the curve parameters B<p>, B<a> and B<b>. For a curve over Fp B<b> -is the prime for the field. For a curve over F2^m B<p> represents the irreducible polynomial - each bit -represents a term in the polynomial. Therefore there will either be three or five bits set dependent on whether -the polynomial is a trinomial or a pentanomial. +Operations in a binary field are performed relative to an B<irreducible +polynomial>. All such curves with OpenSSL use a trinomial or a pentanomial for +this parameter. + +A new curve can be constructed by calling EC_GROUP_new(), using the +implementation provided by B<meth> (see L<EC_GFp_simple_method(3)>). It is then +necessary to call EC_GROUP_set_curve() to set the curve parameters. +EC_GROUP_new_from_ecparameters() will create a group from the specified +B<params> and EC_GROUP_new_from_ecpkparameters() will create a group from the +specific PK B<params>. + +EC_GROUP_set_curve() sets the curve parameters B<p>, B<a> and B<b>. For a curve +over Fp B<p> is the prime for the field. For a curve over F2^m B<p> represents +the irreducible polynomial - each bit represents a term in the polynomial. +Therefore there will either be three or five bits set dependent on whether the +polynomial is a trinomial or a pentanomial. +In either case, B<a> and B<b> represents the coefficients a and b from the +relevant equation introduced above. EC_group_get_curve() obtains the previously set curve parameters. -EC_GROUP_set_curve_GFp() and EC_GROUP_set_curve_GF2m() are synonyms for EC_GROUP_set_curve(). They are defined for -backwards compatibility only and should not be used. - -EC_GROUP_get_curve_GFp() and EC_GROUP_get_curve_GF2m() are synonyms for EC_GROUP_get_curve(). They are defined for -backwards compatibility only and should not be used. - -The functions EC_GROUP_new_curve_GFp and EC_GROUP_new_curve_GF2m are shortcuts for calling EC_GROUP_new and then the -EC_GROUP_set_curve function. An appropriate default implementation method will be used. - -Whilst the library can be used to create any curve using the functions described above, there are also a number of -predefined curves that are available. In order to obtain a list of all of the predefined curves, call the function -EC_get_builtin_curves. The parameter B<r> should be an array of EC_builtin_curve structures of size B<nitems>. The function -will populate the B<r> array with information about the builtin curves. If B<nitems> is less than the total number of -curves available, then the first B<nitems> curves will be returned. Otherwise the total number of curves will be -provided. The return value is the total number of curves available (whether that number has been populated in B<r> or -not). Passing a NULL B<r>, or setting B<nitems> to 0 will do nothing other than return the total number of curves available. +EC_GROUP_set_curve_GFp() and EC_GROUP_set_curve_GF2m() are synonyms for +EC_GROUP_set_curve(). They are defined for backwards compatibility only and +should not be used. + +EC_GROUP_get_curve_GFp() and EC_GROUP_get_curve_GF2m() are synonyms for +EC_GROUP_get_curve(). They are defined for backwards compatibility only and +should not be used. + +The functions EC_GROUP_new_curve_GFp() and EC_GROUP_new_curve_GF2m() are +shortcuts for calling EC_GROUP_new() and then the EC_GROUP_set_curve() function. +An appropriate default implementation method will be used. + +Whilst the library can be used to create any curve using the functions described +above, there are also a number of predefined curves that are available. In order +to obtain a list of all of the predefined curves, call the function +EC_get_builtin_curves(). The parameter B<r> should be an array of +EC_builtin_curve structures of size B<nitems>. The function will populate the +B<r> array with information about the builtin curves. If B<nitems> is less than +the total number of curves available, then the first B<nitems> curves will be +returned. Otherwise the total number of curves will be provided. The return +value is the total number of curves available (whether that number has been +populated in B<r> or not). Passing a NULL B<r>, or setting B<nitems> to 0 will +do nothing other than return the total number of curves available. The EC_builtin_curve structure is defined as follows: typedef struct { @@ -107,24 +121,28 @@ The EC_builtin_curve structure is defined as follows: const char *comment; } EC_builtin_curve; -Each EC_builtin_curve item has a unique integer id (B<nid>), and a human readable comment string describing the curve. +Each EC_builtin_curve item has a unique integer id (B<nid>), and a human +readable comment string describing the curve. -In order to construct a builtin curve use the function EC_GROUP_new_by_curve_name and provide the B<nid> of the curve to +In order to construct a builtin curve use the function +EC_GROUP_new_by_curve_name() and provide the B<nid> of the curve to be constructed. -EC_GROUP_free frees the memory associated with the EC_GROUP. +EC_GROUP_free() frees the memory associated with the EC_GROUP. If B<group> is NULL nothing is done. -EC_GROUP_clear_free destroys any sensitive data held within the EC_GROUP and then frees its memory. -If B<group> is NULL nothing is done. +EC_GROUP_clear_free() destroys any sensitive data held within the EC_GROUP and +then frees its memory. If B<group> is NULL nothing is done. =head1 RETURN VALUES -All EC_GROUP_new* functions return a pointer to the newly constructed group, or NULL on error. +All EC_GROUP_new* functions return a pointer to the newly constructed group, or +NULL on error. -EC_get_builtin_curves returns the number of builtin curves that are available. +EC_get_builtin_curves() returns the number of builtin curves that are available. -EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m return 1 on success or 0 on error. +EC_GROUP_set_curve_GFp(), EC_GROUP_get_curve_GFp(), EC_GROUP_set_curve_GF2m(), +EC_GROUP_get_curve_GF2m() return 1 on success or 0 on error. =head1 SEE ALSO @@ -134,7 +152,7 @@ L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)> =head1 COPYRIGHT -Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2013-2019 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EC_POINT_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/EC_POINT_new.pod index 796f6666dd3..8cadaa75f14 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EC_POINT_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EC_POINT_new.pod @@ -171,6 +171,26 @@ The functions EC_POINT_point2oct(), EC_POINT_oct2point(), EC_POINT_point2bn(), EC_POINT_bn2point(), EC_POINT_point2hex() and EC_POINT_hex2point() convert from and to EC_POINTs for the formats: octet, BIGNUM and hexadecimal respectively. +The function EC_POINT_point2oct() encodes the given curve point B<p> as an +octet string into the buffer B<buf> of size B<len>, using the specified +conversion form B<form>. +The encoding conforms with Sec. 2.3.3 of the SECG SEC 1 ("Elliptic Curve +Cryptography") standard. +Similarly the function EC_POINT_oct2point() decodes a curve point into B<p> from +the octet string contained in the given buffer B<buf> of size B<len>, conforming +to Sec. 2.3.4 of the SECG SEC 1 ("Elliptic Curve Cryptography") standard. + +The functions EC_POINT_point2hex() and EC_POINT_point2bn() convert a point B<p>, +respectively, to the hexadecimal or BIGNUM representation of the same +encoding of the function EC_POINT_point2oct(). +Vice versa, similarly to the function EC_POINT_oct2point(), the functions +EC_POINT_hex2point() and EC_POINT_point2bn() decode the hexadecimal or +BIGNUM representation into the EC_POINT B<p>. + +Notice that, according to the standard, the octet string encoding of the point +at infinity for a given curve is fixed to a single octet of value zero and that, +vice versa, a single octet of size zero is decoded as the point at infinity. + The function EC_POINT_point2oct() must be supplied with a buffer long enough to store the octet form. The return value provides the number of octets stored. Calling the function with a NULL buffer will not perform the conversion but diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestInit.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestInit.pod index 3e3e3422976..434e22030fd 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestInit.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestInit.pod @@ -2,17 +2,17 @@ =head1 NAME -EVP_MD_CTX_new, EVP_MD_CTX_reset, EVP_MD_CTX_free, EVP_MD_CTX_copy_ex, -EVP_MD_CTX_ctrl, EVP_MD_CTX_set_flags, EVP_MD_CTX_clear_flags, -EVP_MD_CTX_test_flags, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate, +EVP_MD_CTX_new, EVP_MD_CTX_reset, EVP_MD_CTX_free, EVP_MD_CTX_copy, +EVP_MD_CTX_copy_ex, EVP_MD_CTX_ctrl, EVP_MD_CTX_set_flags, +EVP_MD_CTX_clear_flags, EVP_MD_CTX_test_flags, +EVP_Digest, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal_ex, EVP_DigestFinalXOF, EVP_DigestFinal, -EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size, -EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, -EVP_MD_CTX_block_size, EVP_MD_CTX_type, EVP_MD_CTX_md_data, +EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size, EVP_MD_block_size, EVP_MD_flags, +EVP_MD_CTX_md, EVP_MD_CTX_type, EVP_MD_CTX_size, EVP_MD_CTX_block_size, +EVP_MD_CTX_md_data, EVP_MD_CTX_update_fn, EVP_MD_CTX_set_update_fn, EVP_md_null, -EVP_get_digestbyname, EVP_get_digestbynid, -EVP_get_digestbyobj, -EVP_MD_CTX_set_pkey_ctx - EVP digest routines +EVP_get_digestbyname, EVP_get_digestbynid, EVP_get_digestbyobj, +EVP_MD_CTX_pkey_ctx, EVP_MD_CTX_set_pkey_ctx - EVP digest routines =head1 SYNOPSIS @@ -26,6 +26,8 @@ EVP_MD_CTX_set_pkey_ctx - EVP digest routines void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); + int EVP_Digest(const void *data, size_t count, unsigned char *md, + unsigned int *size, const EVP_MD *type, ENGINE *impl); int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl); int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt); int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s); @@ -42,12 +44,18 @@ EVP_MD_CTX_set_pkey_ctx - EVP digest routines int EVP_MD_pkey_type(const EVP_MD *md); int EVP_MD_size(const EVP_MD *md); int EVP_MD_block_size(const EVP_MD *md); + unsigned long EVP_MD_flags(const EVP_MD *md); const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); - int EVP_MD_CTX_size(const EVP_MD *ctx); - int EVP_MD_CTX_block_size(const EVP_MD *ctx); - int EVP_MD_CTX_type(const EVP_MD *ctx); + int EVP_MD_CTX_size(const EVP_MD_CTX *ctx); + int EVP_MD_CTX_block_size(const EVP_MD_CTX *ctx); + int EVP_MD_CTX_type(const EVP_MD_CTX *ctx); void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); + void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update)(EVP_MD_CTX *ctx, + const void *data, size_t count)); const EVP_MD *EVP_md_null(void); @@ -55,6 +63,7 @@ EVP_MD_CTX_set_pkey_ctx - EVP digest routines const EVP_MD *EVP_get_digestbynid(int type); const EVP_MD *EVP_get_digestbyobj(const ASN1_OBJECT *o); + EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); =head1 DESCRIPTION @@ -79,12 +88,24 @@ Cleans up digest context B<ctx> and frees up the space allocated to it. =item EVP_MD_CTX_ctrl() -Performs digest-specific control actions on context B<ctx>. +Performs digest-specific control actions on context B<ctx>. The control command +is indicated in B<cmd> and any additional arguments in B<p1> and B<p2>. +EVP_MD_CTX_ctrl() must be called after EVP_DigestInit_ex(). Other restrictions +may apply depending on the control type and digest implementation. +See L</CONTROLS> below for more information. =item EVP_MD_CTX_set_flags(), EVP_MD_CTX_clear_flags(), EVP_MD_CTX_test_flags() Sets, clears and tests B<ctx> flags. See L</FLAGS> below for more information. +=item EVP_Digest() + +A wrapper around the Digest Init_ex, Update and Final_ex functions. +Hashes B<count> bytes of data at B<data> using a digest B<type> from ENGINE +B<impl>. The digest value is placed in B<md> and its length is written at B<size> +if the pointer is not NULL. At most B<EVP_MAX_MD_SIZE> bytes will be written. +If B<impl> is NULL the default implementation of digest B<type> is used. + =item EVP_DigestInit_ex() Sets up digest context B<ctx> to use a digest B<type> from ENGINE B<impl>. @@ -122,7 +143,7 @@ few bytes. =item EVP_DigestInit() Behaves in the same way as EVP_DigestInit_ex() except it always uses the -default digest implementation. +default digest implementation and calls EVP_MD_CTX_reset(). =item EVP_DigestFinal() @@ -163,6 +184,21 @@ EVP_MD_meth_set_app_datasize(). Returns the B<EVP_MD> structure corresponding to the passed B<EVP_MD_CTX>. +=item EVP_MD_CTX_set_update_fn() + +Sets the update function for B<ctx> to B<update>. +This is the function that is called by EVP_DigestUpdate. If not set, the +update function from the B<EVP_MD> type specified at initialization is used. + +=item EVP_MD_CTX_update_fn() + +Returns the update function for B<ctx>. + +=item EVP_MD_flags() + +Returns the B<md> flags. Note that these are different from the B<EVP_MD_CTX> +ones. See L<EVP_MD_meth_set_flags(3)> for more information. + =item EVP_MD_pkey_type() Returns the NID of the public key signing algorithm associated with this @@ -182,10 +218,15 @@ EVP_get_digestbyobj() Returns an B<EVP_MD> structure when passed a digest name, a digest B<NID> or an B<ASN1_OBJECT> structure respectively. +=item EVP_MD_CTX_pkey_ctx() + +Returns the B<EVP_PKEY_CTX> assigned to B<ctx>. The returned pointer should not +be freed by the caller. + =item EVP_MD_CTX_set_pkey_ctx() Assigns an B<EVP_PKEY_CTX> to B<EVP_MD_CTX>. This is usually used to provide -a customzied B<EVP_PKEY_CTX> to L<EVP_DigestSignInit(3)> or +a customized B<EVP_PKEY_CTX> to L<EVP_DigestSignInit(3)> or L<EVP_DigestVerifyInit(3)>. The B<pctx> passed to this function should be freed by the caller. A NULL B<pctx> pointer is also allowed to clear the B<EVP_PKEY_CTX> assigned to B<ctx>. In such case, freeing the cleared B<EVP_PKEY_CTX> or not @@ -193,6 +234,27 @@ depends on how the B<EVP_PKEY_CTX> is created. =back +=head1 CONTROLS + +EVP_MD_CTX_ctrl() can be used to send the following standard controls: + +=over 4 + +=item EVP_MD_CTRL_MICALG + +Gets the digest Message Integrity Check algorithm string. This is used when +creating S/MIME multipart/signed messages, as specified in RFC 3851. +The string value is written to B<p2>. + +=item EVP_MD_CTRL_XOF_LEN + +This control sets the digest length for extendable output functions to B<p1>. +Sending this control directly should not be necessary, the use of +C<EVP_DigestFinalXOF()> is preferred. +Currently used by SHAKE. + +=back + =head1 FLAGS EVP_MD_CTX_set_flags(), EVP_MD_CTX_clear_flags() and EVP_MD_CTX_test_flags() @@ -245,8 +307,7 @@ Returns 1 if successful or 0 for failure. Returns 1 if successful or 0 for failure. =item EVP_MD_type(), -EVP_MD_pkey_type(), -EVP_MD_type() +EVP_MD_pkey_type() Returns the NID of the corresponding OBJECT IDENTIFIER or NID_undef if none exists. @@ -350,6 +411,7 @@ digest name passed on the command line. =head1 SEE ALSO +L<EVP_MD_meth_new(3)>, L<dgst(1)>, L<evp(7)> diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestSignInit.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestSignInit.pod index 0bbc3d0ff8f..912880a5e1c 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestSignInit.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestSignInit.pod @@ -36,7 +36,7 @@ EVP_MD_CTX is freed). The digest B<type> may be NULL if the signing algorithm supports it. No B<EVP_PKEY_CTX> will be created by EVP_DigestSignInit() if the passed B<ctx> -has already been assigned one via L<EVP_MD_CTX_set_ctx(3)>. See also L<SM2(7)>. +has already been assigned one via L<EVP_MD_CTX_set_pkey_ctx(3)>. See also L<SM2(7)>. Only EVP_PKEY types that support signing can be used with these functions. This includes MAC algorithms where the MAC generation is considered as a form of @@ -102,10 +102,8 @@ EVP_DigestSignFinal(). =head1 RETURN VALUES -EVP_DigestSignInit(), EVP_DigestSignUpdate(), EVP_DigestSignaFinal() and -EVP_DigestSign() return 1 for success and 0 or a negative value for failure. In -particular, a return value of -2 indicates the operation is not supported by the -public key algorithm. +EVP_DigestSignInit(), EVP_DigestSignUpdate(), EVP_DigestSignFinal() and +EVP_DigestSign() return 1 for success and 0 for failure. The error codes can be obtained from L<ERR_get_error(3)>. @@ -158,7 +156,7 @@ were added in OpenSSL 1.0.0. =head1 COPYRIGHT -Copyright 2006-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestVerifyInit.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestVerifyInit.pod index 05b99bb913c..0806cd5d58c 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestVerifyInit.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_DigestVerifyInit.pod @@ -33,7 +33,7 @@ inside EVP_DigestVerifyInit() and it will be freed automatically when the EVP_MD_CTX is freed). No B<EVP_PKEY_CTX> will be created by EVP_DigestSignInit() if the passed B<ctx> -has already been assigned one via L<EVP_MD_CTX_set_ctx(3)>. See also L<SM2(7)>. +has already been assigned one via L<EVP_MD_CTX_set_pkey_ctx(3)>. See also L<SM2(7)>. EVP_DigestVerifyUpdate() hashes B<cnt> bytes of data at B<d> into the verification context B<ctx>. This function can be called several times on the diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_EncryptInit.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_EncryptInit.pod index 6b068617b0a..aaf9975c4c2 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_EncryptInit.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_EncryptInit.pod @@ -492,6 +492,15 @@ EVP_EncryptFinal_ex(), EVP_DecryptInit_ex(), EVP_DecryptFinal_ex(), EVP_CipherInit_ex() and EVP_CipherFinal_ex() because they can reuse an existing context without allocating and freeing it up on each call. +There are some differences between functions EVP_CipherInit() and +EVP_CipherInit_ex(), significant in some circumstances. EVP_CipherInit() fills +the passed context object with zeros. As a consequence, EVP_CipherInit() does +not allow step-by-step initialization of the ctx when the I<key> and I<iv> are +passed in separate calls. It also means that the flags set for the CTX are +removed, and it is especially important for the +B<EVP_CIPHER_CTX_FLAG_WRAP_ALLOW> flag treated specially in +EVP_CipherInit_ex(). + EVP_get_cipherbynid(), and EVP_get_cipherbyobj() are implemented as macros. =head1 BUGS diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_MD_meth_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_MD_meth_new.pod index 0265c7d5045..e17a4cd519a 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_MD_meth_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_MD_meth_new.pod @@ -84,7 +84,12 @@ together. The available flags are: =item EVP_MD_FLAG_ONESHOT -This digest method can only handles one block of input. +This digest method can only handle one block of input. + +=item EVP_MD_FLAG_XOF + +This digest method is an extensible-output function (XOF) and supports +the B<EVP_MD_CTRL_XOF_LEN> control. =item EVP_MD_FLAG_DIGALGID_NULL @@ -105,19 +110,24 @@ B<EVP_MD_FLAG_DIGALGID_ABSENT> as default. I<Note: if combined with EVP_MD_FLAG_DIGALGID_NULL, the latter will be overridden.> Currently unused. +=item EVP_MD_FLAG_FIPS + +This digest method is suitable for use in FIPS mode. +Currently unused. + =back EVP_MD_meth_set_init() sets the digest init function for B<md>. -The digest init function is called by EVP_DigestInit(), +The digest init function is called by EVP_Digest(), EVP_DigestInit(), EVP_DigestInit_ex(), EVP_SignInit, EVP_SignInit_ex(), EVP_VerifyInit() and EVP_VerifyInit_ex(). EVP_MD_meth_set_update() sets the digest update function for B<md>. -The digest update function is called by EVP_DigestUpdate(), +The digest update function is called by EVP_Digest(), EVP_DigestUpdate() and EVP_SignUpdate(). EVP_MD_meth_set_final() sets the digest final function for B<md>. -The digest final function is called by EVP_DigestFinal(), +The digest final function is called by EVP_Digest(), EVP_DigestFinal(), EVP_DigestFinal_ex(), EVP_SignFinal() and EVP_VerifyFinal(). EVP_MD_meth_set_copy() sets the function for B<md> to do extra @@ -138,6 +148,7 @@ This cleanup function is called by EVP_MD_CTX_reset() and EVP_MD_CTX_free(). EVP_MD_meth_set_ctrl() sets the control function for B<md>. +See L<EVP_MD_CTX_ctrl(3)> for the available controls. EVP_MD_meth_get_input_blocksize(), EVP_MD_meth_get_result_size(), EVP_MD_meth_get_app_datasize(), EVP_MD_meth_get_flags(), @@ -169,7 +180,7 @@ The B<EVP_MD> structure was openly available in OpenSSL before version =head1 COPYRIGHT -Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_CTX_ctrl.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_CTX_ctrl.pod index 75fad0f70ce..16d8462a426 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_CTX_ctrl.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_CTX_ctrl.pod @@ -23,6 +23,8 @@ EVP_PKEY_CTX_get_rsa_oaep_md, EVP_PKEY_CTX_set0_rsa_oaep_label, EVP_PKEY_CTX_get0_rsa_oaep_label, EVP_PKEY_CTX_set_dsa_paramgen_bits, +EVP_PKEY_CTX_set_dsa_paramgen_q_bits, +EVP_PKEY_CTX_set_dsa_paramgen_md, EVP_PKEY_CTX_set_dh_paramgen_prime_len, EVP_PKEY_CTX_set_dh_paramgen_subprime_len, EVP_PKEY_CTX_set_dh_paramgen_generator, @@ -93,6 +95,8 @@ EVP_PKEY_CTX_set1_id, EVP_PKEY_CTX_get1_id, EVP_PKEY_CTX_get1_id_len #include <openssl/dsa.h> int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits); + int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits); + int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); #include <openssl/dh.h> @@ -255,7 +259,17 @@ by the library and should not be freed by the caller. =head2 DSA parameters The EVP_PKEY_CTX_set_dsa_paramgen_bits() macro sets the number of bits used -for DSA parameter generation to B<bits>. If not specified 1024 is used. +for DSA parameter generation to B<nbits>. If not specified, 1024 is used. + +The EVP_PKEY_CTX_set_dsa_paramgen_q_bits() macro sets the number of bits in the +subprime parameter B<q> for DSA parameter generation to B<qbits>. If not +specified, 160 is used. If a digest function is specified below, this parameter +is ignored and instead, the number of bits in B<q> matches the size of the +digest. + +The EVP_PKEY_CTX_set_dsa_paramgen_md() macro sets the digest function used for +DSA parameter generation to B<md>. If not specified, one of SHA-1, SHA-224, or +SHA-256 is selected to match the bit length of B<q> above. =head2 DH parameters diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_meth_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_meth_new.pod index 8a167ce0d6f..106873d9acc 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_meth_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_meth_new.pod @@ -8,14 +8,18 @@ EVP_PKEY_meth_set_init, EVP_PKEY_meth_set_copy, EVP_PKEY_meth_set_cleanup, EVP_PKEY_meth_set_paramgen, EVP_PKEY_meth_set_keygen, EVP_PKEY_meth_set_sign, EVP_PKEY_meth_set_verify, EVP_PKEY_meth_set_verify_recover, EVP_PKEY_meth_set_signctx, EVP_PKEY_meth_set_verifyctx, EVP_PKEY_meth_set_encrypt, EVP_PKEY_meth_set_decrypt, -EVP_PKEY_meth_set_derive, EVP_PKEY_meth_set_ctrl, EVP_PKEY_meth_set_check, +EVP_PKEY_meth_set_derive, EVP_PKEY_meth_set_ctrl, +EVP_PKEY_meth_set_digestsign, EVP_PKEY_meth_set_digestverify, +EVP_PKEY_meth_set_check, EVP_PKEY_meth_set_public_check, EVP_PKEY_meth_set_param_check, EVP_PKEY_meth_set_digest_custom, EVP_PKEY_meth_get_init, EVP_PKEY_meth_get_copy, EVP_PKEY_meth_get_cleanup, EVP_PKEY_meth_get_paramgen, EVP_PKEY_meth_get_keygen, EVP_PKEY_meth_get_sign, EVP_PKEY_meth_get_verify, EVP_PKEY_meth_get_verify_recover, EVP_PKEY_meth_get_signctx, EVP_PKEY_meth_get_verifyctx, EVP_PKEY_meth_get_encrypt, EVP_PKEY_meth_get_decrypt, -EVP_PKEY_meth_get_derive, EVP_PKEY_meth_get_ctrl, EVP_PKEY_meth_get_check, +EVP_PKEY_meth_get_derive, EVP_PKEY_meth_get_ctrl, +EVP_PKEY_meth_get_digestsign, EVP_PKEY_meth_get_digestverify, +EVP_PKEY_meth_get_check, EVP_PKEY_meth_get_public_check, EVP_PKEY_meth_get_param_check, EVP_PKEY_meth_get_digest_custom, EVP_PKEY_meth_remove @@ -112,6 +116,18 @@ EVP_PKEY_meth_remove int (*ctrl_str) (EVP_PKEY_CTX *ctx, const char *type, const char *value)); + void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, @@ -200,6 +216,18 @@ EVP_PKEY_meth_remove int (**pctrl_str) (EVP_PKEY_CTX *ctx, const char *type, const char *value)); + void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_new.pod index ebe20986dba..667269cc624 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_new.pod @@ -72,21 +72,24 @@ EVP_PKEY_new_mac_key() works in the same way as EVP_PKEY_new_raw_private_key(). New applications should use EVP_PKEY_new_raw_private_key() instead. EVP_PKEY_get_raw_private_key() fills the buffer provided by B<priv> with raw -private key data. The number of bytes written is populated in B<*len>. If the -buffer B<priv> is NULL then B<*len> is populated with the number of bytes -required to hold the key. The calling application is responsible for ensuring -that the buffer is large enough to receive the private key data. This function -only works for algorithms that support raw private keys. Currently this is: -B<EVP_PKEY_HMAC>, B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, B<EVP_PKEY_X25519>, -B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. +private key data. The size of the B<priv> buffer should be in B<*len> on entry +to the function, and on exit B<*len> is updated with the number of bytes +actually written. If the buffer B<priv> is NULL then B<*len> is populated with +the number of bytes required to hold the key. The calling application is +responsible for ensuring that the buffer is large enough to receive the private +key data. This function only works for algorithms that support raw private keys. +Currently this is: B<EVP_PKEY_HMAC>, B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, +B<EVP_PKEY_X25519>, B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. EVP_PKEY_get_raw_public_key() fills the buffer provided by B<pub> with raw -public key data. The number of bytes written is populated in B<*len>. If the -buffer B<pub> is NULL then B<*len> is populated with the number of bytes -required to hold the key. The calling application is responsible for ensuring -that the buffer is large enough to receive the public key data. This function -only works for algorithms that support raw public keys. Currently this is: -B<EVP_PKEY_X25519>, B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. +public key data. The size of the B<pub> buffer should be in B<*len> on entry +to the function, and on exit B<*len> is updated with the number of bytes +actually written. If the buffer B<pub> is NULL then B<*len> is populated with +the number of bytes required to hold the key. The calling application is +responsible for ensuring that the buffer is large enough to receive the public +key data. This function only works for algorithms that support raw public keys. +Currently this is: B<EVP_PKEY_X25519>, B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or +B<EVP_PKEY_ED448>. =head1 NOTES @@ -126,7 +129,7 @@ EVP_PKEY_get_raw_public_key() functions were added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_size.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_size.pod new file mode 100644 index 00000000000..786c5039142 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_PKEY_size.pod @@ -0,0 +1,80 @@ +=pod + +=head1 NAME + +EVP_PKEY_size, EVP_PKEY_bits, EVP_PKEY_security_bits +- EVP_PKEY information functions + +=head1 SYNOPSIS + + #include <openssl/evp.h> + + int EVP_PKEY_size(const EVP_PKEY *pkey); + int EVP_PKEY_bits(const EVP_PKEY *pkey); + int EVP_PKEY_security_bits(const EVP_PKEY *pkey); + +=head1 DESCRIPTION + +EVP_PKEY_size() returns the maximum suitable size for the output +buffers for almost all operations that can be done with I<pkey>. +The primary documented use is with L<EVP_SignFinal(3)> and +L<EVP_SealInit(3)>, but it isn't limited there. The returned size is +also large enough for the output buffer of L<EVP_PKEY_sign(3)>, +L<EVP_PKEY_encrypt(3)>, L<EVP_PKEY_decrypt(3)>, L<EVP_PKEY_derive(3)>. + +It must be stressed that, unless the documentation for the operation +that's being performed says otherwise, the size returned by +EVP_PKEY_size() is only preliminary and not exact, so the final +contents of the target buffer may be smaller. It is therefore crucial +to take note of the size given back by the function that performs the +operation, such as L<EVP_PKEY_sign(3)> (the I<siglen> argument will +receive that length), to avoid bugs. + +EVP_PKEY_bits() returns the cryptographic length of the cryptosystem +to which the key in I<pkey> belongs, in bits. Note that the definition +of cryptographic length is specific to the key cryptosystem. + +EVP_PKEY_security_bits() returns the number of security bits of the given +I<pkey>, bits of security is defined in NIST SP800-57. + +=head1 RETURN VALUES + +EVP_PKEY_size(), EVP_PKEY_bits() and EVP_PKEY_security_bits() return a +positive number, or 0 if this size isn't available. + +=head1 NOTES + +Most functions that have an output buffer and are mentioned with +EVP_PKEY_size() have a functionality where you can pass NULL for the +buffer and still pass a pointer to an integer and get the exact size +that this function call delivers in the context that it's called in. +This allows those functions to be called twice, once to find out the +exact buffer size, then allocate the buffer in between, and call that +function again actually output the data. For those functions, it +isn't strictly necessary to call EVP_PKEY_size() to find out the +buffer size, but may be useful in cases where it's desirable to know +the upper limit in advance. + +It should also be especially noted that EVP_PKEY_size() shouldn't be +used to get the output size for EVP_DigestSignFinal(), according to +L<EVP_DigestSignFinal(3)/NOTES>. + +=head1 SEE ALSO + +L<EVP_SignFinal(3)>, +L<EVP_SealInit(3)>, +L<EVP_PKEY_sign(3)>, +L<EVP_PKEY_encrypt(3)>, +L<EVP_PKEY_decrypt(3)>, +L<EVP_PKEY_derive(3)> + +=head1 COPYRIGHT + +Copyright 2020 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L<https://www.openssl.org/source/license.html>. + +=cut diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_SignInit.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_SignInit.pod index c26b7f7d5d2..22ce747d333 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_SignInit.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_SignInit.pod @@ -2,10 +2,8 @@ =head1 NAME -EVP_PKEY_size, -EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal, -EVP_PKEY_security_bits - EVP signing -functions +EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal +- EVP signing functions =head1 SYNOPSIS @@ -17,49 +15,36 @@ functions void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type); - int EVP_PKEY_size(const EVP_PKEY *pkey); - int EVP_PKEY_security_bits(const EVP_PKEY *pkey); - =head1 DESCRIPTION The EVP signature routines are a high level interface to digital signatures. -EVP_SignInit_ex() sets up signing context B<ctx> to use digest -B<type> from ENGINE B<impl>. B<ctx> must be created with +EVP_SignInit_ex() sets up signing context I<ctx> to use digest +I<type> from B<ENGINE> I<impl>. I<ctx> must be created with EVP_MD_CTX_new() before calling this function. -EVP_SignUpdate() hashes B<cnt> bytes of data at B<d> into the -signature context B<ctx>. This function can be called several times on the -same B<ctx> to include additional data. +EVP_SignUpdate() hashes I<cnt> bytes of data at I<d> into the +signature context I<ctx>. This function can be called several times on the +same I<ctx> to include additional data. -EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and -places the signature in B<sig>. B<sig> must be at least EVP_PKEY_size(pkey) -bytes in size. B<s> is an OUT parameter, and not used as an IN parameter. +EVP_SignFinal() signs the data in I<ctx> using the private key I<pkey> and +places the signature in I<sig>. I<sig> must be at least C<EVP_PKEY_size(pkey)> +bytes in size. I<s> is an OUT parameter, and not used as an IN parameter. The number of bytes of data written (i.e. the length of the signature) -will be written to the integer at B<s>, at most EVP_PKEY_size(pkey) bytes +will be written to the integer at I<s>, at most C<EVP_PKEY_size(pkey)> bytes will be written. -EVP_SignInit() initializes a signing context B<ctx> to use the default -implementation of digest B<type>. - -EVP_PKEY_size() returns the maximum size of a signature in bytes. The actual -signature returned by EVP_SignFinal() may be smaller. - -EVP_PKEY_security_bits() returns the number of security bits of the given B<pkey>, -bits of security is defined in NIST SP800-57. +EVP_SignInit() initializes a signing context I<ctx> to use the default +implementation of digest I<type>. =head1 RETURN VALUES EVP_SignInit_ex(), EVP_SignUpdate() and EVP_SignFinal() return 1 for success and 0 for failure. -EVP_PKEY_size() returns the maximum size of a signature in bytes. - The error codes can be obtained by L<ERR_get_error(3)>. -EVP_PKEY_security_bits() returns the number of security bits. - =head1 NOTES The B<EVP> interface to digital signatures should almost always be used in @@ -95,6 +80,7 @@ The previous two bugs are fixed in the newer EVP_SignDigest*() function. =head1 SEE ALSO +L<EVP_PKEY_size(3)>, L<EVP_PKEY_bits(3)>, L<EVP_PKEY_security_bits(3)>, L<EVP_VerifyInit(3)>, L<EVP_DigestInit(3)>, L<evp(7)>, L<HMAC(3)>, L<MD2(3)>, @@ -103,7 +89,7 @@ L<SHA1(3)>, L<dgst(1)> =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/EVP_aes.pod b/crypto/external/bsd/openssl/dist/doc/man3/EVP_aes.pod index 4192a9ec369..6377fc9a21b 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/EVP_aes.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/EVP_aes.pod @@ -160,6 +160,13 @@ In particular, XTS-AES-128 (B<EVP_aes_128_xts>) takes input of a 256-bit key to achieve AES 128-bit security, and XTS-AES-256 (B<EVP_aes_256_xts>) takes input of a 512-bit key to achieve AES 256-bit security. +The XTS implementation in OpenSSL does not support streaming. That is there must +only be one L<EVP_EncryptUpdate(3)> call per L<EVP_EncryptInit_ex(3)> call (and +similarly with the "Decrypt" functions). + +The I<iv> parameter to L<EVP_EncryptInit_ex(3)> or L<EVP_DecryptInit_ex(3)> is +the XTS "tweak" value. + =back =head1 RETURN VALUES @@ -176,7 +183,7 @@ L<EVP_CIPHER_meth_new(3)> =head1 COPYRIGHT -Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_request_add1_nonce.pod b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_request_add1_nonce.pod index 66e4c7b8fb7..81bf645108f 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_request_add1_nonce.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_request_add1_nonce.pod @@ -24,7 +24,7 @@ it adds a nonce to OCSP basic response B<resp>. OCSP_check_nonce() compares the nonce value in B<req> and B<resp>. -OCSP_copy_nonce() copys any nonce value present in B<req> to B<resp>. +OCSP_copy_nonce() copies any nonce value present in B<req> to B<resp>. =head1 RETURN VALUES @@ -74,7 +74,7 @@ L<OCSP_sendreq_new(3)> =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_response_status.pod b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_response_status.pod index 82f95b3af1d..e7e22e4cb54 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_response_status.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_response_status.pod @@ -58,7 +58,7 @@ with the X509 certificate B<cert>. OCSP_basic_sign() signs OCSP response B<brsp> using certificate B<signer>, private key B<key>, digest B<dgst> and additional certificates B<certs>. If the B<flags> option -B<OCSP_NOCERTS> is set then no certificates will be included in the request. If the +B<OCSP_NOCERTS> is set then no certificates will be included in the response. If the B<flags> option B<OCSP_RESPID_KEY> is set then the responder is identified by key ID rather than by name. OCSP_basic_sign_ctx() also signs OCSP response B<brsp> but uses the parameters contained in digest context B<ctx>. @@ -107,7 +107,7 @@ The OCSP_basic_sign_ctx() function was added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_sendreq_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_sendreq_new.pod index 65ba235c104..a129a16bf23 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/OCSP_sendreq_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/OCSP_sendreq_new.pod @@ -24,8 +24,7 @@ OCSP_REQ_CTX_set1_req, OCSP_sendreq_bio - OCSP responder query functions int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); - OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req, - int maxline); + OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req); =head1 DESCRIPTION @@ -54,8 +53,8 @@ OCSP_REQ_CTX_set1_req() sets the OCSP request in B<rctx> to B<req>. This function should be called after any calls to OCSP_REQ_CTX_add1_header(). OCSP_sendreq_bio() performs an OCSP request using the responder B<io>, the URL -path B<path>, the OCSP request B<req> and with a response header maximum line -length of B<maxline>. If B<maxline> is zero a default value of 4k is used. +path B<path>, and the OCSP request B<req> with a response header maximum line +length 4k. It waits indefinitely on a response. =head1 RETURN VALUES @@ -112,7 +111,7 @@ L<OCSP_response_status(3)> =head1 COPYRIGHT -Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_malloc.pod b/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_malloc.pod index 2d678c951f0..c60e038309a 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_malloc.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_malloc.pod @@ -160,7 +160,7 @@ about what is being done. For example, identifying the field names when parsing a complicated data structure. OPENSSL_mem_debug_push() (which calls CRYPTO_mem_debug_push()) -attachs an identifying string to the allocation stack. +attaches an identifying string to the allocation stack. This must be a global or other static string; it is not copied. OPENSSL_mem_debug_pop() removes identifying state from the stack. @@ -245,7 +245,7 @@ only, say, the malloc() implementation is outright dangerous.> =head1 COPYRIGHT -Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_secure_malloc.pod b/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_secure_malloc.pod index 6c395383513..86c2522afe4 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_secure_malloc.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/OPENSSL_secure_malloc.pod @@ -7,6 +7,7 @@ CRYPTO_secure_malloc_done, OPENSSL_secure_malloc, CRYPTO_secure_malloc, OPENSSL_secure_zalloc, CRYPTO_secure_zalloc, OPENSSL_secure_free, CRYPTO_secure_free, OPENSSL_secure_clear_free, CRYPTO_secure_clear_free, OPENSSL_secure_actual_size, +CRYPTO_secure_allocated, CRYPTO_secure_used - secure heap storage =head1 SYNOPSIS @@ -33,6 +34,7 @@ CRYPTO_secure_used - secure heap storage size_t OPENSSL_secure_actual_size(const void *ptr); + int CRYPTO_secure_allocated(const void *ptr); size_t CRYPTO_secure_used(); =head1 DESCRIPTION @@ -90,6 +92,8 @@ OPENSSL_secure_actual_size() tells the actual size allocated to the pointer; implementations may allocate more space than initially requested, in order to "round up" and reduce secure heap fragmentation. +OPENSSL_secure_allocated() tells if a pointer is allocated in the secure heap. + CRYPTO_secure_used() returns the number of bytes allocated in the secure heap. diff --git a/crypto/external/bsd/openssl/dist/doc/man3/PEM_bytes_read_bio.pod b/crypto/external/bsd/openssl/dist/doc/man3/PEM_bytes_read_bio.pod index 3a5bfee9969..eb2fb2059ee 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/PEM_bytes_read_bio.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/PEM_bytes_read_bio.pod @@ -17,7 +17,8 @@ PEM_bytes_read_bio, PEM_bytes_read_bio_secmem - read a PEM-encoded data structur =head1 DESCRIPTION -PEM_bytes_read_bio() reads PEM-formatted (RFC 1421) data from the BIO +PEM_bytes_read_bio() reads PEM-formatted (IETF RFC 1421 and IETF RFC 7468) +data from the BIO I<bp> for the data type given in I<name> (RSA PRIVATE KEY, CERTIFICATE, etc.). If multiple PEM-encoded data structures are present in the same stream, PEM_bytes_read_bio() will skip non-matching data types and @@ -66,7 +67,6 @@ PEM_bytes_read_bio() and PEM_bytes_read_bio_secmem() return 1 for success or =head1 SEE ALSO -L<PEM(3)>, L<PEM_read_bio_ex(3)>, L<passphrase-encoding(7)> diff --git a/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_PrivateKey.pod b/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_PrivateKey.pod index 7c381e85fef..a8306500fb3 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_PrivateKey.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_PrivateKey.pod @@ -15,7 +15,8 @@ PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY, PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey, PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey, PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY, -PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams, +PEM_write_DSA_PUBKEY, PEM_read_bio_Parameters, PEM_write_bio_Parameters, +PEM_read_bio_DSAparams, PEM_read_DSAparams, PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams, PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams, PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509, @@ -110,6 +111,9 @@ PEM_write_bio_PKCS7, PEM_write_PKCS7 - PEM routines int PEM_write_bio_DSA_PUBKEY(BIO *bp, DSA *x); int PEM_write_DSA_PUBKEY(FILE *fp, DSA *x); + EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); + int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + DSA *PEM_read_bio_DSAparams(BIO *bp, DSA **x, pem_password_cb *cb, void *u); DSA *PEM_read_DSAparams(FILE *fp, DSA **x, pem_password_cb *cb, void *u); int PEM_write_bio_DSAparams(BIO *bp, DSA *x); @@ -216,6 +220,12 @@ a DSA structure. The public key is encoded using a SubjectPublicKeyInfo structure and an error occurs if the public key is not DSA. +The B<Parameters> functions read or write key parameters in PEM format using +an EVP_PKEY structure. The encoding depends on the type of key; for DSA key +parameters, it will be a Dss-Parms structure as defined in RFC2459, and for DH +key parameters, it will be a PKCS#3 DHparameter structure. I<These functions +only exist for the B<BIO> type>. + The B<DSAparams> functions process DSA parameters using a DSA structure. The parameters are encoded using a Dss-Parms structure as defined in RFC2459. diff --git a/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_ex.pod b/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_ex.pod index a16b0ede5a9..9748e74e0f7 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_ex.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/PEM_read_bio_ex.pod @@ -52,7 +52,7 @@ PEM_read_bio_ex() returns 1 for success or 0 for failure. =head1 SEE ALSO -L<PEM(3)> +L<PEM_bytes_read_bio(3)> =head1 HISTORY diff --git a/crypto/external/bsd/openssl/dist/doc/man3/RAND_bytes.pod b/crypto/external/bsd/openssl/dist/doc/man3/RAND_bytes.pod index e2265d170a6..c44c2f96760 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/RAND_bytes.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/RAND_bytes.pod @@ -19,8 +19,8 @@ Deprecated: =head1 DESCRIPTION -RAND_bytes() puts B<num> cryptographically strong pseudo-random bytes -into B<buf>. +RAND_bytes() generates B<num> random bytes using a cryptographically +secure pseudo random generator (CSPRNG) and stores them in B<buf>. RAND_priv_bytes() has the same semantics as RAND_bytes(). It is intended to be used for generating values that should remain private. If using the @@ -31,10 +31,22 @@ and L<RAND_DRBG(7)>. =head1 NOTES -Always check the error return value of RAND_bytes() and -RAND_priv_bytes() and do not take randomness for granted: an error occurs -if the CSPRNG has not been seeded with enough randomness to ensure an -unpredictable byte sequence. +By default, the OpenSSL CSPRNG supports a security level of 256 bits, provided it +was able to seed itself from a trusted entropy source. +On all major platforms supported by OpenSSL (including the Unix-like platforms +and Windows), OpenSSL is configured to automatically seed the CSPRNG on first use +using the operating systems's random generator. + +If the entropy source fails or is not available, the CSPRNG will enter an +error state and refuse to generate random bytes. For that reason, it is important +to always check the error return value of RAND_bytes() and RAND_priv_bytes() and +not take randomness for granted. + +On other platforms, there might not be a trusted entropy source available +or OpenSSL might have been explicitly configured to use different entropy sources. +If you are in doubt about the quality of the entropy source, don't hesitate to ask +your operating system vendor or post a question on GitHub or the openssl-users +mailing list. =head1 RETURN VALUES @@ -68,7 +80,7 @@ The RAND_priv_bytes() function was added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/RAND_set_rand_method.pod b/crypto/external/bsd/openssl/dist/doc/man3/RAND_set_rand_method.pod index 83a6cac17a5..1e9360d220d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/RAND_set_rand_method.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/RAND_set_rand_method.pod @@ -33,10 +33,10 @@ RAND_get_rand_method() returns a pointer to the current B<RAND_METHOD>. =head1 THE RAND_METHOD STRUCTURE typedef struct rand_meth_st { - void (*seed)(const void *buf, int num); + int (*seed)(const void *buf, int num); int (*bytes)(unsigned char *buf, int num); void (*cleanup)(void); - void (*add)(const void *buf, int num, int randomness); + int (*add)(const void *buf, int num, double entropy); int (*pseudorand)(unsigned char *buf, int num); int (*status)(void); } RAND_METHOD; @@ -48,7 +48,7 @@ Each pointer may be NULL if the function is not implemented. =head1 RETURN VALUES -RAND_set_rand_method() returns 1 on success and 0 on failue. +RAND_set_rand_method() returns 1 on success and 0 on failure. RAND_get_rand_method() and RAND_OpenSSL() return pointers to the respective methods. @@ -60,7 +60,7 @@ L<RAND(7)> =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/RSA_get0_key.pod b/crypto/external/bsd/openssl/dist/doc/man3/RSA_get0_key.pod index 358c2de256f..adcd57c4907 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/RSA_get0_key.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/RSA_get0_key.pod @@ -5,7 +5,7 @@ RSA_set0_key, RSA_set0_factors, RSA_set0_crt_params, RSA_get0_key, RSA_get0_factors, RSA_get0_crt_params, RSA_get0_n, RSA_get0_e, RSA_get0_d, RSA_get0_p, RSA_get0_q, -RSA_get0_dmp1, RSA_get0_dmq1, RSA_get0_iqmp, +RSA_get0_dmp1, RSA_get0_dmq1, RSA_get0_iqmp, RSA_get0_pss_params, RSA_clear_flags, RSA_test_flags, RSA_set_flags, RSA_get0_engine, RSA_get_multi_prime_extra_count, RSA_get0_multi_prime_factors, RSA_get0_multi_prime_crt_params, @@ -33,6 +33,7 @@ RSA_set0_multi_prime_params, RSA_get_version const BIGNUM *RSA_get0_dmp1(const RSA *r); const BIGNUM *RSA_get0_dmq1(const RSA *r); const BIGNUM *RSA_get0_iqmp(const RSA *r); + const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); void RSA_clear_flags(RSA *r, int flags); int RSA_test_flags(const RSA *r, int flags); void RSA_set_flags(RSA *r, int flags); @@ -98,6 +99,8 @@ retrieved separately by the corresponding function RSA_get0_n(), RSA_get0_e(), RSA_get0_d(), RSA_get0_p(), RSA_get0_q(), RSA_get0_dmp1(), RSA_get0_dmq1(), and RSA_get0_iqmp(), respectively. +RSA_get0_pss_params() is used to retrieve the RSA-PSS parameters. + RSA_set_flags() sets the flags in the B<flags> parameter on the RSA object. Multiple flags can be passed in one go (bitwise ORed together). Any flags that are already set are left set. RSA_test_flags() tests to @@ -157,6 +160,8 @@ L<RSA_new(3)>, L<RSA_size(3)> =head1 HISTORY +The RSA_get0_pss_params() function was added in OpenSSL 1.1.1e. + The RSA_get_multi_prime_extra_count(), RSA_get0_multi_prime_factors(), RSA_get0_multi_prime_crt_params(), RSA_set0_multi_prime_params(), diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_sess_set_get_cb.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_sess_set_get_cb.pod index 774c4b120f6..d30f84d78a2 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_sess_set_get_cb.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_sess_set_get_cb.pod @@ -28,19 +28,19 @@ SSL_CTX_sess_set_new_cb, SSL_CTX_sess_set_remove_cb, SSL_CTX_sess_set_get_cb, SS =head1 DESCRIPTION -SSL_CTX_sess_set_new_cb() sets the callback function, which is automatically +SSL_CTX_sess_set_new_cb() sets the callback function that is called whenever a new session was negotiated. -SSL_CTX_sess_set_remove_cb() sets the callback function, which is -automatically called whenever a session is removed by the SSL engine, -because it is considered faulty or the session has become obsolete because -of exceeding the timeout value. +SSL_CTX_sess_set_remove_cb() sets the callback function that is +called whenever a session is removed by the SSL engine. For example, +this can occur because a session is considered faulty or has become obsolete +because of exceeding the timeout value. -SSL_CTX_sess_set_get_cb() sets the callback function which is called, -whenever a SSL/TLS client proposed to resume a session but the session +SSL_CTX_sess_set_get_cb() sets the callback function that is called +whenever a TLS client proposed to resume a session but the session could not be found in the internal session cache (see L<SSL_CTX_set_session_cache_mode(3)>). -(SSL/TLS server only.) +(TLS server only.) SSL_CTX_sess_get_new_cb(), SSL_CTX_sess_get_remove_cb(), and SSL_CTX_sess_get_get_cb() retrieve the function pointers set by the @@ -54,12 +54,19 @@ session cache is realized via callback functions. Inside these callback functions, session can be saved to disk or put into a database using the L<d2i_SSL_SESSION(3)> interface. -The new_session_cb() is called, whenever a new session has been negotiated -and session caching is enabled (see -L<SSL_CTX_set_session_cache_mode(3)>). -The new_session_cb() is passed the B<ssl> connection and the ssl session -B<sess>. If the callback returns B<0>, the session will be immediately -removed again. Note that in TLSv1.3, sessions are established after the main +The new_session_cb() is called whenever a new session has been negotiated and +session caching is enabled (see L<SSL_CTX_set_session_cache_mode(3)>). The +new_session_cb() is passed the B<ssl> connection and the nascent +ssl session B<sess>. +Since sessions are reference-counted objects, the reference count on the +session is incremented before the callback, on behalf of the application. If +the callback returns B<0>, the session will be immediately removed from the +internal cache and the reference count released. If the callback returns B<1>, +the application retains the reference (for an entry in the +application-maintained "external session cache"), and is responsible for +calling SSL_SESSION_free() when the session reference is no longer in use. + +Note that in TLSv1.3, sessions are established after the main handshake has completed. The server decides when to send the client the session information and this may occur some time after the end of the handshake (or not at all). This means that applications should expect the new_session_cb() @@ -72,21 +79,23 @@ In TLSv1.3 it is recommended that each SSL_SESSION object is only used for resumption once. One way of enforcing that is for applications to call L<SSL_CTX_remove_session(3)> after a session has been used. -The remove_session_cb() is called, whenever the SSL engine removes a session -from the internal cache. This happens when the session is removed because +The remove_session_cb() is called whenever the SSL engine removes a session +from the internal cache. This can happen when the session is removed because it is expired or when a connection was not shutdown cleanly. It also happens for all sessions in the internal session cache when L<SSL_CTX_free(3)> is called. The remove_session_cb() is passed the B<ctx> and the ssl session B<sess>. It does not provide any feedback. -The get_session_cb() is only called on SSL/TLS servers with the session id -proposed by the client. The get_session_cb() is always called, also when +The get_session_cb() is only called on SSL/TLS servers, and is given +the session id +proposed by the client. The get_session_cb() is always called, even when session caching was disabled. The get_session_cb() is passed the -B<ssl> connection, the session id of length B<length> at the memory location -B<data>. With the parameter B<copy> the callback can require the -SSL engine to increment the reference count of the SSL_SESSION object, -Normally the reference count is not incremented and therefore the -session must not be explicitly freed with +B<ssl> connection and the session id of length B<length> at the memory location +B<data>. By setting the parameter B<copy> to B<1>, the callback can require the +SSL engine to increment the reference count of the SSL_SESSION object; +setting B<copy> to B<0> causes the reference count to remain unchanged. +If the get_session_cb() does not write to B<copy>, the reference count +is incremented and the session must be explicitly freed with L<SSL_SESSION_free(3)>. =head1 RETURN VALUES @@ -104,7 +113,7 @@ L<SSL_CTX_free(3)> =head1 COPYRIGHT -Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod index f29153ed25d..aa167f6332e 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod @@ -3,7 +3,9 @@ =head1 NAME SSL_CTX_set_stateless_cookie_generate_cb, -SSL_CTX_set_stateless_cookie_verify_cb +SSL_CTX_set_stateless_cookie_verify_cb, +SSL_CTX_set_cookie_generate_cb, +SSL_CTX_set_cookie_verify_cb - Callback functions for stateless TLS1.3 cookies =head1 SYNOPSIS @@ -21,22 +23,51 @@ SSL_CTX_set_stateless_cookie_verify_cb const unsigned char *cookie, size_t cookie_len)); + void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); + void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + =head1 DESCRIPTION -SSL_CTX_set_cookie_generate_cb() sets the callback used by L<SSL_stateless(3)> -to generate the application-controlled portion of the cookie provided to clients -in the HelloRetryRequest transmitted as a response to a ClientHello with a -missing or invalid cookie. gen_stateless_cookie_cb() must write at most -SSL_COOKIE_LENGTH bytes into B<cookie>, and must write the number of bytes -written to B<cookie_len>. If a cookie cannot be generated, a zero return value -can be used to abort the handshake. - -SSL_CTX_set_cookie_verify_cb() sets the callback used by L<SSL_stateless(3)> to -determine whether the application-controlled portion of a ClientHello cookie is -valid. A nonzero return value from app_verify_cookie_cb() communicates that the -cookie is valid. The integrity of the entire cookie, including the -application-controlled portion, is automatically verified by HMAC before -verify_stateless_cookie_cb() is called. +SSL_CTX_set_stateless_cookie_generate_cb() sets the callback used by +L<SSL_stateless(3)> to generate the application-controlled portion of the cookie +provided to clients in the HelloRetryRequest transmitted as a response to a +ClientHello with a missing or invalid cookie. gen_stateless_cookie_cb() must +write at most SSL_COOKIE_LENGTH bytes into B<cookie>, and must write the number +of bytes written to B<cookie_len>. If a cookie cannot be generated, a zero +return value can be used to abort the handshake. + +SSL_CTX_set_stateless_cookie_verify_cb() sets the callback used by +L<SSL_stateless(3)> to determine whether the application-controlled portion of a +ClientHello cookie is valid. The cookie data is pointed to by B<cookie> and is of +length B<cookie_len>. A nonzero return value from verify_stateless_cookie_cb() +communicates that the cookie is valid. The integrity of the entire cookie, +including the application-controlled portion, is automatically verified by HMAC +before verify_stateless_cookie_cb() is called. + +SSL_CTX_set_cookie_generate_cb() sets the callback used by L<DTLSv1_listen(3)> +to generate the cookie provided to clients in the HelloVerifyRequest transmitted +as a response to a ClientHello with a missing or invalid cookie. +app_gen_cookie_cb() must write at most DTLS1_COOKIE_LENGTH bytes into +B<cookie>, and must write the number of bytes written to B<cookie_len>. If a +cookie cannot be generated, a zero return value can be used to abort the +handshake. + +SSL_CTX_set_cookie_verify_cb() sets the callback used by L<DTLSv1_listen(3)> to +determine whether the cookie in a ClientHello is valid. The cookie data is +pointed to by B<cookie> and is of length B<cookie_len>. A nonzero return value +from app_verify_cookie_cb() communicates that the cookie is valid. The +integrity of the cookie is not verified by OpenSSL. This is an application +responsibility. =head1 RETURN VALUES @@ -44,7 +75,13 @@ Neither function returns a value. =head1 SEE ALSO -L<SSL_stateless(3)> +L<SSL_stateless(3)>, +L<DTLSv1_listen(3)> + +=head1 HISTORY + +SSL_CTX_set_stateless_cookie_generate_cb() and +SSL_CTX_set_stateless_cookie_verify_cb() were added in OpenSSL 1.1.1. =head1 COPYRIGHT diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod index b1fb5ab7d9f..e971035734e 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod @@ -11,7 +11,7 @@ SSL_set_tlsext_host_name - handle server name indication (SNI) #include <openssl/ssl.h> long SSL_CTX_set_tlsext_servername_callback(SSL_CTX *ctx, - int (*cb)(SSL *, int *, void *)); + int (*cb)(SSL *s, int *al, void *arg)); long SSL_CTX_set_tlsext_servername_arg(SSL_CTX *ctx, void *arg); const char *SSL_get_servername(const SSL *s, const int type); @@ -21,21 +21,106 @@ SSL_set_tlsext_host_name - handle server name indication (SNI) =head1 DESCRIPTION -The functionality provided by the servername callback is superseded by the -ClientHello callback, which can be set using SSL_CTX_set_client_hello_cb(). -The servername callback is retained for historical compatibility. +The functionality provided by the servername callback is mostly superseded by +the ClientHello callback, which can be set using SSL_CTX_set_client_hello_cb(). +However, even where the ClientHello callback is used, the servername callback is +still necessary in order to acknowledge the servername requested by the client. SSL_CTX_set_tlsext_servername_callback() sets the application callback B<cb> used by a server to perform any actions or configuration required based on the servername extension received in the incoming connection. When B<cb> -is NULL, SNI is not used. The B<arg> value is a pointer which is passed to -the application callback. +is NULL, SNI is not used. + +The servername callback should return one of the following values: + +=over 4 + +=item SSL_TLSEXT_ERR_OK + +This is used to indicate that the servername requested by the client has been +accepted. Typically a server will call SSL_set_SSL_CTX() in the callback to set +up a different configuration for the selected servername in this case. + +=item SSL_TLSEXT_ERR_ALERT_FATAL + +In this case the servername requested by the client is not accepted and the +handshake will be aborted. The value of the alert to be used should be stored in +the location pointed to by the B<al> parameter to the callback. By default this +value is initialised to SSL_AD_UNRECOGNIZED_NAME. + +=item SSL_TLSEXT_ERR_ALERT_WARNING + +If this value is returned then the servername is not accepted by the server. +However the handshake will continue and send a warning alert instead. The value +of the alert should be stored in the location pointed to by the B<al> parameter +as for SSL_TLSEXT_ERR_ALERT_FATAL above. Note that TLSv1.3 does not support +warning alerts, so if TLSv1.3 has been negotiated then this return value is +treated the same way as SSL_TLSEXT_ERR_NOACK. + +=item SSL_TLSEXT_ERR_NOACK + +This return value indicates that the servername is not accepted by the server. +No alerts are sent and the server will not acknowledge the requested servername. + +=back SSL_CTX_set_tlsext_servername_arg() sets a context-specific argument to be -passed into the callback for this B<SSL_CTX>. +passed into the callback (via the B<arg> parameter) for this B<SSL_CTX>. + +The behaviour of SSL_get_servername() depends on a number of different factors. +In particular note that in TLSv1.3 the servername is negotiated in every +handshake. In TLSv1.2 the servername is only negotiated on initial handshakes +and not on resumption handshakes. + +=over 4 + +=item On the client, before the handshake + +If a servername has been set via a call to SSL_set_tlsext_host_name() then it +will return that servername. + +If one has not been set, but a TLSv1.2 resumption is being attempted and the +session from the original handshake had a servername accepted by the server then +it will return that servername. + +Otherwise it returns NULL. -SSL_get_servername() returns a servername extension value of the specified -type if provided in the Client Hello or NULL. +=item On the client, during or after the handshake and a TLSv1.2 (or below) +resumption occurred + +If the session from the orignal handshake had a servername accepted by the +server then it will return that servername. + +Otherwise it returns the servername set via SSL_set_tlsext_host_name() or NULL +if it was not called. + +=item On the client, during or after the handshake and a TLSv1.2 (or below) +resumption did not occur + +It will return the servername set via SSL_set_tlsext_host_name() or NULL if it +was not called. + +=item On the server, before the handshake + +The function will always return NULL before the handshake + +=item On the server, after the servername extension has been processed and a +TLSv1.2 (or below) resumption occurred + +If a servername was accepted by the server in the original handshake then it +will return that servername, or NULL otherwise. + +=item On the server, after the servername extension has been processed and a +TLSv1.2 (or below) resumption did not occur + +The function will return the servername requested by the client in this +handshake or NULL if none was requested. + +=back + +Note that the ClientHello callback occurs before a servername extension from the +client is processed. The servername, certificate and ALPN callbacks occur after +a servername extension from the client is processed. SSL_get_servername_type() returns the servername type or -1 if no servername is present. Currently the only supported type (defined in RFC3546) is @@ -65,9 +150,26 @@ SSL_set_tlsext_host_name() returns 1 on success, 0 in case of error. L<ssl(7)>, L<SSL_CTX_set_alpn_select_cb(3)>, L<SSL_get0_alpn_selected(3)>, L<SSL_CTX_set_client_hello_cb(3)> +=head1 HISTORY + +SSL_get_servername() historically provided some unexpected results in certain +corner cases. This has been fixed from OpenSSL 1.1.1e. + +Prior to 1.1.1e, when the client requested a servername in an initial TLSv1.2 +handshake, the server accepted it, and then the client successfully resumed but +set a different explict servername in the second handshake then when called by +the client it returned the servername from the second handshake. This has now +been changed to return the servername requested in the original handshake. + +Also prior to 1.1.1e, if the client sent a servername in the first handshake but +the server did not accept it, and then a second handshake occured where TLSv1.2 +resumption was successful then when called by the server it returned the +servername requested in the original handshake. This has now been changed to +NULL. + =head1 COPYRIGHT -Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_use_psk_identity_hint.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_use_psk_identity_hint.pod index c8f7526610a..0957ade5e10 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_use_psk_identity_hint.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_CTX_use_psk_identity_hint.pod @@ -39,9 +39,9 @@ SSL_set_psk_find_session_callback =head1 DESCRIPTION -A client application wishing to use TLSv1.3 PSKs should set a callback -using either SSL_CTX_set_psk_use_session_callback() or -SSL_set_psk_use_session_callback() as appropriate. +A server application wishing to use TLSv1.3 PSKs should set a callback +using either SSL_CTX_set_psk_find_session_callback() or +SSL_set_psk_find_session_callback() as appropriate. The callback function is given a pointer to the SSL connection in B<ssl> and an identity in B<identity> of length B<identity_len>. The callback function diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_SESSION_get0_hostname.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_SESSION_get0_hostname.pod index 475f700a88c..6e39cbc656d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_SESSION_get0_hostname.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_SESSION_get0_hostname.pod @@ -24,7 +24,10 @@ SSL_SESSION_set1_alpn_selected =head1 DESCRIPTION SSL_SESSION_get0_hostname() retrieves the SNI value that was sent by the -client when the session was created, or NULL if no value was sent. +client when the session was created if it was accepted by the server and TLSv1.2 +or below was negotiated. Otherwise NULL is returned. Note that in TLSv1.3 the +SNI hostname is negotiated with each handshake including resumption handshakes +and is therefore never associated with the session. The value returned is a pointer to memory maintained within B<s> and should not be free'd. @@ -64,7 +67,7 @@ SSL_SESSION_set1_alpn_selected() functions were added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_accept.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_accept.pod index 335655f0c8c..b1595f7acf3 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_accept.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_accept.pod @@ -56,7 +56,7 @@ established. The TLS/SSL handshake was not successful because a fatal error occurred either at the protocol level or a connection failure occurred. The shutdown was -not clean. It can also occur of action is need to continue the operation +not clean. It can also occur if action is needed to continue the operation for non-blocking BIOs. Call SSL_get_error() with the return value B<ret> to find out the reason. @@ -72,7 +72,7 @@ L<SSL_CTX_new(3)> =head1 COPYRIGHT -Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_connect.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_connect.pod index 426b8ad757d..f7d9e57db62 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_connect.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_connect.pod @@ -71,7 +71,7 @@ established. The TLS/SSL handshake was not successful, because a fatal error occurred either at the protocol level or a connection failure occurred. The shutdown was -not clean. It can also occur of action is need to continue the operation +not clean. It can also occur if action is needed to continue the operation for non-blocking BIOs. Call SSL_get_error() with the return value B<ret> to find out the reason. @@ -87,7 +87,7 @@ L<SSL_CTX_new(3)> =head1 COPYRIGHT -Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_do_handshake.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_do_handshake.pod index a1b973f7b80..8852f9d3e3d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_do_handshake.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_do_handshake.pod @@ -57,7 +57,7 @@ established. The TLS/SSL handshake was not successful because a fatal error occurred either at the protocol level or a connection failure occurred. The shutdown was -not clean. It can also occur of action is need to continue the operation +not clean. It can also occur if action is needed to continue the operation for non-blocking BIOs. Call SSL_get_error() with the return value B<ret> to find out the reason. @@ -71,7 +71,7 @@ L<SSL_set_connect_state(3)> =head1 COPYRIGHT -Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_get_error.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_get_error.pod index 97320a6c153..5221ccfe180 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_get_error.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_get_error.pod @@ -155,6 +155,18 @@ connection and SSL_shutdown() must not be called. =back +=head1 BUGS + +The B<SSL_ERROR_SYSCALL> with B<errno> value of 0 indicates unexpected EOF from +the peer. This will be properly reported as B<SSL_ERROR_SSL> with reason +code B<SSL_R_UNEXPECTED_EOF_WHILE_READING> in the OpenSSL 3.0 release because +it is truly a TLS protocol error to terminate the connection without +a SSL_shutdown(). + +The issue is kept unfixed in OpenSSL 1.1.1 releases because many applications +which choose to ignore this protocol error depend on the existing way of +reporting the error. + =head1 SEE ALSO L<ssl(7)> @@ -166,7 +178,7 @@ The SSL_ERROR_WANT_CLIENT_HELLO_CB error code was added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/SSL_load_client_CA_file.pod b/crypto/external/bsd/openssl/dist/doc/man3/SSL_load_client_CA_file.pod index a6cfb308d30..f354ef4177d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/SSL_load_client_CA_file.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/SSL_load_client_CA_file.pod @@ -2,7 +2,10 @@ =head1 NAME -SSL_load_client_CA_file - load certificate names from file +SSL_load_client_CA_file, +SSL_add_file_cert_subjects_to_stack, +SSL_add_dir_cert_subjects_to_stack +- load certificate names =head1 SYNOPSIS @@ -10,11 +13,23 @@ SSL_load_client_CA_file - load certificate names from file STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); + int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, + const char *file) + int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, + const char *dir) + =head1 DESCRIPTION -SSL_load_client_CA_file() reads certificates from B<file> and returns +SSL_load_client_CA_file() reads certificates from I<file> and returns a STACK_OF(X509_NAME) with the subject names found. +SSL_add_file_cert_subjects_to_stack() reads certificates from I<file>, +and adds their subject name to the already existing I<stack>. + +SSL_add_dir_cert_subjects_to_stack() reads certificates from every +file in the directory I<dir>, and adds their subject name to the +already existing I<stack>. + =head1 NOTES SSL_load_client_CA_file() reads a file of PEM formatted certificates and diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP.pod new file mode 100644 index 00000000000..3e0bb6ab221 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP.pod @@ -0,0 +1,212 @@ +=pod + +=head1 NAME + +X509_LOOKUP, X509_LOOKUP_TYPE, +X509_LOOKUP_new, X509_LOOKUP_free, X509_LOOKUP_init, +X509_LOOKUP_shutdown, +X509_LOOKUP_set_method_data, X509_LOOKUP_get_method_data, +X509_LOOKUP_ctrl, +X509_LOOKUP_load_file, X509_LOOKUP_add_dir, +X509_LOOKUP_get_store, X509_LOOKUP_by_subject, +X509_LOOKUP_by_issuer_serial, X509_LOOKUP_by_fingerprint, +X509_LOOKUP_by_alias +- OpenSSL certificate lookup mechanisms + +=head1 SYNOPSIS + + #include <openssl/x509_vfy.h> + + typedef x509_lookup_st X509_LOOKUP; + + typedef enum X509_LOOKUP_TYPE; + + X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); + int X509_LOOKUP_init(X509_LOOKUP *ctx); + int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + void X509_LOOKUP_free(X509_LOOKUP *ctx); + + int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); + void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); + + int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + int X509_LOOKUP_load_file(X509_LOOKUP *ctx, char *name, long type); + int X509_LOOKUP_add_dir(X509_LOOKUP *ctx, char *name, long type); + + X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); + + int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); + int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); + int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); + int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); + +=head1 DESCRIPTION + +The B<X509_LOOKUP> structure holds the information needed to look up +certificates and CRLs according to an associated L<X509_LOOKUP_METHOD(3)>. +Multiple B<X509_LOOKUP> instances can be added to an L<X509_STORE(3)> +to enable lookup in that store. + +X509_LOOKUP_new() creates a new B<X509_LOOKUP> using the given lookup +I<method>. +It can also be created by calling L<X509_STORE_add_lookup(3)>, which +will associate an B<X509_STORE> with the lookup mechanism. + +X509_LOOKUP_init() initializes the internal state and resources as +needed by the given B<X509_LOOKUP> to do its work. + +X509_LOOKUP_shutdown() tears down the internal state and resources of +the given B<X509_LOOKUP>. + +X509_LOOKUP_free() destructs the given B<X509_LOOKUP>. + +X509_LOOKUP_set_method_data() associates a pointer to application data +to the given B<X509_LOOKUP>. + +X509_LOOKUP_get_method_data() retrieves a pointer to application data +from the given B<X509_LOOKUP>. + +X509_LOOKUP_ctrl() is used to set or get additional data to or from an +B<X509_LOOKUP> structure or its associated L<X509_LOOKUP_METHOD(3)>. +The arguments of the control command are passed via I<argc> and I<argl>, +its return value via I<*ret>. +The meaning of the arguments depends on the I<cmd> number of the +control command. In general, this function is not called directly, but +wrapped by a macro call, see below. +The control I<cmd>s known to OpenSSL are discussed in more depth +in L</Control Commands>. + +X509_LOOKUP_load_file() passes a filename to be loaded immediately +into the associated B<X509_STORE>. +I<type> indicates what type of object is expected. +This can only be used with a lookup using the implementation +L<X509_LOOKUP_file(3)>. + +X509_LOOKUP_add_dir() passes a directory specification from which +certificates and CRLs are loaded on demand into the associated +B<X509_STORE>. +I<type> indicates what type of object is expected. +This can only be used with a lookup using the implementation +L<X509_LOOKUP_hash_dir(3)>. + +X509_LOOKUP_load_file(), X509_LOOKUP_add_dir(), +X509_LOOKUP_add_store(), and X509_LOOKUP_load_store() are implemented +as macros that use X509_LOOKUP_ctrl(). + +X509_LOOKUP_by_subject(), X509_LOOKUP_by_issuer_serial(), +X509_LOOKUP_by_fingerprint(), and X509_LOOKUP_by_alias() look up +certificates and CRLs in the L<X509_STORE(3)> associated with the +B<X509_LOOKUP> using different criteria, where the looked up object is +stored in I<ret>. +Some of the underlying B<X509_LOOKUP_METHOD>s will also cache objects +matching the criteria in the associated B<X509_STORE>, which makes it +possible to handle cases where the criteria have more than one hit. + +=head2 File Types + +X509_LOOKUP_load_file() and X509_LOOKUP_add_dir() take a I<type>, +which can be one of the following: + +=over 4 + +=item B<X509_FILETYPE_PEM> + +The file or files that are loaded are expected to be in PEM format. + +=item B<X509_FILETYPE_ASN1> + +The file or files that are loaded are expected to be in raw DER format. + +=item B<X509_FILETYPE_DEFAULT> + +The default certificate file or directory is used. In this case, +I<name> is ignored. + +=begin comment + +TODO +Document X509_get_default_cert_file_env(3), +X509_get_default_cert_file(3), X509_get_default_cert_dir_env(3) and +X509_get_default_cert_dir(3) and link to them here. + +=end comment + +=back + +=head2 Control Commands + +The B<X509_LOOKUP_METHOD>s built into OpenSSL recognise the following +X509_LOOKUP_ctrl() I<cmd>s: + +=over 4 + +=item B<X509_L_FILE_LOAD> + +This is the command that X509_LOOKUP_load_file() uses. +The filename is passed in I<argc>, and the type in I<argl>. + +=item B<X509_L_ADD_DIR> + +This is the command that X509_LOOKUP_add_dir() uses. +The directory specification is passed in I<argc>, and the type in +I<argl>. + +=item B<X509_L_ADD_STORE> + +This is the command that X509_LOOKUP_add_store() uses. +The URI is passed in I<argc>. + +=item B<X509_L_LOAD_STORE> + +This is the command that X509_LOOKUP_load_store() uses. +The URI is passed in I<argc>. + +=back + +=head1 RETURN VALUES + +X509_LOOKUP_new() returns an B<X509_LOOKUP> pointer when successful, +or NULL on error. + +X509_LOOKUP_init() and X509_LOOKUP_shutdown() return 1 on success, or +0 on error. + +X509_LOOKUP_ctrl() returns -1 if the B<X509_LOOKUP> doesn't have an +associated B<X509_LOOKUP_METHOD>, or 1 if the X<509_LOOKUP_METHOD> +doesn't have a control function. +Otherwise, it returns what the control function in the +B<X509_LOOKUP_METHOD> returns, which is usually 1 on success and 0 in +error. + +X509_LOOKUP_get_store() returns an B<X509_STORE> pointer if there is +one, otherwise NULL. + +X509_LOOKUP_by_subject(), X509_LOOKUP_by_issuer_serial(), +X509_LOOKUP_by_fingerprint(), and X509_LOOKUP_by_alias() all return 0 +if there is no B<X509_LOOKUP_METHOD> or that method doesn't implement +the corresponding function. +Otherwise, it returns what the corresponding function in the +B<X509_LOOKUP_METHOD> returns, which is usually 1 on success and 0 in +error. + +=head1 SEE ALSO + +L<X509_LOOKUP_METHOD(3)>, L<X509_STORE(3)> + +=head1 COPYRIGHT + +Copyright 2020 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L<https://www.openssl.org/source/license.html>. + +=cut diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP_meth_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP_meth_new.pod index e5f0a098b3f..a4e7466395d 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP_meth_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_LOOKUP_meth_new.pod @@ -2,6 +2,7 @@ =head1 NAME +X509_LOOKUP_METHOD, X509_LOOKUP_meth_new, X509_LOOKUP_meth_free, X509_LOOKUP_meth_set_new_item, X509_LOOKUP_meth_get_new_item, X509_LOOKUP_meth_set_free, X509_LOOKUP_meth_get_free, X509_LOOKUP_meth_set_init, @@ -16,14 +17,15 @@ X509_LOOKUP_get_by_fingerprint_fn, X509_LOOKUP_meth_set_get_by_fingerprint, X509_LOOKUP_meth_get_get_by_fingerprint, X509_LOOKUP_get_by_alias_fn, X509_LOOKUP_meth_set_get_by_alias, X509_LOOKUP_meth_get_get_by_alias, -X509_LOOKUP_set_method_data, X509_LOOKUP_get_method_data, -X509_LOOKUP_get_store, X509_OBJECT_set1_X509, X509_OBJECT_set1_X509_CRL +X509_OBJECT_set1_X509, X509_OBJECT_set1_X509_CRL - Routines to build up X509_LOOKUP methods =head1 SYNOPSIS #include <openssl/x509_vfy.h> + typedef x509_lookup_method_st X509_LOOKUP_METHOD; + X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); @@ -92,11 +94,6 @@ X509_LOOKUP_get_store, X509_OBJECT_set1_X509, X509_OBJECT_set1_X509_CRL X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); - int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); - void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); - - X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); - int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); @@ -118,7 +115,7 @@ X509_LOOKUP_get_new_item() and X509_LOOKUP_set_new_item() get and set the function that is called when an B<X509_LOOKUP> object is created with X509_LOOKUP_new(). If an X509_LOOKUP_METHOD requires any per-X509_LOOKUP specific data, the supplied new_item function should allocate this data and -invoke X509_LOOKUP_set_method_data(). +invoke L<X509_LOOKUP_set_method_data(3)>. X509_LOOKUP_get_free() and X509_LOOKUP_set_free() get and set the function that is used to free any method data that was allocated and set from within @@ -126,7 +123,7 @@ new_item function. X509_LOOKUP_meth_get_init() and X509_LOOKUP_meth_set_init() get and set the function that is used to initialize the method data that was set with -X509_LOOKUP_set_method_data() as part of the new_item routine. +L<X509_LOOKUP_set_method_data(3)> as part of the new_item routine. X509_LOOKUP_meth_get_shutdown() and X509_LOOKUP_meth_set_shutdown() get and set the function that is used to shut down the method data whose state was @@ -164,9 +161,9 @@ increments the result's reference count. Any method data that was created as a result of the new_item function set by X509_LOOKUP_meth_set_new_item() can be accessed with -X509_LOOKUP_get_method_data(). The B<X509_STORE> object that owns the -X509_LOOKUP may be accessed with X509_LOOKUP_get_store(). Successful lookups -should return 1, and unsuccessful lookups should return 0. +L<X509_LOOKUP_get_method_data(3)>. The B<X509_STORE> object that owns the +X509_LOOKUP may be accessed with L<X509_LOOKUP_get_store(3)>. Successful +lookups should return 1, and unsuccessful lookups should return 0. X509_LOOKUP_get_get_by_subject(), X509_LOOKUP_get_get_by_issuer_serial(), X509_LOOKUP_get_get_by_fingerprint(), X509_LOOKUP_get_get_by_alias() retrieve @@ -189,7 +186,7 @@ The functions described here were added in OpenSSL 1.1.0i. =head1 COPYRIGHT -Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_CTX_new.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_CTX_new.pod index 472db508bc4..c5042858be8 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_CTX_new.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_CTX_new.pod @@ -28,7 +28,7 @@ X509_STORE_CTX_verify_fn void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *x); - STACK_OF(X509) *X509_STORE_CTX_get0_chain(X609_STORE_CTX *ctx); + STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *ctx, STACK_OF(X509) *chain); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_add_cert.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_add_cert.pod index 3ea5b8b1272..d840bd6d69b 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_add_cert.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_STORE_add_cert.pod @@ -2,8 +2,10 @@ =head1 NAME +X509_STORE, X509_STORE_add_cert, X509_STORE_add_crl, X509_STORE_set_depth, X509_STORE_set_flags, X509_STORE_set_purpose, X509_STORE_set_trust, +X509_STORE_add_lookup, X509_STORE_load_locations, X509_STORE_set_default_paths - X509_STORE manipulation @@ -12,6 +14,8 @@ X509_STORE_set_default_paths #include <openssl/x509_vfy.h> + typedef x509_store_st X509_STORE; + int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); int X509_STORE_set_depth(X509_STORE *store, int depth); @@ -19,6 +23,9 @@ X509_STORE_set_default_paths int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); int X509_STORE_set_trust(X509_STORE *ctx, int trust); + X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *store, + X509_LOOKUP_METHOD *meth); + int X509_STORE_load_locations(X509_STORE *ctx, const char *file, const char *dir); int X509_STORE_set_default_paths(X509_STORE *ctx); @@ -65,6 +72,11 @@ for the corresponding values used in certificate chain validation. Their behavior is documented in the corresponding B<X509_VERIFY_PARAM> manual pages, e.g., L<X509_VERIFY_PARAM_set_depth(3)>. +X509_STORE_add_lookup() finds or creates a L<X509_LOOKUP(3)> with the +L<X509_LOOKUP_METHOD(3)> I<meth> and adds it to the B<X509_STORE> +I<store>. This also associates the B<X509_STORE> with the lookup, so +B<X509_LOOKUP> functions can look up objects in that store. + X509_STORE_load_locations() loads trusted certificate(s) into an B<X509_STORE> from a given file and/or directory path. It is permitted to specify just a file, just a directory, or both paths. The certificates @@ -83,6 +95,9 @@ X509_STORE_set_flags(), X509_STORE_set_purpose(), X509_STORE_set_trust(), X509_STORE_load_locations(), and X509_STORE_set_default_paths() return 1 on success or 0 on failure. +X509_STORE_add_lookup() returns the found or created +L<X509_LOOKUP(3)>, or NULL on error. + =head1 SEE ALSO L<X509_LOOKUP_hash_dir(3)>. @@ -92,7 +107,7 @@ L<X509_STORE_get0_param(3)> =head1 COPYRIGHT -Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_check_purpose.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_check_purpose.pod new file mode 100644 index 00000000000..bc38138743c --- /dev/null +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_check_purpose.pod @@ -0,0 +1,74 @@ +=pod + +=head1 NAME + +X509_check_purpose - Check the purpose of a certificate + +=head1 SYNOPSIS + + #include <openssl/x509v3.h> + + int X509_check_purpose(X509 *x, int id, int ca) + +=head1 DESCRIPTION + +This function checks if certificate I<x> was created with the purpose +represented by I<id>. If I<ca> is nonzero, then certificate I<x> is +checked to determine if it's a possible CA with various levels of certainty +possibly returned. + +Below are the potential ID's that can be checked: + + # define X509_PURPOSE_SSL_CLIENT 1 + # define X509_PURPOSE_SSL_SERVER 2 + # define X509_PURPOSE_NS_SSL_SERVER 3 + # define X509_PURPOSE_SMIME_SIGN 4 + # define X509_PURPOSE_SMIME_ENCRYPT 5 + # define X509_PURPOSE_CRL_SIGN 6 + # define X509_PURPOSE_ANY 7 + # define X509_PURPOSE_OCSP_HELPER 8 + # define X509_PURPOSE_TIMESTAMP_SIGN 9 + +=head1 RETURN VALUES + +For non-CA checks + +=over 4 + +=item -1 an error condition has occured + +=item E<32>1 if the certificate was created to perform the purpose represented by I<id> + +=item E<32>0 if the certificate was not created to perform the purpose represented by I<id> + +=back + +For CA checks the below integers could be returned with the following meanings: + +=over 4 + +=item -1 an error condition has occured + +=item E<32>0 not a CA or does not have the purpose represented by I<id> + +=item E<32>1 is a CA. + +=item E<32>2 Only possible in old versions of openSSL when basicConstraints are absent. + New versions will not return this value. May be a CA + +=item E<32>3 basicConstraints absent but self signed V1. + +=item E<32>4 basicConstraints absent but keyUsage present and keyCertSign asserted. + +=item E<32>5 legacy Netscape specific CA Flags present + +=back + +=head1 COPYRIGHT + +Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved. +Licensed under the Apache License 2.0 (the "License"). You may not use this +file except in compliance with the License. You can obtain a copy in the file +LICENSE in the source distribution or at L<https://www.openssl.org/source/license.html>. + +=cut diff --git a/crypto/external/bsd/openssl/dist/doc/man3/X509_get_extension_flags.pod b/crypto/external/bsd/openssl/dist/doc/man3/X509_get_extension_flags.pod index 2dfe2ef3727..43c9c952c6b 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/X509_get_extension_flags.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/X509_get_extension_flags.pod @@ -80,6 +80,17 @@ The certificate contains an unhandled critical extension. Some certificate extension values are invalid or inconsistent. The certificate should be rejected. +This bit may also be raised after an out-of-memory error while +processing the X509 object, so it may not be related to the processed +ASN1 object itself. + +=item B<EXFLAG_INVALID_POLICY> + +The NID_certificate_policies certificate extension is invalid or +inconsistent. The certificate should be rejected. +This bit may also be raised after an out-of-memory error while +processing the X509 object, so it may not be related to the processed +ASN1 object itself. =item B<EXFLAG_KUSAGE> @@ -183,7 +194,7 @@ X509_get_proxy_pathlen() were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man3/d2i_X509.pod b/crypto/external/bsd/openssl/dist/doc/man3/d2i_X509.pod index e36270f7394..a8319bd4715 100644 --- a/crypto/external/bsd/openssl/dist/doc/man3/d2i_X509.pod +++ b/crypto/external/bsd/openssl/dist/doc/man3/d2i_X509.pod @@ -307,7 +307,6 @@ i2d_POLICYQUALINFO, i2d_PROFESSION_INFO, i2d_PROXY_CERT_INFO_EXTENSION, i2d_PROXY_POLICY, -i2d_PublicKey, i2d_RSAPrivateKey, i2d_RSAPrivateKey_bio, i2d_RSAPrivateKey_fp, @@ -461,7 +460,7 @@ Represents an ASN1 OBJECT IDENTIFIER. Represents a PKCS#3 DH parameters structure. -=item B<DHparamx> +=item B<DHxparams> Represents an ANSI X9.42 DH parameters structure. @@ -611,7 +610,7 @@ efficiency reasons. =head1 COPYRIGHT -Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man5/config.pod b/crypto/external/bsd/openssl/dist/doc/man5/config.pod index 992fdfccf91..7b50b099198 100644 --- a/crypto/external/bsd/openssl/dist/doc/man5/config.pod +++ b/crypto/external/bsd/openssl/dist/doc/man5/config.pod @@ -355,6 +355,22 @@ Simple OpenSSL library configuration example to enter FIPS mode: Note: in the above example you will get an error in non FIPS capable versions of OpenSSL. +Simple OpenSSL library configuration to make TLS 1.3 the system-default +minimum TLS version: + + # Toplevel section for openssl (including libssl) + openssl_conf = default_conf_section + + [default_conf_section] + # We only specify configuration for the "ssl module" + ssl_conf = ssl_section + + [ssl_section] + system_default = system_default_section + + [system_default_section] + MinProtocol = TLSv1.3 + More complex OpenSSL library configuration. Add OID and don't enter FIPS mode: # Default appname: should match "appname" parameter (if any) @@ -426,7 +442,7 @@ L<x509(1)>, L<req(1)>, L<ca(1)> =head1 COPYRIGHT -Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man7/Ed25519.pod b/crypto/external/bsd/openssl/dist/doc/man7/Ed25519.pod index 6442e0ea437..8ab4fff7649 100644 --- a/crypto/external/bsd/openssl/dist/doc/man7/Ed25519.pod +++ b/crypto/external/bsd/openssl/dist/doc/man7/Ed25519.pod @@ -11,7 +11,7 @@ Ed448 The B<Ed25519> and B<Ed448> EVP_PKEY implementation supports key generation, one-shot digest sign and digest verify using PureEdDSA and B<Ed25519> or B<Ed448> (see RFC8032). It has associated private and public key formats compatible with -draft-ietf-curdle-pkix-04. +RFC 8410. No additional parameters can be set during key generation, one-shot signing or verification. In particular, because PureEdDSA is used, a digest must B<NOT> be @@ -77,7 +77,7 @@ L<EVP_DigestVerifyInit(3)>, =head1 COPYRIGHT -Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man7/X25519.pod b/crypto/external/bsd/openssl/dist/doc/man7/X25519.pod index 4851f8a1d9d..6f153cb4b98 100644 --- a/crypto/external/bsd/openssl/dist/doc/man7/X25519.pod +++ b/crypto/external/bsd/openssl/dist/doc/man7/X25519.pod @@ -10,7 +10,7 @@ X448 The B<X25519> and B<X448> EVP_PKEY implementation supports key generation and key derivation using B<X25519> and B<X448>. It has associated private and public -key formats compatible with draft-ietf-curdle-pkix-03. +key formats compatible with RFC 8410. No additional parameters can be set during key generation. @@ -64,7 +64,7 @@ L<EVP_PKEY_derive_set_peer(3)> =head1 COPYRIGHT -Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man7/passphrase-encoding.pod b/crypto/external/bsd/openssl/dist/doc/man7/passphrase-encoding.pod index 68108445269..19dcef9acc3 100644 --- a/crypto/external/bsd/openssl/dist/doc/man7/passphrase-encoding.pod +++ b/crypto/external/bsd/openssl/dist/doc/man7/passphrase-encoding.pod @@ -65,7 +65,7 @@ A pass phrase encoded in ISO-8859-2 could very well have a sequence such as 0xC3 0xAF (which is the two characters "LATIN CAPITAL LETTER A WITH BREVE" and "LATIN CAPITAL LETTER Z WITH DOT ABOVE" in ISO-8859-2 encoding), but would be misinterpreted as the perfectly valid UTF-8 encoded code point U+00EF (LATIN -SMALL LETTER I WITH DIARESIS) I<if the pass phrase doesn't contain anything that +SMALL LETTER I WITH DIAERESIS) I<if the pass phrase doesn't contain anything that would be invalid UTF-8>. A pass phrase that contains this kind of byte sequence will give a different outcome in OpenSSL 1.1.0 and newer than in OpenSSL older than 1.1.0. @@ -170,7 +170,7 @@ L<d2i_PKCS8PrivateKey_bio(3)> =head1 COPYRIGHT -Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/dist/doc/man7/proxy-certificates.pod b/crypto/external/bsd/openssl/dist/doc/man7/proxy-certificates.pod new file mode 100644 index 00000000000..df5ee1b4b51 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/doc/man7/proxy-certificates.pod @@ -0,0 +1,363 @@ +=pod + +=encoding UTF-8 + +=head1 NAME + +proxy-certificates - Proxy certificates in OpenSSL + +=head1 DESCRIPTION + +Proxy certificates are defined in RFC 3820. They are used to +extend rights to some other entity (a computer process, typically, or +sometimes to the user itself). This allows the entity to perform +operations on behalf of the owner of the EE (End Entity) certificate. + +The requirements for a valid proxy certificate are: + +=over 4 + +=item * + +They are issued by an End Entity, either a normal EE certificate, or +another proxy certificate. + +=item * + +They must not have the B<subjectAltName> or B<issuerAltName> +extensions. + +=item * + +They must have the B<proxyCertInfo> extension. + +=item * + +They must have the subject of their issuer, with one B<commonName> +added. + +=back + +=head2 Enabling proxy certificate verification + +OpenSSL expects applications that want to use proxy certificates to be +specially aware of them, and make that explicit. This is done by +setting an X509 verification flag: + + X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_ALLOW_PROXY_CERTS); + +or + + X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_ALLOW_PROXY_CERTS); + +See L</NOTES> for a discussion on this requirement. + +=head2 Creating proxy certificates + +Creating proxy certificates can be done using the L<openssl-x509(1)> +command, with some extra extensions: + + [ v3_proxy ] + # A proxy certificate MUST NEVER be a CA certificate. + basicConstraints=CA:FALSE + + # Usual authority key ID + authorityKeyIdentifier=keyid,issuer:always + + # The extension which marks this certificate as a proxy + proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:1,policy:text:AB + +It's also possible to specify the proxy extension in a separate section: + + proxyCertInfo=critical,@proxy_ext + + [ proxy_ext ] + language=id-ppl-anyLanguage + pathlen=0 + policy=text:BC + +The policy value has a specific syntax, I<syntag>:I<string>, where the +I<syntag> determines what will be done with the string. The following +I<syntag>s are recognised: + +=over 4 + +=item B<text> + +indicates that the string is a byte sequence, without any encoding: + + policy=text:räksmörgÃ¥s + +=item B<hex> + +indicates the string is encoded hexadecimal encoded binary data, with +colons between each byte (every second hex digit): + + policy=hex:72:E4:6B:73:6D:F6:72:67:E5:73 + +=item B<file> + +indicates that the text of the policy should be taken from a file. +The string is then a filename. This is useful for policies that are +large (more than a few lines, e.g. XML documents). + +=back + +I<NOTE: The proxy policy value is what determines the rights granted +to the process during the proxy certificate. It's up to the +application to interpret and combine these policies.> + +With a proxy extension, creating a proxy certificate is a matter of +two commands: + + openssl req -new -config proxy.cnf \ + -out proxy.req -keyout proxy.key \ + -subj "/DC=org/DC=openssl/DC=users/CN=proxy 1" + + openssl x509 -req -CAcreateserial -in proxy.req -out proxy.crt \ + -CA user.crt -CAkey user.key -days 7 \ + -extfile proxy.cnf -extensions v3_proxy1 + +You can also create a proxy certificate using another proxy +certificate as issuer (note: using a different configuration +section for the proxy extensions): + + openssl req -new -config proxy.cnf \ + -out proxy2.req -keyout proxy2.key \ + -subj "/DC=org/DC=openssl/DC=users/CN=proxy 1/CN=proxy 2" + + openssl x509 -req -CAcreateserial -in proxy2.req -out proxy2.crt \ + -CA proxy.crt -CAkey proxy.key -days 7 \ + -extfile proxy.cnf -extensions v3_proxy2 + +=head2 Using proxy certs in applications + +To interpret proxy policies, the application would normally start with +some default rights (perhaps none at all), then compute the resulting +rights by checking the rights against the chain of proxy certificates, +user certificate and CA certificates. + +The complicated part is figuring out how to pass data between your +application and the certificate validation procedure. + +The following ingredients are needed for such processing: + +=over 4 + +=item * + +a callback function that will be called for every certificate being +validated. The callback is called several times for each certificate, +so you must be careful to do the proxy policy interpretation at the +right time. You also need to fill in the defaults when the EE +certificate is checked. + +=item * + +a data structure that is shared between your application code and the +callback. + +=item * + +a wrapper function that sets it all up. + +=item * + +an ex_data index function that creates an index into the generic +ex_data store that is attached to an X509 validation context. + +=back + +The following skeleton code can be used as a starting point: + + #include <string.h> + #include <netdb.h> + #include <openssl/x509.h> + #include <openssl/x509v3.h> + + #define total_rights 25 + + /* + * In this example, I will use a view of granted rights as a bit + * array, one bit for each possible right. + */ + typedef struct your_rights { + unsigned char rights[(total_rights + 7) / 8]; + } YOUR_RIGHTS; + + /* + * The following procedure will create an index for the ex_data + * store in the X509 validation context the first time it's + * called. Subsequent calls will return the same index. + */ + static int get_proxy_auth_ex_data_idx(X509_STORE_CTX *ctx) + { + static volatile int idx = -1; + + if (idx < 0) { + X509_STORE_lock(X509_STORE_CTX_get0_store(ctx)); + if (idx < 0) { + idx = X509_STORE_CTX_get_ex_new_index(0, + "for verify callback", + NULL,NULL,NULL); + } + X509_STORE_unlock(X509_STORE_CTX_get0_store(ctx)); + } + return idx; + } + + /* Callback to be given to the X509 validation procedure. */ + static int verify_callback(int ok, X509_STORE_CTX *ctx) + { + if (ok == 1) { + /* + * It's REALLY important you keep the proxy policy check + * within this section. It's important to know that when + * ok is 1, the certificates are checked from top to + * bottom. You get the CA root first, followed by the + * possible chain of intermediate CAs, followed by the EE + * certificate, followed by the possible proxy + * certificates. + */ + X509 *xs = X509_STORE_CTX_get_current_cert(ctx); + + if (X509_get_extension_flags(xs) & EXFLAG_PROXY) { + YOUR_RIGHTS *rights = + (YOUR_RIGHTS *)X509_STORE_CTX_get_ex_data(ctx, + get_proxy_auth_ex_data_idx(ctx)); + PROXY_CERT_INFO_EXTENSION *pci = + X509_get_ext_d2i(xs, NID_proxyCertInfo, NULL, NULL); + + switch (OBJ_obj2nid(pci->proxyPolicy->policyLanguage)) { + case NID_Independent: + /* + * Do whatever you need to grant explicit rights + * to this particular proxy certificate, usually + * by pulling them from some database. If there + * are none to be found, clear all rights (making + * this and any subsequent proxy certificate void + * of any rights). + */ + memset(rights->rights, 0, sizeof(rights->rights)); + break; + case NID_id_ppl_inheritAll: + /* + * This is basically a NOP, we simply let the + * current rights stand as they are. + */ + break; + default: + /* + * This is usually the most complex section of + * code. You really do whatever you want as long + * as you follow RFC 3820. In the example we use + * here, the simplest thing to do is to build + * another, temporary bit array and fill it with + * the rights granted by the current proxy + * certificate, then use it as a mask on the + * accumulated rights bit array, and voilà , you + * now have a new accumulated rights bit array. + */ + { + int i; + YOUR_RIGHTS tmp_rights; + memset(tmp_rights.rights, 0, + sizeof(tmp_rights.rights)); + + /* + * process_rights() is supposed to be a + * procedure that takes a string and its + * length, interprets it and sets the bits + * in the YOUR_RIGHTS pointed at by the + * third argument. + */ + process_rights((char *) pci->proxyPolicy->policy->data, + pci->proxyPolicy->policy->length, + &tmp_rights); + + for(i = 0; i < total_rights / 8; i++) + rights->rights[i] &= tmp_rights.rights[i]; + } + break; + } + PROXY_CERT_INFO_EXTENSION_free(pci); + } else if (!(X509_get_extension_flags(xs) & EXFLAG_CA)) { + /* We have an EE certificate, let's use it to set default! */ + YOUR_RIGHTS *rights = + (YOUR_RIGHTS *)X509_STORE_CTX_get_ex_data(ctx, + get_proxy_auth_ex_data_idx(ctx)); + + /* + * The following procedure finds out what rights the + * owner of the current certificate has, and sets them + * in the YOUR_RIGHTS structure pointed at by the + * second argument. + */ + set_default_rights(xs, rights); + } + } + return ok; + } + + static int my_X509_verify_cert(X509_STORE_CTX *ctx, + YOUR_RIGHTS *needed_rights) + { + int ok; + int (*save_verify_cb)(int ok,X509_STORE_CTX *ctx) = + X509_STORE_CTX_get_verify_cb(ctx); + YOUR_RIGHTS rights; + + X509_STORE_CTX_set_verify_cb(ctx, verify_callback); + X509_STORE_CTX_set_ex_data(ctx, get_proxy_auth_ex_data_idx(ctx), + &rights); + X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_ALLOW_PROXY_CERTS); + ok = X509_verify_cert(ctx); + + if (ok == 1) { + ok = check_needed_rights(rights, needed_rights); + } + + X509_STORE_CTX_set_verify_cb(ctx, save_verify_cb); + + return ok; + } + +If you use SSL or TLS, you can easily set up a callback to have the +certificates checked properly, using the code above: + + SSL_CTX_set_cert_verify_callback(s_ctx, my_X509_verify_cert, + &needed_rights); + +=head1 NOTES + +To this date, it seems that proxy certificates have only been used in +environments that are aware of them, and no one seems to have +investigated how they can be used or misused outside of such an +environment. + +For that reason, OpenSSL requires that applications aware of proxy +certificates must also make that explicit. + +B<subjectAltName> and B<issuerAltName> are forbidden in proxy +certificates, and this is enforced in OpenSSL. The subject must be +the same as the issuer, with one commonName added on. + +=head1 SEE ALSO + +L<X509_STORE_CTX_set_flags(3)>, +L<X509_STORE_CTX_set_verify_cb(3)>, +L<X509_VERIFY_PARAM_set_flags(3)>, +L<SSL_CTX_set_cert_verify_callback(3)>, +L<openssl-req(1)>, L<openssl-x509(1)>, +L<RFC 3820|https://tools.ietf.org/html/rfc3820> + +=head1 COPYRIGHT + +Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + +Licensed under the Apache License 2.0 (the "License"). You may not use +this file except in compliance with the License. You can obtain a copy +in the file LICENSE in the source distribution or at +L<https://www.openssl.org/source/license.html>. + +=cut diff --git a/crypto/external/bsd/openssl/dist/e_os.h b/crypto/external/bsd/openssl/dist/e_os.h index 858bc40cb1f..34223a0bcdb 100644 --- a/crypto/external/bsd/openssl/dist/e_os.h +++ b/crypto/external/bsd/openssl/dist/e_os.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_E_OS_H -# define HEADER_E_OS_H +#ifndef OSSL_E_OS_H +# define OSSL_E_OS_H # include <limits.h> # include <openssl/opensslconf.h> @@ -42,7 +42,7 @@ # endif /* * Some operating systems do not permit select(2) on their random devices, - * defining this to zero will force the used of read(2) to extract one byte + * defining this to zero will force the use of read(2) to extract one byte * from /dev/random. */ # ifndef DEVRANDM_WAIT_USE_SELECT diff --git a/crypto/external/bsd/openssl/dist/engines/e_afalg.c b/crypto/external/bsd/openssl/dist/engines/e_afalg.c index 7f62d77e5bc..4b172284613 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_afalg.c +++ b/crypto/external/bsd/openssl/dist/engines/e_afalg.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -456,7 +456,7 @@ static int afalg_start_cipher_sk(afalg_ctx *actx, const unsigned char *in, /* * vmsplice and splice are used to pin the user space input buffer for - * kernel space processing avoiding copys from user to kernel space + * kernel space processing avoiding copies from user to kernel space */ ret = vmsplice(actx->zc_pipe[1], &iov, 1, SPLICE_F_GIFT); if (ret < 0) { diff --git a/crypto/external/bsd/openssl/dist/engines/e_afalg.h b/crypto/external/bsd/openssl/dist/engines/e_afalg.h index 2c03c448d68..3323c898c63 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_afalg.h +++ b/crypto/external/bsd/openssl/dist/engines/e_afalg.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_AFALG_H -# define HEADER_AFALG_H +#ifndef OSSL_ENGINES_E_AFALG_H +# define OSSL_ENGINES_E_AFALG_H # if defined(__GNUC__) && __GNUC__ >= 4 && \ (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) diff --git a/crypto/external/bsd/openssl/dist/engines/e_afalg_err.h b/crypto/external/bsd/openssl/dist/engines/e_afalg_err.h index 3eb1332bbfe..3036443f447 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_afalg_err.h +++ b/crypto/external/bsd/openssl/dist/engines/e_afalg_err.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_AFALGERR_H -# define HEADER_AFALGERR_H +#ifndef OSSL_ENGINES_E_AFALG_ERR_H +# define OSSL_ENGINES_E_AFALG_ERR_H # define AFALGerr(f, r) ERR_AFALG_error((f), (r), OPENSSL_FILE, OPENSSL_LINE) diff --git a/crypto/external/bsd/openssl/dist/engines/e_capi_err.h b/crypto/external/bsd/openssl/dist/engines/e_capi_err.h index e034c98cae8..e3a927aa733 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_capi_err.h +++ b/crypto/external/bsd/openssl/dist/engines/e_capi_err.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CAPIERR_H -# define HEADER_CAPIERR_H +#ifndef OSSL_ENGINES_E_CAPI_ERR_H +# define OSSL_ENGINES_E_CAPI_ERR_H # define CAPIerr(f, r) ERR_CAPI_error((f), (r), OPENSSL_FILE, OPENSSL_LINE) diff --git a/crypto/external/bsd/openssl/dist/engines/e_dasync_err.h b/crypto/external/bsd/openssl/dist/engines/e_dasync_err.h index 7c2c0278790..5b74d8be25f 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_dasync_err.h +++ b/crypto/external/bsd/openssl/dist/engines/e_dasync_err.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_DASYNCERR_H -# define HEADER_DASYNCERR_H +#ifndef OSSL_ENGINES_E_DASYNC_ERR_H +# define OSSL_ENGINES_E_DASYNC_ERR_H # define DASYNCerr(f, r) ERR_DASYNC_error((f), (r), OPENSSL_FILE, OPENSSL_LINE) diff --git a/crypto/external/bsd/openssl/dist/engines/e_ossltest_err.h b/crypto/external/bsd/openssl/dist/engines/e_ossltest_err.h index e745c1a236d..8e6535b76c0 100644 --- a/crypto/external/bsd/openssl/dist/engines/e_ossltest_err.h +++ b/crypto/external/bsd/openssl/dist/engines/e_ossltest_err.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_OSSLTESTERR_H -# define HEADER_OSSLTESTERR_H +#ifndef OSSL_ENGINES_E_OSSLTEST_ERR_H +# define OSSL_ENGINES_E_OSSLTEST_ERR_H # define OSSLTESTerr(f, r) ERR_OSSLTEST_error((f), (r), OPENSSL_FILE, OPENSSL_LINE) diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_EPILOGUE.H b/crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_EPILOGUE.H index c350018ad19..c350018ad19 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_EPILOGUE.H +++ b/crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_EPILOGUE.H diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_PROLOGUE.H b/crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_PROLOGUE.H index 9a9c777f93f..9a9c777f93f 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/__DECC_INCLUDE_PROLOGUE.H +++ b/crypto/external/bsd/openssl/dist/include/crypto/__DECC_INCLUDE_PROLOGUE.H diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/aria.h b/crypto/external/bsd/openssl/dist/include/crypto/aria.h index 355abe53980..03a62950ae4 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/aria.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/aria.h @@ -10,8 +10,8 @@ /* Copyright (c) 2017 National Security Research Institute. All rights reserved. */ -#ifndef HEADER_ARIA_H -# define HEADER_ARIA_H +#ifndef OSSL_CRYPTO_ARIA_H +# define OSSL_CRYPTO_ARIA_H # include <openssl/opensslconf.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/asn1_int.h b/crypto/external/bsd/openssl/dist/include/crypto/asn1.h index 9c9b4d89745..9c9b4d89745 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/asn1_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/asn1.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/async.h b/crypto/external/bsd/openssl/dist/include/crypto/async.h index dc8e937b0ce..dc8e937b0ce 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/async.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/async.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_int.h b/crypto/external/bsd/openssl/dist/include/crypto/bn.h index 30be7efe14d..60afda1dade 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/bn.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_BN_INT_H -# define HEADER_BN_INT_H +#ifndef OSSL_CRYPTO_BN_H +# define OSSL_CRYPTO_BN_H # include <openssl/bn.h> # include <limits.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_conf.h.in b/crypto/external/bsd/openssl/dist/include/crypto/bn_conf.h.in index ec6e4f6c1b5..b6b9eb743fd 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_conf.h.in +++ b/crypto/external/bsd/openssl/dist/include/crypto/bn_conf.h.in @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_BN_CONF_H -# define HEADER_BN_CONF_H +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H /* * The contents of this file are not used in the UEFI build, as diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_dh.h b/crypto/external/bsd/openssl/dist/include/crypto/bn_dh.h index 70ebca28753..70ebca28753 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_dh.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/bn_dh.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_srp.h b/crypto/external/bsd/openssl/dist/include/crypto/bn_srp.h index d4b282a6bbb..d4b282a6bbb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/bn_srp.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/bn_srp.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/chacha.h b/crypto/external/bsd/openssl/dist/include/crypto/chacha.h index 67243f22280..4029400a670 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/chacha.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/chacha.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CHACHA_H -#define HEADER_CHACHA_H +#ifndef OSSL_CRYPTO_CHACHA_H +#define OSSL_CRYPTO_CHACHA_H #include <stddef.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/cryptlib_int.h b/crypto/external/bsd/openssl/dist/include/crypto/cryptlib.h index 38b5dac9a36..38b5dac9a36 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/cryptlib_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/cryptlib.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/ctype.h b/crypto/external/bsd/openssl/dist/include/crypto/ctype.h index 9f3a58339c4..81ef8f5cf7e 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/ctype.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/ctype.h @@ -18,8 +18,8 @@ * throughout the rest of the source code. Refer to issue #4154 for * details. */ -#ifndef INTERNAL_CTYPE_H -# define INTERNAL_CTYPE_H +#ifndef OSSL_CRYPTO_CTYPE_H +# define OSSL_CRYPTO_CTYPE_H # define CTYPE_MASK_lower 0x1 # define CTYPE_MASK_upper 0x2 diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/dso_conf.h.in b/crypto/external/bsd/openssl/dist/include/crypto/dso_conf.h.in index 2a76818b50d..57a09b10a25 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/dso_conf.h.in +++ b/crypto/external/bsd/openssl/dist/include/crypto/dso_conf.h.in @@ -8,15 +8,15 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_DSO_CONF_H -# define HEADER_DSO_CONF_H +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H {- # The DSO code currently always implements all functions so that no # applications will have to worry about that from a compilation point # of view. However, the "method"s may return zero unless that platform # has support compiled in for them. Currently each method is enabled # by a define "DSO_<name>" ... we translate the "dso_scheme" config # string entry into using the following logic; - my $scheme = uc $target{dso_scheme}; + my $scheme = $disabled{dso} ? undef : uc $target{dso_scheme}; if (!$scheme) { $scheme = "NONE"; } diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/ec_int.h b/crypto/external/bsd/openssl/dist/include/crypto/ec.h index 182c39cc805..fe52ae704bb 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/ec_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/ec.h @@ -9,8 +9,8 @@ /* Internal EC functions for other submodules: not for application use */ -#ifndef HEADER_OSSL_EC_INTERNAL_H -# define HEADER_OSSL_EC_INTERNAL_H +#ifndef OSSL_CRYPTO_EC_H +# define OSSL_CRYPTO_EC_H # include <openssl/opensslconf.h> # ifndef OPENSSL_NO_EC diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/engine.h b/crypto/external/bsd/openssl/dist/include/crypto/engine.h index f80ae3ec30c..f80ae3ec30c 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/engine.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/engine.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/err_int.h b/crypto/external/bsd/openssl/dist/include/crypto/err.h index 44ac9446275..8ab0e5baaa2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/err_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/err.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef INTERNAL_ERR_INT_H -# define INTERNAL_ERR_INT_H +#ifndef OSSL_CRYPTO_ERR_H +# define OSSL_CRYPTO_ERR_H int err_load_crypto_strings_int(void); void err_cleanup(void); diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/evp_int.h b/crypto/external/bsd/openssl/dist/include/crypto/evp.h index d86aed36f07..d86aed36f07 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/evp_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/evp.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/lhash.h b/crypto/external/bsd/openssl/dist/include/crypto/lhash.h index 200ba8685da..ab060cce74b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/lhash.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/lhash.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef INTERNAL_LHASH_H -# define INTERNAL_LHASH_H +#ifndef OSSL_CRYPTO_LHASH_H +# define OSSL_CRYPTO_LHASH_H unsigned long openssl_lh_strcasehash(const char *); diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/md32_common.h b/crypto/external/bsd/openssl/dist/include/crypto/md32_common.h index 1124e9c24b2..1124e9c24b2 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/md32_common.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/md32_common.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/objects.h b/crypto/external/bsd/openssl/dist/include/crypto/objects.h index 76e1b4d9883..76e1b4d9883 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/objects.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/objects.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/poly1305.h b/crypto/external/bsd/openssl/dist/include/crypto/poly1305.h index 5fef239d0f8..5fef239d0f8 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/poly1305.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/poly1305.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/rand_int.h b/crypto/external/bsd/openssl/dist/include/crypto/rand.h index 10347ab0e37..5350d3a9311 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/rand_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/rand.h @@ -15,8 +15,8 @@ * or in the file LICENSE in the source distribution. */ -#ifndef HEADER_RAND_INT_H -# define HEADER_RAND_INT_H +#ifndef OSSL_CRYPTO_RAND_H +# define OSSL_CRYPTO_RAND_H # include <openssl/rand.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/sha.h b/crypto/external/bsd/openssl/dist/include/crypto/sha.h index 458a75e89d4..6d15edb9e57 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/sha.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/sha.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_INTERNAL_SHA_H -# define HEADER_INTERNAL_SHA_H +#ifndef OSSL_CRYPTO_SHA_H +# define OSSL_CRYPTO_SHA_H # include <openssl/opensslconf.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/siphash.h b/crypto/external/bsd/openssl/dist/include/crypto/siphash.h index 9573680f0f1..9573680f0f1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/siphash.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/siphash.h diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm2.h b/crypto/external/bsd/openssl/dist/include/crypto/sm2.h index 5c5cd4b4f56..76ee80baff1 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm2.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/sm2.h @@ -9,8 +9,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SM2_H -# define HEADER_SM2_H +#ifndef OSSL_CRYPTO_SM2_H +# define OSSL_CRYPTO_SM2_H # include <openssl/opensslconf.h> # ifndef OPENSSL_NO_SM2 diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm2err.h b/crypto/external/bsd/openssl/dist/include/crypto/sm2err.h index 09edfab787f..d1c0ee25918 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm2err.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/sm2err.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SM2ERR_H -# define HEADER_SM2ERR_H +#ifndef OSSL_CRYPTO_SM2ERR_H +# define OSSL_CRYPTO_SM2ERR_H # ifndef HEADER_SYMHACKS_H # include <openssl/symhacks.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm3.h b/crypto/external/bsd/openssl/dist/include/crypto/sm3.h index 27eb471c283..97e74603333 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm3.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/sm3.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SM3_H -# define HEADER_SM3_H +#ifndef OSSL_CRYPTO_SM3_H +# define OSSL_CRYPTO_SM3_H # include <openssl/opensslconf.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm4.h b/crypto/external/bsd/openssl/dist/include/crypto/sm4.h index f1f157ef535..abe28f385e0 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/sm4.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/sm4.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SM4_H -# define HEADER_SM4_H +#ifndef OSSL_CRYPTO_SM4_H +# define OSSL_CRYPTO_SM4_H # include <openssl/opensslconf.h> # include <openssl/e_os2.h> diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/store_int.h b/crypto/external/bsd/openssl/dist/include/crypto/store.h index 6f31e019ea2..428d3c60e13 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/store_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/store.h @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_STORE_INT_H -# define HEADER_STORE_INT_H +#ifndef OSSL_CRYPTO_STORE_H +# define OSSL_CRYPTO_STORE_H # include <openssl/bio.h> # include <openssl/store.h> @@ -23,4 +23,6 @@ OSSL_STORE_CTX *ossl_store_attach_pem_bio(BIO *bp, const UI_METHOD *ui_method, void *ui_data); int ossl_store_detach_pem_bio(OSSL_STORE_CTX *ctx); +void ossl_store_cleanup_int(void); + #endif diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/x509_int.h b/crypto/external/bsd/openssl/dist/include/crypto/x509.h index b53c2b03c39..b53c2b03c39 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/x509_int.h +++ b/crypto/external/bsd/openssl/dist/include/crypto/x509.h diff --git a/crypto/external/bsd/openssl/dist/include/internal/conf.h b/crypto/external/bsd/openssl/dist/include/internal/conf.h index 29bc9f963c9..163fea8de41 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/conf.h +++ b/crypto/external/bsd/openssl/dist/include/internal/conf.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_INTERNAL_CONF_H -# define HEADER_INTERNAL_CONF_H +#ifndef OSSL_INTERNAL_CONF_H +# define OSSL_INTERNAL_CONF_H #include <openssl/conf.h> diff --git a/crypto/external/bsd/openssl/dist/include/internal/constant_time_locl.h b/crypto/external/bsd/openssl/dist/include/internal/constant_time.h index 0193a653d4b..6600a1d72ae 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/constant_time_locl.h +++ b/crypto/external/bsd/openssl/dist/include/internal/constant_time.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CONSTANT_TIME_LOCL_H -# define HEADER_CONSTANT_TIME_LOCL_H +#ifndef OSSL_INTERNAL_CONSTANT_TIME_H +# define OSSL_INTERNAL_CONSTANT_TIME_H # include <stdlib.h> # include <string.h> @@ -384,4 +384,4 @@ static ossl_inline void constant_time_lookup(void *out, */ void err_clear_last_constant_time(int clear); -#endif /* HEADER_CONSTANT_TIME_LOCL_H */ +#endif /* OSSL_INTERNAL_CONSTANT_TIME_H */ diff --git a/crypto/external/bsd/openssl/dist/include/internal/cryptlib.h b/crypto/external/bsd/openssl/dist/include/internal/cryptlib.h index 23e17e5586e..6e7291ae41b 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/cryptlib.h +++ b/crypto/external/bsd/openssl/dist/include/internal/cryptlib.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_CRYPTLIB_H -# define HEADER_CRYPTLIB_H +#ifndef OSSL_INTERNAL_CRYPTLIB_H +# define OSSL_INTERNAL_CRYPTLIB_H # include <stdlib.h> # include <string.h> diff --git a/crypto/external/bsd/openssl/dist/include/internal/dane.h b/crypto/external/bsd/openssl/dist/include/internal/dane.h index a1cb5488ba0..7a39bd7d7d4 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/dane.h +++ b/crypto/external/bsd/openssl/dist/include/internal/dane.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_INTERNAL_DANE_H -#define HEADER_INTERNAL_DANE_H +#ifndef OSSL_INTERNAL_DANE_H +#define OSSL_INTERNAL_DANE_H #include <openssl/safestack.h> @@ -100,4 +100,4 @@ struct ssl_dane_st { #define DANETLS_HAS_DANE_TA(dane) ((dane)&&((dane)->umask & DANETLS_DANE_TA_MASK)) #define DANETLS_HAS_DANE_EE(dane) ((dane)&&((dane)->umask & DANETLS_DANE_EE_MASK)) -#endif /* HEADER_INTERNAL_DANE_H */ +#endif /* OSSL_INTERNAL_DANE_H */ diff --git a/crypto/external/bsd/openssl/dist/include/internal/dso.h b/crypto/external/bsd/openssl/dist/include/internal/dso.h index eb5f7d53c7d..c57c0c40759 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/dso.h +++ b/crypto/external/bsd/openssl/dist/include/internal/dso.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_DSO_H -# define HEADER_DSO_H +#ifndef OSSL_INTERNAL_DSO_H +# define OSSL_INTERNAL_DSO_H # include <openssl/crypto.h> # include "internal/dsoerr.h" diff --git a/crypto/external/bsd/openssl/dist/include/internal/dsoerr.h b/crypto/external/bsd/openssl/dist/include/internal/dsoerr.h index 5f4511c4d6f..94d642a22d8 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/dsoerr.h +++ b/crypto/external/bsd/openssl/dist/include/internal/dsoerr.h @@ -8,8 +8,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_DSOERR_H -# define HEADER_DSOERR_H +#ifndef OSSL_INTERNAL_DSOERR_H +# define OSSL_INTERNAL_DSOERR_H # ifndef HEADER_SYMHACKS_H # include <openssl/symhacks.h> diff --git a/crypto/external/bsd/openssl/dist/include/internal/err.h b/crypto/external/bsd/openssl/dist/include/internal/err.h index d46b8bdb292..88dde705915 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/err.h +++ b/crypto/external/bsd/openssl/dist/include/internal/err.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef INTERNAL_ERR_H -# define INTERNAL_ERR_H +#ifndef OSSL_INTERNAL_ERR_H +# define OSSL_INTERNAL_ERR_H void err_free_strings_int(void); diff --git a/crypto/external/bsd/openssl/dist/include/internal/nelem.h b/crypto/external/bsd/openssl/dist/include/internal/nelem.h index d65a21a9fbe..699ef88ee52 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/nelem.h +++ b/crypto/external/bsd/openssl/dist/include/internal/nelem.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_NELEM_H -# define HEADER_NELEM_H +#ifndef OSSL_INTERNAL_NELEM_H +# define OSSL_INTERNAL_NELEM_H # define OSSL_NELEM(x) (sizeof(x)/sizeof((x)[0])) #endif diff --git a/crypto/external/bsd/openssl/dist/include/internal/numbers.h b/crypto/external/bsd/openssl/dist/include/internal/numbers.h index 31931df3c2f..f5ade5226e5 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/numbers.h +++ b/crypto/external/bsd/openssl/dist/include/internal/numbers.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_NUMBERS_H -# define HEADER_NUMBERS_H +#ifndef OSSL_INTERNAL_NUMBERS_H +# define OSSL_INTERNAL_NUMBERS_H # include <limits.h> diff --git a/crypto/external/bsd/openssl/dist/include/internal/o_dir.h b/crypto/external/bsd/openssl/dist/include/internal/o_dir.h index e7b55e0c18b..dafc8dd2e74 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/o_dir.h +++ b/crypto/external/bsd/openssl/dist/include/internal/o_dir.h @@ -36,8 +36,8 @@ * SUCH DAMAGE. */ -#ifndef O_DIR_H -# define O_DIR_H +#ifndef OSSL_INTERNAL_O_DIR_H +# define OSSL_INTERNAL_O_DIR_H typedef struct OPENSSL_dir_context_st OPENSSL_DIR_CTX; diff --git a/crypto/external/bsd/openssl/dist/include/internal/o_str.h b/crypto/external/bsd/openssl/dist/include/internal/o_str.h index 86403c9ee28..15c12e820d2 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/o_str.h +++ b/crypto/external/bsd/openssl/dist/include/internal/o_str.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_O_STR_H -# define HEADER_O_STR_H +#ifndef OSSL_INTERNAL_O_STR_H +# define OSSL_INTERNAL_O_STR_H # include <stddef.h> /* to get size_t */ diff --git a/crypto/external/bsd/openssl/dist/include/internal/refcount.h b/crypto/external/bsd/openssl/dist/include/internal/refcount.h index 42607a731b9..cf9e57d5627 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/refcount.h +++ b/crypto/external/bsd/openssl/dist/include/internal/refcount.h @@ -6,8 +6,8 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -#ifndef HEADER_INTERNAL_REFCOUNT_H -# define HEADER_INTERNAL_REFCOUNT_H +#ifndef OSSL_INTERNAL_REFCOUNT_H +# define OSSL_INTERNAL_REFCOUNT_H /* Used to checking reference counts, most while doing perl5 stuff :-) */ # if defined(OPENSSL_NO_STDIO) diff --git a/crypto/external/bsd/openssl/dist/include/internal/sockets.h b/crypto/external/bsd/openssl/dist/include/internal/sockets.h index 5bb0355f07e..39186efef20 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/sockets.h +++ b/crypto/external/bsd/openssl/dist/include/internal/sockets.h @@ -8,8 +8,8 @@ */ -#ifndef HEADER_INTERNAL_SOCKETS -# define HEADER_INTERNAL_SOCKETS +#ifndef OSSL_INTERNAL_SOCKETS_H +# define OSSL_INTERNAL_SOCKETS_H # if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) # define NO_SYS_PARAM_H diff --git a/crypto/external/bsd/openssl/dist/include/internal/sslconf.h b/crypto/external/bsd/openssl/dist/include/internal/sslconf.h index d538f8614f5..92c8941d025 100644 --- a/crypto/external/bsd/openssl/dist/include/internal/sslconf.h +++ b/crypto/external/bsd/openssl/dist/include/internal/sslconf.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SSLCONF_H -# define HEADER_SSLCONF_H +#ifndef OSSL_INTERNAL_SSLCONF_H +# define OSSL_INTERNAL_SSLCONF_H typedef struct ssl_conf_cmd_st SSL_CONF_CMD; diff --git a/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_EPILOGUE.H index c350018ad19..ad0a5f56dc9 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_EPILOGUE.H +++ b/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_EPILOGUE.H @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,9 +8,15 @@ */ /* - * This file is only used by HP C on VMS, and is included automatically + * This file is only used by HP C/C++ on VMS, and is included automatically * after each header file from this directory */ +/* + * The C++ compiler doesn't understand these pragmas, even though it + * understands the corresponding command line qualifier. + */ +#ifndef __cplusplus /* restore state. Must correspond to the save in __decc_include_prologue.h */ -#pragma names restore +# pragma names restore +#endif diff --git a/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_PROLOGUE.H index 9a9c777f93f..5f5513e821a 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_PROLOGUE.H +++ b/crypto/external/bsd/openssl/dist/include/openssl/__DECC_INCLUDE_PROLOGUE.H @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,13 +8,19 @@ */ /* - * This file is only used by HP C on VMS, and is included automatically + * This file is only used by HP C/C++ on VMS, and is included automatically * after each header file from this directory */ +/* + * The C++ compiler doesn't understand these pragmas, even though it + * understands the corresponding command line qualifier. + */ +#ifndef __cplusplus /* save state */ -#pragma names save +# pragma names save /* have the compiler shorten symbols larger than 31 chars to 23 chars * followed by a 8 hex char CRC */ -#pragma names as_is,shortened +# pragma names as_is,shortened +#endif diff --git a/crypto/external/bsd/openssl/dist/include/openssl/bio.h b/crypto/external/bsd/openssl/dist/include/openssl/bio.h index e1fddfb7969..ae559a51050 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/bio.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/bio.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -169,6 +169,7 @@ extern "C" { */ # define BIO_FLAGS_MEM_RDONLY 0x200 # define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; diff --git a/crypto/external/bsd/openssl/dist/include/openssl/ct.h b/crypto/external/bsd/openssl/dist/include/openssl/ct.h index d4262fa0480..ebdba34d677 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/ct.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/ct.h @@ -463,8 +463,6 @@ __owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); /* * Loads the default CT log list into a |store|. - * See internal/cryptlib.h for the environment variable and file path that are - * consulted to find the default file. * Returns 1 if loading is successful, or 0 otherwise. */ __owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); diff --git a/crypto/external/bsd/openssl/dist/include/openssl/dsa.h b/crypto/external/bsd/openssl/dist/include/openssl/dsa.h index 822eff347a2..6d8a18a4ad5 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/dsa.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/dsa.h @@ -162,6 +162,12 @@ DH *DSA_dup_DH(const DSA *r); # define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) # define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) # define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) diff --git a/crypto/external/bsd/openssl/dist/include/openssl/dtls1.h b/crypto/external/bsd/openssl/dist/include/openssl/dtls1.h index a312e386cf9..d55ca9c332d 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/dtls1.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/dtls1.h @@ -43,7 +43,7 @@ extern "C" { # define DTLS1_AL_HEADER_LENGTH 2 -/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ +/* Timeout multipliers */ # define DTLS1_TMO_READ_COUNT 2 # define DTLS1_TMO_WRITE_COUNT 2 diff --git a/crypto/external/bsd/openssl/dist/include/openssl/evp.h b/crypto/external/bsd/openssl/dist/include/openssl/evp.h index 545654a98b1..a411f3f2f94 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/evp.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/evp.h @@ -180,7 +180,7 @@ int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, * if the following flag is set. */ # define EVP_MD_CTX_FLAG_FINALISE 0x0200 -/* NOTE: 0x0400 is reserved for internal usage in evp_int.h */ +/* NOTE: 0x0400 is reserved for internal usage */ EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); @@ -1512,6 +1512,20 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, const char *type, const char *value)); +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); @@ -1617,6 +1631,20 @@ void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, const char *type, const char *value)); +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); diff --git a/crypto/external/bsd/openssl/dist/include/openssl/evperr.h b/crypto/external/bsd/openssl/dist/include/openssl/evperr.h index 6a651f55635..d2b26ea582d 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/evperr.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -160,6 +160,7 @@ int ERR_load_EVP_strings(void); # define EVP_R_INPUT_NOT_INITIALIZED 111 # define EVP_R_INVALID_DIGEST 152 # define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 # define EVP_R_INVALID_KEY 163 # define EVP_R_INVALID_KEY_LENGTH 130 # define EVP_R_INVALID_OPERATION 148 diff --git a/crypto/external/bsd/openssl/dist/include/openssl/lhash.h b/crypto/external/bsd/openssl/dist/include/openssl/lhash.h index 47b99d17fb8..2e42d727d4d 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/lhash.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -120,9 +120,8 @@ void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # define DEFINE_LHASH_OF(type) \ LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ - static ossl_inline LHASH_OF(type) * \ - lh_##type##_new(unsigned long (*hfn)(const type *), \ - int (*cfn)(const type *, const type *)) \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ { \ return (LHASH_OF(type) *) \ OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ diff --git a/crypto/external/bsd/openssl/dist/include/openssl/obj_mac.h b/crypto/external/bsd/openssl/dist/include/openssl/obj_mac.h index 47dafe48d05..483fc0509e1 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/obj_mac.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/obj_mac.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/objects/objects.pl * - * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at @@ -1290,12 +1290,12 @@ #define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L #define SN_ms_smartcard_login "msSmartcardLogin" -#define LN_ms_smartcard_login "Microsoft Smartcardlogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" #define NID_ms_smartcard_login 648 #define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L #define SN_ms_upn "msUPN" -#define LN_ms_upn "Microsoft Universal Principal Name" +#define LN_ms_upn "Microsoft User Principal Name" #define NID_ms_upn 649 #define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L diff --git a/crypto/external/bsd/openssl/dist/include/openssl/ocsp.h b/crypto/external/bsd/openssl/dist/include/openssl/ocsp.h index 8582fe1ee1a..4d759a49de4 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/ocsp.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/ocsp.h @@ -123,7 +123,7 @@ typedef struct ocsp_service_locator_st OCSP_SERVICELOC; (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST, \ bp,(char **)(x),cb,NULL) -# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb)(OCSP_RESPONSE *)PEM_ASN1_read_bio(\ +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio(\ (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ bp,(char **)(x),cb,NULL) diff --git a/crypto/external/bsd/openssl/dist/include/openssl/opensslv.h b/crypto/external/bsd/openssl/dist/include/openssl/opensslv.h index c28e632c442..17d271f54c7 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/opensslv.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/opensslv.h @@ -1,5 +1,5 @@ /* - * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,8 +39,8 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x1010104fL -# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1d 10 Sep 2019" +# define OPENSSL_VERSION_NUMBER 0x1010107fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1g 21 Apr 2020" /*- * The macros below are to be used for shared library (.so, .dll, ...) diff --git a/crypto/external/bsd/openssl/dist/include/openssl/ossl_typ.h b/crypto/external/bsd/openssl/dist/include/openssl/ossl_typ.h index 7993ca28f3d..e0edfaaf476 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/ossl_typ.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/ossl_typ.h @@ -109,6 +109,7 @@ typedef struct dsa_method DSA_METHOD; typedef struct rsa_st RSA; typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; typedef struct ec_key_st EC_KEY; typedef struct ec_key_method_st EC_KEY_METHOD; diff --git a/crypto/external/bsd/openssl/dist/include/openssl/randerr.h b/crypto/external/bsd/openssl/dist/include/openssl/randerr.h index 70d1a17a4c6..79d57905e3c 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/randerr.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/randerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,7 @@ int ERR_load_RAND_strings(void); /* * RAND function codes. */ +# define RAND_F_DATA_COLLECT_METHOD 127 # define RAND_F_DRBG_BYTES 101 # define RAND_F_DRBG_GET_ENTROPY 105 # define RAND_F_DRBG_SETUP 117 @@ -46,6 +47,7 @@ int ERR_load_RAND_strings(void); # define RAND_F_RAND_POOL_BYTES_NEEDED 115 # define RAND_F_RAND_POOL_GROW 125 # define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 # define RAND_F_RAND_WRITE_FILE 112 /* diff --git a/crypto/external/bsd/openssl/dist/include/openssl/rsa.h b/crypto/external/bsd/openssl/dist/include/openssl/rsa.h index cdce1264eb5..5e76365c0df 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/rsa.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/rsa.h @@ -224,6 +224,7 @@ const BIGNUM *RSA_get0_q(const RSA *d); const BIGNUM *RSA_get0_dmp1(const RSA *r); const BIGNUM *RSA_get0_dmq1(const RSA *r); const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); void RSA_clear_flags(RSA *r, int flags); int RSA_test_flags(const RSA *r, int flags); void RSA_set_flags(RSA *r, int flags); @@ -279,14 +280,14 @@ int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) -typedef struct rsa_pss_params_st { +struct rsa_pss_params_st { X509_ALGOR *hashAlgorithm; X509_ALGOR *maskGenAlgorithm; ASN1_INTEGER *saltLength; ASN1_INTEGER *trailerField; /* Decoded hash algorithm from maskGenAlgorithm */ X509_ALGOR *maskHash; -} RSA_PSS_PARAMS; +}; DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) diff --git a/crypto/external/bsd/openssl/dist/include/openssl/safestack.h b/crypto/external/bsd/openssl/dist/include/openssl/safestack.h index 90f1d10645f..f74c759c1d4 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/safestack.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/safestack.h @@ -28,7 +28,7 @@ extern "C" { { \ return OPENSSL_sk_num((const OPENSSL_STACK *)(const void *)sk); \ } \ - static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1)*sk, int idx) \ { \ return (t2 *)(void *)OPENSSL_sk_value((const OPENSSL_STACK *)(const void *)sk, idx); \ } \ diff --git a/crypto/external/bsd/openssl/dist/include/openssl/sslerr.h b/crypto/external/bsd/openssl/dist/include/openssl/sslerr.h index 3d6850dea36..82983d3c1e9 100644 --- a/crypto/external/bsd/openssl/dist/include/openssl/sslerr.h +++ b/crypto/external/bsd/openssl/dist/include/openssl/sslerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -88,6 +88,7 @@ int ERR_load_SSL_strings(void); # define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 # define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 # define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 # define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 # define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 # define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 diff --git a/crypto/external/bsd/openssl/dist/ssl/bio_ssl.c b/crypto/external/bsd/openssl/dist/ssl/bio_ssl.c index d1876d8b8c1..ab9e6668cd5 100644 --- a/crypto/external/bsd/openssl/dist/ssl/bio_ssl.c +++ b/crypto/external/bsd/openssl/dist/ssl/bio_ssl.c @@ -14,7 +14,7 @@ #include <openssl/crypto.h> #include "internal/bio.h" #include <openssl/err.h> -#include "ssl_locl.h" +#include "ssl_local.h" static int ssl_write(BIO *h, const char *buf, size_t size, size_t *written); static int ssl_read(BIO *b, char *buf, size_t size, size_t *readbytes); diff --git a/crypto/external/bsd/openssl/dist/ssl/d1_lib.c b/crypto/external/bsd/openssl/dist/ssl/d1_lib.c index fcda3275473..2a15ee8ad96 100644 --- a/crypto/external/bsd/openssl/dist/ssl/d1_lib.c +++ b/crypto/external/bsd/openssl/dist/ssl/d1_lib.c @@ -11,7 +11,7 @@ #include <stdio.h> #include <openssl/objects.h> #include <openssl/rand.h> -#include "ssl_locl.h" +#include "ssl_local.h" static void get_current_time(struct timeval *t); static int dtls1_handshake_write(SSL *s); diff --git a/crypto/external/bsd/openssl/dist/ssl/d1_msg.c b/crypto/external/bsd/openssl/dist/ssl/d1_msg.c index 6365b365e7f..8a31064ae13 100644 --- a/crypto/external/bsd/openssl/dist/ssl/d1_msg.c +++ b/crypto/external/bsd/openssl/dist/ssl/d1_msg.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ssl_locl.h" +#include "ssl_local.h" int dtls1_write_app_data_bytes(SSL *s, int type, const void *buf_, size_t len, size_t *written) diff --git a/crypto/external/bsd/openssl/dist/ssl/d1_srtp.c b/crypto/external/bsd/openssl/dist/ssl/d1_srtp.c index ff8f0c5712d..c05a77e3466 100644 --- a/crypto/external/bsd/openssl/dist/ssl/d1_srtp.c +++ b/crypto/external/bsd/openssl/dist/ssl/d1_srtp.c @@ -15,7 +15,7 @@ #include <stdio.h> #include <openssl/objects.h> -#include "ssl_locl.h" +#include "ssl_local.h" #ifndef OPENSSL_NO_SRTP diff --git a/crypto/external/bsd/openssl/dist/ssl/methods.c b/crypto/external/bsd/openssl/dist/ssl/methods.c index 348efe467db..c5e8898364c 100644 --- a/crypto/external/bsd/openssl/dist/ssl/methods.c +++ b/crypto/external/bsd/openssl/dist/ssl/methods.c @@ -9,7 +9,7 @@ #include <stdio.h> #include <openssl/objects.h> -#include "ssl_locl.h" +#include "ssl_local.h" /*- * TLS/SSLv3 methods diff --git a/crypto/external/bsd/openssl/dist/ssl/packet.c b/crypto/external/bsd/openssl/dist/ssl/packet.c index 95031430ed6..1ddde969f3b 100644 --- a/crypto/external/bsd/openssl/dist/ssl/packet.c +++ b/crypto/external/bsd/openssl/dist/ssl/packet.c @@ -8,7 +8,7 @@ */ #include "internal/cryptlib.h" -#include "packet_locl.h" +#include "packet_local.h" #include <openssl/sslerr.h> #define DEFAULT_BUF_SIZE 256 diff --git a/crypto/external/bsd/openssl/dist/ssl/packet_locl.h b/crypto/external/bsd/openssl/dist/ssl/packet_local.h index 860360b8b23..1b6c2fb9bc3 100644 --- a/crypto/external/bsd/openssl/dist/ssl/packet_locl.h +++ b/crypto/external/bsd/openssl/dist/ssl/packet_local.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_PACKET_LOCL_H -# define HEADER_PACKET_LOCL_H +#ifndef OSSL_SSL_PACKET_LOCAL_H +# define OSSL_SSL_PACKET_LOCAL_H # include <string.h> # include <openssl/bn.h> @@ -871,4 +871,4 @@ unsigned char *WPACKET_get_curr(WPACKET *pkt); /* Release resources in a WPACKET if a failure has occurred. */ void WPACKET_cleanup(WPACKET *pkt); -#endif /* HEADER_PACKET_LOCL_H */ +#endif /* OSSL_SSL_PACKET_LOCAL_H */ diff --git a/crypto/external/bsd/openssl/dist/ssl/pqueue.c b/crypto/external/bsd/openssl/dist/ssl/pqueue.c index 548a7a443d9..758440217d4 100644 --- a/crypto/external/bsd/openssl/dist/ssl/pqueue.c +++ b/crypto/external/bsd/openssl/dist/ssl/pqueue.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/bn.h> struct pqueue_st { diff --git a/crypto/external/bsd/openssl/dist/ssl/record/README b/crypto/external/bsd/openssl/dist/ssl/record/README index 987e9fd305d..630fe8027af 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/README +++ b/crypto/external/bsd/openssl/dist/ssl/record/README @@ -12,7 +12,7 @@ of these components is defined by: 3) A set of accessor macros All struct definitions are in record.h. The functions and macros are either -defined in record.h or record_locl.h dependent on whether they are intended to +defined in record.h or record_local.h dependent on whether they are intended to be private to the record layer, or whether they form part of the API to the rest of libssl. @@ -55,7 +55,7 @@ Conceptually it looks like this: || rec_layer_d1.c || ||____________________|| |______________________| - record_locl.h ^ ^ ^ + record_local.h ^ ^ ^ _________________| | |_________________ | | | _____V_________ ______V________ _______V________ diff --git a/crypto/external/bsd/openssl/dist/ssl/record/dtls1_bitmap.c b/crypto/external/bsd/openssl/dist/ssl/record/dtls1_bitmap.c index 5923c53717c..8167b418340 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/dtls1_bitmap.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/dtls1_bitmap.c @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#include "../ssl_locl.h" -#include "record_locl.h" +#include "../ssl_local.h" +#include "record_local.h" /* mod 128 saturating subtract of two 64-bit values in big-endian order */ static int satsub64be(const unsigned char *v1, const unsigned char *v2) diff --git a/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_d1.c b/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_d1.c index cb5d54ef5a8..73ca8a6ee4b 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_d1.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_d1.c @@ -9,11 +9,11 @@ #include <stdio.h> #include <errno.h> -#include "../ssl_locl.h" +#include "../ssl_local.h" #include <openssl/evp.h> #include <openssl/buffer.h> -#include "record_locl.h" -#include "../packet_locl.h" +#include "record_local.h" +#include "../packet_local.h" #include "internal/cryptlib.h" int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl) diff --git a/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_s3.c b/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_s3.c index 982a06089c1..b2a7a47eb07 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_s3.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/rec_layer_s3.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,15 +10,15 @@ #include <stdio.h> #include <limits.h> #include <errno.h> -#include "../ssl_locl.h" +#include "../ssl_local.h" #include <openssl/evp.h> #include <openssl/buffer.h> #include <openssl/rand.h> -#include "record_locl.h" -#include "../packet_locl.h" +#include "record_local.h" +#include "../packet_local.h" #if defined(OPENSSL_SMALL_FOOTPRINT) || \ - !( defined(AES_ASM) && ( \ + !( defined(AESNI_ASM) && ( \ defined(__x86_64) || defined(__x86_64__) || \ defined(_M_AMD64) || defined(_M_X64) ) \ ) diff --git a/crypto/external/bsd/openssl/dist/ssl/record/record_locl.h b/crypto/external/bsd/openssl/dist/ssl/record/record_local.h index 5e8dd7f7044..5e8dd7f7044 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/record_locl.h +++ b/crypto/external/bsd/openssl/dist/ssl/record/record_local.h diff --git a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_buffer.c b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_buffer.c index 53bd4cb190d..605f8f9b75b 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_buffer.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_buffer.c @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#include "../ssl_locl.h" -#include "record_locl.h" +#include "../ssl_local.h" +#include "record_local.h" void SSL3_BUFFER_set_data(SSL3_BUFFER *b, const unsigned char *d, size_t n) { diff --git a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record.c b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record.c index e59ac5a6767..ab5d22aa10c 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,10 +7,10 @@ * https://www.openssl.org/source/license.html */ -#include "../ssl_locl.h" -#include "internal/constant_time_locl.h" +#include "../ssl_local.h" +#include "internal/constant_time.h" #include <openssl/rand.h> -#include "record_locl.h" +#include "record_local.h" #include "internal/cryptlib.h" static const unsigned char ssl3_pad_1[48] = { @@ -559,7 +559,7 @@ int ssl3_get_record(SSL *s) RECORD_LAYER_reset_read_sequence(&s->rlayer); return 1; } - SSLfatal(s, SSL_AD_DECRYPTION_FAILED, SSL_F_SSL3_GET_RECORD, + SSLfatal(s, SSL_AD_BAD_RECORD_MAC, SSL_F_SSL3_GET_RECORD, SSL_R_BLOCK_CIPHER_PAD_IS_WRONG); return -1; } @@ -837,7 +837,7 @@ int ssl3_do_compress(SSL *ssl, SSL3_RECORD *wr) * SSLfatal() for internal errors, but not otherwise. * * Returns: - * 0: (in non-constant time) if the record is publically invalid (i.e. too + * 0: (in non-constant time) if the record is publicly invalid (i.e. too * short etc). * 1: if the record's padding is valid / the encryption was successful. * -1: if the record's padding is invalid or, if sending, an internal error @@ -928,7 +928,7 @@ int ssl3_enc(SSL *s, SSL3_RECORD *inrecs, size_t n_recs, int sending) * internal errors, but not otherwise. * * Returns: - * 0: (in non-constant time) if the record is publically invalid (i.e. too + * 0: (in non-constant time) if the record is publicly invalid (i.e. too * short etc). * 1: if the record's padding is valid / the encryption was successful. * -1: if the record's padding/AEAD-authenticator is invalid or, if sending, @@ -1075,7 +1075,7 @@ int tls1_enc(SSL *s, SSL3_RECORD *recs, size_t n_recs, int sending) } else if ((bs != 1) && sending) { padnum = bs - (reclen[ctr] % bs); - /* Add weird padding of upto 256 bytes */ + /* Add weird padding of up to 256 bytes */ if (padnum > MAX_PADDING) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS1_ENC, @@ -1610,6 +1610,7 @@ int dtls1_process_record(SSL *s, DTLS1_BITMAP *bitmap) int imac_size; size_t mac_size; unsigned char md[EVP_MAX_MD_SIZE]; + size_t max_plain_length = SSL3_RT_MAX_PLAIN_LENGTH; rr = RECORD_LAYER_get_rrec(&s->rlayer); sess = s->session; @@ -1669,7 +1670,7 @@ int dtls1_process_record(SSL *s, DTLS1_BITMAP *bitmap) enc_err = s->method->ssl3_enc->enc(s, rr, 1, 0); /*- * enc_err is: - * 0: (in non-constant time) if the record is publically invalid. + * 0: (in non-constant time) if the record is publicly invalid. * 1: if the padding is valid * -1: if the padding is invalid */ @@ -1782,7 +1783,12 @@ int dtls1_process_record(SSL *s, DTLS1_BITMAP *bitmap) } } - if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) { + /* use current Max Fragment Length setting if applicable */ + if (s->session != NULL && USE_MAX_FRAGMENT_LENGTH_EXT(s->session)) + max_plain_length = GET_MAX_FRAGMENT_LENGTH(s->session); + + /* send overflow if the plaintext is too long now it has passed MAC */ + if (rr->length > max_plain_length) { SSLfatal(s, SSL_AD_RECORD_OVERFLOW, SSL_F_DTLS1_PROCESS_RECORD, SSL_R_DATA_LENGTH_TOO_LONG); return 0; @@ -1926,7 +1932,7 @@ int dtls1_get_record(SSL *s) /* If received packet overflows own-client Max Fragment Length setting */ if (s->session != NULL && USE_MAX_FRAGMENT_LENGTH_EXT(s->session) - && rr->length > GET_MAX_FRAGMENT_LENGTH(s->session)) { + && rr->length > GET_MAX_FRAGMENT_LENGTH(s->session) + SSL3_RT_MAX_ENCRYPTED_OVERHEAD) { /* record too long, silently discard it */ rr->length = 0; rr->read = 1; diff --git a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record_tls13.c b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record_tls13.c index a11ed483e66..ab50e376249 100644 --- a/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record_tls13.c +++ b/crypto/external/bsd/openssl/dist/ssl/record/ssl3_record_tls13.c @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#include "../ssl_locl.h" -#include "record_locl.h" +#include "../ssl_local.h" +#include "record_local.h" #include "internal/cryptlib.h" /*- @@ -16,7 +16,7 @@ * internal errors, but not otherwise. * * Returns: - * 0: (in non-constant time) if the record is publically invalid (i.e. too + * 0: (in non-constant time) if the record is publicly invalid (i.e. too * short etc). * 1: if the record encryption was successful. * -1: if the record's AEAD-authenticator is invalid or, if sending, diff --git a/crypto/external/bsd/openssl/dist/ssl/s3_cbc.c b/crypto/external/bsd/openssl/dist/ssl/s3_cbc.c index 8377d7fe13d..aa7d63f84a9 100644 --- a/crypto/external/bsd/openssl/dist/ssl/s3_cbc.c +++ b/crypto/external/bsd/openssl/dist/ssl/s3_cbc.c @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#include "internal/constant_time_locl.h" -#include "ssl_locl.h" +#include "internal/constant_time.h" +#include "ssl_local.h" #include "internal/cryptlib.h" #include <openssl/md5.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/s3_enc.c b/crypto/external/bsd/openssl/dist/ssl/s3_enc.c index 2e185e9fba9..8a89f512fe6 100644 --- a/crypto/external/bsd/openssl/dist/ssl/s3_enc.c +++ b/crypto/external/bsd/openssl/dist/ssl/s3_enc.c @@ -9,7 +9,7 @@ */ #include <stdio.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/evp.h> #include <openssl/md5.h> #include "internal/cryptlib.h" diff --git a/crypto/external/bsd/openssl/dist/ssl/s3_lib.c b/crypto/external/bsd/openssl/dist/ssl/s3_lib.c index 066bf47221e..a987604bcd0 100644 --- a/crypto/external/bsd/openssl/dist/ssl/s3_lib.c +++ b/crypto/external/bsd/openssl/dist/ssl/s3_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -12,7 +12,7 @@ #include <stdio.h> #include <openssl/objects.h> #include "internal/nelem.h" -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/md5.h> #include <openssl/dh.h> #include <openssl/rand.h> @@ -4639,7 +4639,7 @@ int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen, OPENSSL_clear_free(s->s3->tmp.psk, psklen); s->s3->tmp.psk = NULL; if (!s->method->ssl3_enc->generate_master_secret(s, - s->session->master_key,pskpms, pskpmslen, + s->session->master_key, pskpms, pskpmslen, &s->session->master_key_length)) { OPENSSL_clear_free(pskpms, pskpmslen); /* SSLfatal() already called */ diff --git a/crypto/external/bsd/openssl/dist/ssl/s3_msg.c b/crypto/external/bsd/openssl/dist/ssl/s3_msg.c index 42382547fb2..339fb2774a6 100644 --- a/crypto/external/bsd/openssl/dist/ssl/s3_msg.c +++ b/crypto/external/bsd/openssl/dist/ssl/s3_msg.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ssl_locl.h" +#include "ssl_local.h" int ssl3_do_change_cipher_spec(SSL *s) { diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_asn1.c b/crypto/external/bsd/openssl/dist/ssl/ssl_asn1.c index b56c5e96c53..799fee771ba 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_asn1.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_asn1.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <stdlib.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/asn1t.h> #include <openssl/x509.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_cert.c b/crypto/external/bsd/openssl/dist/ssl/ssl_cert.c index 9df9fb96778..5d3e83f3289 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_cert.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_cert.c @@ -20,7 +20,7 @@ #include <openssl/bn.h> #include <openssl/crypto.h> #include "internal/refcount.h" -#include "ssl_locl.h" +#include "ssl_local.h" #include "ssl_cert_table.h" #include "internal/thread_once.h" @@ -601,14 +601,6 @@ static unsigned long xname_hash(const X509_NAME *a) return X509_NAME_hash((X509_NAME *)a); } -/** - * Load CA certs from a file into a ::STACK. Note that it is somewhat misnamed; - * it doesn't really have anything to do with clients (except that a common use - * for a stack of CAs is to send it to the client). Actually, it doesn't have - * much to do with CAs, either, since it will load any old cert. - * \param file the file containing one or more certs. - * \return a ::STACK containing the certs. - */ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file) { BIO *in = BIO_new(BIO_s_file()); @@ -666,15 +658,6 @@ STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file) return ret; } -/** - * Add a file of certs to a stack. - * \param stack the stack to add to. - * \param file the file to add from. All certs in this file that are not - * already in the stack will be added. - * \return 1 for success, 0 for failure. Note that in the case of failure some - * certs may have been added to \c stack. - */ - int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, const char *file) { @@ -725,17 +708,6 @@ int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, return ret; } -/** - * Add a directory of certs to a stack. - * \param stack the stack to append to. - * \param dir the directory to append from. All files in this directory will be - * examined as potential certs. Any that are acceptable to - * SSL_add_dir_cert_subjects_to_stack() that are not already in the stack will be - * included. - * \return 1 for success, 0 for failure. Note that in the case of failure some - * certs may have been added to \c stack. - */ - int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, const char *dir) { diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_ciph.c b/crypto/external/bsd/openssl/dist/ssl/ssl_ciph.c index 27a1b2ec68b..735a483c644 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_ciph.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_ciph.c @@ -17,7 +17,7 @@ #include <openssl/crypto.h> #include <openssl/conf.h> #include "internal/nelem.h" -#include "ssl_locl.h" +#include "ssl_local.h" #include "internal/thread_once.h" #include "internal/cryptlib.h" @@ -92,7 +92,7 @@ static CRYPTO_ONCE ssl_load_builtin_comp_once = CRYPTO_ONCE_STATIC_INIT; /* * Constant SSL_MAX_DIGEST equal to size of digests array should be defined - * in the ssl_locl.h + * in the ssl_local.h */ #define SSL_MD_NUM_IDX SSL_MAX_DIGEST diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_conf.c b/crypto/external/bsd/openssl/dist/ssl/ssl_conf.c index 9c202708d7d..8ef29bb3453 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_conf.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_conf.c @@ -8,7 +8,7 @@ */ #include <stdio.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/conf.h> #include <openssl/objects.h> #include <openssl/dh.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_init.c b/crypto/external/bsd/openssl/dist/ssl/ssl_init.c index f0969fa9b1a..d083d959709 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_init.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_init.c @@ -12,7 +12,7 @@ #include "internal/err.h" #include <openssl/crypto.h> #include <openssl/evp.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include "internal/thread_once.h" static int stopped; diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c b/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c index ac820cf9fe1..7c7e59789cc 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -10,7 +10,7 @@ */ #include <stdio.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/objects.h> #include <openssl/x509v3.h> #include <openssl/rand.h> @@ -2623,31 +2623,85 @@ char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size) return buf; } -/** return a servername extension value if provided in Client Hello, or NULL. - * So far, only host_name types are defined (RFC 3546). +/** + * Return the requested servername (SNI) value. Note that the behaviour varies + * depending on: + * - whether this is called by the client or the server, + * - if we are before or during/after the handshake, + * - if a resumption or normal handshake is being attempted/has occurred + * - whether we have negotiated TLSv1.2 (or below) or TLSv1.3 + * + * Note that only the host_name type is defined (RFC 3546). */ - const char *SSL_get_servername(const SSL *s, const int type) { + /* + * If we don't know if we are the client or the server yet then we assume + * client. + */ + int server = s->handshake_func == NULL ? 0 : s->server; if (type != TLSEXT_NAMETYPE_host_name) return NULL; - /* - * SNI is not negotiated in pre-TLS-1.3 resumption flows, so fake up an - * SNI value to return if we are resuming/resumed. N.B. that we still - * call the relevant callbacks for such resumption flows, and callbacks - * might error out if there is not a SNI value available. - */ - if (s->hit) - return s->session->ext.hostname; + if (server) { + /** + * Server side + * In TLSv1.3 on the server SNI is not associated with the session + * but in TLSv1.2 or below it is. + * + * Before the handshake: + * - return NULL + * + * During/after the handshake (TLSv1.2 or below resumption occurred): + * - If a servername was accepted by the server in the original + * handshake then it will return that servername, or NULL otherwise. + * + * During/after the handshake (TLSv1.2 or below resumption did not occur): + * - The function will return the servername requested by the client in + * this handshake or NULL if none was requested. + */ + if (s->hit && !SSL_IS_TLS13(s)) + return s->session->ext.hostname; + } else { + /** + * Client side + * + * Before the handshake: + * - If a servername has been set via a call to + * SSL_set_tlsext_host_name() then it will return that servername + * - If one has not been set, but a TLSv1.2 resumption is being + * attempted and the session from the original handshake had a + * servername accepted by the server then it will return that + * servername + * - Otherwise it returns NULL + * + * During/after the handshake (TLSv1.2 or below resumption occurred): + * - If the session from the orignal handshake had a servername accepted + * by the server then it will return that servername. + * - Otherwise it returns the servername set via + * SSL_set_tlsext_host_name() (or NULL if it was not called). + * + * During/after the handshake (TLSv1.2 or below resumption did not occur): + * - It will return the servername set via SSL_set_tlsext_host_name() + * (or NULL if it was not called). + */ + if (SSL_in_before(s)) { + if (s->ext.hostname == NULL + && s->session != NULL + && s->session->ssl_version != TLS1_3_VERSION) + return s->session->ext.hostname; + } else { + if (!SSL_IS_TLS13(s) && s->hit && s->session->ext.hostname != NULL) + return s->session->ext.hostname; + } + } + return s->ext.hostname; } int SSL_get_servername_type(const SSL *s) { - if (s->session - && (!s->ext.hostname ? s->session-> - ext.hostname : s->ext.hostname)) + if (SSL_get_servername(s, TLSEXT_NAMETYPE_host_name) != NULL) return TLSEXT_NAMETYPE_host_name; return -1; } diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_locl.h b/crypto/external/bsd/openssl/dist/ssl/ssl_local.h index 25875c9f6d4..8ddbde77296 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_locl.h +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_local.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -9,8 +9,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SSL_LOCL_H -# define HEADER_SSL_LOCL_H +#ifndef OSSL_SSL_LOCAL_H +# define OSSL_SSL_LOCAL_H # include "e_os.h" /* struct timeval for DTLS */ # include <stdlib.h> @@ -30,7 +30,7 @@ # include <openssl/ct.h> # include "record/record.h" # include "statem/statem.h" -# include "packet_locl.h" +# include "packet_local.h" # include "internal/dane.h" # include "internal/refcount.h" # include "internal/tsan_assist.h" @@ -2581,7 +2581,7 @@ __owur int tls_check_sigalg_curve(const SSL *s, int curve); # endif __owur int tls12_check_peer_sigalg(SSL *s, uint16_t, EVP_PKEY *pkey); __owur int ssl_set_client_disabled(SSL *s); -__owur int ssl_cipher_disabled(SSL *s, const SSL_CIPHER *c, int op, int echde); +__owur int ssl_cipher_disabled(const SSL *s, const SSL_CIPHER *c, int op, int echde); __owur int ssl_handshake_hash(SSL *s, unsigned char *out, size_t outlen, size_t *hashlen); diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_mcnf.c b/crypto/external/bsd/openssl/dist/ssl/ssl_mcnf.c index a0e26577144..583df416690 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_mcnf.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_mcnf.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <openssl/conf.h> #include <openssl/ssl.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include "internal/sslconf.h" /* SSL library configuration module. */ diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_rsa.c b/crypto/external/bsd/openssl/dist/ssl/ssl_rsa.c index 172e15f9208..b9693527b3d 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_rsa.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_rsa.c @@ -8,8 +8,8 @@ */ #include <stdio.h> -#include "ssl_locl.h" -#include "packet_locl.h" +#include "ssl_local.h" +#include "packet_local.h" #include <openssl/bio.h> #include <openssl/objects.h> #include <openssl/evp.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c b/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c index 52cfa7ef6d7..40c157bb42f 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_sess.c @@ -13,8 +13,8 @@ #include <openssl/engine.h> #include "internal/refcount.h" #include "internal/cryptlib.h" -#include "ssl_locl.h" -#include "statem/statem_locl.h" +#include "ssl_local.h" +#include "statem/statem_local.h" static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s); static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s); diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_stat.c b/crypto/external/bsd/openssl/dist/ssl/ssl_stat.c index 179513b1a3d..ca51c0331c2 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_stat.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_stat.c @@ -9,7 +9,7 @@ */ #include <stdio.h> -#include "ssl_locl.h" +#include "ssl_local.h" const char *SSL_state_string_long(const SSL *s) { diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_txt.c b/crypto/external/bsd/openssl/dist/ssl/ssl_txt.c index cf6e4c3c057..457bc8b3c20 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_txt.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_txt.c @@ -10,7 +10,7 @@ #include <stdio.h> #include <openssl/buffer.h> -#include "ssl_locl.h" +#include "ssl_local.h" #ifndef OPENSSL_NO_STDIO int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x) diff --git a/crypto/external/bsd/openssl/dist/ssl/ssl_utst.c b/crypto/external/bsd/openssl/dist/ssl/ssl_utst.c index cea1bc2707a..487f56e5393 100644 --- a/crypto/external/bsd/openssl/dist/ssl/ssl_utst.c +++ b/crypto/external/bsd/openssl/dist/ssl/ssl_utst.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ssl_locl.h" +#include "ssl_local.h" #ifndef OPENSSL_NO_UNIT_TEST diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/README b/crypto/external/bsd/openssl/dist/ssl/statem/README index 145c69db8d5..86cc0663729 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/README +++ b/crypto/external/bsd/openssl/dist/ssl/statem/README @@ -40,7 +40,7 @@ Conceptually the state machine component is designed as follows: | | | Core state machine code | |____________________________| - statem_locl.h ^ ^ + statem_local.h ^ ^ _________| |_______ | | _____________|____________ _____________|____________ diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/extensions.c b/crypto/external/bsd/openssl/dist/ssl/statem/extensions.c index 24410991b29..4ef8b417b82 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/extensions.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/extensions.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -10,8 +10,8 @@ #include <string.h> #include "internal/nelem.h" #include "internal/cryptlib.h" -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include "internal/cryptlib.h" static int final_renegotiate(SSL *s, unsigned int context, int sent); @@ -94,7 +94,7 @@ typedef struct extensions_definition_st { /* * Definitions of all built-in extensions. NOTE: Changes in the number or order * of these extensions should be mirrored with equivalent changes to the - * indexes ( TLSEXT_IDX_* ) defined in ssl_locl.h. + * indexes ( TLSEXT_IDX_* ) defined in ssl_local.h. * Each extension has an initialiser, a client and * server side parser and a finaliser. The initialiser is called (if the * extension is relevant to the given context) even if we did not see the @@ -949,8 +949,7 @@ static int final_server_name(SSL *s, unsigned int context, int sent) * was successful. */ if (s->server) { - /* TODO(OpenSSL1.2) revisit !sent case */ - if (sent && ret == SSL_TLSEXT_ERR_OK && (!s->hit || SSL_IS_TLS13(s))) { + if (sent && ret == SSL_TLSEXT_ERR_OK && !s->hit) { /* Only store the hostname in the session if we accepted it. */ OPENSSL_free(s->session->ext.hostname); s->session->ext.hostname = OPENSSL_strdup(s->ext.hostname); @@ -1011,6 +1010,7 @@ static int final_server_name(SSL *s, unsigned int context, int sent) /* TLSv1.3 doesn't have warning alerts so we suppress this */ if (!SSL_IS_TLS13(s)) ssl3_send_alert(s, SSL3_AL_WARNING, altmp); + s->servername_done = 0; return 1; case SSL_TLSEXT_ERR_NOACK: @@ -1449,7 +1449,7 @@ int tls_psk_do_binder(SSL *s, const EVP_MD *md, const unsigned char *msgstart, unsigned char finishedkey[EVP_MAX_MD_SIZE], tmpbinder[EVP_MAX_MD_SIZE]; unsigned char *early_secret; #ifdef CHARSET_EBCDIC - static const unsigned char resumption_label[] = { 0x72, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x00 }; + static const unsigned char resumption_label[] = { 0x72, 0x65, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x00 }; static const unsigned char external_label[] = { 0x65, 0x78, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x00 }; #else static const unsigned char resumption_label[] = "res binder"; diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_clnt.c b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_clnt.c index f0ae642fa09..bcce0f1d953 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_clnt.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_clnt.c @@ -8,9 +8,9 @@ */ #include <openssl/ocsp.h> -#include "../ssl_locl.h" +#include "../ssl_local.h" #include "internal/cryptlib.h" -#include "statem_locl.h" +#include "statem_local.h" EXT_RETURN tls_construct_ctos_renegotiate(SSL *s, WPACKET *pkt, unsigned int context, X509 *x, diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_cust.c b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_cust.c index a4cdc81d68b..a0ba18efa70 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_cust.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_cust.c @@ -10,9 +10,9 @@ /* Custom extension utility functions */ #include <openssl/ct.h> -#include "../ssl_locl.h" +#include "../ssl_local.h" #include "internal/cryptlib.h" -#include "statem_locl.h" +#include "statem_local.h" typedef struct { void *add_arg; diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_srvr.c b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_srvr.c index ab5453f63ec..3b07c6b940f 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/extensions_srvr.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/extensions_srvr.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,8 +8,8 @@ */ #include <openssl/ocsp.h> -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include "internal/cryptlib.h" #define COOKIE_STATE_FORMAT_VERSION 0 @@ -127,6 +127,10 @@ int tls_parse_ctos_server_name(SSL *s, PACKET *pkt, unsigned int context, return 0; } + /* + * In TLSv1.2 and below the SNI is associated with the session. In TLSv1.3 + * we always use the SNI value from the handshake. + */ if (!s->hit || SSL_IS_TLS13(s)) { if (PACKET_remaining(&hostname) > TLSEXT_MAXLEN_host_name) { SSLfatal(s, SSL_AD_UNRECOGNIZED_NAME, @@ -155,8 +159,12 @@ int tls_parse_ctos_server_name(SSL *s, PACKET *pkt, unsigned int context, } s->servername_done = 1; - } - if (s->hit) { + } else { + /* + * In TLSv1.2 and below we should check if the SNI is consistent between + * the initial handshake and the resumption. In TLSv1.3 SNI is not + * associated with the session. + */ /* * TODO(openssl-team): if the SNI doesn't match, we MUST * fall back to a full handshake. @@ -164,9 +172,6 @@ int tls_parse_ctos_server_name(SSL *s, PACKET *pkt, unsigned int context, s->servername_done = (s->session->ext.hostname != NULL) && PACKET_equal(&hostname, s->session->ext.hostname, strlen(s->session->ext.hostname)); - - if (!s->servername_done && s->session->ext.hostname != NULL) - s->ext.early_data_ok = 0; } return 1; @@ -1330,8 +1335,14 @@ EXT_RETURN tls_construct_stoc_server_name(SSL *s, WPACKET *pkt, unsigned int context, X509 *x, size_t chainidx) { - if (s->hit || s->servername_done != 1 - || s->ext.hostname == NULL) + if (s->servername_done != 1) + return EXT_RETURN_NOT_SENT; + + /* + * Prior to TLSv1.3 we ignore any SNI in the current handshake if resuming. + * We just use the servername from the initial handshake. + */ + if (s->hit && !SSL_IS_TLS13(s)) return EXT_RETURN_NOT_SENT; if (!WPACKET_put_bytes_u16(pkt, TLSEXT_TYPE_server_name) diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem.c b/crypto/external/bsd/openssl/dist/ssl/statem/statem.c index e3c5ec00387..20f5bd584e6 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem.c @@ -9,8 +9,8 @@ #include "internal/cryptlib.h" #include <openssl/rand.h> -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include <assert.h> /* diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem_clnt.c b/crypto/external/bsd/openssl/dist/ssl/statem/statem_clnt.c index 6410414fb64..64e392cfbfc 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem_clnt.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem_clnt.c @@ -12,8 +12,8 @@ #include <stdio.h> #include <time.h> #include <assert.h> -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include <openssl/buffer.h> #include <openssl/rand.h> #include <openssl/objects.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem_dtls.c b/crypto/external/bsd/openssl/dist/ssl/statem/statem_dtls.c index b016fa7cff7..8e3fb686ee2 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem_dtls.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem_dtls.c @@ -10,8 +10,8 @@ #include <limits.h> #include <string.h> #include <stdio.h> -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/objects.h> diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem_lib.c b/crypto/external/bsd/openssl/dist/ssl/statem/statem_lib.c index 22e9f0490e2..43d6fd5de94 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem_lib.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -11,8 +11,8 @@ #include <limits.h> #include <string.h> #include <stdio.h> -#include "../ssl_locl.h" -#include "statem_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/objects.h> @@ -169,17 +169,17 @@ static int get_cert_verify_tbs_data(SSL *s, unsigned char *tls13tbs, void **hdata, size_t *hdatalen) { #ifdef CHARSET_EBCDIC - static const char *servercontext = { 0x54, 0x4c, 0x53, 0x20, 0x31, 0x2e, + static const char servercontext[] = { 0x54, 0x4c, 0x53, 0x20, 0x31, 0x2e, 0x33, 0x2c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x00 }; - static const char *clientcontext = { 0x54, 0x4c, 0x53, 0x20, 0x31, 0x2e, + static const char clientcontext[] = { 0x54, 0x4c, 0x53, 0x20, 0x31, 0x2e, 0x33, 0x2c, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x00 }; #else - static const char *servercontext = "TLS 1.3, server CertificateVerify"; - static const char *clientcontext = "TLS 1.3, client CertificateVerify"; + static const char servercontext[] = "TLS 1.3, server CertificateVerify"; + static const char clientcontext[] = "TLS 1.3, client CertificateVerify"; #endif if (SSL_IS_TLS13(s)) { size_t hashlen; @@ -844,9 +844,11 @@ MSG_PROCESS_RETURN tls_process_finished(SSL *s, PACKET *pkt) return MSG_PROCESS_ERROR; } } else { + /* TLS 1.3 gets the secret size from the handshake md */ + size_t dummy; if (!s->method->ssl3_enc->generate_master_secret(s, s->master_secret, s->handshake_secret, 0, - &s->session->master_key_length)) { + &dummy)) { /* SSLfatal() already called */ return MSG_PROCESS_ERROR; } @@ -1033,14 +1035,25 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop) int cleanuphand = s->statem.cleanuphand; if (clearbufs) { - if (!SSL_IS_DTLS(s)) { + if (!SSL_IS_DTLS(s) +#ifndef OPENSSL_NO_SCTP /* - * We don't do this in DTLS because we may still need the init_buf + * RFC6083: SCTP provides a reliable and in-sequence transport service for DTLS + * messages that require it. Therefore, DTLS procedures for retransmissions + * MUST NOT be used. + * Hence the init_buf can be cleared when DTLS over SCTP as transport is used. + */ + || BIO_dgram_is_sctp(SSL_get_wbio(s)) +#endif + ) { + /* + * We don't do this in DTLS over UDP because we may still need the init_buf * in case there are any unexpected retransmits */ BUF_MEM_free(s->init_buf); s->init_buf = NULL; } + if (!ssl_free_wbio_buffer(s)) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_FINISH_HANDSHAKE, ERR_R_INTERNAL_ERROR); diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem_locl.h b/crypto/external/bsd/openssl/dist/ssl/statem/statem_local.h index e27c0c13a2b..e27c0c13a2b 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem_locl.h +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem_local.h diff --git a/crypto/external/bsd/openssl/dist/ssl/statem/statem_srvr.c b/crypto/external/bsd/openssl/dist/ssl/statem/statem_srvr.c index 8cf9c40d15c..14cb27e6db0 100644 --- a/crypto/external/bsd/openssl/dist/ssl/statem/statem_srvr.c +++ b/crypto/external/bsd/openssl/dist/ssl/statem/statem_srvr.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -10,9 +10,9 @@ */ #include <stdio.h> -#include "../ssl_locl.h" -#include "statem_locl.h" -#include "internal/constant_time_locl.h" +#include "../ssl_local.h" +#include "statem_local.h" +#include "internal/constant_time.h" #include "internal/cryptlib.h" #include <openssl/buffer.h> #include <openssl/rand.h> @@ -23,9 +23,24 @@ #include <openssl/dh.h> #include <openssl/bn.h> #include <openssl/md5.h> +#include <openssl/asn1t.h> #define TICKET_NONCE_SIZE 8 +typedef struct { + ASN1_TYPE *kxBlob; + ASN1_TYPE *opaqueBlob; +} GOST_KX_MESSAGE; + +DECLARE_ASN1_FUNCTIONS(GOST_KX_MESSAGE) + +ASN1_SEQUENCE(GOST_KX_MESSAGE) = { + ASN1_SIMPLE(GOST_KX_MESSAGE, kxBlob, ASN1_ANY), + ASN1_OPT(GOST_KX_MESSAGE, opaqueBlob, ASN1_ANY), +} ASN1_SEQUENCE_END(GOST_KX_MESSAGE) + +IMPLEMENT_ASN1_FUNCTIONS(GOST_KX_MESSAGE) + static int tls_construct_encrypted_extensions(SSL *s, WPACKET *pkt); /* @@ -728,7 +743,15 @@ WORK_STATE ossl_statem_server_pre_work(SSL *s, WORK_STATE wst) case TLS_ST_SW_CHANGE: if (SSL_IS_TLS13(s)) break; - s->session->cipher = s->s3->tmp.new_cipher; + /* Writes to s->session are only safe for initial handshakes */ + if (s->session->cipher == NULL) { + s->session->cipher = s->s3->tmp.new_cipher; + } else if (s->session->cipher != s->s3->tmp.new_cipher) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, + SSL_F_OSSL_STATEM_SERVER_PRE_WORK, + ERR_R_INTERNAL_ERROR); + return WORK_ERROR; + } if (!s->method->ssl3_enc->setup_key_block(s)) { /* SSLfatal() already called */ return WORK_ERROR; @@ -932,9 +955,11 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst) } #endif if (SSL_IS_TLS13(s)) { + /* TLS 1.3 gets the secret size from the handshake md */ + size_t dummy; if (!s->method->ssl3_enc->generate_master_secret(s, s->master_secret, s->handshake_secret, 0, - &s->session->master_key_length) + &dummy) || !s->method->ssl3_enc->change_cipher_state(s, SSL3_CC_APPLICATION | SSL3_CHANGE_CIPHER_SERVER_WRITE)) /* SSLfatal() already called */ @@ -3320,9 +3345,9 @@ static int tls_process_cke_gost(SSL *s, PACKET *pkt) const unsigned char *start; size_t outlen = 32, inlen; unsigned long alg_a; - unsigned int asn1id, asn1len; + GOST_KX_MESSAGE *pKX = NULL; + const unsigned char *ptr; int ret = 0; - PACKET encdata; /* Get our certificate private key */ alg_a = s->s3->tmp.new_cipher->algorithm_auth; @@ -3363,42 +3388,33 @@ static int tls_process_cke_gost(SSL *s, PACKET *pkt) if (EVP_PKEY_derive_set_peer(pkey_ctx, client_pub_pkey) <= 0) ERR_clear_error(); } - /* Decrypt session key */ - if (!PACKET_get_1(pkt, &asn1id) - || asn1id != (V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED) - || !PACKET_peek_1(pkt, &asn1len)) { - SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, - SSL_R_DECRYPTION_FAILED); - goto err; + + ptr = PACKET_data(pkt); + /* Some implementations provide extra data in the opaqueBlob + * We have nothing to do with this blob so we just skip it */ + pKX = d2i_GOST_KX_MESSAGE(NULL, &ptr, PACKET_remaining(pkt)); + if (pKX == NULL + || pKX->kxBlob == NULL + || ASN1_TYPE_get(pKX->kxBlob) != V_ASN1_SEQUENCE) { + SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, + SSL_R_DECRYPTION_FAILED); + goto err; } - if (asn1len == 0x81) { - /* - * Long form length. Should only be one byte of length. Anything else - * isn't supported. - * We did a successful peek before so this shouldn't fail - */ - if (!PACKET_forward(pkt, 1)) { - SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, - SSL_R_DECRYPTION_FAILED); - goto err; - } - } else if (asn1len >= 0x80) { - /* - * Indefinite length, or more than one long form length bytes. We don't - * support it - */ - SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, + + if (!PACKET_forward(pkt, ptr - PACKET_data(pkt))) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, SSL_R_DECRYPTION_FAILED); goto err; - } /* else short form length */ + } - if (!PACKET_as_length_prefixed_1(pkt, &encdata)) { - SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, + if (PACKET_remaining(pkt) != 0) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_CKE_GOST, SSL_R_DECRYPTION_FAILED); goto err; } - inlen = PACKET_remaining(&encdata); - start = PACKET_data(&encdata); + + inlen = pKX->kxBlob->value.sequence->length; + start = pKX->kxBlob->value.sequence->data; if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, start, inlen) <= 0) { @@ -3420,6 +3436,7 @@ static int tls_process_cke_gost(SSL *s, PACKET *pkt) ret = 1; err: EVP_PKEY_CTX_free(pkey_ctx); + GOST_KX_MESSAGE_free(pKX); return ret; #else /* Should never happen */ diff --git a/crypto/external/bsd/openssl/dist/ssl/t1_enc.c b/crypto/external/bsd/openssl/dist/ssl/t1_enc.c index 57fb17a6603..c85c0b0310e 100644 --- a/crypto/external/bsd/openssl/dist/ssl/t1_enc.c +++ b/crypto/external/bsd/openssl/dist/ssl/t1_enc.c @@ -9,7 +9,7 @@ */ #include <stdio.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/comp.h> #include <openssl/evp.h> #include <openssl/kdf.h> @@ -466,7 +466,7 @@ int tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p, unsigned char hash[EVP_MAX_MD_SIZE * 2]; size_t hashlen; /* - * Digest cached records keeping record buffer (if present): this wont + * Digest cached records keeping record buffer (if present): this won't * affect client auth because we're freezing the buffer at the same * point (after client key exchange and before certificate verify) */ diff --git a/crypto/external/bsd/openssl/dist/ssl/t1_lib.c b/crypto/external/bsd/openssl/dist/ssl/t1_lib.c index b482019c4c1..76b4baa3889 100644 --- a/crypto/external/bsd/openssl/dist/ssl/t1_lib.c +++ b/crypto/external/bsd/openssl/dist/ssl/t1_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -18,10 +18,11 @@ #include <openssl/dh.h> #include <openssl/bn.h> #include "internal/nelem.h" -#include "ssl_locl.h" +#include "ssl_local.h" #include <openssl/ct.h> static const SIGALG_LOOKUP *find_sig_alg(SSL *s, X509 *x, EVP_PKEY *pkey); +static int tls12_sigalg_allowed(const SSL *s, int op, const SIGALG_LOOKUP *lu); SSL3_ENC_METHOD const TLSv1_enc_data = { tls1_enc, @@ -849,8 +850,11 @@ static int rsa_pss_check_min_key_size(const RSA *rsa, const SIGALG_LOOKUP *lu) } /* - * Return a signature algorithm for TLS < 1.2 where the signature type - * is fixed by the certificate type. + * Returns a signature algorithm when the peer did not send a list of supported + * signature algorithms. The signature algorithm is fixed for the certificate + * type. |idx| is a certificate type index (SSL_PKEY_*). When |idx| is -1 the + * certificate type from |s| will be used. + * Returns the signature algorithm to use, or NULL on error. */ static const SIGALG_LOOKUP *tls1_get_legacy_sigalg(const SSL *s, int idx) { @@ -893,8 +897,12 @@ static const SIGALG_LOOKUP *tls1_get_legacy_sigalg(const SSL *s, int idx) if (!tls1_lookup_md(lu, NULL)) return NULL; + if (!tls12_sigalg_allowed(s, SSL_SECOP_SIGALG_SUPPORTED, lu)) + return NULL; return lu; } + if (!tls12_sigalg_allowed(s, SSL_SECOP_SIGALG_SUPPORTED, &legacy_rsa_sigalg)) + return NULL; return &legacy_rsa_sigalg; } /* Set peer sigalg based key type */ @@ -984,6 +992,31 @@ int tls_check_sigalg_curve(const SSL *s, int curve) #endif /* + * Return the number of security bits for the signature algorithm, or 0 on + * error. + */ +static int sigalg_security_bits(const SIGALG_LOOKUP *lu) +{ + const EVP_MD *md = NULL; + int secbits = 0; + + if (!tls1_lookup_md(lu, &md)) + return 0; + if (md != NULL) + { + /* Security bits: half digest bits */ + secbits = EVP_MD_size(md) * 4; + } else { + /* Values from https://tools.ietf.org/html/rfc8032#section-8.5 */ + if (lu->sigalg == TLSEXT_SIGALG_ed25519) + secbits = 128; + else if (lu->sigalg == TLSEXT_SIGALG_ed448) + secbits = 224; + } + return secbits; +} + +/* * Check signature algorithm is consistent with sent supported signature * algorithms and if so set relevant digest and signature scheme in * s. @@ -996,6 +1029,7 @@ int tls12_check_peer_sigalg(SSL *s, uint16_t sig, EVP_PKEY *pkey) size_t sent_sigslen, i, cidx; int pkeyid = EVP_PKEY_id(pkey); const SIGALG_LOOKUP *lu; + int secbits = 0; /* Should never happen */ if (pkeyid == -1) @@ -1097,20 +1131,20 @@ int tls12_check_peer_sigalg(SSL *s, uint16_t sig, EVP_PKEY *pkey) SSL_R_UNKNOWN_DIGEST); return 0; } - if (md != NULL) { - /* - * Make sure security callback allows algorithm. For historical - * reasons we have to pass the sigalg as a two byte char array. - */ - sigalgstr[0] = (sig >> 8) & 0xff; - sigalgstr[1] = sig & 0xff; - if (!ssl_security(s, SSL_SECOP_SIGALG_CHECK, - EVP_MD_size(md) * 4, EVP_MD_type(md), - (void *)sigalgstr)) { - SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE, SSL_F_TLS12_CHECK_PEER_SIGALG, - SSL_R_WRONG_SIGNATURE_TYPE); - return 0; - } + /* + * Make sure security callback allows algorithm. For historical + * reasons we have to pass the sigalg as a two byte char array. + */ + sigalgstr[0] = (sig >> 8) & 0xff; + sigalgstr[1] = sig & 0xff; + secbits = sigalg_security_bits(lu); + if (secbits == 0 || + !ssl_security(s, SSL_SECOP_SIGALG_CHECK, secbits, + md != NULL ? EVP_MD_type(md) : NID_undef, + (void *)sigalgstr)) { + SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE, SSL_F_TLS12_CHECK_PEER_SIGALG, + SSL_R_WRONG_SIGNATURE_TYPE); + return 0; } /* Store the sigalg the peer uses */ s->s3->tmp.peer_sigalg = lu; @@ -1176,7 +1210,7 @@ int ssl_set_client_disabled(SSL *s) * * Returns 1 when it's disabled, 0 when enabled. */ -int ssl_cipher_disabled(SSL *s, const SSL_CIPHER *c, int op, int ecdhe) +int ssl_cipher_disabled(const SSL *s, const SSL_CIPHER *c, int op, int ecdhe) { if (c->algorithm_mkey & s->s3->tmp.mask_k || c->algorithm_auth & s->s3->tmp.mask_a) @@ -1556,7 +1590,7 @@ SSL_TICKET_STATUS tls_decrypt_ticket(SSL *s, const unsigned char *etick, } /* Check to see if a signature algorithm is allowed */ -static int tls12_sigalg_allowed(SSL *s, int op, const SIGALG_LOOKUP *lu) +static int tls12_sigalg_allowed(const SSL *s, int op, const SIGALG_LOOKUP *lu) { unsigned char sigalgstr[2]; int secbits; @@ -1617,11 +1651,8 @@ static int tls12_sigalg_allowed(SSL *s, int op, const SIGALG_LOOKUP *lu) } } - if (lu->hash == NID_undef) - return 1; - /* Security bits: half digest bits */ - secbits = EVP_MD_size(ssl_md(lu->hash_idx)) * 4; /* Finally see if security callback allows it */ + secbits = sigalg_security_bits(lu); sigalgstr[0] = (lu->sigalg >> 8) & 0xff; sigalgstr[1] = lu->sigalg & 0xff; return ssl_security(s, op, secbits, lu->hash, (void *)sigalgstr); @@ -2099,7 +2130,7 @@ static int tls1_check_sig_alg(SSL *s, X509 *x, int default_nid) sigalg = use_pc_sigalgs ? tls1_lookup_sigalg(s->s3->tmp.peer_cert_sigalgs[i]) : s->shared_sigalgs[i]; - if (sig_nid == sigalg->sigandhash) + if (sigalg != NULL && sig_nid == sigalg->sigandhash) return 1; } return 0; @@ -2774,6 +2805,26 @@ int tls_choose_sigalg(SSL *s, int fatalerrs) #endif break; } +#ifndef OPENSSL_NO_GOST + /* + * Some Windows-based implementations do not send GOST algorithms indication + * in supported_algorithms extension, so when we have GOST-based ciphersuite, + * we have to assume GOST support. + */ + if (i == s->shared_sigalgslen && s->s3->tmp.new_cipher->algorithm_auth & (SSL_aGOST01 | SSL_aGOST12)) { + if ((lu = tls1_get_legacy_sigalg(s, -1)) == NULL) { + if (!fatalerrs) + return 1; + SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE, + SSL_F_TLS_CHOOSE_SIGALG, + SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM); + return 0; + } else { + i = 0; + sig_idx = lu->sig_idx; + } + } +#endif if (i == s->shared_sigalgslen) { if (!fatalerrs) return 1; diff --git a/crypto/external/bsd/openssl/dist/ssl/t1_trce.c b/crypto/external/bsd/openssl/dist/ssl/t1_trce.c index be3039af382..5c84339314c 100644 --- a/crypto/external/bsd/openssl/dist/ssl/t1_trce.c +++ b/crypto/external/bsd/openssl/dist/ssl/t1_trce.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "ssl_locl.h" +#include "ssl_local.h" #ifndef OPENSSL_NO_SSL_TRACE @@ -1246,8 +1246,9 @@ static int ssl_print_certificates(BIO *bio, const SSL *ssl, int server, while (clen > 0) { if (!ssl_print_certificate(bio, indent + 2, &msg, &clen)) return 0; - if (!ssl_print_extensions(bio, indent + 2, server, SSL3_MT_CERTIFICATE, - &msg, &clen)) + if (SSL_IS_TLS13(ssl) + && !ssl_print_extensions(bio, indent + 2, server, + SSL3_MT_CERTIFICATE, &msg, &clen)) return 0; } diff --git a/crypto/external/bsd/openssl/dist/ssl/tls13_enc.c b/crypto/external/bsd/openssl/dist/ssl/tls13_enc.c index b5f57a02f74..86754dc9677 100644 --- a/crypto/external/bsd/openssl/dist/ssl/tls13_enc.c +++ b/crypto/external/bsd/openssl/dist/ssl/tls13_enc.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -8,7 +8,7 @@ */ #include <stdlib.h> -#include "ssl_locl.h" +#include "ssl_local.h" #include "internal/cryptlib.h" #include <openssl/evp.h> #include <openssl/kdf.h> @@ -44,7 +44,7 @@ int tls13_hkdf_expand(SSL *s, const EVP_MD *md, const unsigned char *secret, * prefix and label + bytes for the label itself + 1 byte length of hash * + bytes for the hash itself */ - unsigned char hkdflabel[sizeof(uint16_t) + sizeof(uint8_t) + + unsigned char hkdflabel[sizeof(uint16_t) + sizeof(uint8_t) + (sizeof(label_prefix) - 1) + TLS13_MAX_LABEL_LEN + 1 + EVP_MAX_MD_SIZE]; WPACKET pkt; diff --git a/crypto/external/bsd/openssl/dist/ssl/tls_srp.c b/crypto/external/bsd/openssl/dist/ssl/tls_srp.c index f94e46b4e87..ede7427ff89 100644 --- a/crypto/external/bsd/openssl/dist/ssl/tls_srp.c +++ b/crypto/external/bsd/openssl/dist/ssl/tls_srp.c @@ -14,7 +14,7 @@ #include <openssl/crypto.h> #include <openssl/rand.h> #include <openssl/err.h> -#include "ssl_locl.h" +#include "ssl_local.h" #ifndef OPENSSL_NO_SRP # include <openssl/srp.h> diff --git a/crypto/external/bsd/openssl/dist/test/README b/crypto/external/bsd/openssl/dist/test/README index 37722e79f39..ebe7784605c 100644 --- a/crypto/external/bsd/openssl/dist/test/README +++ b/crypto/external/bsd/openssl/dist/test/README @@ -114,7 +114,7 @@ Generic form of C test executables int observed; observed = function(); /* Call the code under test */ - if (!TEST_int_equal(observed, 2)) /* Check the result is correct */ + if (!TEST_int_eq(observed, 2)) /* Check the result is correct */ goto end; /* Exit on failure - optional */ testresult = 1; /* Mark the test case a success */ diff --git a/crypto/external/bsd/openssl/dist/test/asn1_internal_test.c b/crypto/external/bsd/openssl/dist/test/asn1_internal_test.c index 63278040b60..865e0584219 100644 --- a/crypto/external/bsd/openssl/dist/test/asn1_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/asn1_internal_test.c @@ -59,7 +59,7 @@ static int test_tbl_standard(void) * ***/ -#include "internal/asn1_int.h" +#include "crypto/asn1.h" #include "../crypto/asn1/standard_methods.h" static int test_standard_methods(void) diff --git a/crypto/external/bsd/openssl/dist/test/asynciotest.c b/crypto/external/bsd/openssl/dist/test/asynciotest.c index 5e85cbb044a..5a12d013444 100644 --- a/crypto/external/bsd/openssl/dist/test/asynciotest.c +++ b/crypto/external/bsd/openssl/dist/test/asynciotest.c @@ -13,7 +13,7 @@ #include <openssl/bio.h> #include <openssl/err.h> -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "ssltestlib.h" #include "testutil.h" diff --git a/crypto/external/bsd/openssl/dist/test/bad_dtls_test.c b/crypto/external/bsd/openssl/dist/test/bad_dtls_test.c index 1c836b9c17c..e06206b6acd 100644 --- a/crypto/external/bsd/openssl/dist/test/bad_dtls_test.c +++ b/crypto/external/bsd/openssl/dist/test/bad_dtls_test.c @@ -37,7 +37,7 @@ #include <openssl/err.h> #include <openssl/rand.h> #include <openssl/kdf.h> -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "internal/nelem.h" #include "testutil.h" diff --git a/crypto/external/bsd/openssl/dist/test/bntest.c b/crypto/external/bsd/openssl/dist/test/bntest.c index 0bd9a06f728..97d08ac0be6 100644 --- a/crypto/external/bsd/openssl/dist/test/bntest.c +++ b/crypto/external/bsd/openssl/dist/test/bntest.c @@ -1634,6 +1634,30 @@ static int file_modsqrt(STANZA *s) return st; } +static int file_gcd(STANZA *s) +{ + BIGNUM *a = NULL, *b = NULL, *gcd = NULL, *ret = NULL; + int st = 0; + + if (!TEST_ptr(a = getBN(s, "A")) + || !TEST_ptr(b = getBN(s, "B")) + || !TEST_ptr(gcd = getBN(s, "GCD")) + || !TEST_ptr(ret = BN_new())) + goto err; + + if (!TEST_true(BN_gcd(ret, a, b, ctx)) + || !equalBN("gcd(A,B)", gcd, ret)) + goto err; + + st = 1; + err: + BN_free(a); + BN_free(b); + BN_free(gcd); + BN_free(ret); + return st; +} + static int test_bn2padded(void) { #if HAVE_BN_PADDED @@ -2352,6 +2376,316 @@ static int test_ctx_consttime_flag(void) return st; } +static int test_gcd_prime(void) +{ + BIGNUM *a = NULL, *b = NULL, *gcd = NULL; + int i, st = 0; + + if (!TEST_ptr(a = BN_new()) + || !TEST_ptr(b = BN_new()) + || !TEST_ptr(gcd = BN_new())) + goto err; + + if (!TEST_true(BN_generate_prime_ex(a, 1024, 0, NULL, NULL, NULL))) + goto err; + for (i = 0; i < NUM0; i++) { + if (!TEST_true(BN_generate_prime_ex(b, 1024, 0, + NULL, NULL, NULL)) + || !TEST_true(BN_gcd(gcd, a, b, ctx)) + || !TEST_true(BN_is_one(gcd))) + goto err; + } + + st = 1; + err: + BN_free(a); + BN_free(b); + BN_free(gcd); + return st; +} + +typedef struct mod_exp_test_st +{ + const char *base; + const char *exp; + const char *mod; + const char *res; +} MOD_EXP_TEST; + +static const MOD_EXP_TEST ModExpTests[] = { + /* original test vectors for rsaz_512_sqr bug, by OSS-Fuzz */ + { + "1166180238001879113042182292626169621106255558914000595999312084" + "4627946820899490684928760491249738643524880720584249698100907201" + "002086675047927600340800371", + "8000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "00000000", + "1340780792684523720980737645613191762604395855615117867483316354" + "3294276330515137663421134775482798690129946803802212663956180562" + "088664022929883876655300863", + "8243904058268085430037326628480645845409758077568738532059032482" + "8294114415890603594730158120426756266457928475330450251339773498" + "26758407619521544102068438" + }, + { + "4974270041410803822078866696159586946995877618987010219312844726" + "0284386121835740784990869050050504348861513337232530490826340663" + "197278031692737429054", + "4974270041410803822078866696159586946995877428188754995041148539" + "1663243362592271353668158565195557417149981094324650322556843202" + "946445882670777892608", + "1340780716511420227215592830971452482815377482627251725537099028" + "4429769497230131760206012644403029349547320953206103351725462999" + "947509743623340557059752191", + "5296244594780707015616522701706118082963369547253192207884519362" + "1767869984947542695665420219028522815539559194793619684334900442" + "49304558011362360473525933" + }, + /* test vectors for rsaz_512_srq bug, with rcx/rbx=1 */ + { /* between first and second iteration */ + "5148719036160389201525610950887605325980251964889646556085286545" + "3931548809178823413169359635978762036512397113080988070677858033" + "36463909753993540214027190", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between second and third iteration */ + "8908340854353752577419678771330460827942371434853054158622636544" + "8151360109722890949471912566649465436296659601091730745087014189" + "2672764191218875181826063", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between third and fourth iteration */ + "3427446396505596330634350984901719674479522569002785244080234738" + "4288743635435746136297299366444548736533053717416735379073185344" + "26985272974404612945608761", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between fourth and fifth iteration */ + "3472743044917564564078857826111874560045331237315597383869652985" + "6919870028890895988478351133601517365908445058405433832718206902" + "4088133164805266956353542", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between fifth and sixth iteration */ + "3608632990153469264412378349742339216742409743898601587274768025" + "0110772032985643555192767717344946174122842255204082586753499651" + "14483434992887431333675068", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between sixth and seventh iteration */ + "8455374370234070242910508226941981520235709767260723212165264877" + "8689064388017521524568434328264431772644802567028663962962025746" + "9283458217850119569539086", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between seventh and eighth iteration */ + "5155371529688532178421209781159131443543419764974688878527112131" + "7446518205609427412336183157918981038066636807317733319323257603" + "04416292040754017461076359", + "1005585594745694782468051874865438459560952436544429503329267108" + "2791323022555160232601405723625177570767523893639864538140315412" + "108959927459825236754563832", + "1005585594745694782468051874865438459560952436544429503329267108" + "2791323022555160232601405723625177570767523893639864538140315412" + "108959927459825236754563833", + "1" + }, + /* test vectors for rsaz_512_srq bug, with rcx/rbx=2 */ + { /* between first and second iteration */ + "3155666506033786929967309937640790361084670559125912405342594979" + "4345142818528956285490897841406338022378565972533508820577760065" + "58494345853302083699912572", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between second and third iteration */ + "3789819583801342198190405714582958759005991915505282362397087750" + "4213544724644823098843135685133927198668818185338794377239590049" + "41019388529192775771488319", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between third and forth iteration */ + "4695752552040706867080542538786056470322165281761525158189220280" + "4025547447667484759200742764246905647644662050122968912279199065" + "48065034299166336940507214", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between forth and fifth iteration */ + "2159140240970485794188159431017382878636879856244045329971239574" + "8919691133560661162828034323196457386059819832804593989740268964" + "74502911811812651475927076", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between fifth and sixth iteration */ + "5239312332984325668414624633307915097111691815000872662334695514" + "5436533521392362443557163429336808208137221322444780490437871903" + "99972784701334569424519255", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between sixth and seventh iteration */ + "1977953647322612860406858017869125467496941904523063466791308891" + "1172796739058531929470539758361774569875505293428856181093904091" + "33788264851714311303725089", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042158", + "6703903964971298549787012499102923063739682910296196688861780721" + "8608820150367734884009371490834517138450159290932430254268769414" + "05973284973216824503042159", + "1" + }, + { /* between seventh and eighth iteration */ + "6456987954117763835533395796948878140715006860263624787492985786" + "8514630216966738305923915688821526449499763719943997120302368211" + "04813318117996225041943964", + "1340780792994259709957402499820584612747936582059239337772356144" + "3721764030073546976801874298166903427690031858186486050853753882" + "811946551499689575296532556", + "1340780792994259709957402499820584612747936582059239337772356144" + "3721764030073546976801874298166903427690031858186486050853753882" + "811946551499689575296532557", + "1" + } +}; + +static int test_mod_exp(int i) +{ + const MOD_EXP_TEST *test = &ModExpTests[i]; + int res = 0; + BIGNUM* result = NULL; + BIGNUM *base = NULL, *exponent = NULL, *modulo = NULL; + char *s = NULL; + + if (!TEST_ptr(result = BN_new()) + || !TEST_true(BN_dec2bn(&base, test->base)) + || !TEST_true(BN_dec2bn(&exponent, test->exp)) + || !TEST_true(BN_dec2bn(&modulo, test->mod))) + goto err; + + if (!TEST_int_eq(BN_mod_exp(result, base, exponent, modulo, ctx), 1)) + goto err; + + if (!TEST_ptr(s = BN_bn2dec(result))) + goto err; + + if (!TEST_mem_eq(s, strlen(s), test->res, strlen(test->res))) + goto err; + + res = 1; + + err: + OPENSSL_free(s); + BN_free(result); + BN_free(base); + BN_free(exponent); + BN_free(modulo); + return res; +} + +static int test_mod_exp_consttime(int i) +{ + const MOD_EXP_TEST *test = &ModExpTests[i]; + int res = 0; + BIGNUM* result = NULL; + BIGNUM *base = NULL, *exponent = NULL, *modulo = NULL; + char *s = NULL; + + if (!TEST_ptr(result = BN_new()) + || !TEST_true(BN_dec2bn(&base, test->base)) + || !TEST_true(BN_dec2bn(&exponent, test->exp)) + || !TEST_true(BN_dec2bn(&modulo, test->mod))) + goto err; + + BN_set_flags(base, BN_FLG_CONSTTIME); + BN_set_flags(exponent, BN_FLG_CONSTTIME); + BN_set_flags(modulo, BN_FLG_CONSTTIME); + + if (!TEST_int_eq(BN_mod_exp(result, base, exponent, modulo, ctx), 1)) + goto err; + + if (!TEST_ptr(s = BN_bn2dec(result))) + goto err; + + if (!TEST_mem_eq(s, strlen(s), test->res, strlen(test->res))) + goto err; + + res = 1; + + err: + OPENSSL_free(s); + BN_free(result); + BN_free(base); + BN_free(exponent); + BN_free(modulo); + return res; +} + static int file_test_run(STANZA *s) { static const FILETEST filetests[] = { @@ -2366,6 +2700,7 @@ static int file_test_run(STANZA *s) {"ModExp", file_modexp}, {"Exp", file_exp}, {"ModSqrt", file_modsqrt}, + {"GCD", file_gcd}, }; int numtests = OSSL_NELEM(filetests); const FILETEST *tp = filetests; @@ -2454,6 +2789,9 @@ int setup_tests(void) #endif ADD_ALL_TESTS(test_is_prime, (int)OSSL_NELEM(primes)); ADD_ALL_TESTS(test_not_prime, (int)OSSL_NELEM(not_primes)); + ADD_TEST(test_gcd_prime); + ADD_ALL_TESTS(test_mod_exp, (int)OSSL_NELEM(ModExpTests)); + ADD_ALL_TESTS(test_mod_exp_consttime, (int)OSSL_NELEM(ModExpTests)); } else { ADD_ALL_TESTS(run_file_tests, n); } diff --git a/crypto/external/bsd/openssl/dist/test/build.info b/crypto/external/bsd/openssl/dist/test/build.info index 1727f286269..200fb8c141a 100644 --- a/crypto/external/bsd/openssl/dist/test/build.info +++ b/crypto/external/bsd/openssl/dist/test/build.info @@ -12,7 +12,7 @@ IF[{- !$disabled{tests} -}] SOURCE[libtestutil.a]=testutil/basic_output.c testutil/output_helpers.c \ testutil/driver.c testutil/tests.c testutil/cb.c testutil/stanza.c \ testutil/format_output.c testutil/tap_bio.c \ - testutil/test_cleanup.c testutil/main.c testutil/init.c \ + testutil/test_cleanup.c testutil/main.c testutil/testutil_init.c \ testutil/random.c INCLUDE[libtestutil.a]=../include DEPEND[libtestutil.a]=../libcrypto @@ -51,7 +51,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN recordlentest drbgtest drbg_cavs_test sslbuffertest \ time_offset_test pemtest ssl_cert_table_internal_test ciphername_test \ servername_test ocspapitest rsa_mp_test fatalerrtest tls13ccstest \ - sysdefaulttest errtest gosttest + sysdefaulttest errtest ssl_ctx_test gosttest SOURCE[versions]=versions.c INCLUDE[versions]=../include @@ -185,7 +185,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN DEPEND[evp_test]=../libcrypto libtestutil.a SOURCE[evp_extra_test]=evp_extra_test.c - INCLUDE[evp_extra_test]=../include ../crypto/include + INCLUDE[evp_extra_test]=../include DEPEND[evp_extra_test]=../libcrypto libtestutil.a SOURCE[igetest]=igetest.c @@ -393,7 +393,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN IF[{- !$disabled{shared} -}] PROGRAMS_NO_INST=shlibloadtest SOURCE[shlibloadtest]=shlibloadtest.c - INCLUDE[shlibloadtest]=../include ../crypto/include + INCLUDE[shlibloadtest]=../include ENDIF IF[{- $disabled{shared} -}] @@ -463,15 +463,15 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN ENDIF SOURCE[poly1305_internal_test]=poly1305_internal_test.c - INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include + INCLUDE[poly1305_internal_test]=.. ../include DEPEND[poly1305_internal_test]=../libcrypto.a libtestutil.a SOURCE[chacha_internal_test]=chacha_internal_test.c - INCLUDE[chacha_internal_test]=.. ../include ../crypto/include + INCLUDE[chacha_internal_test]=.. ../include DEPEND[chacha_internal_test]=../libcrypto.a libtestutil.a SOURCE[asn1_internal_test]=asn1_internal_test.c - INCLUDE[asn1_internal_test]=.. ../include ../crypto/include + INCLUDE[asn1_internal_test]=.. ../include DEPEND[asn1_internal_test]=../libcrypto.a libtestutil.a SOURCE[modes_internal_test]=modes_internal_test.c @@ -491,23 +491,23 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN DEPEND[wpackettest]=../libcrypto ../libssl.a libtestutil.a SOURCE[ctype_internal_test]=ctype_internal_test.c - INCLUDE[ctype_internal_test]=.. ../crypto/include ../include + INCLUDE[ctype_internal_test]=.. ../include DEPEND[ctype_internal_test]=../libcrypto.a libtestutil.a SOURCE[siphash_internal_test]=siphash_internal_test.c - INCLUDE[siphash_internal_test]=.. ../include ../crypto/include + INCLUDE[siphash_internal_test]=.. ../include DEPEND[siphash_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_internal_test]=sm2_internal_test.c - INCLUDE[sm2_internal_test]=../include ../crypto/include + INCLUDE[sm2_internal_test]=../include DEPEND[sm2_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm4_internal_test]=sm4_internal_test.c - INCLUDE[sm4_internal_test]=.. ../include ../crypto/include + INCLUDE[sm4_internal_test]=.. ../include DEPEND[sm4_internal_test]=../libcrypto.a libtestutil.a SOURCE[ec_internal_test]=ec_internal_test.c - INCLUDE[ec_internal_test]=../include ../crypto/ec ../crypto/include + INCLUDE[ec_internal_test]=../include ../crypto/ec DEPEND[ec_internal_test]=../libcrypto.a libtestutil.a SOURCE[curve448_internal_test]=curve448_internal_test.c @@ -560,6 +560,10 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN DEPEND[gosttest]=../libcrypto ../libssl libtestutil.a ENDIF + SOURCE[ssl_ctx_test]=ssl_ctx_test.c + INCLUDE[ssl_ctx_test]=../include + DEPEND[ssl_ctx_test]=../libcrypto ../libssl libtestutil.a + {- use File::Spec::Functions; use File::Basename; diff --git a/crypto/external/bsd/openssl/dist/test/certs/ee-pathlen.pem b/crypto/external/bsd/openssl/dist/test/certs/ee-pathlen.pem new file mode 100644 index 00000000000..0bcae1d7bdb --- /dev/null +++ b/crypto/external/bsd/openssl/dist/test/certs/ee-pathlen.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICszCCAZugAwIBAgIBAjANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDDAJDQTAg +Fw0yMDA0MDMwODA0MTVaGA8yMTIwMDQwNDA4MDQxNVowGTEXMBUGA1UEAwwOc2Vy +dmVyLmV4YW1wbGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCo/4lY +YYWu3tssD9Vz++K3qBt6dWAr1H08c3a1rt6TL38kkG3JHPSKOM2fooAWVsu0LLuT +5Rcf/w3GQ/4xNPgo2HXpo7uIgu+jcuJTYgVFTeAxl++qnRDSWA2eBp4yuxsIVl1l +Dz9mjsI2oBH/wFk1/Ukc3RxCMwZ4rgQ4I+XndWfTlK1aqUAfrFkQ9QzBZK1KxMY1 +U7OWaoIbFYvRmavknm+UqtKW5Vf7jJFkijwkFsbSGb6CYBM7YrDtPh2zyvlr3zG5 +ep5LR2inKcc/SuIiJ7TvkGPX79ByST5brbkb1Ctvhmjd1XMSuEPJ3EEPoqNGT4tn +iIQPYf55NB9KiR+3AgMBAAGjEDAOMAwGA1UdEwQFMAMCAQAwDQYJKoZIhvcNAQEL +BQADggEBAApOUnWWd09I0ts3xa1oK7eakc+fKTF4d7pbGznFNONaCR3KFRgnBVlG +Bm8/oehrrQ28Ad3XPSug34DQQ5kM6JIuaddx50/n4Xkgj8/fgXVA0HXizOJ3QpKC +IojLVajXlQHhpo72VUQuNOha0UxG9daYjS20iXRhanTm9rUz7qQZEugVQCiR0z/f +9NgM7FU9UaSidzH3gZu/Ufc4Ggn6nZV7LM9sf4IUV+KszS1VpcK+9phAmsB6BaAi +cFXvVXZjTNualQgPyPwOD8c+vVCIfIemfF5TZ6fyqpOjprWQAphwrTtfNDSmqRTz +FRhDf+vJERQclgUtg37EgWGKtnNQeRY= +-----END CERTIFICATE----- diff --git a/crypto/external/bsd/openssl/dist/test/certs/root-ed448-cert.pem b/crypto/external/bsd/openssl/dist/test/certs/root-ed448-cert.pem new file mode 100644 index 00000000000..48e293d69d4 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/test/certs/root-ed448-cert.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBeDCB+aADAgECAgEBMAUGAytlcTAVMRMwEQYDVQQDDApSb290IEVkNDQ4MCAX +DTIwMDIwOTEzMjY1NVoYDzIxMjAwMjEwMTMyNjU1WjAVMRMwEQYDVQQDDApSb290 +IEVkNDQ4MEMwBQYDK2VxAzoAbbhuwNA/rdlgdLSyTJ6WaCVNO1gzccKiKW6pCADM +McMBCNiQqWSt4EIbHpqDc+eWoiKbG6t7tjUAo1MwUTAdBgNVHQ4EFgQUVg2aQ+yh +VRhOuW1l19jtgxfTgj8wHwYDVR0jBBgwFoAUVg2aQ+yhVRhOuW1l19jtgxfTgj8w +DwYDVR0TAQH/BAUwAwEB/zAFBgMrZXEDcwCiXlZXyMubWFqLYiLXfKYrurajBMON +lclLrYr57Syd+nAIlgXiF0rGK2PawoMPXVB3VWWSigEb54AImb6tsW42gC+zC6oq +nkPC2FTLXPvqqgGXUpK/OfhPUP9bWw6mcJaIozlyzJD4AyebN9LDrBqCMwA= +-----END CERTIFICATE----- diff --git a/crypto/external/bsd/openssl/dist/test/certs/root-ed448-key.pem b/crypto/external/bsd/openssl/dist/test/certs/root-ed448-key.pem new file mode 100644 index 00000000000..e0c36ff43a5 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/test/certs/root-ed448-key.pem @@ -0,0 +1,4 @@ +-----BEGIN PRIVATE KEY----- +MEcCAQAwBQYDK2VxBDsEOQeryQn6L8gItRarrM0pRHxjNdtaIz3BrWU2mwhLZQaq +8Cm6w5gP6aitAIde7Td3nQ55bIGC5roxFQ== +-----END PRIVATE KEY----- diff --git a/crypto/external/bsd/openssl/dist/test/certs/server-ed448-cert.pem b/crypto/external/bsd/openssl/dist/test/certs/server-ed448-cert.pem index 740f2755497..ba050077c3e 100644 --- a/crypto/external/bsd/openssl/dist/test/certs/server-ed448-cert.pem +++ b/crypto/external/bsd/openssl/dist/test/certs/server-ed448-cert.pem @@ -1,14 +1,11 @@ -----BEGIN CERTIFICATE----- -MIICHTCCAQWgAwIBAgIBAjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdSb290 -IENBMCAXDTE4MDIyNzE1MDcxM1oYDzIxMTgwMjI4MTUwNzEzWjAQMQ4wDAYDVQQD -DAVFZDQ0ODBDMAUGAytlcQM6ABBicYlhG1s3AoG5BFmY3r50lJzjQoER4zwuieEe -QTvKxLEV06vGh79UWO6yQ5FxqmxvM1F/Xw7RAKNfMF0wHQYDVR0OBBYEFAwa1L4m -3pwA8+IEJ7K/4izrjJIHMB8GA1UdIwQYMBaAFHB/Lq6DaFmYBCMqzes+F80k3QFJ -MAkGA1UdEwQCMAAwEAYDVR0RBAkwB4IFRWQ0NDgwDQYJKoZIhvcNAQELBQADggEB -AAugH2aE6VvArnOVjKBtalqtHlx+NCC3+S65sdWc9A9sNgI1ZiN7dn76TKn5d0T7 -NqV8nY1rwQg6WPGrCD6Eh63qhotytqYIxltppb4MOUJcz/Zf0ZwhB5bUfwNB//Ih -5aZT86FpXVuyMnwUTWPcISJqpZiBv95yzZFMpniHFvecvV445ly4TFW5y6VURh40 -Tg4tMgjPTE7ADw+dX4FvnTWY3blxT1GzGxGvqWW4HgP8dOETnjmAwCzN0nUVmH9s -7ybHORcSljcpe0XH6L/K7mbI+r8mVLsAoIzUeDwUdKKJZ2uGEtdhQDmJBp4EjOXE -3qIn3wEQQ6ax4NIwkZihdLI= +MIIBlTCCARWgAwIBAgIBAjAFBgMrZXEwFTETMBEGA1UEAwwKUm9vdCBFZDQ0ODAg +Fw0yMDAyMDkxMzMwMjJaGA8yMTIwMDIxMDEzMzAyMlowEDEOMAwGA1UEAwwFZWQ0 +NDgwQzAFBgMrZXEDOgAQYnGJYRtbNwKBuQRZmN6+dJSc40KBEeM8LonhHkE7ysSx +FdOrxoe/VFjuskORcapsbzNRf18O0QCjdDByMB0GA1UdDgQWBBQMGtS+Jt6cAPPi +BCeyv+Is64ySBzAfBgNVHSMEGDAWgBRWDZpD7KFVGE65bWXX2O2DF9OCPzAJBgNV +HRMEAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBAGA1UdEQQJMAeCBWVkNDQ4MAUG +AytlcQNzABLGZiaU6JPKa9eQ/VsE4HN9XjSogZBKIEHEWwyxrtGvjWiZ5MOnNJmQ +7mX+Y2eJzfZ6MGHc63IlgPdIPFPzInnnAugw297kUNoLTg9SsGYeVGLbI3PNjwFL +mQ3508f1Jobb8qZnf8YFUZrd85aurgoKAA== -----END CERTIFICATE----- diff --git a/crypto/external/bsd/openssl/dist/test/certs/setup.sh b/crypto/external/bsd/openssl/dist/test/certs/setup.sh index 26b2f1ddfe0..bbe4842a518 100755 --- a/crypto/external/bsd/openssl/dist/test/certs/setup.sh +++ b/crypto/external/bsd/openssl/dist/test/certs/setup.sh @@ -154,7 +154,7 @@ openssl x509 -in sca-cert.pem -trustout \ -addtrust anyExtendedKeyUsage -out sca+anyEKU.pem # Primary leaf cert: ee-cert -# ee variants: expired, issuer-key2, issuer-name2 +# ee variants: expired, issuer-key2, issuer-name2, bad-pathlen # trust variants: +serverAuth, -serverAuth, +clientAuth, -clientAuth # purpose variants: client # @@ -163,6 +163,8 @@ openssl x509 -in sca-cert.pem -trustout \ ./mkcert.sh genee server.example ee-key ee-cert2 ca-key2 ca-cert2 ./mkcert.sh genee server.example ee-key ee-name2 ca-key ca-name2 ./mkcert.sh genee -p clientAuth server.example ee-key ee-client ca-key ca-cert +./mkcert.sh genee server.example ee-key ee-pathlen ca-key ca-cert \ + -extfile <(echo "basicConstraints=CA:FALSE,pathlen:0") # openssl x509 -in ee-cert.pem -trustout \ -addtrust serverAuth -out ee+serverAuth.pem @@ -375,3 +377,8 @@ openssl req -new -nodes -subj "/CN=localhost" \ -pkeyopt rsa_pss_keygen_md:sha256 -pkeyopt rsa_pss_keygen_saltlen:32 | \ ./mkcert.sh geneenocsr "Server RSA-PSS restricted cert" \ server-pss-restrict-cert rootkey rootcert + +OPENSSL_SIGALG=ED448 OPENSSL_KEYALG=ed448 ./mkcert.sh genroot "Root Ed448" \ + root-ed448-key root-ed448-cert +OPENSSL_SIGALG=ED448 OPENSSL_KEYALG=ed448 ./mkcert.sh genee ed448 \ + server-ed448-key server-ed448-cert root-ed448-key root-ed448-cert diff --git a/crypto/external/bsd/openssl/dist/test/chacha_internal_test.c b/crypto/external/bsd/openssl/dist/test/chacha_internal_test.c index be440121877..dcb3c23728d 100644 --- a/crypto/external/bsd/openssl/dist/test/chacha_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/chacha_internal_test.c @@ -15,7 +15,7 @@ #include <string.h> #include <openssl/opensslconf.h> #include "testutil.h" -#include "internal/chacha.h" +#include "crypto/chacha.h" static const unsigned int key[] = { 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, diff --git a/crypto/external/bsd/openssl/dist/test/cipher_overhead_test.c b/crypto/external/bsd/openssl/dist/test/cipher_overhead_test.c index f8c6fd738e5..2275fceda0c 100644 --- a/crypto/external/bsd/openssl/dist/test/cipher_overhead_test.c +++ b/crypto/external/bsd/openssl/dist/test/cipher_overhead_test.c @@ -15,7 +15,7 @@ # pragma names as_is,shortened #endif -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" #ifdef __VMS # pragma names restore diff --git a/crypto/external/bsd/openssl/dist/test/clienthellotest.c b/crypto/external/bsd/openssl/dist/test/clienthellotest.c index 862ca9ff6c2..8ae1e4d9c64 100644 --- a/crypto/external/bsd/openssl/dist/test/clienthellotest.c +++ b/crypto/external/bsd/openssl/dist/test/clienthellotest.c @@ -17,7 +17,7 @@ #include <openssl/err.h> #include <time.h> -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "testutil.h" diff --git a/crypto/external/bsd/openssl/dist/test/constant_time_test.c b/crypto/external/bsd/openssl/dist/test/constant_time_test.c index e5e3e497c09..25f53928014 100644 --- a/crypto/external/bsd/openssl/dist/test/constant_time_test.c +++ b/crypto/external/bsd/openssl/dist/test/constant_time_test.c @@ -11,7 +11,7 @@ #include <stdlib.h> #include "internal/nelem.h" -#include "internal/constant_time_locl.h" +#include "internal/constant_time.h" #include "testutil.h" #include "internal/numbers.h" diff --git a/crypto/external/bsd/openssl/dist/test/ctype_internal_test.c b/crypto/external/bsd/openssl/dist/test/ctype_internal_test.c index a4613031fe5..1bb61ab1fc9 100644 --- a/crypto/external/bsd/openssl/dist/test/ctype_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/ctype_internal_test.c @@ -8,7 +8,7 @@ */ #include "testutil.h" -#include "internal/ctype.h" +#include "crypto/ctype.h" #include "internal/nelem.h" #include <ctype.h> #include <stdio.h> diff --git a/crypto/external/bsd/openssl/dist/test/curve448_internal_test.c b/crypto/external/bsd/openssl/dist/test/curve448_internal_test.c index e7d4378527b..4b65ee3fadd 100644 --- a/crypto/external/bsd/openssl/dist/test/curve448_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/curve448_internal_test.c @@ -16,7 +16,7 @@ # pragma names as_is,shortened #endif -#include "curve448_lcl.h" +#include "curve448_local.h" #ifdef __VMS # pragma names restore diff --git a/crypto/external/bsd/openssl/dist/test/drbg_cavs_data.h b/crypto/external/bsd/openssl/dist/test/drbg_cavs_data.h index d673375619d..c04b01298dc 100644 --- a/crypto/external/bsd/openssl/dist/test/drbg_cavs_data.h +++ b/crypto/external/bsd/openssl/dist/test/drbg_cavs_data.h @@ -13,8 +13,8 @@ #include <stddef.h> -#ifndef DRBG_CAVS_DATA_H -# define DRBG_CAVS_DATA_H +#ifndef OSSL_TEST_DRBG_CAVS_DATA_H +# define OSSL_TEST_DRBG_CAVS_DATA_H enum drbg_kat_type { NO_RESEED, diff --git a/crypto/external/bsd/openssl/dist/test/drbg_cavs_test.c b/crypto/external/bsd/openssl/dist/test/drbg_cavs_test.c index eea387b4f95..4573e2b0b79 100644 --- a/crypto/external/bsd/openssl/dist/test/drbg_cavs_test.c +++ b/crypto/external/bsd/openssl/dist/test/drbg_cavs_test.c @@ -15,7 +15,7 @@ #include <openssl/obj_mac.h> #include <openssl/evp.h> #include <openssl/aes.h> -#include "../crypto/rand/rand_lcl.h" +#include "../crypto/rand/rand_local.h" #include "testutil.h" #include "drbg_cavs_data.h" diff --git a/crypto/external/bsd/openssl/dist/test/drbgtest.c b/crypto/external/bsd/openssl/dist/test/drbgtest.c index 7325e2ffa38..2aff4aaf030 100644 --- a/crypto/external/bsd/openssl/dist/test/drbgtest.c +++ b/crypto/external/bsd/openssl/dist/test/drbgtest.c @@ -15,8 +15,8 @@ #include <openssl/obj_mac.h> #include <openssl/evp.h> #include <openssl/aes.h> -#include "../crypto/rand/rand_lcl.h" -#include "../crypto/include/internal/rand_int.h" +#include "../crypto/rand/rand_local.h" +#include "../include/crypto/rand.h" #if defined(_WIN32) # include <windows.h> diff --git a/crypto/external/bsd/openssl/dist/test/dtls_mtu_test.c b/crypto/external/bsd/openssl/dist/test/dtls_mtu_test.c index 3aa519f156b..f20edf02d2f 100644 --- a/crypto/external/bsd/openssl/dist/test/dtls_mtu_test.c +++ b/crypto/external/bsd/openssl/dist/test/dtls_mtu_test.c @@ -18,7 +18,7 @@ #include "testutil.h" /* for SSL_READ_ETM() */ -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" static int debug = 0; diff --git a/crypto/external/bsd/openssl/dist/test/dtlstest.c b/crypto/external/bsd/openssl/dist/test/dtlstest.c index ab4d4c15c08..1d7b105fb6a 100644 --- a/crypto/external/bsd/openssl/dist/test/dtlstest.c +++ b/crypto/external/bsd/openssl/dist/test/dtlstest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -122,7 +122,7 @@ static int test_dtls_unprocessed(int testidx) #define CLI_TO_SRV_EPOCH_0_RECS 3 #define CLI_TO_SRV_EPOCH_1_RECS 1 #if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DH) -# define SRV_TO_CLI_EPOCH_0_RECS 12 +# define SRV_TO_CLI_EPOCH_0_RECS 10 #else /* * In this case we have no ServerKeyExchange message, because we don't have diff --git a/crypto/external/bsd/openssl/dist/test/ec_internal_test.c b/crypto/external/bsd/openssl/dist/test/ec_internal_test.c index 8d3a4fdd67c..4b849312be7 100644 --- a/crypto/external/bsd/openssl/dist/test/ec_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/ec_internal_test.c @@ -10,7 +10,7 @@ #include "internal/nelem.h" #include "testutil.h" #include <openssl/ec.h> -#include "ec_lcl.h" +#include "ec_local.h" #include <openssl/objects.h> static size_t crv_len = 0; diff --git a/crypto/external/bsd/openssl/dist/test/ecdsatest.h b/crypto/external/bsd/openssl/dist/test/ecdsatest.h index 216e66e277e..63fe3190258 100644 --- a/crypto/external/bsd/openssl/dist/test/ecdsatest.h +++ b/crypto/external/bsd/openssl/dist/test/ecdsatest.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef ECDSATEST_CAVS_H -# define ECDSATEST_CAVS_H +#ifndef OSSL_TEST_ECDSATEST_H +# define OSSL_TEST_ECDSATEST_H /*- * NIST CAVP ECDSA KATs: @@ -10211,4 +10211,4 @@ static const ecdsa_cavs_kat_t ecdsa_cavs_kats[] = { "1c8c4343a8ecbf7c4d4e48f7d76d5658bc027c77086ec8b10097deb307d6"} # endif /* OPENSSL_NO_EC2M */ }; -#endif /* ECDSATEST_CAVS_H */ +#endif /* OSSL_TEST_ECDSATEST_H */ diff --git a/crypto/external/bsd/openssl/dist/test/ectest.c b/crypto/external/bsd/openssl/dist/test/ectest.c index 136dc741ebf..5c01cc95dde 100644 --- a/crypto/external/bsd/openssl/dist/test/ectest.c +++ b/crypto/external/bsd/openssl/dist/test/ectest.c @@ -1999,7 +1999,107 @@ static int cardinality_test(int n) BN_CTX_free(ctx); return ret; } -#endif + +/* + * Helper for ec_point_hex2point_test + * + * Self-tests EC_POINT_point2hex() against EC_POINT_hex2point() for the given + * (group,P) pair. + * + * If P is NULL use point at infinity. + */ +static ossl_inline +int ec_point_hex2point_test_helper(const EC_GROUP *group, const EC_POINT *P, + point_conversion_form_t form, + BN_CTX *bnctx) +{ + int ret = 0; + EC_POINT *Q = NULL, *Pinf = NULL; + char *hex = NULL; + + if (P == NULL) { + /* If P is NULL use point at infinity. */ + if (!TEST_ptr(Pinf = EC_POINT_new(group)) + || !TEST_true(EC_POINT_set_to_infinity(group, Pinf))) + goto err; + P = Pinf; + } + + if (!TEST_ptr(hex = EC_POINT_point2hex(group, P, form, bnctx)) + || !TEST_ptr(Q = EC_POINT_hex2point(group, hex, NULL, bnctx)) + || !TEST_int_eq(0, EC_POINT_cmp(group, Q, P, bnctx))) + goto err; + + /* + * The next check is most likely superfluous, as EC_POINT_cmp should already + * cover this. + * Nonetheless it increases the test coverage for EC_POINT_is_at_infinity, + * so we include it anyway! + */ + if (Pinf != NULL + && !TEST_true(EC_POINT_is_at_infinity(group, Q))) + goto err; + + ret = 1; + + err: + EC_POINT_free(Pinf); + OPENSSL_free(hex); + EC_POINT_free(Q); + + return ret; +} + +/* + * This test self-validates EC_POINT_hex2point() and EC_POINT_point2hex() + */ +static int ec_point_hex2point_test(int id) +{ + int ret = 0, nid; + EC_GROUP *group = NULL; + const EC_POINT *G = NULL; + EC_POINT *P = NULL; + BN_CTX * bnctx = NULL; + + /* Do some setup */ + nid = curves[id].nid; + if (!TEST_ptr(bnctx = BN_CTX_new()) + || !TEST_ptr(group = EC_GROUP_new_by_curve_name(nid)) + || !TEST_ptr(G = EC_GROUP_get0_generator(group)) + || !TEST_ptr(P = EC_POINT_dup(G, group))) + goto err; + + if (!TEST_true(ec_point_hex2point_test_helper(group, P, + POINT_CONVERSION_COMPRESSED, + bnctx)) + || !TEST_true(ec_point_hex2point_test_helper(group, NULL, + POINT_CONVERSION_COMPRESSED, + bnctx)) + || !TEST_true(ec_point_hex2point_test_helper(group, P, + POINT_CONVERSION_UNCOMPRESSED, + bnctx)) + || !TEST_true(ec_point_hex2point_test_helper(group, NULL, + POINT_CONVERSION_UNCOMPRESSED, + bnctx)) + || !TEST_true(ec_point_hex2point_test_helper(group, P, + POINT_CONVERSION_HYBRID, + bnctx)) + || !TEST_true(ec_point_hex2point_test_helper(group, NULL, + POINT_CONVERSION_HYBRID, + bnctx))) + goto err; + + ret = 1; + + err: + EC_POINT_free(P); + EC_GROUP_free(group); + BN_CTX_free(bnctx); + + return ret; +} + +#endif /* OPENSSL_NO_EC */ int setup_tests(void) { @@ -2025,6 +2125,7 @@ int setup_tests(void) ADD_ALL_TESTS(internal_curve_test_method, crv_len); ADD_ALL_TESTS(check_named_curve_from_ecparameters, crv_len); + ADD_ALL_TESTS(ec_point_hex2point_test, crv_len); #endif /* OPENSSL_NO_EC */ return 1; } diff --git a/crypto/external/bsd/openssl/dist/test/evp_extra_test.c b/crypto/external/bsd/openssl/dist/test/evp_extra_test.c index 3ae6408f096..a74f6332ac9 100644 --- a/crypto/external/bsd/openssl/dist/test/evp_extra_test.c +++ b/crypto/external/bsd/openssl/dist/test/evp_extra_test.c @@ -18,9 +18,10 @@ #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/kdf.h> +#include <openssl/dh.h> #include "testutil.h" #include "internal/nelem.h" -#include "internal/evp_int.h" +#include "crypto/evp.h" /* * kExampleRSAKeyDER is an RSA private key in ASN.1, DER format. Of course, you @@ -1069,6 +1070,109 @@ done: } #endif +#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +static int test_decrypt_null_chunks(void) +{ + EVP_CIPHER_CTX* ctx = NULL; + const unsigned char key[32] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, + 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1 + }; + unsigned char iv[12] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b + }; + unsigned char msg[] = "It was the best of times, it was the worst of times"; + unsigned char ciphertext[80]; + unsigned char plaintext[80]; + /* We initialise tmp to a non zero value on purpose */ + int ctlen, ptlen, tmp = 99; + int ret = 0; + const int enc_offset = 10, dec_offset = 20; + + if (!TEST_ptr(ctx = EVP_CIPHER_CTX_new()) + || !TEST_true(EVP_EncryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, + key, iv)) + || !TEST_true(EVP_EncryptUpdate(ctx, ciphertext, &ctlen, msg, + enc_offset)) + /* Deliberate add a zero length update */ + || !TEST_true(EVP_EncryptUpdate(ctx, ciphertext + ctlen, &tmp, NULL, + 0)) + || !TEST_int_eq(tmp, 0) + || !TEST_true(EVP_EncryptUpdate(ctx, ciphertext + ctlen, &tmp, + msg + enc_offset, + sizeof(msg) - enc_offset)) + || !TEST_int_eq(ctlen += tmp, sizeof(msg)) + || !TEST_true(EVP_EncryptFinal(ctx, ciphertext + ctlen, &tmp)) + || !TEST_int_eq(tmp, 0)) + goto err; + + /* Deliberately initialise tmp to a non zero value */ + tmp = 99; + if (!TEST_true(EVP_DecryptInit_ex(ctx, EVP_chacha20_poly1305(), NULL, key, + iv)) + || !TEST_true(EVP_DecryptUpdate(ctx, plaintext, &ptlen, ciphertext, + dec_offset)) + /* + * Deliberately add a zero length update. We also deliberately do + * this at a different offset than for encryption. + */ + || !TEST_true(EVP_DecryptUpdate(ctx, plaintext + ptlen, &tmp, NULL, + 0)) + || !TEST_int_eq(tmp, 0) + || !TEST_true(EVP_DecryptUpdate(ctx, plaintext + ptlen, &tmp, + ciphertext + dec_offset, + ctlen - dec_offset)) + || !TEST_int_eq(ptlen += tmp, sizeof(msg)) + || !TEST_true(EVP_DecryptFinal(ctx, plaintext + ptlen, &tmp)) + || !TEST_int_eq(tmp, 0) + || !TEST_mem_eq(msg, sizeof(msg), plaintext, ptlen)) + goto err; + + ret = 1; + err: + EVP_CIPHER_CTX_free(ctx); + return ret; +} +#endif /* !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) */ + +#ifndef OPENSSL_NO_DH +static int test_EVP_PKEY_set1_DH(void) +{ + DH *x942dh, *pkcs3dh; + EVP_PKEY *pkey1, *pkey2; + int ret = 0; + + x942dh = DH_get_2048_256(); + pkcs3dh = DH_new_by_nid(NID_ffdhe2048); + pkey1 = EVP_PKEY_new(); + pkey2 = EVP_PKEY_new(); + if (!TEST_ptr(x942dh) + || !TEST_ptr(pkcs3dh) + || !TEST_ptr(pkey1) + || !TEST_ptr(pkey2)) + goto err; + + if(!TEST_true(EVP_PKEY_set1_DH(pkey1, x942dh)) + || !TEST_int_eq(EVP_PKEY_id(pkey1), EVP_PKEY_DHX)) + goto err; + + + if(!TEST_true(EVP_PKEY_set1_DH(pkey2, pkcs3dh)) + || !TEST_int_eq(EVP_PKEY_id(pkey2), EVP_PKEY_DH)) + goto err; + + ret = 1; + err: + EVP_PKEY_free(pkey1); + EVP_PKEY_free(pkey2); + DH_free(x942dh); + DH_free(pkcs3dh); + + return ret; +} +#endif + int setup_tests(void) { ADD_TEST(test_EVP_DigestSignInit); @@ -1098,5 +1202,12 @@ int setup_tests(void) ADD_ALL_TESTS(test_invalide_ec_char2_pub_range_decode, OSSL_NELEM(ec_der_pub_keys)); #endif +#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) + ADD_TEST(test_decrypt_null_chunks); +#endif +#ifndef OPENSSL_NO_DH + ADD_TEST(test_EVP_PKEY_set1_DH); +#endif + return 1; } diff --git a/crypto/external/bsd/openssl/dist/test/handshake_helper.c b/crypto/external/bsd/openssl/dist/test/handshake_helper.c index 27ff794014d..1742004b5b8 100644 --- a/crypto/external/bsd/openssl/dist/test/handshake_helper.c +++ b/crypto/external/bsd/openssl/dist/test/handshake_helper.c @@ -16,7 +16,7 @@ #include <openssl/srp.h> #endif -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" #include "internal/sockets.h" #include "internal/nelem.h" #include "handshake_helper.h" diff --git a/crypto/external/bsd/openssl/dist/test/handshake_helper.h b/crypto/external/bsd/openssl/dist/test/handshake_helper.h index ab6446a490b..96406dd93e4 100644 --- a/crypto/external/bsd/openssl/dist/test/handshake_helper.h +++ b/crypto/external/bsd/openssl/dist/test/handshake_helper.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_HANDSHAKE_HELPER_H -#define HEADER_HANDSHAKE_HELPER_H +#ifndef OSSL_TEST_HANDSHAKE_HELPER_H +#define OSSL_TEST_HANDSHAKE_HELPER_H #include "ssl_test_ctx.h" @@ -78,4 +78,4 @@ HANDSHAKE_RESULT *do_handshake(SSL_CTX *server_ctx, SSL_CTX *server2_ctx, SSL_CTX *resume_client_ctx, const SSL_TEST_CTX *test_ctx); -#endif /* HEADER_HANDSHAKE_HELPER_H */ +#endif /* OSSL_TEST_HANDSHAKE_HELPER_H */ diff --git a/crypto/external/bsd/openssl/dist/test/hmactest.c b/crypto/external/bsd/openssl/dist/test/hmactest.c index ecfaa1eb344..f17a387e822 100644 --- a/crypto/external/bsd/openssl/dist/test/hmactest.c +++ b/crypto/external/bsd/openssl/dist/test/hmactest.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -29,7 +29,7 @@ static struct test_st { const char key[16]; int key_len; - const unsigned char data[64]; + const char data[64]; int data_len; const char *digest; } test[8] = { @@ -38,8 +38,10 @@ static struct test_st { "e9139d1e6ee064ef8cf514fc7dc83e86", }, { - "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", - 16, "Hi There", 8, + { + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + }, 16, "Hi There", 8, "9294727a3638bb1c13f48ef8158bfc9d", }, { @@ -47,8 +49,10 @@ static struct test_st { "750c783e6ab0b503eaa86e310a5db738", }, { - "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - 16, { + { + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + }, 16, { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, @@ -77,6 +81,8 @@ static struct test_st { static char *pt(unsigned char *md, unsigned int len); +#define UC(a) ((const unsigned char *)(a)) + # ifndef OPENSSL_NO_MD5 static int test_hmac_md5(int idx) @@ -91,7 +97,7 @@ static int test_hmac_md5(int idx) p = pt(HMAC(EVP_md5(), test[idx].key, test[idx].key_len, - test[idx].data, test[idx].data_len, NULL, NULL), + UC(test[idx].data), test[idx].data_len, NULL, NULL), MD5_DIGEST_LENGTH); if (!TEST_str_eq(p, test[idx].digest)) @@ -110,9 +116,9 @@ static int test_hmac_bad(void) if (!TEST_ptr(ctx) || !TEST_ptr_null(HMAC_CTX_get_md(ctx)) || !TEST_false(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL)) - || !TEST_false(HMAC_Update(ctx, test[4].data, test[4].data_len)) + || !TEST_false(HMAC_Update(ctx, UC(test[4].data), test[4].data_len)) || !TEST_false(HMAC_Init_ex(ctx, NULL, 0, EVP_sha1(), NULL)) - || !TEST_false(HMAC_Update(ctx, test[4].data, test[4].data_len))) + || !TEST_false(HMAC_Update(ctx, UC(test[4].data), test[4].data_len))) goto err; ret = 1; @@ -135,12 +141,12 @@ static int test_hmac_run(void) if (!TEST_ptr(ctx) || !TEST_ptr_null(HMAC_CTX_get_md(ctx)) || !TEST_false(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL)) - || !TEST_false(HMAC_Update(ctx, test[4].data, test[4].data_len)) + || !TEST_false(HMAC_Update(ctx, UC(test[4].data), test[4].data_len)) || !TEST_false(HMAC_Init_ex(ctx, test[4].key, -1, EVP_sha1(), NULL))) goto err; if (!TEST_true(HMAC_Init_ex(ctx, test[4].key, test[4].key_len, EVP_sha1(), NULL)) - || !TEST_true(HMAC_Update(ctx, test[4].data, test[4].data_len)) + || !TEST_true(HMAC_Update(ctx, UC(test[4].data), test[4].data_len)) || !TEST_true(HMAC_Final(ctx, buf, &len))) goto err; @@ -153,7 +159,7 @@ static int test_hmac_run(void) if (!TEST_true(HMAC_Init_ex(ctx, test[5].key, test[5].key_len, EVP_sha256(), NULL)) || !TEST_ptr_eq(HMAC_CTX_get_md(ctx), EVP_sha256()) - || !TEST_true(HMAC_Update(ctx, test[5].data, test[5].data_len)) + || !TEST_true(HMAC_Update(ctx, UC(test[5].data), test[5].data_len)) || !TEST_true(HMAC_Final(ctx, buf, &len))) goto err; @@ -162,7 +168,28 @@ static int test_hmac_run(void) goto err; if (!TEST_true(HMAC_Init_ex(ctx, test[6].key, test[6].key_len, NULL, NULL)) - || !TEST_true(HMAC_Update(ctx, test[6].data, test[6].data_len)) + || !TEST_true(HMAC_Update(ctx, UC(test[6].data), test[6].data_len)) + || !TEST_true(HMAC_Final(ctx, buf, &len))) + goto err; + p = pt(buf, len); + if (!TEST_str_eq(p, test[6].digest)) + goto err; + + /* Test reusing a key */ + if (!TEST_true(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL)) + || !TEST_true(HMAC_Update(ctx, UC(test[6].data), test[6].data_len)) + || !TEST_true(HMAC_Final(ctx, buf, &len))) + goto err; + p = pt(buf, len); + if (!TEST_str_eq(p, test[6].digest)) + goto err; + + /* + * Test reusing a key where the digest is provided again but is the same as + * last time + */ + if (!TEST_true(HMAC_Init_ex(ctx, NULL, 0, EVP_sha256(), NULL)) + || !TEST_true(HMAC_Update(ctx, UC(test[6].data), test[6].data_len)) || !TEST_true(HMAC_Final(ctx, buf, &len))) goto err; p = pt(buf, len); @@ -181,7 +208,7 @@ static int test_hmac_single_shot(void) char *p; /* Test single-shot with an empty key. */ - p = pt(HMAC(EVP_sha1(), NULL, 0, test[4].data, test[4].data_len, + p = pt(HMAC(EVP_sha1(), NULL, 0, UC(test[4].data), test[4].data_len, NULL, NULL), SHA_DIGEST_LENGTH); if (!TEST_str_eq(p, test[4].digest)) return 0; @@ -204,7 +231,7 @@ static int test_hmac_copy(void) goto err; if (!TEST_true(HMAC_Init_ex(ctx, test[7].key, test[7].key_len, EVP_sha1(), NULL)) - || !TEST_true(HMAC_Update(ctx, test[7].data, test[7].data_len)) + || !TEST_true(HMAC_Update(ctx, UC(test[7].data), test[7].data_len)) || !TEST_true(HMAC_CTX_copy(ctx2, ctx)) || !TEST_true(HMAC_Final(ctx2, buf, &len))) goto err; diff --git a/crypto/external/bsd/openssl/dist/test/modes_internal_test.c b/crypto/external/bsd/openssl/dist/test/modes_internal_test.c index e0f1adf6af2..a0fa86e6238 100644 --- a/crypto/external/bsd/openssl/dist/test/modes_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/modes_internal_test.c @@ -14,7 +14,7 @@ #include <openssl/aes.h> #include <openssl/modes.h> -#include "../crypto/modes/modes_lcl.h" +#include "../crypto/modes/modes_local.h" #include "testutil.h" #include "internal/nelem.h" diff --git a/crypto/external/bsd/openssl/dist/test/ossl_shim/async_bio.h b/crypto/external/bsd/openssl/dist/test/ossl_shim/async_bio.h index bb24eadbbf2..c09e236aefa 100644 --- a/crypto/external/bsd/openssl/dist/test/ossl_shim/async_bio.h +++ b/crypto/external/bsd/openssl/dist/test/ossl_shim/async_bio.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_ASYNC_BIO -#define HEADER_ASYNC_BIO +#ifndef OSSL_TEST_SHIM_ASYNC_BIO_H +#define OSSL_TEST_SHIM_ASYNC_BIO_H #include <openssl/base.h> #include <openssl/bio.h> @@ -36,4 +36,4 @@ void AsyncBioAllowWrite(BIO *bio, size_t count); void AsyncBioEnforceWriteQuota(BIO *bio, bool enforce); -#endif // HEADER_ASYNC_BIO +#endif // OSSL_TEST_SHIM_ASYNC_BIO_H diff --git a/crypto/external/bsd/openssl/dist/test/ossl_shim/include/openssl/base.h b/crypto/external/bsd/openssl/dist/test/ossl_shim/include/openssl/base.h index f725cd9d45c..a8d47b86aee 100644 --- a/crypto/external/bsd/openssl/dist/test/ossl_shim/include/openssl/base.h +++ b/crypto/external/bsd/openssl/dist/test/ossl_shim/include/openssl/base.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef OPENSSL_HEADER_BASE_H -#define OPENSSL_HEADER_BASE_H +#ifndef OSSL_TEST_SHIM_INCLUDE_OPENSSL_BASE_H +#define OSSL_TEST_SHIM_INCLUDE_OPENSSL_BASE_H /* Needed for BORINGSSL_MAKE_DELETER */ # include <openssl/bio.h> @@ -108,4 +108,4 @@ BORINGSSL_MAKE_DELETER(SSL_SESSION, SSL_SESSION_free) } /* extern C++ */ -#endif /* OPENSSL_HEADER_BASE_H */ +#endif /* OSSL_TEST_SHIM_INCLUDE_OPENSSL_BASE_H */ diff --git a/crypto/external/bsd/openssl/dist/test/ossl_shim/packeted_bio.h b/crypto/external/bsd/openssl/dist/test/ossl_shim/packeted_bio.h index 436cf9082f3..895bd37952d 100644 --- a/crypto/external/bsd/openssl/dist/test/ossl_shim/packeted_bio.h +++ b/crypto/external/bsd/openssl/dist/test/ossl_shim/packeted_bio.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_PACKETED_BIO -#define HEADER_PACKETED_BIO +#ifndef OSSL_TEST_SHIM_PACKETED_BIO_H +#define OSSL_TEST_SHIM_PACKETED_BIO_H #include <openssl/base.h> #include <openssl/bio.h> @@ -32,4 +32,4 @@ timeval PacketedBioGetClock(const BIO *bio); bool PacketedBioAdvanceClock(BIO *bio); -#endif // HEADER_PACKETED_BIO +#endif // OSSL_TEST_SHIM_PACKETED_BIO_H diff --git a/crypto/external/bsd/openssl/dist/test/ossl_shim/test_config.h b/crypto/external/bsd/openssl/dist/test/ossl_shim/test_config.h index b4efa455aeb..f95475a42e1 100644 --- a/crypto/external/bsd/openssl/dist/test/ossl_shim/test_config.h +++ b/crypto/external/bsd/openssl/dist/test/ossl_shim/test_config.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_TEST_CONFIG -#define HEADER_TEST_CONFIG +#ifndef OSSL_TEST_SHIM_TEST_CONFIG_H +#define OSSL_TEST_SHIM_TEST_CONFIG_H #include <string> #include <vector> @@ -85,4 +85,4 @@ struct TestConfig { bool ParseConfig(int argc, char **argv, TestConfig *out_config); -#endif // HEADER_TEST_CONFIG +#endif // OSSL_TEST_SHIM_TEST_CONFIG_H diff --git a/crypto/external/bsd/openssl/dist/test/packettest.c b/crypto/external/bsd/openssl/dist/test/packettest.c index e58d8d8bcfa..6c82d04414c 100644 --- a/crypto/external/bsd/openssl/dist/test/packettest.c +++ b/crypto/external/bsd/openssl/dist/test/packettest.c @@ -7,7 +7,7 @@ * https://www.openssl.org/source/license.html */ -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "testutil.h" #define BUF_LEN 255 diff --git a/crypto/external/bsd/openssl/dist/test/poly1305_internal_test.c b/crypto/external/bsd/openssl/dist/test/poly1305_internal_test.c index 7f7a9e39c5b..2b6a529baaa 100644 --- a/crypto/external/bsd/openssl/dist/test/poly1305_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/poly1305_internal_test.c @@ -13,7 +13,7 @@ #include <string.h> #include "testutil.h" -#include "internal/poly1305.h" +#include "crypto/poly1305.h" #include "../crypto/poly1305/poly1305_local.h" #include "internal/nelem.h" diff --git a/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn.t b/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn.t index a663009ce93..4e38c8f8b42 100644 --- a/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn.t +++ b/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn.t @@ -16,9 +16,8 @@ use OpenSSL::Test qw/:DEFAULT data_file/; setup("test_bn"); -my @files = ( - "bnexp.txt", "bnmod.txt", "bnmul.txt", "bnshift.txt", "bnsum.txt" - ); +my @files = qw( bnexp.txt bnmod.txt bnmul.txt bnshift.txt bnsum.txt bngcd.txt ); + plan tests => 1 + scalar(@files); foreach my $f ( @files ) { diff --git a/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn_data/bngcd.txt b/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn_data/bngcd.txt new file mode 100644 index 00000000000..ea19336b5dc --- /dev/null +++ b/crypto/external/bsd/openssl/dist/test/recipes/10-test_bn_data/bngcd.txt @@ -0,0 +1,17179 @@ +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +# GCD tests. +# +# These test vectors satisfy gcd(A, B) = GCD. +# They were generated with sage, independent of OpenSSL. + +A = 0 +B = 0 +GCD = 0 + +# gcd(1,0) = 1 +A = 1 +B = 0 +GCD = 1 + +# gcd(1,1) = 1 +A = 1 +B = 1 +GCD = 1 + +# gcd(0,a) = a +A = 0 +B = 70030ffeeea3deaea19387f4f1d0f460a6954a2a9cb98290602ac09036143ef8eb9692f3eac22961811083e073ee0be1506c24d7b0d4eb0089406758828f7c99dc01692846f88aafb58b2d56a6dd1157b781eeaf807d59496aac6ca754f8830b743ea938ce16cbe03c8fd8675c78ba2420d502f2227a9bbe3979865cd154cbb2 +GCD = 70030ffeeea3deaea19387f4f1d0f460a6954a2a9cb98290602ac09036143ef8eb9692f3eac22961811083e073ee0be1506c24d7b0d4eb0089406758828f7c99dc01692846f88aafb58b2d56a6dd1157b781eeaf807d59496aac6ca754f8830b743ea938ce16cbe03c8fd8675c78ba2420d502f2227a9bbe3979865cd154cbb2 + +# gcd(-a,0) = |a| +A = -231f16458c487346cf50a17beec83632f25d19abeea1097c746533cd3e35207b7efd75dc3e9c663a64b6861e88579dad08649f107a13edf2ad43d0056f9240ad2a08c4aba20f05cc4aad23eb47e77cc8031df5b1c735b55103e164ca6c07bd040e12616df28064e5895a8903a26dfde7e88229a8d29fc4cb77711bf81bd04db9 +B = 0 +GCD = 231f16458c487346cf50a17beec83632f25d19abeea1097c746533cd3e35207b7efd75dc3e9c663a64b6861e88579dad08649f107a13edf2ad43d0056f9240ad2a08c4aba20f05cc4aad23eb47e77cc8031df5b1c735b55103e164ca6c07bd040e12616df28064e5895a8903a26dfde7e88229a8d29fc4cb77711bf81bd04db9 + +# for even i, test: +# gcd(2**i - 1, 2**(i/2) - 1) = 2**(i/2) - 1 +# gcd(2**i - 1, 2**(i/2) + 1) = 2**(i/2) + 1 +A = f +B = 3 +GCD = 3 + +A = f +B = 5 +GCD = 5 + +A = 3f +B = 7 +GCD = 7 + +A = 3f +B = 9 +GCD = 9 + +A = ff +B = f +GCD = f + +A = ff +B = 11 +GCD = 11 + +A = 3ff +B = 1f +GCD = 1f + +A = 3ff +B = 21 +GCD = 21 + +A = fff +B = 3f +GCD = 3f + +A = fff +B = 41 +GCD = 41 + +A = 3fff +B = 7f +GCD = 7f + +A = 3fff +B = 81 +GCD = 81 + +A = ffff +B = ff +GCD = ff + +A = ffff +B = 101 +GCD = 101 + +A = 3ffff +B = 1ff +GCD = 1ff + +A = 3ffff +B = 201 +GCD = 201 + +A = fffff +B = 3ff +GCD = 3ff + +A = fffff +B = 401 +GCD = 401 + +A = 3fffff +B = 7ff +GCD = 7ff + +A = 3fffff +B = 801 +GCD = 801 + +A = ffffff +B = fff +GCD = fff + +A = ffffff +B = 1001 +GCD = 1001 + +A = 3ffffff +B = 1fff +GCD = 1fff + +A = 3ffffff +B = 2001 +GCD = 2001 + +A = fffffff +B = 3fff +GCD = 3fff + +A = fffffff +B = 4001 +GCD = 4001 + +A = 3fffffff +B = 7fff +GCD = 7fff + +A = 3fffffff +B = 8001 +GCD = 8001 + +A = ffffffff +B = ffff +GCD = ffff + +A = ffffffff +B = 10001 +GCD = 10001 + +A = 3ffffffff +B = 1ffff +GCD = 1ffff + +A = 3ffffffff +B = 20001 +GCD = 20001 + +A = fffffffff +B = 3ffff +GCD = 3ffff + +A = fffffffff +B = 40001 +GCD = 40001 + +A = 3fffffffff +B = 7ffff +GCD = 7ffff + +A = 3fffffffff +B = 80001 +GCD = 80001 + +A = ffffffffff +B = fffff +GCD = fffff + +A = ffffffffff +B = 100001 +GCD = 100001 + +A = 3ffffffffff +B = 1fffff +GCD = 1fffff + +A = 3ffffffffff +B = 200001 +GCD = 200001 + +A = fffffffffff +B = 3fffff +GCD = 3fffff + +A = fffffffffff +B = 400001 +GCD = 400001 + +A = 3fffffffffff +B = 7fffff +GCD = 7fffff + +A = 3fffffffffff +B = 800001 +GCD = 800001 + +A = ffffffffffff +B = ffffff +GCD = ffffff + +A = ffffffffffff +B = 1000001 +GCD = 1000001 + +A = 3ffffffffffff +B = 1ffffff +GCD = 1ffffff + +A = 3ffffffffffff +B = 2000001 +GCD = 2000001 + +A = fffffffffffff +B = 3ffffff +GCD = 3ffffff + +A = fffffffffffff +B = 4000001 +GCD = 4000001 + +A = 3fffffffffffff +B = 7ffffff +GCD = 7ffffff + +A = 3fffffffffffff +B = 8000001 +GCD = 8000001 + +A = ffffffffffffff +B = fffffff +GCD = fffffff + +A = ffffffffffffff +B = 10000001 +GCD = 10000001 + +A = 3ffffffffffffff +B = 1fffffff +GCD = 1fffffff + +A = 3ffffffffffffff +B = 20000001 +GCD = 20000001 + +A = fffffffffffffff +B = 3fffffff +GCD = 3fffffff + +A = fffffffffffffff +B = 40000001 +GCD = 40000001 + +A = 3fffffffffffffff +B = 7fffffff +GCD = 7fffffff + +A = 3fffffffffffffff +B = 80000001 +GCD = 80000001 + +A = ffffffffffffffff +B = ffffffff +GCD = ffffffff + +A = ffffffffffffffff +B = 100000001 +GCD = 100000001 + +A = 3ffffffffffffffff +B = 1ffffffff +GCD = 1ffffffff + +A = 3ffffffffffffffff +B = 200000001 +GCD = 200000001 + +A = fffffffffffffffff +B = 3ffffffff +GCD = 3ffffffff + +A = fffffffffffffffff +B = 400000001 +GCD = 400000001 + +A = 3fffffffffffffffff +B = 7ffffffff +GCD = 7ffffffff + +A = 3fffffffffffffffff +B = 800000001 +GCD = 800000001 + +A = ffffffffffffffffff +B = fffffffff +GCD = fffffffff + +A = ffffffffffffffffff +B = 1000000001 +GCD = 1000000001 + +A = 3ffffffffffffffffff +B = 1fffffffff +GCD = 1fffffffff + +A = 3ffffffffffffffffff +B = 2000000001 +GCD = 2000000001 + +A = fffffffffffffffffff +B = 3fffffffff +GCD = 3fffffffff + +A = fffffffffffffffffff +B = 4000000001 +GCD = 4000000001 + +A = 3fffffffffffffffffff +B = 7fffffffff +GCD = 7fffffffff + +A = 3fffffffffffffffffff +B = 8000000001 +GCD = 8000000001 + +A = ffffffffffffffffffff +B = ffffffffff +GCD = ffffffffff + +A = ffffffffffffffffffff +B = 10000000001 +GCD = 10000000001 + +A = 3ffffffffffffffffffff +B = 1ffffffffff +GCD = 1ffffffffff + +A = 3ffffffffffffffffffff +B = 20000000001 +GCD = 20000000001 + +A = fffffffffffffffffffff +B = 3ffffffffff +GCD = 3ffffffffff + +A = fffffffffffffffffffff +B = 40000000001 +GCD = 40000000001 + +A = 3fffffffffffffffffffff +B = 7ffffffffff +GCD = 7ffffffffff + +A = 3fffffffffffffffffffff +B = 80000000001 +GCD = 80000000001 + +A = ffffffffffffffffffffff +B = fffffffffff +GCD = fffffffffff + +A = ffffffffffffffffffffff +B = 100000000001 +GCD = 100000000001 + +A = 3ffffffffffffffffffffff +B = 1fffffffffff +GCD = 1fffffffffff + +A = 3ffffffffffffffffffffff +B = 200000000001 +GCD = 200000000001 + +A = fffffffffffffffffffffff +B = 3fffffffffff +GCD = 3fffffffffff + +A = fffffffffffffffffffffff +B = 400000000001 +GCD = 400000000001 + +A = 3fffffffffffffffffffffff +B = 7fffffffffff +GCD = 7fffffffffff + +A = 3fffffffffffffffffffffff +B = 800000000001 +GCD = 800000000001 + +A = ffffffffffffffffffffffff +B = ffffffffffff +GCD = ffffffffffff + +A = ffffffffffffffffffffffff +B = 1000000000001 +GCD = 1000000000001 + +A = 3ffffffffffffffffffffffff +B = 1ffffffffffff +GCD = 1ffffffffffff + +A = 3ffffffffffffffffffffffff +B = 2000000000001 +GCD = 2000000000001 + +A = fffffffffffffffffffffffff +B = 3ffffffffffff +GCD = 3ffffffffffff + +A = fffffffffffffffffffffffff +B = 4000000000001 +GCD = 4000000000001 + +A = 3fffffffffffffffffffffffff +B = 7ffffffffffff +GCD = 7ffffffffffff + +A = 3fffffffffffffffffffffffff +B = 8000000000001 +GCD = 8000000000001 + +A = ffffffffffffffffffffffffff +B = fffffffffffff +GCD = fffffffffffff + +A = ffffffffffffffffffffffffff +B = 10000000000001 +GCD = 10000000000001 + +A = 3ffffffffffffffffffffffffff +B = 1fffffffffffff +GCD = 1fffffffffffff + +A = 3ffffffffffffffffffffffffff +B = 20000000000001 +GCD = 20000000000001 + +A = fffffffffffffffffffffffffff +B = 3fffffffffffff +GCD = 3fffffffffffff + +A = fffffffffffffffffffffffffff +B = 40000000000001 +GCD = 40000000000001 + +A = 3fffffffffffffffffffffffffff +B = 7fffffffffffff +GCD = 7fffffffffffff + +A = 3fffffffffffffffffffffffffff +B = 80000000000001 +GCD = 80000000000001 + +A = ffffffffffffffffffffffffffff +B = ffffffffffffff +GCD = ffffffffffffff + +A = ffffffffffffffffffffffffffff +B = 100000000000001 +GCD = 100000000000001 + +A = 3ffffffffffffffffffffffffffff +B = 1ffffffffffffff +GCD = 1ffffffffffffff + +A = 3ffffffffffffffffffffffffffff +B = 200000000000001 +GCD = 200000000000001 + +A = fffffffffffffffffffffffffffff +B = 3ffffffffffffff +GCD = 3ffffffffffffff + +A = fffffffffffffffffffffffffffff +B = 400000000000001 +GCD = 400000000000001 + +A = 3fffffffffffffffffffffffffffff +B = 7ffffffffffffff +GCD = 7ffffffffffffff + +A = 3fffffffffffffffffffffffffffff +B = 800000000000001 +GCD = 800000000000001 + +A = ffffffffffffffffffffffffffffff +B = fffffffffffffff +GCD = fffffffffffffff + +A = ffffffffffffffffffffffffffffff +B = 1000000000000001 +GCD = 1000000000000001 + +A = 3ffffffffffffffffffffffffffffff +B = 1fffffffffffffff +GCD = 1fffffffffffffff + +A = 3ffffffffffffffffffffffffffffff +B = 2000000000000001 +GCD = 2000000000000001 + +A = fffffffffffffffffffffffffffffff +B = 3fffffffffffffff +GCD = 3fffffffffffffff + +A = fffffffffffffffffffffffffffffff +B = 4000000000000001 +GCD = 4000000000000001 + +A = 3fffffffffffffffffffffffffffffff +B = 7fffffffffffffff +GCD = 7fffffffffffffff + +A = 3fffffffffffffffffffffffffffffff +B = 8000000000000001 +GCD = 8000000000000001 + +A = ffffffffffffffffffffffffffffffff +B = ffffffffffffffff +GCD = ffffffffffffffff + +A = ffffffffffffffffffffffffffffffff +B = 10000000000000001 +GCD = 10000000000000001 + +A = 3ffffffffffffffffffffffffffffffff +B = 1ffffffffffffffff +GCD = 1ffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffff +B = 20000000000000001 +GCD = 20000000000000001 + +A = fffffffffffffffffffffffffffffffff +B = 3ffffffffffffffff +GCD = 3ffffffffffffffff + +A = fffffffffffffffffffffffffffffffff +B = 40000000000000001 +GCD = 40000000000000001 + +A = 3fffffffffffffffffffffffffffffffff +B = 7ffffffffffffffff +GCD = 7ffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffff +B = 80000000000000001 +GCD = 80000000000000001 + +A = ffffffffffffffffffffffffffffffffff +B = fffffffffffffffff +GCD = fffffffffffffffff + +A = ffffffffffffffffffffffffffffffffff +B = 100000000000000001 +GCD = 100000000000000001 + +A = 3ffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffff +GCD = 1fffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffff +B = 200000000000000001 +GCD = 200000000000000001 + +A = fffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffff +GCD = 3fffffffffffffffff + +A = fffffffffffffffffffffffffffffffffff +B = 400000000000000001 +GCD = 400000000000000001 + +A = 3fffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffff +GCD = 7fffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffff +B = 800000000000000001 +GCD = 800000000000000001 + +A = ffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffff +GCD = ffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffff +B = 1000000000000000001 +GCD = 1000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffff +GCD = 1ffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffff +B = 2000000000000000001 +GCD = 2000000000000000001 + +A = fffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffff +GCD = 3ffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffff +B = 4000000000000000001 +GCD = 4000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffff +GCD = 7ffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffff +B = 8000000000000000001 +GCD = 8000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffff +GCD = fffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffff +B = 10000000000000000001 +GCD = 10000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffff +GCD = 1fffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffff +B = 20000000000000000001 +GCD = 20000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffff +GCD = 3fffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffff +B = 40000000000000000001 +GCD = 40000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffff +GCD = 7fffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffff +B = 80000000000000000001 +GCD = 80000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffff +GCD = ffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000001 +GCD = 100000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffff +GCD = 1ffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000001 +GCD = 200000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffff +GCD = 3ffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000001 +GCD = 400000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffff +GCD = 7ffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000001 +GCD = 800000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffff +GCD = fffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000001 +GCD = 1000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffff +GCD = 1fffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000001 +GCD = 2000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffff +GCD = 3fffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000001 +GCD = 4000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffff +GCD = 7fffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000001 +GCD = 8000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffff +GCD = ffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000001 +GCD = 10000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffff +GCD = 1ffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000001 +GCD = 20000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffff +GCD = 3ffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000001 +GCD = 40000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffff +GCD = 7ffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000001 +GCD = 80000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffff +GCD = fffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000001 +GCD = 100000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffff +GCD = 1fffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000001 +GCD = 200000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffff +GCD = 3fffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000001 +GCD = 400000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffff +GCD = 7fffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000001 +GCD = 800000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffff +GCD = ffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000001 +GCD = 1000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000001 +GCD = 2000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000001 +GCD = 4000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000001 +GCD = 8000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffff +GCD = fffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000001 +GCD = 10000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000001 +GCD = 20000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000001 +GCD = 40000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000001 +GCD = 80000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000001 +GCD = 100000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000001 +GCD = 200000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000001 +GCD = 400000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000001 +GCD = 800000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000001 +GCD = 1000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000001 +GCD = 2000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000001 +GCD = 4000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000001 +GCD = 8000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000001 +GCD = 10000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000001 +GCD = 20000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000001 +GCD = 40000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000001 +GCD = 80000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000001 +GCD = 100000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000001 +GCD = 200000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000001 +GCD = 400000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000001 +GCD = 800000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000001 +GCD = 1000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000001 +GCD = 2000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000001 +GCD = 4000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000001 +GCD = 8000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000001 +GCD = 10000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000001 +GCD = 20000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000001 +GCD = 40000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000001 +GCD = 80000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000001 +GCD = 100000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000001 +GCD = 200000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000001 +GCD = 400000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000001 +GCD = 800000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000001 +GCD = 1000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000001 +GCD = 2000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000001 +GCD = 4000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000001 +GCD = 8000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000001 +GCD = 10000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000001 +GCD = 20000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000001 +GCD = 40000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000001 +GCD = 80000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000001 +GCD = 100000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000001 +GCD = 200000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000001 +GCD = 400000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000001 +GCD = 800000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +GCD = 1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + +A = 3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +B = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 + +# random KATs +A = -1 +B = -1 +GCD = 1 + +A = -e9 +B = -122 +GCD = 1 + +A = a991 +B = 9c91 +GCD = 1 + +A = aee38e +B = -ef35d4 +GCD = 12 + +A = 11fac5874 +B = -13a37ad53 +GCD = 1 + +A = -30ba5f2ee8 +B = -15935eabc59 +GCD = 1 + +A = c85702ba3795 +B = -4646d650b41 +GCD = 1 + +A = -1804fb46dd79d30 +B = -8d3ebf6a5c5c36 +GCD = 16 + +A = e0d6ca65ea05ea62 +B = -93acbd36ca94622e +GCD = 2 + +A = 15ad06885f13cffb323 +B = 17f0004c657a8977d75 +GCD = 1 + +A = e7ff96cec9c080a4ce76 +B = -18dc55650afa9072683fd +GCD = 3 + +A = 1f04b96580d11dca1a42066 +B = f39f140e2a29fc19c6368e +GCD = 2 + +A = 1839733c9c52eef9beb64d92e +B = -70bb38f2d70b9bfb6d764371 +GCD = 1 + +A = 157393bc256b25c0a1d107c270b +B = 171a32af49c010663708c8e4dd6 +GCD = 1 + +A = -15c0ac453e8b47c0a8da6a95c6d1c +B = 1fcded9fb7ea85e696b675dedfe3c +GCD = 4 + +A = -4f4db668e2b044ee972eec62b06264 +B = -be55936205e72ebb3e0543b8d83628 +GCD = c + +A = a8de6c3578a1f2fb69adfdb7cd687eb4 +B = -1371dea9653f87dafa5512b89b2691b4c +GCD = 4 + +A = -188f12124f8209f97ae82183cdf31586244 +B = 21943e5fc78521801b7adc83d3ff634eca +GCD = 2 + +A = -1e420c37d2a409a1343bb17987d3e94af10e9 +B = d5cd4728f9272d5127dc104340ac89cf1eec +GCD = 1 + +A = -1e760bd24fda671fb720885de3256b4d55795f5 +B = -1c6711aff275b54c644371b1aeb6f463006f06 +GCD = 1 + +A = 2894fbe326e1dc1a2822fd8d262f85fb667ba633 +B = 179f9449f643787ff96fc064da43cd5da2a72a35e +GCD = 1 + +A = eadf17a11a74869d40d124c748aa39961f53e83165 +B = 1b428b0c3b619f2001fe8290e8e3849c765b06d3a7c +GCD = 1 + +A = -1f8596327f7e3f97be2317163c6452b376bb604845ca1 +B = -1e0c736e66846f8d2b8c785c00db9a586fc5317d0e66d +GCD = 1 + +A = -1601684fb83ed9e1d8ffe6b0cfbd98d21a19aaf4da369d8 +B = -c1a63d561ff82329a03c2a49fea26d950a0f58fee95afd +GCD = 1 + +A = 1375f0dac727bcd1fe8d4b1d1dd563f236dcc58e1a36fbdfd +B = a96ba42e882a321930399b7788e0fec9a8f76f44b5432a00 +GCD = 1 + +A = -1f97ab20b489a029b542fcdd8cb0d057b86e4e34fa3cca7585e +B = -9bc7742a043afce9a631bac56cd2e319850cc7f73efe3c0a5b +GCD = 1 + +A = -9a25f52b7931435209611f2ad2e234f4582bdc42712765a9318e +B = -1284cf183b2ec1b4dfec71a6a91705f5df295c95b28aeccd247e +GCD = 2 + +A = -1809511b69429a5f991744ecd94091c0e56d7777b4a742ba9785f7a +B = 17b9cb217832e39c4933fe0581369a767a08104d5bebea2895beb6e +GCD = 2 + +A = -72334f3e1d30b6bad9557d9f71d4da5de7d70309cb0a723c347e6e12 +B = -1930a381a580375b7de06f0fc9d201326852efa287ad8cf32c17e06bb +GCD = 1 + +A = 45d3a8d17d00d181ea1b116f235a98ce63291e9aaa90b41e1a24ad0156 +B = -1d7568b87de073113c8ac7bb800234cb263d67c00e7b4743b297d2e8aa8 +GCD = 2 + +A = 80ccfa8098eae998bdb17dbea961082c8cd102e92973346238e0c92dda04 +B = dff995ba1133f96e2f35b73bd22626e804b012901ad068316fe84e3c3f6e +GCD = 2 + +A = 1dcb28bd5126103759315cf41afec22d1a687ec010b60bd9b316226ebb2a1ea +B = 9103b9f322cc8ba52c7e28a2d4c56bb61c59c92caa033030a575b0c32aeccb +GCD = 1 + +A = 143cc2cc2998897aab5bfd934b96551cc1fd390df3a27d39b4e6b7318e7b2ef4d +B = 13b18e4776bb567f0908a670ee611ad402ffcd38f3de3c04d7a8a55b783811817 +GCD = 1 + +A = -14c3c0af075bc68f7b3736141718d8892df43034d13416d84801cc6a0f5e3755bc6 +B = -d28486b18e2da1e97f1437c701e1856a683f0649541de1379bd3efb60b959b4497 +GCD = 1 + +A = 453270f4a4ece4f6f1715159ce1c79d903923afb61b270c2784752d6ce57b39e0a71 +B = 935c04ebd73f4ba27ee5d538d77ee1ac0a1763b4c06b0f455878ce685409e27f224a +GCD = 1 + +A = 1f641676b547c76f4f25bd7b51000be79b301843ad54936f4cf234e772807f6984b400f +B = -90450f1b6cd63d8d267d610045739be18a9ec4bbf8f6023ae373cf32366b8e6e406f37 +GCD = 1 + +A = -64b0f11ad58106c02ec6a75bab4c527f8e524d61af3a1a55d4917e0023fa5528259a85a8 +B = 4771313a91911c0bf608f053dce02c3a710b6af607b7af950a125e2726feeceb77881e1a +GCD = 2 + +A = 1fcedacaf7e1bf8127b4c3023a31c4ea77728aa5162117f7b49f5d79ec65f614b78839b585 +B = 1506a9f996301e4b442a553e957aee1064b13dbb3d1835e9404c40b66845f897e5b8471ec7b +GCD = 1 + +A = -1b8e8aaeb9f4fd373c91a6e16d95bcc3597acbf3ef96d9863c128fd804fd3914ef66119c47c83 +B = -e2e25f6ecde0bfd2f7d0baa4d4a4e44324897ee9ff8e4578fbc6fa26d60660e5618b7bf787f6 +GCD = 1 + +A = -335c87c3429ff3c97fa7cd2ba7cee0be9eca938b5efcc176f6d997cf4daee639d72d3b468c76fe +B = -1369edb1cd98b3ec3d5a5ff91213df595848938f50f7c72b5579c62b7577d43fe2d67da2d23570c +GCD = 62 + +A = 595e6ff3fe0be024d58d9906ec9655560fe6caf83b10ef5b057565d25cb84603d0ef1942f2de68e0 +B = -123a4ef2b10b3a5af116e04d520440f80a3d69288f15bfe567a9df5f392808de829fdb2a310a7c54 +GCD = 4 + +A = 1b38edb12c4a5a1fd60fdef562b9c1afbbe4b3c9653353bb5d409959bebde80f70118cb5fe231ce2281 +B = d795459901e5632813ee9c41c62629546a30c9c3aa8547bc1dc1b3308b7f72290962c07d6737eca08e +GCD = 1 + +A = -155f92cc303ac4964be78e178d4d9c331981405cf8bfa5c4fd388790ae3ac97ba4ec4ce2fa09d521f4e61 +B = 1c037e98e141acc316573d409b6d3b2b80152b3c99d83ece7ee595fe5a819f21544e63f2691d4e83449b0 +GCD = 1 + +A = 8ee6db77234a82b5ab5ffd56f3252dbd5c3b85fd6226c4889eab86021fa295e223cec5bfa2920fa222f2ec +B = 1fdd2fdc9456c648e5c0f71eea76376cb5fc2df0cb807714746f7ad8ffd1d765463a6da88b84c5d755dc18d +GCD = 1 + +A = 1326ca90f69200645488c325424c5cabb3b0a399d763ab7c8db84a05738ef94ed69a38c47353fbbc6d87df2cf +B = 184e654bfdb1ebe9edcb700337e16054f7532f09b28aa588c22ec3eae40f59fe5515bd0158e562b79c472b811 +GCD = 1 + +A = -1b8282f1d39ade651917fb348de3b0fec54f9af03fc1b25bbbb791762bc3708d6d6d375d6ad55efd24a83d65e93 +B = 2e004f8cc320892c61972596ace48b4e969b439eeff1b4d518ee3e70c40bb1294750ec31acca190912ba43803 +GCD = 3 + +A = d0005d09b37a3d076f7dd28df6b2ed7f8025b13fc8e5594f90ecb65c56938fc2a45d71d7b741f04e5b9a674c2cc1 +B = 17478ff17cdd349bc5d37f5dc52106542139d5d61bccdd0d5bc233ac8e9cf54ddee1ba7c86822fd175209cca97fab +GCD = 1 + +A = 16449bbff3f02e684558cb401cbb885c2bd3f340d1f04e25dbfb1bd4d3d2c754019109386f05727a9ab643f4f6d256e +B = 2fab68d37b6b5d04c8bad87660ff3623dec88d1f12c0331a161d9294e3506f107939b3d4112b02098ae3858b35f638 +GCD = 2 + +A = 4969b50d1cb296de0575d6c4aabc96a7af93feef5a9b1a45b5fe47466d884eeaacbead767ac085cfd0ebaaa300d17b2e +B = -14cd23e34c8ecec92f5b03dc7b23374566ecd5981d368a8421c7f40e0b2c64bc710690feccd6be52028af985103e9260d +GCD = 3 + +A = -1e147a7d54c2e3175d29ddfb4da1fd04f3235bedfad0bf6dfb86bd36335e214d8c40fe968d42ad3ce6383e22b18dffd20ea +B = e50a4e27df90f5f29fa0f4c33a7b3e0b194aee3d1dcb22c0cbd50640546c9248729904e9b7bb96f7e3e9c42edeadf2e7df +GCD = 1 + +A = -4fc9395d1de5a27737807b3324a95c542eb13f76fc9c02e5437e9502c1f8eb78a678c64d2fb66d529779299d4b19224a1324 +B = -1e0ee0eab241ab56a2548c98fc0cce9b4d301bccb5d8ca726cf3bc76b76f8e9d256c60361d2083947df784ffdbcd764e89273 +GCD = 1 + +A = 8e13879d78637b80f874ff12889a7429703e9457a1ea592f623363b4886d55dad202064d308d1cba1d66cb3c4eeb7821174ceb +B = -1829ff03ec9313562088b8c9c62cf2a102b81800192d55bdbe00d632e05c952773251f775902a7364e0c578adeea635240855d0 +GCD = 1 + +A = 744c17672b4fb3cade089b2cbce0e508bd632b6d558c1d0cdf9744ab49596051884895f44f348840d1ded9aace7984d76cb76c2b +B = db0fc616f3da7665f4475f992e665cf5e50df858dd74e7038dbc484839edaaa5c932d2e74bd48c5ad5cf329e37b7094e65da1a0 +GCD = 1 + +A = -f7e708a624b8a7e892d9e4e3b6749a52244025c60d5cb91efa8bf3173a167af9adff2ff15cd15eb099346fabd51435e9d448aab243 +B = -187a5538713ed86be39629eee68dbf708f05f980b7c8ab8c083faf67fcdb19219b196a1f54d782c922e1c045646f7e65ed2e4c19013 +GCD = 1 + +A = af952df8a3f4a23bba59f89a4a8d831018b439aa7ba275ac728a34383cc1cabbbbc29b85341e8c8fd7de4ee59ff4a5929a4a1f621841 +B = e89cbcd3fb82682cd2710940b1135ce5b3e96a9313dea51c97a39db8a6baddcef27c5158261802aa516abb45b3af67f65550284dcdf8 +GCD = 1 + +A = 65e38d0c1b6ae3147288af950370215e9ab97a73f5620f4494bbe3727ab930889e1289f28a2f1f99592116dad19e4accfe14922ba67467 +B = 430b97e4d97b1897a823d716b8ee087cb4d591b5ca15121450d55d988fe65d53e13451a5ba010e8ef382b28ecbbe7ecabb34de61fa008 +GCD = 1 + +A = a84023af42f1d1f81abec3f39fd7a85319d25a6a14bb3b5b48f699cab506c5aa701754bd68aec40214eb7bded5bc3d502d4cfd970d17ed02 +B = 1997f443a82913a6ff5f0f50739a1b5fffe3fa4ae68b46e28f4e9e124f80efc75c345182cd93c86e79fa57f78a902fccd7d6c6c2646c98644 +GCD = 12 + +A = 144f099dcc5d0cc0307d510cfaf2b2d4d5cc89e85afe269690ab1094fe5734b1e1a9018583ffa7cdc172b02740002669bafa6fb172a35e7ca26 +B = 18d743f978c4ede6b840d5cf194584fb5d20957bae0f74e877f364a464f0f39729b81e48dbfcf4e1c954d9f7cad60a663947b2f1792f1870cb3 +GCD = 1 + +A = e6b25ce1ce3b44ac6362793a743d43f2fd7a6c584bf9522c65cd2768446cdb5a980cbca31d2cc90ca354aa21dae34ea13407f3519c07ebde3106 +B = 16f4475cea77b5debeb310d35a9b057e6bfc4bc7edbb4691bd97a8124e9b07605420d358c98435f7ab522559d7ebc271fa72f1c46c2b1a7cba71e +GCD = a + +A = -146a72ffff0699d3e6b78cc3a2953b679f4ef60a191b71c55c2534cb2df65d7ee880b095e9233fa763c7ebe136580153676c45b10471f8765b9facf +B = 1d39f16825125ef77d02c662b4743c387941021b7fe13a19cc1caa57275e885d0bfdb92c00ae447c707c62c99d9dcfae1f8e38576829be6ddf02c48 +GCD = 1 + +A = -18cfca9d12d66050fe7487725037b144328c17d0970d1a357e3b6309b4011ae23b496cce3f5e01bdc40dff57379e7ab5479e2f8c4da8acf6905551aa1 +B = 7a33f9b10a683ae6577fbd665dc695679cc9f13d5b55c6340ef4ba8682091f39e5b32fb0d7b49e92cb6344b379f71f022fa6d0d14cf043af352ab3eb +GCD = 1 + +A = 1308073b625424e7256155e552c7360479c8daf15dbf28b58ce1a32e71f23391724ca434dcfb8d943f6b1c2605283120b681dcb6fa7e32acacbbb096116 +B = 1368952d59b7beab2529615ed13a82114238d6970ab01f647ad74db8775517832c78b561179ccd9b7d942a0e95ee60b73a2b2da65d15a65d4780251e5ed +GCD = 1 + +A = 19e0429f04f48ddbde5c799eb68fc42f16c87e7ad846ec23ca067f6a2646d2439c56fcac63f945ea4e46735ca8aa9861f0f2ae60bf15d0d2b763d4bea4cb8 +B = e92ac7c91d3df4339a4ecf2e7eb7bba54ccf5713550f7be0ce1e88dffc9b9b1f798c96dc8df474d0bd2398620db3fedd6781c803dc58e37aeacbc37f2b11 +GCD = 3 + +A = -d0574568670990b9006ef9d88fa6a2910b3d4368ba9f9ae1156df24a08f2785a9b95413c8ffea0ca3fc6d2819753f7504af98908299c423a538638adebca38 +B = 1a47702f41a8d8b06beed8c1274249ba4d1894f23d643e334a7cbb467c564c34487abe3d4e10a5ea413d86bf69b3d3d39bd8f41124fb2e2c75ab232b2dbeb9d +GCD = 5 + +A = 17472527c16c791804743e11eac47f9cde83d38afaaf015cab6b1977730d817f080e4ab864852a1bebef756c3280f010ce83bb247b9ea9854eb6c273c4495bf66 +B = ce282ec890884d87c803432eca66ae10b1381d77afde9394757e40dea8ead57a84ffa155c50d6da8742422f0ee42e056b6b9a698916dcbfd8a8c62b536792aa5 +GCD = 1 + +A = -10bae6fe741604054f4801ccf4d310c10a24bad458d2bb9e536ac071b994326ce4dded82c19c73a82c75488ead4b4ca21abcec77fb208c90ee461bf27085a57ae45 +B = 1a5b9c18e755870012147afe400f974c1ac17ac5921171d3d9a4c310a5c0d433e2afd1a2077106220a0b7324ed169c4371a23f8f7334969a6108c888819c897efad +GCD = 1 + +A = -1b881dda84158e8b75ae4caefa5b58182acbaf10b121d5b987a4e9cbddcab844ad579b33f840859f03e4e9d9d45715df06a4a84f72c3b14b0cd7919955da3b5d9e4d2 +B = 17b67dd4fbc0f03dba4c5ce29b57d3ccd3b591fe72c6b9419f0cd4e2aa0a752e009f596bfa5eea0ed564543e5b1f2f8554823248f3163fb142bcf4df93bcecdc03ef9 +GCD = 13 + +A = 68692ec39565ec8b666eb15e4aa878ebe4ab71302b9a88f412d759767504f93d420827dd20d5b9a61d3f0f6b34fb2b7d9290a31b66866695d7ba9a2e841122a25f6e40 +B = 1bdd40ee550fc1521309d51528fd00d1b44b79a3f592e576b44a72ce835016d140aaf690cd7d0cae330d81e5cadd8ce4c42ba04e9e1dad875fd8ca7cb86bc339a3bbf5d +GCD = 5 + +A = -b789b091157cf3ebf83eccc253948c80fc5eb6115b91c6b748222aefcac64f253f15254968220d1b2920c601d6b958c048fbf5785f36a0019ec3d914cfdc1bf602ae958 +B = 63e7831ece851cf35b876ed6306cbccf0eecfbcb0061cfafd7299b49b92e7ab6575691a469b971358317debc3aeeb94b0473266ff71e4f04c85d940699de6106ab9788e0 +GCD = 8 + +A = 14a723c68069b43cad6a293259204444b8003896d1773d0c231178e301d9441a82c088657e4015d09f24da93f3d875ede31f40f2c3e499ee8b3d17b1987c6925a1ab01389d7 +B = fd3e117df477741462b13253420e116370277ac2057ebaf74159ad2e661d833686d7dd0bf12f1932de367b4daef6995db0ac7dcae12f3a1aa5cdd5fc7233fad25ccd0b7f35 +GCD = 1 + +A = f00a97e17eace2dfbdf29081a798cb9df9d47fad119921b4d17469adcb2f65bc5ae8003b1734ac9f2e66310b3191c99e2ea20f51ac8944ea4c3a4c03f47170a7d34672cac622 +B = 5dd290b928e8acb0423f56526f4064d68165518b250cc77b71f0b10c9e9d78953a4936f8dfef579ebdd69e94985dbacc50d89a74b032cbbf8570154f5e7961c530ae924a61f3 +GCD = 3 + +A = -2c19e437e1dd0eaa6ef2810e7940e1dfc00b93a94b0698d8403824cc96c38b7709ce158b113df830321e1cf7bc01d5417244d1a00801b983794e523f8e9478bb142f1740ec35f8 +B = e46307358b999c6a166c82f5f7883fa2499833e12f4a9bfa5bd095684751fbf8eed10c7cff6b01d47da3caa8be0123005f9d5fd418071369f6a3ed1d6f79c9176ba33c137f1a7f +GCD = 5 + +A = -1ba5e202200eb9e7323b325ba3edbfd42682d4436e4ac17de47a07a2e974c37edf68d5cb6eefc11560a5feb1e462dfbb3506efe6166b5527c5ace949bd34ecaeb4059d5ddf6a2acc4 +B = 1f180b6334ee7a453779a360ad011ac34f00eca053d94aced8ec69c2f868655578717917ce46f903b498b8a74e4fd9540b8c83e7668d9c2d5331a1a8b4a8be7fc1eaa878a7a8d0e7c +GCD = 4 + +A = -1c336e766b6012c270dd2c39cb01ca144ea30c905997e1db3e8ac10484f6f47dd124671d62f0dd3e7e301195f7f44661af47b3c30bc40c3fbcfb10ca43d64b4fbfc00dcc9689c955945 +B = 119fcbaa4b1d7f4a044dee464425c148c0a56dc0efc6e9a7c9d698c974535497000e6e900ad1cac61fe0c05edc705bc13d053a5f4e09ab733b1f7ce291f835c9a1c63ca4ba942a53c98 +GCD = 1 + +A = 1d98bf3a71b81114b19923c433f6ee23ef76f0e00bae5f93541040646103430e28fbf778a537a3e310348126049d8847df6110889d623df5e10b5377cc2491e9ba7cac3e16d7dca7bca4e +B = -2f3a8298c2d14f45cc22d7f61860b13e4ef909569d1c060f229702fbc45a92a3332ef699fa45f07bc7fae4213920be0731fae62918b05031764749dbbe98614b2d47f9b3476b6029b737 +GCD = 7 + +A = 188940390dea60de153bcbcb03aa4d3757e9226da394f2d27224f68b067986cdfdc0ea0ea05941f9a38db68fdd26bfa40a4ca69f3fb55ad3ef7a54f41c43547457f59f3a5efc056346d5057 +B = -1c3b8fc51bace9ec1cc95ed06a72b66101e246387c6c67c8b24f60b366e1351ded4ac2e6bb9ac787ff511f9b5c4316001d4b6d8c0cac831ad1c7bf9b53e504bfa12366ee06536f5b14f4ee +GCD = 1 + +A = 17b87983b5c88cc7c1b349fc1a93cc7142333363db67a21bbfc4f9bfc963045c47651039c069d5908787c6944820a8081d7224c3d3ca59c04a311e458452897a9e41f137834c21c5eb7f75378 +B = -15a7a339a4a0cd99540f3387ecef5796c8138c715017477b870718bfc2d84b54947b282e4aae25b8bda01b62598bb43e6fd7d0390a7ccc53c22d4dd0d1e6277e351a93fb09e1a3dadbe2c0072 +GCD = 2 + +A = -1ff3728d4381168a8939ca71b3274288fdf6c3f7fe7e648eb353888463bd456f7a4af2a78b3069bdfa6dd05f9bc795bba29bf879d8ecffa7c60ecb300f465368dc261ac337a2aa516e634f7ef7 +B = -3566c80416f729f4630fa19d45552f1388a42e34bc4f085b3a228b4a1d21e8d64b7f8002efd9c462860f1792448c7df3b6fb6387c5a9f81a3853ae0b4df4bcee54ee093bc904c4c8cb905a993b +GCD = 1 + +A = -f86ceadcc60272df13bd98d6ac375821dfaf9ad8f663f65aeabae09d11cccaf87d69ef9f39da40c649ec38bf158578d72e8013868bea2a1a34635184237af7b8cd18af3735ecffff67a066566f79 +B = d8ae668e6ec63b22fca2d0dc48579cc6d64bd321f618a367d87ff161b7a17f00d2795bab9ae68a1c93b9ed750133254ab12724a5c6c315f6ad6701456c33b2e0fa337d8dbc93cb4a18e4014afb2f +GCD = 1 + +A = 1e61a136590b6e980e54135800b52a0823beac18d98205aa1438b1aa3b755f13e3c8aa921ba47319040176a3d8951a842978b0bd8f4d80da92d1551f4feaf71164196dbd9ad0f81c155cdf9402e84a9 +B = -c6e5ba1cb842d572cf5875e3f6565208d2091e491447dd4a090dc0de80c00b29567bcb831b83bf610ad2b5cf1f2ab9aed47836b036711b43c5d0ebbc48d876a61e02be1dec4e89e677dd808388f674 +GCD = 1 + +A = -1f2c93caccde7852e99e65d0b73fd82318041bd225aeeb6f80b21c90d055eaa0607f042dbd9b66960e0ccbeeca32a23a8fd19518f5146e7aa6dd02a0946a3eeecd5f5f000ee9ead8874503624fe965d83 +B = b0aa22dfb0cd46d1462aa02933c65ab242d274fd7271a555762205f1c791821b5aabe781d3ebf932eb8f264d8604e9c14cb4f3b71527593a0658e4a00ea1b7688634677e5effb0b112a7426332dcd2ee +GCD = 1 + +A = -1ece1a5ea104db93ce3159622fb40a5c37ae8e427641f7a972892d564aa3332739a60f4ab34e757d460bc5850e766c86d70c77c05d8b8d454dd66fa1e691406bad49a8046b01970848fae8ecd8e343d2f60 +B = 934ccda0b23ccba867a230fa187447289f784f98faffe952f686f40da20a319ccf8f134c111a93ecb31f8c2dbbb644420a50d3c472ed37c7393197a65cfce72a938f317360bca5a930dd2ff196522dcf4b +GCD = 1 + +A = 1f8446db527a96e2244e1956d36c00c5c90823512575b79b39971de168f1a6096b4cf705f441b6c419d696c41db8b67f87847fa8333cb9bdcce9958b241328c9437125c2bd983324ef8bed0e7ca202c203cbf +B = 16f9bd5fbf45d95934429f912b2eea8b346633cf09127be615232e999ec111e73848578b412c42098917d334c9897116c3bf4607b4c8110bfb01a14e8f928ea29d4065101885177676b84438039d6cef0e164 +GCD = 1 + +A = 1de739d426f8065659d826324e172186a72d89269fb3a1699d62e3d7a2cb096cc89a23de0b762e8d04ff04308ed0317b11b792cfc4030547c1b2c28dcb0b71feefd1519af3d33b199ad6d2d88047047af179801 +B = -139d796fb7325f9633c2069b568a211d6b2843e11646d2ed3689bc44e03e2f30f604f51b5352edaf85032215f5d00188c31fab2aea7edd0b62dbea241ff91e436a075ebfc38fc2887ee0d116137ba586b2d66b1 +GCD = 1 + +A = 17e6e6d3eefab6ae7c054226765e57940a06ccd9759594a50d322804c1f04ee2db2cc726afe26a5880eae2d3de02b9c3fa18129861b4dfe83a7f945f80843f35cf44b77b72bccb62621cc76ab4e1145671cf4e1fb +B = -16f61bdeab1cd4fb7c477eadd4a0f14c23bdf8d1f97c297c0576e1e6b9f554bee42dc68535d8d5d4166b906adea41ede1e562d08064beb6e8d01cb48b81eb02880237c4bd78153fadb293747370d284f319a3fede +GCD = 1 + +A = 9720f247b2290a3ddf543340c6ac23654cf075fe957c131af99a28844bc5c5c2b9f3cfe1d8d68dbecdfa7086b889a493ddb409e0b363793753a5ff624cdb4f93e89cc39e7f71128469218907e853b026b03128260c +B = -beab5b719dcedd902a7fee587de6dfac9aa291d8548c350e628b824e08d20ebf45bbf502cc3c5c6f17143ad8be1577578863b7fc648225bb59f03ac32819a381952e2fa90ca3d6b154cc82b80858b7fd12bc972c0f +GCD = 1 + +A = -1f47a70253ece49019932a4bc36fa2e249343bad2a1b93b0f1343ff5887bc261465ff81ddc1223c4692d0a58ef0e5561221ec2d9ee6436194d5a90659af8e58cd411bfc47b1b1584ce8032f3939b4fb16c87516c620f6 +B = 1dd2bb04a9d252dd81d985556a285e2a16132f95a17392388f52bb2e5b2793d476db06426479a1d330141198d00457728e96d2a676ab0d186ed44990c548559c1576a2eea8db4688818777b898ecd8b8eb0c035f8108d +GCD = 1 + +A = 131ca0dbb4eccd76f3985b15fd623877feafd86f2b1c5c6f6c5d65a4fafbe25c168e633a81a9687f8625767927036b57ef7aa1830169dfe4661e534c72c5863b26ef4c7331d36ff98cd3d31c65f60a123dd7750bd120bbe +B = 143a3bc7729aa158fdabfb8fcd7e420f5e0a506e09455645f2fcbf3caa29b023536df12667d569382c1c3aef94f332423a8ba46b8976bda06d077e9a4355ee41d70a7f8d1e9f10f41b724435e11ed2f32c640afd96e20a5 +GCD = 1 + +A = 1b9e7f32245d67206cfc158b05701523cab7178eeb22ab828e65ee6b8cdab4ec70dc3c132fe71942e3e8443f813de8de7bfde4bd3c19c1d0cd9b8cb288a56a7c59229cdfe6142724a5c4915b6e45e07439fe4aa5c1ab75074 +B = -8b264b200be85f0df34c774a95330d8b4c3e4cc6272bcef2e4fb5534abc99f07588258781676b1a9894b37928ae0feca903ba3336ab532930f2b5f0982c0288faa02d6cc613711d0aa302d7ec7d8652789cb597d3a137ac0 +GCD = 4 + +A = 7ffda115ed00ec00cbdd3db181fb544168fe8d7b3738c4bbe6d43940d806ab5b6000abba31874954cb0156d969ba61f8cc1ea1eb339ac787c285e1800728c71fd6d762a8724691419808379a5946b15ac5e3a50761a1a610b7 +B = d86a6c78030f585e02890588388cbc033f1aa01b7c6bd777ddf13d4f39b7c6417c480d9b5b6c05bc7c1e5881a7fbde0af614099f4ea77205ac335de0a931f9e172d626d86cd2592662a7347220fb70027d00aa3739eb2d4033 +GCD = 1 + +A = -195b1e890246f1474a735bc881350367dc24dd5029ccc32130add6cb9c0cbee5984c95c5a0ee9dd3bfac814424e24322b62ea995f6bdb82b1558f0052edb830af5a6bc57e5887d671cb6d29ff71157378f6dbc5d1543aba4e8560 +B = 240d197ebdd352432661a8b299dea9987747d46daee9e83fa04e7aa5caa54c37430fb4dc7e011ee0d85273910e517089898029c328a676b95eaead4284628ff34690adbbf4f180f4c51ea9365de02fe759ee91c2110200d1e261 +GCD = 1 + +A = 1f450515a64fe303b37e2b5e29526e427eb940a31ceec2e9025e668794aebd10e355c9a3df9f0126bc4003e5acefc321811e910c9e3420dca3483914d4868f80ac2ca6c069cf1cd7afefa10de51e19a46622ca936883ada39a3cee3 +B = -7fb7ce1bbd8bed6c8197dd7f3f87c0db2c2bb660f4d044fc5ec425a2dbc7a32e1b882cbd735439359499e21124aa1cdb833bc9ad2583a37f961aaec7b811a9d41e0f3716f76bd5aa82223290ed5ea6b296dea976768d81c0165964 +GCD = 1 + +A = -1d4c92758a0442547ebda5989a829f649e7d9b07e35d468d3701ba9bd72185d44bc32af11a3014d1ea3d334671f96bfaa285a942c4c0389b5d15bb2b2854bc0975536feea1fc88d827c6833f4d72edd84f4bc931c41f4049f1a69983a +B = 2c70638a67acd4636028a8c9245d68e2866688b35c85bcb62c5ee970c9580a23d9baa4be36f0ac0d4b7c3b2dbaf3037da13590c0487e2c0615894a26288d598968e4c4e8318f60ee78b496dcb213b4f27d906d3070fb222f7d5facbd +GCD = 1 + +A = dfa8e7c654bc1859cd62685a5d01892744fb5e0d5c751be4464833a9d125236b1c74635832d43352c5d3e6370cec200fefab9e2379156506e3bfdef641971b7bfaa76248cb1785d8d096c87f36d18b8465d7e01e167825079b9fc82f93 +B = 2aaf7caeed892768e9ee5fa5e5c545a1a9f6765f23814c65aa175ff46edfc9ccfe7d4fe3c048ab69b8bb7934937c36348535b9530dad20e7375474fd465a16301cfe8c19ef49e6f3e84dc13cea97ac9e0614c64808e2431cb261f440bb +GCD = 1 + +A = fb48d53863a542e2b3f312c9eb5d4c1645beff51aca1e6333f5d4aafa9b530d1ebc68127c911f08c029a0a81d80beb4b184420c2427cfae9754629532d14e04b0d65701fea5b4a618471ad2c85f1acc66eddb4d5e856d960ee329f22c235 +B = -15164ba1f25a99e064cbb380e64f10134e1210ef97ef9a356bfe9c7d49e2c7a973f9926abd603d6ad95c54062e420b1740fa6b99e5538d118dd8c8b70e4941defe4a8174d5e450019fa5a2343309cf8b5e3d7451a7556c239216d27ae4a43 +GCD = 1 + +A = -19293e4a1cbf995b3fcd9f8958b1225d5b91e1e97d44433868bdb418d7302c33b0471c3e90dc1ee9243f4d4e0a14965baccd2d710b96f47c1ceb9f7acd767fc3e343001ea7deb74203b71b5aa016e3f65521f7a784afb1e9e4c8bc66967d1ad +B = 1371e2b1544befe4b445c8a08fdebcd80b6aa7457c4bff362bdc3860f4cad1220969fdae3e0ded976bee00723545348bc890a7f983184cd7403b37a1677039b47a9c7d88f44829404bf81ea3d00ca195f66d798443969b42c272ff1c053d3f +GCD = 1 + +A = -1111d3fd9856b58585345d515e04ed0fe6aab671da3bc8ea033baf7dfde3ac66ac6d532d6f1ebc1968a28afbed56324ae8e7079437cbd4cc6d274c4cd04ad828b1365012b4ac45ed5d8ff6dc829cdc0dc28fbe7892cc4e02cd51d613084fc282b +B = -1cb3c8c28f4e91ca61b515f06010c4d62f41ea3bb46a6958919f5726ce66b5bab4e139f5af1b9bccf8e4d89d3c328ffc01b81ba513cac4dc452e30b6e2866eed0fb9f35c80d00259b949fb9f5ce18ccf18de63b7ad00482b25551e5bd674dff5e +GCD = 1 + +A = 195670341878824e78dbcd7a9bbdf01d7d54e01cfa117f739ab817058ad46dd5dac32470badf593199e18435430480e2fee254b3366d304b6836caa0dac60f72bd253d1609c552c2ba17344f0cb31b04af26892beef7d8b6f3ce13ffd98a9f46883 +B = -c4f0453103a641d9ed6f43d346a46d13f27db35d1c59e8c2b41dcef25d2973606b661bb1146a67605dac9d6c6206ad088e03e7f4fcc9b87359016d65c8cea153ea38c9d05f14f4d8bfebf6a8581f1a8d795180dcbfc1e6f4d6632196a2a160f59c +GCD = 1 + +A = -1d79245983fa01e4d163aff7ce0af8f4e7c6163f72b9742bee42d32649e1301902407ea0ad95f4257c606d23322c8e7d40cc85c414f7ba8e1261e17cb11cd31e41c1cedf62f8dc3598197c4e360c9db2de4b61907f08190c6e366d5367d22f1ef954 +B = 1d9b83afae0a98265e6db4d0d1ad6a3347365ac638a67422215bc55df542aa453696dd2d204b88881a327d6c9a94857ff791abc1c93af7433a4c454e2ca5bbc501e7c97d12032aea304c451bf60df7c09ab1d0fbf36d0c0f78fb68d8789fa33b6c7fa +GCD = 2 + +A = 799e777775d7394f7a77c6db8e4529df86e558329770e19f3e6a0c3265f977ab9136d17189fc03b4f9bfc15542f043bf36bd23b4ac5f588fbc3397d8a07e4fd0637555c048f0b409dc95144e043ae7eb3f7237220b4e69ea9e9504c5abe51f8c59a5af +B = -19ea3656e1da17cc2f354c7041dda3f6bb851ac01796d1eb1cf5af31860a06b2293b4aa37d8bab04ff4536f6aeea6832fb43e4fc53d9d1b23b9af9740c3b95a8ab617b5c2e001dd28d4510e6a5365031935b130de2d966f38fe88ec2262d4f5ced94252 +GCD = 1 + +A = 1310e5826ac225e8b87d9522cbbad948409dd85504c259432ea240107c71966abed2f99d171143d1fe40a72b2bb04e40b60eacd3991599870e6a9895e1c13fbdad65bf1f65e80cefd5106d1f5801f9a0a0b69c9ddbf5296023b5293a4bca25794eac6a85d +B = -b0ab1e364364263b095716435b5707d8df942a74cbedffb7a8c7839866a3cbc9d7e7ebc7bd595de37e3eae9b911c7b32c4f89f97914da0c34734ce14f6c3a044c29121abc8a2cf4c66c97add14ff7abc6948bae778ad8e2312c88811fed28d99fd7892fe +GCD = 1 + +A = -38e054e10212393c1e06b81ea801e5e3f9deb19f04a0d1859eabd710e6a8d84127aa983013a617df35b2490fc1138a03f8086250bfd3c10caea0e135f305243518e68f121f655adbc2e9150a8786534b2f1bb8041ca6507934892e9ff80eb6c48bfe2631b0 +B = b02ad650b74479c61cd2c3e30a752764532ddd364ea6971b81a4ff59eaa31f075291f2efa81ea898ef97bbfcd526c54f76a1b3efa9944bf97fc051cb9bd16a7a92c1841a93c565a720c4a12c36fe24869692e88f5760a6fb08065f1a3dbc9e86069733148e +GCD = 2 + +A = 10294a7bef1935e40e5d5a169118fae2dfee679dd25e71e35f9b265adb49818cbd56740d5f91657300467c7f0cce26b1b5f7c9b5f37ae8bac26c07721ae24adb06de97c1d3befd4a162141bf45c90187a1a4c662167b7927cf7e7f016b8556556ba2b40fd2e1c +B = 1c7889e668fbb811a850d939a8d967d910b670ef4937a5aee3c0c8ac0255dab86be09bb5c65e2c08932a949dfba40298345cb4ba26ff9c69dfd39c1674c784e5498947a96421deb07ad293448809a9ca4bc1f35620069ca1d3b3b31126ee27739eba6147df8 +GCD = 4 + +A = 193093f8ff4eeeecf48441b80ea2d337dce52077eaa3044fa89638a72cb9362d1b6603251fe2794233ec0afa3df79f8816ebb6c525f5f4870f9ab2379ea5e6ae5cb79bbd4a3cca46f35b5c9dd7c2b4b31624da200c1ad5f8e44447d66048a964d69cad9599bc710 +B = 1dbbb0a1a452b0c5416ea19b76984d4faa77a040e3f45694523ad18fa0554a3ac0613158177eb3c5b88a6bd757dd00f2cc7b53641828f50790fc66f5af17b74d068a4a8c398877d176f7856342051854c77e6d0b197a18dfe98bbd4a3008451f9674785a362b1df +GCD = 1 + +A = -adf652d2278ac55fc954b53f5d1ad856912ee4c727eb36a40739803d7fe32437a67aaa0a59cc8394ea84eb096a11956dc611a6fb0d846ac7ec107d5e08e092fc98f34094040845dce29730348500284feca0dd0bf723da6c1a9a79409b3310be848e7b88b11ac3b +B = 27fa57c1c92a3a60d9708160a8996db66fe590f75ed0fb00c2d6243ff151e9d9dc7eccbf46953a6b0f7b44ae1199b8c61237d1c7410ed413b5fe6b61b5a628e8a387a77e0c59ea4354f9a61db2df57227a9b4acc869d856b849cb20042485034eaf20f9e33e42312 +GCD = 3 + +A = -14c7d5b904755b8f4d20b0e23b6367aeb453e637b3b5583fcc131938e3a10527f9db281cfb61fa718fec45a1beb19274757ce6ad482caddb80426f63842371ea328102f57d5221fd89324b82e2d091350a0ce628877611d2d16e9674f003199f0368a2beb092e68b181 +B = -1701edb25940b44dfecda504eaa7d092857f46a7da0687ba606388189bb355b6ca8f1a80617eb883faec51709d5ccf63474be8e6af008ad7296a69f47d6a99ee274d420685530e521a4186d327829f0b2be15e6816f22c1ed3f8e5e195e6181d9e76378c0b02e49a670 +GCD = 1 + +A = -11fe62efdd49137f4171fd1cf7e05d571bc83ecf88e4f25d548aa6d48ac468a1056cfb47f83f1851c5aa5bf37860307bdc4ae21e5641c830eeca0efc1d952352c6da051f2a39931d78e6eb9cabe6694a7b3546085965bb1c8b1911af911faa85d726cdf7995812ed8b4f9 +B = -1e18be71d63252d88a9ba24a4b496307d4ebb799dc8d7d51f0d5bf8c25df4809a06bf5de7ca330c380f4e3e32605340070cc24614ce8c403fb40dbf1a1bfee996121b352acba9b98420b5f34d9cb1e04f75304908fdf23d57ded0e8e3e1cbfdc11c8f37b40b5739393672 +GCD = 1 + +A = 1e26106a038f96fefa81499b8c071f950f01173fd855cfcffe8efac710846fc4c8acc3176ec63b16720c2bf8aa2f8ae41084e3808824f9c87f8af8b131928d81bfcb203873cabca842c63e5b572f007adc1f21462498c32205ab9a6609a5669b47ceec49c155c874ccc3ba7 +B = -301ca6ea04efce6b833130e716a3c7d33de943c8751bd1b6743247c7b278c2419c8f88346b6dce45c67b3a6248f8114e978fd982f1096f4a49d99037a18e1cdf51546b18f703cb342a6c7511323b25e0da5120703b27605513cdc934026f86a8390ea3cb2a809820245a5d +GCD = 1 + +A = -1235c5a143af75f8ee43a9ae17b3422c29732581d99af2cf7caebc8534e0c9083ee532c9e5357b663e5d0895b8d06ba34521dc4f27582e94c20f6fc1bec19a81a5c0e6f3db249132000fe8530676ee7f6104d9440192acfc43a2bd15be5af4e1c702fcecd3f365f81befdb68f +B = -c59787911815bbc53dbd825493b8114bb6925cf35d5ad5572be33db2134cff7030bfe1b1544fd9c842178c1d8a80a06ed23feb08605425bf8788503a8ab43fcd03737993b41bcf84eee4bfa6d09e753314fad68f7d78ab8c30943e0e4fd8f552126d69d53475851ad79de556 +GCD = 1 + +A = 3984340a1a2282fc4f08d749f6acf3c49d69be244609d0965ca430dace8147b5c07dec0a2691cbf96c945fca9447de446b9f7e45f328903daf574b7fca299742d4b3c632bd48cc32ee3db771459acb73fda9277c746f4ff5c08161cd1336c4d2a1392b676886b098889715032d +B = 14569bacb60b94aff13c409f7c045bc2a40f6e7202a61ff7ad367c23aed1f13849b9e67462ca9d4464c8b200ebb5b06d7151047792ab9aa5b043a67883f2d32cc9983004b0e7df001cbfe1fb30da2e81164c27590a4b3946d9a0f529d1803e314d095da05d9732ebfa6e1e74cfc +GCD = 1 + +A = -9cc3c8b4daa1042936979deee5a67644d69565aa1acf2ae7b017172e28c01be4df5af1bd30cebd029153f49891fbfaa35f1ff7797478223598d1203da831290b41a31914c20f5d1a636ee142ca61521b3be2bc5ef09992c56722ff282dccbdbf7ec30457625b31f873b1e4353460 +B = -b3bdc786eda280a4f65920f842303f33434da1f7f010f22f0d019daa3b4228fcbd7d1cacab23b414b4ca50a24106fd779eace714b765993fcbaf154ad863e448bd7edb119bfdefacec961a2eb2d95875b5e24cc3678facbf28250d34cd199bd76a1faf2ce777c14dea56b9841bd7 +GCD = 1 + +A = -f4d600ca23119a9bf6b42b7ae208c12493fff374f899bafb351bffab0fa299892e17377343b4a2a6e2d697266f4acb7f1b1a463b508c98ff60b5a5ca4314b4a70f65011c745bff7a02e0839427eaebf8b420a32d66d11adcf3612655cf46d5246ea4aa1250305c87f476ed61d5cd7a +B = -122a8d2b5fbca94051404e1e454ce748febc63620003c5c7eb6d7685f0a6ee80d68c64c1e873c653c6ec832581d6f6e3b3c7bef6ee176ac2246a032334b9998627e704f36e959c28ed744f7e89981721e986fcbfca1bb79656eda9608c3194ea5badb6abe7fa27e01a491542deaa9e3 +GCD = 1 + +A = -12814a364322a7beee32fa9d170d8ff2d6037a43c2d1a37f3d9a8b1fa5cef44194d4255d693355fcf7d6d9750e000bb3374f139f0731564e426a3e67c3577eba178bdd3a8d2d1145c7b2a260fb28ad8dea6381af89cb39e23a68b7ac0d891be092251613d049bf7ab479d1dba3de0e507 +B = 1539c5e522e924f07ba6be9f60db8a2db2c78e3b84585ac17a13042877ac2d027cbaa88e9f45c758f35df06308da1d2626dd6be9ed3abb102295df3cbeacc6b2adcc739c772a3a9c9320e79316ab7db6c32310869aeff56d1bfd0fe0d9d316e1f06eedfe987b56dd3016ebe4d3e280039 +GCD = 1 + +A = 1538a9f244f81fd697238c252cb3bef4221e525bd915e27fc865674a8b24b25235b6c731c8af6ff1b8f32d818058e3b50c59929517bd728e1f76fb7d320a9b1a4e90cd7e2946eda39342441932c153f72d18fd73ee431dddd62e925916e7e6c4d835a919a371351c4fc0e182b86621a94bf +B = e127c6009413c8eff6ea59c73b1067d26c1ce42b5a3336b9fa85a4f57724a37734c18d028f2d669baa7d613153fdaf0e482759622c38dcc6aecb2838c577d5b12dc42b8a143dcbec33de26369ed59709410f7cf2cde4b0bd89167f5574fd606019d1bdb3581ba35d004a55bca651bc7b43 +GCD = 1 + +A = 1079904a6aa766e7147e5ea77b46d82825d452e657b39aef739ee1f3d4c3276cedb11e551f4e82f7a6f9e57b72a61e82ab37a15967435a63499336a0c7751db2ebfb83d4244fa1165175c8535b9900ab015c645b674f7347c99ba63a9a163657c37cd62cb49cd3ec9213e59ce4fff1834716e +B = 199d3d0b3b117127fa5ba38d7f82b35db7298f75c449ea8b2de1064e22d1ebf42cfe550c16b0e5a706826811b60d71e1dd05519aae7ac82fdb93f5618b6c0c0287d6089cdb8ef6dcb48e0f55495764163d488140f508f44240c9e2d591201359c316fef38fda4e8b231cc35e3b94b38d4b0a1 +GCD = 1 + +A = -16b5167c502df1df3ec2d91cc247b9b31e326956032cb1b7cfa885018cfac1c42621a1618ea396e6e64bc8b36425a134b2605dbbd058b0ba56ef4b8de60db35dd1816dcdc13246cd222b601257c8074e21777fd2cf3a9f46abbd1072f2d2645d89cc5fb9deb801950fd2106576c900006ff734f +B = -1d13fff4b34c8cd55aa288fed39984e6c6039e97ee645fd5a2b73ad24c2c691b62c9e3dc467397310e5d5e745ed5a844bf8b32e49042e0e86266ae76a4719c521d08e40297ad4018da5c0a3247e1806f600877d039fd7701c1eb8c47496541ffb866d4dca1a396940c3bdbd747f51db24f5b686 +GCD = 1 + +A = 1878cbd0524042789e86edcdc8c33eef67054ae306a259d4c6694d1d53e1955071d100ede14f98082b0e0b3889a003a67971d93dcc8dbac6e7ab2d18374af676b37b63df40b1f946be8d6fd3c14674d126824eb1863a1835d15c7fb44e743f036043beedd9bcccc1923d5f896c18635c401965bba +B = -1bec905d0c60dccad4532b0ce71db2e99659fa111f3bcaa53014bf14ee7013529f731688e09b7eaf07cffe0c4a80543f55943bab6490eff978b60fc27a032748821704314599c94bf7771588631f01ff4a18acaa61a8d6396efbc4bc16290ee7fa84eb41c16a83f7227afd362c0079937bd3870aa +GCD = 2 + +A = 1b5859b59da58a2da71faca1a38837689d2a654869396e6644c8c7608354e755caad3317300d106d3cc3d1e1beec59db994345c847edc5c8f38da278553bbd81f7dc862069ad3a4601c96b8624db0657b1b7688e5b1d1886e547766b980fe14f4830277435c213922a7c6dd8313e724aa3aff19f04c +B = 1e1faa796c2cfacd1e1df1803c8404c707111ca682181a69fe1fd5d5a1265d786991185826d6d8325890afeea0a7c8cd75bf9282c183e60d7c8e2af87567ead0bcc357fccad1726c112db0812e255825d7f27533df1e05520ae9db084bc1d51332e00c3a36dd143e2bfb0a0f01eafe10b8cabbaa8c6 +GCD = 6 + +A = 94a49f1fc933b6fa4ce049dca65bba377aa28279f3faf8396abc2bb4b8973aaa3e41cdf6786b2b916fc788ff918c02cca1ba9486da57e5a07a68b104f70d240018fbaaa7924a61da6bfbc2f03ee2b32b19000635a62b67049b5fb922c6dec2f4451a02873a57d68fe27f37d4f8068305810b1a8aa238 +B = -1c34702e8fea24f032904aeb6f78a37cac87017cfc781a46b477b5fc35a82e5c37e3fde3aaa813a037ac8724d9153ef7b2d361dc5a1922e8b20d7f31a45c6ad66287ecad59b296c5a851d6f99fe94b3a60f08c7561c7eb1903eacbb1e773945d24b7a2e317caf77b0d523d114d1375cdd06e863fd7577 +GCD = 1 + +A = -1f1ccca5533c2121ba01e3b30ac867352d401a256c29e05c9624f31f9527758e8c5b1dfa6cea3556bb738c70c18171bbe3f5245ebebd6ab6185c9795383060cd2b4212eb337b45181e7fff2570458d7013d74836784521240bf7a0fafe3c0762b94b9adb3f57c13611f9707369da300a36d459a05385b90 +B = -b06ade579cb5262e1341c317cb139ccd1757455a413b8dce25cf4e2cae6038bd0b8600d8bb79bac469b0403331f4ceed563041caa844dc7f7ec758f09b4191ed12170f5e3649e9417d346eb0618ba068c26888b9d5a45c76852afefe825940ca0a208e028a5f023c864b4304ffb47f99148bb9d2885c73 +GCD = 1 + +A = -167c33e1738a2d4a1c2f29a1f1a14748a4c3064e44987cff5f0bdea5322d340aff91d4061311be0b92e70b1303debc9f6f2576e91e9823db7aa90738d9695cb9efe9da700db2d7844bc3a3f8ea8591b76714c3779d8ba29998b9596d04377f140aca8e714f0aa3173e92e8f7ac129d4b83c762dbe82154cae +B = -1b9134739ec8af81a5007128d71e22fcded3040d414dcf844cd385bb3cb61648c63338d3c708afca2d8f32a82a6199acb8f9a60dbea4e3cd85b929829eb2e2c4c1800f2672a20194bfc35887cf96db94375e079f449b28a1c06198b74a8aa5b11d172b2bb91e6139ca077e7e9d5d79519aa836132df381b4d +GCD = 1 + +A = 939694bfe167dadfaef933887f49baef88bc9851ca5e977e395e7f493988ba1b3c276101111843ec153b15db6c2148e9ac60ed5f06d3349cb694b04137c2cbd71cb331a5b5ab4a90f8f4ae9290d69d3ca0d8981b530875b6d7d9db9c8ba09a3c066546116a7dac8a34c0ae4d5dcff4058ddbf1b24c938bbd5 +B = 188e2fcfa16300eabf7550e7bb493fb53b92442da890ce10fc4ba493103efd6afd5bb06ea1b0658da0079fe5b9aaf0c787eac6413a50cc687b691b5431c878c194a88902f81f532990acaf715f6163a7038739a220c115f75c44f75abef3e74759b664379c282caeb9b9b721acf7dee2e91a45e0ecb798dba89 +GCD = 1 + +A = 1ace227a0cbf863cbd6f6cfb62145383516cd36d819ca9506f9098ae53fb943a9080f8450ca21a5daf083924b9370dfc7212608d19cb7ef359dc23618a9480ff47e5a3f4b811980dc5fa1165b0f1aec88d28a1eda55edd694cfbb114548166c02e26922e5f52dc2ce83af42258897dd6c0b09ad691698e4bf45b +B = 1b9b335bb6d9dccb2f2ba12ffd92308bb7824410950e3643f70d32ba0a2273540c02b18256f14bd37e2ddbc6e5525e201ec9bb82248464f0f3167664b1ae729f0c29f1c74dd9d68da6a8a5b3042b3a9969b7e10c95b1bbf1cfac98b77314adb68368ffcf7f6aea762e736979bfa98296c96f15878a0d7bbbee785 +GCD = 1 + +A = 12f64c4ea9154b8f80755d20c76288dc3ce8edbe5ed0c3d1d57f29fac2582410a563382955b8060ec9db7642ea7ae03579d748b4b5c28da9c52655e17275734619586ec9fca406ecc58997a338a9e13b6706074549fa7850e3ba67013fa7aab8177da734f08521af8d475625330bc1d5097d2df45215fb9c29f71c +B = -9e6e781ac14f805a6063b79262c666edecc4f63e8ba7fe13ac13aca681711e2b44a3d282061dc2e5e24b908978fa878ae0ae0f950d98fcc47063a7b1425cdc8f9e3640b32730c66adf484633d0392171264dd6f47fb37aa6f7cda4cd77cd7e2e798a901753adde37211af119809e69aead821cb76fff71e897e630 +GCD = 4 + +A = 12761b7101002f4559b00ba7687c76abb7570c0404e993c6e88535a71f95e195cbe985f76965c84c0382790b3213d00a352764c41742864aebf46c7907d2426df91775b360fe5141ea80def72368151551b6e06b7fdba5d5ec9a84f36fd62ea8a234ebc3247d7485ae29ed106aadc87a54398e91acf6174c7c4108e6c +B = d59e9d7560f97d3c36ac6921b33af72fb9f42a241852c29900bc27d8e2be791ba33fd847ac1dbeded097c3684d08d868e6a750f62c036fa01c3772c05c8b5a9f46831dcfcd5047ccd35cfc20e404ba676266c7bff764b0b84485c2de9ab4faff880b189c42b0ce53e78ac3c19d09b056bd14f9387cb125c8dff2d42d +GCD = 1 + +A = -a357e493a884ee4d99b45450896404caa2f006ded907335b2b840bba78a04a75a856ea128770c0b7aab27eb56744d7d1accb7861aab23e9805b2ad712eeab69aa26c8f0a1497c5d9da0ac8ec5e3c36ea060574caa3b7cd5c108fb590db671897c58f5f26c78f24e29f054b1bcfe3e345efa0bde0d9d25c3dbeee6c7e15 +B = 3b171c506a7595480490b308d5295848c9a198d51b74042ea5fa9dd3cb40b865516f2762e889fe268655f629984577ceacb913949f73c4e2d8448001979843d04a2f7f43426dedc4a0ba26943bcf33bac63931627b2490ee304123f5e3ff49f07b13c65bc0fbf5ce2bb675e16209efdc5d648435aeee8663ce4b799ab8 +GCD = 1 + +A = 878d367075d5bbc764d3169441ca9bc06567b372848efa2c763c406f6082288e7b155023127914eb167ba822ce1fb4f77c6d0f4c8211c9d91ebada13599765b708d0c03f25ef7b3aaa5147274357fd6f9589a0c1ca2e0adbfbb8cd37fa1f283f356bd2754e4dca86d7a7b59cefc84392f3f39da132aadc21e621393eea8c +B = 286fa28479f863ba0655ec460acaeca416a5213a5cbf7c16982efd5a35d03cd222044b2c8515d6b97656977ccff126b6213bca344dee2cbf567c8611fd648d062076317b5b89cc37f754ef1ecfe0cc1b64a826a3dd79b3d030d816155db88164e6c1d20ad81afdd796f6c12b9c10a42ce683d116ff3284ec53ee74523611 +GCD = 1 + +A = -1b0f16d548eff49f6c89f73a9611ec14035a84d05af4812fbb2eba5db27354bf7e6c517d1e2ca3a71bb076020e89fe060dab0290c37f9faf1daa5dbee056e9778c87039378ad926c178c4f5f240b1eebf20ce1abd61689305ba2fa46800a8ffd89115f27977e7310dced082db1dcdccb359d55aaa6b99125b74bcc3b1363684 +B = 1546179c7ef3bdbd9d122d7d53746057a4749b6796eba332006854f340ceb86ca47fd221c6b17feca8725de22169e08a9c60b6af4c83a3fab9314a5de6874d1c0579bb93b650251d1407f957f8e05109dfe77603c04c3da92a40d2dcb2f1fbbb9a335832653965c3e14a579c62bdb9c3ae179bb6230229caa7d01383620f2e7 +GCD = 1 + +A = -9477943e646e890512b975233d5c2b6f30295850fc605fe4b5fd3ebf97e99ec33cb3ba8dc06f2b13d1d3795d4de9003abc1c72204b27a1b77fb643724e8a20c79c93c930556a72038848d24be395eabc4901b076f645825cf7cd8372e6543afdd85d6f2947e42372ef897b15c4a8376929ceaf383def428f748d4f40dfc0ee6f +B = -62089c0c1792712323c027efded0c6f9106f9f298e6ecda72795bd5dc430e41347e84a1bbf266b00ca58008a8b86564cabfd7f45b5b9cd0a7d16c41f627e43ab12a6100060ac5f059854ace166c28eff20af72f6359c26008863f0ac09fb85583a173bf487f7304be48c5129777169783620f7790d0da6044be47c290044ab9a +GCD = 1 + +A = -6caccf36a233543e132092e2ea688fa1d46510f190d4f6c9410e2d2a0299f63aa28609c57093f43cf67bf816cc87f8fac3d7f14cfad70b815a42f9980035b38b18d93576595dffcf7f7732303662d091bbaffd3fb56b97204b265e06455e28c040d7b47b22b71b2d489af5ed892f1cc968f6f8567c5dc2eeca6cd3f79369f24b +B = -38f7ec4ff7e5a9557bd0b88d436e684f6ecb99550b0efa916a6ecfe1320e5adac4d7c4efb57d05163b22584c705b5b143c4cf3e253f1f3a05ed2c1505abe8fed982e8e19aee09c93160109d7008ed6dc9d41b243736a0aca8913ced6cec18cefc9674d0edcfe2dcfdc81eeb2820ae8d4aa813ee7c2183c5539f58796774f2fc5 +GCD = 3 + +A = bd5d7c2ed417b2875e083725a902fb1a3e260cc68fc7f6c9ae750045f1e69301da60e054119696eb185f218ffe04a19d3faa6230b582e46a4481b6bd1c3a6c900980e0fda0c18338b7ec5f55a2686821da6a0ed5bd4b90cfd2548ed7921b71e6d393e4d39be4e7355c97becb125f1bd7c614400ecc8cd8c305ffc2f887bbe779 +B = 7017b20ff6fbce259291b53a91c09ece87a7834af86cb5dd3249b71ebbe462148a81ac3e653eff29fd544d729be28977384d334c8863f64ad9c2276b20030c87faa2f693e71036753c7e8b98aa27f8daf4399dd83a84a5abe2db8e04cf06b0606adfd321b76459777e265a036b6c59782d097836ee24a75b3cd3bf59d400eaa5 +GCD = 1 + +A = e33fe12dec47ad538509af5ea67a506814e787b475a4c9e809197c99afd80de66a1f68bfc177f86e8a409305fc9df40ffaed8740e63c5b6fb67b5960ff0444e91e661213e0a62728c37589ce834196bae6ddd6ee53607e41633d70af624731161ea7ac9fedb70b21688075fc0d6a3082b82a1a991b87f1cf3203bbbc3f7bc762 +B = -cfe76cfae757cedd8ca9186077b7fadca17250ce655e5b4af4f30ed872135b47a03ce3876e2850f90e1ce207459f31669eedaec4ebd4a0cb9ace3ea3b9687984388dc2bf298617d7ce6668566c5aaa030eefeb5c5f5665ef1a1c7ba23356167e5b76a2f79564020bbc263fa0f734c6f8913e4ad507aae1f65e3311c7bd7074b0 +GCD = 2 + +A = -756d0a0ff13b141172ebb82ed364f9a35d1022efbe41b1d0508443a8da55b7c49ae9ed5f804a22752e5629c61a58a9fc466625afee42c09f7a0fdfb520f43d762f1ae069bc4d93a8a869b78cf22f62ccc44e7af6884ca642e048665ba4fb13746dc887939db27c99944c3ced118828c3543e1f04b765e293258abbe0f486f044 +B = ed412544d4eec6ba5986a3b4dc091a5a29226e2a3f0f72296474024054fd3edfe2ab0afc23a4d967220820fff3b7cf0d8251166a76836264416362d0f5c30465d6cfd9c6f1b9af3f7707294ba521971b5e8a9d315010177daedf5851f564d3e47655269bbcf41f0d820ebf9fab8e54e3f7bb96fb5e4a0554fbdec2b52599e275 +GCD = 1 + +A = -c199bc6851a15c193972f46d4f7ac5e1321fc3a53df1a5559f8450d3d1ccda5fb597ea57409f62b49c89b607694c5b6c699c1190041e0c59d622ea13445f2d0b47520472317c163bbef1be889de648339f7b042bfbd7605ed23ae35cd58d59aed632d1445421746ffeff50cb80445106eea241180abde98c3b3c0054a6392e46 +B = -5f01ec6db256e8ff8b6aba1947ecf18c2f2c8d56964aff26456a6b3b438fd273037f7c82241b00796e0a21505cf82044c7545b0e152c436596d26de7c373015a19e25d334b16486abc43ca4251809d09d70c246887d00efb5a1068fc19f90b725c56333714a06c1d04a45bb42b6a81a69c8af6e10dbbf79b53d9d36b4c4a58bf +GCD = 1 + +A = d031613a925e8c33edddda72237f08e3dd38a827368823664cefad36c7bfddc8e2d7d7c768d55d5058e1c1e43d7cc612c441d7e974cf638252e2e7911c1225a03fb7565571fb1e33bd31c0652e4148cd6efbd51b10e8caa28714ee6cab9138c4f0745ea27bd101b01642dfca88de7d22185c1b8ae8303873389d4e6ebd0e83f4 +B = 289dd5fc0aedd8edf9fc7c8790e87c8f7dfba39cc652526e57d6f4c54e34080f9423e74737c0106c40265f8d588a2fe3c4a2d8fb9a2a750240b68b49c3fccf444cd82166656e43c4ddd5956d961c0da0a82b24bf02d27438ee72ea694d50d48689949b8373499c79f99e126d2068aa0b39879cbc6fea9165331da3ad4eef5037 +GCD = 1 + +A = -55963bda34f328b534120ca4bd3b65deff696e4f3f0fa3849d8c38c5f011dfe3ab2965af91ad87b92e5bfb5e129af532363ae5da50c625b0d64688ec708a483c8f5f1e100fb5d4efd1ac82f431cf9faca2c63864050c642bbfd6e77c0cf5c93ea391272ef66ce806b58576459474697e35485f85b7c1426c0dfa1506b011d8f7 +B = d246117e7ae43d6d8957707a4e86e184643420ea755ef8bbbc98a724b3e8b0197c235b91d2d3701c0ed80420ead84a68f7fc8fe14986e4b2ca89e6cc5235aba8c8916e5752e724418b9a9fb4e16ce9f04c47328af66d8b4ebe384498aac1e81bd993694e9ba66df262e22c6bb66514dbd163d9811adda2a966094dbe98ab0ba3 +GCD = 1 + +A = -ddb882195f29bafbff1c87925f8dfa8dc51df7799aade28b7e8860c374fccb1491fcbdbabe6c378e1e603d26cf728afb49a332bff65bae40a90f148e611728161212503724fb917481c25c5b869b0b0d6d65f7635a98946ccdc5f74803890ba51a33594b64ec32128e2cd16df93cadf3ca720cd6712db44718c60af59ac34f10 +B = 4927bdf37163fd73c8353ede48248d63c90d7b274d3eb5b24d8bebe295e14ab6dd885b6bd2b90c74b04660435d6f9de29520bcfca89f7a336fb3943e6abe8139db76abeacba8c432051f0227db91f1ca891994126a371cbaa60554389b2763ba191c47ff16b93810f5512c3cc3067cc439834200bb4cbcc927f961f98394f5ed +GCD = 1 + +A = -f6f73171e7043d30a6b1ac1492835f49bf0e7fcda58fa949d296be8bd336a8576771265d1d0de02b2b66f0ff4379b149bb3f1cea1841f37b6b0ede0dd910a44b327fbea556080b3efe7200beb50fc157bcecf0c69f58087358134569a997d2d3eda22ce16fe5a1e0a341140914f72c5d473ba0a4efdffe67edf86ca6b83a4f9e +B = f08ac097be5e56dc27875f6823faed994c1b2364c9b02aef1d4acc3b1a7027589d9504df3f214825cee2bb0a80065de3b960a4b9ac15e7449917e3e1a8048babf7b1c762d259397923599fc954d66bce3ac24b11be318cc939384536861633bbc8c1720ef4f82d979c24b9d43d058ce12cdcd8bf6ff37c1dde4d8e2e3e433068 +GCD = 2 + +A = 70f1c11cf262d61f1526cbfb8ab7e13b8e1955ee345f644243dde102a8dccfc9d8a1677b85221cb3ceda2a52e497fb00a3dee9734ceda4c4e0e317808498a7e515f80fa9a13007c210c7be8b795c695716549ab4d523050c256139d0e37f37f49a8434e1415c6385fc4727eefcc62a9e47d3897cc99cb830d74750216e15d643 +B = d82855f451b9dc67c65655decf728764ee0c8cd37cea5d0fb17b5093776ba6bbad68d363de994ef484c7c9d119eb00adc9c5b4e6e2ee4ab721989d969dd2b6f5ecb7087f17d58f0c715625410dac2245a482bba7cdb44a4472c354e2ee0b62f48b5786002d21212f44b58225ed8422456e18f292f6184587cc11c0a6c3d32bd6 +GCD = d + +A = 3769a82693775d539dc3a85be4a645477f512b31f15e21488507e1c3e58b04310f013de661072c5cd8b86e22dfc45c878af4747b6e84d15561e82dffab77f2404aba54387dc4cf5739dc8b43b961a844ad175d08b2fff50c78ef1d960fc50d482dfeac6bf293b376a7c34564f17f858083499d5fa77069d4c3f09fd669eca6e1 +B = d408ddf12c29827b76183b55af124b4fbe6df4a28c7182dab2f8fdfd88404100c16587ac701357c03da9d2fd23c5cb521ee9a2213af3c3ce8bc80492b2904e1ee2ff5a25b042845307e561e5ddcf17ce48b91fe0c0555ce9be4cfcec2a141e11aeb233e8328d853bb414d4f25b8859b7111f3e8897bc7a7e48915e384708578d +GCD = 3 + +A = -9aed513c9b54e793cb9f4f609989cc0c807d3a92c2599de08b5dabb84ab76678740427fdd516a5b065cc5ea48223b187132854320a9f8c6175df4f1e47ad4d6a7c5d83a940c6b7a35acd6d47b286cf3eae563380b6c9f858379965ef66768c372df9c4f0ddcfb1852480cf5b5bb49c8dcf2c7f2862230d32d1621a31903da26b +B = -b59b3f89c21bef97624fa6d4a9aab2d73058060f5a85845ececedc684f6356991845ec3b2efafe766241464b0aea882707c7fb09bcd41dd0f29ae5ec6307aad950e03d6a61d65b44e51f0b95dfbcef9004c9704edd2965685b58ec3e14338c542cd6159c07082bd6745730a0b48177fb1fbf34d0f126427eb5f669f105caae91 +GCD = 1 + +A = ff5402a7e3cdf18beefde98b874aaa0f63a320018b2cc476d9da21f0bb0660245f12b8323fd3f216bf923329038a2b79cf81e105ea811cdeb37b324ad87b7b25d7c62d1a33feea288e98af7886f6ec118fd5dc30eef8027e746573adbf99c4de1c4e4422a96e824921d14be5ca3d2e259e57303ec30df721b799af2f16979b6c +B = 11cc449131049142ac79a1758bddf434ca2079e060c621c9ca7bcb355df93303305dba62cda7a9187ec24ea6a8c6c7d099d6237d8e251f84d9d9fb6661b71b3b6bb8641f2e19892526bae5085039f7873650f087d933f2f41c80eec34cc8f0a14c39552263d0e25165c09bfe63625ca89aadf08ae18984ab93b7fa1bee1e86ca +GCD = 2 + +A = 5e44cac87597648bfb5fa4e02567adbbe189e4e7ff8fd6177cc13bf05f107c25ffef9ca6a84db7f2808fa463c4c1e05a83b0a3345af8622c5795b0b9d3dcf569bf277da70f90238cba04926f9e892b162433b40e7fe8329bffa2ddb06ab24c34de42fd57209e0e60763fcc13964dadb28dae00038b365a1fd6c8de8498826aef +B = 55fcadd42af7356651963ebcab519de6a2a9c95cf44b362882f61a0c2c3b45b30f0b36c0b1919bff845e6252203e9930cab4bb39ca521e03092f2462fac2e5047fd3536654b8deef12d747260de226bdbb79eacaaa1eff609648c4abfe9850181ae6789f01a9c9e798af5afd79f82e479455b6fdfa2bb8a41c18e392bfbe833a +GCD = 1 + +A = -65f9e5726db37028eee2330e4171252bc08c7da46904936d016d26d67e6765ebcf811e903df6924aa84c1ec6ed583a2c169476b439cae7a008c1b08b5d5ae3280662504fee3dbfb9203cefea31f8efbe39d0958dbe53c522aaa57334c5af2217df352b84d55f788cc179ffac3bcd2bf914ebd62821c6dfed81daf034c9e636c9 +B = 21c3e3f338d121394144a2084a0b1b4e47f50421658e9d3e42c8b3204db2c4f4a26999dce0e91e3318ba764e599a8a3ce7d799834b1d4158d2172e85a837c2d684e27cd350e4efee98a8bf844204d6a27a21e1cfe77dbbdcaab05db88b0d42b902c67e4e99ea8b3f3b6285773213a901b245e9d2757b60347c30413a0252f64 +GCD = 1 + +A = 9c55e770567f5523c8c34a40db5c99a65a18cfebf01c408ccd1a14fc449db21c70e1a59ff7e8045b4848cd9072061a8b9a0b0e82b12ac3ce2fb240a3a2f130a56d9a08123cd700ad2ef6a5d540f5088c3fa78eec9e1fd6b440967b9b6f4e29449ce1c2943de4215683e1699c286b1001ccd7ad04984f1dc941732794fdc5d108 +B = ca1d8c8831ae7583627ea61fb6e7df1d2a83c415fcd350995c791d8bd0b53407d65034cae16f498e215fee81b38d5de7b8cea3f1f937eae45eddf4afffbc5969d7dd9e405578fd7d37e36f4cf082ebe8435c5d01f80bec534a43965aa9841dc71866556d7e1415350716fa7575f4a9299ad2746171976e2ff0d2eb26a011d64d +GCD = 1 + +A = -82145818e887333c10d64163b49a55a7b3d5755fe499e7ba2f4bf23ba81b20ba8fa07030f2c6e7a3aee019b62dca63114b4f601f09f0120537661dfcd9db012b8ec7c3bf02da8c78eb3a696a63ec265ca09e9da390b6c82505de27a87a062d47a8483cc70408fd559b97f93e84546db4306fd354eebd4fdf19cdbd9b2ec252de +B = -cb7e2c35be308b92c84cb442ae7a04f57135df7b86eed2e6414dcecf917a1644e3e13b1c348f6e13a30e00f75b1aa8395bfb771c7f577e03a0141975b1842a128f08eb3b2826f43a9c1c9f3934d279c38107dc8c4cb06c5e3fb94b869bf7616277639415196c2a5f0025a2f20237e12091658a838cff6719a45950a07a5d325a +GCD = 2 + +A = -a3a579bd080a8dacc7c8b4c338659ae633de7cb248b911d8f9a699e715756864d8be436184abe827005145102db9ed9fac3f769cbbc50db74ab30dda96ab54468d077b62733bb4808d88a2ff8128b50a7942edafde008d0088ff73dbb9d0b457975baa04f9d0344a2447a76414e3c3d4b450499acad3d507b28216722598704d +B = 5c89960d45ea9507a3251911e9a6a44a431565b976396eadd21d310d4fda77f6bf236e71155aba05862a3135d713c734c3400653750c5d055e3656b57e0d098990824f87cd180753483c5bffb92e7f481506a329e2cf88474d57d6d61eb9aee91cd4b31141b24c4e9ba3e44f9e4c705e8504409f94ff60e18334c97754964602 +GCD = f + +A = -34f6460c9f7cdeef668460bb0b25c53bf4583d184d598bbdf3ffbb23016fc47ab5bcb68004bae8c29b7d1352f8bc44ab2dd247efc60792813eaf577dedbb2df88578f6ead9c72146be9120fdd8bc3914ce4eb40259ddf76ef449a1980b531d013dbd70b076ecb5967fc18e7b16b69e294976e0c5cf8e08da6a555d1c5a348d50 +B = -93914aee0405920bb43a1656451777b0b29d18988696120c8355dea64a0c68da342b652263764f9466beb5eb9e6a971d7d00b1957e0160b9ed73204d7c6d36d9098ebe918dea46a07ef55405ea09395d503c6dd013d48e096fdcad8fbe285c16f20f44925d16c4bf51bc1ce41aa3fa242e2668cfb62df5500c7e8f5a5733b2f0 +GCD = 10 + +A = -c68ab09f465fb56a2ffdfd157708b343e584f095bbfb09c74b50af7885959d001aca824a7aa1dfb5842342ff907781ae622d6818325d88dc87e26d4d4b21ed27c90a00a425f6977dfa4607774c92138da94a911d4442778ed39405fa33cf37cd5a1d985843dc15a2e3dbbe7338f43a5ed9c925a6a4df6820afdf8db4036472ed +B = 5f88ed05689915d77c0ff4603ebdd8cca4402803d6520adead85a11eb2cb2363917644c7129fe8c6f900de95bbfc3efdf44f8c06ec38f14f627f18c7d15c5c7832b544ae9524bba75df7c92e51e027f447de29e37a6e97ecd6e61859de03dd2bf9177254e79702e53ccab7e8f98deb75829f6f996d4e828bdb2cf345d9c076b9 +GCD = 3 + +A = f2a1e80f723edc6024afaa3212f6fea834c6954d58b3b53687123d22a32ca933f00b23ec35b29acf208f5a1df459fbeb05d993ad5ec147a7212dbf99601a4e70033fc268c75c1371cbd0e91b4b67fdd0db37f82ae69b64921b6249436b64c2a0ae0717219b202d628722008d4cfa4329a15f95cb552e54edf534b18506ef5732 +B = -36ab5aaf4d66f9a577b141faed35455392464f55346ba2611a45ab90b6cbd1f19af2ae713be4c149759bdf7575834850f5ada15cf15dda3175c6878ed210a822e459ecb3bedca1b50bd8085308e96c8f3c8c90242e5e9fb976bebce004610ee4ba24067c0d31c6ec2a33b2fa0d73df805ceae3ff51fc30be498c5cf66123973e +GCD = 2 + +A = 7ddf6a76ee91ad09346a9caad7187a3a2e2e5e3019a517f197412a653c6e0569536b1eaef5b8bc17453eb6d304a4278e84e397d8b8739230b7a7985eab7481cf56e9a7442db229da14d09009a11e80130722cacecfb4186318777fd017d834a68f9f231b0ce895a59a0b37e7086657a70091ec864b15a1f5f5aea40a0d271a74 +B = -ac7ce8a90f6a5d64458f99b9791a174e45a450e5ae5063dde007ef5d6bbc4b9c82dac6433fe3e267e8c0156aebe28b6c1406bfd52488f6c07f00e100420bac2b360a203dde3a105b19d70ff7a771eadd2f72af09658265d652d3c1107bbf37dc710c44f368cbc9ab1436760dd0160602bab5d609e78298aa64da24675c2af3ce +GCD = 2 + +A = e1aa7194ebc4a4a97d498f88b4240970903f1e3fc617477efef582f604eb12dee73e71d29300b802afdcadeb98b26c4a73edc9dc3938801c8f1b85f7079d15e1f89ba011fffc06e7f208fcfd60a9a1b3237bf537c7fb7b7d4ea6bfe260630c73a90d98189ced91e4845eb0fefc5970161e87947dc102e24731e5ab91e60551cd +B = 55ba462127b24e612807dcab3e19411e197f67d57c3adc76266b4dea2eccf80c22b3a66fb100338cf3b03870d5801576c48d668ecbcc832465f8d9b1227e98a941458ad30e05c89a5682ef004e4091c1a13ebe7b3617539490e98fc96a26ea8eb433f02bfff96bcd79a5ff52a8e7d04566d5fb4ac0deee3519770b273f9e5587 +GCD = 1 + +A = b1406338c3be11cf67a8613b8149e0204e3509073a3ca0fddc0cf3df3df5307befe6aeca29c653505eb9e1f9a658b2f1d8fe46b97a33a417f31b4faad0ae841c7181fc74a70ab91dc6f6e877d4e75b7ce12585f5602d07882afd74b899ffc86c0d27a62e20c8026500b0ba6832ee3d870f20b33cb8bf54adffcf743cb67a1eaf +B = -9c1f7ce47c1256e9a5bf89a6c86619b88bebd3fe28be55a4401b0d68c864182f358576a47712466d9ac106f10c52030b67217879c913ba19472e5e424d00091a0d7d8668d09e832131d5e8f502646a5c332fe1f6fed7cee86193f68dadd1f42f9aea761c9598563a613e1488ce87b165c879cb99a64f46e691cb7329b341e90c +GCD = 1 + +A = 5a5b9982b6af5f2e4c7414150b503fbd22d00efd6a9b7eff48964ba147b8132a80e7e6207b6961b946f32cecdaf83baa78a7dddfa3d175fa594b90d2fc2abc53bf4ee3412a4fc72edd2351f2ede9b41cc97dcfb68d1648c6c6e6d3257e5efc36493c9f02ab7716692442b2670de89084a4c7a9475e4347529cfc4bbc3b8b4500 +B = -49991a89c2d0f7a5de081c22fcd49346530b0f319795146d721fadca7d015f0d524eeec770a7b9888ecb41d48650bef3256edcb22ac77725f96f1b797cfbe8970f65a93718bde7ff948df33408a9e46eaaf03e8fd009ee0bc34a189e43dfaf7a03c06a6e11db25e4110dfcd1bee6b493f7de40f6b0e0c0ef341a243c8edbf905 +GCD = 1 + +A = -e7484deda086ff745db70a1655aa72ff6537571440092d73b017364f46b5337ebbe8f7a0afed55242e82bd7f0b14559305a6d88f28286c99c27ee5e32daae2db8b3d6ad9dc246ef55c830ad646c58fb44c23682b33abb94e477bbf939e8bb27a4e2f1e27482c30fc7db46bfabe2208c9e89bb40fec3dc24c83f7da3c3d3b6d96 +B = -b9ef8ea30cab0a42c19bed201708a07bbc10509220603aa09d4cea6386280aa6f2548020dfca2e0d0651ba2ef75dfd6fca95876e597a5d8cb102bf9ec6e36cf962d4a29b0531862fd8edccd3c996889c4edd8801dfa3620c9f3488c770320f6e288de3ed763b6223500ebd42099b7b5ecd86ce55ded4c8386c497a0211c4dc83 +GCD = 1 + +A = db952637b7704ffadafc51db2d418d6727e4da720160b1abb3c73cf3d11d95856761ed7cd490f8b5dde0f8eeab5d71a007223ab33d72596d50d3f660922fec44565da2779990b9b84382645c12fe80c84d7769db36403a6704f899fc2b7474ab784b6eb1dcb19b775d8eff02d225254eebbff9ae67015141e944796069f336fa +B = 54d5ad2f79175143565445539d8f95a1776012af72784a9769a1d8ec9653367c5e8290e0a2990b7460de28a47768e3ce5930caab841fe19b369879f912804b66ec0794f0471265dac2c59439a3c04c35e6e3b989753fc10b7c536bf114ce49f9d43757ce152baabf2ef2553715c3c637886720d138bb8b59e71ed28d0c61a02b +GCD = 1 + +A = -541a341827715392d101b245955096cd5ff54393edb51c90815216c7be8eb6cfbc4f6363587400a7137d5f4ce5f2131e9b86eb9e0ba895b3f0d699bc4c3136d2dfc027deb67682e42cccb2cd58a9353f32469d4e9058087b06905ca17fe5a38111a4f3a43b0ca8ca4e2507aecc77aabc85fe5b477336ca305e049705ee36dfd9 +B = 9e37e6be12098f93cce777141a311509152f47567cf7b5719919511f752acfcd0275b0715df4f81706a7c93ddbed319c5dbf65fa19fb35e16a850bf77cb8fe55ad72e7d288f33d57e695c17e89f7e835b57106baac75be4b22e9ec81b5410278c9d4cd3a860ff89316583c9d8e0291ab77a58942427df6a4f42082341cf8da04 +GCD = 1 + +A = -db9f0aef07e018d88d03a0cbf06e87f827b793e8e69c5384e6ba77bad80c81465be214b1388f7746ac7e4b038f44842ccf017ae12e5e989eef94c5a005a0f165bf3b3c63f27e7e152fc1a5b880d73996da28f00b5b74deca2bacad56a046e29300c0325b9f068f942e6b7ca45a17acbcc97104562049fac42f03ea6694260c57 +B = -f97a2c761901b15e9e8b1a3ddd2fbbe37bb3d3ce1809d88ccfbbd632bbf2795fa660eb35c733c919444cd4b23d11a8625b073899086e58ffd074281bbfcc4a9c6f7e8fa9d438cb6856fe8f7007d6bc599c7d31e37bccb33fb72cbbdad6eab7b7ca6791f2f87b38553aa34b6f40f91a74d0d76128f04f5fcf730819722a427853 +GCD = 1 + +A = 92e8f0210ec436e404a353e31b6e6d521758e7176bef0bd97d5e18ce0f7e53e8cda9d0ebdc642cc6f98343fd42f1257332e3f43c640bb17a4627c606bcc4f1a185743c2d8b0f2ac2744403a36226ca32dd91a2bbafc4151e12f0f528046ff5530a5fc0a8f3b5be51a2f4916bec6a2fa9ef7e006102886b2491ed531f362a196f +B = -2dfa59607d7803576f80f7a1229cfbe646b60a3c9e802041560a1eb666289b3fc2dd1449adbd0c9ec4007977e1973ab6fe81f12099724d5574fb6d3eb4151e9a165fde6d0d8e9b177ef7e1c9961b7af5b7478ade5a3956052070cee6d0a86556ca0533a5fbbfc5202f77f09ef3f2fa0f635bd9d800115cceb29530a9ae188640 +GCD = 1 + +A = -f9907d01ce6987ee8f322646fffc324909f62ef1c19697f4f0b4ee1c024c2e9708d5df31747783c1a0240034a22e8986f24b34d2df70e5ba75fae03d30682c093f351741639927da0357ffb303bc240fead312a152a5cd830e16301a820a8818fc83e1ffd8d698478a6668035f6a971180564368239db6574f2ce3a7069b4bdf +B = -1054e20b0f4c034e0afb49af0775fa038130b8146ba8b83754f3fc5be81e08742bcc148b6bdde6fe7a779e484e75c7d7b30bd3cd77e8a5eef8c90ec3dd6f19548f326383d4c807a0a3e51c2eb5e1d9a906cd475815999b46b61e9af17eb37f39caf16a963910bee778923bbd3241936ac0aa0de5532624553aa9d0540afca656 +GCD = 1 + +A = -acbe447391e96e280ca05a19ca95a07754bac7633b44c3b9bbc4727633feb83f7aa99ce22d43ddc25d4a7c3311afcd9c072f527ceb12315b38da52538089ab9b02893a0f07231b37a8fd1ed1560f4bb57da0fd4e760f5f5bd34b6d13f013f5d73e6744111ed2be31515b92db3f016829a640fee1b574d24abb618f0da7db697d +B = -90d228694275cf10d180a6da81a5451e2f2c49c7bcfb505894ff65e91db1d938036bcd44542d2033b4c86a85f9fa3d792a5d0d13d522c61326514793159ecf15013b15a79832f258872f5a454289e1d4768e07a5b33f0a31741a49607d0f7f766b7b7748890de31bcda74b1ea8ad20e42daab8d9385bbcd583217d7184387ea3 +GCD = 1 + +A = d63dc3c811f1873f1583645dd6f196e3949128a314f19a3a6f61ce4034d72636c60d3e6789ec3f1c99a0c55aec8db58e2a56bc609c6cf75ea188ae51503623ab999494c85b78da10f45abf90874e993b8189d5dff711913a205c773c343dc290fac2f674494742b7f0411a94dc1e282f86872f2661953c5d87cba160c0823cf3 +B = cb2e71b2d5bcf60e08b53805645ab23942937d610adead1daf2169b1a73866ca8a00ad52a5caaccc2fc785c549a6d7b1d69abfe0ba2548b6d039e0fb4775f09afb439a6ccc3b043727f977fc6381f09a034f557dd662e20672419d00921c0286d52f11ec7152a64abae1dc7015a2b96d8411461adf101779b707b9a500648b94 +GCD = 1 + +A = 125422c4df20f12576bc8aa7c8a0fbf94a005eb933907e8293559023ebdf1692e80594d05165630311b2b9c1265300deda5dacb980bb3d3b4819852a1978ee49f46b1a0665252b51b74cb7b40e41c15d204cf768639c6c468c28a17dbf1503f187125a95d17f088e85ffec1aa8b4d6aa94b93a7655991591066696f83b9c374e +B = -1c01543774f54e9758475361e112f9ab5c871b57a79fbaa070d9a23d05861e89dbc0c244b254b366c13efb600e0a19cad416b9e172d3fe213e55ed125d4a56202ccb36535fc709f2195ec6e10ec38cbc412984e8debd825d082bb8d93d7f81fe024379f2b7e84a2b7e2a5bc9b726c4f03d45c730112fbbe3f0c38884314767de +GCD = 13a + +A = -b7085eb4ec0877f7c275203307471342dd75face1264aa790c000455dccd01f257fe51916fcc87db24cd866333d2993cb1085a1e845c5745680e7c9a075cfcf80ab135dc25b3119ee0bb8eb903293f6366155157754464a0430573f240593f43a38c3e1045e1714a69b749094138a21e76d7e3a66fe98656dd0973a87e52e2c4 +B = ec2ab74f638e649b2c0bd11f165f7d148290a15549a5b92548fdf66779af5f4afa561105969a31cdc3c8019b8923982da9ca564f1bc6233fed708c80693f5c8b377a31c8cfcf8d61c75557bda9d7641ac21e7b86394bc9c719c9634fa2731febabdc0eb41cda6dd8ba558ce368cbbe6cada99e5422f4b1bb7a17cfc5d6bf0d8a +GCD = 2 + +A = -29b85f1f9265e9d3871f4f9e8aeb11bb44d3f67b4cb9fb1f123dd2ffb629d55af52d46a0584b0e55a7ff63c578677457c8316587b44eb397d72f51cce3211b6b1058cb4d395783f4feee48c0b992894527f2c82769325b32ca4d88ff06cc6a004b5377d78b204ddc4ed833f3a875bc37e9d60b719c76cfec6634fb0a071a5d51 +B = -d7277f4649e576713e20395cd81ca9e0be8f413a677bc7189424688d8facd220c8927c529fddafa7d1966a4e69b4c6dbfa2dd42d3e883b922bf381634f19c44e8059f70b35cbba226c650c51d5a224352baffccb20a948bbd5ccf2600746bde6b4cb12be91edf2f8a3d0c5d0e68894bea5619b530e24697dce6df590326746b7 +GCD = 1 + +A = -269f7f6e86e202d21b32584f7fee0276a09d7df3f82aa5fea773d9f778fe3df405d296f37ae3dc4f36eaa954a5677e2bc1a18e9849e98e08fa6d8b052ad34d40fd25809b09c62acd423066b4a2a726fae7568ef10351fa99f267342f0a8b8ee45ccf09226082a1d68ed1de412646fe7a7906fbec7ac49bb776d7f8587b62c395 +B = -3a756ee81e6374fb9b4d6f411194773bc2c34afaa09a882555931470173c2f08756fa183218f7655e5acd5f1f8b42ac4bb2b7e4dee726f3883602423ea79bbcf50cce383a66d797af682e791705defd57537d1e0bae240e93097ef6b6f3d2cd2c534bfd3386bc3af93c1caf8a9d17b83385694c9dd238cb76e0563961bd828b2 +GCD = 1 + +A = -a9887b259ede2f47e9195370185fa7ce9b0b03dc9c612d3f9cc7d553fcbdf109de2b3ee7fc0a6273c84f657271ceb8dd3fc2789b9ee3327a7fdcaf3140ea1a5f9eadc790f1740cb3ef5cd00462522738aaedb2fd5426bae6d9fb0a4151d5e927838a5aca027dad070f75fc4d523b7080d9d56740bf5d8d9b3cc6152177c3f0bf +B = -2a7e77778f38491f2ff1cf31e9d2024f1afa0edb75348ce6d9ba21cc081523d4bd609c699455d5036f65d2b3239f7ded4500489ac0f05f2b2ae244876582a3eca3c37766cdef1b806032692ca685de474e6c0aace771486fe3a8c35249113996e006d572a8de579a7e2fa056b2bc1ba9c8dd336fa9c05a4227854aed33b8bc31 +GCD = 1 + +A = f2518026f344e9ad46a65e0c0382bd6a75f1b1adb98076780663e3efa736fd9629529c83f62cc72245e274f3f4328bf36a39edf740e082f78e030b88aa69e42af9c21e06fd58150efbcdda0693019c9f92902917a3b796094c3f1e6725e933b57d38b3be8015dd7a1d293270fbf4e1c11ab7519cf817b3333f3fd6c4cbfd63aa +B = 844ed502eebba7ead23859c38d0fcdf6641abba60ebed453b8ee68be67f84ad8b019d16fb2a1681d305bf11dfde9f5119f1e67af891e46ba00e9741af0546395be72ac6d96edebbb93d29956ace4b6da3a4a2773b825afe28e55e129707f42ebbfb36825ff30986abad47a6bcc919af81c70511f816afc3d203b4df48909b650 +GCD = 2 + +A = -331c7a990370840722a14c9900a512ff6c454eb37890ad6d59dc897258ca668682e563f753e5e6a1121381f2e239e8d9eeb5867c2b89eb6b7e2f58632ad94d66c29b79b980670dff642cadb62781ef36e97631da48278120c534026e15a1f01a2369cafe0cfd47588ec5c3a55cb88fc0d60ffc0af2c0caaeb37e83322816bf09 +B = -d29a675ebb1e842fe43988371ec9fcc0cb6c03c213cced7c58f0b5a3d742820be36db4a7769a7d9ce3d30d3d638b20e777d8f026efefa64ba05e9beaa70e031394b71ca51fed694d6eb36891b5843ff56e9a34cd6760c9d34cdee25db33fffe861e69368498946db5758e95d14ce34c41807f44e629b31d7fca44d2e19a8af39 +GCD = 1 + +A = -731f7189bdec6588c949aad1ba5584a0230eabc2c6b5f21ea37f8bfb05295c599df6090570e2eb17c443d53da696708b5c70cd6b7d8fb087e7d44ccead85c7986f6120ddda45f851cea93e0405bf54e5e182dabf30033f1e86754cb59c82a7f3402ed8a890be867e8d935f6c4a7df7ea9ed1a5a36016320e78ab830e902c9c8f +B = cbb25e36feb44b74ed083842f0dfda97df7c8e869c470eff5ad69fcc1660ada9eef10f2f175ed83664dabd70285fd25efe67ad21b9ffe1a7ad51e38899a0b518e312b84056ad6756883f74bf7f55beb1929551bdb9536670a71d61b94a44f244dd1ad88ccde4f3e63c9d971517846f44e29788bf5acefe6c2e8b8418e4d17ff9 +GCD = 1 + +A = -4d1121e7c0e22c10ecd9506d5cf39fb320ed8c606179a4a1d11c313eafa4ee726d22bbd5f7d3fbc889a55be8a20a0c1a16d26e9768df894124f2219fde34d406db30e25b71796dde1128f77461e0c324f2c05b79cfeaa1d5d4b40838a4e8ff4b7b47f300f77c32056841fa44774d9d6d68c566216cbeec3946cec1a0a3b3ca8 +B = -f3cffd8a72118a4c28389a9ab2b98fb687c445eccf7d74ed1f8f1e06b04d9288c493e73f04df6d8cbf18db95b26f44be721e4414714644c32de8a6da8200448a83ffeb52a624bb11c51458ef69016a20b43085fa8739a5f86da3120aff4985ff086857014dcc9c07e03775842345240af95752d929388d364cee5edab3882819 +GCD = 1 + +A = 2616b3d49f58e60346539c83cfa58776bb7c3ee25c275d403da500b21f7256d3d4e08f8de77a7d6589c2bc78ced2d8b39e0ee958e4fed9343997b0c77172ad40d290a84c127f1cbf2de13dc24e08a22f287e242ca464e3e67f3f569cd7c317cb7cd8de44d0cf9f5e6d9b6125169722ec8f68ac04cc5cf6b9b7ed9f634ac9091 +B = -15969bc04e5096c938f053682d225a7ee7f9c71379df51c2f57cca68194b59ac71098fb8d3234c3687292b45da7e63b0259cc15b5cde509e89d2260694f85c788c4b2951390acb3c1595c637bfb46535fef18f56db6623dec727f270e2a9e51936d1ac8db7cab76338b3b50d116e8f9722e4c6f69a068c2ef8260c2d88c2e55c +GCD = 7 + +A = f665b4d25d8dbee0ab39080c4135270aa21b5d0d04076faf50456fc5b198c0e4599d323d3774b361765817c0279898da833ea235488ce0405fe727cf2a70537d693c5ccc748a370b68491521cb2911bd9e8b5da0bdf08c65843022e71d12292c246a48366c9014187fd82c4619af5ece902267741157f65dcd6d16d4c1a2825 +B = -75d7e8a968302d160115f3da5cc61e443e40ab10a80a1356428de256bfe22ef03302754a35f50dfa54f01646044fc195542ea4302e037c0514ef66f157e9e1a3026a559edb6f74ecffd71112483deeb2576a6be36439ca2bc496667258ee640d7c9f4c81e42c5c337326abb94884cd3b448ddaa2c0d1bc8e2cc5a36cd3c3b867 +GCD = 1 + +A = 8c6ea052ea27830bb4d6edd1ac608efdf1ef0fc3721c073fa47aaab2a9aae124e70263e16638bc6fe32140c90003ba1c61a0adc083fbb2ec6d542108f226f83b69752666dc92638b90ed8884fefcd98dd809e259a360b3d7410b4c3f131a2c0b1ee2ed62c118009eebf4011a84f4b69d29a80cc49fa4eac22dfd125ece45b251 +B = -6e0d94812db085482960a2345696853e58469df6d8c423e8a822df40b5867b437b6d5d4c493b212132e0b089c1a1221d941c65ced8bbe82bb3c00a1e620dfd3456a64b95988e46237613b6ad736ecfb68d3e16c77ea1efe68af8d192dd9ec07f91bad4736b4e89347756c9ab7edd9f2b0b6765e723f1239b7db1c1bb2779e6d4 +GCD = 1 + +A = 7e511584681b9bd09d29705f8f722fb83a94d914e7388979606ce99e1d8a6cd55a6b76f8eba238b05f9c5b7f35be534817c3934ec792080dd71f89548211d30280f20bc2034384902606470b9ad60b1a3e133503e0f67d5e30fac447f7b15aab94d2fdf33a575573975905e8a62127a35c820b9f00297e9e2ef5ba015aec64a0 +B = -3ccff0ead3639f375625d4c79196e4e4c3db30970499cf3f62ae0064ea43e9302440454e5d8b974a41f7a90163f1c01dc14489e8023856990b152e05ce2e301e33d5104c90faf09b1edbee5d87ed835c76ec302ec8d22a43bb6d1e28061a18be7752785420a8982d3d4d0f9a31a3d27e0e9ac86b12a628b74c0d830b1aec85d0 +GCD = 10 + +A = f60d47cc5233fbdce987536ca2686e23ad5bbd1309a911b565a95d467ba756bd91bd1976844272581dfded42f9380cf3be29a19eb6b78172e5a4264578b9466c3a04499ab8f84f817b4e5a287b91d1621df8cad01d291ad14f93b3e33d7a8d54f6d2fe0db966a4ecbf06ece7af95487bc1bdc65b4314d333586027137969527f +B = 24fa64544f165b1e9d5ae66e597cc2e1da96090c3ff7b183922f161aca617acff7b4069dc0086f47cfa392fa861f1e34d0f4192e18ca5167f647cf55521a97dcb5010c077f41053035deddd2bd36d6b13b8bbdb771748187bfb71a45d4fd6b3c2890db6b52fe6617b945ba9e67866daeb07e536946defc0d17565bd866e5c054 +GCD = 1 + +A = fdd7ac0c47888486c4b66d071d1a6e71a3b05bd869d57c145005d77a716bc9aa0c6eeffa143149b7a2d811f7e23f7c6288c4e791538e58b10c3d2b4ac8388d41ad5811d51ec8eee49ba3d66fffc683ad7fb397f39cfb6d387e7ed515775e43a004a9aaadfa9cf48c176af7af194c40d80b10919b3c7a56c14bf000528521c9df +B = 5230bd51b8d7fbd6e59118e74087b4f8c3276bbc4ba969d5177b9e7e0819f396805dc6ea27ae46bcd84a76f885f9f0bd2ca30e9406bfdee2add7d7d6df07d0dc92553b699c485c024a8bc801fbc6da38f638680d8481b7ecf30b331f1eb84ca5e62044f5f4016a80858d8509f760bd7ab2759f3a082ceff15a31a3b229e81e45 +GCD = 1 + +A = ea3d6fa16c9bab8a046418c590653e2f4702f7e6786c8abadd9af39b277c3176019a7ce4c4c34ed0981d40e9d7b255d5ab4f5d5d143f1339056b860bcb0d81109a818a3830b583f1e81f69b8733607b529a6b98db8ca02e91caa3726cb7531c895ee70bb1b955561cf36f47d9d70907839990cd63db1b4f141879fbb651e605 +B = 7dc4f9578148627746bed3b58209dfdc70352e66ea15bee8c25ff6b9d63b9546df5dad862e2b852d4275bd89d76779bcfb15037a70cd3fa4587f93ae00e2df7d46963cfe378da3ef591fb85178feef5f14a9bf0c151a91f1c4027c6a4b64169ec2164ec5a75d080b1dc3b93fc0ea6c3560cd4d65911919562e6e57aa8047d2 +GCD = 1 + +A = becdd98079097d92ad6c1a3cc710d15bc504fef0c2b94fc2db76f046f7929d3f7b8c7f5b5c716bb13624f6971b0cdf4a9eb92e6a8ed9b4d67d12a3f16d21bdd9dfa7524a313962562fce2a75c120cd7f891f00bac63cd1f2bff4b4ca2898e25af28d6707a1736abc38025eb2c165f5d652fb589c0f8892e38550174f0ab37ce0 +B = be6ea38ef2cdc9e3f32b824806c6499012b3d2458869879659e27dd229f378b0cbaf8c2d7728143d8a75a080cec0059515d2446bb47d1c74a53fabaca5e922dc78e31c15bc0a667351fa7349cc305d9c734f7f45e86991b6a739f9442aeca3ba6ce5daad23b3567fedf7eddeec804141ca1a08121dc2af1b6d86f7059ca035d7 +GCD = 1 + +A = ee263ee7997be5793160a715a52f7a6fa80ada06c3cd5f7430706aeb8dd6a3cd3c9b00c8b881ec2cecb0bd6c786dc13fa2f8cdf876376d3d753574b891b01394a5051fdfed5bf319872c303b8077d6fe74e68bdbae86beed1422bbd6cefab10a0f2aa6cd0ed54e6c2e463b5949f14b22185de87760dfce1d58ced45d5dfa9661 +B = f79ccfa144fcdab12f48015030608b3d0975f958fc4a706b8ad8388c5d81ea7f2b8225effe77fe44c79aea7a069fdc02554a205177a6ae2d9088c4e2a09393142d3a0d0e8fe2b87887c2feea4e86068f9672800f7b410c4752f13e33d028aa2ba6666d8e90f0c457bc1d8b4a17469278df25d5957833c83b410bc745c766c326 +GCD = 7 + +A = -88c7db25489aac465d59fe9a5fb6f8505da0aa910573347d6050e3dadd0faec3f0f70d684ec05f8bf5d47c1a5c808c7bdf791dc30d67ff207a3feb452b3dd185eadaa36eedc5c30d146507d4a8ae3d11c357e54d6639aae4e1d9fb63476b972c9b5e622e797f22270570580b948f238685b84b7a05583266acc0660a2ebb9c09 +B = 9ce8bd067b47223bbcfac7e30a825eadd93b66981c7128d2af314fbf349a2f1565b06c78f1647fd98021b02e4c918a63d8fd078d7fd8561a7a455fb2fca54f550de365451f8457ed438e8b2f147d3fff8c713c42ca3402f5cb886dd1d945aa3e75c988dbda45b635b5177348fcd13641d7826bd341b1ee60de14779e06dc90e +GCD = 1 + +A = -6f8fa03b531890b883642bc43d866819780f3d1224aa5e978b9c488b0229d822d5c674d57997fa61a8baccb0bb195d5bf7032f16bd980348295081a5c2221fab862127d3c795b78fda305bf246ea8ccf0527a5351a2eef4e1d478a40dee7a6fec18ccbbea53477c2567f6748b2cbbf2384d628e17c9e920599cc031afef64b13 +B = 76b96251244dcd2b686fcd5d3461ee178e130a4299cfb16d184384442ad91fff5f95be7f65456d906045c3e39fe6aecc030ab944400f44511d9a8ff23d61dafa9714c66d22dd17fe98565bfe156bdc2d4cd3afa9c559163f71b736385f32a512fda979abe8fe642ab9cb121f8d5fe515b79c487c580dc8fdb62e512a5a54690 +GCD = 1 + +A = -586fce64c6b5c25a93c8150d4f63022db044286130000ffb6b91b0b91bfc0472eaa5de3b4183b4c9017439327db990fefd1dd846bccccdb0122459b423de029edf26c02f69a6ba628dcde89a59a855eccd31f686a7d095125678d03428fae3ba1fae4f2c6ae3bf3bd6cbcb8586287a22f1d974a58fd4f77befb91be133c8dde9 +B = -e007d70c8c1bdbe3fea07a5212a1302296b25aca3082fe1f2f89863d3c410ac84bfd1ca443d45ed4596f778d1a980c18fb9df65b02221a888a5cf0f491a726b29bb94e9e281f9ed5d3f09894f47e6c1506e3ea60c41dfb684ee24f8b7d11820273d270b6ac2806aaaf43790bec020aa3c3f284003fd77b0eaa93502ae3672927 +GCD = 3 + +A = -4a6bbbe091afdc8fc981b80a24502e5c278a97e71867a617af987b33e9db7dc24befd9534b95f5d38293e438ad711bc25292ca2addde293a47ace50c7b4b625f56cda9251574007a8e505e120e11c9b33ac00a9beb61cbcf5c35bc8dd67957509d9822be52ca1eac5360efe8822befdac45b90bb4b81def0b009091373dc1a4c +B = 8c18f6202bc786f45563dd3820e17024bad5f0f7db57c49a0384f06e27fe939e6aa27a1213e013fd02a2347a678d554e349d5430df3474ee9494b8add34df811e09b55a275e9e770beebb9fa74c339dece5bcc83c28c35ab8e266ba4f922a21a3d8ae679c9957c45326d9d478eec1ae1662024caeb0e2b42c5c5980187819d22 +GCD = 2 + +A = 8ace66a3caac6f8739d620c0d30ddde62d0a7404603f3a00a8cecdcaaca41883bdfb66bea0ee114653ade55b7cd0c99df6e0224b0e2c2375607bb432cf568f690823d7ac3223c30fba334590f214e6f7b97835d34a1ab2f9358bea39eb874b68016fe22f2b9e7498a98a85d73af5cebec080f8332055fb8fd71efd47b54809df +B = -a3be0a142ddd03b2ebc4e0be41ca274d3728ff55ca24ec52c511ac69b613f4f79f13ac56e851fb6e5ff2ab377606a6e92ab9424797fcce761aa86129d7a7307c0b9b382e841e392919bb40a553f880a19a0308bc87f4a7779a613daec10f4e21184bf09348e8bba1ed2d3ec071e61f71fd0029d5be0d754771fb8ee9b935d183 +GCD = 1 + +A = -ef169664cb3832164098e5ff6245ef3108d2345b35c4f4bb84a61c8ee50011e1afb546025697b9e465802aaec737a0e0924de165d6bac7c6eb5b0f784b39db787c807de3ec8307b8a2e09317fd7b5bb5233f08b8e937685d9e28a2471e64ec1c9c4aa37b95225322f726649baee74281d15865f37a6c4ed98958fae347e084d0 +B = -9c8f59a568e6f7a8a6ce1f929c384a8d4b50f2911edec5947a295624db894608c7eab9718568c3331fcd9386b808a4a0317ad7235b9d9621441f25a14a77ff4cf34a39b19229dcd567b93de080e0ca5f07bd80cf4ecd21d977e4155174173900ee7623f884127422a50d07751c2e0e86c2cfd8e559d3ac39a26185fc27bba81b +GCD = 1 + +A = a757fd1000add34d9fea80c97bb42033b6379a7145872a8b53378b50b008b9f9606eeabd49a6bdf569193826f939c308a8de666ee3590dfa68c4067baca2520bdea3507ee2e6ca9278de9ad1c06d14e93a1e4fdb83336f0b492dff110ff09f4ce792df83198787b863dbfdb6b55f7683c407e902b2c5030dca9f018e6de58317 +B = -aa4453270d7de2c15d0014f2b5ce3a20a6a94e4be615c2612f234691ff65652411549c7ee2059bb3f7bd38578bf946b24bce9bba9f2a11e1311c9d18cffcc0cddf97b3d96fa7493da0a19732f0a448d26ed96ae6c0eb0ca8a97d0d73d5cd960e5ea6bc9898e75b7034a4e7bf8b1dc5f8cc971cee2348ae56980e2a6af070b82d +GCD = 5 + +A = -3936005e48e2e5751c1d58e5aa27cea790aa37d7d1673a8c276d4b9fadb72745a7cd4e707e3e191dbfa9daa7c70c822f12adec3a881be0316da3dda3c4b023c83d60753ac8e80e3ae8cb8d496c1679c6ba22f3255f1c92fc82130a19a299e01843614d2e18286feb34b1e1ee5348b7f02f33dc95911ea823f9c4fe214d9e3f84 +B = -9c89c45a6f1433296800f17198c4b5f8289347a9d83979c8bbd8b25c510195d749ef038bad3e7e72c4a1462fd48ef576d2edbad0cb5f2e216ed334d0c28fdab2c9f7547a7fea358527c262448c000cb54c36bacf462d0bd4e9e3f351eb5aad6581be1827a6993bef936be9241a022026a587ce6ec9f04c599481936d68277c8b +GCD = 1 + +A = b2644a071759709d5ce0a75f3e131ac45aaafebc56a18150cd1840624b8b376cfabcd089b3e12d53e509545fe99d2f56f54b6c47ea1f5ff6123549854cf54bb88d7faa65079d0c41bf92241895f79b4fdabf0a20607b8a80259d49b19f8b3f72bac6a9a65e41ede7e544d644b2222a3290d4bbdedd3c44042258dfcd74992e75 +B = -9b0abb3cc92c14a2c421b13f2ccca25e76cb150128c00d5434b07e0446e5e76ea51355d327ccaca63775c204d0b80da9be66abe9ff04712993a11f1dfdf046b1892b55d8b692b874a4a699188e82b7f6a5226a2e2d522ab560f4790509467a394d56c8300eeef19fb84b93e0fb1618fa97eae99a2bd5999664089875d44a9c4 +GCD = 5 + +A = -36faa2d37ca1461c0c7919635bfeba03e463d86ab6383bab074c3d4ccc8ff58ab2396bdf1f5eae19f4e271aeaf0b62f1892ec9eebef8d1727e509c18de87ab1a274bf1ab2307a9fd6948673fb4cc8cbc0f0faac3eb5f2c9448dd12e1c4ae3e28836289a858df5457899749cd12ff98909f39649bbe80300ecb022f1347ad09f2 +B = -3d6a8d671af688942f631223cb8b5fad99d5676ab9d2d9e8c36fe1d2907e44163faec6d12fc34d436e1d22bc2988152ed01f440fbdb2547bbf0febe861ea312458db342f0f8c4085bad13ffb3fcf8580573306d9045ac09ff4f65ed2eb31f55c134fca21d9e45fe922906aefca1e3f9574be1eca72bb75cc6eb1ca6aa1531514 +GCD = 2 + +A = -712c4b770532abe82e0c34b78feca3b65d25d7154e69663d1bc4a3087cf109c1daa84519134e17bda04b77889f1e01342b2c62ae00ed65f87d1a82686ae9944a55a884ec26ef0bbffe89f446c4074f9e074d69eb2628a4479dd4c868aeba976ac95b0db3b615976fa779d10fbb651dccf164c04723f372a91c6d40d7ef2419af +B = -37f489a682f08f94615c40207d6fb8a4ee0b93709427cf6cc078bb8cfba60d95628f70e88d2798726ea9d3d6ba8f00f29b4cd34398a650e2b5b5620f4b4693e2600310e91005db720a7b6f2b8fbb3b28a542cee58f1b2acb8c43a7607c1c0d944a0f675304995c3a761b6c5b3e2faf9af756affa32e499999236df6eb9785da4 +GCD = 1 + +A = 4c9f2babe4428ac58e191c98a91f12240f4e682b0866a21756cbb4f6c8feecf4e9e1b0a9e04b1298474c8fa4910197b81972126110b07799f70f0c589a4be7c32f1a285386eb861d23e9c2a7ac35d26d95374438aa8c26700f6673157e6fae40a5f1d48b897a5c38e1fd31d2694aa82025afa747c8f05d422fd37044fafecf22 +B = d53d378df9e232a8c2027b6a292b68621756d4a58af602ac4d9806d5611b3b2177cdd436fee7acf3becbdf733e3de229c8a0e997ea77e7be225fbe6ece7a240255bed4d6ec2035defe1f8f3f7dba416e4521b962806e9653a5d5024dabf0515f0c5723313be1447b0ae2daa3c57d56a23967b3667951f6d3531c57a9b14e0311 +GCD = 1 + +A = 36e12557c58d0f31c2b8f263daf1495ff8781663c4100e1d379bcff380e1bb0f5a7b8f846371232dabb7af0d125f55c3f17a85df6c667274eb03268c3e2d8e1d5630aecbe12fbd5263f4a05a577c73914de8b54b38cfc03b3a252c7475982851a8989e2fe13250df59b0d085482f9788ffe0061468ee752cebc0ab024f4efce8 +B = -369c2c45787d4761f5c1eed121292f1a36f591fbdc44259002413a81b21da3b75c7505f61ebd061a0ec70bc21cdb18fac7e9262f48b94cbf34c6f9cde2a49dcbf31b2925dadfd688bb990d5b38e5d8c21eeccdd46f94ec82e2ab51fe053f829ab682a6a81eddb2a1bcfba0da8e052954e5757bb20f1959f614cbfffc2e0a0408 +GCD = 8 + +A = f9de4ff75601ed4403ef42683bf28b12ef9580b0d17a26be539856cce68d65157ecc1bacac58c0f56902adf8cfc8bb123a4c8d9b9842ecfd42219794127d2d225e26c6b7c1ea6449bffc1f04657fb7ae89110d2c735c416790aa0a1c79b2ec082570111a52675df471c92ca246667a024d94946b564f3e6d5ab26a315bbdacb +B = -21c901305699f787c2a1cd350b48a6af69e00203be480abcda412b0f04ec7a0d8e3033a5c3a06fe4a84c98f285685340cc3994d7de0e2988cef9a3107b322590af11b6b195846759f84216f74fa7d4f4e4b24862e390d6c79decfd14bbd20a4a7a4f0be8086abf23b5c9693274ce1ba5f21d8492b2a41bab277ffa0bc64a8d45 +GCD = 1 + +A = c609b314fe68253016b123ecf683ddd1d2b7ce7f74cf94d55a352c87a14af98ba45ff8b7facaeacf46f4553cc2cb1cf6df4994d71ad8cfb42aecd8f4c39ab63f1eb9f902fcb5a3c06842595fd29908c517384377717cb9d2ef5634784d56cd45793a79675a5bbe7488b948e6b23c68e4b4d64d5ee42d62924cab5e3bf2ed8f63 +B = -b994ffcdb10fe09f1016a6fd3f01fc95a67d7b6f0d4912e0a13d83fcdefe7eb09f595ef412ec27a51bc31162e7d7895a4fb2df0678623d41e8bcfd48af11a0826c550994ed5bf99a98906e2e5122167ca81437ee1adad8fc39e788e5f1e235bf4b8bb339bb734db649469708b664aa1ad23b695d5c2fb3c653a75e0741ad0a9c +GCD = 1 + +A = -622458091a88b3cda0d712b9467753d67cc73893539188e5b70f139b0efd7b0576d2dcd432d79ca7807949de70e7845d35207b9316fa88feb97bf46068101dbf376b8dad46250f81227ff1162536d92e5dd7a24190cb9ffaf75bfaef468a329d003ec7b5a3df084dcbdfd043a782fbc5e6f524151968c645cd391adeacb4bce4 +B = 90ac0c595156d0efc2065153c04c36973ea281c937b9f07a365458996f6140125721cfa4d110a99665a19462718dd5aab8352732df3b3b1ea12f037512047a255c5478a7442313e1d1bee1a8a51b8123d8bce2e3d24af7c6b036e4bae872e983ae32c6ee555240cdcbe1b0de332f27785775e9e2707aad1e92b8ac8e0b09f7ef +GCD = 1 + +A = cfdf67331ceab5929d01231db019db73e4a8c8eaa74e8c238286ec9011a26fd94412493d45916692cf4da5a0af56c32892981ba8ff3a9cb982d3bc18b9b21d8a24a96089272bffb23663b5953ca213f2d6b1709ed875ece09a3e8f93fd3052b5c6cbc1f4750beeccba88b645348b6ba9ddec1850f1678e898bbb8c5568eec514 +B = 65c0ed69d499f9dd0526fb1651d0d0a5f6b034c6a0521b4cc855c1dc1b0901c9ef0308c44309c98b61a6a6ffc1e5c2709ab96a9046fa706a23fc55ce5c7bf26f11f31d40ef2be41e05d126d47a005e22c5689619da6676ebb5ace6256f84c3c8705812d91c3bfcaad090e2dda61f0e313697e8ca980663ed4f3db12e347307c9 +GCD = 1 + +A = -446cd6ae72eb4ec610628fe06f993006505a5fd55cb9b3d03220c3dfc787c58497b54d7d67853355f937cd007b60b0db9e29d9b7437bf40f9f2dea504acaaf59081df03e06aa8ccf4dc96bcb8e1b7d9a02dbeaa242231f3ec2398f00ec939e50ca1f7a49327359b38fd9753ab128afb89024d2e7458ddd756ca1ca3c7c2c157d +B = 702c4ddd30f22b192700493d415e840ed084e4eea8b06d9f030a3a13dc826930fa149456c2a07a3045e9e6adbbed5481fec5f69048778552ad8634b4c7695f1566cccb00a87bcb9c37d3262fabe85c4b4b08617c8b3c197e8284cf5b9d1b2b31469c58e5ce627c971125721113a4458bc88b8f722aaba7e1c4468fee55f66223 +GCD = 1 + +A = -f25b9adeabc18c00087c3d9ac1ba29bd9f456179f19439abc6b79dc6d4e7bf0099228bd6528102d58f422dd9cec38a53efddf947c65b9f1082f755c9885a5ff3cc51fb3ef01d324720f322925dc486096a436d183937ec796e6ffdf06ae8dab810d2a6ab82f22ecc3eff597abbbbf0f2c85eb6da4f19ae0f97fe79848ac9b1c4 +B = -c26ab8e23136c8472c223085b77d96e069509be8c46b6ea1d280c8dc149d5bf53403661a3fc62a26282299a6a95de99620346831d3708b9e54ac4516a3bbb7ee63120eabe34ac22a2e021bef9affb3fdbb0bad54ce4758a72f861fcc8e6dd76678bc1e065e486540060f45fd7421d20afcb773ee60be274f4799f15d2ffb17f5 +GCD = 1 + +A = 9f86c812fba442b45835c1917d6d016fd1f2e42f99ac6247710062e7fb518f3b934ae53194056e2f96d5c6ef7743c018edd670fb8197075da89acd24fff142abf3dd7ed108a2b313fc256b92d0d70097523e2b04e9a5e0973eb47577b38f00435e959370ad27c606996810c342236541beec7fec87c4c223f911ee5cb17e7ad5 +B = -ecb9187dc6b65835da358c0c754038f01e8ce809c97a4abeddebd64140701efc49cb28d15ff12bb9a600e5ec53a1c6e0c60f19053199cb13735ea89d70d07bfb2a3b8b7e02276fa3d47128640bb8587194aa561202c2cf42dc1786c5e01eaae83f528ef05646fc2fffe3d6441c52685fb5b28ad3a2a7e4510249e48ac217fac +GCD = 1 + +A = 41a2b641be79fa1b0151e2e53fe9f6d8e5fd639560469ae5ebcbe99d03503e39373d9268d66bd409f8e2c11273a01b21845f62a2c9868580ae6c438ff652af751c3c566ee81b68f04c59596739e379314c2cda2301c750305d475bfc3f53d3eee42ec44ad5c379e07f78ba6a51bed45046e6c41948640777d6fff0dc0c28385d +B = 8f587b1ed591f3ac3b933e9b3f9075179ed0ac2b03b68453f9c4b1609accf1c5fafc1e8f557b8ee2fe22b448e84383a827c543c9bc797be1be63f12e010dd920e51ea90c9a4e37052b4323d3e3359e7e9389e6ddea8d473d56a43a4cc35ac271f194f433532ba2224fffefefebb0d119b51d5edb1e0c9cd9aff638fff1cfc1c2 +GCD = 3 + +A = 293e308448427a12bc1772677114178effcfd956bb5d1ba9b922ee4c2ceb16b288530f590a0c33bdf25f4f6cd1a248a036416ebabfe9308b3dac099ff08bf69c0cb0e605c2550ce22739cd9982ba2d0ec3e130f9ae8fd58cc51ce22eead7307b7e3893769d6d5d39613cbd93a9681c3c75996400a1a92d7342e0fa36aa25c155 +B = 48bb591fe3a0c1fd8a0c59cdaf40002ff1d6c4656231572f9db0d98ecbf188633f8a71e0f74080b8dd77c87682f1052f801ff7cadf96565592eeb5bb7ae2c0886d7c2d66076a3ec1188e0bc4c432d5455ea96a6f594a696f0ebc653996832d7026e20c8823586283c6e653a93331015ec30adb729d370abca86476046d022f32 +GCD = 1 + +A = ce29b2c76a641325a6af0cfaf93c18aabb3d474492cb11f2e05f0d22d84d794743ed6c6ca849740d17fe860db021bc75912a2449a8ce05d547bdf9a28d00dd5ef51cd529137a6f01ca8df3a09c4a3051b189b953a47fed4144c0361748ebdecba64e9e2503810ac8b67b919255d335bab5774d0ab9c0fe9410d43ca50f7e2c1a +B = 4c3838c0b0163aaecccb2c3da074706220251492da156e040be2582a4824f389b5c6f04a326171e751aa52e9b594b6e6c4a75d919fcba7d540f96d7829302ddaf1bbe7c88715ecbf1db69fb78fe83795925fb9cd9b33e0102427d11cf701aab0ea634e4bef64d3fb09163dbfb60758967b5bf8526248db8409a64cbc180b3f24 +GCD = 2 + +A = e3db115dc52436e29742b36bedf792a49e109027656d5f4f91907ae46e733af311c55955d1d11f3a84652cc924914438fe264b7cbc0b59b578abb22133d1b04b7245d9759b7053f8bdcc88c153101257b48c82b80e142460bef44c53468d01c7ab5aecf858cadc260a86798f52c3e6124e15d174060effec8378a9d0919d4195 +B = -a29270d84dce9c86f3e984b9cc64a4b2f9a81b730e096213aa9bcab5c860a11bcc6dd9d5b704b66216f6d2b592923bd3e2a38e45343f056c454691bad5cac60567988a06b37b1c2d0a13c7499d6ba06d35d55dfc55b10f7a57f5c4454084f615a9efbcf50d4f0168594ea1611fa4743507ab74c2790e3e93ae7f241c9e4dfac6 +GCD = 1 + +A = 68705aca194a1c14067ff1e7edfca3bab113a9010d0d8e160099158059939e2eeaa219f854c20bd7616678be2d8bc823a8e76d411e02d3a19ad73c4f573f7146edfe86198ede377a77dc2ce409cb13fe8579b9576e83d7a2b36aed2acdc6ebbe8b298863c07e715c2b1a08fd8ccaea9996408214e59d751cd3d5be6151e8de86 +B = a335c8f59a8de3e76d3069a12393e7265ce88906595022395aef8c95aa5c376395affe55dfbca98e486c4a076715d971bc1407fb3bd66ca7b17a85a4e9a576ee0b3e0b1e21eeee1075ef98d8c9f02aae5cd2710e4f9c6b34f356b4cdec3079defcefb9b959154af09cd084eca6747f71c27ef620df564e53d4979658dd467daa +GCD = 2 + +A = ef3db775502b10227df44494c88a3bc0a16cddbc3cb9cedfcf803b327ce6f1885f2baa253d8e2fd2e2e0d19a1c66aafcbc8d9cb6be72d2669e9ea6f15290336bba5e907d5a21c429bdd9b71321989ebbc3e69241afa842fed3999bdd8801a6970c2cf88461d2f26245864fe8efe07f6df8eae87896e06d82daf1264fe86c30 +B = -7e7d5236ff38b82b0d9daa6bb46f3734eb89420a1dad401d2f827eb617f6b1df22f8130631b27301c3b5d368f36a4011127b49b36d2c6f40761de4c48ebaa8e3cb31e418b8d8f4641bb74dc970addd1d915ba8b5b590c4689ee50a17ee854089135a30b61aefe55b2cda7832ff4db48faa526db20ee33f4e446e8250984cec58 +GCD = 8 + +A = 8e20eb25451d35c3df5b9fd6b02f5cfbc354c4a9f3fc497daa9b13f99bbf710fac1fd0190ba8970dc527f12de3471eeedc6fe09768ce1f8aebc7db6af9a602219b466416e5332b224813d7c98f9ec93061a1b1068fc539c99f0f7053f56e5e518e17ea72069bbf9d45433e7c3f1d36bc51e9c75ed82c547f8ef25f4cea427256 +B = 8ea1a51d0b934fd8eafc5c8c086fd063cf535508897a58502b094eeb0dcfc1f1e2fb441c77ef5110a68e1ef7d439f862be2cbc9f34c05d4ffeccd0276915bceef3bd7939a8fcf170b4769797d4f0f0cdb59667b3831e3769fc1546d17c5e40865af2db0267b3c4459469bac401be53a66432104f944bc45aca942837fcd96a79 +GCD = 1 + +A = -88415b7af7366fc9276af133f99664f53c1d3148f76f383ef26ceeeed5cbe2af67fd4585bbb4a50fa2d300306273dfb0d286e089dbe594114729ff3b8c882584a3aac44c574de29aefd99bb55b51a6564054cd17f3d3cff5986b6d3371c09272a346feb83abf175169e9b6037f1d73985d67cbace64047fb022bd3dc1c0286e +B = 3714e6ba7c0f40e3e0f6094a7c6249a348b6e7136e62b5628c5836b3ac992537b32107b3e030c35f58c1a26f18e4162649086f964cca81d86b285dba0c0589218c6bd4b146ae39a2e0a13b13c9ac6398864d773793c17c7da79af99f0bf041316fa52bf144bd1b2ac05d5d10361a26e958894c5993434980793fe8a3c2711177 +GCD = 1 + +A = -8838d92feb6e074703bf74e06da5d8126e8825829ca69f2dd6ee927aff1dc4e5bfcda527cd5580b70f93d4941b072a982e7c8d82cbe7cd835d251b4a933389ceb23488d0701309e461047532b1be5582e3452e9fc9f1dc13fa524cca55a07475c7f066460b1d15ffc460b1d05e9369a3c58441c47e3e6410a45d784bc50a2d25 +B = d60720d0064eefb830e29068116dc7a7998d1b4994fd8263ba71038f20bc0833e4fb84e910ab5038d0028a1047b5f52862f3a68285638555e5a832ea452332f59af9a65f4c23a708957a971ba99213c02c68d49c93d359a172ba322991a96644fa3a565864efb6f918f58ea9274bd7c323197c4b1f42534b2a463a713dc3e30d +GCD = 1 + +A = -7ec8fbb84c65f5984f09336f539ac478469007c2adad8298fc2ec0ab01e666a1fd16fd8ecfa4c5b599a814124c9101bb399bd4fa8e79c43ad6f4b03275610e7742eae7a84f4307b90fdf8e07d8b66dcce539363d290ae6108127e1e2edf3ab7363785b7c6302a97ab7e3cb4b9f8f238a876138aec4ee85d28323f0a5ed569895 +B = cab41f81103882d4fca8d8fd1fde614714a75f6679709e0d40a1d4c91457b1d5ca423b683497a40d1a34575bfb5d9693e6d6cd12d1a4c318a7bf5c74536afa8579851868b0e6fca83490b51510c7c34f67444a0ddfaebe17f0e71d0ac81a62b540ae92732217f00328398b998caae43d814bc96890ea34ccbfb08e01871af032 +GCD = 1 + +A = -c53b352d778e0d58b7ddb5078252c63a1b00102aefb8747616cc4ea2ce7f251a2a462c19a27c4e4c22e3c8201b4ab47a134b2522fe1e8a74875218a8e00d3ab7b01184fd28d8303ec91e00ce4ca5eb2f53f92624f755d5af462ea78f22929326fc2e256355a04628593fdaaedbf3d4d37dbde52402d069e82321e35c7d207a9e +B = -17e17759929d0c4cb6340adf3366c3a3428869030a30aa7ac0e6d9fccf28db759802e428e306ace4650ca7b3b852f57c76f8141f0d613da42854380307c740ef45c349efab065b1dc242542549d563228c96bae39f9b9740a552488cd5e5c0e97791e803fbbf5ae0311b69080b3e1dd5cb4746ffe88a56428f932edbf6d65000 +GCD = 2 + +A = -fad714585a9eaafaa41673c097fefc2be2a86023a4cf0b9434f04b162e3483940ba51c6dfcebb20c8297b40747ca43a6812ef6d5cfa1f25babb2d70be10fce00c96f2104e196ff17b4323677ad68b1e3b6c2c48862c1d847055a875bae92a2e5048ac7fcb6b541e2ed7ce445933637361b07f56476c7b678ea89e584122d89cd +B = f08499f81ebdd02ce09ad4017a8a812c45fc90740beb4554001ac94f26fb16d29fd480181b5c56ccff243641404c214c21a9e40e6bb8f0e772b510c35ea6643cc1e4743929d8c31337530f10e75e2574c951479b0dbd3b14c74b335ee52a5c95edacf7e2e66b31972e4390b5bd024ea1364042f587f67e33718bc382dcf2c272 +GCD = 1 + +A = -9002d61ef0fce955f86b86ea536c9c229f231982066870ac4aa5ff171ccba06c348f0a69a2664a77c15aee435cf9f68d9739e05b2361621b554b5776ba27b318d1aa08e74d0e37215a7f5b41e087dc829159a4e981ef24c9c840e964467fdb377137161edaa973016f5065a63406eacc8005f597e5682a6c992ff5182f88e00b +B = -c346d1060e6565759884b97667c721eedc9f9ab33dfbbd0786ef718975d018036491c39437c4fd118106afeed1e71120130f36b88f3b3617965101cc4135edeb5889471de4534a5ea6cee903c0c15cd05075a6afba6d9c32e35a64beb8a6e71edd2191a8ac3ca2d3c5bc3052cdb3cf100ed0d204b1ec6b96ee2eee332977ee13 +GCD = 1 + +A = -af58d877f64be3057544f5b0776f607fea0e7c70bff5e6a6dc50ab74eeb9e5d1633ba8223bf0f736d648414bf79ff88602179d0485a0393e61c861024d68bc4199cbfc4d8606171007694a5ab143d437596afc7e0acee003572894ab5c001c97e8875304d1091ad3caa6e6972d19aea9f56513f094884dbdb66c78c087e5623e +B = c755d5bf3bfa7a76018b546a6f6e0a5362e814a24ac1bb357cafa4a755af652a8501dd32da6e4b9094c332597d9b7c4645fe611fff3603af09b8f46fd1333f499f2005227f50421c0522b1f8740db2c99981d2074da45da96df90abefbe8352dab79f16c6517b3b91fa2e1cddb2724fc9a5725b4b1f9180b2d4cc5699e84ef28 +GCD = 2 + +A = a7a1384cd960e5b6bf2c38a1426f29dc375d71679a47a82c24ea9273019d0703c36578c278db2589338187603a7223ce88a66c255dbda01182eac3ef822db7753442ce6bb9850e3fadc1e56c6ca8d4088df110a8c265ede7ff1905ef67ea22179accba4415bc767d84bc6c698b570301170e30f34e3e05a96b9d08bb586756bb +B = 3de72605eb4cdc5661296da8ad8c2b01cca8501ce27e88f79d3f1c167750232e67d96071ff87d22f3271e8322c25dc13075d17512646cf47a052a65fa23cab88e979a913c5da3a18f4c271c9a36704396a523366747f4ec19700b19ba0d93dbfcdac07c861c264aa6ef86dd4ec52959781cdcd49ab9eda5bebfad52797b6cb03 +GCD = 1 + +A = 5a6b2996b36728bb3ddd2434b437221563431b8bbe8064edd928fb7bb3e8801289f9cc6eb21a29f93e60b60d230eaea10a779a29d0012778f3062a2cf7e784f3a90335baf280ca5b7bf13b79bdd9af79b7406aa3d6e67ada7acaae7e368436be287dbba7c836997311d9dcc299d50ee7d5ed7079c81629f5de94b658ae201d66 +B = -a2ee1abb1f1afbb77a5221bd2b9e40a673d4af94c8645ee93040d5d8c22bbcb706fe2ac8f93f3a9e4023b1efa3e042f45dfb66a3b870093b758f420f098f4d30cb3dc3d9a0eb0b5a3be94806bf67f6be765ea942d7e7cb81d9006701bd7df79e150380eedefcf64a288764c520746e3c551aa330b7728d38ced63405f45f9d5a +GCD = a + +A = 56c31f5c365fa85f77425798ec6dec5427cb977810132bc981ac7850e6beb92155db0d1cec9310de3595839b38fc0110e4fffd893491940cd5c97b27f5c4fc74395f41f16f3c253e5a1e16a1afafc830afff0dcc32ad5fb6e7d9839289b84a52e83abd1f0059a24f3384095639779bdfb43f8fb07e00677681e8da7b1f4069cb +B = -1fced12e2dc5d274a643fc6564f8519d0660319f233b11217a0e4afa3defd37ace2c52366cb54157e22ad90baadf3f7816c27fa5bc64fc8488ddb0a6094e2cbaaa33d1042732240bc16ed1f52c0cbed980833c0bf3a17a23c40cdba93cdbeeb3de5408bd5ca83fdbe429dda40ac400a773099f5c23b557396df242b108755393 +GCD = 3 + +A = -6449a272693920f5f5314a1dcd4f5024d563ddcba9b0c6792b5fa9af022531fab83ccd53f84e051407b916dfe63d14d886fdf2b678cf0b3cdb1842a4add6d3f3e5b4778242552b1f56835837023889376f8408bd5c5253a2179d6c6baab9a20a7dafc4984d866554527ff759dd07a7b43dbea15710af4395c55a3fe8eb50defb +B = 8f5428adff69f073b36fdc029c97235139ff73165ca54ecdb64e5ce0b184928820280efc568a58027af679816e0b76ba3b2994048ef41f85f067b3274ba53aab9bb832ad6c2a5e9e9cc9f38451f2652047a3160f2d058f24e9534589d8854a1b5a69d05abd7aec914ca8a840ce50e83e3436b983ab9417c7bbdd91e0f8f53a1f +GCD = 1 + +A = 56769910f83bbbcc7d1b084886925ab19de23bea05ef03a6df1e5bde64f636f71f379b51d5bb550466bafa2141c60c28e3030334b66bdf36e10e7b04ad4941bdcaee06832cc3cf29bd4e1ac3e1b4d3e6f90861dbd692ab90ed6bea34eace1e288a157bb7f7bacf16a28e65de0b2155593d5cb249315e391fcbf03c0e5e0255e9 +B = -f3f2a9e3e20f3685a5c0498e90e0bcf8f6d21f9f0770b389e4a0aeb6884233f8608f0e1e89b5f88ca5bf82eb3fa2905d41fd7b2e77b8a14794230fe5503544f72b34836786aae1093806575c9815d3bf48b156a32c1f4133c7af111d6a8aa6a82d0af3c1d8812ef95784c739ada1d3817cf455572c6bf97ea4156eaaa91abe7f +GCD = 1 + +A = 597f0f07fb775416fd2ac373adc1f535a73e683592209c5730c552e4245b1014bfd57aec664c3615aee83322da08157a8b9844bbf1febabdb641609c9ec30e75886d8d35cddee470dd11c2d28cac824a9a4afe67cd70b447d79bafc72e9f3d03e16e8a4a79d1f64f03afc76d18a7ab311d84fb39f9f8eefc01341c7bccded8d8 +B = -b8f58a904eeca1290ba928fec61954d25d74b6085a2579f0f28db13b8da45b5f47e97dfb945be9ac7abfc16ac840193e1246dd8b336846687ac160cb8fee0bb5be52b08560ef17d0ec60830ecfc6612267523a21e63920ace919f157057f8a818c7998bec96fd23def2b7eb7a3306fa05491cedda916048b9f6f6a8e9b8b49b8 +GCD = 8 + +A = -4e4ed189f9fa439ab2ba8aebecf8686fa3ecd3363299be220f768324da1da45bd4b546b332819d7e737c6ccb2ae67b62aab35a7b51951ccca610c5e500ba82d71e4c27e8889c14a2027ca435fb2d659816ef1b14d825640e2883bf4042651b64a9ab52dbfc1b1e4e9c2245592509a704af25548441c58c6ac1215e374b751554 +B = -6913ac48a89202c3cbe2c8b49a8111f647c94027131e9afdc6a89e7eda92277a48a9b3e54ce84e9e960974bd6fdd56e975d4ad6929bd2ac6f5d2f940ba386601bf4396c6518592793626eba7bbd69c750b62066ba24c14791482cd85585b3dd6cff05fb886812a6ad04a885648b84a7bc797c037c3bff824ae70ee549da439c3 +GCD = 1 + +A = d30a756c61c77555743af4495300e4e6d238fd301120d90d56f51f35ec9b8b8d1011e73697147706cb1889f08e967addc7a5f413354d5dcdd687637b05e2fefbc702f4b845981a32102613cbce1eaf8c9436698cccdc0196f7a96f10fd16720e0b74fe0eee502306e853f390947ddca4bed09ee113a71c3a24b9b5214a5cfd8 +B = f63b6015c911a67e83cf82240382f0e2d0a256963a272cb660223b21ee2e7df5d01996891703f28621e174d46bb8555716696d077b276245eb794fd74c828f5e36a15aa531ad3277ba431bbe8407df764b84dc49570126769a273793c8767552d599058b267ce84b66ec253d7858f6cdbf9e370ad6705b58f1bb4959a684cebd +GCD = 1 + +A = -c15c041370465e4a08caccb78b8b41d0f43d5733db1353b9731498b585fd7bea844bd554200299e188397527589cf0698eff4d2c51c9c317475f8b46e8604ac265cd602af23127698b8140e57698642e18ecc1920ca29a94a9ccd6bc3ce51a3c91c88af16bdfaba141b65e04389018e64636a4dc2b15cc7f338025d76dd87139 +B = e5f7b0c94ab73465ab4cf4c44e5cee16d385b4a1d59aa56f5242c84e5dcd6930d82bcbf187c72914cf60f825e34e59f57769eb706c6ff8e6e2f054fdc28e0d37c4fe7b1fa7b30458fe9ef0667af0a4041771cdd39310c1db2b79bb05bb448a369393fea7aaa05d304d6fb0bdaba6452a32e4a2c37009bc1b7f6a39f5e81c594b +GCD = 1 + +A = -651387ccbeeaddebf4aeb2738580b7cd0b7ffc6327b892bf8eb18b7a5ef497add11e39d77c06bc58164eff68f1490d0cc86c1704688841d3ee317c3a0d4e2f620a15d03b0dbe2f0c72a685e318a2f65a82ecec37982d45a69ffaa3b88efa3ab9069af410c16c051448c91c70b7d51e0411ecdf8ed61cda37aa73228400c4ca57 +B = -a46a61c66f1bfda295bc7532d738c34f2c036693c36cc5abc78b5a995ef3ab607e3567175b267e9df3da7498ccde152d260b4843dbaee33f801913f4c1e4b3e11b26885f07c8e979036ee114a9891764121bb7ac16ab430ec69c90acb02ade4f1268e5a2d9153671d73b7a85288a2128cd996f271eb0c797c7177a694d263a9c +GCD = 1 + +A = -8f8f2796f50c933d285b375902daef82016b3ff9026f7f29f8bab182e389d596c50f1ea4dbc81b3c8e1628c22fa14dd05ddbf01c423e4c4316e8df7950789ef689bbc07df303261f615b6e14439e767f36c0b03532ce0d434ba3c8c710f1d82ed640fc29e12a81c9e296d820e8e15939578021ed764e63461c11d36a5ef95d06 +B = f580460776c0734ce1235fe588e6cbfbaf02796c168bae6123a3949635e7921225951a44edd7dc7bdb03b5b58cbcf09e13ecf551a8e8c9adc861907a141741c345001a1fc426c4bb44fb2eed20fc7a9fe4df89b0e4c6c243574295abea72418b3e355ead386d0a879c402ea9c9de436558ef19c0df933f5f144864a3cdc236a +GCD = 2 + +A = 537ad39fc0c1910ed2a9986119aafe18d391fcfe045b90c45332c28eb8e32e7208c7e7531878455070a4e127bc97c5a1cd849e419f26387436306ce27331e9537253672bf1b66c171946008ed4b263da308343376842f0162bc728143c9aa4768dc89d3fc9b966a5bf44ff5b3638913d8ad299dbd65e7b64c8803b07f00c8ef7 +B = -cdfc498c772846431e47ad9ada196bfdcdf9d3c13ff1f45dd5dccc22d99d66d7dd2641db228c8c0e9ae4c8a2746c7de8e2b54031cfa49e3f8f267e992f4daa9b9134a2f59a2bfb3833a37df0771e7f842f16c651674772474193ccc190cf5c43d966b6628d0b1bbf18b1ff7e7ffe43fd3acf5a89a9192b3407fbbd7d42e47977 +GCD = 1 + +A = 8231d42ab0bedba1be0dbe324687887f5315da824a1a305544e96f79386fb2ff2d5ada46cee48a3a807bb0694d560cbef9075b0bd100b425105c6806d4edce46245f665f4b10296d7cdf050d1b0d72c3c78b0342ff65e83d7f5ea009e2e0ee2e6435589157ea7b20e3b06e56403dfc01252fc96781b3adbb2945a0b8c8ad9f53 +B = -9daf6408da191228588b602f6415023d2c87bda4c0ada5d2c4ea6becbe1821b32c47c30a572de5e8062db0ab79353773c2653acacf11fbae6208cab76b32b617a03698bbd5e5507efff99b45c92b0b0a7d711b33c08f9f2b152728ee9923b66a66e975ccbf1f7e47cabdc6fa2a0c9b4586b5d7f1d637bbac86d3c77ffa026b20 +GCD = 17 + +A = -e4f6d805ce00095e90efa2be79ec696ebb3d96571ace17d324bd40df2000613850fe7d84ade95554011d20c5bd68005829a424c8cacba19a95c103f418a3e591fbd2373b27c4b4d783dae73e49c5ab9cdaebe4cae03d59312be770f1194f20471e7a827f0f2b6ad3b58745fe028a4b07bda1baf921543a0d42eef5e12d9a9451 +B = -a3e22d08c1376041d77aaa96e13f7b3c0d56ca03f31fcb8ffc1488fbb0fbec1df6aa037f4ab38f4c0e9f5cff9b03e26960c59d4a129a3fe6e843930ddfed306bc682bd3aa339772796af03f4ced712f3e2cee42014400d9ae489bff652ed17fba4bfbf8ce878844f53ed0b2ddb8bca0b65e430cf8c56986e894daeda72413392 +GCD = 1 + +A = fae2388a30cad3c7e3b8a62dabb36b368c9f17cd435c382eba3f67aa099f09e2e57beaebde41076f92edc26deba0fc29cacf23b1281c2022f8827029d5f49588ca023c681f59e46d81cf29173eab78f379a8039292900444fbc7053b91cbe261cede83899b644256f44b2ff67fc94347f997be18d22be4505977bf71609d8c99 +B = 6c693c8fde5c8db701685ff0c4432efdec803fbbb092d2b3fafecde614754433a79b24d2176f69b31f04cb8a732137663bbaeeaa1f7907d5d838643fa7d257f3e801565cc90bb4aa9dfb17434f06f66972b04695e51c759a494bb91de0310621bd8ee22843b0d7598afbeef526c3cab503a059b727cd8e73eb5ae1a0efb13fe6 +GCD = 1 + +A = -cab880fd1d9a277033a0b75d7f622e39a97b02cb21187ceadf0a1182e803d5480d00b991507ed14a67ed29a6d9846df8bb8f9a810f47364a84f8ba0775b7989dae071765ce68630bbfe15ebe0a9f0943ff799b31813c5876c3b6326a9cfc0facb79ea744468545c64d8e69ad40314d6145300c1a0ed7e31752d210b3aa3ed96a +B = 6a5ae64e8ebce1565aa6b1f5b7552bfc57f546a5b7e30455affd28937f0ef1df1d033acb141db66b1e3b9bb11fadc685066c5bc08477a259246821e2ca3c3c91477dc251076267c4b34b48cf92d7dfe527f353471b97c81dcdd9a5e8b1f96f0fea1b5c64bbf2f81aafd249707c1253dca6f9ce585b2a7f7ab4dd537c5be3fa5 +GCD = 1 + +A = -847868c03353406e954996143fb4bcbfc316b0d0228f91c6672ce59ffbc924d9cd10e657cbc1ac96f2533fb916a17d94d03b921dbf5266e8f8ed5c83c6fb9088ab84e0d09e35a59987e7718722c360d6cec26fa5067828237f03bdcbfe1be1aadf5877d646bbce112c4c57a7a26abd66e8239a83800a6b56042da5ee3333b7bb +B = 88d24a64f3cab2699b3e3f436d0aacf75ef5efc3cc469897e4a9ce779c68510fa5f84bf452a2c70c750ee37e7128cc28f94aa7ea4101b5db7bfe13bfb9c1d477ced4791056746aefaa30b4c93bb732c95572a0295d5b6c69afb500e0e1e2706c16b400cf963ea5998c8a825cc8905d63977b90432266030377fffd5750dfbc25 +GCD = 1 + +A = -797ad41029e0da0f2ea54eb949b477878104f2d2c49e0b9326d39f25e9c7b4dbfa060573d67d355fdc46a9cf9d0a3c219939d8d241e7fe2b73cb2b31b8db3371767e67e333ce388620aaac2cb0ff5fe6cdd4b213d44ca6060e7713334cd833371e33e431c00ea3c4fb2217508d56698cde1766a21d5210c18a4b9929127ff1c3 +B = -ac6a8d9f8d3ec2ee29a66ec531dad42fc625fb91344ef5d2d4a289ebd3016d7da5cf1b3dce9124b9dd5e94d89d38ca1132c02cff9b6ed690d5979103154ea7d86ed9a361dda3b069f4a09130657d0a12e1fdda3f269945c9e9c511ec3b51edf1e65e38a9fa726af1b8a003f94978f5e1e7f905138b122f544766a3c4c5a74ab5 +GCD = 7 + +A = -4fdfe88d116580526027975ff76568db661ccd5584927a22d120f845683eda279f7f06b24c62c7a3e1707bc67187619e444e0a9551c76e31de27c6d304a3f5dd55c092845b4e2542e54c40af56dd94affc2a3ac70eec42f7e76d44e9b6b1ff7842f7510087fc6b48ad66a5820524f362c44d91c4ebad2a41c5537c64cd9d575f +B = -e11927492b6d39e92b1d90eeeeab66bd40437d6edace4be32cab78dd0bd42d77ddfa7a3a8f05e46aeec245b91131dc553256396579144fa5ecfa78c1e3ecfbd6ecaaaa40a912aa6fd7115f2517d7288788655c7913c7bcdb943a4a53939b1206611398eb6c359f60d0cda4aa2281401152622b98b2a8c1c506684c06f5d9109a +GCD = 3 + +A = -ad9a4a185754428770f6fb5f19daa979ff4ab1c0b2a04742cbdf2cea4be6a8ab7cf9205c461753f0e56bec314ff41eb6e681e56647a486fcf4d23e6140d5b841d5c62fa329d32b71b48a9fb558a180972a4de7be4f3ba83dc9c8649602c5529e3e3d46703092bc9a84d21ec0af7463b87d343651a63e4a34e63889fa7faac6a7 +B = -d76d738de8b47601e139667b36b52e40b425fe45cf28baa2156e8c93e8416d1425c99607efe2e97ac3a55431a1e3e611bec103f81983712e506dc33b65b9c101d3e662a32acb15ab5c421e1b8d2ae9fb81c4ef834d0d3dd53537a72e3ea94c3d70ab496fce31555077152960006e688771730aabd49e1891fa1a7abaf265721d +GCD = 1 + +A = ac83070c4d50c5bc45fb5511030770c99937f52f690b1c49871fbbeb71f31a4d0ae2ad43f1c7881a9472338d66c074875a2a2de4558a97f177da656a971c2968473c94b9f3299a7f4bf0de3b25e1cfe2a77a6cff91db65c98191027b59981a9d28408721f2fbff06e4023824ac5633db748049e52293f5cf91c2334b710eb7b0 +B = b1dafddfcd515fc86b29f138ba67f7370e729bbdab2c7c376a00ca9a8025c75e686f9cc6d5bad85ed6e9fefc670a5d48cb8f974d61f86ceecfc2fcd1ab4e1f96c74448541f8a59166c16b94df5a0b70b91c924ba587b71feead48ade625a5bbba996cdf326a2447d0dacf78bb273740e29aa230876c07ced7d9bc26fd51a955f +GCD = 1 + +A = ae247d4192f3a4b8b47a16d3864c2fbe49c5e7649ae2a184ac07726d85e0655860901200851bc38896ac68fae2f458dd407418b1382ff6c54fde4ffc25d52c7e0aed16140ab5bbac4ee3c098900d2f844a5fe5f14cc011f275701804d4ed65aff3adfb0e94f1c4b6154a4c3fb6003446b7a86ef71e196a6516cf05a93f195f77 +B = 5f0115ff2a4e71e3d6e78fcc7811e3e45f645cdcce2d384529f9e61397f527ccb17372f38881b485480de01091f9fcd2c552f9eef9b0880d7ec6357b4c1deaa40de9d501a0901e7f7165bd1b207d684f7873ad500aedfada464b2a8a3fc06e24c857e1ab41829274138c98fc28575b2f8270bc8f6145441e80d6f0d0c6637859 +GCD = 1 + +A = -1c07bcdf9d2c645b8898d9304d9d0fed8289ad52ac993811218755cd2046dd374530588e8d89941e069cea4bafa695bc97c72029f6a8656ac164f26a42fcfe267e73cbd377a54cb97a716680374cdf3ffe246b4019f33784aea178c05d3e767a68572e8eed84fef6a6bdd3489ed542b25beae08b95380e5aa885b3c59829acb0 +B = -dbdcef7539b68c55b20fb50689c2aadb202b77b70597f14c4e21e24d79ca682c3ed0e1a7b3afea0edd6720deab786da11ab0f24e0402b1e3ee0261ca92ee3224affee837f60b8c95a5103cac40cc5fc6865a17804aefb3c89d403459f113f118857067b0d3a9df0a69780b3223178ec30f8963906b7941ecb515dcfb97e8826e +GCD = 2 + +A = -baddda78c2d2ba19eb82a3850eab8913085b31582a2832249eb6c287362e4c1a47793a03d879d479461f334ba3ae521530d493e0f3a47cff732178bac5e37b452ffa2f8376df8f82cfd3dc53e0648bbe2b7b357962712c0beffa061aed5741f8a51ff79c2275ade6b9c8f168a1f1a13c124843ec35349b9997a4fd144a030907 +B = -4636d310a5c1c442e3821a7cbba1d814a8a2ce7a97faeb79c7a540c57717b91bcb833cd72a8b5d5cfd0028baf655e3bd6315fc580841d26a1b0018d7f4121b2289979ca41b19791e867cb543bc8f9521bd4ee1b277940c9077afc1d467982e3bb03c9089611f02745199df542d5506b2d9a7131fd09685730685ba75ba695268 +GCD = 1 + +A = 46baa49c2f7728048d9f5364575b62b2f63b7b10155cd73d7c5526996760603634e50221af5eb57b8025d93771dbc180d6d1eebda2b2b0a25b9755e1c401aca364e9a1e740e3d4b4bd14fb104d450c610dfbfdb11fcc0811d80846cb3b7e19c9c63474737e971e31dd55b6d24615d0c05a51e3efccb3c2dfe36f5b9438acf967 +B = -345016d699e4a527ff4e41f7b39bc28ed4f3a0b3683ae41027ca922610df60287bd05fd7010a5a0e3fcc393e8989b4274089e506b747cdee159fd9c2de53fd892dfff8f5c30b985c980568bb0d5db08a452a510acddddc3d69f1ed094e3dfa17155817c8854a2489d6f575a002375fb09465822932664913ea1bf4b642e0ddc7 +GCD = 1 + +A = 523d9a78bb927c32264f235207e29d7cc7afbf3257c74421d1d29cd30e2868cca064ba01d256a04a2b6e36d8b9ecf8c4a08a966a9d3adf4404c3f4c780a39d539efb9699626f24fab7042aba81bb8d6a6b49ca08e0644efe3f3310e7ef582cbdffd6b33f873b9fdef3406d06278049458d2d600d47f3cbbcb909be2813f017f7 +B = -e323d7fed66a1c7067696ec71cc338c8eef4273988ca844ef32b2d699a281b795765b31c7eb9fc613567a8e369438892350a6c8dcc2c3031047edb1d09b12534099e3339a73676a225f3afb7fb9fa3f07f928abe09c01a9aa1f657226655935f30e8645c62476f75ce1f61ed3b7ccf0d1091b6e51a2b2a7ee2756a64b23b0a7a +GCD = 1 + +A = -65af147cba476771db1e57a7b371a81fe1eff3735c2beea08095e1900e23f7cb03ca9ec3482e8c09f5f82c5db5c787133df367687744e207c4e022463e474a48cd9c04a9781c1f70dfce111d2d7707b7fbf221e9dea7d873bb6ffcf53f336446ab03276e5a5e077bb61a89e3e789de2dc275dccbe56225851953a83f08d01e67 +B = 62a1cb36bd8be8f8f9158a598c93a34c1c4fd845cfc44c1c328e19260d855da650d01cc0f3ccc398fb8845ef488c588738775c1a1f7c8ab546f11e33724f590891a987d554bb6f349ac246a7d15a30157eadaae4556fa97fb038a74c0c67f0c4bb6236852838963dd1237ea5479b73a37fbba2b6baef816d3cecb75736155ee1 +GCD = 5 + +A = -d58ab10de058b1c1807e694fb50834e4120c903660155dd34ec6c6138367cc5a93755f04e611e993194fa4f400a9eaeec637a184773a4e17564979eb47f1c34888a6ff6e2b2ccfb1451e89d8b622f82c8ee28152b9bc5905ebef33aacc9d20be76205f6c301ff68ffc93b1a6ac6a27ab5011bb0b8b41060011a70d2c40704ccf +B = -db517c29a3977052e2a0cf6804ab1525f7b5fcf1edf40c1cf526756530e6c1079e594cb604e67ff387cf30098fc3c51e202c257387f19d8f1478ee9e2e9a69a50cc3361e4478fe3740cd6aaa221c8ea0f87f7252840a61e0289844d3c84f9f7a8c3c880283e8a22ad2bc2a9ae96547706b1e33c8c020e222e2707d4507ade472 +GCD = 1 + +A = -7e18b8dbca30e7dc908e2acea77629c16739d2ed248ffca6cf89b0ec29fa910eb30109e314057bb1e7c3ad4655626ab7c3d8f6e1febe092e24d0f86d78b8e2ee953f7b46be1ebc5b5c72729ae2804d73cb84f02af042dfafaaed3fb9ce280549b278557ac502d6309ddc1ca8976b90416bd785547210c78d03f62b19060858da +B = ce9b6409cce54edea5bd5c90732dff0347fbe948c75be56f4f636c5269ecd72be8fd269a1d35d0ed3f3d2d2069524f7dd24fe97f3233a2fa19d373e718896789e5423ad9043f801274e66978c2796d190e1fce24f3846711fea654326dd381314ca031bf41fe1d26ae73bc207128bcf67e380108ec09dd67c4a6b9b7a227ef08 +GCD = 26 + +A = -c19a98626ed1ad7c06df22a846d15e0de0cc5cfb5fb2034fbcc05a42f2e5fb75b8ea200ed7a797fdeb50fbac99db28328e0e9bc621f0fe1f80adeee80ecc9ccd8fab9c3e68e871373ce4d271e7b0a2e106caee1226df33fe525e7e419f07a0c003114639a955007739b7ef399f9cc95974789c0aa364653ced2bf82cb4ca55 +B = e282d29832833a086fbbe98f43f257b401ef1aef702ae69da86a16dd148c7f1ad5e9ba5cba2efe61624e4388a275bd91603d64f841f2db1e957f012f08bafb448d45990edb35e9b45a35898a056f29ae9b8df98e276d5896acc3e0170ccf56f61f28d046ce6d80337706b9bff482cf1f50af881be29ad55144c61e50f60ceaf7 +GCD = f + +A = 1ba81942b49375a5dfc0cf3bd2767b333183b0b537432b937b939f792fc73694defce7c9f45b5359a8e096e296fa5cb6806d2dfe16fd0e2c1c3017b6bb8fe1cd42768db5dffe0be6b1a4bf4b3825db1f12792ae78c38fd3356d97dd668693b29a4f8508c7d791a754dfa64aa512afffdd8cb8d39fefbe4e1aa411040ee6ae64e +B = 55699d1411df1e559260770362f47c9c717ac59fee03a4e9daac5d35bcb1d8da656b794dbc1c3adf9102d9edaa994281dcac2cb6a1feac8085c15aadfa95ffc2eee95850ef3b449ad430ba1f12eb7d2844c58a9fc40d356b2d0e85a76abc83ad7ac7360d4c4bf8575ce83a0a6efd1ed07276b04202a0e378c1952d4c05f0e9f +GCD = 1 + +A = 6b1c440daba7b4ff5842a695212129e0f22d652c4f1320afd6260c86a1fbea8d9da9b595029b5031f599fe605f6e45c8ee085be45213d93354a7a9f1063218f6eba3cc1928d4bad9c58e3b29907e3f33d859354dc35bd2052bfb1f73b388031389a1d52e0d7012fef9c16fab753b8a37a18ac0e1dada19e4a18ceeb9580d63f9 +B = -38eb0946cef6fb3501cef13845cc1e41b5b29db4d522d6e750cabaeb196b77812801ce973ae94a6226b76487f8fb4f7c73e4e4f7858eb923460604046687295a0cc829d34106acc100d88ffae5efbc957cd870426d5dc7dfa7270c6cbea6d7465b07118200ade49d25a5b73974202f28d49df55c724616b431486a8ac686e978 +GCD = 1 + +A = b7bbe000c2b7b01940c9c800c485940db7e118f9e9a8b4cd509224dff6a6109df506921c01cedf12e3a7e94d0a6ad4b26c4b2da406649bbc49733fce0cf83e9bd3ab3fbc61c05224e4fad7f9ce9faed8ed8c810ec83d20622b50e3cb25c9da8edc281037e9683c3be507cec88316229a5572e9fe51392caf8d20a3e19f513497 +B = ab3cca133393ab6f04c981f63769a99cc584b441a07cddce030ae7d8c29be2ecf438840dba17c7257c598ed9362b3a6ae6825571b6c2371e3ca9ffdb46eb0928e8aeded6724c182434e7a6b1c9e785f8d0b2379d2b065dcf520b7d039f58036a15e494011083d7716e87b87027cd06511ceff22c89aba346544d131d459ad4d1 +GCD = 1 + +A = -3a7671fb793fe4f8860dd6f1f62b2f2e3eb76782030c8ef58d1daff67b500db263b04c93434a6cef6c0c8717f7a1f0b9834d684cb5ff08827811cdd85d2dee649c6d5503dbaabd13b431c79a1da009d3f872dde56593b952b09f38b2d31ed4ae2d552b6899b88633cd25c2b786fb2946882639621f6daf947e3c0dfe962bfda4 +B = 8df16704d43d7a8cf3dfcc4990112db53f1347a0ba589bd521d57020b1e4c32acd0ab1fd5015bd17d68b98f973800f1a5af0cbecad12f3c8e94f0569f7b068843bd09da9c462c120925ab8e0f60569876e0ee4dc089c1b26a8813caec057f0cb153371497fed5fbfb88494509118d7c24b18276e7c863cbfb19e837bd28f09d5 +GCD = 1 + +A = f699efd4f6602bf7a6ad35145d8378be44215098ce9303084d153381281a2d2d01c7704eb430eedeaa9d80979f4728cbdb69aa6a39f6d82d79480260d848faa76cc3969907bf77c4b95903c67e9f3a41c8b84f3f84d1264fb7a96bd0602fb327eb1ae8b83c49468839d44516a40d6b17f8bb7b721e756dd94112199418b91db3 +B = 68ecbb6460d11e9937b1ae0622d2598c801c77b349cf27d69fd4bc56b6eb7278195ce9d4f10458dd6b23695127200372d9eaec0b86630916ed52da914070ea177ae37ac31e8cc9096495a2221a27412b75e6deac4ccfb34d8197798272b1c31a1c8f120a94b8d7f6fb746259810f74a97bd40116fc0c33b324c2b75b58450eb1 +GCD = 1 + +A = -eb2f190429e4b06cb8f0d2dfbff6c1f9070b7eae8a124aaa3fae7e5f9d7f08dad78c0c64fe6c7548b87d56c75bb77825db8ed0487825cdf526eced4454d0c643428298034e908a8d85dcf42a80c35834c153c7036aca7d7c6b56f022e976a37dbedf0112aefd5ae6db580be2ec8c81a0fe41e7d3c2201a784427374d187209f9 +B = -4a94e4ab9d10647c27893ce721b326c91fa18ee518deb6b52beaa83e60ac88ae6d7f01adb1c5b11099c014ec9bca3fbedbac7342ab039b35c26b2b037d2598f5331e49c02ed9a75217f81bbe7f83ab984c0cf1658fe4e7c92941fc931b7d033104a090280e81df6116b20315bb52e6be2efe7c28442458bb138ba49ab23f3386 +GCD = 1 + +A = 5cf919191e7ce00c2f65e95ee0caea264132d72e45bea8b5b60dd80c346652d3fa8842d02154375e32a59fce2beca66334b5b48deff06ecc5e042c1d7996d36c964e1e21fd70db4ec41e359cfbba081835a726bf5f376f2f3c586765f34b8291ff92ba84f10a41dddf1ab7da9fe28e11176158836e5566ca81e991f2b23ae620 +B = dee4170410d1cbab945a5ab63d5c92de054d3896aac9d711bdc7100a6bc069ae2fcb4ab1bb6880da239cd69df3c8a1c9eb0431393f5b53374fe140c5c71628ee5d66124efa4b7006cd8264362dd75ccb04899d63bee78ab9ca7ff09b8dba43acb1df1c4476120ec837c0d3aa2fbc5b84c356e14a2be3e90d360363888558f39 +GCD = 1 + +A = 915743d518c5b65a1b34b0b5280aedf5efd89efbbc6ed35df99e05365a183891a90a5d7d32f4e1573db2d9dff242bc9a4868d6562b3475e2bf1b5c78b998774023a8d1e7577757784703fefc22e6f70a40aa81ca7eef8ab8b0eb169fe9021f3a9cedcca76725a4b978eeca820965fba42f5db0b4f8167ec6b60d18af55cd8d58 +B = 24be1aa4114edbf7a8c69111d2371558ef441316cddee4b76622a611c2dffc76754d967d49b0b2afc14106c38c807c0734145d8fdba17b03010d696e3ee8d5c19b09eb924a0c025d21168a9033d60e185cb288a06b8164332fa34027612214fc7fbaf1c32d0852305753b5593b9a4c232a746cbf94552659bae327e86ddad9ba +GCD = 2 + +A = c2c0b86663a66945321c3fde8ad5061f0a141f876850595c36d0ec2a051a459303d3056180b97308416116a8f810afab6a2b77e02b016251e0010a0520d4f31b360945ec71d984b8600a2f7e27d0c37125440b4f537de469c2b18e811d6eb63cce609b392ca4b3a49b2bd74c2badf748e574cfc0a0b2298e374e58ae8fd0d9ae +B = -a8299dcab5e527b8300425b251ca07a0fa2cad85eb8c5b9832a13b8266c8484c41bd5e62396d5b75dae7125fd82125a89c706217bd32a014908ab36d8045cba667407717dbd853c7ae0286788715ad909e6340cde365fc4abbfe9456f901b980441f7794279fab6534504e17ba1fc10172ec4d9e6dfedb1b5c0d981e42c1efd3 +GCD = 1 + +A = -558312feb60f77144171508b358b8fd4d962387d9fc6c24a3760df8fc631e24174d8d9be376ccd395833820fe3492ea37e48c2036e099595c850ffc31bea2f7824e67101552360f200084c425c7499971156a851e5c7f36386d3103dc9987257f9322a6fee94b2ab45330c2e654964c5a3c3d8a14a24ba787af4cfe2dd44273 +B = -cfa1dec0499709a51f57c0f4231761363d18919c92dfaa950085492b76ebc4bb8ec7398a78416e11a9894713621cc4076725756c5c143bc64c03c31c5ca8713804e89503b9ffe477ab3d9c9842d72d93f78636f6fda43ae396ddbc4ad01a61e50d0c39ff922ee0c8f9237c522a1f0af73ae699734b4adc24663f5d3479612b0f +GCD = 1 + +A = 24b50ac79018938e673892d1bbb2458b8bf97ddff749c7d2f25c7d7689dd18189c879611b6406dc2f9a9c6cbde9d3d4ccb1930c599fa1063937325d219524b97d2afadf01d5e983d8c8cae43aa62b07c90653549e34e221d70c7c32b404274145153adea759f2db704b510de1a8e8574db95e768a2bbc828578399c7b7555b99 +B = -c17aca09336b02e6b99841cfadbb530bb3668370c30b0af1fd3df5254a2287df44a0d952395648432aa60c4e3a9bad26b14c6c32b50f5bf3da39bb4d2f3de6309d75262080deb9e52ad0d6e690e51a0cc30c131010912bf45952ad7155d271f9f50198a37e283be0797fa5d4aa446b2e05eddc5ac7e5cc24e4d3a27c0ad5181e +GCD = 3 + +A = 219358bf26de14de7a281db1c579d17c1385945739d9160ad92078e108c9b177029f6a6bda96a747cc9edcf00ac1fe05c709c4676710756109e834d5975f3818aaba48e142953da8ab5bee5411af26c41f4f59159c4fe7737015729bb1f64d07e9f883e445c1e44636b26872039990bb0135bc07457ed95ad88c65c33b38b022 +B = -4c8a5ad09afdfe6c86d9f1ceb1d63bd42df742c2170ed60386be9e936ff4fc3ff358e444c975d77eac51e112daef11c0106b95856fac4980840206f290f3ff8d869ff82d11d111710d8bafde4c845e2dce269b6dc1ac61b46d6862a094b9434647e5847003e17ad3b687083871fe1f49c400b2fd83306ace5a6c0a9e2c907e21 +GCD = 5 + +A = f6f8439fcf3abeea0ea57a71bcc7b14b1d977baf4725362e55e48cbdbc79f7cf62881d9a3bc6976ff639a7148ed023935a7dbec412db76fa4ee4da47b715454dcf1316ddd21886ec983f58c9ceca40c55a5980a1958a249bdb0c8920e37cf5aa76f9df2206962b68c4379f9943de8b973990b6face5e94f169edf058309fca8c +B = -f16353a82dc0880c8e7600b87cb8496425b7e116726dbfafe06bd92acd069e74e08afdabcd69092e0715a583034f4a2d70cb2e2b1f3584cebaca113d233d28997425931f371f5cbda04313df3cfb20f8f896c18bf157605a05ee9f47022f8ebe6078bd24b78f9df15f293af4f524bd558997e6d2ce137e641508c7aeb3fd728f +GCD = 1 + +A = -e9927ec088b4dee2b3b147670b6b6e7adb582faebadaa8eb3f6c2653fe7d2d61a0ae5c09479de746ff8b9ba16ef70e9472e01399ff87694584b2146d663ad6921a3f7a3b636b4ed70c166280016203591e68133c243da1d8aeed40e6fff7da11ea84ac04f7663ca1d9f85f342f7bedadaaf4aab167836d571c56a73de35f1bb5 +B = -6bddcd7258d73fc1dc525ca6838dd6b0767998e11f9eda2e379ca4ef315242f4b726b3d6ff700a164e9f87d4d2a910453c838f529c5ed3e762f8d1581d2c3259322290f43e990c3122612e41824c375c7ad6c743c7899b035e43b34e4f375855187ae3ad3c477f96a7610403b92be34be1421d84c88aabe9d99d11ba5a5530b6 +GCD = 1 + +A = -f150dd297f1ece05d8a2d67636737d2d80626aaa0571de64fab56fceeb8f297625d1c0c46cd2270eb2da105e529ddbdc56228af7b65cd2ecf166b848768be6c9bd7da502ee88fff28052362a6696608dfff05a8f21c087f0cadae4b1b2e14ca98089000f78f5dc0dde8c00858bfdb9a08fc5c52763418aaecde78f362c796a9e +B = -c14c3208100dd43ad41dafc6a2e5b8451484b54bb30a49489239b2aed80c954a1c9cf78591c5ea4ba8d54ff2ebadd86d7dd6bf3e7d19adb4e6b0427d221e86b70b902ff6765c91ce575a1c6266a6e23e85e728a08798fa8a5a5589389b03f66d9ecba5b59569237f71ef7991be340805f4bb04f4a2191ec2d3022c550be0b71a +GCD = a + +A = -a2a491e9040953e5ad41a12c383623debf2d085cb7b11e99e1618d17c393ce17c0336cf60214ecfc96b18ead55daca28caab9c6ab38e90c1d73ab354298cfc2b6f89613f5d85ec6a88a8f5fbc791df9a60ebb81c564e5a133d3120725b7da543b0e1a7087d59df0179f5f4f315074253717e8140239d95eeb52c7c096c723199 +B = 6106a637f288c73e88fce3d93340096b03c76f95bed973a434882a1b07f64606922c2b01a2b30a6f27375b30b00ddecb2aa939383c8df0832cafac0938351286fda0fef558d9a706fe7451d11255859c984b37b8eedc43fc597d969a72756ac1faf3bbb478f17c6fb5b4dab0e398e0ca6a7b9e152e17e01f6ead8c7fa4f19e86 +GCD = 1 + +A = -9670618aed5148ea24541bebed25ffb79681f909715c72622cf7c73401154f54f15ef6f1100529fdc1f8716ee66f6bd9744fcafc05db87f51e20428cf65832e3e008ad9cf2ee313d3896344188f4a0a2b569d34534d74e02a550f3531da78a15904414e384a3f564d1ab92046198b70348e958090c09f23054a5a5e8feb45d21 +B = -803ebc2bbb62d9ad33317a89d891a140d4a62913fc0f13b4f9b37cf7178d2f5d201ee1f9a13d682f1e2627bcf379cbead3321951e38efb39fca9bfcfe3729192535e1424cc4d0744373a72887fc06e8221f6232ba9b7243feac70aa97a32ef93aeb2293ab933d103eab2917de36aebf8184550984f8cc9fc9cd660f8b1bfdc5b +GCD = 1 + +A = 7f7730bbbac5c500ebef32d68a3c12fb94387f8ec962acd85c6ced74709362061d3334b545b891b200f1c615069c666acea78b293ceb1d32cfe846911cccd980e5a25bd49e767a63616bc7d6df7523ed30a9bd8cf807c59cfb75d5ec296f78a8af99f156a61cdeb70da0d7691ff6824dee195b447f04a424ed0aeeb5bbd60761 +B = 27c093cf983b9c55b17dcb8561f85da15cf34261992f7eb07d61d53c1db5d697a6de52629a90628865bf3dd0b80af571ded7eb9c5a569505dbd4f899697abe5d9675bfa7f5e8d460cb9afd9a40b5f28ea0a0c4d655da45f6246d1431c18084d5513b4e1563b138bdcbaf738968b366114b3b58b1c14f4b7f0ee6fbbe5bf55b6c +GCD = 3 + +A = 17a86b2dca7cb017dacb7934122177bc14a3f93ddfdf4b0542dd55ae4aee052a60f4f5a80dfbbb13ce17cf3ba2296dbfd205c2b72b497c3611bdfc0b8657efa10d1ad559d6a6d7a7b7b159fbb993ba9b9a6b10b1ad4320e175bccfeef4c51e79eb133239a85be5251fe1ef544820d8b1e50c8f47f13009c267e13b550b87264a +B = eae25e90df4e0e9aa81c72d6b11cb17b43a36c9bb544d12236ea42bcb681ff8f6a96e574cf43fd4d7eb8e98a10b78cf3c7c173470965a2b188b3d20181c24f555a692dc19ac0ec4d68cd9f3763c9d467a6f0bfdac1bb90dd4bd264fe61d6e67ac75a4a46da09c23087d6bfe1967db5c71801581f74bcd983052345f63273e541 +GCD = 1 + +A = -290afffa7c9f4035dd982a856b2173887f96cf6cc273e5372cf10d4024ff4309bcaa17e1871d354e275c9a54bf0739b4a3b6369f7806651f949b9fa5c0f5a838c5098dca2d9f52ae387222541b1b4cea8a35098f2ee8ac7bc79465d19600706e0ff555e7055770b4dae1f9ff3b1c1fbc3080084d6542ac065099f1dd5ef945ee +B = -9d6156e9541dcf6e71b769cc04cd6919e6daa48577bf2f5e433f98420ae8cc8ac7caa2c7167e646f6c3725a250b14a123fe6c3e50ca16361eedc2109290ca924d2bb8c631cc7567b870b5896e2a9155983a33a5b686deb86eec118147ec0e84e3214a61cf8cd4f394b8879d56cad4fcfd34799bcec954972d1128f0a0732e279 +GCD = 1 + +A = a587028f54f34472345942f4442f9082f22ff0851dfb06f8b450507f3d50d3cc9dcf356526970a0b945cb87964c87355e4fef9a3e0af7c2184dc929554942fa36e338831829c154a4e3a92451068c797e92ced73a1f1d5719863ff6f2b240f26933232adb514433a52c1f90a414ac1d177f50aad6672913b836fd5213fc73925 +B = ef12b0200d540159c923f152e64aaa59a8af6227cf3883f75a6f0b377438771c49891ddc4859122480c6f6f1dfd7806aabb44f0978f62f76dce3a3ef033a0bdc3ac7f6e27ae2ac0d7a881f369da1907a5627bfb1e20e25cecb4bbe75d97acc528507f7a5c8104bfa6fd7d0720ba4355d101e91658f8b65c5af90867397765ef3 +GCD = 1 + +A = 5969fcaea1ea024f5310dbfaa8a441e4ce84351eaa6be8dc4f13513681b2e6c3a224fb8f7bf7a2bf41b7843fad0626f21b07d45ab6abcbff554acb2fb2e4ec8527a93de44fb89781495f557b17b671b1d29d313cb4f83b418b19201e57c821d0e9736a30512895c69f790a719820ae161acc1932aa562f03109c64ea2e489c7c +B = -fc1725597839d78f679b4303dd499b8c72dd44e438bf894517aca5625d8a65920b24b4083caba2980fc4ec4832bcafa60f5847bd23551da6f7185120d4daf6a459221dc3b51f191550ff4e4f3f98fa7c3ccaac897f4de5277e33cf082332d83c58224105d0e734c0d5cbd889c16afce9842c3f57a765333f5365cbd0619bd7ad +GCD = 1 + +A = -5c7615d07e8d7705a409672af2d017d4c3e722fc196a7cc38e14d33b54b6352e5610b31dc49685ab4dc8a6d212fc22683cbde6da3d4bd2077cf85199fc5b0a917060d9706438e6f51d10d3a4f93590679111ceca9c8b0bbbbd9b11a61e0f4ea060d8e78973789cefc04cca2edc82033426761dc8b69d9d63ce2a1bb1f89aae64 +B = -ca8d899889f95f9e7540453465f532de8509c4be96a5180649a13031ee3cbbba82a3836d62e2bf4957b4eb24f72d3791efc3dc6924f6ad1638e4fa98574bb139fcf313390ec5069b7dc870b0c4b91efc59a3c5e753c84938eb3a11220778090f122eb7a80b72434f9f72f9c4efb62fe5f8ffc62bd4479e73ea4de411cb4ca2f1 +GCD = 1 + +A = b228a5dbc8f0fd6813d3e2e0ca3faf737a16da9de30136baa25ece4d18efff8aa8f058b622932ae86b7dc3834d4c5a13bb743af4d9a6cf930abe093a3c13121ba884ffa8ed432bf5530a32f35c74c59988dedf597f92215e77e688b86f8830d3b1718ec1fe98e127243ce0eb8635e5c67ef5298fbe626e5103801d203e5ea68d +B = 5e8edba6ad295a9ef6de64e83c0a2912f823a26e0ffd29b2bb35ce15d96f26c5fd7d9d458add5ae4fb322ede40be5fa80a3813bdf51c531476e8eca0e510cba764708b22efdbee1c593ba9bd172db351a9e469bc63494acfe4265b59f298a5e7ee943421bdefbccfbc50beb3a4f0534276c54b9f92ce9b1a81549cf0a752f86f +GCD = 1 + +A = daaa9df87752053815d2869858a9d90d78c0042797e09bf1efe128e105b8ca1dbd2549fce28d301ac3c207c5115bdaea8491bf9bb618a7a0c1c5dbde5b42f67a5bd7a4e041af156ae8b93bd5b01204322e0c9ec0eede44a4e2652d094805af06fcb2657cbf725548656ee5e943621ae9516a0f4018933003d6b5e60127c00802 +B = -9ba0ad4321b1bcc6dcbf4fb95486263c2d9f91e1d997216538c6f29c687fcaab2d31f8b948d2fba1d932c613c8d373cf2bdbfcc8a7dd08652d1c3cdba9c01f8bdb19534b1194689c361aa69ee8cd735a1e181eaca31750415e965c0f449e1866d3eab00c07590c5854639df4c425e8fda3e97c9d845f0d36a57f46486b1bfb41 +GCD = 1 + +A = 8ce527e4f770ddc7717e4912de5549c578841c58f0e4b1976f7aca919aac653d5f1a204c11adb28a208d25c01c630d04181ade823140ddd43912225792ea7f3d902d9b2f1ee76bd29711a767cca7c4dea535b11384e70f3c5bc86371aede57e1868274fe971f662977fe3ea7271bdd296482b2b76e641b59aed3aea4ab04e994 +B = -e4eeda96e60840ef8a2647b16f84ebeeb3409029385674c276903c72362a2cd2d55480df6352fb67e63ada4580e31f3bb9ab711ab3b7288c968c6f9c06dc8f3cc7f9fa6383f90ddb82ffba8bc9ae0d05c12b7dbbbb472b4ac19d0f8b3b55ebdde325d80bd2c793fb47e4162d6b8ec1a5aa9851b169782ad4cd7d29b9ffdb7733 +GCD = 1 + +A = 4f7483ef99d00c8f779d107e62c0898c8ca09860f2a615c9b6ed56a14046175e259cb076560b27aaccd24049b284ab75ba85164bf16b96e02b6415186fa50d33d8335f85026261c6876a45d5deb91a3dd619944a6027fdfc7fb6b52ced11efeca79ab7443f9f9c43b34237fa7c4a7dbb7d1bdf91691558e4a108e7b6633a1237 +B = -ddf27c43f25b08b9bc961c16bb5869b4698c6caf09289c41ca2caa4d7128d5123ab5badeb19c5b0387e3ba9151c5a34767cd9b98ac253901a83301ea86bdc9c6eccc9e844e0a5a62e623470e296f16c563088e512dab76d4de55b640d44cac67d091675958e5cfe950544fd463bb7b2b94a2cc314a5364792c5ae185310e6fd9 +GCD = 7 + +A = e1eda05210f39acff8e3a55f0b364e9800c94139a18651f263ca80cb1e2cd9b98f1ca7b13bd74d7d300b43bb4ab60e47476640735caddd9b1084576453089b4fa15d76a91a6e04b5fba37573d431ba208f5da3f5bc247caab959cbb1b8de7e33782f5100bdfb27449d0c7d1e4152b411c85dfc4c1ccf915ab0bccebaa05f4181 +B = 409fa219d89403a4c0bd7006a89a729e94745cb5f5c3ad966fa42054af36ea90d67edc26aa83ff7539f45fcfb34879ed4c5c2b91ef0edf290cd5c71a72ee749f319d0433a1b7f3b918d60c8530282599f205490791b36f157716e24cb8e908ac19d1b0ff9da35bf8bcf886d4ef032de77626390d8a02d62d99fb901a2ecd4aab +GCD = 1 + +A = -52bfce0d65cb325ff4f39608d61eee613e6ef5359bd64203811b2d417c108af3d7b8d024df882f9dffc4bf4104689bb4d8c9f31846731c883de404e23c5f8d5adb5f86c3a6d1a658e577f0bbce73001ffc35816dbeec761204eb15fdcbc2cf23483eb86c6b9e8437190ea25e0a38a7e80109828d357e0528dc8e393d4327d22f +B = 34e064103d80cce850df60680f73c4944176ce061e47d1a4e44876ab01d76a089a9adc54de98ad9ece04d88c6b3af4a8460b2d676cf4ea96b2e245973d981112ce034f42500a30d9de3454012ab34bcc5f0d5245dba2b26fab2ea463f6f2a5aa0f0cfb2feb1f685eb220d6e07fbb30749a9350b30972622e28567fcecd4476f9 +GCD = 1 + +A = ddef3849107b4d977d64bbca913979ed7ef5df6c6efdd9c3d72c99d29f45b07924b045b6cb4c793a5e25f8463e133e1d7468575a020491d15bc9b9b9b7558dc0407b58cbe5ef05055a7847d21a02b9294dbc60dec0b8e3dcddd5373c887a84c9350b2d5c6d8302418bfb4fa298c4e10ff770deab9bbe42683c66851f596749d6 +B = -a3c801853e4a2343936633546e4467d422e70e2c6e441c30b2573d2d18d38fb2daa2fe8bb618c5a0347795578629c1594d261c7ff99f5a2dbf3471a3d87f4bbb97e42dc606522f04df941dfc18afeb3cf10d1eab9fbf53c5df03ef9c52b392fce4639662e2f7d64e46e29e27dc044f9a7452844f1cf3530256a08a49c57afb68 +GCD = 6 + +A = 6a11eba63ec3cc03182a5deb2cdb3c28ca38c77f15e872b7da67d7f92bf39cc25b229dc6d0df32b41917395b3e3fa5d6a8f507a52c0e552f7d6331ec9808e60bac7cd76f6ba9063a268e73cef4181c025c796b370bdebae04361d86b11cdca768bdba161bb22b40e753f1f17fe3371caf442d862e1046c079e8abf0dd76cca19 +B = 6b548fc229f4e6948a4501e5a0c9ad28a10e5ba3db8b52d300c8fd88f3ee736f84dd7d4eb238fc07d92482eced7f972a94c6a8181934975d924ca7294e39afa9edcae2e14811c676f4d00aee7fc8da8b0a5cae07850a5506cb7f92dd927f62b0bf054a9ddf7eb21d33e59b25fb981592d8e9ca8f7edb9afc75ba2deda519a89d +GCD = 1 + +A = 85b61531f5450b92f78aa7a508af38d8742faf288984dd38390d4a0bc65c10c57cfe7121d9cb027ac57c3a8cbe7a4427ffc02e9cc0e492a0cb085d4e47007beebeb99e1c42b832ddc5f823edf232f750a847477c57718dc4bcfc7a42bc3f9487fe37dd1abd3b929c40854e6b7011ff861d6ba0fd38d6273183eb151fa4cb2ae5 +B = 91b3c92fb7ad42b8c51de1378eba3c6352eea245c87ae377587c8049880470ed09d55f8f32c381216104683ea7bc9b29d98d80927330aeac72ec55f7de1f8e5e4de650ce16eb20b2140c8904f6c062598e045a199d606987871c18987cf6759a56900b484f94a842b0071d830005987d8416d38d0a9023aea8fc90534fafae4e +GCD = 1 + +A = -7a0c0824694e5437bae51697b12e3ab3d61ea73bcd8f74334c9dd03a36469b457eb0fa39e60a37456e9c1d1791b21da8b63f0b66f4a6182b5f26db5185357742375a25f34e15318647f92618917ec33296a0bd2937e3a16dbb70d6ae925cbedb9918c6d500df98274b312876a08f8dc78609626d774292922c5eb6879278f2d +B = -fa1e7d2d1a01ce735f902c862dcd34a95f346ceec4afb6fb8db9cd33d542938da9a4a6e152c7ff456fac3cdb2ba05fb75f84dc2e40ac464a36af489239ca6666c919a36b50a62ea1098b4938b6294fdb2978627b07febaa2e331cf27ae287f0c6587f94e5d962dcc54a8ca251c212651e942993839e66ed73d29cfd869d1bbd3 +GCD = 1f + +A = -df03041c6b4ed7e36cf098873364bd1ae65c1df89e2c49be706c2869f951a5ff78cd757e2d820f0f803e5681d3563448729938ef42e7d85ecba7876f492a8689fe1a6c1f56f1ab9a5757727695a39242eaa726bccc2eaae2ce7f8f7a3c58737fb3faeb6da259af95a916d2213e8cf2d782cd9a036712d07c99956c4c46144a40 +B = -daf1d8ef715d2bd63e453f49d83d134d73463f5d795a7d4171e4a534dd903f17febde26f1c830b8c52419bd70c8536358c2078de466b585e188abb6c46652bd78cf6e4cba6d2bb17ee69a346182a0630d2711fc529beac3f1b41eb06d890a5256ce02d2f136722a21bbc77a992834b56c7ab662fe1d9bdbe7483af776a39b6f1 +GCD = 1 + +A = c2dc29d39cb9410a74fbdf4a10ce7ffbffae61892a5947dd1ae3cdcdaafd90001c802bbda712b6e790c88b83c538bbe2965caf597458e5d5adceca705ecf3bb08a75a79c7241b26fa3a64db04460392503222f9b6f7731c83f7a24d939e4fd66d83bfaca198d3baf5a22ff8e87decca01eaa3565dc2d2dac803697c1e9d08597 +B = -7754041afea6e47febf1327b337e7ae40199626827b4c84c279b983dbee675af2c3a0e49e75164fb54f8a56e541cd5154615e6bddbcf2658e2ccd304f24e60bd6a45b1cadc5f6a52ff8639cc2613fbed749664ea5c38cc0c37b4600ac92553c2330ef7d017f7ffc8e98faa40c0abad92e0ca88deb169e2f568450a24ee7a597b +GCD = 1 + +A = -a0c69dd5594eef70ac837631f479a9e1fdd6c70461ca18eeb2a2060d7c92b1c85d8684220948f69084aed8e9efde1d83b6953be5cd2f54f48121458975c94c286688816c425180941fe4daa02eed4a289e33d9d01a05e5b850931bb781d46c688f43ef473fb05985d8b86bb5d4e1ea91b3fb21945cd51c712c80e6eb3cc8485a +B = b7e13a29f6d28caf672d386809e952c04a1aefdd8bd97ab187c80c4ae78c0425199e47eb84e108047b962def2f1b2957fee52a411305945421d3d44b0753774f63be4e2bce6a2cf3c962099c1d498c1d689af4606c0383b965bad058cfe846dd06f0b0cf4a71b972e032deb57986dbb942cc88a959d05cca370203c34a306f19 +GCD = 1 + +A = -77c5273d0cde3d14944b7ad58f1d923ac53cf9ab0abfdc1338fd751b50908f56a2a6b90b9144805d4049f807f4f4ae836b7759e5091dbd7f39188700ea707d11c6b027a1f0120e3e54beca4a5145bd1befbe9f8f6aad41d41a0160f87579c8c79ffe3b280ab82502b9cc46715d81a06838294b360855e38db7755ad506b0a303 +B = -ed49cd8c1448a03e23dc954d065003556cf105b593e5c6786c78b9b7c578d574dc8ef456efa0ba8f5ca63a52f42e09fd04c1c49b401a585d6ff72d9565ca7d6e2ab70b12c27b08b36c3a5c020d44177e71907f9cf2ef6f5c6307f434c2f63170f74cc52b1c15c59a9f31a7eef8273edf6a621506789ffe2dce9cadb1d1128850 +GCD = 1 + +A = -22dafea395294540fd1d8d1ea441ff96db011ed2f25b065ae237558cb48c40e60cde2629fac19ca14f6a813e83861c7b8e39eb5aea1cdfdb255fba5139dfc569f0644e529ce294640fbbd596588160b9b7812abca6a0aa3dde8e3dea982342c583cfa589be8d0af09de158d471cf1b68c89117ee51df2cac1010b837db05bebb +B = -8b9315bbb60d86d23af0268ded41e7e56c5054af37255727d10a5bf985cdfe8f76575f25b9bd0259aeb8862aae8bd01380898efe2a3ec966bfc814c0e5d7cce720ee3372905a84185e59cbf386e8acf835a5c82915412833b32e08be47852ccb87336f4d4b797733a9d3f3423cd6ae00f6d47b11608f532222a3eecc8167c231 +GCD = 1 + +A = -1efb3f796250b1dca388818d66b58e0c673d8e91433e75947bf911a5055b863e67e8092cd25bd83c6f321c37e781c3a74515166420b14c92f6a4f4d34ed9b720cee54851c824974a6b72ef2bebe159515f128c99ceae1611a5b67285022a832809d208ad42ee7f7e612880cbf3b93e5d67b331ec778ba38764c44e089a3206d2 +B = 2eeb33d29fc7eb0b2f7a1ed0fcff41c2e7c92455a7eaf72ba5008ee7a72ff0dbe21e116c900a7ceb172008f089b0b3e2d1dcbd01b078a6b2cd73c9a483bb038e2101735724201ee57156b8455f023e24e5692ae5e15649e361f19b3295d1aeb0ac8208292261b76ffbb3e11398037f18ace39981fdda814306692565ac2e2a1a +GCD = 2 + +A = -6386c2da9064c3cfe7d34173ccced22aeb2d3cfb2fcda0102859b925f2a882c6465f9b06a253868c254ccfcdb857e77170a951e6232d05967c019ee6ba4fc13cec53fd2c8226aa237d122d745d8d28a26f586fd687848bb3fc62c6702db601e5edf9237afab3acd7f90c146f2c1bee57281da808402f2a45ebdc7aa0a184ccd7 +B = -4285b7c728a18cbffada168ffeb5b5709df4610ec97bcd60d8228cb3843ccf538fe542aacce135e5e813b2a0d14374bc4054e2d11b9ae1b5ae5d59452eac6f16361e41e07481fb754bc3c07050b8601bdaf8beecd47aee0d8548d99ab11fcb3a0f22f435eee7b558c12bf6d8c0497d8788f279730fdffed9c1d4e4979c6b9956 +GCD = 1 + +A = 31376114c9db98be5b1a9fdeb784f31ba28b61142d9ed2f293a0eff0ad64af1019c757f4254983629e3b8e1e6acd7f0e36b77e04a979ae1e37ace4882d3d7526eeb13169838f1ed569ac5eb8c0852b14c9a5a1a6ef8412573c0fc197b32604a8198c0cb08237e47460f360f9a7cfc0ce8b00a9da5edb08e09c72d7e26ed62579 +B = -88873925a5fe8b2d26aca918a08cd118d67c0b7d0f2bcd70ca6fb0ed9079289443bf21cf60a9c70f9879dabbbf76384c3533e01005b2c2a1e2057d87764751ba3ef56aa4eef8de7efe9b1d66a9fb392585756ab1d5bc3bd7cb1f54b0babe334c5d3e5cd6ecf5668a3baed7e273016d31d3cebbc9986633599b1065d7d0725e8c +GCD = 1 + +A = 28995270792d3997cb00832c89813bda71d0909df2a08d96999d4e5f4142cc5968204d5245f23838bcb865345ccef36af771271f734c5957435abe68f6e0408a529b52bd794377b4d386b638edad75ff43c9b885cd7fb144da38914d5224af2fc5b2cb9a9f81ba6c458e0eafd3ff79e5630d197a744065e7ee6f9f2cb0b7d813 +B = -fbc89910e2260df6c8187f4de25b38647ac421437cbdf1016bdf8a2196e528b26aeafbd265b9d26d3ee0d126e81c46f4167292404b26c7c725bb09e737ca2f2d548a78b48f720fcb14ff8450ed9a60061746078226aa6462cd0a7f19e817c19c4eb329328c1171a62526ce70e6bd177b3e650395d70cb71e93c842ee8fe44266 +GCD = 1 + +A = 5720275ab014e106122249d54b704a9bb8ec2d0789938610a50ec8491f6782aff3f87c27741955f046b6adddb3f34935f49c775067de5658b37129860ffa515e9fba3c4669da726ef5b171f99a3fc7e292c936d81c2b088297c90f5b37da8d826e8562648249fb36af81a7f135312d37fc336a427a37311a6b9f654da58cf8db +B = d02b7bc045fffc3f6f084e71432df357477ddc914a78b24d8cab1f5b08522fd3badc9f0e7bb47e2eee4a00eb27a592d7c1dc70d1532d1ddba9c63352b46a17fb9c8dd7cdd894d9c9c212858ab0ea878e703d403613de189f3ebca37b1a9cd9ede086538e9dd6192f4b07cb74fe4fd5d79de7164343a38abf39f51ddf1ffa81e0 +GCD = 9 + +A = 58395882946f2a4afb7c07225eea7658def0ad1b9204954747b099b221cc8c2631e344840cee358edd1b9c33ad7c694ba7a2ff4d9cb1d89f5413bc8fc2dfdb39fa04a1e7af2381673993e99cb86c86a75addfeadc9a86076ddbf45e28877dcba9b695e72bf4993258109bc7981388ea441f00b88210fc17533882dfeb9a481d8 +B = -d089cff57827f8408d61b4b32e5a337d9b9e363dd145943af0de7a60b911850aa86ff0a28de1a5d3b15d7881f737aa0f933289ad3951bc5c984a2ff9cc55e112c607d9608eabda8826171464deb39fa93ee0fb317464ca6fc03dc72d2beafa5cf83f72ba22f6672303b134c2ba1af337fbc215ef0a8e9a2c3e50308b11b487d0 +GCD = 18 + +A = a62185dde2ea6f61bd547596a966f2109b17fc84984e6030326ab6a3163f20bf31f7e29b49e19c1dfbe1d8d2a66e37c00fdd27f601e4977349d5df4e5ebe726b840c521b680540c1d42aa31bad3c56524cbb7892063e10b292cbcbd9795ec38815c50217265afa14304dfae3cc21ef05b654c0733e575d45d33e6c6b7206f010 +B = -d1146b0e499b53bbbd54e009996b5dfe41fff6bbecc74015406f0b5777020418c7f8a58ea5f8881da990981b5384af93d51656e05a2d50f0c23b0fa4a333a92fff2e8450a7fa65e01dcf5325398c359f34dc799a4bc55f8db538529ae6f0aeac86ceeb3d3f00be43ef5e567695cc3c0e27c652407533bdc40995e8ebc23aef02 +GCD = 2 + +A = -19bb5de4aa684dfd95b64a2efd0a76b82525d6768bb0a1e0b3311e06e694e3f7c3b9dfe92f0fd4ce859525fc9a00655558773efa134b63dbc6246c2deb8ce1a73dc034033c61ef17a91dee0d22155713084cd9d66b9727a842a4bae96a029ea3d212ba4a6fa3227cb267b176b7ada465a2b1a2bfbf310871e537e51cabbf0f +B = -e11c5295664395f0404b184fd16e7fe6123e2b14e5fc8a017cfbc2c712795ad08d43457a176b1042e2d679b36de4aeb89e0de93a1522bd3b2bd44b631f2c756974e11442be01eab03564e8368164c4fe9e1f5a026545433687ff44b760be40755032cbfbcfd5b66000e5fb886b9d7889c4bb4515fd3587ddf4d186cbd33a8e1e +GCD = 1 + +A = -ce06721af0f66ff8a3df8ab2fe46ad49a61f7444f5c2bc55cc651086e5279bee32ba2b5bb3276e83200d8c994d00a36c5901945b11a17c62dc82bbd9a5c7787536d8643a8a7b1d64efee2206f02a7354b185f4c7793b23bf9dada8984396c76da219a0e5d746f15d2fc732e3f13faee869d941d3f4b1c3b61189deb786f73099 +B = cc436e5f3db0da416928a58a03f91038c1ab8fbe79591f8e5a83bd8186a9fecdd505fda88a297c14e7260f7735dec7cdefbaf8133037d70a75416589edb13ca35d8acf7f81c2c4b1bbcf6572c07ea69c6e6868d2e3fa283a191811f6ea180432a8fd7ca9fd6278b145df4cf69afd15637bcc9124094d9df7c90b7be52e5f274f +GCD = 1 + +A = -229b42807581eaebcd2c60a39a22236e7a173930e02c37187176664f390461e0be5d9081dc87cb587b415714c3afb0d7867f2e0c2e8675b21e7c0001d1a6452737befcdc3697fd544d69a893ee8574887726d92dd75671167f064107c8700fbe2ad868fdd0271697709f18c20a00539dffdc40584831fdc4ce4425874a7881c +B = 2cfe0ca4335bbcaecf265dc46cbf3ad927e05a878ce3548cef3c601642ec54d5b382f9e78d5fbf4a97a54e244c7ec0120291855d319cb57086c5f30930d816aeee46f60d356e2d14f587af6ee8c3599553f8b9162dd16f1799637798cb8561b36102a2692db2b1f3f6041c46db8a20a875968845eb445568679148707290b00b +GCD = 1 + +A = -64fc5e360d4e3d24bfb31d5ba75455aa4d7a20c090ebff452121462125bf587d76a3c4329578048964a419256ca61a76e8b45e343d8a026e99d0666a3891238e5a9a51da039f7a797895e1418c9b0839c26e78c816e1666888cb3c9a8457f602e1b66e631992639f44830907c63e0b35bb9cd85c87804fe3cd7700e506cf0b64 +B = -95212acf0d73ea524da4679f663ce3099fd570f9118f30cfa0363d088ebfa768812f0079cceb8f51070e07e69062613f66a0ff3bc86ed2508e02a1714327a547069a87afa10856e5491f2bcb6e3fc82155fd198ae7ac34f76d5917a0922b83d8ad581d0b76c1b7ae6a0b0702442da647c655a09833a8bd28aa89c90a414a9d16 +GCD = 2 + +A = e4131db5487d8d350cb0e927462fe9f6f43564736737f92c245e43fc9d2fc2030fac4d319588150069b61b0c70b34501bfcfc6da6df5b93e84a977d5c5449d051eec2b0c69269c9216946ff6af96e79a824f6d2f37251b402cf3dd2f060d2dac0ba2245c6a0537ad160183e76bc6e694700b1fef703ee546722c462ede23deb9 +B = -84613155c850ebb3235fe00ee513ba33ec1e58ef146b729aeecafa9714b591b57f0d62258d1cf41d6ba5ca2af77726e3b6a5a6fb528620f33cc495ca6ee2683761aa6709333e8c47605bce66a634016a7dec675356443ac57277b3192f164b44768e590907254c705897eddd0c264f8a5ac92c020c059731b3e0f2c834a082c9 +GCD = 3 + +A = 2dd41432ca896911f6095f28b0851b2245f75d24501c5083403455c0a13acb172ad90a2d127849f2fc02f5055aceb460f6789175db522ead8d5efb1bb009edae75564d2ef90b8b585f77fc7cb11ab79cabcf76a068fc14ee80bec60e6ca524816f57703b2d6671ae5a1a2d1e95cd6971f33a81029943c403b9678aab69aa4b2f +B = -d8c70da65df7a5aeb580218933a5d4a9f16c108412dc19360b14cec65543011f5c37c2e32e5821626b0cfb34c6a195740ab23cc93321cc9066f9b7d188bd5377486f0638b40a4aed49340340716dbdcc76f44a093399d2760819d8be4f7e63232f36be4c78a460e42dc620f8c3b3ce3320d1e1dbec7da9b7e889d53e5c572873 +GCD = 1 + +A = 3ee366f91752e139ce9ae8e422acc0444e05ee47754231ba9a0224ce11683c32536689d6826bc5d51559593c1106a273825357f61dd82f8cc8e92b66a20ddcc84299345b603da31866fe8baf43b042505447de6f6dec85ac9397e22887010ab8db03f59c038f98e2dc2e158ca3286be7e88705b6daac344dd14dda542aacf1f9 +B = 9b8e6fcad70b373ba1c536f36d8fb4eaa12e107d8c2542503330b819599ebc2e108f10668d565d39a97e313f28fc32c0241bb12a3bce998e3e78392c48b56ecf7f9e7cfc45bb52142dc4278b63f53a55bfec6569ffedb6dccfb2444caadd26186e4e9f870b0d817ffb8061844a587c73d52a012a147dff70676d5ad57e541209 +GCD = 1 + +A = -e8d9bf2d06ed0e90c06817fac2280b19a3d0dc5793defc150d364ce35a5c047895389e4f5310f4ef0e60a6d4e7f58e806f75d8398edac251304990d8fe2a8d1a5e4807e3d727da89bb61db5290a417c09eb8971070028eb7ea494ac347f73376e34a06efbceda19235c9165aa218471a5c885a1c4c778c1e69e4bbca13806db3 +B = -6616157bae085ab4c87fb1608e24817e8043999b5421bebd1db2b760da062b6ca3fb3435f376f2d094fcb71df1653eb4e4cdca022084a1ba5d87bf0fe88fb118766cd988ecf52c8ea177c5077512f2895eeb98bf914614b7862041e06257a5a480e41abe0e9d6db29eedfd0722a36f01f4e6d3ae92f34006bf00bc50055ba708 +GCD = 1 + +A = -dbc449ca5253b53420a8fe2ed301e37299f811dbf5e550565e74d8177230b229b4d4aaf745b29b206eb984db1b68d11412c9c144beacb351b23be5086c66543189ab577c5886b383ef9903f99c03e1cecfa188a4baa468b3b10ecd937165c9d040d6cd908713f6a1f99cf241ed1127d1a022395a36b937579326ee76900e4c6c +B = f5e38add2508329919c137d0bdfbd353fe9fce70b2d173bf91039a6e52de858e5df35829bb28cf1201a13da91e761cbc972c439c3415e9dc28b0465baa8e34089757e3e0b245abc94268479d4d4c3ea4c32318b2c94163f09883e634e33dbc4231e1b23ed7ae89f6efd53f72e4635d8c06836216d338c82ee5f6ba39e4c45ec7 +GCD = 1 + +A = -6507585db81fe5872b4204d0a36cc34af63e58e04f077733108f435e801d1e40fa24e752421afe3b4c2cfa1852a0040d5674793e9d7871c108dc00b2062e51caf3924c480b884415bee4a55557b9b9dde7e4d090b2a1f4cfa7206da8369976499894e74ccc3482e6ff641af731aa9c38b2b58690050d254c9d6c4197e6d36cad +B = -76f11f9bbb4aede3445775e11899c60ae1595881532b62df256dc45957e7ed59e1f5a2d6f10a235c1468f6167f76690548192846519d6f060a99cbf553709fc30020cbc19f30e7d76fa3bde708ce5bba9cbbe4a9d6b6fff67e6bb6a08d85e8d237c39a707bfb62af0890d1775c29d8f1b4a3f4fc145fcbd72c5c65374a8c49d1 +GCD = 1 + +A = -ba696a5454a099f81bed7b7376f93223720fc2c4af6663197f80c32967e0635d7687dab6ef4885a0f4218d2735d30b1dd8f122d2e7614341255799f587538efe0391e7f29694a3dcb6a1da2c18f775c472d4a4cf3da0b44e2e8fe641551732c88681add226cf69eaff9bf77b944a655fbfc3cebb131f67a13175dd2285eccf87 +B = -4ad9059704e9aaf02d5dda2ced2eda5dfbb09c2c4636d60fb59f6b98a2b2f7679f8ed6d33ffe4117730ed6bffac8cb095253451a34ad9be30854e47efa1ecde722c7809ab8113dbb31cf82288590b19ac873eb682131ac78eef1af33063174e1c3aeb5ada04616303e23f38e3f34cd01c3c7fd1e5eecd49acd469c5edb5f9f7b +GCD = 3 + +A = -e64fa114dc5cad58b777372162a0eb0fb52a8653546313c87b66b97009f9aee1c3a12bfc530907a345b14e355b411b0c623993103cf43a8b700d58c107057075c2dbaecf788dd1ac4a7c374773111c86e73660d10a0e8fde421bb05c8e222b52ea7a4b9b32583f7e280a03868407f3f8ce6cbcf0c7ff85b3b503eda8c8b80612 +B = -9ba4a195088c99e4fd50d27c7e17472629f1f860523edb94b7802cb43266a2c1be703e8bfa4f1a898d968c3d0f3035b6ba2dc8e44bc96780a297abaa7b6431131b773cde95f1e1cf5a762d3f9ef2cfe325e6bfd512fac136e0863b5fc4cbbdd9a09802538c42507f32d82252413cceb1048d085beafcc4775e5769c83f989bc9 +GCD = 1 + +A = 5f87242f516387482d53cee6cf0b57f6cbf5ee7879e73b98d79e1f4967d93e1042ced4ac822a85220a0d8b52b33c3e0405667e9ecc4ca24cd0a7ebf6d5df395958e805ddef68c331c2aced39bdd6a65e0e43e13e2d641bebbe23893780c54ab8b9032e6c345aded119e1dd296e9203507ba3674c89d2e966272f3810e5be7ccb +B = -34433396a87381c918a68b2f1713e84d4f0090eae7eb104cd160e62bf7636fd950204849e1dff8e651ecb09e5bb68f8565c6b48fa77d688f4b98dad46b5be0b9fa9e3ba39f6fc3ea41c8713a14a264081a8fe524802eb173d235334308220e94bfd0f705f6821a79557d0f13e96e44ba109f794d8f6b6c04f4bb25de327e569 +GCD = 1 + +A = 9ea2482ab4cf0d17d35b42f231822689e2c0548ef79d2c8ad50843749b7f909967c4851ef63d62973fca1ff86c7868970b7929dd6aa61c9b7b1a3264a8e1262f918619ea751d508eb34a17561514912ef6add8ba7e4a62567e583c573297576c638f1474b86276a5faf06220fd2ff8c3647c5585767aa4701efcab61882f1f98 +B = dfca32cb9380e8f7c09a5373d0c4eee7c3f43b3845df393ac041def309d5f844df6d972bf05ddd6b1bcfdef27837caf7e3c48632d5f528eb7d01dcff1023597b84ebba422e7e2d80f7ded1f7c288cc2ff8c3efe42badfc8612db2cb0becb895f34123d267c1a3d2d9b4abe88617a7f3f46597b10847dc6385f9dc591be6f1666 +GCD = 2 + +A = dba72cba86404083e73b70bfde6d3c5ddf9392797f08bbbd19ababf69642b0e09cd8a57d7800b9d74ab0168665b56bbc66bd554066337db870c50068d8c11be72bc290b1df01292dc22af695970a18ac8016c2e21d0c72e0981a4d2b7c981d83a7e469bfd97d205b81cc89941c6e7755402406d86967b7f7c7d1eebb5e65083 +B = 9eda382aecbb22b4a1707a4074612eb5a2f986a1ff8c69832f2dd66462c0f48cc1dbe0ad7745c9de125778afa93e609ff22e505c6a13019fcd75ae611d4fc278f554edd63b193722009f2d0c76b497292fe45a7b1b5d9e9fd14a0d7d8288361ef656a3e0a573079f0142ff5ed0a55c1232141fd67bb16ea448bb665683628055 +GCD = 1 + +A = 7622770fb750c8cb80997c6fc2c4763c1fad1cbdb2069bf192c856c8725079c076870101420f4bb3f7a8e45a6606e0d871e3478863576a414cbdc1bdb45b4b241ea1427bee7efa4cd65b207bf0f97720d26c02f689082f62a0da40766629eb5b5968578edb1cb1a4c381dcee484fb0373d195610c8b33d709b48a6d89995906 +B = ef3caa8ca433bdcd85a54a4e9be3049ff3c4119e8d7b0e842991c6ae0ebc5049bb2bf09717563fdc39672d8ba2111695e0f61ef28afb1ddab25b61c45a085f3d7a4972790adc04c66a26090bea81a67931014ce058e853e961b440510d9f59f615dd4f6eff796b4799dc500b2b3fbe4d712723ce2c1fc0d5f098b94d09987480 +GCD = 2 + +A = 9c24e4efb9d54bfb72a16152bb939b8ebffea3817b0161fc1aaeb92abd8d193b42ab50bf363ff56f24f78203008b722f50036844ea43757f1925f8768b2ba53434aa5d03f06542999f2df920a7f9aea4e68510f662355cd9a0f72743891773e51e88b0e4f4a73791fd10be490ccdd9d6e4879a7f93e8ab36d26c7b71eb136c9b +B = 10e87dc04e9e395097b00ff75bbadf213c7c152757570801556fb3f255efde9d1a2f965e7470257d02af73130462a037fe4aed163744cb34adb7fe1a07cab2036785e3a915fb027077f7b9eb66be105c10a33b08d1ba95af296edf845e33520b54862c7e89708df5e31b27c3f022d78823169f6cd616ac8d040c9445c2f8c272 +GCD = 1 + +A = -f37b32714eaeaf89ac225b055f2afaaed57e6bb3f136028bfcd18638da50e9be829bb6cb691f8d872c576e8b853196a9e3ea4034427a2ecb32da7ec5bc4e63ca30339589b886053a006ed8c9eabee1eec392c4cafab1e31d05ff3530849b6f0ba60d26e15a92b4fb62ffcf2182db2084cbc1f38cfe0b1323a75399b57ba493a4 +B = -112f3273fd768ecec46ddfedf589cad3efd5ad34361ecf124cb5ad8101bb89ec78d6ba6c357d518a31e0b674baf795f84765aecbeec09508d6a660e3754266e5006b44a47dd2ebf2d8256b40ccb4f982f4f4c7cbe5b918c02027b87177651a186adef2604a15659683fcf318ae8644373820a4d36a3e46cbd8fe9f78ecd73271 +GCD = 9 + +A = -becb79c951239e2e1b74b37132dd589b0803dfb4b63575ca32c6894f85a083a45ea826183a630dac7e3953e251d8ca073f1bc726fe3ae8f6354a08f81f3a601d6c00e149d26a8beff205c1b6846aa7dd65750eaaff52210da28053a181ea4712767ddc20f024307f4fd54b6d8fbeffca6117cdffbdcd7fa5851b74cb095eab93 +B = -c225f9722aacb0d06a17c8134774d2fb41f0a7ed7c2aa1ce15844c8170bb63a5c3d0343311798cce8378a8682dbb97c0c12d6eaf650a88909f196141b25e07b9656bb5b5291b06243b4d41994f15d3877556e3f3279b2187dbad74832361120328ab470b63858c55a5c29f23396b6bfabfe3dfbb375c8d4976b5832663bc6924 +GCD = 1 + +A = -2fbe6c1020bbd2bb007dc977c809d53e58b05879861d1817db3aafd7762bf9d7429edbd6a98a77ef04fc67e69d5d4d9c835a72298a9b396e778bb8ad20f5c620090e333e3f6f717d943fdf9b0e71dea7ff50836da8d4a6332cbf9cdaaa991eaa1f54f7881d8de7c06c5d0f29206fc83a919c02a6a8a4cbf0bf9d245f5f6fa987 +B = -1c4097c825c37f38bc5bb5455e79479f089315c2bce2594f6cc87cd69a127419ca878cb491eb3096974e2799b0923f3354f5ae642901a5e001fac9073502c2f345c5e7928e1e3de872600473cf1fd5e5098cd6d6d4eba45aa7a19e470c896ac82b118fca177284d35f3d94e9ae399338e344b605bcdd9a7d0961c9dbde86149a +GCD = 1 + +A = 77c22f3e8cc59e6d16fd9fecde834a7fb34232ca43948acfd0276ed2ed7a853810d8f8f26b23b4d92b1bc11ac55d294150f335b66854be580cb2f1701e00d94fbacd6cc8208a13e14f9dfb2f6ff5857f0975901cdf83f434fe96fcb48c79a1ac01bca92a1f258953cd0f4d9827c8c2e356b546951ab82cd23b5e436719663396 +B = b0ddea5e48cde4538afd9d654497d209036c155786b934944223cdff235d67f7d1b3bdc2d17d438ed6e3391d7cdb9498101cb77eb68993d0fc31ae4ee2a1e029337d45d17f2b2a112a7e46d57777a26d1d0c5f16056cbf651b764d3dbf09672bd601dbdf8bb92705dd74499d7bb9484ee08efb884549a30e4e4ce69d6b1a3186 +GCD = 2 + +A = 5eda6669e068a1ba60b72f72c8134be45d11a15fb0d804b0bfe4570054ffc55d70e79a50cc878ca7eaeffb637978f5588b26e86713b3cdfe2a091593ea12566dba239270708dbc8f15e798b1dd831724971dec5eed95175359e1d92e637be58fbbbd70e62e9683055b4c35b978a9f26d59c2cf04f985fecc69fd2d1ba5340191 +B = ed3d33a6444ecbd6f2a5cbb2996e4d0e33a9de4d391935b34fcdf8c5bbe21c4e53f9534080fa991752355c327f2a69b73c71e3b53dae06e6d42ef2df8f5385172661e38f4a59785ae41ed14310827b13378cd623b115db3bd7ec4a20f995f145ae9411a5a05c8d8998b2f4406d7d53f66c4ffa0fd09c201e2740e48fb16d2c33 +GCD = 1 + +A = -8fdd32108f2b9ed4db0987defef367ed4e79897a67bfb1e0874a07b76f7cdb2170f06a76b4c688396cdbec7fdbdc08445f8a2cf9077fb1b3cf557701ed0ecb52871ca56b797c6a146c098ed3b905b0472f5f9eaa728b4665f6087801dbf3fef50a7ec1541b2b4e393a753fb7a1340c52951decf1ac36a92b992c948112e02139 +B = d38a1bfb7bda21ce6016fa808d0d13fd99c2b0beddd69946bcfd107ee58f4ca92d55167aede394fad4eace8db837b2cb1b1d658fb04697042ccecd358723533f3a0c1ad293f4bf63d9458ecec0b88a1f544c48589ab675b27214660243bdefd71cc5119c0f2c00d722ff145ec4eb97a51303c57d7b9dd4de86e7b715cc53c251 +GCD = 1 + +A = 141d3696ae5d9bddcee491423e95edc1417011bdc431cf08bb6c1b5816040e7114c3d893014a431677091b9adbb2beb96e414d1c622d4ae6f16f50402094136678d20e976355ec2d9d1bb6e4da2f53ed42d50d7fff1e5898c1fc18dfc73d5f2498d76a584d685a05ad8bad3d35072f6de8f24ca9b9d8bbe91e386a1d087ed994 +B = -ab89309a3f8d5cd159bdb9605bae55b7b8767540c40372d88368d312bb3f56f0278020601efbdb002c9dd82ac41500d3c6fcbdd0a61ba9b26c6418906407fb6cf9bd31c32a05917fcee3e159c635d56d03036874a836b6b56718a92f87b1c0732115f8bc989dcfa6cfff6fd89e10abc3edcbce1123d3f5a95205305b7baacb6d +GCD = 1 + +A = -eb6d7f4c979a83cb28751238503d9dea46c2003027987008886e3c36a1cf6eee6911dcb770f02e36e66f1f910c71ac359a0a32bc9015844f2cb6b73b1016ba3da4eab3fc97636043e75e6ee8e9a428b58cee71efa018dcc01194d44c47eba3e51836ddffbd963f71d1e05662b797c61bd1e78f8749025b2cdce2b572772e5d0c +B = -6e559ec50ceb01590d5fd485d6db7f3d48c626f9cda8a9d71b808e7dbde671b16607637ca894afc62ae7a9f8c633ff80e8cbb1ad6e090b1e22e2507df844b3a09e36f8023859409a5cc8822a074b8a44ad5b4eb437a7d047601d3d12ae7fda35848375ffd6fc0cab63f3cf7baac905f58a3b4f95e26a2c90199383b2432d4835 +GCD = 1 + +A = f1465dd873ef240dc4335f2bb33d07bf8ae15fe3c94cd7924cd713d00a3429c5064ec235478f797aa1cd24a2934719026d4aacde50c389e06a544bb1e972978a2334c5f8367c36d80f58cce964d52cc83ab714380f3f476d542b40be1c6a53568353508297bba337db8262fe8eb6a821877392bd5beb78ff364bd3492ade2bac +B = -c9ab219eed80b6efbc26962ad411e9d9afa045b1803f536e06d2dbd04e61d2c35ab79975cc00dfacf7be723d7bbf38a6e9535b2c0b477d87388f7d9f1a8747d148a55c729ca8b1212dd19053b45e7ca661fb263cd25a83bb6902c6227a4a6a84dc8cdace1fbc9853c44fec83a553e0bcb0c6cd9e1b5bc3733941de7dc1bb7df7 +GCD = 1 + +A = -a1e8f6bc59299ba9d897da4814d1f001db6e818a550faf6e74edfff1a190fb2cb494fdf596f2b26e605d9887605d290b0d2c3fbbffcffff6785e40ac438eebc185ff84eef0b117268a6236f67b679aed1edda5b1646335249057a8c503ccbaae73962ba48f007c5240e3438762e18859085d1e2c53516b16a19634ed36e9ff99 +B = b4c03a06b61ef97735420d752d4bb654b9771dcf7deb718e9a2c3e144afbd0602e51db737b27b6cc5b563a30a0a0d2b4f6ca105fdbcfe7e4a92b20ad75c09352aa1087caecce52d1630d31acaddf631f94c8a087b97d325dd3da4c707ee571e45bc7067f57d296b351f3f4c1590450541943fea9aa39229e98315df01ab818cc +GCD = 1 + +A = c889e6a57fde763bab859a8da39f6562f34aea39ab9aa78252658eebd35384698d76d7997e034ab41e992074b8292b940830de7249575db91e726008ee46b49a95426d2d9928312c63f236ddfde746d525119bb36e6d9be88a2de2b65dfb1b7bd9ab6b5455a9e86c990496e7f5af49be2fbcec9984a5b07b3a4ced120fc7baac +B = f9914fa1cb14addfd683057b7dc4cd1b0a77ad4a89d6098635ddf2cde544ab0b62c9fcbfbdd80e24cc91c09604ae66c867d3322dfbf7728813242dd18805ea4f16b4925b57ebc3b9ff77e6cc84c8f6903176be75243bcd6a9fc7b2c72fa65a4f1717ea2fbbdea31e9c112be6abca89567754c333d9bb0971e2e394147d37f7a7 +GCD = 1 + +A = 69ad50c29abb11a952ceff86b200ce13e2ed389b188eee0798cb45ac430ede93288fbdf27aade0a22226fc567f60cbb553d660713511b1535ba1a60ad6932a774235395682763d705cc7ee8deb17c0835ca0c68e2c401b28df8132942e3469b0f9b1455bb1a4ca1165f868a0d5d3a95573a174efa15cb258cab439aa25e6b117 +B = 4fc289390ca3760438bbeba3c0643faf9aba231bad37f9dee804afefbdbe405e7474001403fc28d69a131feb19a7dc374966c00fc910ccf08a9bbad00b8d54992d3c6b7b88f7053704b8bbffbdb952ecc9b74ab00fc81487ff145d2c0b114a4d0b3601ecfbf9fdf0c427fe438cd41e0dd4254b41477e17171f2944165c95a764 +GCD = 1 + +A = a6958b10b000af19622c74c60e835b21b364df3fce9f5c3f426ee379c362a55b3f255b54a98f6300188373ba049f91b186d5cce0774b68400f4c5c09184e8d2dbdb4b02608881fffe4d5f9b32c4bb51b9b4799f1458069c3947485e1dc8bb8b04a21b8a824205050b818dcd2c79b7f935864ae7a686574f3a1fc9684cab8672d +B = e12f293ca9f9bfccf620b3035df8e15f2a6c0cd6f708fd0fa5f8e22d5209a85e0f30293d2f9785cb40c685ca576c5f202cd56faf995f362990b49cba88a5ee9c9bdc85946bb228797c424fdc52d52cd9a7818a822aaedaa1b05892aa455f4a311bb86b71222f54da47ac466f957b37fd93c498aedf051a9a2eb44fcdd513cce3 +GCD = 1 + +A = 7e7667d9c324c4b38a6abaa9cf16de74c8831cf96486d563efdfd97ea9fd547e79b10bfc18f05e685ffbbf1784daaad2774f209d745360a45e3285683784ae16408193a2646fc4437f7ad839fd53ad923d1db82c90fd6c7660b7bfe2f9e821b0866d0f6244418dcfe6a477345e54e7aa57cc12d3e6a0ebc96f6e42a953f42e69 +B = 8f7eefd5e9b340e6c31e9550ee8657409267bcccc19cbb2d223c81faee21c7e7c61a5c68daa98ce48c43b655abb5255de29bd3d1136ab7e46fee2a66ca60a231c9e708d568609644e76a4dac5ac5bcb0c7e80a83bc046a8dd3afcc653516ea77ea7ff43e89a2507e75774ef9d17fe62550788548fe7d1345de98849028e2dcf4 +GCD = 1 + +A = -f4aeefb72ce5bc92be21102f9bde324b71b751ca2cba3396b1a0cf50292a7095ab636d1155f25a389ee219b8384c49b27240ba11bc500546fd88ffad5e6b98fe942991dee7f1ec312c1cd7bd2a29e031f1f3e2daf07cae6b9e7ba0f2255c602db347a82ac6ba9e660acc60e88347deca1bc92d8d74c03a9383ad9a4d8df95faa +B = ed96f4f15cc3b6ba18153fa6bbbd603c0d5e7a16506f62a07a68b128705d3d0ca4a234cb8bff6b132efd981069305371e2f9017a35e372431ee0c04c52c519781e90afcce3261f41c52fa7996b3d8d0b7e8008a8d0c753254f69f25637ba6bb666696048c2fd57cabdf85c4e7cc1806b4d5098dc3a1d7a05358b73c59f68c686 +GCD = 2 + +A = ad539ff8790907f93b5d7651a76739c906c2a05a8a91cba1cdc015c0052194c7a00047201982793225bd756cfcff9078550e655ea91a0551a64863b38db92a1a9b670364b2f81f4c531307f3e59216d8cee1c179c5b9ba7b5ecdcdbfe1555b0b90db28ecb444dee04cc19d4376fa969de9661405ffe26b86d862b1985ff24e86 +B = -14dc76cbeb5d0d13cc1fe1a3d7b74ad089d1bc817b8dea5a06f0b10f47636fc7492b5699cc2f4fa1705ef06c4096e2a93924e2c16e0bf934e6f9d84222d46fa6e2c3081dc4aa29746256eecaffa2757b6f2ec06ae21f8d19308d59196fc88ffeb05dc7924627586c44f8e450775efdc85444c86fddb7e61f9799f3854e3f40af +GCD = 1 + +A = 42256a176668c404a39223d36216d2f7e7011d298272759e47636173b18514adc8bab0a1e147b3bb8432e1645544d7e6d2591995e5ca6743cabaaa16183ece7b7e846d786c4fd53708ffdf5b7c3933545690c42e9231693905ef8391f9344af8c85015416baf20d36d2ba91c10d4fabd2ddae51f4d2e9ae8fee40221dc0f321d +B = a01fdb11921bf592401b5735002a4a0c3fcf5496b4d4c51da1948d2fcd5a754f51219d7d82ec312dd330398ac16dda72c15fa4cf4893fc01c647d0e87b8724303c31b2193e1113a2ceb6160fa5b0034426b5e7b16c189abeaf23502920cfa3323a27d86ac2ca026005e8e27f24b036ac1f0796143f97a1bca0505054a27f5a89 +GCD = 1 + +A = ac294fa2025e419ce04a308b040f002ab6e926797de79092371ecebcbe751563d311fda0b0b49e1c8dd83d6bc36c2de915e7333b88393a9731a3ac17a8881e876688255db23147f489cce94aa12424f6564c8fa25fb0d60edcf0e86fc0b59f9e4228cf89a5add863c214f25e3023d60558e9615d21cb797cdcdb1caaccc01fde +B = -f9be3436e80285f1659ccffe8e2a54db6b72d9c547fbb08a9ad92efbea1e6804019bcf3766fdb6fc33ade6d95d8558fb811c0a46422abca2d101b9c8ed7ca7184738543d172c71df379a74a03194b36b760b716577481e7e80f9d8728690a2418c94eec9aa54bf6a1867810ccca4cf3010eb7cde36d840627187c6bc2cc881bd +GCD = 3 + +A = 1bb748bbdf139e00cee6bb12223e1a1e0c8e4ce80f69edfda0df5bf3eef4364f673579790c88790f1d67655bb4b2f6acfc098a747667b396a3f43e47bdc4efb768e025288953226554978035909de2442212f9f5e18403e49295bda1d823d1c03a3128991fb79f44c6536456988d6457fed5b32fd7abb6c738344ba617c62940 +B = f73ab9fd39a618f4b6bebc775a73299a56484751c0bd87dfc322b702dcc1b932eba527bae1f6df286ed9b79d0dd9e577fa2f7eb0508f8c688c43849087a6738c5154fa00cb995b5a681bf32a4a8b74de5c7d24a1b17cf996371b38292471fe176b070acaa2e7d5944d1bcd3fb41f9f7496aa9d12a1da9753351d831d8689786a +GCD = 2 + +A = -62100d0ea245f1c0d4c44c880976dc52a5b56640c266d037c7498527c427caff7cf1ff023c966c996848b198e61655f0bbdb8406fcc55f187d0f96ab1b5ee59e98c98cf066eaba84a40146fd5118bc408f560b57a937c88efcb8be483283178824dfff90f9d03f062aeb31a53a149335692ad9615f4f5591d53f4cc98b03fff9 +B = f9956a7365254b161b2eb8286630889110b3491db671e79debf5c244bfe3aded448b8edbf43f9c1dad3e13d41980cf8dacdb4746419de22f86b2d11d76a1965d8055759bbf2ee1b96470236486359f630a929eb3180b317fc5fe1dbade5532a43a73bfd0ac43b1edbec5290faec53ab2869771d742670655a9be7bcd8971e20e +GCD = 27 + +A = -1a89ce2299d269abcfd05aadab7321cecd718b733ae6140d286005483ebec431cc2fddf1583bcf4050d9b527f8a3dd761d03c9bdab6c70a816d3854261ab553ce6c2b8a8d4106030877881c8da4c522f5c690d2576a9438ddd04f0866f3c63ec559c3c1e1c316d4de2b4422769b233df68622503926e7d0d76af31cd909a79d2 +B = -9bdf5847ada9f010ff2d886d635a0423d94d58529d1de24d97535174ac087d98d784125102961791b9d3b2ebb0d26af8d4c858479c1656b735f5433967a534e9dfc6d4a336bc9868c0b80aeb0a6b2b01dea90b6422bf8701fccb0a6726c2479ba00338b71f350724713d7aebc1bf3f372d4b956643859f55f5e7d46d3c7aedba +GCD = 2 + +A = 8e6cfa0aed843d7716e2430892a7c296ffae5a7b94dd724a53ca5895d258518934f8c57d108a88a194bc69d26c1df574ca4f3bc8322c78570086467f9e7728d8f23e5ef352cd975069ade419a334a1b7b0e607c3cebb4b47d1004618985fc330862240c7adf83bfe8cb956783d43de28f9b5ccc5100875770e46e320f919db3f +B = e90e670b795faa3d3b44374355f087305eb84eef68f395f1985a4dce207547a5c1880d89f2284e3fd312e67ebc9ae09ce48d9f7fc25559935bbff5eda3dbcb23b3265c8f25ab91f4c604f9589d48272709a78cbff7bc693c6095f44b931b422734a1d7751cb2f35687b0656d2e9c25eb8f2e1687a2cde452e4c7e13f380a3320 +GCD = 1 + +A = ea8c5d18a562b2a5059242c12676bca709c309314efa13acd068385637b1bcafaa752ff9d6747fcb028eadc0227436327da6c9ac38cf1c10f49ff599ae149e7fd11e0f87629cb7cfa7ae623a6c902f07974726bedcafc5666ed6c0d4d9be32c36eaeef0eddd81f8f4db807a9dbfb5976c0518393033ba412d7e6c1a717b5dac +B = 86b840c6ea9f7f1e02899a96dfb00f4495ab9a867e98d38f78fc2fe169c50339564056d650a18490e644886e0a82d91ff9f964e807376673377f8811f1b759ba03dd674f701030d731d9e304364ed3593f6b164859fa96f9616848bf8d3f7df114dca6d978221d491892b72064cf64a8d7bfef322419c55e1f5bcfb9895b7fa4 +GCD = 4 + +A = b8f1f9f22d2ad3ff7fd61c2207c2b833ac781b683dd83de59f1ee85d036ca933295e60337ba87ff8034a0abf94dce4741c9842c44765c1576797a11951ae97123c642d2c6e71ff974f5a20c8a57f51292c0e15ab538220719531b810ad8fe3e9c9f2ac9b67e7315b9cb786df65e2e87afd2a05629fd679a9f04f9a65b1dfea1b +B = a974ea619e4ead5de86c2858dccc66b49d7f2edcd33c5ecca22904c6a9c6a804f00516e9098430ad924b12eadab1febb9f59883a84229f19ef22664fd6b47d19e202635aa74ed8827735ce294454aa2ee26e03401430e7c7ff91778c0bcc0b566d25c41d110f8c7b5ec407af3a642c14cdf67ed8279e76805b6031efa946287c +GCD = 1 + +A = 9ab3b52f06efc2caf836ab494759c8e53dba44c50b9b7e9c2e1860b975d2ab8ac865480cc5f7c6d55741b20e3bae945be87298cb42a8b462445d0e9c3273c55d744512037e104a5a16be7209c288601c23edf35fa833502305083208436400bc7c7b592e82e957f05fd6bb98e0769c8eec8352279ac62b269d4ee940b942e825 +B = 73e264200bf4dc4b2885d69351543e921ff914bca9b824546a0fa5fd9b176b20a8bee890b9165d7aa781c7f8217d6ac5d70a07211a20d4b41e0e9ada44d2d0688b76244a6837844acd3330fa69bf72c4abc5cc6b1866c9796d42e8f4fb1929554d50cb77ff55a18bf43fe94e3c2609e27e51ffe5893879a889530b345a81e626 +GCD = 2f + +A = -18f9692bc1adf8abfbb1b811bf4dabd84b07824813451d67edc865faa055049c45ac51f9115f8f2c19297f9baff1c1f4f59c3d59ede9b038dbd5d2955244599f28cf4886751ded5f810240d45fce790f9df593e1f5710945b3ae7893f3cabac41bf0f249e23d468006f13f69888f2850cb49ca7c929c4a786f85c7603c22bdf7 +B = bc64002d4c69f755ed2e0f7b26d55701b5b2fad5e04f60728505e2e2103ca28f0d99182f49d0c76ca882845289330e9db88926bb6989a480474febeb8b3b64aa0a7815ad3e82937732d6cf994667e309c0b508c950b67b22a20454274be3a3c2fb7ac729ecc2b7733e3cc8df24d78c952f1bf51cc0a341cfb04834e784ddb832 +GCD = 1 + +A = -5c75650f4c0290f16f532706a9d56a63b7d3a5e0e942e733552ffd78ead7ba9172e1d5dada5888c16fc0abcdc85e01ec0ae41cbd9fefcd6736aaf0599c0014959989f5c09bc2922ab8dd97db74f8140c624d212574fac14c54cc6b3a13e54493940b33950d913db1e27d418dadd44b69d975086a841f71581bbb2846f04f9dd5 +B = 3b42f714d0ab3e7a3d6149f2d952ae870acd9a43cf55300e5bca92ac5866f34e28e1a79e40ea1794a5bef531817222c39259e595e926cf23812ca311bb3435c7efc8b639c42cb1411fcb979925d8fdb53de0d786d20ddb081e1da1272d89a1db2885f388a8b07950cf0cb5199984b7c70901926637e9d9a56b582792b31fd49c +GCD = 1 + +A = -aa355a852724adcf7a07c2ec7145afdeeeb1937e5835e75d675e45e81cbe7a60d7c2fed68f6a2f95bcf31dcc4bc15e9399318db8896e9b5bf21f7c63eb74207557151e9fd5cdafdf970a108e77b0e6af46eef3a5ebe21f1b73cdd2a863b47363c962422d220749a04aa598b47fd6babb328d1db4446cd1b954f75f73e54a8f86 +B = -98f99e43a024078df5ef11197328e8abdcf551aed887eff045e2c543ee98d2617bdb69160fdea02ad0492ddc4c4d21155db8f4902ab5c9bbc275a7edb61308689affa1f913d33ca2f5d0a556fd336bd6ae2dd20d1959ff78a931744afed715a09845d5f594fe4ebeb4626bd015e9204966277f9e82175689332514606e284509 +GCD = 11 + +A = -4c74192a29f90bbccf0503e2e6ebcbfe3880c6723414ce4d8782f158f7d908e143aee42f123afb2486655d1248d14b6624158361b53a15986a406f457200d904adb99ab446467ae6fb95103c34bf23b664171d625b6c876f67dc5e6e7f1a74af5f6fd14e6d8e09a6465f311a012630da46419d46c09c95887d1ac3878e1424b8 +B = ef29f04bbde0a295308eb4c6e416e91c8236a5eceae5ccd8828a3f276ede45e8a8b76a4cb0fe60c4e08194d20c366b499d2e25a7b9c0b7adc875d36f55702953d98b257458c04ea43d4343bad9664444031a398809aa5d0946b6ff9b2c335e18243adcb6659b542d74968bce28d1d95b1c06f07e17cc1620e79b114db0a3089a +GCD = 2 + +A = 8158ec0bdab042fe15a5f755e090b81f59d8e1f6d1fbb4c11c21aae1c8e494f1ce6795aa8c653e7884c269586be9294599706496edcd66cfda237799df6c546d917fe071a97a88ff1d77509b0e828d8073fb17697c3bc37a057c337812e8c6aa9026306ec40b622d47b94d5602507b1055d54a97ab7d8fc7b06c7066e52b50c5 +B = -a63457087b14920bf1ab9c63d23382defe14ce5b502abd7dcba2b3f7f78f9569cc111b74ba19951d5047947a573017533021da317f901b11c7f2a62876652ceab888000ef51e3d4fab953f1267db1b91c3d7e3b559932f4a83fb369226b9458e9ce57d98171749effa316a379dd3591f5283af15584d72c4da74dbd16f058bf2 +GCD = 1 + +A = -46f241adf0dfdf28907dc97ed2fb1a7d3dbac6bd109cbbf200966e014339317ee150b3bd56fecf4637a3ac368ccb353c7799223580882715262448bd7d9808b700ba10d761a547d9b65659efd3c501891e7b1f5d59486bf9263392e554235c080c0b27ccc6c746a8b6816c7cd2e57df346bd618a6e6167aa790ad50a0024c9c8 +B = -cf63bbe406bdf481e370e5071b1d5e4712a3a625a1dafb439a6c9e8282550bc67a56393bb9e7b8fc9cdf0d377c43559e6e72841b470dcd44efa9bc707b579005acc2481728897c6966432093f8971941ab74fc098d3d20f371d32a4345f44f57349259ba4e59f0e1c67ac1438125c41270c375517ea47a9f745cd9acf8c02b3a +GCD = 2 + +A = -e5aba3ea8c24bd2a084dd957dee72f3e76878b032b7b194e74f42545fea4becb386e77154aab28d940755f6a03fe4061f513ca1657eaf1663eff9878449b987c70ce25686bdb3f2667cc2fe694520365a9f47e7210b5aac817d9d46fe35305932d8262807421166529f3cdfb749f79df73e29ddd1a322d0689532f68b78a492a +B = -27693d6cda42168573773f5fead3ba37c9357a9004f270cbb381c8841af9f5b665db287e08076e92cc7e17cb96bda789fda7ac9828a3f50199b57303e8fe0ea4218c18a435be863f27a0db4ab5361e490f806b25123f4b48d099df9e10fa3bc233a76286edcfabb18c27a0c5dd7d05a69623ebcac8919d0f29f21ada1447445b +GCD = 1 + +A = ed01a476a5396ec18bea640a4e84bb7bd58ab709196da56e2e1b68f78e728e2a57f4f1b07e783c0985839955188174ca213e8ab41159e15d352570a74f716f581137995fcc226c662c2999c1fd136d51ce56e8b1a241e45a49399d3ac6d9d665e11cc0f6c1ce343ddd09fceb16a40fe4ef4bec198a0ddf4c0f8dea0152769bf4 +B = -39412cf40b9991f1693fa22aa2697ea0332dccca7f3c6c91c0bbbc34253e2e3d3bec4684f660933c96d77ac09a5bac970de56a11a36b898d4eef306581c3ed829836b2767a7fbef0a390a3e75658ede2d32244ac3b88d0625cea38a1724e3050cd56f12999545a9583e5262c791c5c9307953b5246a1342064ce8fff5f55886a +GCD = 2 + +A = 45ed2e42cdd46ebd9428b2b16448e3ef9d0a4e62cc24f5db01772d3ddccdaedbb3b326f45641204fa3fe9449a62afafabed9fb46e329bdced67d732b3671df82690fd9176501b4c6703763b02d0726df1d103f6de16f4f1ac11d3ca7479141a8c418d775910ebe2e12d35c3f98be593e077c006d68df2f7566a148d73f89839f +B = d55b0413877f29d4615e01d77d63c648dc0c49e403cff630aeae507839027fcf3b10c6e529d53c0efe0d78ccb7f2eb160c854a0cbb56296481825736bffa81cf4c53a30ee568b76b1d33a43d8cd6f0c5495fc7c1687fe97f0973e7b2cb196b9e1592ec1805ffd3332c887350ca356c12187c4f6a744ee6f01785cf6b4d3fb629 +GCD = 1 + +A = -689cc64b461c27f2ba5e0ee0e92eb1169ad4b4fd5ca342312b9768597174035ff3dc60d45b88b807c9df3f96701bf3691bf207542cd44004613e0fdc6fbe17aa3099d365531f8af11920bed14f10aeb2c8145c325003a4e5d661bd308eb023bdfb2d7073e4da382fafbc17e37bfb381b4e1482a6a9cfef75e89403fd5f5ae822 +B = 8c396d16f8f93fa2588d2fe23e4f9290a6f063ffa8902f5ed331ce8e41844ec7fa39190c28ade85e63ac0f8de14390de4365469ed14846c4983493974d90e9a95e746620eaba9210c8e2dc65cd8b736a0b69db069377d2cb528dede5ab1b8187b3113c6dd29ad30336ccab2640f0db8fd87ca3b5efac7646be0ef282b292ad1f +GCD = 1 + +A = 2c50be7ddeea610c09882c68f159759092d7f59f015c6e7bfb17dd37086c3781d501e2d0b070435d00c830fc925b69e3376858db4b05de2d334c9b85274eb3f73f1dda800b5ac462cf352b15f7ac9999f5fab3d714ec72a589a727db26ed26c68f89cdaebbe1e34f87a7386909f8fe15b07852b6bbc561a578c32d5aae059fe5 +B = -9238dee9e069e1741534521f74f0eaca7bb444da8722189823a4d0f15dc45410beb94fa3de6a8c32d6278464c1f668013ab49298e956f73e62ddfa29b64fa16a7dbeff63353987d0fd541f5bc12cf941001f31842dc3e904f02926062990f552d5ca8b0110ca414bbbe4a4d63df4794768be41024261233834c4e73b6731a995 +GCD = 1 + +A = 5fa96a794101f5988bb9c0f9ef767990676326b06df4e17250d5c343e0ef0b8b47061f5200c2e500086d71210e240d75aae00aa1fa581cf377ecd908a560d8cb63984321a2a1c181e300bba2261d3f74c58464dfc198b2381209f448b38557172e734c00e90ace90834b9c1eb4632c9a841301920a99a107721914f802a0a4d9 +B = -2bd44b1061aa83bd81c67fdf8aefa58613270a82f0807ced4834a5be3d048688d1025e3acd80c8962751df5b3ba928e1b5b0fa1d7b3b07007617854d075e7ddd5b3c8f4b984c2c9c386e2c181754c2e5726b80035a3b2295e1bd1890080d9beccce1db010f0a09865b2812c1e624da804d1294b034b6b5e86d23b23783f8194e +GCD = 1 + +A = b5c8f36365148bf442d254d79aa3f6ab2220198eb38f2991ab5e541e4b6b85ebec48753b979d39c03d8594438bbb1fe0d382b505f05537c43428ea9680cd4f52f60ab6a23b839efb9d7984e425033ce769d58afbc052c7643d4e08c932b9eb4e49349a3976025555caa874ddf02fa22fd4720947a8b143a2f53a9a822b1161d2 +B = b1b9e9a36bb68e300ca0e903246628e77c98d932ee137e6be07d8e29277d3e773e996b1bd54dc6faf4cddd7a291dc84ffc5f86a7d59f86037d25080f3d44078261be7ab55ab4bbdd4828c8c4eb8e9c842e6c089fcd5bddaab276d7aecf51335958a083176f2421a4c5b77c887f90621f8fb43ad6bca5576ae28402cd58f4a1bc +GCD = 2 + +A = -2cc807a3d76dc0860cf497175eca612be4e42167e2200659cc022d2aa8d6838f62771c9bb2c4894bdcc2f13a594877dbc3bba1eecb7d58642f24d30186b2dc334d5c4bb2efd4808d61a7735127e5c51383e430ba547ca8a9e96a4ee73636a86ca9b5762b14b8449ce8609b7fd3be627b0d9747ae3a1fcdbb9e9d1667544fe033 +B = c1ad7129b8c5e39d2d588a9f9a4c15dde7e641e6996ffc4f3efaffec423bda64d0f342c6f992866bac067dff2fce23bab4c761c98c3b2ff4705d503426b84d4ab25bf6ed9646a346739dfa9809cce9ea29f040913e67cd22cdd00d5f6de055da49d1439954402071113a9b72b4dc25c114badd87e05da3cb896457b9d8674a89 +GCD = 1 + +A = -32f71d850eb1eb3fd4377095b5c5a0de35e45243f1862d4d44b0bfa518ce746c9d051f1e9a64a48888c832195b173edb3dd9b8d2672024b4c3b7c70164fc5027fd0363b30b178ce50eb3d1fd29b1d6183a216608d3661f8a893ea8d553f3e3c96e106a7db0db715c9356c6ff14ca5841d149b03dcf8a2881360c332685800dd2 +B = b2b1eb727bc60c5ab24f8a6f3c547ece158b74f5993a9fe005e1c4942effd1b7ed2a1ea6349a310b85d03b555da4044e362b99865afe15a3671748f75cd5294c62de81c055e3bc116580b75bbe616063705d36e6c468418c836c05ddc753f8cb1346f09a69aa5f54d2997e990110317666ed32a509b1be077443e8b742db743b +GCD = 1 + +A = d95a2a9d45147d170debbf4156b55b45af102ee2dccabfc99c8d0fe38828478947431aad87f7ffb084c8652560ab029c70e7a1d0c6d8219bec65dfa4f3b47f62eff44c78e14ae12062713b98ce00d94c0ef459966394d932a3d77cd6ca0a3989c89e3fa5badcec441407088d038196c4afa59593edd209cb0e4b85ad551fa92b +B = 3697cab3f684261e009892cb528727f0a37cddbfaacfd272333b514e362c2a15c486d99bc2224e7ddf51b8d49dac1445b716901bcf6fa7cb5aa12e69d9f718b1c6256d16bc0187f6f0f9163bc32406cdaed25d47758280907bb604323f6e9492649cf52c7f2961958a54ff5fbc57eb91e2018ca3d41f043a3653c8855f3a0247 +GCD = 1 + +A = 24ddb0657d11a2f57859018bf81f29f23d5ba0c62e70798ad802979718eb1d50ab501ee26da2b91b2400fc9d2f8456e579a6450c0f636aa8212f9c225747d2f2232a02517d08334ab96c0aeb0daee71afd40fc47ac11507d12526d056527571fde94c940d600c6ef1428c89cb4344fe2dd04807b12b01f64d41bf78a41aa3820 +B = 4a2bd79379a02605482ebafc3b86b2da2883ff897a5aebbead62cc1bd469bb355a397631314025e78af5983c9a475091f0a237a95b4123daaff1f8a49e8dec76cb1e3d210dd1b88c4b686b9dfbe304a8b813ae62ef3b921b77eb836007c34cee38986f8184e3d5d9f99f0676bb2e3fb5009935e5c61cea295f7478f7d7535fa +GCD = 2 + +A = -74ba1925c0860eb2507bc3d248cca2272763d4f51334fddd21ebbcd41b74626634b34cb697cf48e5d4ac8310e0d6dfa37360990b78dda47bf32e2fdf33755d908fc63bb191278405697bb3cfb7d785b9a50822960a2b7b453f8060c08327e3f723d7825694f84ee122a185538f434ef6962d6d889950dece705ff25f657ac501 +B = -c144a90bbacb1ed0c5a5ded71780324d6dee78456b67585c57f6f86c7c64e9fae64faa1f36896d9be3252b2b3cc5632baebeb3d82f77bd6470be01897eb17e70b49593db7ba4675f802650d7f031d45544c428522780fc6680c50f0a78b342f8c259d0253582398a2f2245db60eff372b3e705e58cc56d9e621b1e3d718bf454 +GCD = 1 + +A = -a4536de10f37ed1ef5a256b7a1fe0bec93350c4cec8d151fd53c566898cd3946a353f187c769b3b7f39abba08edf5a3b5987b56e2780605cf224a759be00328fd99d7eb5c76a6800586e8fd6d3030bd9220198e8278499520afe15c7353adbc403865ae2e33f9d75ed703f333414a374a65ecd6d93a72c55d97b5e0f2f14b40a +B = bc65a4fb99f6edac37bf147b08b8bc9a59988907c719a0064f9d6de1c6cdb8f839809d1ebf744e0a02d02a36c270e879c5a7745fcc85a986ac4dbfd21ea6d2944a239e34af1e8073caf046514ad2fa5032b5c20d8c708d5df47801a076b15d5c1b140620f46a5024b5d9d77cb22eaa557d2db9743445cad2804ae94d97406eb2 +GCD = 6 + +A = -a545c033a325fe399789ce9a7a645743db86936c5e0aa6d16bcde482a66ba29e43c558a883d9153e17cba30e734679b9528d35ee3d75c1efbfce483501c6dd421f4914725de5304439ae86b05070c7d9c3b3a74f69b5e625138bd5cba8b0970e72798a9e2bfe30abcb5384e6981444b009593cffac3c47107afd5a72a2a07621 +B = -d5611d3282e737ce71460fd387cdba554681aaca0840df41814f378cee57e15963c554f17adae711b6a1488f9f4349676e0f2b59a115f43ff3b16f5b02121121a5e29f7e797341579e43b4a13f5a4b672a2868d843c88c2e3114a68dc33fbccc9c0a0234d9ea64fb3fd97e17f1f4f1f73ea757dd21412906cc3dc25ce18d4d44 +GCD = 7 + +A = 6014790ff9839cde9e8140ceab2a5cb198098feb5ad5ee17edd581c4e74cb8758b857f59c91525c40b2d147890ad8f1af8acd339af61eddce824dc0fa735efd3a2c05eeec46776fb306af07683dcc10ddd4921d34cdf9acf9e1ed8f798ca556832cdfa5a366ecd9c8630aa62f5f6f1dbd154e7d6660d11293ba76b5b6b8f74fc +B = -7a82c8643075a3d923de4550ce8718eab9954353b35dfa99f3fe9c8da450338d103274929c6bf0c682b7b1ce3b41998a418d96a4425186fb3efbd256bd0c9edc11e896442d13b3a0a30690cc6de6aa533a55320df2938c04b5bd029a5b308f0ee78a1482495b60daf8823d6503434cbd1c26f776dd088096718a9105304e2492 +GCD = 6 + +A = 2f94d61eaae0b546bf54b558ed624106bba5c4b6150830e30b46ffd1ce324f2c604a8161adafffb09e1e54248ca0d9a0a17b1f50a4874659b7064d8399430a7cd4de3fa1f0dd66f1ea1971581027e5cbf4c46268ed10a878f0e9410b07c940ed20381a86bf77dcb23fd691f76676bb197d6103f25690f802031bf547fb798741 +B = -3c5544370a941a85aea5ae02c70eeb376eb1b0671a0b77ac40d82e2da46c48991a8ef6a65129584949ccaadeefe238b64efc360137addaf5195675978acf980e7184a4757ba246bfe4fb3e8879ad8e6061c0782e398e2af37963f25294ba5c819f8645a330a57c1cb6f9a58d55acc31be9167b9ce8f6f5e0303fb125262612d7 +GCD = 1 + +A = -4786d1607a1c67e35da02e38d639d1b81bdbc3878ba01aacf4a8a9d52b8d4ea23e76dc5677e1e4939fe14d0f98515bc0bf43554fe9f1161c155d005d3e96e543c4ce08d2ed891bc581e33a6dbd9661874a62d70c008f5c3b58fd627a22af20a180737742e815616ec6cd80c53932f6e2aaa73e16aea6d95a86e368f0c726e138 +B = 4ef4dca39afbdc86f8f21c53207e7eb6abe43b1fb044265302aaf9570b3a00ec4ab5e18b3910049a5414f409da839f9fee7240c86cd31839e45e73413f0ad3183bd57c0635e2375d0df0742e3dc1e65d92910cb0a74a693e257e0ec1d19a804954b3f08001c3379002bb798c267cc73f9519d100d129c050cf9ba88436a9cd6 +GCD = 2 + +A = -6e1a665d401db6eeb03978c8495e3a5702c6a48dcee7ebf25711582cf27deaf0403d16c7022a7766024835c92259a6a9878026d91c50cce94ce8975ad0d092a521a197f2975d5a38b9fe48f8b14a247d67f0c6620ebeb11d8702fd298f77ab5a46aa6497e0e3665cb6b889a67139541ad8326097bf4c2e1a47d221856d74bd6b +B = -59a2474909e5e944b00562cfb5745d828b12a5ba2ca17fc3d68bccce25adc39f029fb993e91002b8edeeb6324458e541131b760f1c113162887ecde888597dd6c46961e953e1a541b45d8b852d201ae6bdd172cfd100c00d76a4da200d7b819fa92517914f5f8d6adb96d365e6f1abe944d927043bfc29cd28ca41a4a4810154 +GCD = 1 + +A = -950b093253cb0facacc280d0d0ee3fa0a273411c32009962b7e156e0786cbdc21e4695bed9ada656c513d25dce0f0807f695ca386d89d5434cb5f3a72bda6b8c0e5521d55b395b0f613c1fe77eac265abaefe91126ef7fb70bc7c3a859b0d5bc0aa848bd4455a4b50ec2aedbb1d585ca60e1d5fc28c96db7ce532e07c381bb7a +B = 50f3fb76c9b2098efc136ede4bdbd1a8a4a341361fc0bae9cd12d66e0e64a2d5b5ab407613325dac205e06b645e3a5bc1b60d92c9c3f5367e9026013fc828e9ad4f27b1227b643f880e86c11e2829dfd2d8e619c1dbf497a772cb86f8c63acddf78f9bf460cae7d20416255f3685796887d27a6bc06e49dfa397487397422f8e +GCD = 2 + +A = 5dcc986415f0593b9bae27f6d9bef08249239d0310e3e911fc2eb27d75e0c8e5754eff06e2a864981ff69af3bcefdfe0f990fce0b50385988910993417463afc4f7d408664a817fb7921d2171db32dc7dd10fed62d76cd8fb4f59c91f90b58ff973eafc61aca941c3cd9195e67c0381c4820830a36a2392f9976dc87720e5f9c +B = -ebf3f0a9d7e601b6f7b32d73238e404b01053ef443abe334139b366a927f876f2e5ada10a264a96d993ab73a0b0413d87b5b5f0da0f47d44c317f7dafb1b10abcbdef62fb1e50e4eb6dd4c007b2af3efa398cb0c126920d7527ac14d92afe574208995c62a6a0e57747c52f795b5c14848eb9c6fad9e995ae551e94d6a491930 +GCD = 4 + +A = 113588007c47c8446bb9327edf9927741b49dd860308265b5599c08671828d884036530f50be121ce42701cda05b48fa6fc0c523d11d6ff9ec77103d43216845026265bbd441c5b0291355dcf6a70ad62113ca9737a2bb380a5ffb2af186e497fdaa536a613d66046e1fb6ceadf734f9609c6c04547e018139f871272bff16ed +B = 2ee5821cca2bf68179241aefe900b017822f48a2258dc7430c8aa361cf4bc57185dc14fdcc358d3219243bf2031f170b651a9da15af58172edf783092ae3cee1b1152b9e96faed54e36b47ad7cc09c8a9f67991024cdff3c7f02d2c9884b8d6611cf8eaf594f60637a113a1c558badce1ae038f36539f2321d4bb0150166d203 +GCD = 3 + +A = -f0a5f2f299ff6ecd9ddf7783a146ff16de2c5824046e4817fcdf81f2bf98fb77079523ac29a72441323c0d2f03e6cb1d30507018912935b8d7c744189b938f95d16472838cbb201c3bb13adf06d289102abb45c9897c90530454e1f74e3c6dbb4716c007557ef9dcd2160ec2350fe4defc8d2688a8c23e38faf957bf1fc1e1b9 +B = 998339cc35c2a9c037b87a81a5006f432c1126ba4e730d1ad362bf03895c0a9eb5def7c2dea1c1aaf68ab9c8dc96e82ae7285181d237c5b78a54119e4830809f52668366cdb1ea0ed2813a9d2afdb816b8f5eed82080122effb3fdd126cf1e2da6611b0d08a34184fc7a62421da140be3189d2d6672b8f562be9c83da10aab7b +GCD = 1 + +A = -39f3293480aebc9e9ffb9eacd6a5931519b463deda0cb1f17fdf15bd157bbd4e5298a5a26355473b3ec3df00cc10bde46cefdb5b460e68a08162c95a52d3fa9d3dc0ce86c86e02f490a94198c8b367167feb7cd7e5749c2d8aae5064ce3e89dbaef716db72d6b91a742ae136fbf07dce8180e694a12c976ef028b8f55680cc7f +B = b5ec8f244eb49a949f59226e2d1c2861b5f1730a98c35bd8a17d6b9618619ad5a38d3cea3371979b917e75402535ae3dc27c864957866691dd4378760850f43fc1688612a116d1568bdccacaa2e19a313647fd9e02a749123505ca010c0149837009e1bd7407f930baa68b4c00b5946dd9b2ace8790b0afaa6f7344b86ae27bd +GCD = 1 + +A = f20a84c97750699d43ff9e226de9f6b361deacd8d7097322e940f8642ce072e6bca4169b38b860e7103a38714346293b84488bcd5faa606c64daadd186bcbec1595abdd4a43f1170d19f46ea98b205280abb6d51b959654411093c79cf48f7bd48ac045f22d8cef5470d9ba95beaa64d35ca2a6c8449e3ed68b8e2aa633f62de +B = c33f2010c87dba2b97e3e3a21967fa11e3ccc63093a0e64fa157ea73d9d8b4df08b7252c69751ea52775b16626da8868c31cfd74f4d582688633f8b8557f2cccb80b42f7811c79e4c2ceaeb168c084f5899209b5b79d154941052b43310090da44c4ca540f790c92a4a049ba4c43496dbde310f0575c84e9bb50abcac5f1b917 +GCD = 1 + +A = 6cc1106b17e4d67848326d4ade3646de27d55397a7b22f620c9db48758307db9af9944d4582550724ac5f37fd8060fb2dd45c8fe3eb7f2a179853eb0cb186a459d447af95a9540e1a2a44d91b697d66cce28eadcd61ba38bd5e818e279531c654c4455f775e4ccb5ff8becf4ad64f9a35e8184b539171f602043e6669056a526 +B = e8c79e03e683b83ba549270d76ae3404d8479995c57e2dadd728ca22d0919b64b4ca36ae53c694b45123d68970d9db4f31acdcee16c375010fbc954f27b37aae4c6b3c1d9d9c762f4db1250b056bb20292216e1066dafdea119ed9eb4748d01018d1b0a66bb1fd9f6c9da05cbca502e6ea24567d1f1f72018ba5bb36bcd04503 +GCD = 1 + +A = f1a3e6f4dbcb46a93a87a346e734cbbef90eb5fbe1fbcac34a1d676e12a2f9d20e0815fb519c69b5fcafd0bad7c750aea40a518adfa761572577799e196fd727ec31616d6a230d9c7f9c40d27517672f84d063b958140db929a7cae00201e0e6a8cca516f5df0d749f64ded6cbf80646f8f689fdb87a3d2a316b0fe5cee75375 +B = -50383f56f74b4436b1b06d7c5fa850a2352c21052eb22f1f63c441d6bafdd5f42648568b58ce4bc6a52ad67389e47f1106500f46244c71184b8882a1efb94301a1f4df6ec313ce8acf5b910cb90dab0522c3a1cc3f581767d89a7ced685f7ef04832c839e7d9c05b2e3cf017f98c28637b9e6e3d9cb68b63efaa2d0f863e60e4 +GCD = 1 + +A = cf5874c419c5da8df67fcc5c4e38ad7202fea304e92d222ce9a32240d8c27252b97a750489e6c049696a70e084ad76ed9345bbc400913a7d0a05d399f35d0f89061078341fa071a43b7b2cff7fef6c8665abeae78068914c00d4593e962e294c9e7ba2de84f342332163c72df51fff325f700f37a4624d0a944c851d7ef8d05b +B = -cf7128b22045180dac29ff129d662076c75e8eaae91dfa30d3cccd3ac68f0f5b41075f0dacea37fadbbf9dc6fc15609ae49bc050664a4b8032821adc5803064aed95745d201933989e473abef9dc3eb818ead872ac06be462e5bd00c739bac1f1945edd3208d93650c3802e2ecebafd99f3a57bf1779ddb004f6d5e91c2f0f98 +GCD = 7 + +A = -e9dd0c99e2841cde43c0308e62edae5b900e06c6a5f9ac38df37f26e828a701f2d370fe38ba0c21444807132823e925641014a935bc075228bc2077694a77e3f0293ce91cf21575fba9c134970dbef3952ee278138dc0332fd7f272915b46ca671be36b4210cc18f32a3aa295e4f0f1547a2891be16809d32d51c606da7c9184 +B = b114c128ef14e29829be70f79b5572ff84c62a9f475e962817a735b7b5d9769d7c75feabbb7b60f2fa9d85f7304303f50a5974fa2d77aa1603b2c59d4a1a53a79d511508ed081e1f07bee018b5f124bde2ac4d06d89ded82c3785ee6279f5be4376af498bea796dd8118e2d61c5f413afad65da9b48f050958c15dd5ad6dfae5 +GCD = 3 + +A = -b9c226c716819abbbdbadea4448c67d498c20f48a44c2a0433a8e800cc333477402958c32a56c1d74c37e07a8e59e66b591d6de8ac1f165c995a07ea45aedcbad4b919353d8c18554a4cc016a2fba7f758b98478e0c139a058c847307710f03fed087abd3986b90fbc8a49342d8e3874acf27c5c947cb00fd6c1007a2c5ab6c0 +B = -3853034d982efca21362ace215ad28f524e7b3c82d5a163643729899b56d11863dbfb64f2072b387e7d03e49710a4e51cb09b8c080b7c0bbe1f364c7e654d41653b0a23efc4e9b2195c85791618b9fef7fc6ce841d638b825bb3245acd167181156b490fdbcc47acf1396236e4e9d35b7b634e0ca09f9755df216a86fe868060 +GCD = 20 + +A = -ca848f790211aa3f9c17b1c8d7ccb7a36eca0a150f13a478a6970995f84db7e4bcd59efd11e5f5a523d691a492f2663d45e63a481a4763364e97935c11adac592e5c054fc9e10919e3a0979e671fad9d2a7e2305c9fb65846bc533a15df8ffff933a4d86cd86e76a17d9388b1ec8dd089ddf3bf2765641e43d22f3653bf65ca +B = 6945bfc8baaa501d2affaac88af992cace4371865e95562e491fd53b646d020af185330ad3f86b6fa304891e28b1307758fa0e9e09c2c5a8c129eefaf9fbdac2c970c85a86bc2d2726615289ade108996988bc7e0b5ceb3ad8fe7674fbfe38dbb5b2261bfc6cd78ee422643405a36761612ff4a1f5d654e4ffc0c60e0ee1dccb +GCD = 1 + +A = 181ee8c341b8dcb5d4b4515297c88bd0bc9819e9fa08a87e2c2f0c9b795d34d566996e62dbc315d9917ede71e9e67618c56d297beb910fed8187ce7ed6d419c83bbc7edf0ad7a0701fe61a8556dec2f186d6e7930f7b9bcbc931806e70a21635a2e8052894d33458f2017300e570e402c0110a47a2aae60ffb29c7dd909346cd +B = 2e1018a9e9f35473a0c3011be046281b8202596f508aa12699af8ae8e8fcb3a4c055d0d525db02f7db5a0863147a759d2e6ea13a1639d80587d15a9613326119d5bf778d2a0e1af8b8d8ddd8b44df4cb2fb8a260178f5b9d0ab649b93a70e3d55adc96fde81d6a8050229a908762c62b1169bb179973ac3ed3c048b1f011b5ab +GCD = 1 + +A = -aad18976b5984713d5d264c4ac56be897bf2d70a496619e2bd61885d3bbce349e30aba60eeb1cb5ddd03cb3514d02447f655625a320d8d2fca5b873b4c38f2ebadeb2ad8ef8f496a7e980af0f8c882063e4603392430f8264c3d572aeae97113d418389adb586f00b4092f69d79342cb560da9cf92e094b967c8bd1911babd50 +B = -3331c0ab5c3a6c72fc14864f6e2c05d178ce177bc1a94989095c5fb73d6c583aa62e35a5138d75ac5d20c83b4544401a1808ce7e05d2365b3743b75d184550c7f1d2557e701109b958f2d1f032143de5e5cdfabb16ebdc2fb17645098ecd693399c0fc11dd664efc2c377b958eb8a562d0b34d1ca0bfe86e4ebd98e85ea0cbfb +GCD = 3 + +A = 408b5413fa8d5c237ca6f74452aeaa2dc0fbce1db2d845005e4ae5e73bfa4818ee6a4e1731480418af0e251ed76b9972b756ce2e96f6e390bc2efdba89a2689ac6bcec04296aeeb398e0a3166c89a98a2f14b5935cbb3f91142bb971219ef69305648a99aa042233c3598158bc09ae1474f32f30bfa705ea06fc7bf19be37332 +B = 5082ade7ef9a105e88f4d4f2715f3b6fe8810eef95b1b22e0d9a4de772553751c9c252328063cb48470c417a2be131bdb5e7b409deff69d5f7e9b8ee523d0293780fc7536ad2ec41d3b01d11ef0d3f26ab5ea49efe4ca962c2a1a36f4f92fa0b2165482f466ee3d3bb12ffbb9468a9b437d42b54f10e8f68ea4b1bebd4626796 +GCD = 16 + +A = 2527f3772ef71811694454e161760461a85bbfbcd23f0cb908b3b581546d978885f07f2cebf7174a51143d5da4dad390f316bb8966d930542b76eb307ff06ebe92092bb6a1b5cf9dbc00977f8f1889a53da233ddec5dbf621adfbb6793ec306b9282596320783ae30be15ec22ca1432b77207121c564fb9545db2f4506819d1c +B = -982962815ca355599a96257aabfe04f43c520e3b9e9f16f33803be223208bb602bf61dd2bee6bf206ed86eaf09c65b3d5025cddc4554a5cc194f954d6949b9275ee42bdee6951ad8cbdf69a3aa3ed05bc8c37c436a06e48d0989b8d202a224e9f5880ccb56c38fc989f81629bab118b14200d827b39fd45ad86a3c275fb5ebe +GCD = 2 + +A = -c721e3e207853ce66001c076a1f95045f3347ff90826bfe976d05f10af4aa6dc65af4df82d246fc05462a1d4319e7bdb01edb242184dc191815e833b5bc143c332dfb3b7a9ee49bd7393866988d71972339078f6c65c591cd06feb24ce8d67ffcbbecfe08610e39fc0cbe9e3fa7c2ca79cd4cfdae0493b53361e7a471a3e23 +B = -919876c963c181859fe87695d2875f2d9fb9c17600cd0bf9f23f39a3f0e3dc129e990d4abe576a243a841473578d75746019a29e315596e159f6f0616cfa58b5e1a4ea53f187f42496a5a4bbc2f9a46cfe138387f1596bdaad06e7895780ec07fb05af359c76833cf9989c7c0ed2f5b37c67fe0e6a4fd0f6bb5b6fa54de684d5 +GCD = 3 + +A = 59dddfb46824e489198c6d1b256b87e5ea90184585b479ef6aab716dd6d8e8747ae87344db8ced454e1474ffa662e4627fef10b66d9399cf835d2222731bd069a8ac0dd4eac9146ea421d7ab60680f3fd37d12f74c4c6550b9fc002c3a8b2c8301fba23d40035a76cc61ea95a95ea3efd18c0019ae76b1a6d499f915d0275d5d +B = -b0c96aae71b5627eb00c2b4df9e4c80817ff6148ccdea632e1ade49311df3200481dce42508eb70be7dc90e958011aa00298a0bdffcafdbb06c3a232b45cb16f92a84beb09187c7b38de5da32e9286d7b1abe2a59dcd1b0df7f34baa70501ac41075f4c08d9c06108efd1fa14e6edfb281b4f898c4d0cf0963bc90cad3211271 +GCD = 5 + +A = -226f4f9ab805a21b13c3af0133778c611447a9da0f716e2cd12a47b509dc1ab4893d6f20040ec27b80cdbfc39566477cc0a4b891ea4d793e253b09370361edb58a0b26810cc2ee325591b3cee525aa63b5fca3c6014ce7d684a92f9013df1f14a31de8cceb91cb89fd29479119ddc9b463d33527eb1a3ab800dcbb15bea8526a +B = -1223aedf7add6aa6d300f25f53b84c27657ff045a37ebe991718fa8ab3f5b97544356f5184f03c80d49592a8ff051f0f11b5b1ed2d0016d1f7498a58607ff3b3f95552de42668237ffeb73fac6e7f4d74c58436d1635da85de9c0583928698407cb729d338a7224206dba44ac12c996cdff510e68a38adb439ea3ef3b5a0c471 +GCD = 1 + +A = 9965821b1b2ee6194877c3da96749e7cf7259743662382365b673f1046d84cc719dabb4a98c2af3c4a1406e6f89e848a47be67a4c1c8cc5b36c8c2ad2312d374431697e3a9a0348a261ed2abc676331d798e2dcd14dc03964767c94968bfe2a14d71245123e36389466203a3fb32aa7b9cb251e0a517a27ef60f7cd762882fe6 +B = e079a40bd4075e1c3ab043e919c12e39cd3925bea3eacd8e519ad625b91443fa1a7b7a280f757663e1fd5cc64cdcea0ec5f41e382b3d0949d697f425a26bd2b633c1bbdab2912b99cf8d1b97653844fc8822a7b077d31c6538d8a1e09002745fa492ac04aa7bff09858f5a436232e48e58ac3cde1958dcc4647ff4cf23e25329 +GCD = 1 + +A = dbf7e77ac155d1ef8e653f636cb7dface45b1f04db8666412db2d9ecebf3a5de12ea0884f4c34736dea4600b0aa892ded72505894734e2906a05d1416d684b00753b9c37868b44a8454bb237bf15a7d63826d6a26b761376ad3592134ae78c141bd063b2e55a26c0ba972c2e0b5957782351c4182a8f77d97d5ccbba78ded8c +B = 4858f94908c783045a071e14d217f6c46c1adecf0e279bf556113fcc88802cec30d16f5abd7c8f384da4a327a1193f4ce84b8c937aa44538c7d7cf1fea3c235f11d81417a608daa62d374d38d583ad66a794e19424431c03b71891b7eb2d688fe6131ed9b972cbc0d6111746cf551346ce8eea53a985f00277f4d3bed6297c6 +GCD = 2 + +A = -14bbb77462733e03551d9a0972153048805d0f690f02165db80af21328ee6161622e38a4c9c065243e465f93f9f6da1af68212cdb8515d10a44ca31c01b9c37480fb74e17c054f2c4a7e48ca759490c532457ef79630d9a1d7c5f26347f420ae4d5a8bf884abad3ad783a96154463e2e6b9e0252373807a6fbd4f92f0e4b6f0 +B = 5d6b45d1a99fc1c7c57c8018eceb3a59ea10117a974b549565f9c6535b62b0b411f7caba081e4379c19f482ce4cf6bf716773f31c789da851180ad7cf41031ac4e027fa0fe17ed33078b12b80ec133ab72bfe4c625e5fc6d1d247b094ff1229f2bd1d172a851f53f691921eb61887f6926e6fc2be50b86594312e42804898110 +GCD = 10 + +A = -765feeec7e34c125f82dcd19b472536c6bae3285dead28633c703883c724de4a4bc497f43a1a57e223928520fb9ac262a2c5bd343517b37931b7d451b49798b2975fe8d14e00fb10bcd149e955f347c70b5b8ed0a0fd080ce5224a5250c6584659509e9f25d76c49feb2875293cfa31451037b0c7126af5bc9d0b79c3c5cc9a7 +B = -6c30c4b72d5a52e551dc154f685d1f34d2e5dc11943ab01160ca8c1dc98c54dba776fb7e39e69572f74d7ff1c21831222d8e6657b732fad5c6aae77e87e7a99552489424c6f3b87ca51fdb45f51b523196df8251b71fa9c0a33579571b80ce533bbc385b8ee7a532adf13e66134250138bbfc5bceba9446d53a58740cc005fa3 +GCD = 1f + +A = d1a9567c95f0e09515941b6f0cdd90208410e6b266825a467012c2ee9947b2789b06c06c0adc40e35ad3c2b8118945984caa2d65b03882668c654a8934037ac0043ea053ad58a864d00545d047bd0c69b72c490ca7faead1b9b4eece5e7d2d0dd93a2b4c84cc356f8b398ad546f4dfc1fbd13ea25fcf12eab8738e19e1a70a4c +B = 1678b02461ceb06bd4b29175c1e11671a0e41a2b951605fc034f0e585f459728d124cd51bd5b42048bab31eb513522410daa306f9955bc48a912a45e3c929c54dda1160b992b1feedbe9ae06f9c0753b87d234d941d2541ca8324a904af0f8d4ac9a0f6a2438a866a0ee1fabd182c29dab29abea0754c8ba1adc2ee6595a67d5 +GCD = 1 + +A = -6655101cee19096b61bb71f92fa0ddd3cff5ff0ee1986eb9ddf712b2a91cf520b19d4a9625e03e835452cbb2ee89cf4f2f0e0a849dabf4b40c5040ba276046c0e26d8c402ad11164d707cbcdfd33326111b077ff8d33f3abe703198185bbd1fe67ff9b4d1af3f0168ef1809c246816fe41372117d91950c1468fa797519ac67c +B = -73cf12ed398c635780dc71e5b6b8b35db5edefc42f4a0137701d69d5fff06f5e8bb76366225003c3e363c2adddccea595588db0cbaffde7a88a6c1f5fe4227c0b30436c917f131a3a7243890589bacb81c810c9318d0b26e65af14406ccd9e461470e9a40c1a24de3ebd6ef2b0f906dce3cc7145aad699e01256e6e7218c2a95 +GCD = 13 + +A = 672cd5d88a3b7ab490e57972c336895d12b22fc316020d2fb9abf419603af35eb536f15ea821483612072a45127980b2639fa2b467743b2337611c62bbdde1547ea604a7acd6b55e7c36ecc74164b19d572d63b83281ebaa3cf3901860c8acf2fc09b78f48052a926202712d33bdbaf3e2f8d8b6a38631232b1143b538784218 +B = -ecba4c9220cc47e34e625ded95c032628a27baf61b13fdfa74b9786b718fc64c8491fa9b80316212b65fb15bb9d97259729004bb9095adbb34fd59c0caacc35ea950cb0bc692996098ad31368621e6f1b1846de058294f739f516f126bdd6d8be93e52887d3d4dfa619bd67295080057856e608641e32f833ede9eb98360ac49 +GCD = 1 + +A = a59d98ea45597b8a01b406ab885f9b95bc71003ba785d6cddd1a0a4631695c15acbdfaca6aa2f00501b9b55d795c41eec49a7a42b80950d76deebba132797755a4ab9d05479c859f9718c7cc9e7b520db8f5121d34eee810a29b74044d296541da3ba710222c51acbe926165b83c29f1eb8c022a87bc77e8db6cca00d8517683 +B = d18c7a1b2f314ecf2de6e5e6c31de6f02fe0915194d387cbdca76ea12770c75a663a56a91c23e88835fe527eea82423b455157534d8da85204e18ff6f2512174153962b338712efff3c271ee220de7e0e29cccb2f5d06e7d41986f327805349b4094d8eb8b8314e3f53f6bc40b3ffe2c4385694f1f1a025b0f52303d1353023f +GCD = 1 + +A = 275972ee388bad072fe497034cc7f38d331028ca1b313538c15a0387a6f5dfc37e377efc4e794b5e42c81bc9be9ff350867f079dad090d387dbc6ba9c12a3244ae0fb3df7b0d8c42e918f13f82ab1ff1bf92eea8a3f74e7ec1a81b90b423f93e477760efab431c131a7bc1496989011cfce4e239ce222fa3bb3c35953cdfa328 +B = -773b70cf799c3158457a236490eaee73cfea16d30dd4e35af28e07c6841c2b512991430a909f65d7a198eba0c8408b96dd5b3d1106b5b9baabb3c6531e426e8b6623f7896fce31687e6c0a3c9b2fe598454a3c83d808e692efc9b7cacc480b9d081b352a37298656a6be0c0e5e8e809de08d9a364c8ccde792d48c709738d6bd +GCD = 1 + +A = 50f3a4a3e98386bbed3d3deb76a7ff406c8cbadbfd29d1bf4be6e1856e012cdda9c15dee2eac79199983a36f753d9372c41acb60022d3e67f88883e2b12044bb4ca0baac1cd5a6d2e7c656f5da5a6e0f0969539516d4a938b61b790e5b43a189eb8eee0337e912b4da67f80e41e00d410f9315e802419f9e139b8dcb1a4dc830 +B = a09e8b5cc6f0f713eb27cff04069cbe13cffc6a535903c456c06a721f07ae2b497cc8d03f1ba22b9d4cf59d24574ded090eb4382c4caf84e8b2227bb2a176e7a372dac2836fdcb0389daec0d3cc41e2c6574b0c7661d1b9267e7997def8ce88e03583985f151be7119546f52a1a85a21c2ed149956e759c918e1f7bfd5970a42 +GCD = 2 + +A = 28b56201b1fd7583e9617471b92b0f9caec80f9d312645f63140934eee31221b37ad6bd48e18d9c896c4247c7803ffedfeed4bc26ad4879839e69b38a202df194c0e8ab99ee68c0d4ce5afadc0a1315e552210ab3747aad2c458a24543fb5b9015d380543a9eb4b3fbfb764618fdb9db80869ffbddd75522a04a00e52351e619 +B = dea8a62d414cb8c815a2a505664b87da35882d3a883443ec683ddee00463d74f3c098a2becf5daa928c0a206fe776790603c89725f92d0ea7567a4ea9bb8190861286b0cec9198a088a37821c462a9b52a86dff1075da3460d240193dc4b843e6c5b6ef0dfd85a978b09c3f5f5e832ced400e49b645ee7c2d19764ff79ad89c4 +GCD = 1 + +A = -a2d70c04aa7873f30daffa5065e8edc1ef9040fe395e5f7cf5317286460ecf184009ac6e98a777aee6cc2d06b026dfd32e92311d8cf9f2823ea6c5e358003d834033276633a682138e79257a832bad3a5b0865e5ff4312670db2f3df7fff085bfb04682bf946b48e67ee2e1a4af62a830e78d1df182ca1f6c9d6b51ad81935d2 +B = -54f770b408433cea93181b2ce6d02317e397e7fd2b4941527ee1a02bb447eda4ac556e0ded07c179cbb269c1a9d63885fbb5c49ef6b5991f768161f4602bd3ba6dc7e0935403f8dfee99c3f0d626db7a282225c16ad2725f006bbbaca559800931be938d388fe0ecb00cefb6174ddca426e4635a25f7b64e00c0f19ed17d9013 +GCD = 1 + +A = 9736a7cadc6b84c3976fa42051ba5fb41420ede032e11d75c1d9829996bd3ef61a4f34ab8e9d6ef1e2b011e058c67ecb049b940ffdb180a1aa45165e14954a06a78e0807a144430954122160b3c30488f2787bd1602f1d536d9f206e5265dc13411b6fd86fb7f2481d50bd0789de55261fe8df04d42f5b2d3dfcd6ff928e00dd +B = 14df228d8533515fc27ae4614f30262e939bdf69ea5781382b00cb1162076187af453ac0c62c49b19f56f2c03d125b1836addfe2b5d19f990573d02388ee86962d9632de49739bcb16aef25321f406fab0dbdd9954040962d9c01e3d5f27818559f606293d5626d0457868b5cb6cb29e7300295977e9b2929f597595691e3fa4 +GCD = 1 + +A = -6ac8530e4cae087a08ca3f5f99c2125ad7df963ca4f67bc21a3aede4b5a7e3a851f10ed7018dc8166e7d29e8f9afc11a00f3cbc2b3816e6a424cfd2d4ae2512ead649a3c22cf9e0906037e1186d884bb6479458585cda2fc28197b546a52653b58ef6054bc2111980f414a2288e93a3d98d58de7924c4098c7db7f60477735e +B = -b6001b6bb270892757672f3edc34ebaafa8288a1da76a2780c308e913612f2b95619d103058bc989f22ac74930bf100638fc151202833f22a53cc1965c6b4d840875054dff65af192034e13d2ab496b944b162c841d34048530cfaf68dcd053385538e00dfd2cc361c2420e7e21326ec9862566b3211b4f1b6b0e8765db4e855 +GCD = 1 + +A = 7ad10bcae33469b823206691058f5006831e5f4cf8c899e8e805c296c2d023fc9fa30ae48629c9121a1b7b7baa7869f41952d976d3325c20d78e365eb71ab9799ce4e532f4ef01cd7890e42d9d9f08106f5d318997376bb39bb770bb53df6ac92a5f12161cfeb1b992bb6942ac07e9dc3f09d1dafd9749a5ace44eecf0c2a2cf +B = 8121b391b68864fce85167ea74d7fd00ca5debccaa1af7ffdfc351df9034a5ae46ef7e3fc1bc69cb6ce3d3d09ffb34aa97a4e61ae7b1bec3007b10f2685b8485177e9d458fefa1e669a65266cdde1ff9316fae0044de3c9c5f2975ec3fa401c7b103f044803ca59549390cebcb2789fa69f7437764216230cd6ea8de8e2f3de7 +GCD = 1 + +A = fb162c82917a2526cde13085a3547dbe3386789f38dfe9319005b428ac1a48855a558ac6d5abd3a4f5476ae35f1cb3741fdfc793c97e974239ef5161c33b7ed0644a2df7379d5c6ac4c4a9e8aec886410284d33949d031db8aae609bab887b11a0b43e11ad9318fd4d49e05d5366413aec0a2da7591f06b0f1a9600065c0ca62 +B = -31f66028ce40bd9d2fa06c03f4c6fdff773fdbc2cec0b96708bf713dbfaaab75159ccc7404e2622ead81c4d8143a7dff47d0e03dbb08a1ec7a4c683633a27028ce7ea0ad5681cd323921ee7a858999c85042ddf43656e5dd76601402763d08700017b65886459c0aa6118b6e138b6b33e9449e347c7d0d931e25aed61b3b7b7d +GCD = 1 + +A = 152c0081f69dc3e300b502ac728d860094fe3b7835b0a94193e4d24b565b0e5a0f0bac601d770d2de3bee614d9cae108092bbf9bb5cd49341561d9ed337df3e5dd22318a4fb2e86a4ac40113bdef9cf2ccadb23cda530a40ffa9d31fc272fce3a55f6d65cd21a267001ecc98719c74807043b9ab9105c4ff82f5ad221a95480d +B = 4c39ecf56e2e4aac656aa89eec6b2607acd6a7a707b06d90eff64db77681e4869a21107898330b73daafc3a03c508f0c314d658b74d0b5030602bdeb4146ad158a9441ee120f86b53de8f2668de576f1adc6b426409472591733a0dc323f23562ec3dddd542e34cf43e6698fd1d997162c974d9fa898fcd0f07a0ea883f6972d +GCD = 7 + +A = -1a5c5682a4abc09bcdcd8b0a9b5e01ad9ad199d6fb4fe64d2b3fb87c9e436ff8d240fba52d78f84b2b4587c281c161290a7e6e2810c78ee7221057af32c86df8f397cd081e1d9e69087b8c441580ce17f6e6449e21dce1995faadad23b0284ff4fd80093544decf4183b1ff6ba407f46aeb9bc236c5ae1a5ae5cbedd264b85f9 +B = 4a6437c38007fea68f48ed8e816bc4b8295736bb8513e8a97b6992e113df68fb7dfa891794934552e9401aee6fab2f57c6a090197fb6ce24077764453f32962602fae7ef52a6c9be9046b029fadbf0da5869e3ec7632fe797e14db9f8d2d38b3e1a310de89151d6edb33af69d8af0ffa3128e42419c428ffce1bf42da741d948 +GCD = 1 + +A = -ae54b5651cd7f68978bc22ac1df6e12a0401b44c01364554e5190a47e9b7a7474897723d5438b68122998c08041703d8a4ea6d7b12e34342dcc8672728f907fcee17c0db1c4da54ae89c44c3e7ea07c0f323275fbdc560abf1e6afe94f66cd8c43327c62766cfd68d44981b83ae3a68291eb37d35a871833ebbf1fbba3c66cc4 +B = 9b988e52169bc0b39923ada8603d028e4fea0d6610d978d0da978afa8943af9bbbcbf687a9d44babc490690077d85feaf1061a1fe2e8190622b5464090b655b35f5314bfb0b95dd4644aaafcff093ee5642114ffdbb4d8b6d55bb0a941d6ef838bb15645aa9c379a339df2f8e06ca91e0a2cef3572ad0d2f7b17fcb3e842a6b3 +GCD = 5 + +A = -b82b4a5f9137a069db269e477edf6f5fc306c26839d29a1580f611ee1a0822fca8a45bda22199b8f46873eef8c81d36b6bca0cf122fb7c9c194faaa7935c655f039b5e9174013315f7da8b666d9ec6f2665ccae864a802299ff2313089b54ceb6bfecf9bf731112cbed2b6ff8402c9d8c545e1110c7208616cd44efcb86f0cfb +B = -c20bfd4e6c25282c961079f20fa65abedd3c18748984abae47a939f5acb3322b64335ebfb23c275eabb3d20700ff837f09f8fb97a62448c865a5f5a3659363bcf0ba51a762afbdfcbe0f24e4afb342112c912a79e361a2c75f273ced8dced1138088197a3f9f9624f5c239f6781020ba05e347bd1daa5fca56e320745d69fa3 +GCD = 1 + +A = 1249f09f304ea32e0ce5aef1c661a6b6add1eaed1724f33107c6005bd695385e47ecd3c2f71eb579209a0cea97b9a813f85d19dadf827e8d1544bde457a8b97a7a77c68a57f99c912ee08188d67719efbfe9f4cd0e5108fc22c9ef0faf335b94eb572a4b4131b1b370a97e17b14a69e6dd245d4fea0f2f9da05f926ac69800c2 +B = -cf5e7b49773acb326749ff253c041445250b604c76f435998a61a636efd828d041208883f9c55ba7c005c6ad4af8cff442da0aa0279956a6c381a99db90686a3e7b636e59e2ed84c9935c74ff6460f499e10c597c37604f5af8b5a6d5bbcead2779a2f1393a79d48234c603ec0ade5f22329a18276fb92bf44fc517625adc786 +GCD = 2 + +A = -12dc61ff7bd4e228a844619b16077cb4953ac320a2382a197c4fb700b4b684047369fda957bd57c4990aff262d571c67a2fe7ce0335ba97ac33974ed7c127b6cf4f43cf82d146b0de727c39057b70e16eca92b187a4ca9fa24efa24a4ae2ba62af895b7ec64d568851a9db2aed699a52d5615a86c3a62f2eec1637c02420bc37 +B = 397b906ebcfb54a9ad2dfdd9dea11cd22ff9a2a7a7505c2399c5914b081bfb3ec9f87b88bc2b09f549ff76b9a7ab09a751be9182895536144705cea87b882d3ee0a7243c0e89dc10d4f1f7aff2f67b582bf9c90b461c6c51ee8d8da5655650a5e556a0236abb74fa0981cdb98d5895b751bb9c46350805481d80e0b238c7992e +GCD = 1 + +A = -d44596051e7555297d94b4648c71967019068334fb036929765191011b5c2fc189428fe9146372ca8879ca6e250381b7fc0c9a821d7d33e2ed03bf4aae967c4bf4cc400188ef0848c79605260be1d96ae2d7c77408e18407f7c7cd00710e7d18eb983d42fd0256e939ecd6d1d737401d64e43ce90058bcdcdc9c7f98675b83fc +B = -cbe542096fedc3832aa562aaef311914d6c5900f3337942854c4efb1eb12f93a3e3c58b9f26d26dad191ca25ee4c6f7c9c4cd59929887c365c040038eb20ab54cbfa95818901e919c308805f25b2fe59ec7d097f2e593df3fd8631dc1afd5964cfb042f3aa185fc966044533f15d084907efa1e60c5a509b60d7dc2d5c23a81f +GCD = 1 + +A = 6df3504b7b87167f703e7fd496bd6d19425736674640aef96c21bb6e2231b9f8b02cf344e4bd6dd5d6b5eb4a6ef267fa7b6529971b56fdac8ba3f7a908ebfddc2fc24990e16d3a5a84d184616b4dd17ab41c4b2c8aaab69386803f955d5b3a316111a0982e27082743d55d03c653057cf3a5b1a6c90e3f7c414d19e789a0ad1e +B = 806a8bce02c84c7997a6a87b6afbecc5c44e1e9d0f7bad7a45b082f9fb335519ce14e21001042d29f662bc8eda29f67c780c46f1b3b71ed6954a04d3d50e359f34b849358c2ed72059e0fd77746584cb13eefb260c8ad4563e67c990d9086ddaa68a4d3c32cf55a5cf0bf105fad2a22ac29feb9b515fa99caddc9aed2e015fc3 +GCD = 1 + +A = -f6c4b7cdf00f533ac8237f776749b05ff7de4a59b6caf880eeb649379391c4254fcad5ec15d4215fdf5f0d0fae4135e9d48a2e15a263b3d87b303ec8d661ca09051fd5eea45c0e384da73337cc0d1b08cae551d21148b6de0d6418d0b82dcacea5c5f9271253036ac8fb5803984eef0f7dba388d023f0831d9727cf9ea6c012d +B = cf0f938f35e54bc46633a9c31a118e66727a69b6990e643e6fe530b99e2ce65aab394f138ae2bfb64843ca38fcaaf1f9043e548a944d3b2e199d4fcc9e375fa9af59b9b4bc188028f3cf2f5dfae7e90716eb8c748c438165279d1825f378f4694f5a29e132248ae0b75af135f9d648f72d20b1df9e64709e87bd279f75c570bd +GCD = 35 + +A = 7e08abde3aa9c51a2d331e3215a7c5edfb271ac41d984f75f177f4c5d98d8bc4bc03559df8508042cb771781624e52a04203ae37b350656b6e189c3bf739c2d4969ff09b3bd176f4ce25fc961b8d3ed1a5fb14c24cebdf7fe0872f5ad0150a0faa6099a886c42aff58850fd3895c2155a22db644db77948c44dfe56e374efeb6 +B = -eecceb8c5417e5c6b84cbeec9e3c23b70b976b3a2cee213a9de282cc753d7390547dece964e7c2752655092c731d0e2fc65edf7dcae77c3d9e8d4d207188e60200dab768f0a45b39de5ed3643c3a949440f5260d078454734309879ddf6bb8199ae0dea4b593e3e6a64fc67e40746c69c0742daa46a37fc49515a86fcf9e5d63 +GCD = 1 + +A = 26f5751b949ce3fffce89bf0fadc40a022f85ef0f7303b4855a4590b3c814ec1d504291e3cef1d055a67700b1f7003b017b6a6499f8f02e45ea3e696feb18ee11dd7c2df4f5bf4f93008d6c49bff57337d208176806f134847e3163ab3cba7e1916019a9b8f6f37fde062dda5cb38f1908d34b0a957086350929c3aee52004c1 +B = ae5975d32b09104da4ada12423d84e8b38db6b79f97968b09741f7127a55bf5652bfb740607a6de1238205a082bc20735c245f390bfeab18011ea8ed60a514fce37de604aae1b8ac08484898f698de70d5388238980a50fa9ceaf4e8d93bd07fd1987861e174d9bd802565b17ce4d717f25a9a0bb37e91d5e316514615f802b7 +GCD = 1 + +A = bd8a84158928af45ba021a6c7c3239539f8ffeea2d8b33d23c8770301835f9b13e86332baf8176d099fee024d0e59838fd4fe380eb5198351b9886354bb7ae24f4596afee3587cbce2f432226855ed58f6450938956966a9959ada06fdf8472401b367880f9f7b419706de0f1319a442e6a093cccfaceeae9f178986a986b87d +B = -6c9c70ab6bc3f03b44263a545567391484e1dbdf9280a217ea5fd5f196f7d9b57a4258274ab54cbe3c3fbc92b11d5e558481150de5d53d33f6efb7ec88772b4a52fe50829359099897f8f9473974a792be4eedd07bca38de6336235bfc0441280a5bb63e940313412da6608f8ebfec2e40aeae252d8793899dd936f72c783820 +GCD = 7 + +A = -1b46093736125630aac970a7b45a5ca13cc154f49ddcfe61f09a2818913829f184baf185a9afa044389e1ee00351c07bb6477a65c5ec5095286dd27a4587391278c421a5ba787db4ce0c506079633c8c441ee125ff2054df7bb7a0f7e23b0b575fa5fc4de303bf7cf2f7dd25186a5daedfc3287503b288cf827dc52875fb1b52 +B = -8f9e65ceb82dfb8f9935ef6b080fe47cf19b3cc4997b46e77c605fe8d63c60961dc13d13ea7f6b6713c4b6e98b253c6df6fbff6577682be88df974e1e33eadb992620aff5ab7af2308bfbdf18a9565624ec6d9fb3b5cbe80754adba3feb8166d1feda6ffa4cf042edca49fe00eb95665ee6e9ea58389d03c4ddb50187528aeec +GCD = 2 + +A = 86ba4dc8b626d95aa46d5520ccb51c3a45c95360b8c395614ea09a7200028e9573f66b4faaa0a2ceca8511ee205df8a3f4eca52caf1db785a97ed744de6e002cd4a7d8db3a5b897a72497a1c3794bc49448f3fd5425c8dec658bed51ebe393d0ea35e2d19f8cbf990eaad5e1da896f6d517ebf8f49743d8293626794af7e195f +B = 812eefc8cb684b3db4aa019ca2f08f5c8d930a2be11fef2096120ccdbd9b08ed043995bf70b7381a943a6b9b70d64d3690b75fcc2f0c8b7e143c4f94b72699820ecd7b429e0687a58c7be01b5e9cce8fa643a681f25eaf49240af277fd2cf4673d4de1b4530578d4b1c60b4e243e99312d235b35c3c063bcf2b3eb43408db8d7 +GCD = 1 + +A = -6a0b4cad8f284fe26e746b9729326d02c5ae6586e686b362e386a159bfc39c0d694ed5c5ea1a7f879c086cfe51282d5fc16704c092f20ebf2ff5b969b11e2618cbba0c17ae8e6b189bbfa5e10ae11beceef45b998fb36ffa3fb266923daaf5e1c90ffcf9fac309469bae974e66de336269caaf1d7ef857836ababa9784b849a0 +B = cfde7ad3cfc2f051c0eead4a686b068025ddef5625ddad97c9bec5ea40eba38428fa360524c953a3add4e81da55699a6aa802b0c545f33b70b15bc94e2fdfb83db6d2fecd0d3eb7f662e8f76dd9de464a5ca4d3c84c1e2c3c2ffc386c05d8027de77579acfc4b02020c8c5cce7c5161204f5aed6fa77a7bae012dd4d00e8bd78 +GCD = 8 + +A = -7d532cdbd5d32c1510b4c794b34dba600c55b7c4618fb0f70a4910522b6b3b0764e62900d9bcb92dcdca07b7e64694a3d4dbaceb5f4edd568745f17d8f2113b6dfc631cc50df3bac7a6fa0bde84f27b07c11aff4a23ac7f9b5538343154be92bc129367e6f38b07efea352ef9d19c6538c9ed0bf0617a4164a5e53b57de7127a +B = 4e8a5eb3c193404fb2c6255c70d652106a05c56ff83151d979dc393f2360b9af49e538db08b5d519e0d16480ec95f112d77a70987b9ce618f688f1ff734959a67de03cc15f0c0d27c4b29e61eaf47730d24e1b093e2f66c9774a6306c3e76f7baa2daf43e95fb53c94e787c464c74d0ecdaf1d0a03dc70f32cca4b274e8d6ace +GCD = 2 + +A = -8e2c670baf6c5404785ee3e5a5609c1b75b94bac7948dc0306e52401502549ee563483d732acb356e6fc597df29ff45eb4efb114f3826098f1c405a0e8264771dce5cf63a49db23931b11474bb78cbd4592c7bba846a210260193064363eef5f9c7ea34b9167ba6aba693cbf24b1108accb8e1c0fbe717fbfe1d8cb4e9c09060 +B = 8eadfec28a09c920b35acb8a2f1b7ab25812431878860737c18c96afe11ed5ac55465cbdbed96fdf333f07e0568b7c77aa0de151d31b347314ffda288188a71b7f875716a8989894974f415e37490c591df521d1421cd1e3f32820f23c5eef7d78223066e5d4ef1c8a0ab1900eaa3298c4f194586db0c3153810f5bf81df3cc0 +GCD = 20 + +A = -e810dbe611b08847676ed4478b6e461946e960655e132da494766a5f4daf1d9456697587bed0a5f515aef91700c725f29d2a3522462ea8b069a8a5a0a379b609e91863f7e4df522fc69cd18e4eaedcf97b834a8c7b42b5a53c6628a1b6772f96f6678991d82393b708aea74fbb9916d7b38eae0399720a3dacbdae31189ad1ba +B = 520cc7e7e8c04041f5b6928048461c00c8a185dcf2aa97df309dfeefc4a03792e388417162a64995721b4f5bf5c14120c02fbad64e8e247ae2816780cef5677ff86189bb5e6cb40da330991bcfa5ef0484f11bd0ffa1394923b5a57c6dceb2220a0636d15e2a337066ad0002ec0fdd5bda17ff0c4fcbef400b4e098823fff6a1 +GCD = 1 + +A = 7c185ffd2a9d85e9c1e93d8b587a0fe6f82abc742ef883bc3b9ab6108e998279fa31dee70def428789484f854e4621b4e2e1bfae9853fd8117535042094f252f684a0c01092e6865f5f96cc99c3ea002cfea909da83e37c0182b121ffd3049e6d62b60d6fafb3aded2551b1c92defaa6eabee304de9ab23366713470a0bf9360 +B = -cc8938597fb504a423e967d5c5724dfd2f819b59e9e82efc42809218c7c8e32c7a0db6de1fe3003dc37943598ccf7e4db4fbe8d760633e3a2f307a6e108a9a2d7699be3c074cdfe13054522fa03c89ac862db210ae1a17ef93587ca53cc49956b573c000515b98750c94a590d0aaf2cf1519fad1ec97a61b50686147fe54c7e3 +GCD = 1 + +A = -8667216fec17c48ddbe51724a122cfbf1b55aba17d8917ac2840929a983aaf157dc45f4872a6f7218a4bad4edbb02e7ea616ef14690364d0157d6ecd894827b3b5bc8365df08e838b0db87c2c92b9edfe628cc8734fff5e0dc425a7c82d63408463f754f97a74822e616cbc70724143b0398c845eb6ac61cf254743fb25b20dd +B = 8de5e505dbfe6c0cde94adffbfaa29f097b9d8148572be4be8de40f61303bdec687e2f450cf2cd7c6055bd4271e9b1cfc281de8b142bf2019cb121aaba325f38290b7030616894940ad00363e4ce4b3cead13bfde4fe7dc4062e2d679b44dcf67781f091ef10e0c7a4b2bffc33e0ca14e3e698ebdcbc1ce70d5ffbabec0600f0 +GCD = 1 + +A = 4687222223cc6a0c08f499af5aafd0258ed3c77fae15bdc77571af30227f0a04f1f25376e7b6af961f538c3554646a34c7e3897b88d0e3efc58ec37c75eb95bcb177a5af2a963c267627100f89aa81a8156ac440156fb6015752be253f9ebbe6d6d7e51c570c3554f5222e19079900b7f0f8d64547a53844e266e600d4a3bdaf +B = c49a39e09f1d31553211738c912aedd37757b6b9d1410ff3cc35a4697c84e23ad568bf22b2bbb8246eba878f92d07a6c2499b4b611b5affc0e18054cf95bd6970f11a686bc20c46bebbfbf55281c804262bc9c4bb481cd861ca5429df21e2fb6f115bf40ff86eaa0cedd1911ea889111550f252fe0e6913a569b099c396215c3 +GCD = 1 + +A = 9cb9ce6a26854e1fb55cc94737b8c66cd115b688cf69b478c9f3ada8f032f30f4df96f405b8245a72fafee05214954a94461e9a630c38e7117badf1b1689caf1f21bfd5f75e9f1b89fba56ddfb9e44654e8e6343d79b8d1ba58b4dd3bcdafcfd365cd45d943e4e02215ac1a8aad1ff6ecec68db4c0b3f628e82460da5695407f +B = 148180b8a5c3715380063d6de5d7d2b4923beb1a2d155bb7c03d89a5a3fea32ac2619191c6128eed4afd2d367fbc9f115ccbba19c8ee464fa6282771c66760754ecc8151f3d0685beb5ab553828099304dd5cd07338f3465a2320beb7615ce73ace166bc12891e73bf8194e697f2ec7204707eebd1a28f2d51d35ff6a6fc3e96 +GCD = 1 + +A = -acbf95c6a8ebc77fac5c1e1c9450ec154f3c7bb5e559ec30f83d7bcd27971e90e90f5d543d2be26bc47e4ccc249c97e76045514a9f20ff2d5270c7a5e828c1c85966ed7528c5ef3cfd04dbb3a02662ed0cf08a08d2ec6c9bd5c45604c7d4c5a04c074081a8bccc11e4c168b209fef07d0e6504963b33a75b003caaab8d5b148e +B = -6cd29d135ddf5dbc5e57c51e6a7ee09376d88c97fa0a58cba92f3ff7837afd6a6ec16fdff14e94b4b52b3312ffdb2896960246f231c7b6831693c86cb488573188785766d0b390ba310d8af0ff291bb9ebbc5fe3569e2c94106f4c1112905b5292383b6548f47cc18d85ab48d08d7c84eb90d2dbc23c4c61fc8402bd352e3149 +GCD = 3 + +A = c049c5a822187f0a189c9b679d8fb54e4d504786153f317b89311d8c5f36b64cccc21edaf5a325f5b48bf50f87453ff4362667a0fe66ccdb03eba4285160464cee4ade66d0f7eaef51a0ae7d294ef8119dcee96bba53f4dea1c2fdac6a449b848225a35bf4d14afc330c7457258c2575ee76386579741d9f5c9d5f6e0484e9ae +B = d7b9ecf7a9ade1fc887c37a5dad452a8c6d5b8174b01649effef9b5266bdce523b03186a772c8f7b24845a4d8b059ac9daa4375bbb78fdc1d7ef331c1563f69e62ec39e8df61398d60bba007fe9360233b2514d79919abc7f5dd471f979608a4fff6fa6542c307371706190cf59626110898c4ca0374021ef4593c6d33e4c5f5 +GCD = 1 + +A = -7c7c4f12564cf218a6234f5a8235e4e077e378d647e674ad70fbf675d047aca85d76a140ac995b1a42bfc17c457bbcb87524540d27546439b7e1107ae8f74ae1fd28f062bc772e1236221d494fa4fe4b50878537a867bb494434b042c025e38d8925f404491f604d302a84dc5176c435718b0e0253ef063dcdf726dd1a61e208 +B = -27c25efe47335f04b2b9fe713366e8d34b6174df9d1aeecad1c5ed23ecaca287a7315f2404e7278dbcb5f8c9a116602727a198c777742658ae846d43048b60328df7c53e40190ba5125c4e7b896dcddc306033d7b86e89bbe95b86c5dc0576d0f1698edcde4274a34e46df6f54c542e11cbc55fa6fc0156de6eface2989a50a6 +GCD = 2 + +A = -3a0273166cd9d182a69d4f77bc6c285483de210e864ae6c2e25d252876c65d6be5a809b04e724a7f8ca54438b04c0354c03b9ea0167ecc0ef57d24acd72d5c519d916f41a330238d0ee8c33841434dc5eb4941cde78f23d4c66d514669b8b30d42c1cea637937592a0d521db30a7f06d5f9bde1879783477e54349bd4fe8b18b +B = aac206227045c5d9b12693d052167d65482a95605e22f5b37090ff44471f371595d1a57a937b9fc0d9690355ce790b242bed302d24687428a8da9983175e7e12c2e80f2a4abc893e1532497b366a1e1b277bb1955b4daf642c7da6b77cc729f4fbc2b7955a1d2c0a67d87d82650ac8a10c66d3b7afe4da29aadd3de65de795c8 +GCD = 1 + +A = dcc0cfcb6aa6d5ef15db367eab2f12e45fb38d9c50ae04f8f591eafe9cd8065a896e3dedeb44c47e1819fc0d216faac828b82ce6815edc87672a29590967f0568bb6016e2b42f8cbcae70551449483efe1e7a8df85db38fc623c1c899a8cc65ff97a0f61ef77e4874ea9132b9762ba8736d0efbe9675e188b63e1007ea64bfb9 +B = 47c814a176bfb8f021e42bda6c9e33a5ecb22275a43b62c90fd8933aa7c64545c92b4627ebd872175c99f951aefb931ac9668aedd17c5a0518590f5bf33b47d3f487fe3ec36dbb6c8f93ab5b0167507c4f0e3c9d1459321e4878063cfd9e4249ccda14cf934d8ed365a739b99921aad7250de194d6fa4698f156a01b50bebbee +GCD = 1 + +A = 482f0747a26b07856fcd53041830a5561c66d45dc18ed9c8205c17b1ffb3f1a912f696a16a0fe092d5eb6bde593eaecb2f0e26aa5f2eac21f0eacb14b234834f30fb1e1e59ab12ff6a9b861569222e762d71627b480b75099d021d5e4566a45beac5474903f16bddf0e93aab609e258eab50f2343b79c56e44bdfd1c29ed076b +B = 4f359f7e9dee0c0a1cf3f48090c6ef316f6a15829f1b616f8215fd04413289587f00029b8e9a58aa24e35054991b9c590c389f23764bf21fbc9a3460cae192d5ee2d2de88a5d0e0e042533bdbd9d6175bacfe3a063c211c59950c48838b9987bb0c35fd3423d644894a374a9dad0e88167538ee302a535820204661d999d55a +GCD = 1 + +A = e7998965f59c94163280cd7d68a80eb9a312927e2fd0a58797f396d0f599e4a7086dd001cfad91f0e99fd8289f0e4684d40df0409f00b046dd2016171feffd550eaeb8f6fedbc164a71a5c9babe3e90288352ddab170aa1b03c178cacd205a39e43bce98c53a838c29f98baa93265dea9b1e15e5496f037359826ecb550187a4 +B = b280b894436213be27d51fb5f4c4fd5c3158592653dd62c048203b7c3a5b84d566f56b0a0ab8a69d9e25471edb460a571aa34a8f1b88065448ea15b454acdc8d2f59590f7d3202bfc536d72eb2b2e645e0f22000cf8d8ed246c64a67dbeb836aee2fc8130ed70cde94e95e0e5ce19e07672552d3c0265046b2d673c1219a7840 +GCD = 4 + +A = -741bd1cc129352202b699f301de9699fffe1b2ed1a9a0143414cf822e99d091a880f4c6e67b81cf953fb09c7d04dfa5318aa602769bd01059cb0eb12de36a5e9d982954014c7e032ad0a187c4c6cd7245e75eccbfd247429cac40b8ec0a0fc7d0cc40877eb03726f895170173ad18c6a839997b9f1243fd49ef71071d382fab5 +B = a0e4ba17a442e28aace9cdf6c46b10e0d3aa025acb68fdd27e2630283795a07908ccc941a09feac2379c7c4f994d4ee0a8fc7624783279b7d8c1173c048bfb6b00f51d89a59f907286d6f310814c6ee0e1e9d1e0850ff1e80c0e65e1b4314ceec71f7029681317bab664626c7c1e1b65dd9cfdb6223ba0ae822d9e75b25d5229 +GCD = 3 + +A = -cf991a54c2463042d45433217710faddfdd64dfe7a7e2e2fd4d2eaebf86937747a0ac3c524ba9cc1e1f1a6aa44e3134664e26fc1bdb9023f9dc2501de87eb238052a77cb60341a711d3f2dd4febad04f1c0c983e936765e7ea17bc43b20fdf28db5212935dd696103acf3521999028d55f92da5babf6788fedb15ec5f0257543 +B = 3f487c6207bc5f8eb8ffaed70bdf6750afd31ffd02c8eb04e4a69f32e8e5395b826a626057ad65eeb648e4967c5d3e94039877dd5862168295ec2f4269ee33849bf76c7788377050841e1dac646abf960a8a159fa3153566180f2ffcb30990dc4dd660098573a55a18445f7fb63e995b766d227c241cc3a00cb2a0e82c1778ee +GCD = 1 + +A = -51ae4101818f249a3418700e19f005fe2f69a9a407382a808462aa37b2d8b9728b7debcf7a6438b68e88de78e36ded56f96317631bf097ed3b52a290ee1af994968d26b478c3d8ee6c115b8f082c514b9734ee3db6d499229aab22bdb66c40322387d0c8b73836a6c700ac9054cab2256953e20326c000055cde801a077e5d8d +B = -66537e2cb5ab09d0cd5088ba58dbb4c8b8ddd5eddcf68ca5fd35fa57e94d7d1d8d9aeb6ffa128a807358e6a47fb8cef6a89a16edbd56a73355520b7331fecc1823143f385734314e0ab1f5630fa68c2282904db0e243d67df15be3de7b6a18971a1ca4d0c82606c92fe72de29f0fccdccb11fe992df142e9a0b6fdc66875cb78 +GCD = 1 + +A = -a0e65ac5abbb8946e60c5718e51d5ae27df597411610fb63f2778a5ee4b913a24c48af79f80c4ba343c7b0eb529d0f44f0f660ed94dcd47772dcf53770a132daa4bc1350217629433b223aceab21bba211aed40474e6fc153529323b4af43b4775edac222f356077cc14fe6d8d23dc1b7dc4f89a27c67815851df11b9519b226 +B = 547679d5c75573568a9c799fa97370cb5421cc0371924267ef00603a452582b5dd88a79db6ee2a2aff8e1c1e320bd9d3f75164845b15ceaafd638203583b6d57cbe1d5fa1d992db1c8045926dc229bd2dee5dc1a4ce5584d23ac703c51248c13aaff9c7a27a82f3b86b7c83248157963264b8ad99af86db79ac762ad9c1eeda4 +GCD = 2 + +A = 4ff8f96feaf2bdc5a311b7c604c3867776aadfa7391e14a5ee54854d08ab82bb630c2e77e80575a93fb56e4a37c62d0decd620173e2ab264f08a4ed6ddc7366fe9725ba2c245c5ba46eb7a4e04486fe478fb6c14c4d748e8aba7f4df3c3929ff27697c2307a3b5b4801ea36535f2ceaa5f6010da4e6854b8910c36b718d383ae +B = -d1dbfcdf85713c749665987b31a62c9d29a7ecf6bf367b5952b4fd8b1361580dc487b37290d2eb4713c4cd8388048108ebe31a09ab7a08217d12670018f4d02fa3a79f0717d75990c8a03761751391184ad6f18e5c8e2598b722dc7815aa175cc06738c692eb5652cb839cc07f7e34b7a18110803b0d44bac30c9b0feddf67f8 +GCD = 6 + +A = bcf9ce96c159d304b6b61c873d3b30821571b397f1eff085ec87f224eaf646fa6403db6b422ab6406acef4c3a03a363c69a03cdc2a4d1e549863e8477f8c915c4c93db5fcbae31ce4dfb4f667359d857d73fe8b8d8ecbf5021ce4a762a8cff371e8f172c74d9442c96b203df676ceaadb237643bfd3bb4f18a9eebf8dc37e0d5 +B = -cf0776bccac418b27d95d65121480673de732e76d8ed19127d976e80beb50426123ecd20102b4c3a9757a4fc104a34a620af5a35cd41cc0b77877b4645a5c6856059a98f2d8a771f28ea18650b4e8c96c441822ef9253e039d329f863240ca6605cc153f573761bde7ca782ac7980344c1b15ff6868e94cd64bd8453a8594b3e +GCD = 1 + +A = -ebd18c5a63b0b674299c42de80b6f217c9b84ac9425390ac0c146e1256d2609f5372fad2b128cca554942629f74dd179e5a90c84a884f6e609402e5b26b508986a6dae1701844108023cfaf09325fb3d8aea8e7f93c1bd8c7efbe7fc91e7d86d8eac30a97f404b68e3aa471cf0e0882d7837472b22d14258469c6c286481c548 +B = e1cbd621398f15d83c54175fd8d824775c8457e3aff649ab3b59d8a4a715a588a1abca24d76cd91ce5438f2316970edc50f5170a17a178373179177dc90598bc7c6271791fadf2e23af3f889dc875c5f3933729fbee1f84a2dac36ad6084299d2c66d339837e1c2dbf289e073085c827b178fcc97960533000f2104951435777 +GCD = 3 + +A = -1a451d226934d260b82b691856f6ab490422a27f0fc619506668293f0f99d48601ce6e258ee6825ef2e343d1e1fd1ae3f0f661d2d40bf3c25a382d2f82a5c9af147af05467e2e4bbf6fdc67df5cba086df21945f3dd0b9701a68a456e1954f9499100bcc263a754b415655ec6f47b4de6aaf20af51a13858b02cdfda9d47bfef +B = a251cc8d0d1eb7ff7e2eff9ac36e01ec3d8faf1c8a8004196bb79887edbf14894e9ce019269e04652ad95c454445bee283a4b609787c2ca307ca5c4c1ac37366226f90009991b3ceb08f0a5cdd1002e33e357dac1cff7b1bff1446ac3f9f75d7258d76b25776062ddbf5df44dfba55a257c6a934c6d9e095c08870296d559d6e +GCD = 3 + +A = d593ab06d4321d8fd431c7efee0abecf19955ea34d58675ae54944e1b256762abf06156ddbc24e147fa48dc8f31fc44472594d825bc504415527a6ab9e8350d06d51f08478c74de836d44a361f7e0908e4ff36e718b85fba119db126e8dcb7623270bdb91d81513ac6fc178d1af3535af7dc8a3306319c0548d6093242352568 +B = 4ccb72f21749ea14e64d692853752df499a1edc280eb24be9b0b17871a26c19f0dee7135a048a4c843b70543dcd6cd9a5317928bf27fc741e2e3b2a0465170082d03e08dab3954b711278b68ec73db89d99a2be3d764f3661f645e2557d5cfe0d825cd81ee70c9047d1aa22a3cc054bd7c03fab22a5b990f563db2a8d4782cb9 +GCD = 1 + +A = -ec6e35796b5e8dbe52ef9ab9b728766e21de21835062167fef2b9cb3cfe0b4a5d103631790549e0e7846a7e3421ffd9146fd1a9c84a68954a194cbc5d730016e8d8df95d7e35c2406c6f1cd2b00328e08bb0f853565ecc6bd262cf95a706a526a2120ebca2bf9a8ff2dd8e25fc290ae2f5294574e2c8647b55114b0800a1b16a +B = -db4072e1d4bbc7a46b951e549b1e468cd6cfc4205378ee12db794ad6bfe021dc33bfd665940bd52438964ab986f641c5983e74e23768094355590edccce2c1d90987dedaedf8a9a3840f7004e804971d2607daa97974b03df376acf685af258569de2bf29a517ac0aa9085da74855a0076ad31cde94adc45e6dd794d60193a06 +GCD = 2 + +A = f111f0846dc412346698a07450f2583b73a192b8db4f4d5e63f7d7423d21d5641919f87a5372b60fac786ecc007f5cb407c03e73cbbbe999cab22659ee320862044fb2f33d52d3e7424c12515a87094d1fe26061a0b070de63d55436169646cb0a5742728b161b127ab629cad0d4d74ba66b051e5d9fc3790380d74d582ddd7c +B = -ea1b527f48dfa797dfa650e7c6ffd255f96c37967d9b8327a8c556401aae49103b4d202ab0de26bdcbe638ae0528707f6772ab0c71d34cbf60de735d6fa4b4736bc93edab15055031cfe56a31a5fc8dddbfdd7829b1399c295934269b018ad4f6e2195da8c2da66d964ae376e0683671776058ef88584baf483e63519b2ee299 +GCD = 1 + +A = 7076c80ed4000cd1cb5c3d9b89d1e09b57eab0c701d9b1b754cab6faaac932d745ef0e16f1fe26440e34e826ed8f1b8d181a2598104dea50aede6a7e56c666c0eb9c905c05bb159a97b9339fa4bd888449db2e9fc0e1f82f3f90d36917f5e05e24bc4ecea072e9aac7805e9c7e637a8712e3704e9f64e9ff3bb90bd43a84922f +B = cb9c40f46ab68fbf0d638b0dc394dcb28a51942b88b07b02c282d4ace3d379c49610c0e62f1c8f6a472370955e868d853ca14d1b5ea68fe5cc2fb54708a97e2aa60917fa1925f289bd723da5f9d5e4a7db6bb3ec01ace76d62786fe9476b07fa7408ce54e682fe638ed0d075361178f55280c20776c5f4628c6340b53805a567 +GCD = 1 + +A = -408a0d198daa8008a0050af3ea2f00c44206537d86469f8dacf7af6f9a29870f7ccdcae54816858bb999c66717e592b1fa46dee9d981006a93e0f320bb6d5acc5436c32ea92777ebf2379ae0e7064043134f3cbccaa49fdad9cb5a8ab72608cfa8fd08c6d9528d12f0de14beadd4280471f1f40f2ac1409a274c0462b03526ac +B = -b8a358b213b43650105b9eceaeb821b2f984c595d2085c44289fa911ce0bd36820a6b9b4eb4f834227873afadbc2d21bbded12f9f9d686436ba4f787dcbff32d556f40cfdc6715307e1680de5a8cec62ead4673e3b37128708f396e9671947c7f80b0b2129e0128dd99507b6aed0a160184b6d6fd5726c338f5e9d56c70cb781 +GCD = 1 + +A = -a464435f68a42cb7379060de55bf9a1902f52f3c1a4e918fd8f6b07f255ab9329a58ee56cebd4e793873fb1146973cd0d9f859edc03ebf3a904f46f4b5f4255fdfc81c2b0a80a8e54389c18ca1894ccc16793e93ba98945588c4e50e1a4e0bc790c3ebc1b72f43f2b7197b1c5a407a591acc8fb9c7b71f0399a97d16f88bf51a +B = 4ed0e3711eab5212783a75db0bfbbf36e1010ef9eae5d923ee6ac5fe65c2022f5d3a5932ab545b4fadf8355a0b351fe2c0525d139cdb9bf7df21461d81615acae275c49d4cc5d6f7488b318a051bffd9701852e068010571f553fd0a16d806f3f3648d85de664c88dea6fbff924857808d62d5a1d3511a82f0e8cb2f0304ba0d +GCD = 1 + +A = 6da1881883193493c684e78ab50c8db22bbd20bf526c9076ba6d5daf0a5116a275060698236af798d93a700c01739477ce21c719686514402bc6ce4b6a7a28f0d785a059acb0c08d5d149e78f35bafd718351357f0546f034ca728456b21ecf914e6cd14d27ac8be6db0b1f75a11b018be08aa5005f51e8096f821acc2b6fc10 +B = -5763ff3c2d8d2e39bfa6a952130248076a475320b8c7716827f725f4208db3f21c76b86a5622338223eeca3452910775bda483fef9e5beea46c3e78eca68fa177695bd0cd69f73c804d8ed91553b67083b6aa7b5f7da818b759e8b855ea3b83a2b7a2bf568fec6f017292aeabb1ae0a0b84807a9f692a8689237b0e0cf1fceea +GCD = 2 + +A = -db1d35d213eea304a4d800ea6df6f4a8311849966a0562256d116ede3d01fbc6fcbd2961770d8a40a3435b63ddf832c0ff7c7ea3c44b2c2e0e08fa7e3a38c7075a1eb9f97e23f13422f7ced5bc1d13d8fce5048643be6752db6fc165b6da03a018567fecbcb9eb4e357e7afcfa33251ec20e7858d47028255a85775ac4919609 +B = 43d8372dd5babe95c96c7c4abc33c0e0e264e8b70d6adcfd3c8050f2133ea7e94854b55cd0b2e3351880f5f01987a530d1d3ca4d7dd2aff38b96be31417cc6197d0f83a3f585093533b54069ed1116216d7acb41a24ece014093fb5c11b97b23bd631395e344b8887362c2d44ae37940b1d6916fe0ec52c9c9914e5f87aef9c2 +GCD = f + +A = dcfe5680e6ab4f7e4b60ed760ed07e762776074a33376cf7040227e9153383319ac415cd64392752f8b9a70a83d8a13014b212a0278258da12a2da9a03dad414fd1f225020c2d9e9aceead6bbaddf3c1d7adec9e9243ab3d550e78e769ca5373bf87e856092420225e0b9cb16a56e12357f1eb6a2a8a5b911236ebc8f30004b5 +B = -5255ba927d7b3dc7e5d26c654f20b897cb1d490f1f598de5c6cc09f69a8ef010590f844f5b7c54c658ae15ff5e68fdf19498848a5f17f075fe54a6ae58780eba1a248f95bceecd05724a74fa0e92d7112004796c362a84ccc86c300603a4afef44c6248986e986e3cdb8d9822471b0295b1e82951999eb69ee8734661987c620 +GCD = 1 + +A = -ca7876ae7adfa3af16850aae906c2f8536864a4714d423bcbe27d924a41ec3d39791ed7747ac1fe4f289c02495510285a7e6dcd5eca6b44306e106431a777a498951b442260fc2bd68d092ab56b4f26ef8e58bc0f48c09ae0bcab0282886523f13f2a970089508daaced83587fd39b5eef165cd1bd0ba0ff9a6928734e42675a +B = -3eacc2a2aecfd0c40648b9acf015ad8d8a75f700e8c40dab172f4395e91c8df4c7465b7371bf9d42c0850488f336134265b736149d4fd5088eb19e4f2f87c7b386bb8aaf0a1ab204d7afe03d2cb4ca34d6f0f6f88d911c11f403bcaaf9630da75b270c155bc65234dde727eb71e7e58601e643f4eb1d5a8c2f817e0f60f7b70d +GCD = 1 + +A = f92e1d5690812eb4a2a107a4a395b35681b7a8a183ae0aef2bf57c8da663def73935631700d5c4d13e0bf399747c0dbd1a639b42a0c76aa834cf8c9d8853d6c525296e0c9cce5903c98aefd725143e77d66528dafa10efc2970de0d06af959c9c70863c758932580b6aa2a01bb9c3cb28ff1916d686aa6f582c2a1337590e0bb +B = -58ac2a12249be9e0b9a26741b1e830ded8f1a2375b45f88c1549ae55b9dfd7141ce5476e47a71ec6a1c4ea19d26e29f7dcc60c368729a7497e977c5992cf5dd783a754abcb5507b0b74703c07330866410b5807ec0f7f0b8003353ea01fd8e162b81b9eaa66217a90105a4ad80db46d3a6463ce1c344babbcd881f4d9e5a0b9b +GCD = 1 + +A = 92b89a12f6e7f06a2579a95097992e2a21d089796a7c331cc8b8b559ed8afb6b1de33d380c48ba7c8a4a641a5d2ef69d9bcd8bc710496e9e844e079978f93fe9e0f762199775ebd2d9d555b77fdfbb2f4d02717fc4859a15b6eb9089bee47f3748a3f98a0ec1723b4cd6ba972dd880db71080db11eb2b7aa677b22ad38da0f4c +B = -27839c73bc4d4dfbcde48591297cbd8096cdf3cccb72e51b1df5a835af1f2331a323b47444269dff2107bf6370e80811f1db92ca52e9dbf7d41512563c384783bbb0efad2d56c25d3ba56f351ca8bbcd6db5a82d02b0b71dae250009dd774ced8975bd09789ec5229c5016229fc28cbd06dfbfbef81e020e1cde05f7f1e8a0e7 +GCD = 1 + +A = 34caec1ca4f9e9cac45b2a1b4130968f20a43109db79e5ac72848ce8f6d01aa25c9f350d1c88294c6c2e6f58ea3755f98ab04a4b438709d17e76ad081d15e1335a6e7c63e7bdf52b46919bf86be1eef654f43ed4c857f454ff9641f90a982700cc4710016bd7e666aedfe9bb81b325feca07782a822f13d3e996060fda1c8619 +B = 6221d8eae89e62172409ff48b3a726109b6e0622cc206aa1f5421b3026c671898aa759c973d2cbbd50fe9ed0b06ac736501aee9de45e2dcd49f8491168894e08d87dabddd5a9977c52902d88d94e2c9106f0a8b1d18fdecd7caa60fcdaa20565ed041b4e688612b4e6bb0ee8ec9ced1b28610dbc81ad37ff6b2f492eb482cdcf +GCD = 1 + +A = -ff502eaef742f6cbc13795cb995f91d6596a8fd63eb90a273e78fae0e1d1a46947b8c38dbe87f9eae250bf502bdf3faf06fe8fddfe3e7f1cf230f6b7aa060e8fa2499646d13443a483205afc220767444c5eb40c2b2ef7bf3b17a16eb8253baaf287f118333795dbb23621fb6172df8df2c159169f5e0120c45f46f3d208d8f9 +B = -3ba904be06a57286f6bc4203f9b57f2d76b41e08594841ee17593282f68e3cd8dd2a4740d8fd43afd57653b0381efc36289831cc39ed2620ff316183dd6b13f50347d9cd00339e4e5ea87cb0e445c8cfa8b7924c08bfe0a53875656eb286415cff34c4f213d19ed21cab175e2bcd008343d92f71416703f6946a4ab70cf0ac1d +GCD = 5 + +A = 2e9a15576d2705cd48b66f82cf461814348911cab78e5b5e736ce803c58e546f5c2cdee8423c847e712af7f42ae33da4218decbc343b50d7188e91846044f27dd6c09720d0d5243aa52dfe5346a1882aeb68a13f5ab5ad253bfe82ce65b20c1060fb3aff56adfffda839a16772584513237309f583c3b4e279bd31641ca36fed +B = 42f9ae1c4e870faba371d82704d99b2960573e40bc782044a93e6ef10c8855afeb69c89e43b41172571941b4355ab63f8979505b3ddad2385afa1c920a47dcacd2e974ec230f53b3304921546b350145d7069fac8368f22f98edcc7dc4ba7a9ef618024292e497d58b4421f5795c4e4dced0d963e2a9dbac10c2a9b9cf0c2635 +GCD = 1 + +A = -abfacb184c39fca4044f0fdae54c4bbcb1d82355e86d13e3ec234a756ed118bf3684c1d33d694e390044429b2d7bc2245bbeb33fedbe48a4e9e0eac364f0a80cd021c774c6ae1d1d1906072c9bb8ec179b7122d1c0b00f6d367d57f45ccf5a722e6598b858dabb859dae632225e6021fa80221523e7d482cc1b467e9536b830e +B = -7beae7c1941a50dcaca65c1068366e9b91f78eaa0dee8eea08b2c8d74be37fb984d17c39fc388e949f22520c612db684a8cf2b7c1e6b4068bb76a37ce5bcaf8052346b98bb59d29e017633d5fd27262420682c07892481cb62fc4571f0aac9eeabb755ee06d16e579bbb01593f00b4cfcd50b9d738d648fdc93114d917c8ac79 +GCD = 1 + +A = -bde7be1b0969998361ee9b9f6161e2a2408f9e016484c0781e149998eb168312494afa41dafbfedf035a57dac5bc7402fe111b5dc8fcbe6dd10bf08e254f2652250e3fc7ea1046dd61771d47dbf34e451ba637c57d3f5a991cb0ea840da745d6e30a8aa35521447b44424d89e722e0a60a25820dc56169028122577a3eb23233 +B = dde0f8672eecf6cb5885fd54495432ac26ef19d68df3325d59338367135d1efa4790813f5b03e8ba4f87817675af55afb441705a339aab7262564292edca1de76c949828d533fe89af97fe265236752fe6a2941fe27c6cd695f9145d9d435054264c82796a6d236ffe8f388b4d1abe43b5534e726deeb0552d9d25ff60af9869 +GCD = 1 + +A = -1cd50237000d29ea623c51302896ddc1c63c9d57c5bea95f2821b553ec9b928b052fcefdbd609823ac265aa6a477452016f01cd4093851a07f97b0f003a5bea56dfe99eff04801edf7529945a6650cbc4a3399c9675a36ba3ff41e958359cc8ef1de225bddefc2d5c0548556161d12018e59808d27267dd0b847c05b63a1669a +B = -d40e4142e1f5969ea4f839e1808f9684a2486d352bd2b44505d3b19961dd0614f6c1f79022cdf75fbc356136d9d46e618cb8e8b814c2be55415e162862fa43ee102e3dcf78be3f58bb6196454a985b7dc7b7c80714695063b3b00655f891343b7517285bb9dafd950c4287e51aed8a61eef82d54a0ca0a0203239c5f6b5b147d +GCD = 1 + +A = -6ce0035cc0a2f898e3aaa5dbc03e5798b73dfcd749378f6503095c8df11c8274053ebb3fe0fbd38f9e3d144520dcb4a2c41b001283471a93aa062e52fc6ccaca649b3af3c0bbaeb44542868f6c31e4341fdf29d106439501891ad0e009fe030d2ee1772a89921cb6890130df6cced53bd394bc1fbac767a9e4a42da929934536 +B = -61870b057b88db401b1d34d4724d0624cef0469aae5ec319f29afb4f3bed8ee2d4b8da9bbba1ad8338594d77408de991ddec50dff443a0593b68d541de6b74950e90ba133d6bd59587f3ceef7e73f72298c177d0ef297b2895b2ccb4bf98781ea6d70df2344c3a95e3c48976b1905dca7b68fe9f653d64be9ddfc6c4a01c55df +GCD = 17 + +A = 779f020a5e14b5ff9ebae45799c1b2c6ffde59db1396fb1ad90516a9b7e50b5f98b32f379e47f781d5f8c7a21bf07aa8c6294bd2470f84565ec1dab52740ee009bc20b71bb82c453d628bf9573fbc227d216858a7edbd563181b57c6bbfb575463c6d0199db6e69ba8f36b4455b235be1169e0e81f93c089c81cbb8f74bc9651 +B = -932ed2504702008fcb8e50ae53722439d21e0f14662299a33c72a1b659c76d35514f0c41f265d0f599c61dd15819c97185903277c6b1bc6df8f25b80e56172a5b0b4d03aefbd56748b6536b901cbd4d5ece174791eb2f4656635362db45137103e4e7366d8c5889952968e612e1864ecbf4e5b7beeff2c330f6e33963b468614 +GCD = 1 + +A = a296053f44bbcb543a97f9a333018dbcebf6148738a0f36bc0ffd9e5b2d68b14ac0cf9e1d9e7ccd19de9217c567be1bf17cf4ee6c6af349b5f0307edefc2051a671306b65e6ee3db624e7c86472752790236c3aabe9f060b41883855943596cfbbb42a1bdf13b9d36d017b42439e24fefe1862bf98e434d65855c9f016833cb7 +B = -955f3923c2f49d4a11a841cfc996453981a8bbaa157e482e5d61345a67e594e71ee2cb899c9f734eb36110789c5c65814d2fa1077aa36c4351b2a873a131aabe65a00b8973408000652bb764591630c7c00e1e72eed85e465d1ed40e8fe8612913a8665523e07e80ca42d70f7a459dec9f60ff3af67261c7e4f2222c8eb1d48e +GCD = 1 + +A = -9d54a3e12f3accb2a45fcec3f6b460a074fff1cc770be78aebfb1d694612622f4ce37ef921439b088a2d7350ba0319c9e8a59db1b5cf040d9c09a315c15eed7d76f0677dc055d4946902e28a369f39f8044aaa0d4b41eebd8baf27187a09b6b8ed10e065d24544db6b3d582e1c98d85f96132b0a498abdd6b13ef36e06b80509 +B = a8496c6007f910ffb98c3a0ce1e3cc424cdb06fc4b8bb65c78e62a0f75f24dbd7668e0c20ae4f3dbceae0edae3b11b09506b24550571e9369bc7a5977ca7d6c77a953136e62fb41ba79b328ca095d7c57d6e56a392bab6162c2fdafd168766332fc04c0111d919974a54bdfd49d16e2724a7cd72a6400e40e074c5154ff2e3da +GCD = 1 + +A = -a94636ce5d9a5c1c0bd6c37644616f8fb1a013628aefc96e25c639829c69feac88af74e97b7cb28c56e34ceb642c009b2318b8c31feed8b769e882f519ed19ad7403d82481a8eb0a889081800f4059753977efc77063ce879fd229b0782f71c760b91838591da728ce2dafbe0c00a0b365680604e293f86da837c9c8f05047b0 +B = 503216defde871a1789b7c7a09e49ce0fdcc490df96f9ba84271cae34d6f8df83fea328199dbf4e829ad12cadb98bb45e17be6e20cc1c30e060c663259b4338479e4af65b7b7a9353e82fbf7f3662e7b332885cd363062c0fcd4d20788cda471a56c157d04cd1aaf1681be1b458ca65ede55aa2123b8c7e4e108fa7196601a79 +GCD = 5 + +A = f37e35f0cfd11b54a3f661810012975075bd681b7d62aca0868e35f21ffb336512b0c4e99a6d559a7babd81f3b44bb98f6cbefc2e20a1815613f2aebdf5bf309632547afa3ae5e8d3186f4045d29ec11fca23a0b14a850b31ad161c7a2f8989a83a479217c00b4312abafdeba4de1aa77232b87f3ebb6304c0464a2a50461bef +B = f957d20d84192c92eedd6ea792e2cf53a4935d1c09a85732f409f8dc6f8083ee6fdad0abef4d9c652a88de8550df2fade5fd95ef8bb33cb58018dfe0435cbc6d0c9b29f3e08d2a1d58db44ea82674aa3a05d7590c6e4fa20932dcb3a1881d1b568df8e5f705e8b314969f626f7f66d621aadbd5e552fc8bd0b815b7b9c3992e3 +GCD = 1 + +A = -df57a231085a42bc4190aa29a6b061568703861905ee3f979cead10169db6e27e312721e621e252db304329d318cf5f72498ae3e91f0d5268f2032ae80b1aa358edc919cc19a1a688cbd6ee3ec448b18592a83affe1e4d84e0c680104a4c7b9edfbefca9683e58080deec7f8d71b122c4a13198fd99f3a3ae4249a8e427e68db +B = -e6830d14dec15cb2ea54deb63c6082dfa1647070e9d24a84e8f492ce23de5e1cda94f15854f0221c802ab2e4b540ef6117bf4ec6da6f668546409ee48a7176a523e848a1413a258d339d101cedd5e50abdfdf025f58769144fca8bd8d8e33e61c803a18da1446d1ec07b9b8d4b1a683791e64e2a85f5a4b174a09e62d34bbe3c +GCD = 1 + +A = -8c7d5b7b967ab1422971ffbeb22521137a5522d747c592979487af046bcc8c09a282161806efd4da6dfabd484af68a7f0f1e40afa894cdf2f53b25281d01a49a7efb2fb57ad5df9db4a01a3b24f684cb50388f57af885ebbfbb95d5a4d9871c8b39526f3344773a711e772c91aa55d7130ccb10ac4d9a98665cbeba27d6c6e28 +B = 6cacc8362af07bc36dd7f435f0ca65d53720df1e52b8eddf9c084d212f9a2e34818bd35babfb7043e7ba3c3a9f7bf49ce13c9d25cc40d58c806cb7340b3434e4e3f6b518707382bc8f471e8e45a23b47e4aef8273070bcfc380fe4ba9c259705598ec6de7b880e72be01eed3a9139e6bbf568faaf8b288157df55cb08bf409a8 +GCD = 8 + +A = -4b33b563d997abfbcc574a1b98934a5428d3d2daa232fd588aa84ec9e0f6d29b97f562113422ca004f0e56e0f1879102a94dc5ef816e418dd83bd264dba3e2c2abec323a110924db970e067e0b73bce71d63e1f2110840d10a2ae7b986916fd24b028d7a8321679d4f0e66eb8c783e7dd66a9c13e187ec7bab5305fb894e527c +B = -21591df1a5406e09297e3027b2c332d7046a30470b08f7e8074f513c07bd16f721842ec872e0a384efa247acb6e067a673a148944549a6b01a67fdc705b987aaf760987130438c7ea73df67fd0460e3ffbed0ba23e3474a9b50a2dcb3008bdc357860ece07bce361a36a7ad26cc844ecec3e0369f9e8e35ee0363497886a33a4 +GCD = 4 + +A = e76ad50bbfd97378d3f66ad97df9aa8a7ae3614e3c4f3c6272a9de8fcd5baea049642b21bb59e4b497c723b109f6d3dc3fabf55cd38812afb7b7d9e4a1d4778fbc223d9802e6ac624ef6fc5f3e62ce8159b7c37f34374a3a0598ab6a0d64888bf1caf32ca244f16361d40510ec4418b5e69e4efdba9965c12cf478637952705b +B = -adc2994d3f0ce5d9206bc818702c9cdde9853293d1fbaceb6b5a24272ea900fffa4053a1052d68979d2b20c29fbcf944e9f5be4ff2f51ecd2fe5a96728107096c6914d5f45cf16bcf7044c39cc3c458eb311ed07f94eb8f99efdf1630e0608f78724488b101d39bc4be8f2876b3f9e09390167aedc037f0ce2ce785dba875d57 +GCD = 1 + +A = -a26d58676dfcba352caa8b7faa5aaec7f1785f0fbc1daf679d2aa6e9211a82745291c1690dada45dba1c69678218d4faa1498222548217c58c74d2db40e661dfd406d38406801e1606323abadaa8d13068595dfa578ad57475cd8b3651d43bcf4bcefc689b52dc7b0e435f4a79db12110948ec98ab112c2d6130a8864477ec8 +B = -ef7c6720aadb401d5ed469c27686663a7d1cc6260db0cb32bc98c567b3bcfff2d34e40c350aae332ff4713f80c0dddf6b2e7c099d40bdf5a8219936e048b3e2ff8965678c5ef7b9678a5ba1bdeb85125d05559ed9bcb712e8395563f29557d024972972fe183567dd01857b463639bf3adc69df512955be05c17bd7da23c4b6f +GCD = 1 + +A = df032624bb6ab7476fd8929208f0a3356f459bddabef866b1c37da5c640e236ce34db54f9a5678039cc663dc3674cd2221e2c1083bea754a51faa1f5fd7c9a128e1062bd393f13252c85ae5441b8d89fc1bbfef9a7cbffdc90449df52d6a717c290916b7c143f3f51cb19e68752f0822550e294d161ef60024673b944dd9ae47 +B = -f0882ea223c94de0f7429f7fa58efc81dda38e02eeedf8b6e83ecbc188e6f16a4900c9f5e58e0024ac8a0f5d342cce5f7bccd9e6e92428a0501a6b35fcbac51141b5bf23ccbca35a962f031dcd3c2dfe45198eb6afa41f1ef7db9b5c51062ff1f3fc85bae1b9e4864144220f31327944ef5f9e4921d6cddc9db4d10b9d60cc0d +GCD = 1 + +A = 21c379cd46c1653eea675f05b7de1936ea8c6059f379ba432075447f4193418e6695696c39a402d495ae5ff0ef206f6f8728b5dd15c4bcc99cb8df2f05bf1e3269ab54bf559f893d7de0092fbe49af03b7e2838c9d9893ffbe6200d7e7d4ed9b5ba2ca4e9d74397c7f742a019fb2e3c8111f5566552732f9abcf3a080301b08e +B = -a91705a139ce7019af10fce8e8ddb9bcd3f956ce345cd5d9f5a0c75a164290dfa9e72165d12ef52cc3aadc091eafd873accba9b578a5e4444df0fc704f728beffea0d0da4751d75fe689404d10683baa05438ac2bcb58c2ad9678de6ddfa076a2f235ec0bba35add40999620f668f714f3a198f6d97a920b1e2e37d3b96cffc6 +GCD = 2 + +A = b268ecd0e391a74a5fd3f1b6cd6d2a6c0fa0a8528d2dfb8688e820e0c86314a4f1b69f6fa618db115574a75e3673f1bf7077fa21e34a7f4f5bb08a485aea73ca984d300a941108d1b637e3486778f63a7d88f8873b2a7471c64e9494349c7ca33c74fe6c889f6e515b10207b5bb8800094362e7b5267d72ab3dbc7fd5de0f8b1 +B = 8ba48fe0806812f28c260759db6aea5a1c5b7d76dc6e7e56c1ea1eb4731a0cbf0a2146245642707a93fdfc4eb2016f74478558326781e4be7801e58f4d360de1030c164bec702d8768107e3871f0e586c319c9c464a5cf01ff39bda5e4fa390d7603a04f553eca09baa1b2b540ad4749fdd544e113c5fe66ddd1b2ab5867c6da +GCD = 1 + +A = -81a14d3a351dfb5e769a0fa13ac1ba03adfb44c0e70e859c08515b123304d698f3720c4bb93004dbec54a83b2958e5a1d3c9207e86f2e2980f82383743246db9ea143f28a84ad125ad81f9eeee23f7f89a71532582de802dfa375745899e1cf7e2fb7fe4eab272178a57c6a6518158a348c4638e058f9383fa4d6d099f890004 +B = -e7866f33c29dfb85e07d50fce9f09386a927dacd97bcd535e05c87b460867f9736ca84de2e7b3dee1e8876094ca31a9f3e6888ccaf8691361de6ed22ecacd22ad2025abb804bf082719b9bcdf94e5c107f31201560edf83c194a47ce27ad78640eabbb08f96048c5dca8c957c7f171ed927ddee287d2671b8cfc4b9efcd34d83 +GCD = 35 + +A = f07fa8c1249c09dfa2a5b5c5666a1eef38d98ec5cb95c24954fab3e619a79f07da25ce5ed0763b6b112db9ea41e0a39043d25b696cd505277d759841913896ab492afd1a3fbbeffa646bb09f375d749728d55f9ee8c0c01d38bf1ac5e1e78281c5d9965a214c78a03fc01a8b22ccd0e8395b9b6c23acb6d3d0e03f8ad8523e3d +B = -f7992a5509162338e685c18223f9cab1970c599808940bdf68e036041e89daf4ccaa468863ec034433fad37c19f26758b359563efbbc8b1319e14b1538408d8b86df616bf76994e843d9eee7b4b5122dc10e6dd7509dd596d253cc4165f6a4bb41c06861a824a45f576e413a701921ca4035dba6d0ccb627ff50c5cc14c4b155 +GCD = 1 + +A = -cb8ac44017ba238d4212bb347e8ee1cf66d7c7927e74526abff4a496d552b8a9dba6a2417cd6ac18d619e930859493ee27ca7a4168b82f8cbdc168ce66f150e104239388d2967bf669d098dfd3f7c14b49460c3e6218e3195724996318be3834937a1cd8b4c31d8fa36cc9efac68d430958a705338a3d3a687480680cd622457 +B = -dabf6e2de58d9953d51d5027324d69ebe731d90cbf234bfbe301c3ba64c83c296b318f7bc010de8cb5d97c377a418ece4acf72d447fb282fa74d7c580b689d52945d44a19079f840dda9223ebae08064b5d47d7dfaac5a6e634b19047baac0e3a57dc8412b28a65e21aeb4719d6683eab2c427550c4fa2f4bfcc60f1cff9df1d +GCD = 1 + +A = -65b865036fa8636ed1ef024aec9b06255f736375b54859dcb6555a029e7fa46f9cfc8e8cf511ce86401c59b2d2a407b66eb4b8f40dd7074c9708e036220a72902fd32468977b66381aacadbb4a4ecb4bba23d639587c1f252f4c2f51e4f3632619f2c351c7f7e9793c8db97b92378ab360c1c1051e51df4500512653e55ae46b +B = -981d477aeb1970aa9d1330ac9bf1d1b9ec0966547f62f0d8dd81fca25bc679f160056efd1c4750e6a72b7a0902a1eac992912db780842c1733694d5c42ff4ba4f3a0baa7726fcdf9bb05b12477c0047dbdea40411ca38938cbf3d8188f008dac4a2e9498bb518c0ced1e6a2531ac686cebb871f6574083771270eb67497b7765 +GCD = 1 + +A = 43a372a3985094c0d6affe0ca94b70c12278e9ba2fdc4b7f3b399200214c618c57dddfb7dc87aa4ba948e89d8795fab80554a96fb820bc70a9240ea7805dabd715842c5998ad16436f72027af12a7e3e4af6dc977c25beef3d14d32b060305f388ae54ff34d3dc01f9737f80946764810fa17ac7c4b3edd90a68f189321a0eb6 +B = 14c1f76b12d6e75a50fdb169565ce361518c4e15cfcd888d3883aeafc8d8a5f7602e0d5f87189a056c4ae44ecd918b0f44a0e3ef39d1f5bc4a1454b495c0be36389fe71a069989b7802314d979180917b90e8cfa4f45606c4bc86f7e71f2e7debd81ce5f4ac78714779c433f15cb907174b7a8ee89a695a9fbd79e7cbcc0d527 +GCD = 1 + +A = -38b25215785d328a77623832d51ab84755374962facd5d5e717999e78edfee5c3c2d6de6bfb8eb4c23eec80b98e3093c20ca258e6213e2b7c055ea44f048d51dafe9f802ec505a2ced55d6d80046b9b3212e921959762175c5f09f2020e0679c5f9b13e634dee08268eab05e4320367334ad3d9f4897db5ca7dba0f475b704f2 +B = bf0650c4aef678cac150400e06e7281591f7395dc85333af367addd99be31885757a7663646619b631879a442fa299a78bca076fe8bc0326ed62e4f92b8129c0e65711a0f035933df7bec1f4cd0c45be6559d771b2077f333c0940818461e8c8e394a13e1cb1b6349dd97d99a73460ff476bce30103db89de7f53b3446db38f1 +GCD = 1 + +A = b88fcef1a65c429fc01f8aab9c6ab04696d7c20b747e7622ac1a36a382af92799a6fefa7e395ccd5dd1bf793ee678583f5acc1f733957213d3f9e5faef7f01838ec7949c990eb83407df0c43abc60bc7a5be4821bf914f3cab354aa5289fc1ea9ec4bae896476a2c8cec9910dc7a6c6c0e4d13f1bd30f02bc1660e83d959025c +B = -8fac4a9109d38f3c5e7ba7064c174bd3d09a452cdb201d4b95d328b3c26f507d96b6762284e0cc47afab8cedb2daf382524238d06e59bc5c2754821c97fbbe1fd713b56c2ca201906e8d42572348bedb1eb94734d34ce5709f1b536fa5bee61cf2ff025b7de2cb41b99540ecaacea9ed6f50be8b6369e66978a797aa7d1a0cbd +GCD = 1 + +A = 6d0bed26e9f4889a74fbd6a974a9bec4805b76b74efe8ecb2036712197ecbfcd5c692767d8a53a036e3d744977c00a1cb6515ffd190d856c4a532800cc2c9a7ee58ae7a94e521c4dac3e360d26aa1b75604d13d74c86c600639b69b75778e9b97befd1272270d45fdc1cbeac7dc60e40593dc9fbfd7c41e7058f75cfa76ea15f +B = 71aeccc1b64c8136e8fc38efd268760660593105dd392b27c993b79ede50c74d69f249b3a5510b2b52f2785fa2a74acd2be549c492fe0ab47474e5d33a221c30234b7f3ffe52473a29157b6b56715bc747132e484ddf343a9495761040a09438e9e5c593a8614558070fa34ee0bc092854e4361566f4378fc90718cb0a316e3a +GCD = 3 + +A = -aae79b902e43c29eaf5515ee58a3ec34978b53d2b2f930170de3c722b64caa53faed9c010cf3311bf2370f5de7b23db3f80892a4075ad40c28f17dc576d25910694039d7ae93cca990a81b9440df60805b183810882e3546caf68c606b8b1e4d268db863a6eeff0246f1070b08b4efbeff1d0c2619800ddbb70cfa7555b18937 +B = -418054795ccf579c0ba706461461fccdb9cea4b966e40abbf96c8748eeb95edccbdf79753871be48635b6b63e91649a9a2e19091122cbdbab0a700b56ed31d5f989c6fd33c96b226c53663b331db70c22be07d23004acef438666c007bf3ae1cf68aee5e9d2eba546918f969668d195b54d996719a0f9a780b3283c9a8ee97fd +GCD = 1 + +A = daf8cde04e24e01e9c732c2c829a655763e92c9793ee6d3aa9fa587d80c756430447b3b41840be0073709dc86eeb3853516dcb130dd43657b8af64f1e8674c24a410b2f8f8e13ec59594620ac1a6868698a9235c0976d465fdf64a899eabe4af7d2dbc824730b6a35465a5bf30726f2364c0fc3950c1d7853442576244b6a08c +B = -c1e6213422e3bd2ba3195aeff596ead7d8695717c514766335d999fa8052c8bc440611d34b61e27e020beb3cd5ac3495defd064de1c72dfac99ca6461d79508468ca991fdf487bb4026c8d360decffc01a5b5df36cc90b08bbfe20b8292d48d0f22a289ff38c986f36eefd3eb8fa91031d77b534402374fa8757194f6ecdab87 +GCD = 1 + +A = 1f13ff29f61ef53ba74a584bba2f876faf30c3a48f14801f2670fc8c3a3f12a6e62e9c69751f6046ac25992e4fbf0939a55ec2a375785367bdce907d4b9fc5f51bf3c59a4f8cfcc157c22fd814de1a5adb87b9c022dc93c2fa0bf8722380da01d82f81e3ab90749b6c5b1b76e21b09e1da1900f2aa70e0a9e2f007c2c3ee1c0c +B = 6120a7393e915c22efe5c1349fe12e735f114c16361d84ef3909d35628ec556ad9aaaf010bd71cb54c43c958cbbb3e714c5945076636359272282a92250f1ba4ff21376ef85b574516b1eceb0a3e2aa5cd3ac99df188b4e29916d83a3ec033280e5257aa9bab30071e82cff29abda6ac993d0b7cf8a0c1fe5d598bc3caebbe5a +GCD = 2 + +A = a712ad383a734b4ac4d9c72a932622fbb2fd0e657a0e09306cc50f2307d4d7f488f5b04678913ddaa00d4c17e5e4a79dd4f4ab86dbd0e223f1c05e10445aa7fd7a58d0295efc04bfa5aaf5d6a810d875ffd9fd0abc89cda17a88fe15fd40407f5cbe53bd813b5408068d8a76282bb0156e1765bf7e9c2d4c4c8bfb804d9f5693 +B = 4776f15c7686fba5de4064e7bb75196c5bd92140f7ca3a118ac06bd35a9c730d71b47bff57f4399b746a8164fd392ae94e2111795c7ce714bf3072162d8e079537e17f3a477ca8799532654f07561e5b3916ba21199fa50512e1e3541cffca5729e2f073f23eec876c0a2460b6fb81fd49fd841082e5deddf4f2e7ba7fcbbf82 +GCD = 1 + +A = -c6ff0a22603be09f68237d3efa36c1701333b0196c3dd3d7612584fe9431cb13d5ccf753b0c1b3d35b2e4e59c005fd6621891b5d0c0acf9bd47bd20e15bfae3a37cc76f9024f3149127f750629ee19abf1eac01c2ddf9fd87ad55819c5efbc2f542bde99cd8db9f5be25c24da53ebe3dd28ccb07f2de8f0d11a5ea3cc8be5ec4 +B = -5155e77dfa312d2b21b46604fe2fc3a334d3e3e1a918962e9d0d9cf32f7f58ef942b770cb53a740fa464e293207fa2a3fa1fdabf4bde2f30d173beb37a9c314a1fab9c94e7b1b98558238cf523d9b48d4bb5ca638e7ba0306190632e30b92c0956068ba4e5207e7d280c608b96758d824cd7ac51cc074c8b8e194f6f0918b3dc +GCD = 4 + +A = fd21d30e49a0305fdc6716f6ab7472d933bd7d4d857228a6f5ebe1966eb74f395a474bc12bad45845717656336530c79452b8e62c8b661c80028d3de7d660dc603d6cc7b34e3dc835f5ddc8ee2496df0a55f628926fc2d3c331025da1972c80a142fb43690fff14edba13093b71b3aba5611cc60a85e8c8269305bacbbb9ae5a +B = 317c0d2092a5bd71a77b28bcd59599243a2baa5cd6593d553d7c0f322ca20f9b4adab128e7b7331adfee4afd47f2413ecc210d75994f319a75529f6cbe929ccd2244139401b241dc9f349076c6a07f1b41da7f607b1f94f536d62ee2790efef71500e20f076565d712c2bde1e54a5599975cfe726b47cf5f5a8ce308a58aca41 +GCD = 1 + +A = -a77183cb2c846782bc3c76bd01a48abbbced42256e2469157bbcb0174861bab7658a56125517ab6524940072788912b15a17873d0630c74d0786c7c998d9d6d0ad01c32aa85814a4b6435922b8b9c227d0843ae5dcc1a6487a219793420477ee62319a074f31b4035680bcf7be465b61416cecdb576009f021d648436a62c9a6 +B = 54ad1186b5b7b38611ea9420a9c5acd14f72c5041c989b4f9e1107764da5b664cdc6193d09e24dbfbd69476e56d22ff99d9a9b00ea7602f114164d63d0b10400f53738436353769528827cc5d4a06e6bbf579500ae1340beba7e3df6db3f78d3562571d74a5fb00e6884ee95b5fbebec61c357ac235bcf3114d7a0b757eb0bd3 +GCD = 1 + +A = d12591808a77326c83cd03d4e8014e5bfbbe90096676a7dece3881f1452bbbd9ad22346663a8e9cccc982d91191c16c7ff652d449b11ccc1d9b9c6d65387bf849f8e9fead8f6b60b45309d83f81b444cd24ee1f562ca06632ddffc00310b168c25ed30cbb04e83ed99ef95091100d1e49b5eae1e1bf13193d54a79d6b89da5f2 +B = a4e5a52af81703a4ca71d63be1eb12479c07aa1413bf978ff5390954249523afc71a74893a1400e9382dd8b47b44756f9e374e76393ea3f76ad00c5e14584d67d3af7a8963218313b5870e1a0c16cad9863762ac89b06d667f57845795e4b8384facd661bd5fc1cf00acec90dce8130cb7114dcc1db64a3566d5fffef0758641 +GCD = 1 + +A = f1515cd45bc9110dd40a05bdc25513ea453b89405b42588c8272a59f011d926294cb40f1e14eae8383751cfd7a0f7210dba1ec2b3d8135616db29c1b27dfa57758ad9e0d46bcf3b71faa99482fd394bf1aebbce79d25812a6556b06003424bd76f4ddcec7f1296ceee1a4d70a1a5e13758882d7cd35dd9c9dc753674036b081f +B = 473cf0ba3fd689129f57285191508310684b66cd3c5b5159ee602839bb721169eaa3dea26fc758c71260846a16ed0757a220a3bc262865de0824b3b9f03399cded6194e1229ba5dfd4f0436c75657b7b96cac4cd31f64d62af94373c1dd5a028b88d1f88ace120c0f3a5f22aac0dc2ade9d9c773a72d1bb3e6c7c3f5a804d9e +GCD = 3 + +A = 9151a42861828b4488cc0be096108cc04032973871fc889c0588c7a8de390384ad84836ecdceb2a532dfb200defe5ce66809a7d4ff4d31236042be18216d5bec8530d9bcf9deccd4b57dd81a26bc13390ea840d6facf12491ce7861773ef5a571d410f4758e887eaab61420c350e3f87db7a90626e27aefab24faf3dcfc45aa6 +B = 4505c1520f6852d35dd0f3778eba396ddf5efe730a5f3db1cfd594606fbcc1e97572e9d4cc26be153c5f945892a896070fb70d1e92a4155fbe12c1b17b48f0b9be59f73a1a55f248f119c7f28f5f4ef7782f6736c26836777bbc9234687f36308ed01d635ed5d4806628f5723ef8f09c7645080b4902e8c5eed5a80589ca1f42 +GCD = a + +A = -3d1b41fa04b57c10234693943c4f63c1703acc6059fec1d735beef5a42d80b7b52ea3bb062d86ec2663519ac664ed46148ad591f605422517f68487eceee7a5cbc6f80e9ae47b6ea4f5e1b6393f2dfd4d2a74a791356582117e255f8fe6388cbef75268d214408e0c96ad2da68c91c17a65687f93e72aa75a337a11b5ff62e57 +B = 87dc371fd217bf4a20a1b227da2ebb6d84380df47872f4a303f00a1f5d531ac4513bdead520dbf3dfc03e7631c1f1d7276a6b4877d9ad112f55631287ee1b281da2c5bd648007355e939077573919413d33cfc8ecb2431380c013bfdf05f364a9a5a8a12e08188ad726853df2973b248ce30634c3a8c4c0220fc81c4441e8b0a +GCD = 1 + +A = -7dd56f785f4a548424730a6286300efeecd23642be87da54ff3d492efa629e22467be9b35f324b1f426ce9e8aaccf5ef00a9a3bdc07a94f147e5ce4693ef6a1b1578c6d65435988f95aa979e73b1bd1fa180bf7c927b422a81d6841d51b2388193b69facde06751b54070bdfc6ec49938106188dcabb0d27e41f71907cd55fc5 +B = 676dcc9713c7bc5f48f8623980dc70c8a7416771068c98d92bd9847b7e063ef2140bbb7a47e17f3adb900295a89bb0dda74361c0e281211ac727e5b1051e06373ba4eafdceb6aaddb5ec2ef2413af512e79f31a768c1918624b835dad59220e94eeb506a6840b9149e921d93cb558357f49da6d2fa20050788e6df5df5818004 +GCD = 1 + +A = -c309840459c0490ff8395dea6392fa5ca8285881d7d5d81a604345740d1c9799b687e7d0806a4ebe9b7eeec64fc248099b50af8e18852814bd9dcc74ddb5de462ecba55a9e0abc79beaeaaa1929a48b1d66dbb74f23dbfa73555a6a2c3748edb351ca2f9e2b80659bcc11b61b595265728148f7575e31cb49cb285a5e112c148 +B = -8c4b3fa57df015461a1c22c625d2233f025644da1f0a05565e4fb14e9d380597bd17fcbf18319b069afb59f4b78a7010ba6c967b7fcc164e1e88cfc0813dde04f467990ba4257378fa1ffbcc6a4388ff9d3f4925232fbed09e07ad262e419492eed3e6cf2bf6f648db9bf3548c6df88cc8ac08582abf27982fecc1f08d38e326 +GCD = 2 + +A = -2fc99b46f9ca75ce80c4e2673c8e2d1088ee75fac5b944346d92386f58bda65702bb18bc1ecf384c27c5b8af9f680977900d71191853709c71979eca9a8dee53da55472bf483aeebb4f2440fcde48721b378f94e73c94dbfad2f3f8c91df0a4b1598d348e505034e6f47940d81cd265e4fba8175ea548cce777ab6efcd784dde +B = 7765803dd955c4d3c559425ff1c3aa4201a15014eb8a5fbcd85cad326d26040d66e61e7da9f4de9a56a7dcabc3aba3b993f2c5b90d4c0bbb3c275d8807a37bca9c58aa17877614b8a086c12c0ed3d143cd9c4271864200e128b98cee6da9020979e75453bca9f57c64333df59a214f9897d5c58f327b6bfc13ba15f2611ba0f8 +GCD = 2 + +A = ed8687ab0438c4208d835b83ffbf8d55d5214b2b39d17c419b6e6d07e3798da5c01c9ebc4dcedda314437cd27168a76195e718384bff709ff51aca1821e40016f920092ad51562777c969e72932cf4014c1b25c0878909c94e775ff5653821028c9c9c64f5a538ef2dc0a0d6f004bc909ec54176b1e2e6ae5c8b3c3c2d445150 +B = bd429f988bf8ed8fa53b5832a8a168cf0d58a992d6362a8d95912714a0fb2050ae5f7356a5dc5da97603e73983ce2276b7a7af4d1e91ba4da4dbfa95ba09dfc8c990e639136312c4172692efffcf6ef5030ffc15a9bddc3ed252b21f345f9f2d74fabc424c86330f92f47afb4b8bc934bfd5fb97ca1446efb0e482afc70d9cfd +GCD = 1 + +A = a51054c371b579d89492a0857f4060779ee58fbc1869852e38338a29d1a5a392a2cbc1410167806e6c2346bed7e8ca43cb320c69cb3ad1b564a36a2dcbc7c5d9182a67a8344cabf38111953d6bd7982c570c291e602641fd05434f480323498998b3dee6ead61e0a937bd2bcc0e6b9c580f8b9dcb95a61b1d3cc28518dac1a0 +B = bd5c6d1a4c5f6b5dcac080c571518d107b67aa7ec649122f3d1e9c16db09b746167d21774a8324b8a36f6192414b74d25cd47bc86363a1aa587f1a267a50e65b538d49f668ee923c4790393c94aeb23fbdc7521a7f6b0c0910e4be6ae214800819e6c4a4ee3b3034aaa80b92d5445b6a7061a0c8b0f639077912130e2e3f05f6 +GCD = 2 + +A = -12f5509130eb7500d7a60e8a21fb7df4b83bc2c3b634ba2cc07638db779ab043b228ed91b863353b9f74533d3fa4d0846d445f078e77f441a533c2650f58c586f4e799e489d5086fdb743a56b0cf0cab246c66462a356d98ee9933fe6eeffcc27b51d1da421bb6c6f267a6d6b9a0d53bacdec37253946e31f8c2c2c05e435031 +B = -f9a1feef60b8cad7cc064391b7533fc40dc209bdf8730419635d6140a5e2104adee7f84bb56cbfe61979b2e64a7699d1556a1bb6aa794c123c41dcb4510d181e0cf0a1f6aed0a80e15f5617f9c282af0378206f970bef7f29bacea5f4f3120268d0269251e2d9537d5a1a7b395c7d6cee062fd216cc3c49c17d3d5424d9fd5d8 +GCD = 1 + +A = -713365950ca1d0c2e752f6f77b801fc79a079c360dfea91b2763f887c4a76cfa613ee36aed15c8f3c9fdc6912d840ec92616a304803da1e581621fc04ee43c247df101390388dcd36a4528a500376179b8169916d7cad20bf037450ca406f838235fcbce03986d69c857a1288b57dc1d67f6eb37c2e6ad9f0117dc1615ac8e46 +B = -851a56490fbda7a668501c9890e0ec97c26d151be6342e4aac8747749c874df1ee747a22aa763349e59a7f6421e895432f5bd054dfbfcac7a06c27ac9fa27d71a2dd9abd5a92906020e2be5ab8a055a2e7729a3e099dea080a09ace6d4610b0f4fc2bacbafc8e443bcda7b55d5f264b1459d1dce0b74039e536ddbaee59c037 +GCD = 1 + +A = -a1e5cfb7a0ca45afe7e86a4e4e6021d64ca09bf2820b87c828c0a9bf1878225716bb083abc138f6690c582c39cb1ae0811c4d3225217842d0073b35236de0980d88a4130185a822b87b6036fd7c96e554790afc92315d72533a70517a18d8efea52b86b48eccbbae2d21a418f9154d686c29d4038a42bee17b9bfe1e9fc26ec0 +B = 2573b52de96c92c9135c5836214b07fd67734315a9496221c748f2c3bd52674e8ca70ce29490a3cabf46c82bb19def3f1f244ea1f76ae29a1910251a7be89a7b13b4e0eb81548528c7e84bda9414e767dee4790f43868c54d7945103b939a13da20c0aa81651592bad64b59bbee340b668cd5c90113fc70a7dafbadf7e27fc49 +GCD = 1 + +A = 55b2b0451786487aa2d5ce08330fdbc73d45009a742546c4aaeb1a342c40eba495717cf01edc6b8bf9a5cbc74f6ec349063b39c07344627d35a8edb57e2c3fec531e2051797e3c52a3db21b65ad940d5f9015c33e03d75050f46b1b1961b9d843b936760bc5f83a26de9c7d68aeb1f0db567ff4adfe1ff8ea07caf7fdbba5daa +B = f0bdca936ce3d3b32e23a171ced7edc74dbeb98b8221f24091a50643dbdfab8da843be653b938f317ed5eeb621979e7bb78dc5b3d5e93c830cd21369459a68e3685ec1e96ca6b2d290d49f563691d749df977acb80f3d0a4958c306f8999c653c7a690cf196ff34ae52a715a74ed089de90a45530c5ac919dddd6676ec569d66 +GCD = 2 + +A = -e186af8ac9709acd36e21aedb4c927600a614f58b47fdeec0ee7902e562d99dce69714c6d9a01658dc9d75bda9cf4e5512620a2b8137c747a335022ffe925fed08ee390d3f45c963f594f49a21e235ebe8dc59ffd4e1d41c864a328b8d37b51202380186c0366f74ec008d65f11ca484901e72ca3523e526f16c77e1b9013f30 +B = 595be70c41f6d3380b2dab9181d8c0e975466fd97639dbdbe749a68515a1e4e4752010965fc5459eb0420d1e7637e6b7b5ed312df63a1c50d3d50bf39e0f1909df5628c111cf99f4612e7def00451f9099c05c008e92a0a3cda3de25cdfb8ae3c05a49b558e3f044e0eb337c4c36fdf4d4e088337fab36382333c21074cec29f +GCD = 1 + +A = -9d0a4ad5e8428bec2f6faa247074e846d00c7c442949c3cdee5ce54dceb83205eb82f69c38b46f65eed493bd392f9688ed80e4fdeedb6dd8a2a2139d4b1a61977402802762c209008acd2d3cc3291a0de0f9722f9cc28f1a66cbc02f844f9eb83ea207beeda5583e8f39b85a83cbb96eb0266c6eaf25e8b2c8625728ff53a649 +B = -6eb723b317ac30d3658b8296eaa7e3cd58f2fc9785426f5f88ba987551cca52c1ab20ed1f17a6863fa34b062515ec0bb9b124dbd224b3b6581eed8e3e202fffe16422f62dd4ec41d276e91b9b5e26057d10674087e093f05c34378bce5ed59e1fa2368fccd42b2955e54ef8bc0faa59fd0607bf7e35d39ef790e713ed507e4f0 +GCD = 1 + +A = bebf88341ae86d4b9eb386e189efe8dd88fb7a55e6b10646c3d291fba7d5823d59e7e97a6e995288c8ee8b4b127dd4e9e2e2758ec27f5f608075fdbf16e90d6547be80ce7e97e7f4efabad3475b197caee1470e1ccfcd4f98d401755fa9803aa38cc3ca67f3e2b852272beadf4cb400e9973262ec514545a193d29ea98fae3ec +B = -4f28e7bd738d006cc40c66af464351e3a353f8d8d35d7388180b3996be158ea7e5a58c898b6db659403a3486297d0e33305ca21460b5b5e5ccf1fdb8b861f85b64c5fcd95faa3fa2f964c6460451e0ddb8ff9517eafbbeee1290c9a296b14917f0d8a8dac43818cd05732340662e1298058611138f4a98d99e1cb0668576bec3 +GCD = 1 + +A = -cc8a5eee49715ca0173eccb68e5be3eacd5699b5998bb2659f08378a218f7b5e1e45cb3396733a46c231856bf127eff8fd5029c5f281da37c0af07049feba7b19029da345ad5ff0760eaf8fed5798c03a10e311e2fdf23801e8ccdaabd3481e855b2ee73460c21a6b74eb1b3a5571a70d01f24433c87039222dbd045829fe68b +B = ef908d9cb815fbe02b89154849fd829fa15bd034f46757c2d552193f5bbf75f22926f0d0460172816e52f93e3489b651d5ea146dbc16d42539294d6949c103d5bcf8d802e4d0f5ecbacba1c943e5d08e29b190d1ebd2e725ea3a797a4b7354f1f775a2c6ee3b695c1377e7da40c076a310a6531eb2c65b4de12eb4ff49a1c01 +GCD = 1 + +A = ee25da44d22b969603fb9f287e4a61d52d6cbc118462b826d5bb389a682556ed1ff15fd04e66d03a053f5dd3a1852a0e1d177b7e7abdaf511f465a517b4a1b890eee2dcac330118177e76fdac9ff7921367b9b315c2c8238b364ea190b54656224ec2af0da888739f3ffa5d9dbdd4d76f9af9722331dad933461f2f323c23d15 +B = 33759eb1d7dad9e7098668acf316a6beed01135177852cb3b1f2ad5abf5b64d1817c9119975d6bac74fa5fea20d19ac72e7d74167753e7f191c36ec7c52301a0a17d96ea499ca183a585f640ff27e76320137503400734ac397cabcecbc7850f31a31a04ff562b31ee7c7e3742d4f4650bb9ec5c324b053518ac63716bfef1d7 +GCD = 1 + +A = -e8f9574b884d9a87bbf4d5f694e7f9938a537b6dfa1816feb451b48916d6fa3bd2b1a123d61fd9f673d45b2dc71e633db4c6e8e515b4a76419bfcd5e3a9e81e56b535c78e0477856601cabc940d897bb8d718985c98bd35a4155539192909caa1c1044a154b8465b91c70c9621d0fcb8317be48b12d2f3a7c8a15ab0a40c8d81 +B = b33fc45b073853f4616469588d43f294ee43a07cd5b2f150e4f229dfa8ea403e8ca31f52558d54c61f0466d20b082cc579ed674d96749e9db484eba1658ab6b6fdc1ce61684e5a65e7e6934741d7933321336190877bb185a16216b267b2c52fd874d258c89543452f4bb922a11fbcd5dc9bc04c7e2580169975520833209c91 +GCD = 1 + +A = 691711e53ab60cb76d7af1a47f705b938667078af7a1281c4acd7b00d13caae2f7f125cee919fe6c0a682cce13dac2691722f4f3c887c9f1eb493f07c592e3b0b1ed3cb168cd5f0feaa8052466d057e299f0435167ed9df6ed963e708059bfc1f433a6b8c1a8ea8e4dac62dcd941b00cfac66636a9daa2e865a401bd76e7e208 +B = -7d7f2c632d5cb8277cac8b9cee326ba5dcf63dfd7de20c192f5577b3e40596338bdffac2295c977091b578305479cd6eb52b7382f48e4b33ab4a46fe084694c9705897bd16379c2713b6d6284f5d86c20e37a867b4528c83e0ff6cd86e66e8c40939d0ccd81520cce70446f124b977fd572487a2a5d011cacde11a70b12c75ea +GCD = 2 + +A = -131502a0f0b7daf349b54f10bd806a7638589be94462408e424793ed426fc01c9feae83121272daa70e0912be1022ca436f928d02b2de9af001332f37f76388e46167f52ee302941366d00095fd030326d5eb990de7cde35f0057ab394ff34b23f450c0ad7fa5d83de2719de8ba8f62638be4ffd1cf2800d4b462608aab2e1bf +B = -bbea62f6637917178bf29d7dce9e500d7ef9ce2c042ada06b4a48e80116ac3fd668f03b89605ed3bb3094242251bb2a0d6873eb388019165b261762cbc914c76f9b1ba8f9201246e33f8267e1c7f566758a85839d75ba37dd5689a17d988d69b25ac0ba813483b6d4797a05cc0a6b99d7446108db8d6e1f2e1c1466e3d9921eb +GCD = 1 + +A = 705512bddf2091a984dd345e2ff234dc46fbcd7e8ced866651ad5dfa5e1a4b7b035854bac002a53592f0585e72729872272c62414c5ab03c78dbfff3df957a4c042326576462cf6ca15cedd27e0611190048a7b375d6d0433d0b93580d63e969ae558a8e2591abf1c9d4808b6f4060fb382d028c526aee6a6601aefbcc0bdc02 +B = c47c3f0e969b993314fffa9f130f862bdeef386bcc1ce35bbcd1591c3d9381b8d1a635fe2cd52b6f98f384e896b5a0bd5266c3f6ddd836b0b76533eac987af5b4ba273fec63e9f11be465c69a3be84c1c66141990a7365f223f41c811b2af4a3b058fe62edc9eccf2ae8bb7ce872ac7bc010b86b0baf38130d422487ee241e95 +GCD = 1 + +A = -5f2fa7abd4e3b1f8006b2b1369cce82cfdfba1d839fbe5fda5939fdbd8645b6d64de3b4a980fd19de53df15ea268a1ec78e3e6014637da8df6c9e9bd8b06db939b26c6410c824f77d6ae5617ef70c032d06b33054abe2688114c9951616942dca81b883fc7bc626d1e8e4bb48fad5687c3c4e6211046f947ef8ed44b76d75a04 +B = abfbf22956ffecd9c657bbab651401d0510846500e9e97b77c52caf200ea2580e6d55c3152ec244a765570d32668ffd98dcdfb41dad54865307ba45bdffdcd5db4ec65ee2ca9a30e51cc138ac9557284622b926f87aaf2125fcf03acdbbe12261d33ef9ad92f5e92b0a098591227dfb99e35ae95850ae7ce071a0e727a787c3f +GCD = 1 + +A = -993cd61f974a15571945ef82a549dd58c02e10348b158742406aa9322cbc961c914c2aa3cfd1cbb204c185159110500fd43d4ed8b3889940ef70e6d0ecadba1ea0386a4b192e907c0f9f6087ce3ad179ab30fb16b7cdbfeba1b382f7417415be95560c001c18aa2a9757ec07685cea0261c635496ee83288b460f6fa8ba813d +B = -85e3f76a6ac92e52f08eb6360ef0a39be703fae04658149d05d60a8ece15b399a499d9bfd4b038f4d45bad84480b73be496d571c9ea0febfdfc82afe9ab1fc05a90eaed9fad57c9892e89b489dec6efffded496e9460ee8d93b852c2e6bbcf680affb78035ffe243f912b8dc194cd14aacf25263eaacbc36d64d9dd8c5f3bc14 +GCD = 1 + +A = -b03254fae82386a8bcbad647de09f2de0c95a12bfbe93e3004a3587dc0a83f51f9e93d2b88528e1338df06b5360fc7c78bf1c834e7411ab56f35d429afc7ce8f973dcd5fef80790ec75693c2d387e350b06571744df16b2f66c0e4303ead719a1ad2cdd212348fb3f63e3aa77a5a0cedf31248f04220a471a7f7d2a965cad144 +B = ca67e06d79442a36b7d7f7efd3cead566162d78194aa44ecc55917ec32d391c8cfc771d9c9bd4ab9527d38cfbbd630917d8ab20902297cd08ca68735738a1c731e924eb17234ae509c86fb27fedbed700b871cfd33cbe2d1d785d7aab7c623ab20e1c76d25baae3666b37952c78959ba9ac68e814651d432b9baa6db52cf51c4 +GCD = 4 + +A = -a4748b9be73d26de6329b56d377f5bed53240259cd1aafe5c0a9d671ea4752ae38e21029b2601f0709ff044c4b6b9e3889f934b3a8fb5c102833c0971dc142a9609dd3486ea56e4e1890a1067a8113985fd7512e8bc0c91251fe6b8cb50cd23d2a11d34761bcfdfa593d72406150fe62a29bb51bc32d91c94228565f8943d2d1 +B = ddb9785185ea24fd27bfa25dfc9c07452ebdf4d34523ee15fc3cdd8e7551f4a0f50d6dd671fb75c0ab96e4dc721082dc15fe9ed706c57393d6f23b53cf02d44f12201c3c2d8c3a7df033e7775d2da2a27390889f4521fcac964b510eb7b442f311144d18920fa0e9f6ff606fe2585ff5534a2d49f833dc7e09fbd99a24a6760 +GCD = 1 + +A = ea4519a8212482c2676d24336b4210f66d81b3be2b4bfb3f7ff7d0fd84c84a38e03748d6e3c41fe9c913490b101ca04be999d6841c2c191b3c47edb1a26dd848831e1fd69ed688cffec45571595ef28b7bf7ba521b6a2a3f4b31fc87d4cabe399b817bf22a8658514344d7ce01f434b43bb069ddac3e31612e7209da3e32c5ac +B = -12624f162e4fc5f59db697911e98690559cc5d75a52904f5ee2577639043387f3c67445ef56465311cf2599d86f77444d289db7ea57cb253391570bfa80e53633cacd4474d6185018abb8cd0c17572484b8c632fb6c27a5731cb4e7238d830f55a812491faa97b637257eb9967dcd70ed7c9a32d6261c916a3510655bd79e169 +GCD = 1 + +A = e3a593598d81487852037b3ea30bb6755884ec6d7ae7cdd43215bf640b6179a27c85cefb9e9554cd9cd6ee17d559e2f788e4b32fefd117072ac749ddf28bb05ae8b05b606361a21b923dfc8382de9520d7079a55b5bf7bef939d937174082520a3b5a5bc562fbcdd2aca5a31dc9582c8e18d68dadba711e043edccb5fe04f3cd +B = -729b8646b0052bde7cfcf36d5dd67130988db680b4bd1c4a3f2fd90b370a5f70fe7ce220be8cff784e9fd7d263f090aa71fb7a013b1151aaa3fb220e2e1ff6a51b3481a5954c636fa2f50fabf13d5e899662f695b996715c2e7d0be1f4d3a1759688e16dbf4b02b0c319c639b2eb8f4e3ef20531bc3ea59479bb4773ba30bb92 +GCD = 1 + +A = -29801fe4acc5548e0cae403299735510d5e50f781f7f0461ab843b1bec6db9c1efee3bbc404fbe752bc604298557c2176935b33331cf19af464a80d65824bb59750935e5a92b763ab3394d14e9730849b4d80f4d4c56c6c8f35966f99c3d569f5d4e80ff79b1c19e6b82082e3d591fa1f15a99e40df28f4b74e85ad2358a88e4 +B = bd83d1d1ba6d7fa16279e6b5664d56c5bcaa35b639c53f62818665b48bcb83abb26092881fb919ac6f45e0b1945cbb9f5794ccef9dc42368adc414554313c71d6c36e4cb4f2ddbb3891aeebc34137e8e86496ea291b7fd0886b61e3e3c2612046e0f13273a37c3fd9a6f43ce639761fcce6b827d969e34b3a842cf410903b27e +GCD = 2 + +A = 96f3100a31e2d55b588ddd4a8585babbed9cc64db576b879814354f9fd60b67847cf33684ab53973f6337f89cc324e9787ae49243487cc3bbb5572541f6cf056e02bf1d7d368720455bf614524511aec744f4007e9440acfbc117840194177c5e14950c617f8a9cc3e29ed169c75c6ae3ce57d26cb5a66cb3f0a4ca0686c6d17 +B = -82d1c719dfe6a3f707098cba96416992652580647cb0f13a07d76cd8a6774335399fb2c118ee80cc8eb1746c111843b880b7cd04bc82a36f42bb52d9f93bccd27c83a9822eab6db16e0a8c381c7dcfecf2ef8be73b135304d2c7b20ef40e0c463789e81b4cc8a7e9048b96e694d878403d6b819d6e887e5633b6b60b7494fb34 +GCD = 1 + +A = 198bb55ae906943b5d2cb9ce80eb78a98318d2f5490c7ecb71d905b477cdb28faba8c855d4f4f2726d10cf34ca7f67e196b8c69b48fef0b53b209e7d0a54cb74e7a9c860659be2fabbd2c043cd9d188e841abd4f9e342650e18fc284e6ea77cd994145b0b69e5fa2a0306937d7d3845b1300563f173f265f1f62100e6f107854 +B = -ec5710f22360c2a7272fcb5ba622f8255eb6c28cea75a7d70d70ca7b18e4f75c08a476aa8462a738d64ca89e48a7258ca6b6a8567a5b040ce3b194ba3018c855ce8bd30ddaa4012e40eca71eb3e37e92617201ec4b1d3c006a638c43c5bc50226ba367733561a50a418024534ee32aa49eea5ae6887d1663b9e81b8b516f1628 +GCD = 4 + +A = a52e8e57aaad729701cabf25e471016491ed51af3e2463685a581f0af296926ef65677eda1db9e744c8e5f6852c8a42ff75c9d0ba142b0e4443d9030047321034f861d3f34297902bb8400ec10887842d7a59f9f8030d26feb840e128f724136139eecff7f5a549b25e1693f1b1dc4ce50791c62bc064abd422d4e3ef23ce313 +B = ed05bd5ad870b997169059c301bfd5db8e24ae56489671b12bf0355fd25c3d0cf85888a96680dec5a048c1728b1c0efe1812e3644d76ddcdab04d0b82175a436dcf15229fc4f6590d3ce64c38a8d8f0934ad42b0c854da58501ff72c6930de78dc4f04544f9547cb837d08c53c60b0a10190439e74020c05889ed166cdb4c9b7 +GCD = 1 + +A = b37efa02adc9c60695cf63363717d5c9c3dee6a133a90bf037e9f9f390bd129b3a779d88c2720789b92651524766477fe442e6147c2b72d84d74dc6ef03c204cc700e4a955042cd25e174dbd1cdd08384c30c44dee77f5716ac5da92b5476b5eb1123eaf944863594171098cb78cad9f87593eff2359c1996d81a375ba94f8c1 +B = -cfd3100e357d86156cc763942399bb92fe7ae939a272c7fb1518507581e249da35affc2ad60ba12b2e4ee3d3a71c6aebb1f2ef6001c28f9d0abba7978198f0376bea0f84ec074021e1705251221ec3010fde8a11cd217cb047d9f2d9d781993a7dd2273a32b4d8fd440a0e7145d4d1eba6d1a1268431b9d7ee888698110282bf +GCD = 1 + +A = 21236de4a82e95775e0a1d89bae60aa509b8d3237e43c2fda8b21c527bf1f3cecf400601241c39ba28c48662e8da0e26c7509e7224c7499bc880c63bd9dd5c37e4277660cb480c98c6bdb4ab9d5c2aa68ee6e178824f25b555c0fb3df8bf5fa51e3f5ff7c71418d3863c5cc5000ab4ab390d20ac0e0b5124bd802125d5011081 +B = -5d14a86a082daba957cdc8fb467da35c8485790bb1d3860516daea8b0d3b21faff88e38f0e07c3a9f9cfea72ab403d87b3b9492b4d1ab6bef55c4942f9d5cd6d094f082ba6b127ebc7dd8260203129cee7a50fcb43848a9d43ca9c830bb49c1b07155db8177234b2e1bae5413fd35027207ca74c3ba70446f72ab998341468e0 +GCD = 1 + +A = 72f0e901eb0c525cd292c6715a0375902add862612e9fb274e93fa28793a35536d4ecf6c1491e3a938560775a4a85fd03f2a6d1193482c0c26db067def7c24fa4dc732e6f88191ae9786409f6b47e1891979c6057245bdf4b7bb564762cb155d144f8f9adfa9711d61853c3e6f5e99a001917284ae6311a04610be7a09a36eed +B = be109a52f49bb471dde043923a45d94ebf2d9c3f378af8efc48d7b8b13d48b20b1fcd34651ff0f47f4eddf66412ea4326b1925825badf57904389a2b0416eeb6c471ce76686dafe04b38113486a3b301a20abfb959a42375b3514f619825ee9b8c0d0958f38d6b291a149319175b84a622917463eda11da1dd575e8e8f2c7d60 +GCD = 1 + +A = 801a28b718e67bc608a06c153081eaca69dfe6a519bb83853e6c1375ad739ca6d21a7b711c8e32c78e8dd1c404abdb9d950c6f1ed8d88a4d365ecc361af194242330340e77e4ad8d551ab6c7cad7b2729496513b2415e75c33074b8af33770afa10e668fb7ff464eb588e1c08c9df3e8c9335540b967695d6ee1e77c8cc063cd +B = -c640200cf20216baf64ea4fe7e483493528e691b3fd47a0dd17de0c023493f6b2f027825e8a069a1fc8b7c938a901d1c3303b910ab6c99a70d4116d055c404844eaca03888d73456ccc116932819a4a7eb89084c4bc098e1a4f7615c859df8f8a669e8445f37100b934792d2371b206d34308b7682b63f32cfc16ce1581a83be +GCD = 3 + +A = 75d7695e510de5a18da7a4c7dde88471ee2359aa8c9e91d36ea96e53ce1efb159f387e6274c7af95301eed366d68d09cab8721fdbdc8df19e1ab98f7718dd333a04c48ca78b95fdce657bafed5571391dd9256cc7010e885538390ac1c5572eec5a97ea6f4a628601426ed8b27339eaa4e8fb0d86019405964d03fc0e90f4aff +B = 4ee18dd3b97063c0886948f0ecefe74f2a6791201be4d6ad003333c248567a37af91667f00b8b7e0d81f3a0827d17501db46e7d8805d8055caf17075c8d845d25249de8189edfb9f3a069ebd256e279479b2ed872007b54a4d61d4eb9bf256f767a742c65dcc923c776ebd8925d3e3e4b27b51ea3d3e8fcd1a49318d0dff898c +GCD = 1 + +A = -83faa4548144d45b5b288c4582a0b13dc59625aa3fc345af6a4a651fe9cd85d2e91f8ae69b8bbe59b60bb3487a52ff80e8c5c81531e9f308db158a407bbac0dcc5d777894881f91a165e831151880c46eeb7abed2af51b715495e0359775950821597c3e4f352d2968c9c392b02ee88c90f091e387000e1ab915d11a456b2aca +B = -41637b1bebda55c5c440ba24aa9661938211ba049ad644e5cbb46c12e0aadcb2ffab2c285fba5f560350de24c168d586a455012b1894e960f96c3cc914403bbd611aef7643c8d3d2dbdffe3350b77d600b1dca3895e95120076346ca1449e8b456645e1b32cb2685f96e3a35d8719e43083fd781752ad4bb0300c24557e05941 +GCD = 1 + +A = db477e9b49bc979a2a70e5ae2f90332d0133bce815d096f3f36e84d81829707ce53c1cbbb3cfb74952341dc96ffb26fc678d32daf5ea994ba9f67bad237d4f32708d1257093ec447c75bf4082ed1c6038803721f54a9e4232a52921a0173595bc9d5acd086385d2d6ddcbb99f27bd16b61adbf3f6bb19de5ecb7031632a65edf +B = -e940bf7c06c93a5003e31741e59ec68d5b62ba3f59c4e5b84b154d421efc18314836413d9de25ccba4e19252038e0fd00aabd7219f8a808ef4db48c5ebb7805e7467056f39c661d057c168a78525796c833d865425151851f3c349cb0c269c9d9cc2f4a61316b92cfd355becf21a3649e36d09f3190ecbe64564a8c61b04fd02 +GCD = 1 + +A = ecad43f54394487a8a3cd2b2d653402ecb9160f5c6a64fea3187b895657bcfc67032918c8127f827e464eb23438acee2914f5bf7a91eae71d585ed1a2f6446c113eeb0750cf2283839d6caee0c4e5f21984b3ee092a2b1a3bcd17bd3f48fea94387158041ec46ef8fdeb6b8b77c64e46649c7c13dab159ce04889d009704fc69 +B = 9792f7115c06b3effa9c09ad94bec498daff59a907ad050e4e6b0818cd54d1e7273aad7ec1a06cb902d74299c1b9155d36dcad749caab0239e1dce376469db95037fa171ea3edf088ebdd04fc4471cc460fbc102e269c16a78242030d72d2a07452fb064db088374de708dd5bf21a9f4ccffeb7d8fed526d5f84c4d94c7284d8 +GCD = 1 + +A = 8b398783e2a3b0a49f721682c15c9f7442be5cc75e2145d05e38d7a460e562d21a6ffb794a035ea055bc5b1e1b77ed09e505509164b36e36eeb6123abc9dd9a7fe2b91edb0d1e1000519dd80c6d1659fb627d9cdfcdd0cb31bde85106141babe8bd068c7102a42706d7df5fe0f03ce97b5b2c9c84017646e501a51e067655a1b +B = -d72540b308701c303074094979c08c543b9a8ebb16a56004e696280cbe4df4b69c74963bd9c6fd7bffdb12bb9fa2ae756d198d35cb8ebacce6ac50f8d77ea295d8487d73a5e1edeb26566268bdeb5b698f8572df828790617449f64f7b959357c012b570763bee27872498e9cfbfe2c26084a76afa7066df951ff5cd22c32451 +GCD = 1 + +A = aee9ec9d5348d5a3b6d50df1577aba8623718fb94b024b0723a860dc56438957b15b35f384db7dd06faff838b72e242528e2aead34559d0168449d123246fed18ff0fc7cdee43537923e5dcb7fc85c1c691f1f56216728a3e91554e40d333ad928abdd320eaafd118a77c6e8291b014870ec9e87499ab1878150a9f4619e8c84 +B = -f9cffe32a4d157ffca4897ee22f2eb9138672056eb1647955d3717cb95be322969484ed8a1b24a2bb3dd399209b28b52aa6bcfea77694fd359a929bbf61f383caa114cdc91b5abad97395cc2d4b2fce5a54562190151b1dfed7bc5e7aaacb41d8286da97dc586749db11ed044cbc9c3f075c6e919ecdaafce390882fae8cbe6a +GCD = 2 + +A = e5c203885753bf9449a409617ce544748fdcb757eb5552842715a7026d33b9e7907f5f4f8c19383bd5891d914b4ade451f70914a1dde09ee2167b1feb574f21760197fa3cb78169231e8b5a0e0ad264d4bc0216286c8bbb20dc84c0a55eda92376e941dcd29e7a06efa3f100f94ed33f35b87017b4e8f30b1378c71ff2e62b61 +B = -fb4a169aacf5aeac7549e124ed024d010cbb8c46e3e3ed002b32bd31ccf3ad826fbb2712a2139acf35fd61fecd2125290b0ccfb394e750a393fc31bee32bac7429950686923677724190f85c1a776de7791c3ae6fda17871e8ce3cb97c37a3965cdb9c67288dcdebd8a7e492d0670774a996c76e7138f3d36c431ab3d3e60a33 +GCD = 3 + +A = -9a8e71dc74d5e4a549834af4070397ef98beb1ad463d1ba204210afb048b59c885fdf4837701316746d25cfd53ee15a2be3815982d5d373901390c17f9097886c4c404bcd39702f37246175abb6dc17ce2899c0d85e0e85743d4e6b7889a4805eb80f535a695c37361371037ce88e320ca06e1fd9a204399fe70631584eab0d +B = -1d88dc050c4233b79cb0f911b3cb6b6824c565fb72ae41dfd6c16f1b57d69b95ed4ad38495f2709030ef061ee82d80364952ac72f31d2e0636d034d4bb6c62a6dbf7a5411331fa7ec3a775f24db2bd49f4ca46413a07bd7892ccd934f3ff1c56f6cea7c5d02e97317cc762e802758faab18bd4a3e57da558e35189780bcdb26e +GCD = 1 + +A = 4a2f86a19bbcb564045c7d837378c2f832c7b7f986e7aee15bcab9b5cfe434582220f1caef86ca0f8a5e89b5c1f2ac815da0dee7d33b437d04bf0bb90580e843451e2bef03018d58f58bf54d43835d61433469d75e0afbd68f04b4264229d343af329ecbc1eb9350c250dfdaeb43f85e71c95109834204499d02dac584ac628c +B = -50e606301fe9a9b04d8a753ec7d52b83e8c4987fae8a11b832edbd5ffbc7a6347a1fdd750d7a89d6232e33714936a49ac3b2dab1c117c62c0e3b3fb2ff6b8b2132d02b14bc6455c3ba223184891ad32748a480d40633694829fd4d7bff81057ee043db86f6c1553d50e54654f38ffd9d6fe31cdb51f9bedae30cca6aadec5b41 +GCD = 1 + +A = 5ea350766125f5f270534bdb2c75714c568958f9bfd2827b2f89b9fdf04b79d1185b45b2fc8e43b0c6d80a1a9d431d1013a91179da7002a4b6d226776b2ce23676cce751b9e9b0aba865a9e7bd39fa5fc947b719320377d1c80e0e32a1a65e3da72bea5a3567238f0d1806cccb1d8547f1aade9aa8f7456434a57a5c494a3253 +B = 46e84baf9e32d8605fd7f08697e98dd7e60ac6fa033964d86f6179d0e61514b44218c9e4717554260ef2e1debdc811f4bfebc495ccbdd24d3c2202b517a386b9405a5e7a083f6ea6cb138b6fde94a16563df358b7c331fa34fb7afe9303eb20034d8ed3629a09636132c8be73a16840578c2ff3c2d7a9577c6364ed28e9c26ea +GCD = 1 + +A = a85c7b2bf60a96256fd28a6b581c2f8f4b4c1c5b3ad704413cfd1c29df88932853ca91897a06107519b37bf7e24db2402602abafe09a339e6d8156059e29eccc49f6a7260007c5b57d3e7f3dd1234564f566eb153f4017b3965436d1da369babcf235e15e4153c91ca50dbe884bd5df53a06aadf9ec368b63c1afba90c6b4041 +B = -cae1434ea2c0f91e740b8783898dadc1f708fd9793d09cb3712538a105a9cfb5bfd28ef029d46c4c6aa414b76358359990e42f27b7baeadfbc3d1bd96827b4f37b574e2add0d89cd2d2435f59202e1a62f9824d33bd2008bbeee091ab6db5fdce31df9b3a343c53ccca991eb779b7266edc0d7afcbe21fe6e326ca429f0a9093 +GCD = 1 + +A = -693d485b24874479422a67968a05fb83687ec6a02264c3d62cfeb5880fbfd548a8c8d0fab6dfac3d86c68ca482fb9de3d490384150f0d0c2bc89729294dea923b99493b6823f07368b7436fe0f1a1f6ff96f6430d3ce90d72c7a09758a5c67a754627edb008457a40930ca518d3eec883e0f653097012fbee803f4a8662eaaac +B = 37250a368f1f19afca3b77a2e5e2b18c46fbd2a7c1a588b0c05044aabcd66e990d97624c41037cbd7ad94f1991465b42d208eb235d026bd4fc5510dc178000db7722437ade87d045290d2788dc856a9552efbd7abeb75baa1bccef5ac6f0a87f7e99c23e66916f39bccfd308fdb50e337124d3670e79a80a5e1404c643ad2df +GCD = 1 + +A = 86a573b4f14f768a3c20c25fc7eb01ba2a8f134a9f8e6a805609f2a554861db96d838b5c6b6dc504ee7d54e0b83884eab5d091ce9909c0ef87dc58e0534bfc2ea2fe705633f5897ab7bd601fe3d30c32ae9ba911624b392de3d32c58a1223aa5f8b63d1557e502ff1b49923bbd8bfaf4d0d0317dee7d864f05f8767a54fc12e +B = 51e1571a1bc85c3142342f22af92e5d5bf0f3ebed3ffe327fcb8932219da132c0a43a0fe1e4087bcd57abfd151d071105b714ab148019978d7abb5e31b3210c40d1278e78376fbe31f889d9337e28cdd8213ead71cc5370bffc8c87af20bdc7a223d8cd2348057eb7a3ccec0849098f16598a61d91ce4288fd9439b7bcf9b254 +GCD = 6 + +A = -14971d9f02697a0fc2b1a29690cccf5019176250c7bc1fc0d87f774d0ed9bfc0f26ba9ace3aa35999dced85797317fccd9fb4696318e7e102604ae9b739783d889d737e39d5259d319c7199e992ab32f0c59b589e934cd7656f94a14d1dad9645a1043ee331d8025029655bbbcbba076e693794dc029bc1442e66ef514b1322d +B = -8707c577d7fedaf849c12b11b06e0b88f96f85b36b3913377a5fcd070d1ee6b2ccd384ec86915a27ba802fdf56a0c3eb7602682de9635cbba3eef78b36ae6f6ceb1fce725ea2de8ff7f8f8b17318476e3d58617832f9b32fb70bde3bbdcc121de817daa4c8edec0569c75fa0b5129c09b7dc17de24fc1f53f8dbd18750c13e75 +GCD = 1 + +A = 34c031d312e3b7a0d29e2dc92441221e126dcdb9327b302f6f3ea04e9a3220a9fdb3d0f99ef460976bb5e7f76ce79cf823bbfcaf21659dbe0cd7b0fdd4d0be26491e0ac90830d8e5386be073b2d7a7405ef61edc0eee87da33ea5818fb875ecc63b6a611a07ccabd79e06b19e7a5498bb4ff6e02fb1d522f3ce608bd98e557b +B = 7e6dfb0c4369314b4f74c2a8de20efcfe3076961b6de0ec0151edfe9c3ff56b25689768798ea745f2f5d02d3d3ce0ba995c6e641d0cd3c0f249fc90db4fba2182160d4e53dd3718534da3d4b33f96ba4ed3c3c318c678fd14d9f57b912e36d520389083b285d62254ff55a0e378bc9ad7598ec370dae040c01efdef2c46437f4 +GCD = 1 + +A = -bf225604f96c61c230809bb145212311be18072cb03dac10aceb6f39d43567a894861d78b318d3590390f888c9f041bd48d3040d751d45903e9fdcc2755a4fbe07bd9e48603ee6048f6481542ea857b74c93ed6af56e939c5d20f6d6df80d9f3f194a8532e9e109f7a940ca98b9f37612966491e96c221bb43002246194e4070 +B = 7bd29fc8d3c22f7ae8675ddf42a2b1bc35172cc81e8dbbbbd390b24fe65e8259a4c3b0c738368395bc19821a7c79ebb560a5150a8ddab8717ff1f6d964b0542ce2d19dd2c00d5e81f4fcbc95f61a1a9a6b1d8cf06b4e1b287ebf5319a775e4bf8462da0376cf634573cad7f0efa4f8694614aeac8cef5b0166cca75ce7d76b5d +GCD = 1 + +A = 92f350832dad95c3c7711dd212bf1bfb0486c6747ac659f754291c0839e7d26d31041c592f6f505b1d8a46469aa48c1b03eb223669211b58b226900915be39e001cf032ede5684093e965a90a34dd23a85ed05e5392d3e106090b7259de9105e1f076fd927bdd9ac6b8e385ccd57e7182f41e4ec0f79e32234511172d4b300fe +B = b8a602cfe062667fe5b51b6fd8b9f4a658f19f25d3d5f64b87be86bd1c6ed5b2b74dd92dceb9736348395676eb3cf1df0cf7e4e29b50a5d3d09cf424ab88d79a43adeafbfc845319f8e3297a90ef480139597c688f7a276ff4aa3afb57b0339ff57a27e597fe8ae7f6cc2570d7fca4e20a1a2272a8fb15ea097050c9d9842dd3 +GCD = 5 + +A = 5f230a43ec4b8da17aa115a3e271faedfaf0d79632a8fc6f67a9323711be7f50186fe6c5c0f8d87ad4669a13c54d4756bc5f95d2152e263131c9240708f37a58af890dffcf4010ee09cdfdb0498489a15e80bb50647949751c7c1de1da78e0d59e7202661c64fd075d7e2d720636cd77360c7db00b9fb2fd4a1ed1a46212b7f9 +B = 52d63ac9ba7981032059ef2fa4b3e877ccb00d18abbf057a6c8b4b018fe74acf6bf21e9b5272300e13ee8240c326d358b07a98524b764c1dd8b0016eb6274283337f9e98f66dde6ca0e708d9ddacfbb7a71da2a57da0785945c9560467b4d43f00c36e1519fd990245bcf6c941c4a594798d981552c501c07a1aad47d772e2db +GCD = 1 + +A = 5ba80444d4c01405a7735fbf1d2c24f0cd9711098086edf21affe08bbc24d852e38d701ff99bfa2851cafbc12f797082749fa648bad505a0a252cafc073c79962290795566b09af21a79189f9592a319f41da1d51238a3e3cc189153b1d787c77b43ac33136357984add3b1d80ef532e355cdc7209659ecb0b06dff5eb86e364 +B = 767fd7b87418e986b41fd90005017baada3706400dcfbb8ca98a441ae912c083871fb6df4acd7f366c7f6ed2ec0acb893d3e1f10b05075e710d3fad5776bc5eaf9bea5ed081c8443ff4cd94c500e1b1cb7cc08d0330b1230388f09bfaa0f932099e9415531b1dfaa1ecec78a3c12cbb348457e8b35f7a87d299e716869a8c11c +GCD = 4 + +A = -65c31f8fe18d57923f4aef6d8b70b9494c9a6449a5367572f85023682260e027aff2a2f70c3bd476874c2a40d7a7d70fb94a6f44c42a4985b35decfb430f012795713a7d652c4d56defc04892bd07d06bf4a02734a6789c9773f18105328d43c3cd78600697547d406be89c3a9506ca93299bf036aa144fad0e7c42925e019a5 +B = -b7c5412a323b279e8a2ac399dc5ff3ff11fc538dabc2deb8078b6272dc85027911852e14438d00a3fbec5543e31d16a24edb724cc73a5fae23c473ea21848733afda433affed5c899f4e7a3651c03940c14fd95cd3dd4d7bb64526ee8b78a92f0548d0b1ee2c1961208ef55de4be67d09c1dc5c76a9911a70c675db974a7b5ba +GCD = 1 + +A = b6c7d05d7c95135204634b7fd903b4de3aaf9a05efb3d271804b7f22f4ad07606c2576d0c5c7384b33d976e29783fd8fa87adf51ee9a0b93565f4a0600bb9390d2544dabb3ca8b228cb67abb2368b27bce4d25161a6c9c7dcb59a029b14e094fef1f7cee8582298434dbe6319ceaeeb2f5926febffc998f34e43e6378698f845 +B = d4ad3a0f85f56b26b26e1f7db8a89fab3f019e9664216c8deb9681dc5b189c73b0661df2bd19560055b88cc2a69e5154f947765017254c4048181aa4fd0cfa74241b75838ea3c90596331ee2fd9ac61b30f3f09e1927db5b62345010576af996aea0f598d39917ed02dd6d2d05b941b53f179f598fc9589114ed2aabd9622abb +GCD = 1 + +A = 51812a5c838f7c6f4411d4b684727c2474293bf59caa1ca9cfddd5702f71e90583ea256f06a6008c320b41913846781e9b57ed6e9f5d5b70291b3c73905436a3a298b68fe121673071b40709a37783e1c0cf73d0022ccef9135b04d7fc3d9cc896a35210400dc92fc1c7a8e027c4cc035d362f5164ac26ebe0449dd1f400e787 +B = -91737ba876bf8400cdbe7e2c7d154f3b7d5345774aa8b6aa91b00155ba8c058077a25699c3218545b12f345d6724ea3d05c03bc991f3e03df863a99339c6a172497572fda47272fce472ca8b324cf2254fbb249c5913e3eafb10bb567e117383ebc9371bcd4e4323531ff66272d5edc6acd7d38456663f14623f577698df6a38 +GCD = 1 + +A = b4456585f607e3b73b373099cf1ec781c1dbac06ca40d4cfe08ef102d6f942e7c366016b97b23596dabc11bc636af4ed20ac7988ef48b134ec5bcacc4009214858645869261a5be606e114bec229fb66b972fd68ec5a00ccaa588ccd39b6998af946189ca92bde80ddb2684a7e6303c02e19ab10fa5d7b9f9f141cefc12e7cdc +B = -9871ea620b9ce7df7743c468fc76993ffb86e91add7e127d59eb55d7650b2c2e4fbb7106c7240dd5f063171c58bdcd76d238998f231835c7f1baa6c10617c0e7f7b695d2ca33e5ad5d73a466306ffc71b07e46813bf4ebfc336b9d934cbc35483a0e57c790be33ec5633e7732c8ff0232ca9a8523720eaab653419550e600809 +GCD = 1 + +A = 665a6070fe3af81556cbb9ddc9e2d9a3c2957ea3471c778ec9b0da76614fc8f95313526c304e2b5cdae7cf040920ec10799f04851278810751202c407166dfd728b2aae11c6b15765fec0763da8d7e00f92a91bbd3c0ab26235766f40bdb4c748a664a7dd7b0e274e5a7db6d885c8cd4e2d5f473fad31747cb25f2bc9546fbce +B = da58e2cf0180c0f44be6c165dd10bacff709932410250e6c9b159303bf6738f718e874824cb6cbc1b721567b2b66f63cb4735dd6643896b210e626217e53a130e1446f4b3ab368eaa233292a8e1ec67dc5706bdb77a6288cf68b309cd15fb71936e0eafd4bba427fe6c2372d9c66414e61e42841b8d18918c59955a45244538e +GCD = 2 + +A = ba153380652a5100bd67fe0ffebca423c2372d2acc511ef2b2fa6724baf108a08cdbcf5495b5a1a2c8932bdae6dac6587c6617ca1db43b1dfbe557cd341d51293cb73cf3ec8f8bf3ec4cfb84caafd29c169a4e8222bc1734c7f47868ddcb29627fa5d4f06c20b995a411c73b72891699d666c0e9cddda8228de1b8ead951a3f7 +B = -99c7bc61921a2dc8fb9cf3bca8b359f64c0f2403ac55e12f59693347b75f37fdfa5635909f60439ec05a72dd08372ff44be2fc9b9d67da359011eee2a8aa46cd953b350b736a6f5431510f96a992e717c8d43288c490af0f222ca8f98ee25bb5be58a7472c19cb018893d22aad041b628c536eedba84be36a965d1a16044706e +GCD = 5 + +A = -aee4a3cf9c778b8461146ff2ca1d6e828e5b2027e3a0bfcbc733106f0c6c8c3bf6e9784e5b799d7bb0578750ab304460d6efe7b64e0cc9c9acacbc6a799b40b738d7da1d93c0f018187a3b55522fcb9b00131cce30e332e20e1ecfa6fe54e45720cca00b41d71495f8cf42e9c2a83ee343d9c2c0bb89ef0f185921d40908c5e6 +B = -7e75c75d4f2eea9010dc6effb6f9f2f533cb3590c0c499e21659fe33c6aa6e796065592c5347ccb84eb58ffedfe80a444a381a7de4e077b9b66eb875e6e8e87fb9dc60192bda856c6daae0ee241eb399a1ac46c5d0b8b3bb04952ffdf3f95805080f407d732a8d51f7dcadcb57c456799d02de2232904f1d9661e2a6918e3e6b +GCD = 1 + +A = -b1f8d90061550438c0f0c45d0a892754877472a016d1e63948f934bc48d95a0f2dbdb9401b5fa4a9a4d9c0cbfbd87a72033b81ffc4589401eb49b7e84b6b87e2278a267ad809e8655ac90bf0300b03259d7211cbb2c9a8cc93f01c88a15d950573ce5604db103d8c047a3f4e3592cb859daffbbc845579cc66e71df6a537c713 +B = -eaaf6b7f8c144e671b1c4b9b41b672c77a44dbdacfc17ada74fe2b9c119776765a5919fd74dce0ca105784e00be181bfd70177ad893eccf7228f7cb9673bcf0efe23f72c204c4c2870847a9d0cf4c0f7bc19b43caf58946fc45d4454877ce456aab4258e5e899c352f871e8620a30eb150fdbb286e1c189c0289f49cde003ad6 +GCD = 1 + +A = b3a6883c444a7c53b096414d08db71b228a11b5ce2b4e6caf4b36f36f0ee707b8a3aee2124c1608583c22d56c10fd01d144beb2773c055bbaf73c5f9c28dd1c46561d0358370ce7921be4dfa9ef64e84260595692502a6b9cc472c2535f8a4a8adc79de5c40b23fd0bedbd0f00a52665cccba215079dadb980ec171d13cac575 +B = -2348df8cc06997a5577098d17a2ff610b75f18476e1e4920ce46f500a275bd0c1853cc920eaf6362ea18c6beb632589032897bcadba0140f9379339e21d2a4d0c05e29e453e3c1b1a0857c638bc37596f4b299d30afdb821b74c66d3f6c28c7d3406ed25df52cf62d36146d8f85be1f7b59ea313d292f3871d7bd1af6be9ee58 +GCD = 1 + +A = -6d10b44903090e41284205d3c2092351553adb11988ca5a9de89b1e582e5e368ea51ccbbb3bd92c9ef7d305ae1ade3033e9aac661f758354043592c9fc434334f3e26984e13f3e8afa39b3db8de20eaed2a1b85719363b497c453ebd2c35ab09244aa62eee6a417600e32dea74418ee55bb82fbbdbed647d641f942a85589d04 +B = -a0c68e483e6f9abccb8c2d2bab7fe95ff010ae6c1bf3d99daaaa7e25e540addf66fc9d43811452584103e6ff6f75af2560d0242d179fefabb9bd5d795000764f9e7d151b0fa4a8f7593a6c2439eae8cb09cc0c9cf0d6802c35a39501f21c7edd697ebd2d4d640857631a4bb6b08ff888865fcbf388a4d68c71aaf95420944a81 +GCD = 1 + +A = -8581ca79838842f7b7be22c95f38772e520b4fed76e967d7c522ccd297ba8e26c05e3528c2595e8dac023dbe83a7dbcd08e49346acb8c261ff897fab72fa0c782e7598511ab9c220ac709fe4f05525ffa2db3f13c20daec20de7b49318b68a1bf1f0dc7a107f2abf7eea90a0d87f35f119437b13ce64949f2ed36693acf34d76 +B = -70250f2a5a5ec428fb5b25312187afa01348a3447395a13ecf4227a07265797a31088b086942df4a73d5f929020e8549cc7a597db2227d7f6cfa8a4df6efb7edc11f754336d86b04c074d43321ff56f82578f0d1787d4a16aeb5719a85e248a40b332708018639e3bbe8116f4a5e46fdc66207a28b6b5d8033fa1b92a09fdc77 +GCD = 3 + +A = -c5f1f2c251d601b350066c4c8a0bcf797c0cf2aa5a6d5c943b3f2709e1da155925ea735009a95a0a97e897522a830ddfd183db2018159c12659cdcf08c988605e2c74e06d5b726099d09f83757f94d35d04f38c19b02842f571178a065c96eb00696c3914335886f6daadb9348e7933daa7a88315445ac632682a63bad183925 +B = -300adf27394df6575ad2b0986ff6f87f442ef30c8c451569687c0b0705d89ebdeb9c6cc8b6935874ced54f9055fd4b137e94ca8b2f09c42d17e5ff60683e5d27e61dc75fc9f4bf4b49dad7ca721fb2bef769f58a4ff8d79072e2ed1f410da0d384f5203493729ba8f8af17deb7ad99eaeda9594aaf805c1c6e0323b555484832 +GCD = 3 + +A = 3e4c6ad83c4002619fa76d7912b6423f9808d24c6ec9cb5fb262db790b6dd9b79ef87a9ab2a349a0416210ff951548415761fd181a0c95fd903edf400edfa34d5832b2a33e4769e59bf9d67976175489ff547179ffc4be5206e7544954f6a83df03decfb37a36e2e352af1ca4607a9815489332c2dc035e0c2fe3978777797cf +B = 1fc32d6d0134e17fc482320c1b82fdeed06a0d4b8fc97352f47f456f6c7907793ac9cbd71e648d0e8a952e98a41eab71b3a8867151e0bdfd25685ca001b4d3bc9f1d0af481d43fdcfd0f8b4257ce7bb7eca20cddf59fae7884fd901f563a68a2777a9cfe78155844c927807e62df60e401a8652a617686d593f62d24ea7e2348 +GCD = 1 + +A = -92eb4b85ecfb5e2a77871124a75f48812b9a26caa08975e4459dbadc383c445270335154270fac96b6137dbd09716b0c304c5b2abe16f744951e991d04b123117c05321522f602646f098f4e6d3cf9872cfbd1402859414d208af5a576f8278019b2d521b283e7c984048fd851ae34e62f8cb6037675120478d35e1bcbd6853a +B = 52b5242829c14ab42bf8b8e1bbd855d55d41524832bf3937c91773885d853fc4b9f8823e411b481875d5766894e87e186caf17577eeeb89beb9e77a6ead91e383e1f350d278c80e77a880e232ba5d803f192bd9505ba99dae7f659cf5757dc81bc2d5e682c51f6e77426c3b7dcff0f02e03ccc2a15807a781a1342cb4efd6c56 +GCD = 2 + +A = 7203c851fbbbed75db6773e2f69844a15f501c53522559c6260c4b3f6e2d0ca205d275f9bd976600b19c2dcecf06599ba3885a5f24589b00429a80ca3da4cee54326f23101a3e2eeb62956a3009251123ec2a6fdab76d59d7b58dac7d90bee767eab9a19d0bbe1229ca8c5980da04709293b26fcb06a0b3c26ef1c318a2e1f10 +B = -a3871296b72041485eb2967a3ee023c4430ee4e999d7365a804ee12e936bdb29a5a9595fe83b87cc9d30492462758c065b329d0bcd56708295baf12f2556f6bc6a5e57f1347131113f52d82936fe422ecaf318f9c4ed5e8c17dc55aed006810807ad3d4006dc0d5958aaeae0ce6a7062ee28f72623cd12d5b7f505249c6a7644 +GCD = 4 + +A = -5d15906368a2f08ead6d7ed2c4f6d191dc2c02dcac4f313e601c606d5e7aa3df20dcf3914ba12b6f9f19f8237dd5f9a34dbd0931dcbbd08a87eda2c18f97bb2c9ed7662c62185710c009585b94a603434707ac135e8e85500da0d61979022a9d5f38a38ea9b13a6be9c299cba090953a7260640716d75494a988819ca71ff9b5 +B = d902c554832452469dace6f1715120a439f5d100c0500c9fe3b3f13c431efc5883f60e08ab1b0536f979eaa25fa19536be14c61fd36d45d74aae61f9fcb71fab5ee72c2bd1cf21958733ef57fe7eac6d6eaf2fab19894dc957292207e1a7c82019dcf97091423ff02f097eeabb7da63718f8df88a03c8b2b6d419434cf87243d +GCD = 1 + +A = -6961aded1779f616b02dac22e40adf870e263934006423ad5145fd0e6151cb55d60b84a0fe45c2f1cde563f0c048fcf01e45b596abf62242c4f2ba96a5b9dfbadd0a1322f7455abab6aaa32f148663acf446022bcaa8212ece70da31a65981555a16000eb5170467e9ceafe61181162cc22536512da836f5364c47df1c73257c +B = 7845d10dc62a825a7025e58211fd99363fd508ded7df7b42aaf171d8422d685928673210ef91239ea0c93f7a120b6c4442daac151260fd1fe6bc53bdadfa05d6e04fd79996dc13f06a376b65d3766a051599d94c3f274564d4e239a3143814b250cf559e7e7de3229030941bfaaad55ccd9678e1d1bf919e05f75ac011139746 +GCD = 2 + +A = cc5c02d7a747bb018f8dea32912bd2d4e7f6391336d83590630ee37f25fe1d87ef748c620c0b547ff705e44c0217879072157ca0521992fa0e6a787acae451d7ad61c019e2b179ef75ffe1032005fbcdef531173c68dc67bb1eeaba2f478e688559fd6e8356fd8fe3a1085ac2490a377986e1882cb2d2cf988cd8a82b4abd5ae +B = 46fbd5801b4b0c7af7d6be7a3c559cee008b40100a21fc4e8a5c8352e10de67efb142579cd81dc5118c02739fe83f1f352c8a44d2d11b0f7bb74a128dc9d4a894f6500e3a017b372d71ca871652ab30ddb08aa56034b1c7198f8fa9d30d2530d33ee2d4eaff42d769c3f0b19e5dd428eab536b67c7dea4f649f3d43b3da78288 +GCD = 2 + +A = 2a40d3727a3c1aa736dd976ce7b1fee07fe5bf1be3c9e9e306ce26653bae7db2b4be2497f715372769292af6ce6640e51dc2a34206d4600ae9dc27910a95cb9844f9fa2b356e6528f6ef76df5e99cd0e40bb45dca29f35f8f2289a63f440504ce55151bf25676ca3345b4f27ee680e43b271457a0217453c482d9a77459581e6 +B = ed7feb69ee618be3e273f25b03a6b109c0db8858d4a637811b9e3b626e567cad6ccef5123fb6502d5e83c3009c950e54228332fdce8c28c4cca6b5029effc948299efa8e8479cf8f7c2d30d07624fee7cd2eeeff102adfb98b37b2850c87b005020118b8ddbb1bc9e239dd51f7ba9330f6b8fc9630d298af8e2adf6738ab1f5f +GCD = 1 + +A = d64f98cb4716d4af14d68df3b1e2da6a7eb3ba79dddbb1fabe2fb24c1588e281366b9e90cdd8d7e9a945897b717cf92cc68414b3a955f2e8903c4b7122d26e82e076f23acfd2da0b58e6d00a925a510bb69dbf25ce894ea43e5c05983e31e9f428029036322327f82c3c41e8542e2e904f5c4d9a4180c7144b3468b62101814 +B = 32dc426b9914fa0756e86890118f221ab42f1fc031a6171ab52116f49de8c9b0c38c42685f12e4d61c1ef1e200f1de416db8a08ab2868fbe87bf8cd6a04aaf6a4bc91f2adaa9f82d503ddb38a429b58c83c751142386e018fb4179613d1d27a6a794c501ac5b61ce947a130f5400a7410b0d41f822559e0d114fee6813d91906 +GCD = 2 + +A = 9369bad19bdd480212e01884222a63a171a3558e9f98dce2854f2355a26b052234be13c69a2417e925c418a0ad43b345f6f87a149b830dcc425bfba82b2e9a6d174b8a385fba73f5e584b5dd2c3555660e6afd99735110dc97d40c6bfeebe08c1772f587fb76dff0c711f12d95ffa93fdaf1b3a7db7841d8c444b1ed62e3f225 +B = -cdac35ddf16d4b46f811c5555be1ab672055e1a6f00df8b4886fabf1ce75d8aea23241248c6a3dc51357ba3377539ffeed520d5077e1b521c01c9c2495f937b29a6c482c59f94a95de47bbe7396086cbe1e3a98902546e1397836a89311541421cc5b85ed3ea89d876f40d4ac7699e4fc0a7015dc759c6c28bdddc6fba059dc6 +GCD = 1 + +A = -2756a26dc7b9ecb12cc85a38b34ac41f5cf9f2d7d6c824178fd6d45f7b81123072669e2387e2e4402090a49772f124bc4ba3d3f0e204f4a388f3d6ac093e615ddf664fbcddfba4966c59cbdb6d906d9d981a303c7f65c78ff08aac4e04749375d39b65fd2d8267dc5751a789e3c70008b5df5b4f058cc01295ea214b6c582bf3 +B = -bd6c01cdec77975ca37b6080172e9e4c6395b37c7fa0047b9399316a6298d3e33123f92651f8c551512bd3a558d9781c57dced91b5e6c11f4260412f19efb36027b77c6dd028258b4b263709f7298d489147375119d561db6e9ef1c016a58b44c4aaf12d4af762aca4915af8aedd436f24c079e0274415a03d5e33c7d774cebc +GCD = 1 + +A = b80cc8f87f1bc1b69fadf81525fea5b3bccc081268315a34d78fb981e7b3bbbd4a0b4a2ce1ef3db4456293a0e137a5f0f9ae3be99d8b52b176cb02f99ad6594bc57744975986a8f80b7f0c3a677ec989f339ef91084e08a325b9a06bf5853db35f58d29a4dd2887ab6878f1408f6d7ace796281ef38bf903c6265b0777c0d9bd +B = 2a1432d8bf1883530795fba19041d1d39406479428b21ccb77fb0efd003ad80ca4fa6a350cfd9eb74441bf00af7eb10ac478cdf42c86240694b927d17442289d9593dd863ef576ae27f74289849d4346f2282b39a984540d632403bde1e33defde15b07104ec3bd1a4d007cc8b6fd6d704c1b673a950589ff73cef702121eb5c +GCD = 3 + +A = -8113d81837c3674966857c786a2e3f814d83cd0e04a7d6f715d54855186907ff59b6b00c870c20cd68da2ac0b91be45c979e83764c5a27bddbdfa903336cffb969dfa11b6ef7ee2e8ac64f7748f2e9e51e5f33280934b25015db1b3ab951e963c32ca8f1478a7cbf74cc94903ff9a19ffc01a64b7455e4c90d2debaa2da67fa7 +B = c4f442ba13097a76657a027f26f4699ec1dcf38fdb97e48464252f617b60133d4fc93f916efbc0af49f209591379f478fe64d30b092a5b0f67897513ea014934e55d8bb9ecb781252f624ff18cc334efa9354bdc0492584c1aa93dda5f271965805803beea5c55417d46f434dee349fa229a420d7d96571cb3b86f97959a1aa4 +GCD = 1 + +A = -6b671b78377121922223ccd40b7befeb5b9787081ab0a0e1e3d759a8d7022eb3d4968384db22adeee8375f6deeedbf8f3616458fd6741c2689ad92d5354249cbfcb2a6c2c397c78bd4283cb16cf63837b6c018c883903160e74d0f3700ec6fbad6a1deb3ef9edb3d1a5592081261579dcd3991c4fae6c20ae3606f441a6b5888 +B = 9e7b237d74ddbf157695cd632ab52b06bc23ae8474d973f18bb09377058aaba06de37bc2121d02d1c00c56b366dc5a1767ced4013a90c1ec1f56f93e1ca58bd7da4fb52a83f68c39efe8518558265fa94d90c2c7585b46b7210b750e4f4faf8009ee8f94f6e96e67e958a710f8272532059c115130eb7633617feee090986b91 +GCD = 1 + +A = -21a743ce921b7a2e55ee8d4f26f6f6812aed3a76ad58394ae79cad21737e8585162fe93daad7c69bd1ea316c8dcea617f45f50947477e249b7c3172730921cb596c36a3ce790d1cf0adec21e54eb29a4c4d2e0a5dead6e2b573ef73d34fe1e3be1cabd892b9083e48bfc7d0db4230dc94e4180501ab00da11973c6d48805a349 +B = -b20bd0f1867813bfcb4858c7582eb32381a777fd3d1ceda4d96ae894deefd5cd81361cafa2d5f0f1f53b36df0beeca44feff9cc08f37dc78e2c62eb4a9fdd73e499f6e2b4cf7f46a749079f9eb724526046c74f7b936b3e3a584cb31b6d4adf7e7b48ed63c9a9bb525e3cd0be0b3f6e547048397df724faa8f3f6e78662f6a55 +GCD = 1 + +A = eb1295c8474521287e78b6121f44e25fc59e015d3501979310065035ae42b898db12a8aaf9b4b7ad55eaa9874b98f557e74a6939d1cc1e754be4ca8513b2a411259016522adfa0cc1ae5149dc12ed6749092fbb464e1a3d6a0ca7bc288d37cfdca179ec19409016d8b3b25fd0fbb1a17e05d8d17785ca53ce6cdf047da22b0f2 +B = afc9494b1fa096724b5c66ecc605a13d2df49cac73ca1cca57e13b74b481cab90488c36f89dd7f89062236113ed66a82821b223fcedc7b8e2532b0d54b02f84aae7bc10b51df1b3acad87caae0d2d3f15978e6e5318e829b4066b66fa21580a9b2e1c6009f37fb648ebd399a8f3a1bf310331f8a71714d226ecfd43bff90bda3 +GCD = 31 + +A = 1f5915f9f6c6665a2fe99d6981b1ed6895b97a2a5ae35fe9e0813e8904cfcf5ca80d0a5453457bb019c41af3f89ddca41ac9c90945745de0b5156d8c7c8a74c3b3d60fba6cda67529a733b89923c52c4eb249e2a8a3c8035d24b3ee1b4b34a5ef9a54d5557a61f3282d5ff4c858f7c82db57aeec8895895e0759b8cc4501bce7 +B = 97d1c439de6673591ac769b53d92cffd0e6f25c1b6033071cd9a7cd5e73540d1897008d9814d276502c68367797fc0227ad23863fb013bb791d411b69e84e47b57f4941069af08ef0127cd0ccd7eef32e571138207c4f4f885b8c73004ee3773f908d4a9cb514f045cdb1b19f2737b32c9c11cd786fc387ab8eee6db59f5accd +GCD = 1 + +A = -d0768522dfdb156d91a654206a0b8650e5e7e67917ae31dad09972f99a7702f8e069ec088ead679076ad8f71444b2a4260aa183dedb1d1cfa36c716dd55a44ff0c88a87af218591a7385a7da8162602f410d76060c10e0895cdc48fbde074b9a554d74c4cf80e1990b0fa6326e30bee460ad34ea707fc4a5bb4837d57919242f +B = -8e4cb4a9b6e16c9bb86a7a75f70a1e4fb8e9107079610d2ae47e7a9aa685a502789cda0f4be89bd247bdca0aa132d662891cec443c69ecdcbb3fba09946f45f08f453480779fc98b024b6cbbb0bf2c3b0b14b928774610c0ef47b4a308c9b47edcc55b59a3cc0a519e43472e8377247e79795a8cd554b170fd81e774333a04fc +GCD = 1 + +A = -32e14aa48faa6b475c46b05f6d6c7479979c577ccd50861ee17a24cce662f99e8e2e5250f50dde5cb19a15c7dc53161fcc64feb68881f45f5a0d8253cad6688fb26f1417b309941c21e2e344aafbe727ce3288cfada655f186fd2866ae9f43ce835aa340aa943bd53fc34241287dc2046efc880767de5d6488ec2957542e66b +B = -427f2a22ceb8f2237f7ce0b2084b9792dc94ade6e50793d3329bb47d92acc9e2fd614c40fbff3f01ab5696486470450f11aecd1bd0bb0132f611e636e95621ebcc1110ddc03e506c6b6b0ebd3c707a162651606b393877340a767357e0da6d2e49432eba3ec8f844d659c944c042d0b943132d7d63abe7ed5fe6d820be513cd9 +GCD = 1 + +A = be060325b38818c4b936b38c85e6ed8e9da685524f590160d1b4c12467aec4d43ba1b5d01802fa84c99fc8500934794854a8adb3b3b905741075710b1cd2850e80043ebd4a4f8db732a94dfc946f519c8cf60df393ade40a351912cfd14aae2fb2c9587799aaf2c125049e6f52544cb8adc4dd8776f845d4928d8f20435dbca +B = 71d7e2811660227968f27035dbf3c8462f7dcb5be64a124d4e87bb83b4420da9a931f7c65ba2031462396489d1e279f2e13859f32e5d98c55aef68380cac681cdc93c041a9e0b4f9c5c12f98a271dbe8a9bfe7ff8bd9138c67c04887a2ed8bc5bdf9746fa5af722e5036f70219336c74c9c023f5f8400d87b7caf02f33b3f680 +GCD = 2 + +A = a52a4b4011b009accbd85bf9fe12626fe5da30103b8708ae06707675c7a5ef423c5916c53e346d12c622b039cbf043c0ed5a56a8641890b44ad814d7c38a0903994947ba574756b52301620438068b90a88f57b411108a20759347602f9371089025d5ece4cd0f24314f230d661cb32a6e2826bd332372a9a7a6c871512901c2 +B = -281b72cfc24a8c19d9978add4a2ccc09877f25353337eefb01f02e810291a47472aa84878d236e6f5d8d1327438f4126ea2c78de9988c9c43dc062f79512925bc58035ea9a44550b1149e2cd18d3670979c2f5a97a993baf87bfc97af96b1139341e129be53bd340452e0cf02f478ca99f82f99e8dc15b9be54867fb698a629e +GCD = 6 + +A = 43cfb41db09dc5e81be7236c6dc542735237345fda5988c2cafdf5df170c68c7f3e5601cfd5f3517f5d13cb5eb5b901289fd17148921a725561be723fabb36437c0ab90683fd7d4080f9bdab6e0613f8fb70d0f8044ed2b33e3cd6e3bd27bbda1d665b740664fd6dcc00cd6e4e4519102042ac1eb4452aca5c5fc509b28ab229 +B = -84eec64003a14784c16e4c77a98702674bad1f7d64ba89f62909a2b599d4e6a2d8d4464702ef77e294ec35c07d167e612a9f9591bf8199814b21081c2a8d2d71bbd2ec4f4a4f906d38fc93e4bc6a64240f08ef0f0d098fdb9a40a3e5c5be440dcce2c0d68a01683b162c6556f65a387b1deb058309d02ebea2deca0f129d61f9 +GCD = 1 + +A = -d4c2de2f8db5a71b8ad653fbed51d0978df81f9a21e39f8f4e1b405100cc4fc7d071b94d827ea7a06ff3b557c4810acf003fb2f4354005f055bb481100a30d2e738591218a456c61e9a552977c7cbbdc08e418143ceecc15c35858f8bf5231e76d63653419f79b0a7d7cc7d858b373179cf2dc72205f4d294116709130c62958 +B = 96285e10e53fc744a21f6db9e76446cad0cb24d7053f8fbd5cdb056a3890cdb1120b2a86da75bc2706258d23347955bd3765f34b4f1a16d55e574a7631045604b967e8dd671b7e010207f766ee82773cc59e5ea295c73030fd6a7c5e5a34d794b454419017ce1e790758e3f16a122085b4060def65e04e4d9a1c97c7098f4980 +GCD = 8 + +A = 5a600c3f7e973e7979039b6c6bf1a48cdd6b77744895a3298ff108c5a2664e3a34c92b9dfa628a938b55afa9b61b99a9655d5c0f022c41dc9fe1a4af778cabf553a410b3d6869b2cb5b05cd3c49628135fa9872269a7b5d95617392f4ee5d0e768c0a594af2fc64a8fd367d73d4164c8e923a69610c540175f71657e59f1ea50 +B = 61af413b7ebf7f5402ef6161299551359a17ac11b5880577c6de5ec24e12468d04b1de245670ccdf81f4e6fb7d89dd6a64a48421a0853bd2ca298d4da987b19ebe9c0cbfd4debbfd0b67373018147462beed300a8c69f4832213e393c4e5b56f9a6c643fe757fb61bafac999319336f5eeb0dc72b64084fea8ad00a6a318ac11 +GCD = 1 + +A = -986e5a6afa9b547527fd5a9a0e8146460294e39e0f8820e5f6e9a004fa36a534e9bd7b0989e394e6ce990bd0b11a797548c880126cbb76e967a959b28211a8d91af1c3127a6e7c30e1b8bf35b3a510b9b59ca60ce434d751bdaf3072c34cabc211bff4f49d5ba5a97d927a8c641bc2dc5f69bf6972fd843a9b28eeb1f33c48e +B = -60aa14969ca4971c9fbbe71aa4724e3def8c8359f45ff80d9e266dccbc341b426300aa741163e4228d1a928f2810d51fbd9f11c75fa35517a483bc7c5f37c75a3b8c9f0d38d68dae26ef4c68f7120c927ffb7ef5661dd1496eeb985592bfc1434cf2f12296f5a929e3fc1348c2597ed0f7aebfa191dee009cfa13c9c53dbff31 +GCD = 1 + +A = 4563fd1bfcdcc7ee97924ad79aafdbdc5b7463ccf6a9b28403b2be84a88c40d2260f11920ac4c5c6b44c649e705dd7ef6c806c7bbf26da9485f150132e5144e34fb02d93383e1c25e57652295ba9c1fb47c663e635703fed27a4a8b8998f99b6f99051f8807f6d064a58e57391093ac52508747ff303c33bbe9f56415565d5de +B = -4ebd1938a076106491f44b8fc83779c5cb24c38a25f962f02625908104a81625dd8ba534ad73f39f75d7593fbbbdd31c734181565ff442deb79fe7897b0d072546c5320f0309ed9921c3bd8fdebfda083bb3672e6b9c4c9a9bbd5c802a3e5a13593b7df44b3c165195dfd47defacb11997557c4607086af9ca5174565c70d947 +GCD = 1 + +A = -47a3405acd11f9ec276f5083ab4b685d5d54e0d7124e0be653acf880c7e782453e311493b9a76c681b078fc2a37784d18c82cc72db900ce213019528ec9383e57bf64169f27e11ef605837370b42c05b6a9580c406030bfbf8e224f4fa375e88fd01f1e38bce3890b8052184eecb1e19f25423e1321dd8fefddf3b5c43718865 +B = -8fd3e1c8b9cd38bd07dc58f00ca62cd1a601489819c75e70c12a74d38922cde630495e0feec8a624f8c4f3e0381e136855e7fae6d0c891ea63b86569ab4a9f08c13159c304a7166c5c0e04c88f51f36bfc3813046704d923c8e236f5d2b1f34fc6b6ae9bfbc599f4f8286799058c9e85a95c47e359d09c6f69797b72f1c0f3c7 +GCD = 1 + +A = 97a4c14c32af38be35eb0a2cabaa5bc64d23443cac7aa01ac787994bd11b466be9b931b8162900bb0de32b1d39c7d4cff58573b0e8c78f2dc3aee53c76a6bad44f7c7209b248f65b0cf890ae30f09d518dd7c576c02aecfab1a05194385f70e305c6f61c74f3d372bfc34fe8a9565a7b6b3781f4371ce1577fc1e495683660f5 +B = 99e07c455fcc2b2b37e21ed93d1e0fb9c20cd4ebd117060077d2b51a01bdcf8872956e3fe978fe68fa12493f24da12a7668790d900aef3a8ebf50ca6be0bbe4d804930f423146e6fa09211f949b62df3eb3fd663416d4efe517444fd0f9d198b8d9c28367befd14d3894cc1eada2ed74865b99bbc4d4e28f7307a83539f8f1e1 +GCD = 3 + +A = d6f0b24dd80506bb67b3f0817c442670eccc37978c3abfacdce1a68bfdb12c27c0c7fdd0611b2814180a32d16f3a4c6f8240123b8e33b9fdc6612c9d913ece8865f919e5f569ee0bd87bab6f38cd1a36f2fc593e6aa04eea739642c64d8be542bce5b1235ca49f1df04841a85d30dcc63bd950dfd636a42f3ddc859865092d55 +B = 69daf80faf2b56a66b8de5c7d1fbd9d8f920ddb016fca362237bca0ead515f942f36f5ff423f8904786f5ec3caabb6ebba3e8e1cc5c512a4ee2feae2c4af53f48eaac8b264696ad4a3e7cd5fe15db754fe2a37d9595c1c69ed250ab57d00fd21781c45316e85cf45964c995519bab81d1d5a426a2a2e875781f1e2ba7fb2f9ef +GCD = 1 + +A = -ba0e7d8a3e1fca296442be2497f0dc2fcc2e0dd11e4e1a3777f1bb7c97988a1985976c398b9312e5b633062db11bbc9629bad4346b5106c745886b16d988edeb1d3969b1e8e8da2209211f0b461a6469871c607a22b27ca990f386673186dba3572d899f0be2e9f261a35f6186180e92b3b22506da5641ae6560c1247fb22be8 +B = -4b4a3c7c8def6543c5a2ffa18ae6428e3cfbb376d257edc3c627d07a1672af2df9cb56a99f337d5a1bf8879e4f73d0eaacc05dbe489a97bd530d1818f2574df19ac234ef6a7db007446b3822427a87feccd333bf74fbb67d20cdcc302eb2bf8fbf3faecf2f2f684c6955fe2614026a11a6fd8d175565d8f37a51b2606c17772a +GCD = 6 + +A = 3dc5e185a984e8c25f26f7fdee08a7f4978aefcca5f3922d10224c433081a77b2dfa6b472d46d0bc9da183f285fd6fd820e9d4b5cba705a25f9a4523990b78b1b460c9d5836b0e66f14787da002b0a8ef2a162748c16bd06b1e96672b7681dd7aeb526cc324701378fc7c49ebd350fc32549f4896b06ef396d349d8611cecab4 +B = -fed11fa278ecf793c0eb288ab69222f6332548b2ad222eddff1aa2ebc9531480167144b27556db069e11f7624870aef8b204bc90a5b404e1756ef6ce032bac6e7df1c4df263a2c4b2dc7e473ffd80c2202c939642f8313fa0e6daa8a3f5497c43185d1416b1287c73300bcbd3061296a5f594fab7727ce2f4e56e6bb58600bef +GCD = 1 + +A = 9e5b8c62a06d72d74ffa4d1d33190859c43dfa2bb9737b1ca10dee2ddcc61306df8177d457ad12c8c649aaf20a8eb6bf28956520e734baa74a83197a4297a6ea21c06a73e9b8e444a5c1ecca9752abe524a6aac676e3b58ac8e6a86c17aa261a71544bd490377ace697853bea46946401e927ff9da2c3dad040eb26173bffbfa +B = -7edbd4b029dfc0116910d43f28e948cdd7b2daed3a9e5ba47fbe83af539cea788891fdf4111969de3d6793a1ed5e911756d10bb9e139d308038e463c1693f2b2693e79275473db668a33da016021ae7356f288dc29c61eff7b2c9d26d902a2deeeb192b05a69752e7f6b1f6a4ac72a9d503ffa095ea50790f232fc12535366da +GCD = a + +A = 2ffa021fd6b07c011b79c5cca063270401789fc08ca8981ec05692bc485f022c30986f806173bfdf4ab54f89a804a1b6130c5489d72788b014c4a02e6c2fb506c7e51129035daec4bc0bbfd779fe392742266e34079028be31159da88335675894bba96384c19a886c27ebd70b9e86d01ca934ce3e0563b5fa0752699d81c375 +B = -782ede960fb3ee57e1d603f1d655620f0976f754fb6a1278b52617a25dd55571d02db029368887b7a7c468d6280508832d5a41924ebea3b01b78b090499fefd8ed95a754700dd21c29238f4a3aa776fb60bf7b78fc84577db809cfbf8f4f4f436affd562200a148c861e9723b0c153ff08788adde482f4f85c013c915bfce4fa +GCD = 1 + +A = -891b497ae124ed0122af774d36b7ba3d69d9d1577b941daaf44cd796f03136a858ad5afda36774db4584f97d7958601678642b25f7362fdbe1feabc14e4bd031268f2b91872f8c8823b4584f79c549c067c42de369885db1f55735615fef293e61a65ab3f783fef37b44cf578e2377c0e9328c8da320a19ac9019d9d58c1e810 +B = 4ba26bf83a16f458865e9843dcd7fbe2d6c4e44d6b7382baec33acd58d4dbbed88a1c861d25b6ef0c739bfc11a4281224e9bbfbf4c9e33be1c9e3aa0525a1b4120c2005cc81619825f3ac03fc5e68850b1d5a8153df54d8c070779e79add76f9fa840690f60f847a84663d8c7d0f5caf774138e863f9be777e1ab4968e788bc0 +GCD = 10 + +A = ffec42a9b9a2587936cbde6d09ee8948a2df033258331d44431c597cbf243f4a8e2b7708ddb503cb0d667588688a936d6f8fc399877bc1e3068cfe046914c207ac1e9caeb2710bdd439881d58e8a5799ed657a76a0f117a16602ec0139d3c216209476da52f4fd2e57ced80e2a4eeefce81dfca9a296544358e0bd382c91e342 +B = a76760bdcf7a60a1499ae6cc4397a8b9891510a5f9fd3bc50ea9844ec483a4ccdcdb3928dee163ab3029d44c8e10cbf8ffaa26b26f5ce531f739c5675506e060369d546ae93af0e3066fb8e6844f61ef376fd264f3e591f9323dd83f8e889c86d8e85e5982974b51177579ce23bb0da10b114b8240d2ae2f0711355474113687 +GCD = 1 + +A = 81b04f6d9038e2337a3f3a86e926019805ca5a8ef37da21b14e53a6a2f1b5b8de550ae47bfdf1dde68964e287511d8c98e0e6212ecb13857987ab727f1cbc7662a49d7a232b568aaef8b92f57f2d70ea1566073c222997bd2599457183888a19993afa6f6ac143b13e9ad81f25b10e76b02f60922cc27b711115957727e36404 +B = 6083617c7f3b18801243dc8e90503ce5f232b8756750226a98a05cfad092b0fb058f15e4f8e2d264c13994ab0fd7881c12b7f72767c4e094a01474b4dc2c91210f33777f5acbd6107373abb8342eb258c8e4d6928faa19a69710b650ff56b4184c4f83b4f9404692993025d293fe926a61634358ba99cdb36f84908adb8457bf +GCD = 1 + +A = -b4a8f6306d5de531af7cd48349ddf3c3c502139500edf9f15f2c40973cecacb5e5b80508a56228dd8b9c574cd40729e6b78f71b00f040bad1824721e25b87ae1dfd14201bc76d7d6c3cea60039401254fbeeed29dbe18a876758f862bfc4f3d6d0c57cb56a7eba04fed1da50ab4e0d01cc4fe4b2d5dc2df8a4d1877827eb021e +B = 77d7be21aa9bb385e8dba8674dd0035a0d79bc153a007204d8f3f03ab5d510ee5e0a104f885534453daa40d1d50689fc34f86aadae71bbbbc8e359ee76074edcc56f698aaff48768ab3a12da305c6b4e4211c0e347dc6c9d9c8c41642ccfece0001315afcfa0782269f87388c7ec71d7050934f6d1ae84a868c6aaa7ff1728d8 +GCD = 6 + +A = -6c2884e8b4dd564eadfb853d14d32cf51ac1abc7bcab2f5a8592feee93fe24b623a3cefe7f28234bafecbf2ab9e05801f57f411c318920b5e05f73551c4ed63ab89e4d8eee9da56e51120dc79388c24f096aad5ea9f83386d6bfe4185436a461ccac454cdc968440f78e73d3e9577d3688f0b12945c6cce03a8e60132df88b6 +B = -285a87e39fa8c39929bfa7640607b622354b1ad7f3b962c7fd4105da6e1dca1949fc7fe6f5bf2584503328a390dace046ff4a3f2538f6c9bfdafd5b41d501bf28bdc33b26838df2299cf4fdb2111ee29a6e99313e88ccca187f5fe8415bce389cbf937c2cf03c19005a63e1baf809e9246166445291b40af609cf90d496c86e8 +GCD = 2 + +A = -ab2d0dd7e99ada6a16bb7350ae8410e707d6b1565426111154eb74ba38f8994f2836f84b6a16f0d08c19b5db0398526a40030f8caf21830670ab117590b268069b6ae98fbf71620d1004eb040019bd1277ac4c65b7e190f06a6718536c5d3939b8041cf545a4fe3f4c04b69e0c05e70658b73530ae26f6b886434c5f2697cf1c +B = 99fe9e762d2cbe137244e21812a0f72455618d7b0e2cec511788161a342b7d1b60763442630dd4d02807853ce69388500e195ca6f2b260780d97efc97abaf1db32d0704f9136400707820239d83594cbf562f81a004957643fd103e234d562ced76e64e7ba14877f0e1c6754c61ce3c543c27cf4c554f06131258c90d704052d +GCD = 1 + +A = b844e52b0a0bff6bb5df5030a9adb8d7116af7abf342ae12c5c74c6a829f5ad41ce60213bce565e4e284ba34da67e072d625e84ee9948e4f72947832ce725a80720cee385fbefea27645e2f92e6310cdfe09ad539b876ebd587cf2b8afc8440a112c7de191fa9519f8ba744a041650509e680bcf74780d390126888868f6d75a +B = fd63caa1d98b60aaf8487a3444dad51f3ecf9844195a84104921750ee4a3a2235d3d9224cbf7714446d213577cc93f08ca5a07a5e0876e0e868293d4b3a09f3c32903ae4fb5072e19e5432ea2a6fc90149e385a414af0edd6ae6a2ff4e915a18db10e57a79b65addb961cb39ed858d15ef31a14d9fdb4865933a67922cb576a1 +GCD = 2b + +A = -6796c966e24fdf498832e58e2956464f7ab6f7a6e86dd90d117854e0b38fcba307c097beb638d9719e341c83c1cdd1a353c18f0188fc19acf91a7fffc0747b1c4ab21c2a1259da048198c787cacb69ee6e01b78f8acddf738e40cca7d523ba5d2d8d00d09a95cae0ae4c0b3ddd13348259cc4ca1127462ef59db73fdcddaeab7 +B = -7eca244e64d76899158bfc1f14eff176f8c780a912d0b1e11dac867879166949b77cae31a4aed6645e89f07d5de79e0217e3802862f06841e07c4876331629c31ee2bc4005ba10b7cce1f584f729e231f2d06f8406bd966a5db83b15d004aac68c004206eb3072f442b5e30a69c767de35bf3cb1b8714346c8f7a966b341348f +GCD = 6b + +A = -d7a4868b78e2fd83c8e5f68345e30fde35f742adb0cc05c5c3bc282fc559c7a03699d3f7e3303889a5a9e84bf0a38dcb721b62dea0bade5f5115de62fb89257870d7b3272818c9066af713aff49de1572aeca8164bdb6a070aff3c2ea8da6bd16ce2cfe17032b0153e9ed2e2826ae755127758fd28194bfddc1a198c3ca79c03 +B = dd93e4bcde94b3bdf7db555891725ff05e6e4f4845e417c70c32fac49baa694f41cad1b900d7ede8c80301ac628467fdccf09f21e7cf9df51d4a888cd5dd125e270403f344bc2b3f2916b0293ba465d41c3e6c5e108c360cb2fd034ee7978f3ca8f00250ceeca0c78afae61a3ce2caaa974dae10844d9c2ab0a872bf5a450037 +GCD = 1 + +A = -7411c843ad36f46bcda4091e1b977359e4df4224e174e55a78bcc423d68362a24de62fb83f7a8d3944fc157d6666da9d25470c0b8d00c58e3d76a30418acc0455d76d221fd80a16be58fcd316bdd69b509358b6e822cbe28b857889077fb9c266b2fc5ed4a67c6f9178ba6f3c8c083b8154b2da89b86c5733ae28885ec1df8cf +B = -1fb06e327b0e995e3be632da3cc1e9dd80a9e767866b9aaef5fdc542fe3394e4584e21ff61f211656db4cd4c78d788f46f84ffbda5ee0fa923d9f13d6a8d45b313cabc5326be496723101d802a8f6581fadb719a5c683dea5b223f4c2e38529f433f2fba765070298094c1ff158cbc6d2240e9f7b2516fb3dc9fdc56b879496b +GCD = 1 + +A = 47d4707448896229b676cca6c38c76173c2bdb2c5bb34ed4fb88d54da367905cb0661b9b2ba888e3f1006bb506bcf9459dcd88ee4947525e6d09ec48a335cce9d53c3a2c61a1df175a6c54b88ab91a90b762cc273c72246a5d2fda345d5d35900bb120eb30be948aadfe48f80f21db54b539081c284ce9f589a8332f7bf5f096 +B = 7e71dc426dd4eb2f0eb41bba7a3ea42518852bfad21d9a6325c0b97ac1720dd59261c7636d1ff6ad7b75f11c3aaac76c7f048da473a4dd869b73f26b87679fdc40e4f6f4ee989945501bf6ef2235159f3b7933acfebf295eaed5b37dbef24ae4b6920aea57d9c04182305128c42fcd4e4db9cf22be34349dccdd7b06931c618b +GCD = 1 + +A = -b8f867a5b3f4866ee166b5c443e9107d0e41f75dc3eaf6b4eaa71f7ac0194ee70a1ceaad13eace5b885a791e1c76e9b51c5916a54dde1216cb9a43606179d76bf44f081fbc27273c7d82fc27ef656aeddaaad435d600a6978b238a4ec0f68236efa3796ddcb0c6030765009cbf3510a7c6fc6ca31ba9be540adc8275ffd683d2 +B = 1fbbfb546c1078e405da72ff2e76ef3f9d445ffdc1f593ca3f498d95b12ae62dbbfe2c22830f06233583b63af445cc09a64f9882b9fc3151af3239a910a01ef80129de0fe89cd4dcecdb982604cd0cb95294912ff4cd856ab3092f627bc6842effb8e5440974bf0781c7fd6237dd9f7e5ccfa2a3c04fcaca33f60c3ff5411675 +GCD = 1 + +A = 3403e3153ca94f31e8c4d04285958197c59ccba323dae7c9cac8648d7e0d9ea292744f09befb2951a2ac8b034504e1602c2e1301d6e47ff1ba11a077bc96d7bb4ee5f15155fcf56e4a99661b71e964f533ab7056ea6986317911ec859e99ca31474551851883c2ad6d4df01333ffda8d31bfae10338930541fb14d388f885640 +B = f460857e121aef219f05a8ea2a401aadde30eed3d2d1f928074c87b94f35a052edf8f9ce9379eef26a46eec82eece80f3fd2ad36f4a6d856e119a7ae446a6a23f1e217696be4374a70197a97a34e9027061eeb6b73b5b6c647e655f0f06978b873489d8f1fe872052ed07f92df98453c90367e4dae21e5b7c9bc9c7fe6361bb +GCD = 5 + +A = -1f5c949d8d2459b9f52231635df546c74f73e9db87c6ecc50db920a2d53ff40435f73f4ec8f88f5f5040b066a7e2e60f4db762080cea6670024b43eaaf0843b777440d4773135ad8a6a7eea88ed8cf5f579c4350afc32b79bf433c12079dd8e096a50d673d2d44dd18dc4af2f8bac000b31c07b672dee1d7fdea07a2b998538e +B = 989c554a84e3511cc871e48052fd99080ee510e00e881aebeb1fda7db20d3f478732db7e4498047579dc9eb9ff7cf76480545ab18ed677a677a88b7365e73e067bc21ed9b599d27fa7a1f5c52c113ab363dc567e1cdaadd9fd4d56d86a225946486d752b067e5aad7823dcc497b2ea91b30d547d4485cd5eb8a38246de75235e +GCD = 2 + +A = -ba1c94e13d0e68a62c01583bece2ab2b363c21b3c5dbe912cef358563191a236c4f51886181e3417bdc306c0af8df3652ea66e260ba9939d32bda0b93110a15bb9319e13e91a00adf56289421aece7ea362341173c1b9029ebbdb39a5fc1fc84df0b35efe20fd0e5bd26b7307896c0584bfae81cdef40a2460e420a65cb2f0f8 +B = bd4f2d593568d9b4746dc201416b8f4f9c80fcb51549db798c7fbaf2bafd5faaef75fb9f7e72ea8f2051410d4dfe93f6b046a6da915ba170e6040a26ceebcccf4e1df7011f10852dc56d05b26ecae91ddca1cdb54dabe6ef7ad101437b826071f7da3065b6e034db9406dad4da0b8534728a1aef1f2211821ec93e527ead6330 +GCD = 8 + +A = 9bec3b9e7937d5f0af8f947b3212c5bb7c49fcfb346958ad98aa4b6623ea0477f2b8158358195f32e3a59833772e3f398f24a0afe68dcdd8e2efdc92c4372089cf06b26a6cce98fb8d0a2706227ac5ad1e5a17bc4a37ee75b0dfe069d0b6c291431128e4fe425d72262b92a17bae9ec094d254d6ca0558fca528bc6d87b5da57 +B = -6cf1c0d6c89b90698312a1210d57c45d65a92a8cac77db44fbc1af15832a2aff10ab92f47f7246e76f841b395058e0de3fb6b92c84e3c69a0e78d54317f0779c2a4e124e4826ab717130955cbbbfb99acd80d6971481d62925d05c5896ab843e82aaf866f6e161a301c4735364b10d2d2687ec5fb2142ebef6e66368150b511e +GCD = 1 + +A = -c02f379b14681a8e22ef49f3017f68e9a50c12b6fcf4474e7edbc7219b1a84ee8161430f51d66e92d5f6a04ed4bd3f6a4450c36856aefebc42e78cceb1b287d11959a1b92e046bf471573d9cebfdff3b77147bd5645e3c86d48e8deb5276dd8b5fc76533b90d6203c39bbe3fc3e6011a4c694e8e736e65d8721e7cc9e875a3af +B = -bae310ea9bb9e6a4611560202f47f01a08c7ffac2b64d0fa0e8070974fcafdb0a41a8570d46813097f407d3b57e9a82712b1de72ca861f99b608669d8f59c30b66f225ff9d7a08ba15affd9747e627ac93e67c654273fc2d4522050fa8e78b496030432cef93e7348ab35961489226bae444b5e5038375f25055cf113f03e811 +GCD = 1 + +A = e58cf8c714130a5ea2094e4370a53a2eca7c0fb6bdd1e9aece299278f2136be69c2b61dbc1870d3df7dd0b543e221e32341f6445b0ddeef2a32c33fff7c51b1092ee81342131c4001604a1e5019e968a51ad6017acbadfb20ce0a08dd4d4274685447692463fefd7a68519ec15cf4605a2fce09bf6342bbe1d6fa13c30287ed5 +B = 5aa56776bb3de86cd6feebf730aeb77c42349f3c983fbbe9f17fdfd6a8f600a08555450333175b4f43787877c097c2f69f00f1fb65a06d41231450727ba20502f5c73e37cc5453d0baaa6af8bbb40dbbcb2e29a0b2df58a40203c6a095c3e4b00c483c05646c0b66c9ca757c4e79bad6d4a0af029acaa129bce5162aca5b7e44 +GCD = 1 + +A = -5695bfd8edecc0022124b75e5f3b5b9432574e5cc4957b8a580684e32dfc9cfbcbee2c71e941d96c73ceec0768ec8f326804d0cfcedf1699cd8665dc83764c5b333433a3369e216b03ca831ebee1fb39181d02a663462087cddf7ddf6ed2be224a1fb8f66230a3f9712b0c514581c52f9ccd968e31a10ccd1324dc5dc5fa85f9 +B = -cd7df9372e07dca86f3a8168611a4b0921c030970f029ca3afe3e0501e77e874dc2fb8b6cb50e6d7fa7bd912d6e112b535f2c9b2e0045f335b3bc1f71ddc87751fd36421117d575390184f35f39f57bbd474d910a839c0e30c53f24f7cb2a357e7fc57dfdbeafdefc2df72e7faea75c0e8567f8effcdc45934d6b5daa21624d3 +GCD = 5 + +A = -960954f2604cd4f6687a9910f155ad2e322a5ccd41468ad4c59995a7b8a44c54beb1d7dba4435d5956e5757af287a95360064ac99e3dd3a7038aec5c76e18b79dd2ccdea9a49f77d97e8e5b1efce410bae37672c682956c7ab4656848eb1f11eecb58600d47e3e7e831c0fffb5f20d9276b9f4f287aa1bdc31f62bf8d95d9451 +B = 4208f9518aa2a4bdcc9ca750e46a9b4393fb76e61538585b1503a6c52de8d31c7d24126fd5db04bf00227f22b6a235be39a5c083c343d35914a14b9827b1491e76c47761891305363b195e699b9dfe79d92e1d0899210e505871970e63e7869f4ba07f4205fe22c841268cb5ecd12c7c0d4edf48500a3f91c471c9b1b2b1b711 +GCD = 3 + +A = a3b7cf019351f252a9a7fa2c38325be698f0837ebe9e859a13b87d406210492a498a9c7c0d74e9a4927910cfb99fd09c05d9b1b0e6e1edbac72d99ad36e8c8f1a57781e3da9d494277aafcec17fb7c3328c6c1e7a80ea12f7a7678c8b83a3fc6cc251a1cfb14a460a08853ab67cd2499ea9528301eb81ea9cab59c2f5915e913 +B = -697374ebe8e633cbb1774914898683c883af7e3875357802e9af48a6a4da2a7029426b64489675feefba1ef5bec0c0bd9de07734576a4efd950cbee4a4c851202ba2b0ddd09fa3195ec96ec0aed780f57bb57bfbe6bb48e0afae8dd5b12d2cb819580bc890aa725c6a5f71217224eb486f9121a2d82ef7a491887568669dba0d +GCD = 1 + +A = f1128f3a57db5d0812c1372f6690ca3af699ad2bd9b6956f158a5f78d33c464af85ddf916f2a5464af17ff71f0a22f42ed804d0eae988e971db72ede47c0253d28169113f39356170a1530bb068bbc2e6ecc3931ac70f63881d3fe45cef4372ea03f38552ca3e74f251040721120fef165ef8014f5d647b7d5b02d3c13501cda +B = -915ed34c40035bdfa6727752d3334cfb5863bce5abb7094af232496690922a8f410895fbb827ba34495df84a466c8a924142bc92641f056ee9d12a64054e125128b71a27335f549a90fa11778646d78b11447cd5afb31f1e5a667f9f4d6784a65c30f9cff34f9b5b3656ce419c3fed1defe0638b21bfbdd42b15fc7a7c789715 +GCD = 21 + +A = -587f0a997722c76827b3ed1ed6f1bf1b9b74d6aa94ba5e4c735cf96a42334d9a9812010a6296f9c84bb011a329a2ac738417c8791fb062845e84ec3ae2bf4888e6ef902220929bb5d56c5c82abf995f1493991552065a59d9ed65314c7a2bdaf20d4596e710d2099c3db9c833afed1c4b5d9cba8ae5934fc2a753caeec7e7527 +B = 2d2ff327e05cda44287cde4a9b589bca20f0c5a15031b9d7edc36e5624e750f46612a89bceeba2d4964c02c23f9e42498992a594d43fcf3ed8a999e389cb640105074205d3acf0a072628323a3f3ff96f45d4af6cf84a523bcb83be204846b1b84f738bd9e17a2b1bd1c70b6b294346f6e87d08b91493c48adcba8428929a2ee +GCD = 1 + +A = 58ec55b033a8bbe72f5e27224ccbddb950cf4a1a02d07cd83addecf9b9a174512b5323966c9db4d3ba6e0f6a90d78e24b348d91f717340a3a354b23cb69d236a5a42661b5f3b183f45ecfc3b78791fa2e59797e85cb555a969f1a6c2fceaa8c373f8117bbffa23b9d387504e5dad627c05881a2a7e1d58fc22174a2b8e29ba59 +B = -1c7fdd15c7415163ac22e766424d6685286fb62f3674cdccdabf0f8cb2764788d7c86afdf8b45fbf43295784069e57a48af7d54c9fb13e2cee1a08be7e7bdc5f75dfa947e88b9486041ff7038605b199c2659f80ae684158ffa942cf8bbf9fff50f03947219fd7c8f2e585cbd8a66223a4778b4271ad179e84214e1c66359ba0 +GCD = 1 + +A = -c1d3c2c81bcae8b8bbcca7a04df8cea662ca0cd05f8b2d99ed1361412c3fc54be413e72e926f878b436c6708c41bd67d92a9fa26691f5e9b9f435e42670b295ca02052484c0116e915b10011db67fd6d1c8d28823972b2e3041fcf0d04c02f3ffcf431a3636d508a6cffd1f33da17b6dbbc5c043c3537f43cc17c44b7a5c8ac2 +B = 67e4cb08cd8eea1e9600d7dfc602eddb0401939fa90b6f7cb7ee81e4332fcbc0d68920a15d3ed81c462449bed1aa7160eae70d6f20ed9932656e24fc5735f01732daa4ee460caffacf5237b3d5d9c546f6440cec219119a0ec7612d8cbed4714ee50ce1504b398c96b5a229f6226c8b456af4cc54fff95cd6907281db6eefc5 +GCD = 1 + +A = 41b3860e81a337fc40852b093e727e32084efbec61fbaf59dd28493b197a41224bbf1c15265196537928f181194c3742129822576c1fb5181bc707d81e340cb5bb40ffbdc919d5a418a681118b6f99ac7439fa75f23f35ab0e758e2571dbfcfe4cb3868517d1524b2844626e9308fb1b0430f670d1ee87de76eee5b7a1734fd0 +B = 2854ec0663da374474343a01f74b13d5a0b64d0ea2c3e9af7636dbb8874244541219aa549bee2acd061e05857ee7fcdc1a8ec37d52b731bbc9ef200293956ceecc0846219f97facc3c76b2ed3595fb829c0a6ca0f7f041c8650635ac2da7bf7ac1791e1b250b11874c6ebe5718d7de8f090e5df084078b11c47a7b1d1e5dffca +GCD = 2 + +A = -f8cc8bd8fd5197095148a12e48afce61b0c0b0f1a5985aa376f00f4ac8f5631abb293ef3d90440523f76329e6e51cfa0c0f80e52096f2db67c83b987840bfaafb665eb99cc856c3ee66d4c7ff7e2d27e65e56f6d1b33be2082355f7d3d3a518b919ddd67929e8f41772b7110aa6fd0fd5bcc25387b62b78124505648a0614e06 +B = -2793d055589254302469cc9771bc837fedf08a153c6280cd835789d4b074d1a9c77c9a5e15029e3e7c78b61629fa9414574ea4c074777a3442ad0baea50aede74c9b6ab26852152e70c84c86c76b871fa90707dfcdcf9501a23f7b05d95c3fe43bfac67d3d1b7a2b8ddc817774bdbec2f1cc0e513c4b1792c2006ce510c5726b +GCD = 3 + +A = 9aac4efc5828f646af7002252fd8553ae5b330051502371db87bdc34eefa0f138e55044c7ec531e80b0570ee207656fada2507368a837c7b94051cefaa745f3a301936a2c846e44caf6ec604378d7347b50a860c86a8340a10f728c819ee0cab892fa178c28f9663ccbfb392c109d3179de3387931ca6becbb4d93ccb463ced +B = 6ac4b6ce8d3821dc7e350071efa6212bb685175ec32183d00424bb35d9ce467c442552ace65fc72a1fd8e370fa891a04f565f79eeb0e086a405ddda82fe881918826688b3b3d5143c4c4c325e66ed0a544f533b2b9c513fa2c98ffdb85a384d9d81e83138dcdb7645d7c0e1b9b4dc135314264fb2929b902fa97440ee73997ab +GCD = 1 + +A = a56b5f2d7d23608fac2b494c72ca764ef581482329faba6595e4be73492e41bd0bbb9e0561c328ea10e3bb1a149a877afb937d202e67c51e7613bfb086dec6f27b7b7048899e02fd7f5085dd44f0a873666ae20f74e69a5ff258f2be9bb777f20b9aa402b2e2f5a0ec892341ad0ac5b3f419a8a531012c082686f1bc44d1f6d1 +B = -af73058c3e51b0818f958e6ffaa34c72ed9653c3f9ced0157ca4dafa770d289607d3fad16deca72a2fb295a74388dfe337f8185d3db5954e25445b7056acff777931424710c55ec7d5db3027255b786241f393e09832f1d113b96bac5f0f8be1728f77e8a1c67bea0e50f38c57d2378b3febf0fcfc5bd9bc8e08d5acf5ccbee8 +GCD = 1 + +A = -156dc1415d58bfcb020319fc2d23f9fa44732388569906d59aa9ba1be590bcda14c24e5b10401976df50bd01003656ba1ec51786f45f099fae3c3a54804a864c5ae6291e891e386cf0117ddf06999887f6b63c16dbd397f6bfd23de4628304c77b1c21ef564f3b500ff93a8f85cd5cde00b7628dcecb43a2b286bd36b36af2e8 +B = -30853db6fb940a85214412173501e71466b87b30a0ad917cc7c16a86f64f763a356806c1154f42f22603ccb9e19cbf98caa02d87205e9b3c89d7c0b50645d61e86f8319be5e98727f017f5cd139eee71bd6f43bf63495c3548ac100bb1de9f4190084531b88b57b82208fbea59981eac45802bddb1c2e867eec307e37baba12b +GCD = 1 + +A = -c58a6bb316fd230fd0ad37906892240138879653cadd519d3e80e0841852017d8bf7a5799846f9988c2ebaf0f7393ce92247704f05df022557bde9bc5cee1d37202655ec283057700696f79644f7db62b838d22292fd2d71e4f8b01bbefa9f33e4a20a4d6b88c0774b435d85fb0533d49aa6b3a3e9b644e8a99b69b0fc839032 +B = 413235192140846471e8039312c6c60b8a17d037f0652fc0fa6f7671c01ee197906b023eb90b59a42a4081d8fb8af1dc909208966e297ebb739e103cca336b20ef4ffdafb1ea5eb4e0f19d09297a6cb6ee24221cc1b17a2e78a66605c346b7a4bf69b91258d75aeb1b1715a82249400c499a07f965835139d4090762ca4d7f5d +GCD = 1 + +A = 5c67e06428e845fe7170d0a5227521918ed949ad4887a113395929a2cd70e70e1df88c67de3bc54f2913614f224a259279f2b4afd7ad78d2c26efc3148c6f3b09212f8af2a8973cdd29bb07b9a26b27766100fa75ebdd5a8158612c2b929b6ba972e663128ebe0be86776fa6ed78baa0f342da17c9cb358e1ef2206ff9da33d8 +B = e6b9578994d68bca9fd69875f730313103303a5b81a1599e5af9b0d1bf561f6d6ee21bdba8c85befe37f556bae7be5725cbefb0aa2fd32b3f1281c9236b8329d56a7b19a0a904cd4d2d7976a258af7782953274620d0f29117e0d7b9d91dbdd6f258d97b9e1c0ef6b1950a9933b4f6641d1274b160443e41a70c0106ffb86ca2 +GCD = 2 + +A = -711666619bfbeaf7f5a7ae3b700c210f36a81a7f10c81a1d4b1be83ad08ec6c30d206a1c8ff968d69d0f9e411003f7891ac5ce4263b00bcf4befead45180edc37dac9f3df132c35e8f0c68b8458d11af5c8d6206062bad23dde4ea230e2405c567c50eb93272b9f95e3f6efaae4baafffe844f5768d948f48f60ffd9027f5676 +B = -89a4eb8d2d5310c4b017aedbb5fc5d29532253da5303068619941352950145c993ea10bf3f21a697eb4e3e3130a183625419a29a1b5c15f3687c68a94ce7fde1561992b1369c4948fab8db9f96a0f7c3e3ba2c3474d57a4edd90439ba7692b2e8a3fd6867be22a7e8bedfc69e1c340dae8fef65628c388d62ac97d1dd4e6df74 +GCD = 2 + +A = ffe0a3763d69e6ab5e90c7dc9451a7b91c0caf76bf48f3c0badf73071731b57461ed99edaa289b0e74bbf011804c8f34bb6ce0f104509181f8e6f898fcc6082f8d847a1682d84d6894b44ae6d3568389fd7f8c395f2c04bf083f42002ba1392294b003b61dfc0d1e1980922f8873f7eea038d4f9b6b1f3abb5082786ed144814 +B = b1897f83b3df810c440d75c2fee6b1369dea666fcfa2d5734affe33f6dbd44e5a1c6eaa65b8a75842a692e98139bb1be164a9ada60733b875c4f4c00eb108c5c076240addf65c68a4a01700a99b383e0b110ab8c9bc4fa7563548f19f0cbcac7408b4a734f9aa80f1e5e54942330cc2f6caf849f9c2069724543524e259d92fd +GCD = 1 + +A = 342acf2dac3e71da54c2ca58eb3fd7a45e0a0afb9959991d167baaa17941736b3c4841436f2f9bad425373a4c742041acea65d485664fa5ce67da7438816060578365e52d9d78b70ee92681dadecf384d4923baf4bd80e888914a5f16ec82b2406a4ce00474695468db8bca2a568c53877e4b4a3a51564216292727c1fcb6314 +B = -1276268cfc6cc7564d2e5c20305e28db261b7dc1c2affc8f80a55872fb2975eec68330c186cb053e90cf5b96a3d91812225864740d429a3755f044b4629abd4d6c55a4e3f91d1a395c4d6a47a69be47b14da2261fa6cb5da95f9c4b255f7596a39bed4b3c93d5a795e445f25c4f7f0536ee9c268a98db8ee34756206826fe0e2 +GCD = 2 + +A = -99418137b55f8bf8a7851cceff88c95e3648894d39ff3791f05a3cf98dc5ce7769d97501d2348102372df1728ed81eca845e426d36b0ee26f7f047ba67b876db76a15bb6c3a31eeba06be51d494b87f6ae30907a34742e36b4f1e59810ed50553e11132dc2b450eed437fcb20c5f0b2938a5ae387b60881e2bad6bf124092858 +B = -9c3f99f96ca456fa647b93811a7a93189fbda5016b9440bb7363b2da1c26185a23d5e023a1ec08051b527de6b37028cc0a8b182cef931945b81d73a6cb2d5e986a4fc3cef6f19678b81aa9cdd318153e23f0dd20b138a4dbd28ec8cd9f5281b9b216f17bed831142395e5c2edae45eacbeeabede544c2c9798f7bbd8d9dcffd +GCD = 1 + +A = 8f9c55d58c5bdd33d9384f015e19a1572b54184f436cacee17873a7b2fa5fff8d1939af314ea62dce2bd38439e12533a09aba4701e562650e5d0555dab503ab23eb6d752004a8bc70fefcb0b2d3195389efba2741ff35901727b136c52f1f4d74f03dec04cc6f4a4ff41425b52f87c4dada161858410b18c2879282728bc50f4 +B = ed94fcbb8f6d0019d73240243dacf1e76e9c791daa0c7274d33e07947249c865ebf9943e4f691632fe39d35ac807f4a062705463c8bbac00dcac4f7b517b8339feb035c622be41084edc18cd2456e537590ce526a8583ff38ba28ec14ac2d78c3662c788afdc02162fff51232482bc2a7f44b4cf4e0d5d0966d97f5700f6437b +GCD = 73 + +A = -fc9df267ac76188bb1253754911bbd067b00d6b4af03c6971ba05b938028b635d3c7879f2f501f37071e7ad039557a820d9b452b24e5237c31329d34fbc449304c31c8cef0a357c34b5c20580b36f2c1da0928a6879b655267d026615fc9dc3b457b8dcde594fb632c4c0992740dedf1ca9e5acac32175131a0952a0cceb3d9b +B = -8e606ac0ec08268e625208a9a65a6d4acfc3524f500e6bc8fa620ec46c1d19565250d7122be3a8c2caacdea259c05bddd632092777c8e9d3c0a251cce559521c11840d2711d946b0ecd81dd4a2f32f61bf7b735ff997d5d18378000f1c38310f34d5de31f002d4a0694932c2e9674acb7e81b3bbf4ae16164ae440aabba805a1 +GCD = 1 + +A = a80ed58487234dd9fc427dd327ec6d44bcfda741964184a9a4ecbef537b6f4c3b27450f55a337f187ebbbd3951ab5a189d2556ce9656656f9c94bc8809ec023bf5370a69a153d3ee53e2684e4252400c48c3f7b5c6870092d58754ad0e3488316234f58353be97761be8b31551e8c7de02055f4e773b027797bdf59d2ec7ea40 +B = 3b48b28165af0315bf5599a6ad14bfe657f4e25cb29c1d7fd942c07c5ccc2fa6007019c21297131b70c70b2177e5fab2e35fda6b578ab9710d3e18a89861e0b9042758c75e8231cb4cefefe873310cc140fe1be9b71f14eda93d1b3ba18fdf889fe2419b010310a56877f980960abbf62f71ec3ed842ca1e358af2ca49c1fe78 +GCD = 8 + +A = c0ef4bf8aac609aac78c2d7895702026649a813ae8ec1cdfea00586d28ae8621268f919809553bfda490c1eaff89d939ef579fb498ef11bbbb9ede3949877a4721b40e1345a3f6972c2e2874cee23302675ea85cd7c1c937313311d75e000b181839e0da96b44acb5851f067dc7efdc94260cfac13fec4300873c4f3c5a9fdf9 +B = e64ae7744ad5f564242c4863d878ac4d8c116279c70a8590e3c3b873436e07b170c58c58496bc61b1c1c88e2f1f130292f5343b6a7fbec667b40567433f8f6421bea275fd86890da92ac30cb38897426d0da19146ddf5117ba3ab55c26432e0587615f0b4fabe4833e9a6382e354406ec4826bf64bf868d68d6da862461a516e +GCD = 1 + +A = -871b939490bd400aa629e2772b7f22ef120f86d950f503e8aea4a6241e43225200bbb539ec4459b448d4131497468ba4b5d1fa1c5dad0ed0f9a1134133bfdbe39aa379d33cf7ad57b3c8b7082129f3090c176813d3d2e526ba25ba84299a406214bef04a0ae478d2f457edc10f5484b52dcef7124ce3847e6c756f6347a727d +B = e917c319b1d6ae0dbd657cb4340346be39bebe5211836541bd22638e0ab58e5d60a460676131abcdd07309c3139a430d40d5edf6af558587d3fa16a9f2ac3b4f7c3dff963f5805329ca0b520d1daa96193ac8a777f9cfa46a6677b2353c6fc4d4533407218f37ab81a433d219e9f330054fdd632502e481eade4e6f41979d9d9 +GCD = 1 + +A = 1b37809529b041170bd78579c85f21023afa2b0b6077cf9663ac4fd87dbce5dbbf72a5772daba717f3b9825e4267ca323d0a394f7ff9e489362517543b2bec50e8e17caa64c67ac837b575ca53958424d7532dc74db431bbb710817399e951fe145fac0ed414bb8d74e4829f02a8791bbe274d49027f2d641912861cdf21646f +B = c6fa35432508d1b49c8e5a047289027ef2e343a46f75c437cc7edd6f1d8cd1b732e95e1d05ee56cb62e675aef96cf6d0b9ddaa772249e34df232cb7a48199b38fd49cbb0cc17a836f6e9dca24284722e1aab1350ab220f03403a24b9e71bdad8e78f038d52034f61c52fa8d1d149d7b13a36aee6c4704509bb7c448dc4bdbe52 +GCD = 1 + +A = -dbc538fdcdccc1fe7cb84b1cf5d702bfc7cf161b959184c5282f2cf4431c87128a204ec98cb1b38455d4bc0e4842562e1b7c8e4e5d1425f92f78bd0fcc981ec73d48aa750cd98a0d97ba1ca6e0653725530bc44677c93f2e89bd3fb3b5001a025f9e83561048e4602d31fd1bc08826e9bc0e6492fcc2565e320327a6c150cd49 +B = 63218c14728ea6dc6782f04587d3e0b9c36cbb7877f0755be2c62094e8abcb4cb0366060f9564b2946b5bcb2f32401b99ec7f29220227b997d431291b793e610a45586d66ae2543f75b6fe0d9d39704b0a3773543d919e772d7bd0039497c1d495528d29d97a7f4b42373039778a19b27acf99ece57f7182a28b740da9b443ab +GCD = 1 + +A = -b6c0363fd5205b632b7efe4f888f99ad0f24d3b290be0b79f0fc51d3c11ad30ee6c8e566a2612c2f6b07d91efb3c268cd4d2ed1b816c11d0947f996dedf7f3501f98851fd8dc61f1c2b9f572093656e9a1fb78c7f4de416812be2e06c45b61fa735e005ccfd5f87a4ca9c3416181b954742c09ed3ca2e893a4730e88547d307a +B = -90e1b02be60ff20a16ea0641fc1a19b9ab3401ecacb1a827f6ca5d4476bbab77974e2a8201bf07a12b9527ad4db6661d20bab3b7b7af5528892d32c9102bf3055ef3d08509243fbc1eb8ecdea5ebd02b5b080a6f2bc1fad349b3dc6750f5944084961387e0a282fb3f80868bbb9c336c7a57e3f1118a4f89c333120bde48cc79 +GCD = 1 + +A = b1967b7db0905871ec69ac90d7dcffe67ecd29c9fbb0f2f8b4543742a2382416ea9d527f80e5ceae9af07dc6a836ee26fca58a02d7ea600d6de51bbe22a7c3e4444ff78afe0c19f82a9044cc82225a3b3629005bd6d7a21e459b943dd0994d84109fffd72d14c3b2060f048b5f92c4b8456daf65526b1dca58ad067ddbd9d154 +B = -3543b5c0ddc94f064b3d4f7f65e63552014144f50adba324c009a0005204b3d2a1eccfceacffb0f21325497e12469108bef898c45ba68f0cb50cb456276e87a2377632a64a8e24ddf7f885be40e4f02488c5f6093af42490d5a90679b71415ad29d651f680f494916551082ee1e2c23c9e997c8681b7c39d1340f4fe57de5636 +GCD = a + +A = -1745d1b23d2b993024e718c0ef69993c747af9d9f6c09d7a014728c075ba7514a76360e1bceda5b00018367eb4c2257930daa358afc6c3504a0203f37550a55ac6654572120e7d1e2aeabdb98e2995580d4c2906a09b2207351d2a2a0591ec0bdffe7ef6f3b613b004b635ab4e70e20193aa51477eff01b7f08295592e860d68 +B = -811bef5e7f403d063e89c30e815719c0badddf21e467204c88d7d2d752111ea1d68f3211da12eb36f375a009c3b95b6d722dc650862ce4cfb239aa2656454a8d0d01a5172905778d3feee6e0175b0407657b80cf3454396c0345089ef7a65f0866878943e1e10b941b10f973373aeab633210f796ce3136a3a8230d2da7a1470 +GCD = 8 + +A = -36461c07fb2fbbce73a2b69dff466bdaac04eadd813977b4d2486f8c57246bd1d00eab0880d163039016a8501712a5c5f34def4738477055f7dab27ebcae415ed4bfe34f7388f27e7c0b7f4dff9ccf4765d760f2ebd85dc965d1efa9ad9e913ac1e819ee6b07bea3bd0338a8a2188d8f6ad404938dd5ea002eb60e0830f861ad +B = -404a2327270526cf65ce87fd8c2b5b6caeee39dbd6f329e29737d7aa950c594bb4d08109836a1f4b3ee45f67815da9fd4336d382964fbe07087c60beb709b2c2b99a6ec6674ab11c19b270a852c20b28bce8408051e91c68921c0925f1633fba0f212584c879423d51adf123162dd3892866a115e7383deca05c989384e838aa +GCD = 1 + +A = 27cf16768a0fc66c47b18fbfca79f8cfe704850d39cfeacce0389c41f45e1bb2b6921c758bb7219a1fd33e93a0e990abf736eb358e272c9bf33d33d511e17f7457650f3f2dd67330c2631a0b754a916b40dd021d00e5476adba99bfce8a4faa825a8f3dc950797ec7b85761872bc03c56866746d87526ebd5729f349bc8dc349 +B = -676d85ac2307ef3bbb049b04f3dd80a52c87ed3cb0275f6be0c818f5bbdcc13249a462a1ce7313acba8fc265b6bd6343425b2fcb7d6090a921a2a2b3194e4a7b842d6801683bcb16c7ce3fd7d75501deaefc49d0a219a07cf2af4a5454467e0b24dfbf8cf56eacafa69c78db266910243047c16a162dd6fd8167f3d755838030 +GCD = 3 + +A = -174ebf3591f5a2fa379b3cefb9b7cebcb7639ad8850e267358462b9303ebbab3e62c5731ad3c89331f3e1ff8df8600bcb64d93caf33c775c69deb2ace4556e634dd4058951da7f52173a1beb37ef159443d9a0d65a8ef4bf1c80cfe2c759633f84fabd2c7ad26faeb02607786032eea5c503aa1da0ef7849dcd412abd56045e5 +B = c7050c87f19d7e800e48ec4183c019b2169ce690ead0f489a6020012fe0f4703878fab5b737e1c789890dd92f1d295902beaa1ec921b5719ca5add72d0c9712cca0921e32b978330b5d7fda19afa4cea9502f2e2e0bf361aacacb124e8bcdd361c28e288a7fd11d67eafd8882d785174b428b92decf2c043861f55b851a5435e +GCD = 1 + +A = 10a05dae8781376ff398c34ddf0d3850e318f9de536a5878d7a165df108fb03b0c829615ff47c6f0410647bd4369f5f073f190a5f2ddcb71b20f2b513fef58d41ac90b122e5e6dfd64555a9d2225563aed21e14356c23f3cc3212e6479b8e545289b62bc70dcdbb78a21abc12186394770bd7d0d34493659cf0b5693e7512c38 +B = -19a0090083b5b7efbd0f98d035da7d7bc15246f0d7c91d51b0505ad73c2250cf85ac64267d0c91785b4cb9acd828d1a0bb748136a104089de7d3bd4668a412861de19878547472357e1a0402431252d6df29be8cf5d05a248502e33a85142893e7c47e492c988d5b6c5d8653cb2f683d93b3dedd44a0dd06e635273f8d66e455 +GCD = 1 + +A = 61839d34940c97acb76c21a22693240078ba28deffe1702a19d5a10e7dd2a405b6c59d88001bb271da25274e444df4978c40a560a94e7e80cdf2956db23ab77f6560ebc7950e482d97837dddf15c7a1d8df913c58f98974a8f4a622714c23af0374fec49682907fe4737234f93c38c8fbf90a0111e65c4caa13c1267372a391a +B = 7810d238188ff40418ea2994e0f0f095e699843462cb242799cb00e96e4b2d8d81bbba9d5e3521d24287665eafe957be5bddfefe3f19c5f9d00069049ebd1e586e2b41aa4b975098ff274441b579b0711196c4d581fa9f3e878075f9803d4fa50bd5b404e3f91b3a98713c5f28ae95182e1fde6e9b33bd2f2041b2abc84a084f +GCD = 1 + +A = bc5d1252908108e46370a6e6761e7744f1149af2b12a7a4af8cc88324b88f07450ae12173d6913c94448204c80496bed008864c4b8362b1ffd2858a25fa47d2ddd511d3d330224d4181329dac0e149d161ba081068c991c9a8c65a70eb115525fe6e3b17e4c2786b0268ca454e5f72f39e36f8986a4cfdd64b42a3dd77dde4c6 +B = 83f26aad6b361c2ca5143b11efa70709d19d1fafd99b21f65e31cd71303c50fbf5c6a2d1deb48490d96092bbf63e555544eb865bfa35db8ec4edfcb07bf5e0acb91484c1c6f103068dacefe42b01276f9f5731e5c6f2b67472dace47544ab93920574e6727613af47b99072e3eb1d5a68a1dea6d084432c29d1eca4bc5251ed5 +GCD = 3 + +A = 43cc14a533879f7ab876d003a5e4ff19d5155319911733240d2521512c850c292988a2c69760cbfe8a5bd138f96de7d2f8abe799041f94c917dfb7a750b55cd454d12b21c561181f6ebe15b899511f10628fc54778698a5a4f15bc9378b4e7491ef87261f0a50727249c7e126e21cc20a36321f9fca9669f1058a8bc7896b115 +B = -1a0862d017459bc05010f63d69a30fe93753048e39a3af8be2918b70807160b0056dda9b2463c39083bab5521e7e1c89948586d29a58c545b2adf560a7e4353e609c62adacdeee5cb428623ace09631e7b5122dd129b058959809ec892f78fe315fdf1552943dca104346b50d4de532866657a1e4d829f95bd6b83e6af45ac49 +GCD = 1 + +A = -4ed6004e462fb6082286a72046efb94f9db9b7bbc1a4d1c82db7eca267092625d0325a9e3ad205c01e765b325dd86c4ed0fba4d58c02c0ec7dbdb67ad11b88d4c96fb349ef3058e240b6491948aaeb1023c74f50d3342411dc56c6ce3ce7e84c4cde0c849a197d9f2c58bc97f13939f13553f9fcc6e0929833901679d9e79748 +B = -84fbe26c9e0739e4228a961649dcf8af26d661392008af3e77c4a454a90f4e47ef99c277253f439678f0870142a520fc5a365671790b7eb8b8215410a0fdc95304d1f795c8fed0c41ec208a7e544e98b16cb9268224ebad34124b2d31554320ffaacdc5b3eec2d6a17ecee6adf8657830c63b21ea6b0d9aa05bf95bec0496d78 +GCD = 18 + +A = -80b9486fd7bdac1ebc36c5187e21961bff9196da51b0f551f3746fc05952fb2277463ee44a97d16c0f7a8b02bda7c1739eaae39514cf741361c9b28b11f54cd0fcd198b5cb5208a910de0ef328b17ee2ac2bbcc87cd9f3226e155f4711f933d61b2eceaa2d57f8b07d0c491c399f727ea42297dfa9c4f181ef9a6b746f0200f7 +B = e5f39906f90605bd6de11c13fa9fd113c3f0cb852538b68101fb824ee36f28864b12242136c92bbb191c19259d063ce8205dd101c5400732b82584dbec0e51d2f14f45510c62c5c0ff67089a548c48b66f2d9f18f19628fa2b3e49860d9ce63abd1609ee6cce54cddfb2d77a4c848620fa8e1d1621552c00aae5a31afc529397 +GCD = 3 + +A = -e8f32f3a30a2eb10d994eb5cd0bfc247661b24664d5e2fc352e336b23a5bd394c7a3d482b3b69a6e29a0315bcf9229e85a2fe62dd7e29048547ba47ad65abf56c20f7811483ca98a061ad7273676fe0bb5c839ad477688fbb550d008012a09c1f69f11e94a648c210ecca207d0b4867268219f13f45b5edcb2a8ff7067d9e76c +B = 7a5e98f36054cdeb7498273fbd124659973ec0df401086601c8fdb869785831ac67024c9025e4a80a496c06824758efc37452fac0cef83ff40c36cb0b60078f9daa70d4570375cd0d86d74986536d46834aa7623f9ed64c2d700899d2a9f2a40e2c8f2ad967fb1ae2dc49a7b29a4db3542cee10cf93a6fc6ae8a1b87024a0f20 +GCD = 4 + +A = d1541dc85654fc89ec4ca1de9406a1d3a9b1b87b02b81026131b99991db35edb82f245c7c53bfc6d4a1d28cbc27496f3ed7a90bffdad4abcca70a39cc4adb978811d424db7604b05cd7fad0f513421df67dd5ff94666b60ae73f4c0ac4cfa128b949c04b25dcbb6a2f218a6e2cf4fdc440be4200d36442d5433756eddedaff4f +B = -d4db710b33c51067c22cf349399ad31f43f95cca082856621462a9cd3928f1f9fd09f435e04569702e18fb3afbd71ccf2c4b29541ad36a2106a2a2989b7334029740d07cdbf289ad33f04ce81431e5a401cfbb762a69c2279a2e60a4ab7e39a23802c9b5a2729f0549a5951cd74d7abbcc13b80b6e3bd17a59b291af81f7feef +GCD = 1 + +A = -8ef899beaf850c3c2010f364235bfdd5fd46060991a5c189d1d77024cc01a616265429e414af6ea0cdc3757d3b5e639842f2521a77f43941a4152a8d277c570194d88b15f713429faeb550efc0a1ded4a9c8e50a8b02e52d4b5f5ca069a61b6cd4b65f3201f49f50a91c60fa38860a04d0a1727f5e90f78029ce1d5838b79002 +B = -cf54c2b60bb0c9d95d52a8c5b75af42d2091861f34fccaa7e56e54e0e417def230bba28b0f32fbd9f68ae8f94b3e2a279e2ca87cc432980b0c6e56a66825e01377b8d88ed4e8df6ef615565ad006a5fece2475661cd02ba2120210f0e970a8c7cd2bab5069170a6613f257294ebd914787757b7cc5890ec5041e0e0aaa1c2cbe +GCD = 2 + +A = -60b243ca9b36e6b6fd48323edf6125957cbb16389ea59db94cb990615f9333a64835b1984d4c21386ee83b626d0ce93ad4c2b92d5f43c8693400f7d3be1320bd7ce3fc2ac84ffb0e23b8c283121c75ee1ba85e7dc0c46d8a59b19457b801c429d86e4ba4fbf36c37475eaf12b813018a7f793806a3d5c9561ebd294cef9a8568 +B = 738ef7b58be6b1051adffeca03c058b5a00345bf349d324271c8fc5ae6a320c40f9ee4ebd1e146e078b01d2299c031891e28f0905911aec07dc96a22c776e65e1fc528220e1790c1ef6c734c50c6673a255c4c2e441006619f85a2a79532fc565a3b6ea744fb4a34039c1c396e34a70ec502ac38a7e63ca9adbec823292f7741 +GCD = 1 + +A = -733affaba63caff2a964198169497944099f9003261b051f46e64f4651d3b164ee764bc66b3eed8da29622502c40295d9cf02aad043892f4ffa61e23c4d0274f1fb64e104db53e2574cf6dd0f3f6aea4aba6a74e6775adb14a82fca016d32bf55263fc34cac209d39b86ceb90c7dc2ffd2626514e106bd827191236263c9165a +B = e4ffb3b307dc57a949da31c34f38adf9c613880f52736164fcfc443f7fc77fd7fcb12984ab8d18c16e7bb69847ac80cc3b54f2441866e5769b5b137acde112e808619c2fb23dcac75ea15b0ad06fffd7b2a3f00b50390b005d5dc42992da236c242c0887a0b8f518578b3f50de2a4dde6cff5ad8edddd6590b75c8921ce69ae5 +GCD = 1 + +A = -8c97c1e3b3de021a55e8cec46a29d8d4eb5d6d46067bfbf4daf42fb1dc355fd11bf8b7934fe3e58532e2c3daabf4c4ec11d8450a9e85e826f59d17a049a6446a2d38865634182e4d5338b084a72e30305ed51119495097a19c2bd16c63c185208669b32c72173e911b3ec1d2327591b7060acdaac473e4d8b1b77b16e450d6c9 +B = -3e50e9d30bb5ef2fb3b1d81b5e5a973df2f6bc020fc6ab0ce4393ce5d88151e399a0e888308133315f1f03538c8e0d4c8d75c25fa635f7e68105b531bc40b30c0c2361bd813ebd7a0c8d599f56f5c3a39f829cf850438d3dd0e33e7090d8fef1d1206a98dcb4713a818b1b9eed3872179851ed54f477070f00af38f5ef1d775a +GCD = 1 + +A = -8229f5fa645c9c6801e87025feb3fcf0832db4c07fb42aafa583f965c6dd920c54336a873f6d6404d412c81d3af64671f426c98494557929f4ca24b0a2e5621a35c73574c6e10dbf7ed7f1ba9942d5e8ef6edfe0b7219cea78ec41b24d07ca50857abaffa89c3e9992313bfe8d649758613821496a4be878f9392bb2d60c9ab2 +B = a237b3ae870bec995c99cde0268690a5f23171fa2c847cc2fe348bb9442cbe3345298de3042f1748a9d1cdb2c1eaeebd8d8f6f9bd40c858c60a846d7b3d6d5b85f02a657d6dcd70565e87b36f50bb153a13bd1791038eca8a9b796a6046cce7ede4f654126cbdceb8ef7396f9ef0e065d67d6e1a968a18f414947c36a3c536b0 +GCD = 2 + +A = c6c178aa82e1c2f9f68e8fd33281941348c5099e2adec7486ee5b644916c543305b193a9816c9dc9da8c81f78a02bb0b71ba8c54cbbd9d4ae9cd58e6f667cc00643846fc652e63681af64e59375211e81ee7cf9922e93aac34988417f8f1c87ace781892f8711068161b2efde557d0476bae43de602a47fff059456d92893812 +B = a0f4bc90562601eed2905f4dc02a531b7aeb0bc6ba32df9d763e42aadd46781f6dd92f7fb4ecd1e32fa3bd828d8140f2cfd89c0eb85e03756aba497f81d228199f2f698e2d4f9b53b783c152347215a145744402d89cf21791c2537df76a8ea4ac45775a2ae21ddced0d9bf814e2ae8d75c8efdddf3d115e078c0f1c914ba78a +GCD = 2 + +A = -500005757e01917b74069287273a783792ccf6d9b4e9c7d6044ce13f490053af844f0b01b24455156d5a7030af1d4555f0d9ef12dafc4dd6ca3b64c91eab5e3bd974df5920753cbb5d98adbd61c24199c3396da16c8ea34dbe09713e9888dd82be81b881561a7648ae21a8ef990455bbd6aba81424e99087c47d3c48a06b3320 +B = b3c8b18af39f8828d8fe2c239bc940549e994cba15548ea15ce08026466d0a5c6d1929bb87437412516b57bdd9cefbc442385757035f6b92504edcc6f3f7e717c1e5da27c377d326d66fce8e45cfdaa239b9d812ab7b6fbf0e8844f7ce875b257a0b687d5cd6a6fb800d4e07d354fa13afb27c03816a2ce1713c1b293f4b5c18 +GCD = 8 + +A = a38e1b6cf1b6e1b54531b0f90492791212ad5cc663dae74540899d1e3a1101064d9a0917cbb766e7d78e467088ff3f8537abd747a880e6f270fd906a0344963dc9388cfc3b2446c0ae4a23018f49574bf0665464dc5ea9a3d883fc7980e691e4a41b41dbf15051e5bc65b9bb05638fbd58ac1e4b954b6017afabe2cbda088dfc +B = -b5208d9377d780fdfb819eb1ba06e5bb41b1aa8f9a0454028054007d0392721f6d33c00d2fa59f203a02033a801af5b8bd7e1f01ab94a6a5212b99c9a86fda0c5338762a16c948cb3ccde5b9502eacc7a463dcd4bf42a2cf7bb4f11e40783ec36079ac2f467365bb01e748244761d897342fafa0fa4a1c3a9bd42b524cc35933 +GCD = 1 + +A = -3d16bfff0652d3ffa3724c505b999fe53d2c6cb93c2e1b53c964e87d68c3f9ba4688d968441a6af844a534f8cc7fb5701ba2666d9a0cc5c03b50cd158e39c1aec247a0af8638c1089de26695a1fc3d8b294570a9c7ea649be4726e80a4393f8a753b9e8d03e4a40a3df046c64208c72784ca67e451dbd322b8401d1150ead3a4 +B = -63afe6005395093b7fe182a0054419c5c2f4e3724da3fd3e99c91d6166f73b90442521fb0d9f15f506d5458fa104f4f9921b1745001eee3cc7ce3786e28da529d21e7409844a9e4e9c4726613eeee1cc573c9c8b26ef9a775c2ba03611cfbb9d1089f47426be6b3c0c6a1991a06d051230a25e12c94d6532dba66d8ea7afa540 +GCD = 4 + +A = -5598f5c9e242569279c3e39d7d1aafd068cd314e091419b6752c77aea6518655a44958ff980898642136cb68ff8023efd6139c9aa832867eadc607598b3514b016392ec831abf678ea80a4c845475f180196b4e72d8e56f04f9f7d4616f1194dcff5265dc7b70d399bbf0bc1328ba4311e40c01054d167e568c8c7935a7ddd97 +B = 62521775d4a8548ad2c69d6e8a5e6ee2dbee7eaeefa344979e7fcc275de18dbea1ac9d3e232b7e8e0b6dcc3f467117f6a9767395ce32daac2feef7474349cb2529334e7b1696676f6ced8d0cf4fd7ea3ab32d50742079232419583f239eb68a9069e837f6bf60bf3775552fecb1db529994cb602c30f4ef3fc41b2f11e21d994 +GCD = 1 + +A = 816608444e008059f116f9fcf67df60560f4acb07502804983609ccd9fd92662b8ba78b50eaf836aff2eb3f311a9e96995b3909012503d321d7d0bd72f5d8314afe3c23b4dfe9bd40cb55d2b1c5b7d142404fe2f8609f16c6c3498dc3485c3521309da2cd0dad8fd10fba7ddc90d632e01e4f03924e762025712d192cfd6f412 +B = eeaa92e3ffb212ed9f194689fe3458715e5e43fb0796ffe63033cc5cf3a070c71a31f57e3333e4de9510a8679685ab5afb494b2d61c64f8e10ca89bd75e271d235bf6221913c14fabcd35204e72ae738c43b2d80a7bd7d0aced8d292445a85a90b4afe7b0fb8f12382cc4c3a75d306b66dc61a2cdb49ee52a19150c6462cfe07 +GCD = 1 + +A = 5c90c251515c2c1cdfa38a6b7b9f58ca0f6d31bb868774189cb18edac9de86114e72108d07d09541a651bde54f179ef022d77ab15045fdd65e791e1be31375799d497019c9163d16580f67010344aab3829b2ef93abcaf62be6bfa411f04ccc0968dc42a1cc1ac004fcc3957d91f4a970088d3bb57e6359c80d4b9179b5e5565 +B = 92d8ccc069e840b3fedc5dbb0abd6fae25ee702793f42d9d3dffa73e724aaf52451a525bb5e0c5e3c019904d3577c97ac47561c237dee5550f4ea5daf6fc1fb21bd30583cee44554770dc81e9ab41a64bf7fdcb48eea17af80b348b4b0ca8c90dae675a7e216cd50c05d54ba3c1684d9adc83fb99d1adb99793651185e5a1886 +GCD = 1 + +A = c861db2bb040f3855e42fe369139bf5e8e01f03cacd4e4d120b1fe14cf3e2744efa751a661a882e993360c678fad65782c5245e355d2539b9319a3c54e0bc0bb1f3c2f6dd7af7c206ac4fcfde5daccd5ee4152d23fce78ef8f6c7fa3b475a2bcd3cd9b2b3528b7d6942fad89246fdf51f156f4d64a315655fd02ab817851bd46 +B = 65f2fec5abe10ef65207bcdaac8dde26be064fb559e73e821573416594c8348e48dbec702f5d2cb44f6c3d74da8466bafc5c470fd3bdc8fb1acb9cbc8f7d2236fdbce057fbf4433f02b1e8591e14fb06b66863a48074fcd0d5a1fe55ecc525e59fbcb08f937ba8ccb0905f748894d35e3531a5921c1af9af1ed3293273686007 +GCD = 1 + +A = -4202ba4ee82cdcea8ee6df869fb9444ed38b1037fd137246b138cb8f494b5c361e24d620d8c7e6b269c72c30150b34cfd1d94d912676e3b8d275b91189c0969781e508e478232288c04a0ec7c4405b144d4e83aa639fe0caf6b67cbdef8c2d8ae56d410136c23ebee40acb2ef56e3be8e8d42045e728a07aac76e991032faf1e +B = 95c44b59395040ef34bb977b84eb0b64653bd3236a7c5ff729163909f85ace02990dd4c7d97bf7bec6c72db02c67c66606678f7ed89ad962fee26d76539d7b45b658c613c75ba9dec551e47550494894f4af1f384a27ca0eb7e5501dd5f9ea431f14c83a170c409e6a87f11b636f6f36a7e04c28c3a869d54873e0cdc2bba09 +GCD = 7 + +A = 30db8ba02221849ec72ce02129ddd99f029e35609b432ac840d9af5a7c1ea2abf54b82652486733fb0a4b11bc40ca6498407a3fb5438f5a1c663b722b1b1232c2babfab2b228c309d3893a9ad23e5e77753da94aa6fb5bfb61167529f7a1b5b7d8110abee949b78726e2008e775ee71f94d87a327f897ea2f77951ff33d60cdc +B = -afa0403f5b009663bb639424d9ae0313d004cd2aa148d0e90b0e513eca64c4eeac3f45894ecc31fb39e74f6296abfe9917a77e5c2c3291d7864375e9dbe600603707afdd0d356b8b1e2b23f2423314be614302d27148a56b0a62abe48f52c19b8b1acac98311ddc7db9ac20d8fb296e331fe2d752617ca5c4542dd89c1d8a235 +GCD = 1 + +A = -f84afb555df4a59e9ca24567f9515e0cfe5bdb0978346024b1bd901ccb31e83d2cb3e6ac9f815c4b0cdec3d67063f28bf132f9abeee6c2e0c607463f12206776e344fcf63f18a1ac1f3ba15d10a7df881611cfb60acf97a6f37c577ba1022744862a1c5df18890667590476963db2aa8c40d40d7bd1927f475716f72e8978215 +B = 5a49e2a60f0477745125b1f1b4eb64ba6999cb07d09afbc3a718d66af7804aa0d834e0d654314f6b44cf7c8f354ef695bc363d0580406489d04de1490c98380a6539cf1c145acdbf9877c8e59fb53acd8aecd8a3a8d1509c69899b75319eb252f0f5dbdf544fcb35d333aebd162adccb47533e6657d1f04cf41e7b79aed44069 +GCD = 1 + +A = 3044a938a096cdeb4d3579789fd1a15d44c7ac60438f40bc6efde1229f7aa287908719473ca590105c5c439b0f9b341db95fb7aab7a50a69214d987e1b73bb804bc7a2fb47422a9ca06df3e6e73f0b875d35ca15e31281b100401b739b6ab1bc4657c32f78185e07949186f94776d83032d8b5de744080e9fc98287141a151d +B = -fca7a3eebf0e4bfd851ffcccab2cd802b971d251547b74bb7cb8985cc1d681d67528635109ccbb656139b16bb177cc8c2fcc71f52df44035ca15341cb208643abd78979208a3a9874473d78d7827454df0bb04ea92811afc264f08d28a6d6e5537b042d24459816a35edc3f549481e6ff75c74417f680e273c54d794721fcf8e +GCD = 5 + +A = 454e13f0954930b3ae6e2dfd34c434ed6d29ffbc4488136d1bdca898b220980c2e2c697ac95e8e09f4d5cce2da2494c09db889d2e4ab73e2744d6729059b22fb5d91b9a592839ca84afe0722cbb397c17eeb0c8bc8477592a38892d757ee30256c88f78caef2427b5763be560c6d92b5b944858c9df191dbca884d241743074c +B = a9b93a47d05aacbcf95ab7c94e1b35842ce8d6d9cf3cf163e7634e7181fb8d898bd830c2a450f26ab5bf01861845edc3626422f821da53ec7ec2720d0567b2a114c131b7d94454026e9dedf722fae83045ea7a735856b492aff536ff8826c2392f862b54e28a1b004b1be5925c44ba8a536002fdf6e3a99af04be4484a505b7b +GCD = 3 + +A = -39da7ea5f607693f629305109147bd579c48503ae33261e78fb55821fcb51f7de1a4f11275b8092baef9e4e782235f75638e56c223ce17c5a168709284461bde012f99246e42a90477dbdcf0be39458ddffaaf2266766f0ff9b75c05531b394fa134b3cd9e69fdf38aae23748dd21c969af1b7cd512311ec99b2eee65d4dee3d +B = -505797fc6134c0838b6c76401bd7ba25e107bd2310d0c1cd6396d03fc7bde8c7f847c448b1876969f91363157739c4b16e71f3cd917b3924c9f8f32ace43b231458e77ca8f6e4a716f300b05718cc92e02a48203d8ce12dd8511b8c8f395595fc0691a4fa2962958a55cb46b84e0fe3fc2ec37d5ef1b6b9599cf11edff254ddd +GCD = 1 + +A = a66e1450eeb5e973b2b7d3cc2ef894d252d5aae380ca8bb6b7efd4d79b89827545dc96c4327e19dd918429fb293eb976a8bc74c55548392a1135f40863ed7e7cf3a989d0e9b0a1c9227ca5df20aa5b67506b9f0d5bf29a3ca566355cff7c37fc55eecc95873021b8d81e8136b806231d8300ec1551b153ab6de25910314c8c3e +B = -3d5907a265fe552ffa02fb4fa2b786f8540d46f3e8cc6e0cfd12532a14a0c4b25803cdc1a4ff68950226451662a958f16b158f16476b4bc7074f08ed9846993975b6c70fa10fa64c3c5bd8626297c784534157f120989e53ad8c7dc61fa0742aace310111912165aff92416b03a29b34893efcea6f63419df46f713abe701963 +GCD = 3 + +A = -619b87b3fa88453527005e0568d4a1e69f33072bad4093732d4519af4345d974ca845bdf225012e6c9520c30fa1d4ddd6a4da4e724e32713b134b09b88cba5461dece95e19824e105d75ff6360b319b22c8c8807eaebb118dd1089f1318c386ac6743920025597964e6e9ef5d38dd979d312eadce887030b029cf8fd2bb9f264 +B = -84260bcd7657972590f32e5bebb4fafd5622f9c5c0ea7d14e31d5e040300b04fe17fdc8ce4d33e20ffb11d923b8109d9b2240284b9c929dd99182fd5b9dded803cd2e0df7c5aa0aeaa3a37c4ba755b399cdeec569f21ca541873ee807771bc02a7106fe1bdf6fe2ce84e1a0d8dd67f5f99b4d6328621631d26441257da14b0d4 +GCD = 4 + +A = -7f0fac4bb9bbbcc4a996836bb8d21d4a17a77b17a7aa5078b8948bab72ba707e714fec911988b22f3ccc912fd1b972ee9846a20666479a22a4fe82cc285c13528117004462b44a2a9c60f51aa3dd360e64009abea5fde183d498a00aff0e763d821d1b647cbdf55305be9ca2610a950c1c9b9fc71abf975cb21c208f899bbb6d +B = -111bf64821ca5c6654ae4c11ca1b0f45db3848fa0ceed695046ac4dd46d2370b31c49ee104d98de64fc2392507bc4c73eeb1b721bc90dca88089f856ec584f8c6841ead8700b32c26870704696c3800ed0f0a7c4781f686e48939f7f09807e9dad9bf633b71f7d93ab2b88d35353f9f15ee2b59f126be18469820b6e7288e952 +GCD = 1 + +A = -d73352d32f5009fafec3e83e40550d6bb5d5e55ea5ad4057531a8ac6a5999d10ca2fc0d02399b09eb9cd633728a34cae68eca6cd59d9028c93718aa513ce473574a81dd15f49c78f9c0d143a507619ce9b4aaa8e34f99d427e69ed18d5e019c2ce434d159bcf8ec687ef7a335fee06a9375f074ee49f00c27acdddc7c900c2d4 +B = -51b25820f5bf8d98b397bc5b13bc5dc31bb3bf0240b469da77938e112fb53291750e858f4d6bc9d676b70708aad68d923752255ef6ff9b455a127c3b3323b711764fb8f0678b9b2899dbd60b38742a298e1b0663c5fe96158f9944a904df0b55b59674f3e9a142e5783df01164066842dd07ba7bf5a2fa4f7bc2c93ca96cf7b6 +GCD = 2 + +A = 6153c1de8eb590ee60cac8ec423321caf49ca270e09f2b22fa5cfa725db98c7a7c1bf741866858f097ff5522c1da7bcbfb505a8ef9fbc62b94d1b111f4adf91d7335773d09c79e55932d5de56d334de4249c6df22185e616502520c643a2d4fcce9209287c4405604463c9a95343d55393c9df09d7f96621f01aba3bcbb263fe +B = -fbb6c9d45a7b7f74e680c61099231fd6d66858cf104996eb06322babaf954021366f37b47f0a8b8ac2d1cec7b74123bc975bd2628df9ca4a707b74610e05954187ae765757d166ffc38eb57e5f8d15ead55b9f6e802886410e020b62e1bc9540791f1d87a09f2c6d402bd5ec3402b7605ff61354acd0ef41473f6478fc658f83 +GCD = 1 + +A = -574d2cf9ff62560ecde9af20d6d265abb5b3c96f0a169d23c99ff046f1420300a3efae574742e9c8cc100eb70e2711f4e15fce237d8b6d72ef2ae8b3058ee750013a862eadd720ab8d89a82951b58b82a61d2035adfc109abea315f362a38bde5fa8ecd7d51286ad61241040ede5da5bf539dc777c7e0cfd87146ed54653533f +B = -448f6ae189500de5e85a5a41edc39b9b6c9e1d750c917f843df94d65cbc86eca46ba7f68603c5f7866a351090e9c65a540ad843a19a4350cb65e989e0e0ebca7ca056c97138fac06bebeafdc33dc672587c5e98a0f390645b583434000e1bf56d72752ff6b920653f09be6130c70a69df1c55446ed75aad63dbddbc76327988b +GCD = 1 + +A = -dcfa2f0c71c5d49ba462781a383deb21d22c1b40e95d3f8a97549533abf3c00d9531a1e6f43205d77a723bcfde5ec684b025fdfd182d95db38234c368953e67974fb165322a8903d51b358fbc4c9c03fe80cae5c0a93f4beabc787b8b5a56b90784b7861ab0ec588eca15c666bde4f6d9f838d966a14f8c1fc3b1378d047020 +B = 19a441b933f2b7301a5c87f7b270af630cd4667c7d587d4953e18d33e7c483706507bef68df702e9a6d778a9d3cc84c35a1f058fad8801cbb23f0d3f58e6dc890cf236fa5a9e53961cb89042f07b942cdfd3583a6e4ec6fc88f4937c6189b4dd5c198838fd8977f268de39b6b1ac49f291ba8512ec5ece81f8a57bfd0296aa77 +GCD = 1 + +A = 2bdf5ef23c35d77343a6e5b545ce767178c6691e4bb5544bf4e5b2516a55f167823a1086f7bf8e0ea8a77f05a7aba5265809ea26d5d4b674b7eaee7daf188cb1db6ea09d2ce71f308d1ff0196d3cf6fcec018885127719d1a78ee27713e9c6c680632dc7e7fdb178f226c484a326bf66641d51cbe086dee1e83f42f5cf1fce57 +B = fdd6ecd8f5ecb061a73ee46278831b7290ae9091d0a32b0c47f99c1f7eda9a53f315ca6e9856594e642f2c14e839ff7175202f8da657212a9267db09eb9324e0010c6d72a7a10c50cfcd234b32607501b0b3b9452e68e87399c41e466b759bd08ac1fa8f08d646a008a8a151b49d487c9ac659e37d96a6dab3244c1d686ce14e +GCD = 1 + +A = 18c12b494b0f1916cf8ed47ff8aab286645b3ec752e5969d0a13daf2bee2d10770eeb6247f4e44b789492db476ac11514caff3d49d19cc3ac75d95a07333b9c273b246a08ce424b4d56d406b73a50f08ea2a09b67d3806387c3769efa7fc434a91317782e3b312591b5d25566fb2dd0f3c1bde31b371320613b5acbf13136f88 +B = 7eabc7819faf0d0c01a03c2027cbc938381b3546cb174d45a89af73aae10695a4f4dc820a966249e8c14987dae5bb547cf1025f70ddd7861d71e104d4012e92058ab2621192b1c1e0446eb852a5639821663720cee0ac48391eb2e54fde09aed432334e414e096570f13937f3d20d9b5aa939970d89e6b0130615f020675545c +GCD = 4 + +A = 6200bc875c3d4db509932873eaa4ad935b2a479078bb291132897ef445078ad2da29a94033fd909c477a868b43fc0209e5bb148b45a0638b086fa7e867a48ba00967f5244e2492b929d7eb2d840074eaf138deb3a47a4c1c97450428160e9dd489a48714ae505f73a3af06970110c3a2afd89f8c9c933531867c60969712fc6f +B = -aefb9703388710ec605c6133bf12c0624694748d57b79b0d4ed4f351e02f345c9ff4162b5931c0d4ef36dee9e666cf833523b9ad881b7e1ebf591c5294367fe72d28ec4b92ae20a338854da9c7ff33544d66470bb2072ae86f07257e59d596329a558add940b9ddd9a29ab7dac275d50552de28531eed89e67ae7275a9f082b8 +GCD = 1 + +A = c390d7788498e438568134f52451b10a0bddccba32a0274b4d939a804e8ca1e4e59c58f2b56148a04d7b769e0524627c744f76961c03c85e6f60f219c139065dc143c1c452d99997b6255a270257e83a296fd77f5044812f89ea818c54bfe1b075923286147ba3008ca05d749903b51332a63c3e0c6dbcb8b0c5692ea773e193 +B = 3cb3129974e2d4c6f4cd64475e020c669499501aba17a17b11ea6a51a5bed7f3bef8c880683a219939ec481b28b8865039d1ac2c5985457f28f96bdff900005e27e8e067f72785a5eb4fd657232c1596072ff8b32eda2177d40fe8b65f66accebc474a452c9647e279a8335ba67e2d5e95a706afacfacc04e7a63c0b67bdef66 +GCD = 3 + +A = -87e2ab1bf32647d6f72cfac20a2e4c55c1fcaa20ab76dd1234c6bc3a0a0ba695de6d56c1ef1cc81b500d6430350f23036413c56628e9cf71e62d55135ebaae0e2e7af474a5292dc9254d1eb215126f94f2b74bdb29bf486b4b85d1ccc88da9f792738ed7e8e167e88fff53d871e5204937982984b5d72a51ff89679f9ad54508 +B = 6c13ed0236912c7e5aabf1ae54178a47a9d21ee0c3924dc699107be6867bf376ed6c1d8949f1b5f4611ed539d89459c8c24c642840864ea26cf53409379a3ea7569ae7633eca1b5259104c144362e48becf00bd27bac0162f6d8b0693e8eed04e5606d4715a692273942f2fd8c27586b4453ad31e96eecb0f4b075f1343d49e +GCD = 2 + +A = 62e81a546ab83254c10061e8f8153e1e19e412306fdf3b5bb348fc7620b6813109b3d9ce760fc1907ba1623faae111ce7a0b978a12b3b21798830fc6285ab14448aacf3596dc21cb060bb71bb4fa2cc7ad52ccbd7f83e78f3294b1913628c6b34cea9f72550757297e12b6b8df548f9645804282ee49845494fa0b7ba9a59ad7 +B = 47411a2f25c67809865dbee588cb8533e243bff4413bb01ef1c17875fc3d77c92fed10136039f01113a658c1534593bf18888f34318f6c942dd34e082f0d9094a438ed10ab7eb119d5a2f742685ff1d76aa546f7f55afc9b82d52776e43a88dd9db442187039e4360a1f7544b53e3630c39f681323652e08ebb4706bf5d10802 +GCD = 1 + +A = a67bbf5bb5e2d370f27e98d964ff06d441422f7fa02676db1795de9355dd5cc57f4840abfb9efeb86f052153cb9846b82e6d133bfce07388d598faf1fe598be9ccf4ff74d8e7635031b0bf89e430e75e03be06e0e3f7758d402430ad31c58a873c57c7ed3ec290501e8fdfb6251520d483703d2aa079cd1dd07fe48f41dfba46 +B = b6b795eda9c4d88855db1f32bf6c914b9a259fbf392972f0a78158dd5be4e2df99e13010133b235139e8e1fec87a9668500f15ce2aae170c17760e76f024a468ddc6e40c713916ddec1ae28e18ff3e5382996a953e7f586fcbf18c4e3e14f58b14e95affb79905b763d38b618c6830beced0719b3d0f91073aede8a08b14b36f +GCD = 1 + +A = 60106e517082f29c14931a457aaa583fb9bb429a4153cf74d3a2e42aac8b618e2e64e930e035db9245a89ee1dd2865b2d6570feb8483a7809a174736e17d688fe913280c4ef1273ef44ed797ac9416721f8d17d4be0d5589338f6dcabe05c48b706d754bf7241dad172999a78cfcc27b46cb95f2c1e771843619d3e44fe370f3 +B = b0f3981e6d0a08d26f381b21530e4a35c5e7de444bbe0f4ba48a6a3339529383daaee7373f36a2df0324ef768b0ba9ce800babd233f4fb9e021e4ff06f96f4f4ccb04b6f5683b98dfd060c71264fad4926a2280d49fbb0fabe1c062917cf9adc996a20ec140a6fc253311b2385809bf533e8509efe7f6bfc96f874d688b74fda +GCD = 1 + +A = 49080f966745287e68b82e29bcc54fbc2df5aba1846cd31acaef733ed542b6cbeaff66b7011e28a7875b90543221949f0d9d84554a68ce146553ac1e886da795c19f6118d1d1ea3ed75cc584c1505063404a54fd7eabd3441037b138cbad96fe5729beaf8ad4000f174e0e2ed4a1dface3fb74e35c10fc5eede398de1a76f50d +B = -ee87023b465c59b2a24c7c0c31504bf2c6550ea8aaad3b8b3d20e0fa646786678a2f0a00b534d8a7e300214b31d85171eb053a5404e5d784b13f9af16945d016c2d59dd0c4903c139d581ea546d82b72384108e8f7261b746f67d2e19aa41febf2c53b2ef470410b7044d4df30ce37c15d501d46d7654f969b2c146428175774 +GCD = 1 + +A = -2f2578e32586590c8cde13cef25e1005c0f1583a1e208ed6603390db8ccc71b846297ffd0029c58af2d2882b767bc5be05d514b3a0a3addb09771f881ecf635c5d10117b150745d385f689d7b1ef4096696f1d1d44b0be51cb2a329db0d7fca98b8411b8cb307dbc57011633f59712463426b20c694828710bd37a846b4fe9d9 +B = 829c7ab5dacd008be39a74eff2152102ce10e97aa310a32cd3578d76d5e05800f8023f48d6cd71716a2e0f0933d54b88b3c16d1fcbcfebf786d6a28de7cd0308a73a44be86231b55f5377200023d432c9c04d82c09c20dba866f10998bbfbc62d14fa685f76c1db581939fc5d6812e770b7758befc37ba5e044f2a953e558705 +GCD = e1 + +A = -6ebe34f64732da4e4c6e41ff14dd29b0ad338d2346525c0b2254f8619d40d7cbe9e952c3343117ae0e646cf8e97fd5d2b69f177aa83bcff3804999a95fb5d26f3d94e125fcbe36c0fc62ab20185c433d3cf1cc16234e8176a14209560bc07f24fdf97f9e49e73ff722c4a3bce7db63d63b9f552fad71600f9ad8fca4ba644538 +B = 9e7cc1a655037c6c4e2a519426f9405e1335ef92a54ef5b5926c0d5855ad6b7e8197e21ef3c3c8c0e92d0278f5737a7335099a6fd6e09109bd004745f6ddea7686afdafc6ec495f9b10def94f0c6c716d63596c08d73ea096c6ef7fc8715656c9749dbaab2e31b29f7cceee3690b7e3ca1cd45444f388b6a75f58788d6bce1fd +GCD = 3 + +A = ac5bb94f0cdde0558bba2022dae58d439761fd6cd94446a60ca949405375cf5f5b2b98d986f7d669c49ff343bce792ef9ba87a9b415e70f2a76e926adc970c6f13a854ce5b486f929b4d29bb69f6f2068cb32ce693a23127af06ca8f5b3da0fc8eb1fb3d1136fb22c35c8d93a6228cb1f9ad6387f772a07ce7036377437cdbad +B = aa9cf693451c73a70363ed820aeeb9e54835a27f23a68c25aff34c6c3bb4d21cef73eacb85fecc51bd98f0bdbbb1cd81b8052559da5bb9fe5eaabb46307491d46cc0e60ff83fd0358b100b672789de6317efd7299f9ca65194afc220ffcb1723fcd154920526ad890e55de6b8d597284f712e984fb896a6880f707835be4c910 +GCD = 1 + +A = c53c947d31f4b3424a8ae10636fde67e80b900feb575c7d93b230d827c793e13051a58b3db0773681bece8ab094ba492d8af1abee4a87ccaa237c762af2a09d37088ebe16115dbe2ece992c286aa6fd6eab4e51f90fe4fd34f471ce25ba53b97db5850cee9b1d7749a2a6e0ab99ca0896b37d26caec5ea0a162565787888989e +B = 7b2171cf36fb8900419b63f25b77a67016bf72cd3b140e9f3819fb1bb4a346014a85038739693b7f106ceb3a9dda3c8bafb52091e6c74fce337b5d6d4549f016eecad9278bd51b804e901dcb453c8abab3c617fac8129db06b178bbfdf63970ce4604433a902066c10552b0682bf7c87a27f6429ffd9c362eb7d7ddcb4988fa8 +GCD = 6 + +A = -be8c7b2bf91b752a35a44f1f31d189daee9f1c5b91fd68be66e4e3b775eba0c920e761cdf941133083cc116469ff69400cb0341af694d7bb23a0c1684157ebae9779ec55069a502c535021df1c0db9c22d95fe58c8d96ec8c68c1b0160845567fcb4076010b28ef41d050dabb6686a4be2644b16d26694acd34bf6561651c0ed +B = -91f629dcf66ff63ea7bc22226857b49876eb216fb4fbaba1c253961ac2520c0dfa78518c2cff8022a27d890d8146fd89b2de5ce81b10e9d4fe5ae1d63fb01db53276351be7904694b7ae38c26fc35c37c4a947cbf73bd1dd17b701c3277298c600831a50c367f94d591f05a5aad66e73e2e2da4eefa0160452fd9732013597d +GCD = 1 + +A = -df9ad16c807289807764f63d0027ce58b2cd8d37e8161b8ce8372e26725b01b0e87cae054f611763adb9c5a81adad51821e03833c1c073344295b2e0b1e52aa8824d3e0a3de44f78c7531ad8b291f518f3dbb0e4bda591e18051a97b6a71c390304699d4b69158eef420eca18d4acfd24a933b984bf29664d44cb07182e94f86 +B = 53881209b54e0e2ee9d6f7ee905e8eb9afffe060708d8b721e24cdf7058be3b2661ad02707040af99e1e28c2ba3025ce2b1e37dac2af8c2dded84a5b7e90121893c393c8dcd461f77b542cb6851a7a2d74bcae1847ccc19722b869205315e5f23c80df18a6f40e20b60f926cb66ea32ee5257f12ae6d5a08e56525c8099adbb2 +GCD = 2 + +A = 109957dce99696dc3c46a5bc784623778e3a5336e55b3d5d4bfcc1ea7823606b303b0490b922d1c1c79f7103931ac0148fc96ae0ed28cae06d8d2782df4e1b55d6ed99a8efb9e4f48561038b5b4190cb4d8536c32ba19058bfcc28e372395cb81bb381c4057dbd6b243f6c56063ae0ed3b122a3c7991ef71df93be71aaa21c77 +B = -d362c327be67bf57bfdd7865641fb35e65b7d956decb52fc6f68272ea65caa59a988db0fb0094a3ade660b84e82fe54bc4b2f423b4107a9dffdab699b73c7043b561b7a913331c61057bc4b861476cbf61e6092a4430b846d353d448172d2df7099b93320af3e1940e12d001e66252b5e1dd37d643c2913a6ba791c63f67614a +GCD = 1 + +A = 74bf95ed69a2fa141c60132454bcafcd7129898e9c47517f8a92166f70f5fb8bf04822be8f5d10e7ebeea87caa43df1aeabff75c21ea5f210919e16c89040eeb919da568f91be49c7fecfbde5f220b6e3169996eae8cddc818b06b999c1725ae5ec8097125ccbba12e8173ecff268823618d1179d727b64033d080b07fae693b +B = -5e05bfae1bdc6b323e206083241686ae0dd51247127fb1194c31b0a831e5a0ff90eecf6afb62497e670d28265352d17d230691aea9c5c9aaf4d88e3cf45c8a9e18dad2310357354c6acd7d2028705ab36f92f0af8d6b975a6e10ce2ed991b3cbb01218361d54206a386b2310e49ce1c26c2998e0dcaacab6edb88854a13e5ca9 +GCD = 1 + +A = ad1b5bba8c641e28f2564e6169c8cda845327eb2f3195bc4b1c85849c086d12a03e560eaf2ade0f1a823c9b30073aef5594b06b0aaea40cccd253cb87c752252c1a5387b62be6a42f92b13ca302deb94ae9e214a263572f4df8be343da759257f507e7d095baf792d51f57c4b70614d4f0f46a32ee403cec8599589ffcfdf17f +B = 3c0b273ff69a31a0631713e98421bc68612eb589f5f6381378ebb42462225c62e308400bc06610f941a1dd0a18993c38db541e1ec6cc673406b53bc8804a9f40ca20eb42bd43d2799782807624d81799df7e887b2b996d031a7cc2f8f4905fc88e3342f39d68cca6780de50c7ee9268d3f87477650209d1f2a193244857e5e64 +GCD = 1 + +A = -1765c51d99ec0fd64d6249cb0c8548b59a4e4cc55d35e9eb68fce159d01a035bba9fce5a8d5dcf5f82db7777adfafa598c5753fac278b8f34741cdd4e36baed37d088e0a09b1ba7b6c5794c4e40d677838ce0225be0de200dbcb0b6b5096667f59dab436e1a0342320f2c64630bdc53d069269fb1910c53a2f1ce2d8edf1043d +B = -ecb2d9c6b9e4845c5ccc4ca1bb538c3b1d4b6fd440126bdc7308c6242719ccfd7ebbdfc3dabde158d4aab7858460a37de5a191680da4c94bab9d2a25a6529be585b54efec599d62d3a475ce943a7476c9849a888b6d7a6fad60d1cae786c3cd32dc6bb3fec1bdcb47edf92cf00fa3fb3a3643a1cb3db9496122b1ab88fb239d6 +GCD = 1 + +A = 544e92babdcacabfdca63c6949f88ec4ada3ba0afae53586719acefd5c9246f211e1b46b0cf893fa755945ec2a09a26728b2e35e3c09aecb8407d5d8a01eab121dc006ce18bcef5e3144f64a328a5d1805bcdd5eaff50efd3a124b4ec6632298c121adb712cf0336d6b43ecb5333f918bde61c0a2ee166079b9b193089ceb32f +B = -ec25a3c75d4d7453951c2f08a676c2b32bf9efc321fe0c3114b9284f5edebdcdc991270588bd539edd9679179e8a8112843fb7ee3049042c216f4b57d8c0a6a4d26acc7f65736a6b390975e0a5f21a1a003852aaa8ee5d4b09cba188f2fed5d71fa0fc11ce4fda6c9247b899381c88b416539548bc47b6d28f51312e15e0d186 +GCD = 1 + +A = 8af4d6588f782ff57335ebb4683adcdd2e75dda35f17e0b6f559784cc8e079bc30d78a2777208c9524843e1de365df5c05343781b65ece72b6a0795f1bcd87cf8e2a2c74e42cd7fb302e64813353aa9c08b5db4da96276346d1779f89f16f47dc26fa12e9e2eb96f1aeaf61988f49824982309b3ff88e8ec5616387b5a26c342 +B = -9213f21fc297f638959e6de8608295b055ed5432d2ada370597bb5b0a31a532bb259bb6651510893e1e1817bab8ea939c05b62a6d3d52f7c0048d0d90d9101fe6d639d75f21c22ee4f6336fb9a680f9aea0824cf898fd0577faf65c0d035c9851405255f3cf9fab840089658cdded4a76cc2cfbb40927d05f73cef4fe709b83b +GCD = 1 + +A = -40b9aa04e53a7c697c3f9b597d6995bdb9560e1943e58e976ba3cad7c058991772b989e1425879ed4223b3c9d5be48b9cf79d045305cf9952b6a152d4bac31edccff549e56cf399d1743cce33d7b5a4d777abc2828b015f02035dbf097ff09315304a1eecb45509ce99da5909454a77e8adbc072b1a7440c8f61ae443affb386 +B = -a9af9c0800dddd44f43882bade9fe97a00fece843c319004e5e1d74c70b1075b651be6eb1cad2d685137d2d66f3a5fc0466e17078f13172debc708b6c2300620e29b3f72cb1e95bd47fd67f3e11c822ede6a279ec2aac2ce0758b0da2bd205bb7d4e4b6fb2212f01269c658bc3fd70fad5d95ef82e45c1ab7528aaaf8f0472c7 +GCD = 1 + +A = -9e67377c24b7f6b9afc2245056d1b0246d4fc6e76c612fb1a54c6ca9ec33691de0fe9e8fa1cca3c4d3d45b80eabeaacec3c2281f7ab01fd2f8101a21ce217bbee62aeb5121ebad8d380a42df78432f829c50e18ed4dafbe648fbc1c6d754595a27a19b9e44e737af6b49ab47cd628e48d540f2f24923211a88860fcc3634a6f5 +B = -b35a48b380ef0f9440f2c577b1b774c9474bdde01b21313376412a7d52c6be642c21b6170d9bad7a4ba9d125cbaa9e4a87527fa0e145e8a97633613644afae42a2ab2ca530ddfc2e33632ef0a42e8cb08486555c27bc89b156195e55d3ccaa552d6168eec126485234edbc517c60af81c40847eb834c9640caac7d9e083a9c33 +GCD = 1 + +A = -1dedb6393bcfec75b54d0206539cdeef4bb141bf96d1ecde15a7f9fd82392ed6cb838df37a503646c0e9ce00653e66538f798949f1ceec2abf4cb67a62be4ed8a128221d0017c36f5f204187181937b1e0399801edc2c9101d20bc4484d7a3f7638328b842fe5e2c07487acb9531e15e54510ab42c5878b53b750867cdfa0069 +B = 164741f045a849e2cc4bab01946e57721b49ee7ec01b1ec4728f0918580271fc97bc82183b053c47c60ebd146c1206d2af6be1533113fd9b19c9e1a002941e8c843067022c4c6acf7284dffc8c2aa7f8ffd6d145af0497cd48143593e0be23c628a2a90069d310f7c81d4c398f5a7c88b236584c45eac14d2b4c33c3ab7a09b2 +GCD = 1 + +A = -cbd51213a9b0f3337a4bad0440002cc8aec8a251e2bff581aead81c896ab4f289be102f6b3c5cdb7ff48c2a8b589237adbcc5d3f5e5979bf09428242c47dfefea54b2ae0fa4317eeaa59cedcdd178038c6ee58ff61b1dc944716144de7913d36262775fc83bcdfb01fc751befb0dc0e67c4da2895979521c3b39788fd65be0b2 +B = 627ce2c0a30033724a49f01d9f0e9ddd72e8d6c8699fc227f581f0b44d70f2056690250f2d78d7abe98314903e5b3b16ceccb00512daebcce268d6ec2dc308e2d717055b351141ca9067e59541605079edf26916ed00a29347a7a337145f8bf9aa76d419f4487c2ef8b6bf78fd7501e691dc952031918036593e491cb87137ed +GCD = 1 + +A = -1638b7584c4569de34d87c6f8d034d6df0886a054d5c5642d53f11dbdcba47d36d2e24fa1c5ed0388e1a8ae0edf5237a09ce29637861350a9bb5b3b29d040fdd990008a72f49db40342f566ed246eee87c85664bb72dfb27e8b3cd09b981c31f055638cb574d79be7a473d99b57c491d95d4666d572edc5d667776c9870c656d +B = -4796bcb8d5146f6d61db50f13ae2eabc45db83dc0860dfef2ad5cad4935d97c85c04545677e552a6e904f60b24765cb2e1f1b31ad975c4e244571b31a6dc5e2801815e7385ecbc4b55d96395b60a8b57d3a848f0cedd2438022116c90a5e96de6f6b43b6930359eb4bb7f7f705af8cbc555d5e28d085fddbb8be65033e5fdd71 +GCD = 19 + +A = 18eafe6ee3100b8b79b6da5a4b5d774c3c7f9d93d323ad7a7b3256c163a09ae66ae998428c7afe7c3bc7824910d75e43bcf8a7613a6f67254cc3ef7f0b0e00beef0c68be3f2a64c9796cbec78ba0921e281e7ba36a2f55472345f30dc5e631119bf0779987ad50f38736aedabac6b27e884537a07fac6ac4f7d93bb2521273eb +B = -8e8dd2dfeb32af3d3e94aaddf05add63797c5b481bcb2ddddc3ce26acdc72a5dd5050f2a800fca4ae405f255013d2b95e6e73e8f7d2c5c6c638da8cb6924002f6364e03b9b6fb183954049097d2b40ddb3f9cfa25c07b78e6c5a9cae94424c6009d631e9f4756401adbd4b48270105d9fb31f168e237f2156225a5512e6a1efd +GCD = 1 + +A = -ec8c435e15d86278a926c5c4657da8974a0e53c506ddfc88c3b1baaee0dcb9fb85cb10e21904c88cbab68e11521dd1b31c6caf5bd89568bf9c8e3dd5a333cf23508e443347a3dfc43d9301711e884402715f09570f6a59b1a0d00a75bd0f0e1cdc2db56e046d0c301af95000884b5e77a740ef0624e1b2266bf7cdc90978e027 +B = -3bde46956f72125f03f1cdd9d966c7dd486d96d28d0cb95ca06dd4192330a184806e3be63ca8817ae3ace9ce043bc83e7a5909d4f802ed9385952e2e778902d0d9c9f064a9d1456464783dbbf2ef27ad77e4cd4cb6f45a5f365f29174a4e785ce2728f2c805dff131b0e2fbc62fdf0a33b3ec77547403c2269ba910ba9c39605 +GCD = 1 + +A = bc211d811845832e03d18cbdc470fa61b88e49f129726cbf9b56947cacd655babbf9891ed931bcb4ad30bae0c74ea8f493079e8c7ef32f28ed735192921f42e0e25a74644fa99115b8e5799b9241af4e2c5e6dfdc12426975e2a0d287d47bea84302ba639f17432bb10fd4be41ba5f666a51b51e54e37752521e1fab7c7704f4 +B = 206c5dc07062e2c92bea8fe3e60855895ba69ac90c9ef297d736ec740ab9c4b8bfe657fa6a2e53922481f1ff79aadd12963b8bc31e47fb63176505a516fed3df556dbeeddd224c3b5229cd9532954f1d1539dd249f7cf03e50705f71aa7d11ad6748c8f7a6c559b816a7f41fa51656ad87145a6385c18b02ff6ad8723cfb295f +GCD = 1 + +A = -f119636ead254672d1d9693ca78b83643e4eafbaead76a0f6a35646ce0064461c22ae899ff0a32b63cc9142bc19b1ef7efd4c1576e437f7e1e87bc6661863adb4f30ec72bc6e774d531e6fe7ccee0cd04ea1097dff2f04ea99986f0d6637ba3f6aa52906ef0a92c305a9a414e118837a169bbd5b3832a29507f3d5e8d1361f53 +B = -bdf4bb35662c385ae6e2b063761e53a84a61da4bcc9fa5a5339c1ed517afa4b1b1dbe7f41e5d7cde4864019cdbf9a6c660482dd74380cac666eb240756c462c16a4e8ed69deeec8f8a52783ed6ee1cb9cf3a13b5ee998ffff93e98d4aae93ae7b605557b5d7b509c127ed462a1d529c3d22133e26e04314e5915268f062d1a6e +GCD = 1 + +A = -6eb12dc070c7bd82172e8027e18be401672f0d5302581e678ce450c68d3776fbf785fe5c7d828a9308d9b634d5584844c46699cae03db59ca3c45d1b5510b718d2b9ff50126e86f5b7e4a35ac0662ddd820f4a61866c332fe97b9a720c2995028b1529d20ae6df83057d55ca0c47117c5752e260c1998655d648f7cd00d537bf +B = -d11cf0282527809e9918f3307c2d67aa291bf3525ad42e93968a48d9b8bbbb07fa4c151b9b1abc1201556010ab71756224f95ac70180d475da2db8d43c1bc70279f35aa7e0d470f8a9a49d85b1d652bc710f4df8ed43685522f18555e8370276670d39461edf91480f945014e3495ca921c6853ca8ef3bf7d819339630a40a9d +GCD = 1 + +A = -d4b69a6e5f61860b38dcc92b8ad150e1610af795d6664b433ded41c844f2eec34721cf2b5fc4f8a5cba9f2389fa221f0b43f743ca6e7519b70a43798cdeb05d26077f2aa5dd326782a235b2f27a7ae41753fe5626aaeff1e2ab26a81350046aa855b5f3432cf004d01181796f24dd4dcddebfe9be6d77c52286d149b6fc4d8d1 +B = -31bc2cdd2c3ba67cb8596a29802456fbe2912751091d3497810c5df6c031014d28f52b833794e131f0d41abb8012f8bc6f909907de42398f03363cd37a0db1796ae6771265fd9daa5ecf0d06de9306fb4706c94cd2c08575469c6630f53a1c694c5883e9c7d3beaacb9ea4991eb779b53291de815031a4321ea55229f2b99875 +GCD = 1 + +A = -aef1237d1e3d7c468d16741023ef183fa52d2432794040f9ddfe17b960738760fa70d7c5fff5594436623b15b7a8e3aca55daf6b8581e22c5ed359ea2e0c437b81e59d51da05aaf674e935b4a69abb07571b6452bd76f2658b6885e5ea87afe35a464b347b68148784c7a37f6c9d742afb5fb67fc99d3f195f987f22802684c3 +B = 8146d11b6bd45ed5c86913b34180f462b0bb73a41ff7a96a7e83331194dae5a0fcdef7cec619eb3178b3fe70a1d61ddfbc3c624d4cbddb6f204bdd7e1271260d8080e80e22b87d9b783cce892fbebeb0295e1c61d50b3da7887f4d14f5b2d8df7e9b2a2c7bcb14be98468321ee0b83b5e839d28169c2c5c3dfc52ca631e92a3 +GCD = 1 + +A = 9deaf6a161438426b3de6da68110d899e6307e7a3d5f016f04da2ca3ada69f32baa161f3e151f898bf681eb9ba37faa2649c23ca0d48c6ebe2392e4d813ba509100fef502167d8987edc68beda438c44129c54833907b8833fed81e177a286e530b88e9cd6c09bda88af1c3d5cd612acdf8ba7420dfc6211a870e85fd1b08347 +B = -c1de265bca486c6b43bac6e2482a8d95d8708ec0c0d6099217b9f7e9d9013ee9fc6b5bb55bc088fecd88f315ddabb219fb8edf7a130392fff10d1714243c30737d8cd8ed8f1ec7edcb3c2f2322e02e1fdb807db11f27be86b2cf42c007eb0eba852738c8c0df2796db02c368ca81bacdfc5fe842005fce65afeaefc578b5869d +GCD = 1 + +A = -698f5ecf3dc1f35a56b40813d8b38a765fc908c959d24fbdc3d1d87a59f2e6c446d2e4d3df19b76b4c3602428345de40b927bf8c2bf9e2aad4b9dcc06422d23538ecebc520c27792ea1bc5ae686efeff8c060e4c34122159be37e087951e136d936e524234b1b86b581a88632b60be97d15c2792962a8e0439712074e2e58beb +B = -15352d0ec9fede20325778bd77680b3bae3016f801bc8b9f16d3e9b7b590152995c51c61705830a62f12d105f38f64d1b70ac0c193d03c5cc1944ef70c5e0bace199914d2f944a725c5e10f1850b100f9833dbc90abf87fabfb50c7080b0e97d01aee2e118dd218119a7c6fc1098d64262f54e7cbe2c3c96d1342bea4b826bc4 +GCD = 1 + +A = f29db7c700e22f97207133e8d38f27f6756edde371c81f2ee93c6760db47d76d6b7bca6743a4eec9727a19751b46a314b7eaa0f44325b05519b6ed9fa3b3ad8e9c4749f7e00b26d2d63a1a473396bce96d891fdebf68c9b89725a38458c47a7cd51b42338a1b15cfeb58945db703347e6cad4068b57e0896769044af10b1245f +B = -2009e0b579f8e9274afaeba9a13b49a5b673eb7bdeb7fa6a80aa13aafb83dbdf630fe63330e429b954cacac9001014219232740414880cbaf11442b899c904e8d9cef92940c644c15b89b72d30f930a1fa52f7a2844a7cd24f8831f1922ad185e3c2332e515aeecee86362273bbf02b8c2a2c679e5ab996f7e352f27e6cea2ca +GCD = 1 + +A = a7e3d09900a1b1b8d220cedf76c70a8edb836e223b6fc47139a8709023e8805c2e90041e72f8e60d4a5e51600c48df624e257e166015517f3fcc6f3c652146ae3bfd8cc803e2e37ea5835cfe49e2433ae761d20bc36799e3efa7ce5f85b21741f10ecc54c4c3a1b46f927eed693edf63e0e46eda9fb7d47b18996f0cdc8429e8 +B = fc1e4e45f28cc46e4174bede7aabce0ffe6104a0f4499f8cd3b664d478e628ec2dc9435c12f729c037d9884b16f0b62f5a577536c431a878640c62b63c8871efe46c776ff0891a1ab37303acebdcfdacea92d13ae382eda3cfb015a1e52476a4caef44c57b95b19ff36797f26900b5c99f33b2ba54beade661ef4fd91266c2d2 +GCD = 2 + +A = -c514e6370b6ab52d35746bbbdf5a8827a8aeb913d0e31ea5981b3cfe5ffe9b681b18809bccd98c87452740218bfd2e79922cfdcf95f3116d722504e631e01894d697cd07047deeee8bde99c15e9dcb95c4291e26eb82ceac34e01a9a4bbec158ed58d5fa09f0f97e3135f6732650d5a7f13717aa1e8a29fbe4ca801175528183 +B = -e9a2e0cc170101b34167c20d28bfd78745964210b5f113efe83b4be3dcf5ba26a10c8f723c6563cad462fb273f36515aeb9f43361520e098e88634aa37177066d83563130874ba5dc27ba41968b030621c5ba40b07013db9f58ebca18ec10508f262fb63c2d8da6df1a653b613b2faadc344db28bb9584f7c3b0366e36b17c65 +GCD = 1 + +A = 4976b0d18f434098e97a9f6b8ba43f7d7a233ed341e0935fe051bf63d21e66635a2e16afbfde89da14e84f5ba44930c420b9d6e83e6bff0270c1704c4792f7c330ee69b5faa435ccf0a233306cbc2dca7606b343dbe7f2c0b6cb2d5c072d8f6286f208647642c1a9c08e538f83118ae66dc8033a142be65285bf9e9d07a6816e +B = 3d557ebeba586390616482db869c981aab3edf3de4c7fce05f99f03036f1b550164f8212668b36f40149129759888e12ad315b9fa497104bdcb2d4a8a2dd252127e522925ea1a530b11b41b0559069ddb4eb0a417fb890fe720bebbbad696285ea6d2929e3a3e2d0a8942e78dc20906ad62436008ae9030e913ff8260df84c4a +GCD = 2 + +A = c998e3603ed032713696e8299eed63cc6483bd4e5a44714bfbc28d011745ecebcff75cc14c1d254957bfe6a058282013d0b8553c72bfb2572057353869465861465f14e73ca8c1499eac9fe9eece96d06f288ba1b150986cce21aacbb0dd5d64654c71cd208c38a10ead654e2fd37e6ad8437e713fae84c8050728b8835ed89f +B = -28784b31434074f3a59e143f51ba6f396f91e3241fb913065de8d6b4843702ca7765c44b3730c2407c0185b4754fbe7736f5e1376cc5570e8dba8517eed816805eda098c5e4e3529c88c29eb38ee147328a36450f833040339fdf596e6845f838564ac397c2ce6e2068efc8ad6d325e82646bb08c4862e6b338c79b9f5c07d49 +GCD = 1 + +A = -ac872b02ce59f0bc1b1766cb1a85cba4ce1aa5d4326ef3672047b4be318d95dbf0188dfa2bcc5d08c16087552a3510c9f9947f2d014ae8f1c4ed642cb67a29410fb0a769cb8871b42a4309e7c465b843cfa17d6e79fe33ef59d0056a6d2fc384a485c15e32e90339f3aa216bf0ca84cb56e1faa8a648ceeec6a89d261f91d977 +B = -18e879b7555d0c5c1aa9b1cecbbdc2fc3209f215f7b8a8cf9a3f1514836b4480d4a9c113109bb5478b588c7ecb4d967601049d5a5228444243a01b623cf516208a5aa216c8cea68d5ca5b091ba732ea5eb82d9de7e3645a84d41a1ffa11dd23df148f78440a7cb943b548017e82f7316a5ffbccb31125cdba682e53d22509fc3 +GCD = 1 + +A = a135c563a95890c6adf21c575bf6717bbb6a2481149f3613dc6d6c181e065a0a51561b4d316658dfdcd473873e1dd8b96062a8aa590b4c2ce1a817d3e079c4e6b9b930a5421730e5924936c41a4dc6de3947d88f12bc2fa48910986729bb1ef31cbb154646d40ae7f2ffdc2d7dbde0a6221a8224a3946fe8dfde4f03988c1f43 +B = c85e8ed7bbf6910e4e43d5df972c1367dbf86d5baceb05ac17eaa10c83abfa4de9729e6fcd5795c15888d6783fa7da686687d5d9feefba959e719da0daa5f338c192705a157fdb8c9bbad8b58d36d0571dd9ffe8ba32411a6d796cab0db9a52fe6e2df1d480a2cb3dd8623e9db6a7890ed760243249b6f64ca5c4e73eb621b8d +GCD = 1 + +A = 639e2fba5d576f4dfc61214cdd5afa9f5eeaa932fdd7e95d8dcb1f9c09cbdf7dd6909d394e2d4485558a7d87c007ca72dbf2af1dcefa43b8056c6151c71f9f40e8d24769bbc042002bee339e8addd4181dd4b7b71693120e8c4a3ae3976af8a88bdd19edb85654563e41fb478ece1df2a68d1ed8edb7bb736bfb7cdd3b85c21c +B = 8e57c76667942360df8c9782862619eb959ecb1946fda0dba0edd02b01612f04136de81d1408e579bffd7d61ace9976ba5b4ce45fe53acaaef451b56cf4283bd7d984a4b092ba4c63dbd2b75feb6bbb4491cf14dc9cad1f4bce7bf79757fac2644949bb584b97be06db746f891dbf478598e69547ea2368fd983d03b5f816a98 +GCD = 4 + +A = -538ec7d8441a229e61189eb52f7c7d91202c730864898f527a52498bd1fa63203df7ab6c79295aad17314437b4c2e174040a7b982e36bcc1c8b3b3273e3f1d898ff1ebe863aec0ed9c2658a01563434ae75e8016fccaf60685397961562979b41d68d2c8ba6d110b145b927e18c3a3691ef3b63e8bc2b659817ccf6f381034b0 +B = -f68ed4bb00e45ffe409527a9a27676a158cb238dc73a329fc8a5e0c86f37bb8ba435aa55a77395fd82f8ed5af7988f6951418abd333d17ec3781ecacde86ef4b15890ceb4afacadef0cc30322183a39a1894c76b1f63667221d3ca5c6c31326ce16836a449ae73396968d100c919307cf0574dbc541c7ef47603ce9e29f96885 +GCD = 3 + +A = -611cc8a712dc30062e174b550e214678ec349bef5228cfe60eda8c1b318ddc5a00be36457c897746c9709e85e223089b5bb85fd2a24d04221d1659356ddc1db61cc3d645a563a202656db88eab043a82fd3c2ecfd2e4086cb879dfab9f7bfa1523f0346abe9fb672ac4b139468b67c0cda63dc0ac5c07e2a27bc2c09741276cc +B = e2607ad197a93c925b24d329cace976447c2f577a06a2a826f3345c9535152d32be9b8299fb03bb88f28e39fcbe00cb5b611db5bf69ef669e8a83bff0d7cb4ea9c135d6d4db535ad5b48701b9bee638a6dac8063b569ade1c92fab00e6219541b7e7b80af424a005fe4df9213c2c0ed018de23c88d19945194c33ba628065dc2 +GCD = 1e + +A = -b13ee553e1727723347a0b8ed446d25522bbf8cee992aa762426b9163e4605dc2641d709648f6d7c51fc588311900c1b39189ef71c7b60557c1dcb530a33f1ebc12113d292a935dfc49dd4c55f535a9f9f3d5793808b53316ab8d205c13f4f339b2d4e5e810ff1c67f22fbf7787e896a83d248bbc363735b00b6b29951e75467 +B = 3fe8bfb09e9402afde521909af5a4d329b8c377ac01666ba90ec0fad38c92c5b4b35dc7915713a4fa7f34c69b5aeeeabaa0f0c1435cfcce44b159a8ead0094e77939433cf664a97d98ec5ecfa259b91046f06d0f2a5d39f4fa6b655ddd3a26a50ec68c066ac34153e2b502c05620a610d8a6a5280a9f71fd0ae8176df518ecc5 +GCD = 1 + +A = -419b6c3b67c23b7cb7e53c0ff1d43d5f9e6e8c701808cb2a15eaabd3374fb3d3de2d60850a82bc8f18c79c82125214c0228f4b581da6127d67beb52fd833729b14a584349f0d90cc9f3e5b18feba6ae6ba251ea01b96f79be631608918acbc0e734aab99292d7e1b87402b3e4b15e43d2412e169ba9df8c628a1c18d16101d1 +B = -3927617af93c1bd99199ae39ca78d69cdffdd71568c39630e1574da3d0df4aa8025f06e9eee1dddbbec23b6507d906c0f24bebedcd3a82018dd89db8cbb8a09f7c531610bcf21bc06ff63a8dec7827dbd386475f652676fb94c454f357d6a7eb9eba85bc3f3134b2d6237dadc9586cdb95ef27ea2d29b9f4f21a0e4fae14837d +GCD = 1 + +A = 7e69f56c11bd82f0e20812c9e10d7aedfa4b35cfc3d49dbffdaf0b1cd30c2a2cd1abec82bb129ac814ac9df39b01159708a4d56ba518408f6f370545d2b966dc166348d5bcaf8c272536c1cfacb718ad9760de6a4dcef5f55cea837a6fa709226b0760d56f046e411ef5c46b1e532094666d8fa79f12c34ebc942fda4cd36f08 +B = e258725b87f6e91f0de53e200936a2eb8e7a23c2e01f470dbfcc01c92866db5fc0a1c3174287217769b40f6fec2004703fdf1dc5709178c4a5e7354806af9674e6f4c9406169ed14ae6ba2c1fa55bca7f622ca20852516598a7330ed56e563d83bb3fc652ae542fb3370cb4ab8a8a719f98730a15e32a2951ccb69cbb485db97 +GCD = 1 + +A = -b84640c3490cbd0255fa3944b04fe03453e2f87576256abc29d6740e975358bc4e107284490625f6130265b95e251aaeb6ad5b9339d1ea6e33ad07ddfd32b2725495ae19e4fd63497f89c45254e7d16742f2910b822462dc01660e9ce42a94b8c587934500057474110c5239f719e6184cea4edc27a5794369dcb32e1e852334 +B = -bd89d654257a72a48ef4fe626583f97f59391693bd27ef5654756da297131e13f2d4ebcac1dc5099d89a8476282d2e0c42c8ee4a345d1cc5080fe0796918fefeb2baa0992f3afd05419b1b50a71501ae519f5ae3b13e50456651afe7dd46e2b1f998ce20a6da5d7cba1d9d92ce739f8f32ae30a6b945605c52725ca6dee616cf +GCD = 1 + +A = -d52f37da9fcd540f6560121140a09a18562f4762ce95cab8f17c0384158cb41bb448039d6f4ec62a6e6d2a1941512aa54f33f1863a5e9d23eeea026f0ee486764c379d1612a021b3b87db11eb4e31f462523edf4c2926e4bd7bf9cd68598247663a4944bb8a82cec1c9f88839587db12f1201632b256bd92c950984a5a503a2d +B = 74558224195382da434186436b1dd09a8ebf51db1e2cd7134674ea4d140f8c1493af7f8e78be4b525ea440954e643a5e87adbc7dae0d54ee84a3414606f2852758ad2bebd748245515c4cfde2e9b2cb55461aa43200723b792b731d48919ef87af67e34fd95196825451d2582411538fac8c1f67ca9c85c0585a3145d6079c8f +GCD = 31 + +A = c04e4316bd4bfb9e9c00cac5c22ce19a5f7008380d6812ef185f1a8d3ae406548a5dcf15f739f2e68bb8597796a48d52ee2136f30bb00787ba8bbd784debadb255e91c1757b7e8df939958841c7adc95da4298663fe666bd1848553107274a2ce4d589ac1bba494fcab6594d81ba5472ecb1bdc6e1ce5f4386626f313d4ce5de +B = -1aaf10135159a89433a99fb6ab17aa6df49017bac9296b54f51f2daa01bfef96e01e41d70d4c2f2cc16a95f98a86b9c57040a3dfefa2ade9307a9956f6499e0969d912411b529689c81c77402c4a0cb3da2c1db788c0a350afb8c9081306219cafcab8315110f5d5ecd7a6f0eadad196b42801a33e46188e3b08532f62b2e341 +GCD = 1 + +A = 5793a0c1d4e107b034cf07d12fa365f3fd156c51387afffa3cc3c4eb6325f777620e5f3ad0bd50e1810238c8b6ec6c7a54fff5a3ececb6ddafb1ec70188c678c146b90e22fbd36a8c5900bdaf4f0f11348e9236dd3e8e998310002a73158cee0003abf31d81ecd29b3d349af726d3d19689e5a6fe8cc67e1a9d1a467f59c05fc +B = -6dc7282fd7c06f6e79af08e8118bd117aa313dc176c5aba1a078d29d4e925524b2e96dd2135708108dc20416c5c8d435de41ea20c6e3a8baecc0f7eef6d65f3d28e202e8c1dcde8d3ee9814e3aec2b2056ac90ec267a6295354feed30f40ea86860255c9eeed65c646618e137f2f64e2647bb5c364ee75a3de73166b85674e8b +GCD = 1 + +A = 8ca0257263d88970d9672aba246619baccb1d7d8d1e9f6bcf6048f30da9d5641d8c507d63e96b08e17e7911d0e3d8338a1a4d110d3b6f138662be0d091091add57f80ed8ae2aeee6060e4107885384a4db00b30e01e81ad20aa9d36e9709b879e46da2750b617d59ef12578d1d15bc5f534565cdcdcca27d6ce5f314d6eeb86d +B = -3c73040bd6a6bef52b10db3e3293de21f8ebe5438fa0771869d06faa7a7b113674fd331aad905af028331012b10ff4841ba360a2cc89fe9dd68b787183d0db734fec8ae9d1dc78aed03a39424cf07c2d0d139e95614b258e461951387606f59ddf4840a703602c36ca4c59559f54a53e7137300a938dedbaea5a6209d089a619 +GCD = 1 + +A = 6d700f41de52c707a7ef8692b5a51234c41869aa883b58fa675ae37be3ad81f739b9e62db5a85d48afba5bd72b3e002fa6756129ef99f52f482a646e1c4c9a946ce16a78a706626111c19e4cea52fb5c2473d9729ad40ab8bd874ad6452f28ed8e8cadcda05aa66a5456e6f6ff7116f82294dc9d6f333cec4c5ad7e94893e445 +B = ec2047150a0120ef1949869e055ff76b479e067a7a30b268178fdf4384ad8377a0d0d87e3fb91de288913bdc8ccacd05e2f18fef690623f415f6c4060b7db37310b09b5f500961a94aba6a0f752d81dcffe053e7babd022e7c3f292c2b7b19a1d2b356c202f6334df048c9d282c57eaa00e5037b6bff199554feaf3a20d18a5e +GCD = 3 + +A = -71a685c4c883c22612d50168560a95e6073e948e6973e79081cbb308fac7f0e112a5680713f901b18a87a78950dbbecac5e462d8931437c3504ef5d24442c91c3fa50b5aa157be57f2e9dadf803fee227656991f752b097162fe3ff4c1fa02d8a317bd57747ee202faf935f62dd46348e8b1592a56af9e9f2be07f180bd7233 +B = -537d956a8bfd896a9fbb603dc42470ebb200913e2e46263b5aae8f5bfef88c9a885f9f7a9cb244711f0a09536530b5f9caa80cc2484cc4ac767b65a01c77a39985116fc7ca8a0a1417eb316ff51888bab06331ecb8094b84c904fd42156a9923d7f6e09f7e99a89d1acff3f2ff0ce4bff9086cee2f38e403f7ef2a835323842e +GCD = 5 + +A = -dfce20b74c30e89efe9b9e199607a6dd26c2fcb5dccb9c1f4ca35a9182102851687daa615d35eb59433b583faee613a07eeee0f177c8eed5e26354c1e190223ce00126e96a36e935346fd9100383835238aa93017bf2a4f77ff80771c2f5dcc4f999f3e6aaaad748004aa7bb18933c1de3d8eece5a6473ba27683d176282677 +B = e2dbd07982ff7104129dfee0faadb2536de485eb101d4dabff2140ab2687ab8a4e77a3b26a7bd1daf62f5e9d2d8a0a3da5b0f136cf59cd27b6b458d8834a5b3d3bdf9fcaef0ac9b72352822f41d91518a7e4d52d63f937954994f636259c3ce13c73c7ff86b9ddebb206ae6bf8d2b1e04e16b1af02c48666a6938d80c7813976 +GCD = 3 + +A = -13eda4578a7dfbdfa46d6c64e6ba9c955de15ae21826d6476dd2322aabab0bffa3405d9d07551259ae6bb96aee9689008de3965f918841b19c889d47c568e127fe39fc1b4b6be2ef357a3ccf6aa3ecd594af7e9d40464c814c1078a32cda9f8b37e77dca34aa11ed3f3669487b1b16197f9f7e3ddcf115c08420189036deeb23 +B = 53cdfc1c082d1332cf41b228ff94364a86c917ae50b99ea2ffd55d36fb3543c6dcb34bfd66cf91acabdf5015dfee0bcca38803c6faf236e9f8740ddf1d5f74c221b8774ae80be322a944026fb1c45f9ed7f0eeda8398fe1bbd2ec20a6a120efa63f2663271cdf6ad6c14bb06dd07d46c0267016c60697f92b647027c7b10d9ab +GCD = 1 + +A = c04fa53c0df1cd8754d2d02227675e68c78389c2873f69f4eda790be543aaa67a08a728423b9df14897aa4f6132fc5f645f85f48c572800051903e4a1b035539e24340521245e3126df97df2af049dab72ef33388f480cd6bf5324119bee3b7e23f48cba93e68e7b5123e74127928abf4501814fc0faab549fd6a0a41bb5f566 +B = cc0e8fc19a001965770a1556f34883e8ca343a6d551e4787e33baa52111982149c1f2348e1a657ea609fa2768e3a01c4ea51e0dbda32d36b184477edef1ce1e1a0326af8b402d24e04a5fafffc001a9c1034e5d6e5ec3ac5e21ada821846be0b17da49969e3fd7d941d49906e75bb89ddedf9675ff7590d4371ecb2be98a8e68 +GCD = 2 + +A = -4b7445cc1cb1fcef572e342a8a461102bdd0f6cb0a59e771d7310a6d219674991797448107b9297e98af1b07afeb0395be0181c65f50bcc6683570a7b5e36ec180e0ea074155b80879163493e480aca3196029c9dbbb13b61ccf5420ee76125a61c8017b1a0f9d3543d39ebee85812ec46499f1b7f4ba313fc1c82d9d663a95a +B = -7a6c6f76ba62edd5bff66725b6cf49cf0b00d5875fd435430281c0c4f7cb979643a927962f1a487076cb1d8302c0c930dbea5f870a7d6a519960f8e135870330efc694198afc49d00fbdc024afe5e9da0e30ebb301dd93beb71b440b0201ab45c492fd7a339e29b3faef22f42819e80f161057f03ed02b1cada4f7335c74728a +GCD = 2 + +A = -7915966851a302e4b76bbf48ca4e7456cb5e39fdd050aa4a0b8fb09f89e6c2fed20c6815bb2e14632790d94dd2829762487f117fb9234a9514364cfe2b600f502edb4fca5431661d2f5433d2a734f50fbd60c773a7b356315a5878a9fee3d9d444d7365b833da23f4b0dc5f310ccc3d574954b4a0398dc872c4412bf0b80e7e5 +B = 4b971b22bf6fa2c9144d33835e4beffc4951107231e9bbeeca1f4e3d25f5e75c44205195989470ffbdf2135f22b33ee9f26455c8bf1e11f28a150dd492ad6bf1419fda88048ed3621998ec369649ceb820d99f5391736635d44cee6b06cee5b7bf2e16f92674236b3b65b39ff71e44b12252ae8a38cf2546a4531ec56c085464 +GCD = 1 + +A = -b4653953a6df9866808a1e6d02485952fa8fa5ef70b186d61f4c2d42bdb0323a0610353622f60e6e3ce5b9f39ff3d40962e31b464e1227bdcda945c35d3da2f58899dfeab9e30b7bf50c8b1f677ee5f071a02fb97c941c93781fba49489cbc3339dee3416b7e4c2e434703d5142475f2bb93883de6488b347751c382f4f4029c +B = 2e3363804655cf0b6348baf83da0fcdc2cb97c9178d8b398ae70efe00c1457ade98373a90d1819bc88e7070f733129f6f719bc925b49bc3e0dfe67ab330297b865c842141bda7f5fbf340523c1eafe44e1c83092d14e62006d883796a4c6ebd9cdc62a440627c1b65507441f8b1e94df7e85547def0e0ea7b5dc5e6dabde8adc +GCD = 44 + +A = 1353645bbfda9a372f5c7137b03e589414df9f3f70bfb98b5f10f5a71a3d859af9bfc3e6caaa15e5c9c76af0ea5dd58a4867424296ec0c09e4a6c1886e203ea38abf038608e88fe48ea94a4c8efcd4e58cdfe8558162878dbd354eb72e59df737385ba396a8c1d52228c8b11033573093c99961779c48d3c9ad991d700a6065f +B = -8e3097c84a7ee74acbdb67f5c66071240d0cd1c37377ab8da302ce8b6112dbc8fce40a3d37376774f7261d8f24035c1eb5083287decdf9edffb0da1899fd88c55d1e8bff9341331e599f1a18dc5fb93b6ff988150727ff14e83d50d4772ed47423eaddbfcb052d796b2b6459e895b71b24856d17a4d0a11a312b68f4b9618816 +GCD = 3 + +A = da8931532f23b89081fed3430d3d8f158139c5cae9157eaa800926a8ffa5b6056d17973b25449aa3a8b7cbaa430c9fc890d3b4cd9b5b7ab16b60d1ed988a7bd5a80bcb6843ebda22f4f92ba6a14cd18a4b3c209d7e5eb8767f2c468833b44dc99c0463a38ba085362d50a63a2de53a225c2a18884f3b996a0ecadc58533599a8 +B = -cb6f15d26c0885d8dd9774ff5eb8b0cddcc9887eefb1d3c3b58b81492b7904a295ea3b5ea6b9efc42d88a7229dbabf19fbaa34d3935635699bafb859f5fd620c7e625928e6ba526f45051bca802c599e61102685f193c47def95f7c31837cad8895dbf85ad6eba7fe6872a9e346da18b0db7dba32a6929d2507f0e6b73eb2c89 +GCD = 1 + +A = -9ab625db135647e562b78b028fb7c39678991a2121801ae943a1e04493f8e3086ac6c1881c334ba49fe2ff1e875a983ca38602eeadafd61ac649ef4ec78cfd3c11a6bdbef360fae04fada90d6802292cb90ad0cea6b1d03a83f200a88de82873400fe5eb6ff94a1d6c981a061b1cbb27aea63bd245a680ec44bb5e20f3498b74 +B = -e41eff8c883053e3a009ac93db0e72c495061659291ba567d19b2825149ce68887d898abf73d26058ac2dd9d7dfae7602c590ba619704f7638a9ee011f1a7e257696d504491e10e0a22feff1aea4d68051f9c1cd0372ee336f20ea5f189540990450e18a60bd525b84731e1dc4c004ead9d610758007d25f7538c23434523cd5 +GCD = 1 + +A = -a55e44fa3a49bd55b502bec1041aa0065977c99bde1f07586ba454fdc461641bca4d4c1fcfee771b7e961917ffb1cb68f7deac84e48002568a53a9c9ec5bc861a23193e52ad0599dd1a52d53ba1cfbccf0a854101cad2e85a76861a844f3719134e431b0acd1056719b45634fd6014ed085a67cbb152d219aa80888bb9c8f5cc +B = d0603fd46ccba49ec9d635f0080f9a7f988083348dd4bc584116b2cd87efe25b2e900090e593db8a470c11d0801f53cd3bf1d413d417a403639098798388af0a6f3c3b645e14ef06950dcbfa64518403777f595c87b06caa82bee72853512e96320f54869dc73d06962a9885485746a1969bd971d17f3b191204651df5fd003f +GCD = 1 + +A = -e0761ec774e4ba1f11d7df5a6206b94247f65be9298e5b808162e4d996f6bc5da42093c8453f7d4f9e5a5d10add00a4e823ecf9f032ec418adb1f57775ecc936e18ccd5b4131a26dac7f0679e9784d192aabc027f04c05758efea54204f054fe3f658f8b5293196cfc16fbe4a504d03aa20e4f36a60900765972c6869667f7b6 +B = a57dd9d36cf7cfff4f95eca89b6ed87c86272e71f98512226f0b7c8ca338da4ebbff13b7c42f768ebc7a8671dbb6f17544df6a03f316283aadc6f4686ed3381e77eb27b4a21f87c03313044df7027820aaf3353eba7fb1c6792ff4a5658ceb6ab44455f108c8f22b1ac3d5c3cc33e377f68150943b7291b072106939f99620c3 +GCD = 1 + +A = df31b37cb4ec55dd54cb1b91c8116b1e7eddef50f7d2f74ab29d83e85723eaaeac8e141ebe3fdb8411f60814e186e0a22da9db53449a7063fabecc439412d9fc50056ae47dfa9c9ccf27c656c0e5c7ea3e78792eef32dea79b9a3cfec8e0212cd220f8636f9b0134c6d76edbc7a0fb2e22fbd3d454d8534aba50aa162762bf6f +B = 38109ed7d8a9666f0d7768190868a23bcdf08bf114bc64c29527f7e3e8253fd675d98722f92a9b849f5fc7d53968d1b09a3428119ecf9401c2f7d1c08225201d0424249f9a553197e1b1010f89f2c2037d8dbf136670313c3be87e636e9f322a1a1ea99375f8e988a0bc6ca4c884b42a9047d57a053e4ce29db67aa9f1c01085 +GCD = 1 + +A = 4b7522b0e3d9b1b2e7bcc9f9a602ec5822a40d5696cb8dd88e8cc1b74a3bb7559ec470ab6e2e14e370ab7f22890c0707d07c0019bd91f097558bace0383318497d27e6f2e98d337d52b076b586ae847ec070f82594bd24bd5b7bef17443a5e1f550e4aed7bbfef7197f1a74c809ca1b289503c65822ffe25f85799ca6270caad +B = c12f0559273fc7b71a25998ba1e00a1da9dce1d8ef35e0fc96420cd0f5c0c3a9d1fd7ada87896d2f570d43be3e1788bb150cf1eb27d50d98c600bdbad722b7517046366eb52b3bc2bd89e4c098b100d323da6ff8bbd917273e14d0cf57362e7f94f4ca3f0acb878993230146ce8db6a755019b48a4b7aed135addb6a2d74a984 +GCD = 1 + +A = -f8e741bd10bc64eb911130e05457c0043feca6dc21f0b74f9c53885e3714cf65ef6ad9d199f64c43ab4b89241e675c2369a115faea49f718aa6c51672afda6f4ceea91f94e1c55df38ddcf9ffd3edcced3dd087745dacb60c0b651907c8b40bef0cb68f42c08165e51c915d9c51fc62f9dcd4cda3426f3eaa18d75be0c19d4a7 +B = af1d8918fe0250dc485ea7cb5bcfdd7f3113d46d4cbe25c9a2076e29139303e559c11d3c440011bf754b20780f41b2db031a5992488208b20aded7a5e516daac9c0244fdb5cb5e19016cb6d243eb8fb5edb281cc5f19d22af0a0158ec4e672287dbd19ee97026cab86a74b1415509a7836862858a8ac4952d42bd6027a923eaf +GCD = 1 + +A = 6dad2dc4488f6c0ab132cd6bca27b198edcc735386c2d15683a67622ca8772a476b806be8a5970b4cf64a150c7eac469c17fc8c61ed21ff2fa9eb38645c65b8632e9b4096174f6c8a0060ea48ad21e45a0442ddfe0682baac76f12b5947e99f7505cece284ae8c5b794e187e7e3fc4ddd7cd61b17d82e2d0a51224eff1126014 +B = -51381a511393f164fcdf6b17a5dce22b3e902ea3d4551551ca88e21150a6ad2191dc1f34711da2009a23578c4f6dcf76da370066cddcd4fbe67590adb525010f169087f41352452cfc4fa0ff304afd1119d377d7b3849750062e74c6368436b9de926bdd6174c1e25e1e83d02030fffc7907e6e2ee6a793f8fc6cd8aacbe3769 +GCD = 1 + +A = -44fcf777c30334efebeef67151586b2f337602ca4905e2ddd05b7bd51b24e1510622603af6d17326fe14b476f1bd44b29498f7e4573dae76e3d0acc79876cc4d6fbc1218c99da9514def99f615a5e37e0b95c6849d9b76c3a90249d6ad583ec22bf8801ebecc66fa4513260d5e1b4c65e6744964b0f537ba5891fa44f2ea851e +B = -20bcc244584a8a859a3293bb21ba5ccda6237f2598af0604f0e9c76fb969e6a1a992ec958df35dd0dc8fe37b3516319296359dcb86faeeb6ab9a48257883b6cbe2064a6215d51dae9ae49fe0aa77febb7b39f1f63487a24b5d3b48ff6ee56eb18816f074db12d6393798648c80474d9a31dda251cb7c487f58b08a12b22a9263 +GCD = 5 + +A = -c2202239a2b5b74c8bb04abf42656a1ad2601637441e6f37cf0a0759df08628197f50ac650cd4395d9b5b7bde8bc85c31a5f2dc12a11caea2f3b2b56a95f7d89d9cb5e43c83c4d4c85ccd7b1a74a7f5bea1596880f574bf653f2f8131a9976fb233de02645f1320e47421766f5e396d675e1da9ca9a8de8a587f70f8d7d77ebb +B = -b0075b95e49b4a1457bb911caf8f8bdf2289e5ca47cce4806538cbbbabeec5571f030344b3b8fd3877d562a3ea91d659a4007647d6c92747589b6ad910db0ad116b08a9c046ca77435d8074f2b1f00b18df06101c59d5f83de86fc8c750f2c6a65e21d97436a2d061648339c8336ab936412f77e710a12dea3b133e9c4223de0 +GCD = 1 + +A = 68d8ee04cf030d2566eff7b8d0cd6a0afb53c9d430325d17125010253ae6ab61aa741f296f5c4d58250de272f43885739c20ba3784b72c734a2ce9811a3aa8cd0c6bc3ea38597e1ea39457a9d7d7033ecd39d697739f70421bbbc56c8813c44117553659b0874ce8bf7e327fab86399dbcfd4a4d69da73d70c8b9e92eda660c2 +B = ba9c80adb3b324e3eea0ba07893b48da9e2fe17374a87c1a678783446d4625fbc12ac9a815e057ac7d3e41319aeae93fc2e2eccee7c92bc15c0a13ad5d6fdb057cab8594b922ac4e51c0f861b46249c9a76f7d1b9583e736d35a58b1744a469a9e77ad66ee84c8ac5a071ae4e8449559b3b5a4e52f0a457f41a3edca74d5a8c3 +GCD = 1 + +A = d068b4b23c3e4ff3e0d65487134aade29da80c0765ef74e1b2f2b80b3cdf9d1f650d04959c9f5bacad62b4ccab9744b7b2b9adb15a90d140b3f16fde0976b0c63b6fabf9ca2fa838a736a2545dd6b3d927cd94cdd1d60f7c223c41e457a435381e3ae0593bec0c08a4e6fc3f5deb5f3cc07c501007f7084b75a2a9a49d229996 +B = -5d08bbc1c5082dfb7cd66f7cafe0b22644f1487907e7c4f3b9fd41861f9142d9f0ef41088d019bc0db541b0c40b03a91488e46c1aa3c5becbef3596ad283d21b7ca531e2a2d9d9228ab64c86da9e9aa439f5d49fbcecb0e28e5c0aacd7001c756eb6b75f71e847552a07734afea8ab4ec56d0eb2ab52d4b8cd843018e97bf840 +GCD = 2 + +A = -c99b2f7ca90a10481c0d8c9afcfed463744f7a915a207d4c3a2bf182a1ef0a8792857475804e613411e9d7caf66d62c3cb1673ee654a4270426c738984c204e82b662a22d79e7916cf1075cfcd5f149a0555964a4df879084e12a297a1ebbf7653b7bec92de19388749310243bbd735dd407cda8459a4e5531b9892154764330 +B = 14181d2c758471fa2c1a213df4ef08671d3157f7582f2f4646a66b0b730c1e66bb2120c925b48abf0676b567d2f776e6d257007ab1e46423798728d95961dbcfa2529e53e985d1349b882a5a11395ae35e034cda6738203fb3bf3005c344ad93813a2d5ea49f4ebfa281029c197cef56940af09476d96130d00f9fd00f53baaa +GCD = 2 + +A = -f63cbf5915fbfa0f0e4ddbea7deab610187b6e177ab0b07e89208b9bc7523bc0b8ebf8959824309dfb546d476164288bc8e5519cb77ee7ff321e3fd3a78cae8b9b5918aeeaf09561f1a73923d541972a084af5a0bd8e2cf437980deac2646bed44a194e785ec590e998b2623a3d22f2ee57e847b9175f18b082a639a35cdae04 +B = 72b9e8cca1d38a34091abc8ae9cbf551f981d03f0d6062ca7a047dfc29fbc9846583d5edac6d99cd9e13f12655a4520352344d8e88fb2232b4b63cb82147847b6ae4834c0f6d6dee52b5f892dec5843aea7473e4acdaeb75b86e62b08e29d10b0971b1c5ae6f345ca2f1573aca88aad298b4ff0df5ced6e4c51d76d8c77ae199 +GCD = 1 + +A = 123cf2915d3e2de6a3ee109f3232a4a227fcd05fad8cc15f9717a788c88462fd53f278b72dc87499acf2e3517438be92739e04b20e129f0643bbdf4c7fe4a4982832d1958c7e80985728636ddd4be24b1df902afb53066879df8239004a0872b5760473de85af59931e0f88eb05bfe306395ac941485d6a843d95f9cc211de8 +B = -fb0bab19fced224b475243afa5c308ae32f9d9e0cc7d222611506ec1709f68757a60bfb7a881ca9de80e2e06b4ac8ab9bc95d9532eaf65bb88100ff47d5950831191a5f064e6e65a6561c4e810bdc459a531a7b9abf561612f0ca8c5f94c3e7810630e117b13fb0b443f7216935e855712694e6f6b0a229ca8a867e6ed55ad4b +GCD = 1 + +A = -a5c4c4bab4df869fb46ad8a7a3903360f71f057c1653771ef7b60f21ed31114d2909bbeee54c4c01c65b7544c75e1a8ef56f134a882af12bba61f477d2405a7e7f56bb777297cf5a27c7c3e4630af1c0ae9e8810efcee88e13638b41f130df3683ab0256b95e53fb022e57fa14b3c67bc66d6977ccb6a8dec771c4aee4f866fb +B = -aa14ceb645aa0b3d85557da7b1d43ae4d8e2d819be23d20ab7714848a955a5cd0b318f1844e86917c3f28e19ead03ba5856258e0a699566d302f474708b8a04c98b32e02dce2c19d7c5109605eeb56a0a88451fca376e6021c5011599e1edb9128ea08c746fcdd327d094280f73b0c09eb7d2cc8838830be6b82c4e6a7db2ccb +GCD = 1 + +A = c432f60292d6de79ee4d778572aa840476ee43a257d3c971868dfadfeea03e7d941c41d4911ab0a91316ca326f923f5b64c22d1c2bcad055d2d1baf94611736b6a27e09792d2bcb8405b71852583c498cd72d77fcde6e90010a02e08a9a9a89fb2a0192bb14802585f2a6084709c7d9e02b3d8262cc48521d1dc0f9ad2fa73d5 +B = a8dd3cfbfd8fe648a3793273da8b26e36a3e72aad6aa21c9c5dae89d6e875fb8e910d565020392f6890f7c5c9e266de7e5cf5b3fe071f7c302d2db2633c4975823d4df76abe3377cdd9088b70f63ed39c45decc07e0d00db5786b5a3301988d3a98e4c2c1e711aee755ef51efc98dbd35f82b06475b5377a58ac7d917d57cd99 +GCD = 1 + +A = -ff59beedc1d8bff9a050e66f43d5847245c2488f1a72d031fc05d2c88a7aeb0b161afa0b7007565448d427cc9b14212114950f12a7a85d4fd49869132d932444a109883eabc7f047941c37cd7ba297e5c101ee80ef80f73d7f682d133d9680e52e08a048a4f2451df18938f0316fde5fc6fa4ffab8be8fca298234b83c94da01 +B = 6e09e3c53c00d41adc5d33741ff27ef0cd14aa71369465af8116a072938c16fbecc8c196aaae99ae1189a3ea44558ac1e04df56de714fd331235f6d39faa42c70cee662607afc3c84d7309c231a58da226f9a2d4e40e5a6f72fc966c51aaa70ed32fede5f924230530db6b9c9707a4d6907e3d4a68900fc6156da00159a0bc5a +GCD = 1 + +A = -a0fd24f5c020ba8026c0a25208397908e7bb4843f23ff4a11707533a9e2997e3f7e63eb660516f5c7264613e70942b1336758172623dc698c84c91b1dcfddd16805f59674b73fc408b686b4e9f252b982d4d5d7a2162887d63627f1623b228f9fae8c8165804f6212cc31ad0deb8a2791ab1294a7153966c970fad32553ecf2a +B = 6fb229fe1d4135949b781d9756f8fd6d2318e19722fcfdeb1cd0a1312bd9ff93925db04c4fd73fb40462a431e532a6f4fa4b89932f022eb3c0133dab088fec19865b0b000edfb85d3c0abf8362aaf119a2cbb42cb061adec5b8001af12af505a10308ee92849ea3c51e6af24edb020ad15756081257a70f4be0e85ca829ce2b9 +GCD = 1 + +A = -a593dbe4a20fb1b6bf4cd8e49e20e808274a3e3ea125c7f9cf33dc82cecb44f028bec1a0030b951ef8a9c5d149f803d07bb65aeaee9ec0788dee93745c4f43dda5101622a8290dd17b4720692202353a893e1e9e4c52c5ebcaadaef9ca34d8ec7f3c132767717e7fc19b70cbc0b82ab5f496e4ae2b6dc6d8bf695df055fb8772 +B = -de18e2c611bff98420607daf82b544735a63bf2fa94764cf215dc6ec1f68370a049144a5331e04ea554736686a13098d885249357bb649c2d1b171ad4ca5045a78c9c2f3b4224b09c8f63733f69e1bc13d79fa1f5815cc7972178f910efa41314605a1a3c5224f608796b43b973be88b29b3844258b0d2fbcfd206f30506e2bb +GCD = 1 + +A = -e52da4bc3e5d8f60e2da877d1a0190869162ae1c04669519208d74cfa3683b6097b9a5e5553a775e96ea4d419c0defb3eb499c572e4fe0c394deab2bd4d08cdde4c855decf41222707c16bf6b936fe48d4845d270d5e340bf79360e384c119e2f97923de0e4a44252e39e07d85775ba544090d5aaf7b942cad8dfb9e12c6538a +B = 39827db4e52434a69677be69d675dcf22ff54c4572421d7b75de9168ab051fc8effcea565d2e6850fc22e2c01eeb035c892503d04165da23e29649a196235fb9da768d8391af44061f73a038bbc9c1d62481c7460e9ec5a89bd0d4af2388553d826644c9973c4b73c568baf205c08c918cff87eeba94d47d544972b56c8d74a0 +GCD = 2 + +A = -2658c0f75a35f852bb84f6d24671a7315919fb42215873d9303d004020be0428dacaa398bef0be232f0814842ede603cd7d61d7a06e6fc0df33c738a1f0de2e742bd462c757d1799fbd56f3b59a96adf7b37847d594921a32cce54dad3ea31b1d218c38c9cde8ce515767d9d741b3ac1f99201d330aabffd9d0cab11b8b570eb +B = -39ea3d5a9850d83d73da5fd718611596a2f86afaa757d6f253f14f54a27c8a73ba0ca24f08373e3b8c6b3f0d0916492905b73f764e94ebda60b4d4b79ba93719b74a96d4bab92d4cfd20b38d2b9faa63509d15ca473f8ed7a5b432d31b9afe80c0c198ae9608ab4c787961c4e707c636ff75facc899f204eeb007d4e43bf1e54 +GCD = 1 + +A = 1e9a54cee94fc9f8b860106f323b5093727b0920d963d5965662c09803ab027e6095ea112efc46736b78026c7761ae0c0376fdaacedf002cdcc6fb50858de2b7868d2bf6691efbb83ca61af718f36986536059e92f24beb5cc3a080e27f89323969abf4a4b8ba218cc4c27169dad86d14d675989cbb42fc9ac3dc9a4b636db87 +B = 1a88f27e8921f140ea52808d7d474c7377c3d2748fd3d1f6143fc6ba5b6260398b2bae9342722ab23ee578f15d8deb32a0bb46f13467bbab7c3e22485e6a7e46b59bbba9776ce17e67a15692b8ba92743b562ba02b54e648a3590d98f5df16ff67788b2a9668b8cec119aa9d602587c61b17b555f9591bd27aa5735f7882d039 +GCD = 3 + +A = 69c9cf1c4459f359a3ecd0b0d148ffa8535a4e28f13c0bbe2b61e35af07e27ce6d25258f74cc766b91933eb3d6c562bdf45190b9085475dbe675dd5b60192da7fe915798130a23a296d526d5ba4f26d84be4cb1f67b4d496830c09d178cbc0e38d2349625fda6f02c498bbbb3fdab27781f69bf29526ddaebefe8fb4d71aab12 +B = -f7411bee2e363bccf0dd48729a1e24800f74187f3f0eac4b0bffea717099102f59c526a9a4b32b9b60b28d191a00eba0bf94a8c3a7e9318bf985c8c42d59cd185b0f1d774b80a748f55701aeafb858d7a894c8cecc07877b17753079a1437e7104d7527e569797051d6e23b9dc097795ba16994ec46dbe8f9795d50c7e56dfae +GCD = 2 + +A = -16a0720f665fe6b5b7f20d9830ec2c6dcee247c2ffc3d209635cc780fa1ab08fa36124d8236b25046460fc2fe2418485849eba87adb5c393c473b319b32b0f094376f63b841ae624303ba03557a80e1695b0adf7d23cef1279a1ac3d2452f96128ea18a5d589f477d6d4e63da337ca954f7666d7a05a3c4b8f64ee42a16ca376 +B = -87563ed277ade1af23cfe99685e0ce3c175f8395e6b30348648ac34d85e789a93199ee2c63c0e9901b34bf8acbc8c34795950f9ad0c9bd9d8670feb20b684c544ecc3a9ef65786675ad9282cf2ce10e1e6eb8743d00e70cead41b6ad97bda344c603128f83f1fc99da061ef7f2e7a2a4c14d191e5772efadbe38496b3b10714c +GCD = 2 + +A = 4bf84cd267f0bfe1728bb1dd7c977766efbe0124cb138a74f55afb94118100f13f38c6013fb4c7b057847487b264a0fbef5fefbe04833e061adffa9ee8196023ce6a1c3e073fba41c73df3dcb9afc31e9f957fa70347e309b2ce880a6792d652dfa1a6285b77aad7495bffe1f4851cf9b0fd7a9b65867888226de153eb979b5e +B = -4dd4863a399d3acc18a010578d725233c93058c84b198f3a9dbd1ea5341dc6bca119248ad6848556cad6678befefef66b9b03017d4bb826e594dba1852092faa4ce944329702ca8ee5f4521ed0fe13acf6dc914e5ee8232426b4fceb7f39082e3cee3e7275f7ee24ad296dadf5a2fd85cd6d9424d2004aa28bdfffd14af494a8 +GCD = 2 + +A = -fcf0ce69fa81b5c7f869835c15ee2d264e6cf95946d75f0f040c565efdcd017ce20d0688de57e54390c931888c08d482043a24ea048192a98d96cdf0e9a5c7ee33da19592e5210247e081b1fb206cdc6e28a54ea2dbe63e8bfb9e9c002b891b42c99584c6727879781c3c208897247b3f1dec0d55fe152a2e21e77ea868b2a54 +B = b2c2041c93d8877be57775b6a519507546f6f5f5853d57b08d74f66d0f4c2812130b846c4ee689d604d43b6eb42cf8021648fea0ed42b272dee1cf0f7a4c1be591b160b0d93ed1d3e7cd068b2938af4c2eb9395c3e34e04123252544e46e3f9d20fc6323870fd4bc1692fcb52c754452f8b68dc092bfddb29c43a7dae718ac6b +GCD = 1 + +A = 4c55ce5424f2c9d6d158eb0971014be3f470a70dd526de94fadff2b247abdf5e7f7c605e7546d220438952a6b41e7d1bb3533dd10a35b34ea2c2c78c2df9f8c66eaa9b29a0c51428a7b1bb2fa4ea3330e19270b5f5f56107a72880fa69865b1ccf2ad0d64f827c3e8e91ff68a2454c9ceb376c5e64243a1cff9137ab38ebf18d +B = -41ba6b03e2853b202e23108f333b18c512559ef3bd5ff70b733c15d3168e804fedb8ee49a62b416088a9991e244b75754ac40182e521ab6cf546d75f14ef412c4ac43084890599156ee83064e7c73faf45bbd14bba3f1637522cbd1f05160a8ad03486c23df1ff4e018110168e9f636ee6b380a92c0528797226e1fab15db72e +GCD = 1 + +A = ccc54150481e9f136a54a6619f10b6492ec57993bc4b2d9cff3c6be964f640f57bca911ff7fdbb55ae6feb9c36d3a599722a37a8c86cdbb52a2688c022b58b3ecfc7e1985008853d9d0315dfea05fff1ee465bcb3a89420d2875c1d39c54418f16dac4b40fc6838e642be03dd14f0680535e2444af8f8197a43bd9b579d5cba4 +B = f0053588d2e792dc522c4aaa6926486c92402357c0408b3452857b22dba26ed5378f2e8b5cafa2876ca321d1f22b040bff3b9d34f511285675e1f04d39da0c956e84d9e140d995d81ad7c7774336ac13e64f45308fbf87e956508abc37338aef402450272369a38390aaa6ecbd0d80f7a820b85a282f4eaa3828f316d7f39a14 +GCD = 4 + +A = -571d26ad38cdb460292c46e0cc0b1356b0b5665b1ae8a955e80f7dd4887a9633f0d21ffd0dc6f0ee36c2c7ca1a45d4c6f995d9b60361ee944e908e0558e1beda07e1e9e8e88cacc1673e39919dad79802190117ce99f934f2b0c23848bd1dfd9ee7816be4c403509574a043bba1257485522f766d68cd47bb56b3c5e2ca8a7eb +B = 4af3a2cd3081a3b0c5b386894cb6a40a1075878829ceb8109a8fc47d1f7eb93faddbfa851769d5f1090d591194362e8a685efdc98d421e5780001fd8450033ef77102fe55256b80ee3cfc1c0eb02f55099003d8234b3bd3243ab6da6ae04a7032303fba0f3bb3583fb39d2744f807b03ac680e16cb1eaccfe2f00966a74b9a15 +GCD = 1 + +A = 4ab43d9387e6ae566ed27ae06a1425cf614e740b3431bc0320be21dcbe4c06cb57df34fa652832de2d6bf0d998fb45888a4926de287a7f6d5fb7d6cf544f31acb7a8431028f62583c08640be503b953b2ed39f9a416d4c883bf7b55eceeda63199e73de9dd1d2e4f950d5d01aba94a8aa14a80b25cc48f4c47b6feccaea32a24 +B = -16c55ad418506c69b9f3ebd148c406c93028fb061ef4983b21a758951d50ff8e79f989a4a9925186d527dc3e1b6eae06f1e42b4e07d1c8da988b033b115300d6c95e45076557a08bdb4e7ef90e8428a3ae9f7614a43262a83f9e73bece979a2cc7e27f73caf5ec39ffab0cf29b56fecc1bac9d15e8173fe02ea9ad84d686e460 +GCD = 4 + +A = -90c11c9fbe7d26b1fc3e915bdff70866e890fee81958f9e2d818b79a734e4e049c7adb52f3a743e47880856610711d9d07a1ec722fa5a9a896600ba0a3dced41e1c4ede945c9b98cd10ce7980252a857a55fb979a88a1414d6bea2c3b3e4854cd706179491d43de684914759b389e52921b7b358849cb76ea8aeacfe31440203 +B = -7ebaa8cde1150e22f914d2e1b8102dd13cf6e675dfac7cad948a3fe1760588fca53baba7c82a99e50b012a0bd4bd4ed8e5373d48e43a0c9929760e9aafe1d6e87b78ff34b078256e33e9cecac09e52244652ad94813ab8f72405c265186ff9d0cf3e78de1975455a81a71eddc70c84b78540909b1714d7b05b5a4d1115d471c7 +GCD = 9 + +A = -265358b6f4e45cf818bad085c3ec4eee4611cf1e84d3b29ae14f37b28524d36d08ca644f66b54de177ce8a1f7b07ddd898348849bea4feade555986eef5e3fc34acbe05b910ef15fa4f6cbf6eb25b89f58d78071ad883385a17cdaa3afcec445e71a1afcca7121c5010ad74a0e2a8acc58f1b1927b852ab5937a942d50ff9a1d +B = 33a0e5636d22caa6dc84c83bb21f7993dd804dd4032fd5cc2076e47dbf60a0189352cc83be6a29451eebea3fd033b92612b6969e997ba1c669a9f7f2a9be522a712ab861ece3657ad6c54fc3da21b2cf0581dc322dc327d721c7373682bef98de32b8b9f385ba211ac222d0d88a467d54895e00f1f9e8349487d75537a1ae0af +GCD = 1 + +A = -d37493ce7352d1f8b1b9d47db0411e7607c6b7c81289ff059a95741cb8dc12b03cff4d92092231c5f64e6b7dfe24ddd9e12820ee850d5cdc55dd49c76176b19c589bf67894fdc8f2fd37677bf5d3f0bea2422dd1ec20e1f3b0116702da824d2ebb4d61d6cf1a41b1145c73b4e528b7d4ba25215b8ba808ef75ff280bb47eeb54 +B = -7a978f71b184a07de124b64ca99577485e3b2f30593dab6019b0e9c43f749071bb46356205e0e7a941f35e601365a3d4aefd360d7336f815ce737e293a9c2f3bbfe793756d3f3a2f3b3aeb50c5d2157d1a03022fd26dbed943d0e13f8cd222deb1fb8d6a398d8ce39e61f76874e8df6cf96b77d1486f639dec86be6d96b62201 +GCD = 1 + +A = 54efebc6b00dfb7b78438c5fd3d0ad25370c7363992ac2250922525e4dbd5f306b0f28995af8e75ab81615f10909064967a2d413724d6aecc6d5bfaebeceeba7bc00670e90d66ef48bf666c47fc01cfe3813d90829bcd5a0c635fc6342cb361ca72d00601d6c99d4028c78214739fe29d501575cf7a5566cbcb1f393e8f0d5d6 +B = 99d116d93c4ef3c7e7932b1c732e027256b86acea78c2cc83176b7273032102c634f173ff875ec60a9aafeb5572209eaf75a13b52013fa71132943fafeae00453eb8aeb5aa3207a940d351d051d56a76bb853a589969e501a82a09338a58db50dba58d33bfc233c9e1e29b96bc5160e8638ddff55fe3ca9e0560f9366ee822dd +GCD = 1 + +A = -c1b6275ddbfed8faec4d4d4a097356f51c80f33e6221948c23b3ac1e04860e339b60647ad54dc8594637e935ef26cd6ff5cad45bef840e6eb02dc25fb628b7170f48426273b12b14aecf9584283d3d649678d8530683de873595f77b99ce7c7b7f9affa53a32f8b06533be3ac426d14ee754e0a765d93a83872aef21df4ab3d5 +B = -a9663739cf8ca44afa9fc318b80672c9e2dfe50515e55cf1661393b64dfa5d4c88c1ef0a63d39cb25c0e8ea93096d59d9453adb39ade57062b9c0777d00724fe8bec7a7b939e229f0b486c8c8e5847211b0e674e4ad7f770b95078284197754c0f3bfbe36fd9039d0df6e0c6ca0ee08c0e921f1b3ec8e0cf07f536c5844b0524 +GCD = 1 + +A = -ec30b08a0264800a55d46125103f0124682e34df5ee5162db1503875f5c57cde9ddda23ac0d4fdec41c463c97f6f006a1aecccdbf599e9afba7d89feb3483df3c4926383f4ec9e1158389d8759860a62d142c6678848c41e926eb95ed4258cc760dd8e713836a3efd7da1fb733e131703378f73f1e42c44bf1a6c258dec5297c +B = -7e69a3a067739ee949b17175a1ebc4c0fae3ab6109ed354e68b9cb5996572fade11a36065fc65743d886c0fc7f7322f1e5b8c452c993d4a8b6bee2f14a10e3e27757e86b2c0b6d2c4a862ebc7906be9ea316aa0d70a79dbe3764cd96a7aac9ca1d846f27b634ab5a6c53e82d216d73d08e3c139799178f807c0302d84a42b2cb +GCD = 1 + +A = -9c5251e2677831fcd399b0ed4bea16d773bdc82f28c9df1075ee50e751ee763dcf4f11724b72fed1082d460affbe4480b23d5d9c056cccf256177fa112170f4a781cebb07ccb67d9c58715abbd2b1678f5269b1ec390b032730d6040d2a6641152637377d6e02d0cd2cc0ead56d1d5b50d2583cd0fa0ea5bd39697b510e44172 +B = 4a4c65e59ddc31de1d1c449d338d736e8e3a223575e13904eb51aa8357a90f9284fe6597e1ed4bfe3efbca4c7a6932762556136428c8f005364421858dea66d915a7bb0825e1234e18d8472b9743bcaae7388319dc9aef9037f6b04bf37b1a364a14b794d1d3b8b4928515c23027d0eac67ad2ee0d76ea8456eda2bc09d5a9a9 +GCD = 1 + +A = 5004e6511781d7c0a4833e4e5a5c45db4c695abe6a6e3bfb02841607dc8f228be8a3f18a496eea513e8f1e1a8ed9ba848b643fa75808d05a962c9169f7c2bd5a890a7729218c1eb4badf12cbfa61373bd034c71b94c2f50be70faf917070cd9921911d881658a7be955f358fb3280867cdaeb4b52de69934a4d741a949f9143a +B = 207a7d2e93f97fabcdb84a320878d41b2f79d97b8736ac486ffbca7d261a906a8f16a1f6be417d49df024b84f83ee84015e4113515a8846faf6901972a5c44972e0fd82a18f83bb3279daac2c7868059623889ce1995bdfd530641565c29770221719ea602489fefca922a3335acb3b88306e1b1dba914617f8cb24296348468 +GCD = 2 + +A = 1180638c68dffbd682ba0aec037cb3326d3b9894daa3cfb02cd22f5568c7653c8d33989eb777a1acd6fa0dc7150e9ed73e40f39b9c6f8b51eb0f7e50d84183dab0f164ce14b98be6d933edf7dfaa519669e6121186e39d21357359a9a8d6017b5c57706a6cfc07d31d6b3f105281783342cf135b2e0a521ffa97db383e2436ef +B = 16b577daa236efc24a918a5fdeba337e225c86137abfda1cfce0a07f59171abd151b68dca976a30c5fe516fa08a376a34f77aeceeaa3f4114dffd0957a5e92988568b3eaa25627e5e91561b299287f10f3ff30c33086ba27a9b94efe6955febc72884007e35f3003d70b2649320fa644c92d866433915f4db22db93318d044ec +GCD = 1 + +A = -7b49594c5e44e2eb920072625f4ae7f4572bfa6c6397a76455cb4f7058460bd70bbdd829dbce99ac5a53daab8c50b25436269a1532babd83aaed2f78c6fa4e18f74341d3ae17b0e2ec0870d96df0f7a7064152378ef36ce3c5e02b7022f3183468993ab1aa309f14451ddc02ff2df5e803f4a110ae876462fbd2a328780a30b7 +B = e346503b86bbea8adc538a111859e577090de776d7b6268589f7fd5df46b6ff5e3f52a4c1660b883492399ec45c15cf7092a30812591840f90ac93c49fabc4b42919f3c605217070b0b428b9bcf2d44726e74de487553832fdc842e14bf7a074a48d6e2732fb628ba75b60f400e296f4fe6c6f263f166eec1bd0a79977492d8c +GCD = 1 + +A = 9129392d1731fca0316cc58ec96501921568230569769b13569874b56f9d076fd5a01e4f35f32863dafbb3a882697825380176cf4feb8e660fa4a9121586917f0ed71a2b68cb7608e0389d321589ef9cb324d3e2dd53814042db6238798f672f925379661fbbe339f61670666550cd198a9eab6a5d0df39a3c28438908e18101 +B = 7e20839dc334aa833593fbd59d62e050e6545e5caf0e5f380f329f836b2f98a24dd692425a89dfb4072c64716f43de0ca0256b252bf929b17b61d76f7dca91673063e3c2dcf23f836b7748340168614cdfb60eb486eba92a809efd2f9d61db25e7fa293f27b4dbc1a3c7366679d856878a747d59a0621344a541cd97ce8f0e2a +GCD = 1 + +A = -20c565ee8f7ad4b06efb713d4ae987f9547b303a2f679fa5723683e6a413be1c62e221378e96e15a4ddfc0f8397ab1edea2741ccfbc72860120e95bcebecf13d4c5a9e05a1d48ca97c8939eb73b3a46d2e0848e0e5f5454821538a788aa12034d878a10c6719e7e68497052e4ba17c559513b41448c6fd683f01b237a285c73d +B = -2e4f817928c78c2f9fa5daae4346407437c5c386c500c3cb758afb75b064d89f022b98c8e3a4b9947cc27fbe396ac8d7884ff6e4f33c1641fd28c1f69deffe220b0180cceb5029560c78b2748d418e0d2ddc22194be0bd9163163d95c0574a9d4032086122bf6d106b746dd41d6573ad612bd51472a2c23a344a034e21a3f8e9 +GCD = 1 + +A = -43f97ef65942bd5a04aff5a2ef0c6b42e744185e6cfc01eb434c41db7a30e035fb7bfdd891be1b343d527cb01a3a861d1921f92f2e5e271483051bf1b9838d6df928f807c2e8bab9af2376545b793eaee1ba14e66f97a35a3141cb9063d28105e2595388e91fbdec83d24353c196a99984c4bdadac4f377556162958063fc67c +B = 7d14c95fd913f29e8df9a31ac0a9958abe7e6d59f5d09371dfa4df674287e85740743122018f77ea23d786dc38fe5954c4b39f8170e7b0fcb513cb8813be7c078fd1142664662a5e22b7c548c38fbc2e7eceb1f42d774eda99ce5fe6adf1d25d0de9a74b0db186130a67a8c638f227f7a1cdd36ccc31e28883759184b2693979 +GCD = 1 + +A = -775be0fc4df8f50171bdfc95a5dc848f827bfc58dc101bb1b08c79240eb9de9e0aff378befd46c395abfbadb66a2c7b55767946f457e2851e47f507ad623c18315059b1e59cade01d9aaaa32eb2462be9707a0e825a611ed7fa31102ae7cf6f9e0c589c26909d803a68da529bcdefa3181074ae23c09e16b051b9866b47b4c4b +B = -a3b6cc062228ee98ecf04c67d27e6e608ef259db854667e826fb4d28065d584723da9bf3690240e3f587b7a90e70216af227a793f26669d306a4de8c10d9b564c648f709fd12a2dca20221d9ff576a9398b878a1513f96e11958da940803d28dabf11abb7ff940b6f4fa697605e9c9205d1f858e6062dbc0ac356bea1742bc24 +GCD = 1 + +A = 82a42f94197ce8f002cc7109fb011d4d839acc4d1611cf21d6faac649b94b602cecbeaded96206816c417666c74ab14d4e0cba73adc0005a891eedbbdef97651d486f021edcfb5cca1b5aaf35a91bddb0b2c19615b20201b1fb1106fea844ae722a6836d388846fd2886f45a29bc341039bdfd8f3eccca247495aeb5e37fce1c +B = -f43db37636f5f90d577e81b3a386617db7934b4a3f929e069cb98d71f4db3a786320697efe8e829896178ec352359ee411e2f42b53119297a66355b32b630cad481bfeb37e00254f4458ba006ae2b7381d556fd59808d00619aa902a484405a8547fce6540e78db713e8ab010fe09b0049d0c2254277c4bfc6fc748f3bb5ba0d +GCD = 1 + +A = -fc5ece215c712e69a60dbc15b5ca83ee381141030d155b322fcb23363aeef379b7e272c919af83f9bceb2b6b4324b6eceec94628c7b36bc7d9a3bbccd01c3aa7c0d7d4277c332d2ce8eb079b651f009d8896da4f4e6706ca208ca13664ac930fa707c1339e58aad5047e2b7d34cd7984cb3230546434f18ae2e00bacf2f1de69 +B = 3d1cfe6f55721e46ab0b4a869f354f3eb7b49a76d084f724db604d0f2d0525e7207f65933283cb2feb8131b32fe384a7023bbdda54d331d99626e16d41ece61c9df2256b8802706bf3f49e9eec73ca4a2a77242b238f22d312bd298fe643a6baae9533b8be2a8382b2b26448420644e17fc76c49f1fb47566ade430bedd093e3 +GCD = 1 + +A = -304b9a1db248f1b534112b3a62f4679c4564277047f07494ab42385755841521cec3bddfca8f3c7860b2ec5ef67128f95fcaab7112a32fc332df56f5c26e20cb7b6e338fba11743853733d8b743ee8c9db24f179c1b8e0ccefd190288bd6aadeb6c83142e4820a8546fd15e3127d9b1855fc472afd4878e2925d82c118ea995d +B = -d2d666e855669e676f59ab900e65939bd20833ed8a3510405e74178aebf3fea12630b8c09e208515acd1c199d96c8e3e42993bef315c64bfd0a06a2cad92f9edb04e623146a6cf74aa12b65a90d73d565661c340914a3b34757e89390268b9b8ec2b6753c7c0e0b39ac2071d33ab9ba605924f78229e38417863d008e59ab0e3 +GCD = 1 + +A = 75e9642a674b1dcc66b17f15f3c4f4fcf860337b21804f5afe44d42082aceb17d663252531c8434e0cc197429b491f0cabc346d69b3a0d5b558927a4370a7d615419b85e1c435265e01c99c6fd9c916d47e587abf7df5af8dd4df54d666a7d581897b2f6458c574c64eb2258512ea7823d0f6fca7015dbbf7875a6e2bacba638 +B = -ba871b17116132fd6cf9bab257d2857662148bd3becc8ee12629fff8f64cb11cfd69983ad203872afee3a4d03d847f64e0f827d6ad35b30eff5a9783e1d91a0af415d08a7d6d762e1181efea6f0f9373798967b9d56dc39166d19cf5e4553e8b94d7c9ea252a7cbacf2407a8ac486ea9bf528534b6f95f60f51564fa7062160c +GCD = 4 + +A = 6512d3ab4d01cef3abc407772193535240a5adc152b5cb66a5901afa56ef8423eaf89003da39e32b81115f3f272d48bec5e68c4b4143b3abaa1c721d48b5592a599426893438925d5c41af167c5cfa49bf209b330ebb8a4393ad459c643a976ae6bf394b332def554ba2be6f3fc5dab010692cde549f3c060768f8774d85759f +B = 2e6ffd2e1407754b7fa6ef98309f3b5eabb8e0ef19f25552aa0120c67a47cfc538c31c8ec4fcb47a42a94742be77ac4fbb205c7c6bb2002bc1bb5ba23fd089e98fc09d4459229c84321d813d8a238d1283c3a6a34c068ac481b95b194150dd649d4e35261476a10c36652ff90f2e7eb20ccb65f458dbabb6df398ea81256daf2 +GCD = 1 + +A = -13d2a568f1ac69f569ae28d076c80e6d81c56cd8a5c201e459036481800e2accb339cdcd3680f0a893d7b644fb29e28db25e67cf283637d0bb52065ff88399a13c706740934e9022ec61a180ac31eddfbfc47db9e074a6caf58e9b94420440e1ea731ffe7789a43a4c46ec12972772e077a78e8ecfc2c96f164fe68880c584c4 +B = -22078c08005d8fbc1e8b2321384659d3774a00594b032b89eb144e11e8d1765b1358d4bc6d5a2323378a2da4b48e0ee2babf37e87b587dda73a9d347f26dba4a9567fb91adcc00108485dcd676d0889c0aad00b4c4225d9fcbd0216fbd4ee10c92be9ab175536ce7c15afc1ba983566ab82feee2d93a4406ffcdf1e11af96d1 +GCD = 7 + +A = cd47224e6a25f404048e1b672fd68b342d97a42668f92329810822923b0c499ddff351336b85ab63594e022357166a35284be2723126905e788cc8fc7bb47f5495480ad9a49aeaf913f18c739c4fd00cb85f4b9d6426010f6830cd4e3d8ef7c082a199891824b83d2936202aba14412ef068930f69e18b48c423805d8fce88d5 +B = 4a662b8e37b7467cae23d99c52fc8ec0f998cd064a36c1b5eec049dcd44b36aa960160cd6aadc66ff10178704df95ec4fe5e0c14e468d026ea3a10492c5babd29de256ac06ecc36b82209101fd55650d0abc30b4497830bb2158af15e8b9d54d31b52d7160dac777ce9826633c50618797ad419dd4e769d74656cd0bdf22cbe9 +GCD = 1 + +A = -9c7b998c8753061ee14ee19464ec7cfb075e02c41aed1bb129702f3fd5481bbd195f628e0f0e9f27931cfc107a966b55f537ea010f01ad48357b5643d96bbcf54c37d447c79d0cfd8fd08f70cdc1c97bfa1f515ef4bc10a6eebd3b9bde420966e507c756da2c02673830027bf4d6fedce14377c3fc55e6bc5e809d4f949e4a82 +B = 2255e99e2ab71f27df9deef84ef46e56dd42ffe6e10befc0d32d47fda1f111da546327f09ab1a8ff9f761010cb23ed3ff1388286ef19044f3efc0a43f8150544d88e8359bb07728ac35a1e5e80b697ee3ca120f32f7f7817c2e65ddf914fa6ec5c209a337705ef567a558049fbc4ce1a336264530e2d02562099ec99ed8bada1 +GCD = 1 + +A = -41e4259209ffb0bdfa755f8281b2eb5ee8f16f088091b91c8ddd50995beceaf112445c712f66d13b80bed00acc986ca7ddcb27dda0ac47caac8355e17a67736cc8c0e297f96547b29742f835e42c45e831a58e00ac5c7aca18c8e49df342db914ef0be4954c020c955dbbaf9f3e93e07c01dbcae018eec4e8544ef765a36014b +B = e22e8243f69740f7030666c886853628d4352e6ce9ab11653dafe30127ac4fe86872fcdbca9bde6d4cf36e223154ef85ff43983e46b09d6edcd7a13c3830e80f374a6d08577925eef2e594b47f858d528ad21bf5748508dc83ecf7d3e86817cfe41c8a9214ad1c29fb49598107c275e2e3b2851d485a0bd0962e8ce84341eb6f +GCD = 7 + +A = 3d4d6c213dead6ae9536b0834ad7fff746dc5409d52327b58d65ac2a56dcd892a74c78104b516eb63838e3cf9d29c3cc1d1a1a2154619cdcc9315113d4216e68480dccc48dc986a2eac133ec5443a738ffb9a2e321b9ef4610cbe84877d732c68d801c587212076b8e9b28f1d7c48360b84c17f0ca8240a244b3dd93b16f73f2 +B = -8ab3499ab8a349672d7fc047290271817fc88fe8fd8c717a2b7f5a981e17031ade7d37d33a3ce17b2f8f1d0e522dc7f23c0767e60a31fdc70be1edcefd5bffce598cd7619384e8c0d326790e8ebb2ea511b20d2c6fe9a2f3d1706b3c0abb02711dd210db118018235f9dc6e76b61971b768847706e93723eeb9577b13529f6e6 +GCD = 2 + +A = -f8834743ad62287445644f9f6e1294b4a1c758deff4efdb833c1913961a26c03e098e397532fa83597b813ee64eb8bb9ef783f08776bd885bc1cc19ee07e2d45abd19a3a324b73f83903c5dc8b564b8e257f17e18cef7cbcd5102e7a5d6bb6d89b219f19e6a34aba1d455fb6652de528d42848bcb67cbdbe59e5b336a52a37b2 +B = -dc42c3591ace769b102cc3437536438de4eb2a43bf8a8c274801d0c72a15cfd5c628bd7b47b144a4826ad55d1fb7f5a5cc9adcc295fd4bc02ea2d14302a2d8e0381a255bea31ce43215fada89937c2c7750cb149940f5f1700b0024a9539fb6b6e53c87452cc254d96a08205f6420b7e14edd2ffaec52a774d5ab26d6df1a4ea +GCD = a + +A = 8d0680b4e798e423132ff0375ebd072acd45e0e642e3c127f2c8683558816e1d3b870efabed4f80e82f722b4cfe228e5ad00ac354568213de22114dc05e8c7de18b2befd2d1deb6cbc4e4ee584f9aaf99f8a5e5084a2b0999c51bfe369d05d0d28e5c5989bf266b5caa90d335d2d71f41284010b0e7527e8582567d3acafa885 +B = -7473f060eda17103bc9804528830fd200d276391ed30c4cc665d503c125362f43ae6287ca40a8726382ee2219149570c69588650e61baf1a0fb9af9d3fec41d58f27a15df936fd2dfa4b9a06c1f0a371a24ad127b3b3c52bc5659390c3ac6813305fc852f3a8abe25fcc492ea23d624b5a2873e1143fe8e75a949a5b21e698ba +GCD = 1 + +A = e85b1200fbce33f3504f7a367b01f270ea235cda43c0b656adcb5e3fda544c76ec403151aaff9ee0fa909d8d41c0d9d119f097111843e971da8e8e66c088b12a71464fba781d5c0df5a368971d0b6a00e961b55f6bbf55a4c32aaf9dbf3bfc2c71a3afe3bceec91683e36336dc2d66d9123e3d4b8c870ad8d925372ae716d249 +B = -2682ecd58cf75a3f1a97fd0364a792f3a11da355af5a0104cc814e6d3f21e14e70b761cd4a51a47f7485d8daf1473dc535a21b941aa3e899486dcabb0720a33c1acc0ab4cd1b2db385544aa43cb8860c2d6d7971a9c7238d5f7027387fb088013497384a408fcd9fd2021952940fd492fa02faf10b24ccaf0fdbbcc3687b93f9 +GCD = 1 + +A = 70a970db644a89cb39124b0a890dbca5b0e07e81169a4c8202ad20bff01a46d8003b130e23af84daa919b53f6c17acfba6726a84ea7664289072aff46c5c984e2971152e18d6cc6f52d1171e1f6c5ccea42db0e4b44a8e5ef5aaedf8f3ace469eba2dfbbb19f1843d11f46ab9e20ca085ae4f029c466c519d92eb9b9c78817db +B = -15a56f26bf32de8d92a618853a4ede0ed62b41f6466aed56b79b97847087ca7a43d1b8f366e32d776c49c3b59beba5559c2a38662576fc20b6efb78bf76d2b1408999f0d6a74fcc9306fdd02a9bd6e9e872965c98840340f6f9a80db69ab42698dae341311140749184a2ceb8b58f73c2de7396ddbc0ecdd11ef62f8e1b035f1 +GCD = 3 + +A = -f14b60a87beefa6c57578c08bf63fb803652fdbd687fcd05c215e80882cc76cab77241a9661d4fbe68350c96aedda89a041cacb49dbc0f415efe71153289ffd86b585df721b0269bc550960128dc143a8a779c9b4e729fd29a3ba6274b0f1d6122f05f7baa1171673210be7bb523ef5550a7e0943d61e8c247435666a40dd2d7 +B = -53cab2c18ae5013e477ab1896f728de743bc572cbf1ccea6f423a4eb1e9d7a04a52a1cd61cf1fa9bf9fa87ad22ec4da82531353a36071fd96f1ddf3999b1d0b55a43b810f36a040b0529546ec495a8da1fa174b274ff40cc18b57a43b4efb8e4fcdff42d3553db1891ca533b118bd4bb5228fc2f7cffeaae1ca977087a317e1c +GCD = 1 + +A = -30c47419211671851c1af0996ea97fa48c2c46a619ee126aeee5b12f7dd3b06df1e78eeb8b14b5b82dc24f73e69b65a2baf32476cb1585035ebee4c1fab98486434fc2da9702200cece572bd376f121ce441f901272dd8a9631d957cc418efbdf795a788e0204ca468ad2d81522d449e5dc0ebf345cfb5cf04566b504c4871e4 +B = -2238c5087a800599a40f927fe2dfad2b950001ba0148f4b9bfd4f269c12e637367c873b0bec97977b8f122f6cd7669a9af2ffeb712c7c13c8edb8628c675e44842fa5a1a895ec4f116ef9cfd580318e078d77c6fc18af7eb9c1dd7d8bae7fa9e1f0affd494ab624d1b146569dc920294044716f91a34b5554c2eebee9aae42d +GCD = 1 + +A = -8f5e734316ba03a2dbe3bb1a6d4609af5034312545f958094f055e02d13333e0ea3114e0afe1815af8fd31710467892bb6b82ef478296545f30c554a9c194ce59b423850d9faacca86a8f60554041c4b579c5671609859cb17694e473b447da40f0c33cd1cf89d90f3cde874b9ac3deefe86273dc248d073a7d73ee009677429 +B = a4f326bf0af69ba18bbdf4d38fd5618482135338316674344c5bcf10c29b07562aae8d8aa44563749add52dee2bf58ca7abbe5ed1457368e0c6f27542250f12af5ec948a12d792da40225fc6379aa1b1eec1feae26bda80e8d7170c5c2039f8a8ba9026b81f97df625e5264901ce3febb02fee1080506903a44c286e1dbb02f7 +GCD = 1 + +A = -a40591cdf91de26b487846e0a41541f03a266b07e8efc031a60ee7cece0f86e0284ebcbb57d2fd1aa8b888eae75877af379bfba7ec58326560cddf15bbc469b96b32fe1130a47c21d04fcba347a4f427ad75d07200329b1aac3553bc21e73b6d9e26685995807707ab5ff52c6c3aef00d95e778207c83cd727c3f67716e80064 +B = -8fb67e563344508261c6c8fe8f4ee855fac133c604284d98b0d3043c9ea0e552b48eafec7292045ea248006e98ed8b77d3fbe27f8d5cb1d7933c1d2b9787dc8cd747a706b19a30a57f0d070361f6eb866c70d1deb76abd3d2227e57c260a9bb91cfe2396f5911013960e29c1a48f755e9dc2ef66b2360875396d85311f34e82d +GCD = 1 + +A = 3a5693a85c4f438027458cb30ae5396b690b0ff23347c786ffe7231e60e67e635e104a3b01bcb25ca51a3c604591b37ba494820ebf5dada145f1df3733544e09094a42a97d4989530c0d67ba57ce3a49e75e4986500abe6fbe455611dbf743d6281b5660d7c5ff0274909769c5ecbbc8e5fcef0a35dcdae7a5d8e672cc228328 +B = cc048c716588c40f593d5cdef7a97db2fefb8add52c70d00ef30f9e31d2f2db96cda9b19aebecf0908017782a5a63693ebe60b356c53acfe18d95cb81fa57a50b2a9fbc737fcefb7132c9e1a918ddd8031faaf5ae382a0ca3a7915047fa6703ecec159462d866c67b9b2dec7e1cc24cbdb5dc305c637f64cce54e9c1278cb151 +GCD = 1 + +A = e468320ff548ba7074444dd778253ab277afb9b4432b08690af12b62941746bf7814050ab479d5a0bdca6f5038bf0d881fc66c3b9dce0bcf4f5a2ab36e19342037a3dc43895af88065eeeaa2062385a2746b0c09f91834fb775a5e7aa91755a3407efaa5841e1dc8949dba77c6b9ba7531edc2af0673cc6ced0a9230f4fd969 +B = -fa4b86e63d1d3267f88354bb06d59550891db99419ad40234576dd72e6b1785a76be0d2d3ce7dc5e0abdd2bf01fcdac297a16cb5bb293a84484586eb0d7937ef2a79e6be9a8be96e6875fa9a89fbd51966056400b8ae794accf6af533e433b9092148b6b2139d685bf29ecfe090d6fac137d6378251468715d50c220bdf564ba +GCD = 1 + +A = -91e7b626d52ad3e98ef15b7c5b995614d7c1980acd7276bbb79e51a6799bfbfebbe473e809fa843edc2a4fc5e00a14a7eca5ba71ec233358b8859ee051ae9e68bfdca6b6bd75daec45de9873ad73afef8724711a897eeb40e09e45ef48d7078dc956998ee1ba7ebc8cbaefcc47605af2dfbc5eb780009171cce20bcf95b410cb +B = 99ab8c668d78d3cb3e986daed70b81b4995d1090fbf578349e62c66f5546018dc2d4b2f9f18c0ce478483a2f8dc6e45d807b3aa4bd5b2cd68aa1d156f3b9211c1cbd2faf2c459a54ed3136560c7a7aa2c0dd4da3fd8d8da8ea934b498b5689a3f0efa3b56952b35eb80b42ea384eee53d1f9767d0ebad2900cd149a518fbf8f7 +GCD = 3 + +A = 78a6d44c588df41f522ab06c1779649dc525538f5538e34b1fdec651661254f801f2382580697c49d9ba653c368fc9beef86876252cb411657a386491d32846c898bb648b23cb58d175bac519796f6f8092ad5b0fdd69ca132b129df0ab5ed27b637f6b080cadb6ab5f7cdf0be0ad61acef2b1fb8f70d417ad650daa26d73fd9 +B = -e34154eb0a91bf637a7a3b1f13bc0859d72227db3d7ec1267a6bff10cace80aadcfe86bb0c83d421d9b675868fb59e7b463e4c538df5dac6566b9b1551558e886a41c25f46aa478a70305e547786f966571f22439929b5cc940639d35802155bda1f4b8ff4277ee25035251eeb02ffa3451b81e38c80790a7e099c111850bd83 +GCD = 3 + +A = 277ba648989987c89d0017ef02818f51f8202f2a5177719e8d210224fcb5e1ef3a24ffbc7084fd02fe0bd293bf732215cbf4cecc302b4ad57441ef4a9e17ec3afab8c49ed41de7fcfcac5399d47a7e89b6bfe925d70310277649b8a921b0fb05102c24b0d783f2186049ac8f55f02f94bd7f523e8ec47f79ec4edfcb67458b13 +B = -f240ccbbb4c09e8c019ddd674fbbec2ef862030fe21c0eac295fb2efd6a937ba047b184fd8f495aa57ab633e571ca1f7782e43d8f3662b2779c29d7c4bcee48ade58db47ecc94c1978fbb528ec8cd500bf08ffc28c4e257bb3448110308cf54c0c827264f5fb2cc4570d06fc0dad32e08b0f461d5df0bbb61a7194e1616887ff +GCD = 1 + +A = -25fc2f439faed14765bda423a9705cf3c321ab6265da25e5aebbcb2706c4a97577f0315ef7950108908cf844a7c6f52638814572b0ba1c26b6e0a031ebca0f71175f82348da8e9c80b37117d439c450540396b51cc4f7966d21b4829d6ee59f012114ddb89460858a9d353da1b84ba51df5c8f16fc4fc7418dbabd2335a2c760 +B = f1c6868e1cddfd371550ba9c4f3bc6250b9f46864cddf259370366578140ddfe252e36e82f184fc874f9efda5b4595f39067f04c3854f9578355a4a6ea7a74969529e5c40b12a9d0bd96005bea78f80f425d3ad4554bbabc12917b18dcfcb96ff2aca213bc0b9ade99a2dc81d8c03281e35f5e7d82ffa8e2b4cb771f7972801a +GCD = 2 + +A = -27020155555ae28e969e1f307e8dd0672d3a62122abadf7b5bfce320cdd83495734ecf7893f3611aebcca183e7269946ceed043f956b0d91c6a7b63de37314c8f9fcbf1a6b3b5686aedcb51b89f5db357a75ec4346911b2d565e8cfad9b4d8e56fe026323a599e2fbb046e334d0510528573c04c6b7e245c42d596d0d56e1257 +B = -3cd68fc1d0347e90b16ec92f6ddee506aea48575f3f2a615fb74ec19ef0a22924a5bcadb946cd13f98da0dcff4d5f8a5d5418ab4cf9b6275aac694e70092dc0b3a8f242d8e05901714db864be88c674d3a9331096f9da2ebe0ca350c792e0df9113017a98aee589c16705cc2c4c61e7a43642d9e814ee6c27e86be3a7f40e316 +GCD = 9 + +A = c167d1e88e30299e9ef5c70eb75cbda23149b7d438c69066f321dd16c405369baa196595614ef9ee4d1ddf1982a3218e8eb448a43d4407ce49c3038efbcaca7f04254b885c3786f3e57fe4c8d1b49ec70c7687678211c7d7cc909eb17c9f93fcb8a82413314f7cccea01fd3a23cf8ce75b90bed7f6709e5dbcf0f62527b18d62 +B = 838caf24ad3111a195faff7799f02944d86fba1b473fa3ad7b5bb3a3a4538665370653c460d15dd0ad61f37a0a7a256b9dc15b936157b69a6df393de4a665f87cb4a75c62448f0ffef038ce3433b443e077105ca1598d6da5d192028355284e764fcc49c257c51f17b0561fe33ec4a13b5e28766997cdbc0f5d69538b40cd +GCD = 1 + +A = fa2f6442a580092ed7a3888f2c19145e25e6209581db175c4414ab37d47e0e01c15d52efa851169441b3f678ca896599fdcf0fd24a0bf54afa42d43c1ccdf3930955ea5e7499cd94af363477ed2c1ba09e3615e2c2a0d4c1fd5bba8ab009d173b6bea067d58a97246610877c3a5f9b9343f8abdd937ec59bbbb224dbf9f1f6db +B = -b5c75e19d117f35d14ea948ce0edf3614e8cd7501ce4ad8a85da2baa084c1fb79857e703e2178e6a3ca4d0d5294755a7f420995ba85e435b60f30ade497b472507579ced5d60e58b60af8b452553e9998fe2d15ea1097d637a989d6a057f3b1e172e92fc30a015d6010765c9b3ac365ca558c6e545a2dbfbb460ea2f34d11516 +GCD = 1 + +A = -c29401ee730abc257fd768e9c115d5e5ed1e9bb5ef7c3674b3ae194b89f5217b44c815d3cfb0acb68ba7c14ef3e8c369fdc34a6a61a0776c0caf77d8d97d388c64181d82d79ddffb7fea81f8fcf0debd101acff8cdd0fa18f0a25cd41e2a94d4d2c8065797b88f057aa035bc9d82262f709222e00ae4535ce39c6640e6f000bd +B = fcd76c2119bddd7f4d0b12bf309c2c0d61eb99f04cb74dd211efba3d39c6e2a6769892d2ce4695545e8e47d00ae65d660c6fd475f80cf83f004bd08b7d527246b373bf492aaa192e4f40147d8325e9dc5af966326e62909b37b7b820a56fc236e277d764dc183945c8f2bfe5ea14898cded5a7b4d7727c96dbd51e5baa899c0 +GCD = 3 + +A = 3e39eca99ed7b6278b47b2cbf1cf9a401f3b1696426d469e98db7b5d635189e1cf1e799a63291467bc37757c251a461c3763bd712dcfbae9306d76a58c2d07fad9f080910603d782dc6ac5fc8c56c4cd9ee9dc40226d65aae9543dae3dd400697c8f3335a458db60a02100d8e117097f9a9582759da8693d61fc105b83790915 +B = d9fec1b2060d911af5029d4c395f76b758618ffa87d9778a10578385e655ca711d907c3f61db67a6a07c6911bef7b27620b2a7dded0c70d5da92c31fdc67524ebef05086ed7955a2507bc627bf563f59fa7c36f777680fdaa9d25d369df44e869291196206446499c3b86e4a2c73f8b06a6ee0e25fb271ec64e8877905130108 +GCD = 1 + +A = bd51200da2c3d0770c5728cca3fdaf620f14c5ae882c3d2fc59d34c12313961c7859546501afb8e3772e56f211829d6db907560b663b9e10bdc90804b601f8da641e3c4276e118e29ebaaeb87d8125b4debf937e07a4cb63facca9a1c0ad00f68289840a44f6532c1e1f864d235a9c17db505acb0275e2f2f9b64bf36b616a4 +B = f70ad24ea5364f726c3eec09aa298cac83cd7b2cfd66db17752e4ba390c772e9a30cb1938f5197867ba066734636ecb4089bb8cfd1ca2a889db8ba0ee5b19d614d03b1e9f1001eccb2e0bdd916160c272ba8b989bb7234e441c62b4a14d00bf2196f3634ecbef017f2d6271831db80931324642f6d8fdb6abfbdd7fe67a7172f +GCD = 1 + +A = c49b9eafced537e25f85799ffe36e98da095cc114926606ef3215393d0be949dcf853f00f9d4a56cc3b1fc3280a1d286ea5a185c1f8b439b03b8af825f9df745738abccb8a74f25a504b9c9eb8716dc84dd1b476573b3cb6f47b762f4eee9791a55e4d0d2f3cf7eacf87af65ee6059e2f43b0f743415e13cf8eb33c119a8ed96 +B = -a1f2ec34a2fde73c5bc7b990a064452085797da7bc8ce6856ce93efbb072d944635e9a770d883f9178fcb3ce2a38f34afa55ee6f59a688e7069dec33ee5dc5453a6ca24d17f6f09e754c1a106335dedc947e164bdb843de0f909064487dc283d90a6c9af77394602363209977e74ada675639e1fc25d3fcca80933818b126ce3 +GCD = 1 + +A = 7b779ba7035f4e9f7f83cfcae89deb28294f1ecc88bc188a5d07949a99da2da06ca0cef147c46569ef4dc00923eb6b5bac470c90208fa116a29a1443c7c3bdc2ff2be17c2c76b585222c60f599f261f25678c7610444dd8f6367bef187f82ca8aa283198290e82c020bc5595a18e45d6371c5355402d5d39dd2a5e9ba35e3d0a +B = -4f87c64d76e5778452a41277faccba96d955dbf91ca686a43716e507476b4093e1b159013d4a9b8fd7497b0617be8f21de9cf6127e94d71cd201ad7ee2200f30fc2f383ef1ae7e319c6e7ebcc30d227f20592ba9685af229d394b336f9e1d20e3f05a9c3a90493e7e6b3e20d2efd3b3498829ee3259f2bf03142cd57583fa166 +GCD = 2 + +A = cfe99b0e1f529420242abd47b8c13a56c1e6c492db6ac75b7788999fb69e51fbb00d9c027103e240210b06477f1bf79090d74af5ea44153587ba88c779307c9d855fdc688c422a0fe4202796d4d3b273d2c2d60c0c22d22305db1be15e94748157a4a0331c06c189750f9a9d47244fe36d16138a6497df6d94db70672fc730d +B = -fd8e7d819c4af7f84f57158b9b1f5ce65e595ead9af02393d6900fdf533dc7f9589c619e09c2479afdfa63109984d59406cadec2157b7152a2c50b04211776063be949270ae88d82cf28921fab1ba8020f05db8e15ba85637e1b96ddfb815cc7245250aa6cd8e1c4a2016291b6755fc83e98cd61774cddfc5e1de6c96197367 +GCD = 1 + +A = -c940c1e846b0e625370161f33a37e32c486e9d45cc2e9c38e362a3e77e13122f22641c8aa11d3ca185eeb94b3bc77d5b12bb906875ee06734f848434d7d58d1c666bb8fb8d0546c2d00fd491816643c05616968c7a41a8b7e5b9de21fb7b20e94da9aa896243db5bcb9b53e0a2a9c14fa288754c352f5e78ffb18e73c0029bd0 +B = 69f1a766a98e27ed9d66f3d4fa2a4540d3fc3f4474babe926b735a3e7c084fd176ee5036d61da0bae4a517e37e65e724cecc73d94e79cef82bfba9d72415d10d93dce42bede9e79575ab6ec2b245b54adbec85517ea1243b9fb1c89c24ae62c65ac66f84da789d10ab3ef9a10e43dce60d8bee12e5fe6c4b51294630a6a17a13 +GCD = 1 + +A = -618281bb5de3a32cdf4014834acb9a3de1fa10c5f60484b3f34f06175e5242062cb2f024053c3fd889f7beef0e5a7e3512e67c00744f979cb218b62ed637d1c0a75e56db4f71b09d1c9f75a00311a7fb7af7a7b8fcd02725973eb9ae0094bb9896b741c24f03234b3bf64d333fab7cf3b02895d02017b531461a8bd0555d6863 +B = bd432865f99d5ed5d8acd7dc58cffa98799684ed173afc34ea0e9ef6622f651ef6b7a8aabd45fcacf73b041c48ea04aaf769a1956a2bc7b6c47b9bac121776c0bd4a87e8e98ef3f91d2825370794af1ac22fee25a244ebe4ee7201c7f23065878dbfadd180b740c61ee60d0bb06a1e54d1cbd4378a6725375b53692293a202a3 +GCD = 1 + +A = -b6d08d3b454bb8dcdd5fb576cc1b96a8326ddfa01bb1ff24b41a703ae9aaf860c06d5050b3636880529c2868959e51a2f9992774e32eb11ec877738b36f693ce369b1784ad0197a1b65f607cdd66980f47fd37c97d98a44615f5fe6590d780f89a9ccd0e728974e9bfaebc8f528fbf84a19fdb9c2e2f62a8c3cf338610f44095 +B = 8e47efbbbb4cfa2dd3be53ec2c4c253327c1c0748601e2f3d190ce5e7c1f601ec049a45618338f7ea99b96cc5825b3c429d4c4eb87468f7dd6e87ca42dd230262b618fa414e27dea2f5e0c02f0ac19d0c5312155e2f493f4fb33b2d0c71d489482d9024e36d329cf8c3fefaf1bf45d659ec36b0fa4e919242633fb156c09924 +GCD = 1 + +A = -f7f3ca34f2937ee1f6f73fe4d7c97861f95f2eb44f34c31e47f31f7eee5d4ea9e4b953a109fff0559b934b2f89a4c8e92db958c640c8830b8156febcda82a9985d4b5f5f46971ff256e3cf5e96a5ce634b68a34393bb2a0fb0d5002672440ebb031eb084fbc83ba5fd40b8c9cf2b62f0f30a66c9e6b8f32740eac6ead8943509 +B = 4ef0f9c2209ddf98d89566abf4c573a5abfc94c5dee0704c4b22b0f013a232069afac798fb9a0240713704ac36bfd6c5543ccf8d2bec2ad83d6547faff19804486ba996d0c2f326777053681f8c1695a4163509c3e18a0953991883430dc9741b29aa73766d226cc1f8b05fadc735b84074a5ae52353ec113f264202497a61d2 +GCD = 1 + +A = -3784a23ea6efbeffb28395b11676296c3a3327f647137a06be4a57cd4bee70f064434812c3caac0c7bb98b2ca2e2bde1e66a8026f380719fb8e1467aee380e07d88fa120e1cd826bbcdba6a1c95664f1b1d165543044e5580710d3b754976630af7d5745d39314ca64661ed25706d156c5d5dd0a6d20ccc2708946deac49a61b +B = 7d262be70acad7ec9ca29045bc60fbd9375415c8309836b16dd06c22c5e3c56f563326fc2f77322559cfe63bd2badfc81a14624d0d620eb29a96fd62fa484376c87404df8ddefc49070d6bb63430e57f9a886e62606b2a6e77b6bd3e3f5ae2e73d7f18dfb1673a4c6d79e26ddea8150723cd898a78d8fd90e1ec9f7f10e98ec1 +GCD = 1 + +A = 6fedc24b248cc9ba6c353261f5830d54abecd1159fb2df362c97a79baf8c9b122c5db6858663da286754835885b922d3240cf464c831ee660091cd78ffcbb26eb85ba6a32c2949b4fccaa24546ee8d14dfe982d4c864e9be378a9b4ff4b9da0fde86b018661bdb1cf76722e526d48d868dbc125973847d3c551ad260b81922e6 +B = -a0be9223c793c6857de0250f4288f05e1b6ecb93f802063fbaa2437a92d39975883edbbe4a48ad03ea0eea763ce6b4e1b1e47fe510f3406a47b1c4a84eef9f2267ab6643d4e4005456c62d612a84e0a99ab6766f90b968844b3c3846d93c01561605acf58b90124d91e45f3be5e88376deb304fe196174322e21ea407bf0a56e +GCD = 2 + +A = -619c08b252791873324f07417640b9080db7bfe159ea7c7e8b75080456d5fdc65fb13f9d4ce5fb8e4cb5a9f4f3b1f972b7067d5ced3b57eb88d01943e1a0566619377ecd6ac5562562f0b8e2820753e9c7ab24509bbfffac5a68c41847b5e96016fba3b04168f56311185bee2a118651f1fd0840564b364a981bd094640b9d5e +B = -81b4e28ce0df6cb45f386a9115abb06f0aa4f707b6f550123b62284bb020c3f188f937770c2dcee4e341e47e23ce2905febc3100700ca227fe22d0965b6c64962e1ed38bde3e3299c693a30497a1c0f8e2639a25c6cadb5b34b0320c2b7ffd0e24371a19d7f1057e7f449227ebf2795b36755f988c184bdd83d0893a48d3cd82 +GCD = 2 + +A = -5f7e9a7053dee522ddc0c991502f1aa42f1d9c5e92e775847b96150b9530463f76efcda717e105920ed429c65e1aca990b8e925eec5b3c792afcffdaf4f398a06a0d720b75223ab94ec6bdf922cffe224eea819e14c3632a23c1b92b2fb749f60e05d53c24ee9b4b7c0e72332c9c22822df32ed160a99507165ffc739d1ffe8 +B = 73fa6bd399ac802ce4d9c5700c44e7ba28da2a5698b27fa828c67ace56ee660727f9a3672e05e6f3946be233bf0f406dfc0cbdb141c6d9973138b5ce237eb7aacd78c7fb4498ab1f183ff91fa2dd7d6f44f7052004057460704608f23d27e79fd9be41a05294c88bea241ab7e7b8d934ab419b36d15e71c117e96fbe9835c1bb +GCD = 5 + +A = -542e12adc48143ec459693957b9a61eafb545e4384fb430f8628b9c3d112608f1437ba9e9a62741a0e4a388332993f118bde0e042b7d251004c0b2af51d3a31f42b68f2c124f4dc10da1b3d7c9c958ca4efbcccfeb69378b69d5f0e67fc91094ff14a6a19f566643e03686ef6130afb602dd063d2b95cee41db6242b812da9a1 +B = -d2a9224127ee5ab97ecc17116c598e21a62b0c4cd8b71be3d89984786d3a8a87e3c5d7a7e552f609ab2b26990fed85e95f445ad80cd32c8008df04c1dc3c9d5757900b3ad9e5d5a5409139eeae271215d1f0a7832349d3115ddad3aa33b0555e9dcbb6dc80ae201242868f50c6233196c7740e3a8877bb16b805ea43f4604e21 +GCD = 1 + +A = 478f222b9a864d3cb794885169ef2f6343c4a890d4bc21fd3612efe2b69386a13b126b69ebda353797199350c175939caa31de5d0b01a345cbde438029a5b8b64e6de21cb1957cc236fac64887e1f56137599ef419c302a7b1774f89130a585c90fd0521bce73439ca2b63692656295f3aa82022c24141e98a285d7de6dc48e5 +B = a1edf273b61031f7fcf705963a300b855e3120e574818c2b3f5ec096d0679aba1103551df6ace26461a9eb455fd7114db985a06cdeeccd7ad6b22167581d6830264e28b2561730580b48a8e81ab2d6dcc53f8fda79a4bfb7c69fe20a768ffc943ae62529e142bdfcd148bb4dfdfac808b70eac968e0c8d28a4c1dd1e4eda70fe +GCD = 1 + +A = 5639cf8f671877ba7b681cdca449159cee1f35254d224ba447eb223e7985dd714854ea75c43c8dbc0da297505433ab6e8450f244c43543c27d81a01804617a5307ebd112af15c896b8432707d26f6251a4c362303bfd839db699df07ed79ad6323cd75ce65c58a99fe63d931f4c97ce3e60c77ad1d4490d66e01ca0cd02289c9 +B = -f29c9366b73050baeeab2ab07367396741fee501f0205e8fb2a41dc4bce2fedc86dda9f4043a089b22966cdbe11211889310e700de5f42b09d36e48d827ddd88972169391db1896e6e621fee7c94b72b64dab6a9d35ac2b1c446816e5db9dec770a5ef4923194dabf329a13c87ed3a2eba2f6f2912da9e02ec0ffd1c48950012 +GCD = 11 + +A = -40480842c3c4ef4d5b7f9561d4d21ad617380c67ddc6ae861091ebf36fd2ca8939f11442838b6dc6f3e96503a4ebe3f6f7d96089c5cce5e0342d818edc08184299ce6695a5548149fafb818f224c9d834363f286e39461d491999e122f210def8acfe89d6223ca427802779be936d20ab275880e4cbe8e3f903f50941f36db63 +B = b17d57ddd939d891a688ec98b898ad4e36601f5aba8145005ed906a40606e44a2f21e51dd22d1a15763728c3764922e4f2d80d514cf0f2c3fde727ec2ecb3a015cfafc12531e62136ec10a6ba0aee7726f5241ffab7c6455519d7cf44cdf87944010dd8c0e19509949bc0b66e5df48ce3458c8655448bb42e0843388f2c69f06 +GCD = 1 + +A = 8d98e252f4d11dab689f23e3af245ae5ea4ba545fe2ef2c8b4caaa5e88eddfa1d873e2da792917c05747c68db67d56d023cc228274eef3cfcb76680bdba05e978124533ccba71c9dca8106e113738b6b6ae0b1331389fa9eeb7456cee6531c69214561222549726d0cf15aa5953eb0fafb0a1cb3c33b9cfe55dc74e4a32f67df +B = -31ab94aaec376c4f17c63e7fcffe8bd381d10ec2927334443775dacc0a14ff1c7e7a77e56e868b4f977fac8c3da20b0bdf4a1ccfc0b5b5d78dadd5ea655af91a1a5982cf92ef22f858dd723ddcdc96bfd809d44e7ad7d4f92df95a8207765b3a37234366c9dc362344f7997f2a1596337956723ead10a8627417d9d213ef27b6 +GCD = 1 + +A = -320b45099e6a66688eabede6622d014d890f2a06c6e2830f820b9aeee8435c35e8ea683016a1615ca7d4e604136b968776d044a94a18af819092cc383b07bc9785ed47bfd3d9f73a524ad6829e729fc61ecbc6c48e469b587689f9c96e57a146311dfa4bf92711be0fd69162147b019b968ed4afe8b2c57d64a5df39db013cd3 +B = 92ffa658194707854aafd92140231d6fb3590d414b97a82b2fd43d43695f09814b498f5f6496f64752b2c6796632dca417991fe3b6b9d6beb8feaeb1a56d1e9c45ba38de64a302f10e5d2258b4cb83d2c4dd0b6883e1a8e423655c41df31905cfc6263d7d5e2476904209eb6d18a06db87cd2b8c5e2f774ed897107f7f1e4f5f +GCD = 1 + +A = -5741ed6e0e435d18de08555c70aa54525368172faa6963c567378eddffdcd9520dd889a1b5d4240cc99c9d221a868cae16fe0b908b486f29caa80e8a345654068323f07e60a50cc0088bdc39c4391ba4f6e55215746b7a0abaa182b53beb82f637eaed0de6b482524975b549ec51cfc2132d02f30faa1b4aea3fd1a81264dc7f +B = -a337f261ec03650498f7698a7d2f528ad1968fd530f1977da49693dd8f1afb5192d1f5aedf0d23cba910bf013f1e7af945ab18df8340352f11120216d7bc6fe3c331c7a3f4cdd75179e547be866ca867cab2c32683f679fe06f8d3392961ae5877fd60ddd9d5ce1757c25d4e5108d1f0ea75f8d33436a608ab20ac561deef6f3 +GCD = 1 + +A = -8daa6ab6a98241735c878f1b8c6a001df49795561216f648b0cf9455b1b01ce4644e024cd46d117d8c57796aa46e7a60e8ed51503d3f044b9c071217caad72df3733ce1f1e077aa830cb8f2f2006ab36c83ac1b17f02d631097d177dfb8bd218d6495a86977eb25c6742d98f55b6bdb330c23216d1aaa511d2f177b7671c6def +B = -15f573bfaf3b1f373ed67bea2673d58255c6aad8e3d125109f1820a6370b6d53d940cf1136560bd59d76c77732b570138304d0d0de84f89892770dd4fcf23843315f88f882decf5349b499dc431dfff2967d5de8120ba02566e877b94256880a22bc6ab216002052740d10b1cb4e5c6eaed94e55a25f36daa5a6babfdba1a346 +GCD = 3 + +A = 7c699aa2e2526acb7ee4886483736d4d665ef8337e61fe68773735478a155264970df364965dcd3f3472ead35ab7037c488d114f8316b25afb54c445c803a9cdcbb85bf68fe8d339080f04a232dc1d704cedfb11267a3588983d6747959b7575ed302c4c9a22cd930d28a4326034cb281fc227f600b582092c54b7806d9d7d17 +B = c76516579078a666a4d632bf19a15a47a1d3fb48b03c9834d7fbbb84fac67b4182b3d0521625ff7313aa0f5db0fd7ef5fcdd5c4067d97a947b08d77e8cee7c63611d7cfbd7ada895363402b73b2af6036a3036f6be80268b6c4eb6bd0fc30fde9c6575e9f31d712bca37d947ea2596f0c074cff08b68c1e4e7c62bf0942f5daa +GCD = 11 + +A = -b5d722dc81258b4d6ba87e79bf0ae3f191bf5139848bf113ac779d633db02b4562c6ba0a8d2bdfa46065ef1597d5e3b5be8568a9d0bb78affd75af4f3d275648145e1e6884548380160e36a99d709b123af2cec8c388bf090ad1683182636f969b8956ee7633889dca7cad3aec39a86ec76557a230443af99344e41e3d7f8d7e +B = 3960dc516e526fab4cdab76232384b2a55b516ca9bc8ec1dcf63d06f71a70a572290dca3ac11c0709ca5fb29c19af4f1ae0d2b3b4fb8102a3fa751fd91f720eb7d9d94bb9f12d2a26947e037ee6d31e4455cf597d51e3ec3046c67a482a909b7865e6126d01d6993bd447d6ededc17bb1ef2f90869bcda8a950223a25033b1f1 +GCD = 1 + +A = 538e4164cc0dc77a0db1ce24a591d97dd844596995036c592cbbf942dd7481723f76e5474eed9e21ed5147724bb764ba440fd130014c7362bd9cfcc8315b2bfad71b5238b194b65d96011fecda888e0b4213deed308ec1a36a3274002ddfb6d568c06a02f7900d182b00eee2f190b98dd7dfd1ae1ac1dac5a1812917369083eb +B = 28c94320020b50021c3293320427d61b5e1e3ac44c763987c8637e3ffd826bc1dab1e077d3fcf9a0342849a527674540e2a704ca719583b1b4b0140f9e1bb3b44be8ba91c2577640e328f5797cb8a6b87b4fd572ae64496cc75ab6fdf69903d47919af72663d850b0e9cb0fdce5586b3f8755e26ca72b47066589a233a4058b +GCD = 3 + +A = -d7c9689c86c2c1aacc998ebfe48ed0480a9a0d7500399bc8bf6d29dbcd47d29be4ec52a8a559a042047661f5d08af1eb51f2ab7c12dbf5505eccfa9dac5c8e239de2f49adafd20e861e8ba6366c62a5dccb3a6885fe0eb87df701f969676f7b154f88e3390fa530a261b5d07e336f6587c63cf95ebe6fc6581302e48d641cf24 +B = b905786cbfb32e6b8daf2a58c25f786ff956937def8679f623b32ff3c1ab7e1f1453f192f47bfd76c1ebe513f3158e52d2925bdc710fbd90cfdb34df9c06cc8c277d33e7d9259a2c12e6875893c59d9d95998585996e14f8c30bbae0bf1e226d03eea2dc0d69b302b6129bc9af4e3a44c0d86ad913168de098fbd4fa0700da18 +GCD = 24 + +A = 8a2acba391a75a2b7727d83f4e67631ec10cd74476bee8c882281480f44fea9408e7a1499b46079b045d85af502f2ecedc3e630da538f818db0858fb163c2187b0cf1b1f23c3ae2c273fb9fe668c14b6d9282710992c2d86e288b714a75fec1f329c74a0b0921251d1c47fa95c98df77bb9a5b159507d601e50f7a104afc4a0e +B = d6beb6626cf585023a0a622d8ef5343cad5f57c4e0c2f0fc0c0e7508d49ed9acc0a7f12379f7df61a1f419aaec71193847ead7cfe5a73ed925bcce0097b964d09f9ed0a64bf790a44ebed847415012d809d9f1ed285a5fad05ed66f42221f91a004ccf203dad709de93d0adb1b1d9a5cb275b520a61c1366c849e4912f8c6e58 +GCD = 2 + +A = 4e6dc0bf488cb214ed0f82cff9cd692233e78808e32be2cbbc066cd86ce29171475c4fc784f51b7b29a21d57acdcd1c0d67401860888e14618705fa78577367a0bf904520b979627620ae33045fbc66050e111fe7b53a99e0faf2dae09d4f177879c3874c8a00674295dd35f9a4b25ed1d9139a1425c56e21ac34222bc8011db +B = -98461e6cb7bb527e88cacbb6a37750c0839f9458094522fbce1ab20982aed5f810f65b4575e820e9dcdbce1dc98e031a440378dfd4d820f7cf555cac796822581323e8cabe5731980ccc2d609e13d1c92e5fcedc4bc657b4f6f60f0fdb21eda413e2fe0fab5183d885cc8626e2bb55acb3e4191359461aff4e8a91d1125118fc +GCD = 1 + +A = -ea19f7f26056f11938975558c0dcc901cd500df7c7c359014deb5d537f4c979edc1e176046e1b0fe444adfd70210a78e6953ecdbdec7f368283a7e658e9cc2cdf8e8b14b638fcea285803ba9908dd8b176622cb414ae69c18a8ae12e5693feb397b5bab0788922be9a369c8423a445650429925e5ae3137ce1172bee4a702108 +B = -fbb016ebf67c48f6c4bc33f252a97888f31b80a56be0840ee9e32e704086aa90171a1fd2c65426ea77ef6663abd6bdaad0bbe7096b8a41b2428a2905f40a1e85deacf90ef2ad75c2303265938c3d728f8c18a5b7b6ee3fe33d197407d7bcc8391f41b78b0fcb3404e59b22e3144f6418a61141c21aaacbe9953dbd918f9dcaec +GCD = c + +A = -c168e74a6cfbc43ee11ae04da1580da40f954a3f87247a1e9cadd3468b3aaeb80995b5ee3208a1e85996b895fb242f0ddef185a2d5fc4e7f4a5528852027a14a73b484eedc45f42b2ffac6ec917542b31546f1b6fe167d65e94d9ad38936b5c232ad8ffe9a3ffbcacab9c103829d24c950057b2aa324b549af1486d58255b487 +B = -90b42a0eb01b4903ddfb4a014152fdebfab31ae3e7d92da65633887e780a70f6f152cd155017af87ec2743d58344d30a422d9c7446a0b3f29c9f7925380da19fdae29dd34fc1be901246bd99c90c15fd8fb11704319c779b1ce2b7f8a7ee333e7512344831ef7083ac0129ce0123c0bd4e18f88534cc05287afd1905f000c6ef +GCD = 1 + +A = -79eab93b92fba169951e29a88b60ad572a167ae546ae563037f0e8888286a615204f3c7b3b0a43893917ae208dd33403ae537bdd92249cc756715e8421dad70acb2b67f1a807f0e7f5f5b8bb23f9d83817ebbd8bf5f89d0175eb72928c3715c693e6cac2bdd711e2f1fcf0cce857e050102ef2d011e03d5a153d9e08e8acd629 +B = af6d4c5a9f134c9534476767601f9acde783c89efa3d92d7812907588d524f5c6cb1a90bf28abac8d59d5223f03bcf38451d75fbded9653f522fbb0139df22508e0bd12dbbb6a85dfb3c94d27ab4ad28f91e7c514fd24c88829a1eaa5921279197d37f4f02c639acf2df054845a7fa70d840dc04d119b8a1e34f5a43d83b1e58 +GCD = 1 + +A = dd98fab0bf32676deba2a6445b5b26e042e74b5245dca2eb758ae4ced364d2b2b0b9bfbc80fe83146f0119d1ad96f15ad59f743ce1ebbeab4ddce88da6077d761fbba548223ae8508ab43cb04d6b4d8efac47ccc31dafeaa7524d8ffe287ca2305ba6df9dfb9a6175e0a89543457fd2f7bcd8c10e42602f928b2100009bc4f63 +B = -cef417a8f1468dcff5a7b53b37316e64d8bac3cd517784c732d3170a07fe268e4cfff7362b82f00cfb7616a014c1c7c42a5aa2cd15353ce692e75d1be114167c0f898bb43309f4a82a81a2259bbd0c5b4ebc78069427b4d01e15777d1966cbe01c5c7076fc840c093405bf96432dc4164b7e3f0e3b8ebb561c009f172d965cfb +GCD = 1 + +A = 7f3ea13b447818e00d527e160643649c8e58d5003473d75c5bfbebe2cbb2883d0e32e8793ed8c20241152d2718f0c989c041d4592f1901640a08d4007342fa1aefc0354a4d900c3846a176801d01373999eb7e515a9092168e832cbff4f1caf76fa5f30407d158b10bf47cf058728743c29642e44a5f37b4db66ded9a14ab6b2 +B = 8d035269d413dc066d946e34fc21278c3ad5907e9cb2c9ae693b7565b4978bd4ef527112e2ecdf20e0655b728ea51cf6b2564608f902ff7f03613775f1a36df2008408689b1c05178c36468efadb0383affd69864e3d8f8889ae0b223e1553115d079fddf51e29c5ecdc4abf667023cffb0d98070984f75edea9a27473f3fc2a +GCD = 2 + +A = 2d30345d173fb6ba3f9f9502f5a177bd91d532118f2464ae88ff50e595acca7702f8729a2708e59ef66e557c37c0f950c61cd9ec88e44df24db7d51cced07021235c9c873980fb8ae5da3e876d4c3a12f70b35951d3b1ccb30b9827d6616443e1bf24cf47e17690d2da81454ba36759bcaadd9a0db16e6987fcea8c134e60b28 +B = e38335b08b9c7de3d13c956175d4d1379e46b173d16b5b583a1b880ca32a3316bea9a8fd761418c7f44dc9709aad964787b51ba206ec164d035a4c03a5276090bf8ec275aae641b6d0c6119b3dd441784d745dee0061d4a12e205a13a8404d158f3d857008597bb80e9d567413450b3a2fb5c54dfe0c89a16f9fdb16fb6d0e6c +GCD = 4 + +A = c7584c68d7befc88830468de6708d1f99aeeebc0bd2f06c270236ddd947eaf0816b2c19e18e3f065ba71e6992b9809150afc32920cf744ec87805aa0f743dd78772f1b90187eff89a8689d2dfb76761ebd5fb111b88fb04fdb32e443d8741be49dd7077cb98a2ea9a7fdad1dbecec1062c4b65b15365ef2b6a77bb64c08e9706 +B = -d4b6ad4a44fc414a86106ff6182f3cea4938fb2bc977e134dcf60b7e44d3ccbfb89b21d9c7ab9e0f050f674dbab1cc37277d2b7eff9a3583ea4bd20986cc7f685e4f1031cbc9f61f71938240ad8a98b5d4116b31e774528cdeb9098cd69b014066d27ddecad6f3a6939a633b61628d4085ce1359c9bf06b9b9cc690aa8fa8492 +GCD = 2 + +A = f364b05aeabad28e1002baf8ee7a4b09f5271f8338e07d321a76760051ae7460f72f13569bbbcd994be653e1b248142abca49222dc1f08cd2690de35f02b86833406137e091a14e89c7e9a9d449283527c13d0f2c531280659a00170f2e558c5a37c87dd1430a614ade77e78c4e55919b7138e2880522fa6578b3fafd2223930 +B = 363f28c9944a8e044e418d5b0289a282e4ee4a2de19b0f16001609c36b202b54825a2cec13a7e370bed3ea2f417aa35abd2477918127f3779edbb168bb86e029c7f006753d8ac2bc365cf959b7b9248b5feceec9a6156fbc8a5871259e3b238857ba10b30c98266259d6735a6aa8ef84dc0f4c3ce2afc2032b10cbf33ba71a91 +GCD = 1 + +A = -753dd368a04b19e90657d17040f3402a16b9089858d577ba4f81cd74c6f5ae3262e41ef4328c28e14ecf7d1e896383ff2f9d0eda3bf9e43d063d96d3ab6dd1d298035404d30e100400f2fb92d741cd438d2a9fcf4074c6fde453efa8c2e348cf1b421ba36eda318b957b0a0d4bbe1ce879de0be301d856fa8fa7f510fde826f1 +B = -afc3674cfcb1576dee479d12d3a07e2202931b43748b3a01664b8caffb3523d8af13a1e338400966c5f87e4f234051fcf7395d31fff5e40cf5f1a967f172eafa3899495f77f9bb9239baafa8a79917e01d04dd03bd1939ee56db4fb1b70ad6f669e55f9071fd344eb7139c3754cdc27b5b4a6f741c3cb4b54cceb45a69d9aa16 +GCD = 1 + +A = -56a51db9aa144a698983f98f2eca90cf37a3326b46a8e8cd3bef8a37504575b413778498c74c70aedfb9e039aadfad3aef06fb3ddd4cc3b8a78e76a88a5d97e8a461284179dc105e7e3f8790fb616cb840d9476ed172fa0258c90632f869ed109beb77d8f4b3e1fa4c03945b5aa772eb037c06251113c24065daf55e794e6d6a +B = 7b003c772c0db595145e3ffef7fc2eb2ce2ecf6ae0c8a0d3af11d2e43524d7a3cb70b36decc310f80a7428a5c7fb0976f1659e6e43c7aed643f800085b1b0925479775513ac2a24c407dd8820afaea544a86e51e4a156ddf397e9c5581783ac7b33abc57836127d84cdaae847b32842b9bf99d7ba554d0f34a37bbfe847ad317 +GCD = 1 + +A = -a3d2098694b8c8a27cfb0946b007e21b528a6228a03585a919ca14f37c6b454696be7496f3473345894f56884510724a048958f88a0ef03f5edcce2dffc95579d7afe91fc756466e0b56a4518a724a5dc2283e520f95bf1c0f9d1bfebde2151a3423a356001111295810b530f13fcf8d5b02294dfc06b786adc60c192e63558e +B = -17080aee3412236e396babdccf73459efd7578fdb465df2458aa08c4198bf4c5a99af40eb8964887e14bd6ab0da5b6f11c4a371933b3268c4e74878e702ea8c6daf374f6dbb4787444ca0fdacfae4155b9d3408e6e7d84145a410e115dfe6e734b0dc7b0661efedf04bf6f542980c4c1618c2499a3aacd7d0de2f0ef605b64af +GCD = 1 + +A = 306a0e87294260caed538117fee9ac617a96d316b837249acc519e893ae486449af7bf8222f10d0472ec60aa90d19f8b908a1fc4585b128cc57e6b878d676fac0a1b49e6f9ea685425139fd77ad9f2a09e9f5ba126e4c60c2948493c00dde87d17dda784b39ba2e95bf4103a46b12a7f456f097ffb2fbb59bb5e5ca668301a8d +B = d36c8d9b20cd3a12be94cb277f78f2193f647c406fac01f0a1087e531222298edb76305f0ed327d32cb42fb1dadc678795cb5755eb6a684c35575a89773c8096cf1741e8cf1345141737cc7af2cd5da38fc6d3c517514d19defc16cf6df692c9e9fd8160549bd9279610d65661c88b95b8de9e817fdb5a3ccfa934c6371d77fe +GCD = 39 + +A = -d5be92938f9f1e90f41cfcf1be9ded8ad969ee0f79d2740184be8886f4b3331487e84f9cc2a78e71f62c0dcdca9b7092b5060650eba59554cce56ffadc2f9a9827a0e4df250d23abbf3e887323342b938bd99ecaf44d8afd01211c350d1bd2cee5c21ff43456f3dcb467490fa18ab92aaebe1c3730f2e848379689536b936a28 +B = c51edf7bc148f0ea88cb4b3d112e1f3048a08b9da8c196896535c2e22b22c07e8e5be63f6fa18af23f9f25b7c7e8c9bf3bcb76da94ba82f8affbecac8792e03c5fa2e1624ab999d192a3266c8dfa0fbd53938a6bba729ccdb8e4337a75b6564bda12b4b4b989e470387dd19dae5e9c77666b51f07cd9e28634ef48ad4f4d11d1 +GCD = 5 + +A = -60f96ae88cc77059cfc3cfdf10d82c5969b843d6c76724243c738cc55ef428b4f9d321a480a3fef80caf7707ea10f6b2854f9441a7a77a1c7d8970dc18cfd03c519ef0950e2914198ea89cd188f633d3a68f0d1cf3ab5cbc0bab9feab6a9e57c191b56f67e7540fff882ddd60ac7c18efc550f101e14d4ecd52363dccf9552dc +B = -239a2f67237c916e8b6f9b89ccda703ee26c79211d807f396428f1df8feb0bbb75b64de95e88beadf2a3fa958aaf8e61a1b3f96bb3184b657c7f568ba189b3dc08f07d51e50f7e5117a02c865aae34cb3306f49d571e48d73d7916aaf68862e68c16246c2a0bf0d4ca55769bfa7da8bed66d2c1d2c7e6324a0fbe693935ec773 +GCD = 1 + +A = f49e3092c3ca80d325df2ebea6358f449d47fb27569e1f165976597f003a3e292658d296ef55a3d0b7fe880310fdc5841244390efd4f20910b23862eb3390b42eba8651d9ede27b2c440c3665c7a84d2578cb82a97ab53c49d99d95e6b29762371cb485f6029eb8ccd18430ef904422482d3d2f2721128b9f3f6242d4af92401 +B = -bbd14b4b3fad7eab95114bfcbe44bac79f7055492889f9ab199daded5e2bfb0fe73ba311ac226c0f79a52dc6b0566a51bd5b52a9d2076ead739dc2122e67faaed5358eb049e51ce26adf49dbe06ef80bafdafad83c53c933f67832f2ccdc6dea345feafbc6a9f9d2ab755b35ab691daf8affe2993f8b56f51e292e99f5baab7 +GCD = 1 + +A = -1591b52098b6fb6e18fa9969b06037cd5a5b2cd9f7bc834e2f8f82097a63e30d8de0b81efd973f0d6cc3f62ad14254cdbd087aaad2c051101c99716095f2c3113f046aced142ea90016124b529456ea7708ea49ff81f5f618d3cd49155a4a68b17bbb7f17902c5ed3aea75222c90465911dfdf01342668891443c90fba2a2371 +B = -356c8a4982053aeb6d34b250b0e20dd25cab372ea6d9e98f1f778d2d856f363a26706224d81a720554e4ae831c4d07ec4b73626a50a83467253b1643ee6121df28fd876386a0c582b8065bc62a74850ea962ccb2d777a43a02751762099d60f8993e92deef694f208007bb3577b98b2ef373d2b0eec1a557e47ad24ca561a151 +GCD = 3 + +A = 855c4c2e3875fcef52321f69a0366e4bf91b1258a3b6b3226a3bcf4c2c0a8cfd310c47419d1fb30064d23479a70309c73f916b57966eef448360ea39a7c1b12751ec19b35bca228366e4821dc608065ddb8acc97917d398408d3a734d15e25c8adfa0b966a940670955103a4226d5700b29d113b943c58c3fb0ef0981c0dae2f +B = -52a3a9c73b89185d44016498590922155ab7ec9c9554ba06038fc04e3d4422450ad0bb0557627e46127cfe1a657c41c87a91480fb157e9bcc19d1944346f864cbc5a93864add528142cfcef1c042e61d63c2f8fd12d250c7a0526d413149b29641ee7941c277e211f5518ff572cf5b025b495c3c8df10a4a66af6684aada670c +GCD = 1 + +A = 23dc368c3eb9e042546f6fa10b87e7eb945c69eb5f44f37310b68d97e60d5f7401b69a754159f8ae4dc9ac935cd08a827dd19fb2ea5d70aef9cf20f0e4818c596c2c7a0ab607e4ea8176e3e13ccfb84871c0d0aabeb7de0d130d50be98cf44ba6869c588f08ef466ea8f3da672b6b509ff5ce31030c9a9fc4e4eaa6708771d44 +B = -5b25674c433dbdaa030898dade6bf4fc8894837045f212ce3c06d10a8fcbe1d67c1a31f9bfb1aa84c00380208f3bcaa8f55ba7f2892a39a0c412bce55d08104a73e9e699e61023ccf53a524fb938c9bbe0b83b88466522f1aa8c41e6720d3b016a913ffa7c3d27697300249b7923ed55774c03424ce455519a007c265d898aee +GCD = 2 + +A = e816bd876e1ca98c2e0953a55ec4c5f22a0d6306b26464d5dca8485efd25036a6e5e77273fc215a37a828b80f3016da6086f63192e0962fc80388b0c88ffd3945eb60e5f673407ad18c4e62b7cb5180f8a961765f08c552950d45ba3b63e24939e1eac4c509a3ddcb4ee47446f56cea9706834249710dc47241dd49147f2cadb +B = -babf7052e1977b4e6ef4caf0065ae49375021c3cca77ccb4e12dc62900ff3038e78b823078e964b653efc5b519e26c7cb034719be94a69635c33205ef899e3f994a9f776f294158660a959385620846bc2211455f981f34226720913016992031a51155d4fcfb964f27ff3318209a7c5ce9433e38d803adcd01bdbda5a1df20c +GCD = 1 + +A = 4063fd1e25f259da4aeb111db384426348695a8554818ea9ca54d234e0b19405b30d75cf47b98293d9bfa2660f5ae8ff92bf663b595ba43fb45e59b9c8d89090cd955a97eebcb7c2d72f361c08b228dac2992899b80ce94c61c9426f0d2797808554377aa6f4f94839bca1ec30bd871c4b077952972fdd5624466b22712b606e +B = -b4f93303a614bfe88241df365ae6e2b05c2af23ecb547b45155475d7e329da588db707701ce10eb358a829fbf040e687389cade3881674ac7cd24f3453bba830e97b6196e1df2f9206572cc732b4d21f380a98276ad6f353d28b275de2a8f1b33f2e0565cc0b3e4e5a6502b78b9315ea711a340c517c2e3501a503da1f28b199 +GCD = 1 + +A = -21dd649566da91768470548bd925e11a7c24a9607bb275ed9ddfa34f665fb4246f75b02932d152a05434a5df129ca107b50c353ba303540fa569b93704f0daa212d3b59e9645437119399f4f7d37a1e9cf1e74d626cc0e79eae91d8d487095ed5ef22e0d15a8aef00a6db5f0e50cac13225cfcbe79b13ec05ccf453a4c8106e +B = -c8e9a63718d59605db093a1284dbce0a0e6128f00fab41f86120b526b3569f79af2f9aab1c911d10f270035541a5fe67311d0a63802650e9baf72314426ff42e8784cd15fa49ec347e8511e2aa246371f7bc035ac33b3cfbc8dc76c7d8c390205ddacc4c146ffc189bdba0dab0f31e57efb8156cb48bedcd5e17a2418b687b0f +GCD = 1 + +A = b14b6fa2d09c53234f0594c9be1d1116f7f4457ac2b94d8b484b0e27ef952475528cf0e6d18d3df3b57a07214419150c5186540f94592828ae01051b72f34e9bfdde67c0f57f37286e7a0cbf661c4a8849a82f8e3274b3e1fbaa7e83e4e12a6b97d5e3c1d279976b55fe93318c69d1aedef6ecac5f8f5fbb05d2ff5262dbf8cd +B = -f07562307b893675106cb458cac34e850904533145d58160eb3cf593330969647595881a9dea91d37d6d7d2de8f1783fcf0fc2fc04d59db604d1fc48fc7a2fd41c4b21bb38301baf24b9bfc5b4012fa96088ab3687512a594b6a51d75355f20be8fbf1435e53eb7cefa46f78204eb19a592b5094df9f3f5a9633e85427148b7e +GCD = 1 + +A = de9a0b8674ed240b507261adc010c59a6848a863fd10ceeed6373afabac5fff2e31bacbe1ccad29d10192833c873bd20d4a14df4efa9ffe5ae5ddd16b631a8a385aad345e743d052e9559a461dad52596e4307ea8e277f59f9bfaf330fde27ce1337938f07bc3efcb4048d4b7acdb514b7fe06fc37f4532cfceaa16da49cbc81 +B = 761aea78854bccf7eb0e9442a67a4873759e693c9f7626e49124b27518930e67a700b0be817e801b4a4614351ccd709e4a665a8c0579264151b2419715630c8ca53d6f9ce4f597cc045e69761c01f5429bcc6597b00d0ca92430528dcb3bb56e110466a53b290f1e1f3442efb7e26ac6f59c1aa3dfa7415895332220ee34e95c +GCD = 1 + +A = -ab1162d98a163a84f24e46191f2a43624286fc535f9c5a5a17a4931cb1105bcb618c58a79b788fb7959a649a5cc0d3d10dd990cd0a5afa8059de2abb8acb067466cd25c1e433c6c2fde212c08cdd67b4b32030497397d492a684d94dd55b807a5e63c01a4aa938e8495044739f9710a9de685568ed2a9f59b06e1cb501896282 +B = -a5ec30558efd043ac3e80296306244056d38d792a29f2113be809df1639e883a80cddad293b487bf39a3fe60f0e15b0708230be27c297bf93194836b9b1da04f16fa345a1b898d5e68752c2b031194a4359a424a0b592eb4b07f53137ea20c3436606773b2cbbc945bbe51ed6e838f6df398cf55733aef9c66d9d7910b2afc62 +GCD = 2 + +A = -d2a3fb79378be5427bb771e233f32872f692109d39f4f0d4ae9f831dc7c3b8957bb96d71399f1592545693d24a77bde6efa228694d08fcfdffe3fcbdcdfca2e25aa38adda22d77c95441f0e80ba7773efad08548764fd83172befe3d6f3b73df5a10ca75a13947bb9a93bc20652f7309f7be24493c9af7eaf80c4bca45c8a818 +B = 61b4c66345f0fd8ddb0185767da295baa22d51ee461879ac0b0264fbb09d2d0e59fae902625eb8d7af338fd6e91fca3121c699d5e9e5a20b8992c6295abdd17cc311672ab014a83dfbab26bba482f7997cc39f6e97746c8323dbd4026c7057a67ba248a721ee933441f4f716ad6ac4e834fc5f15c8ba38e5e62690c3faee5591 +GCD = 1 + +A = -1cc11607588bdb98b926f330a8cc449fe85eb876e138b4234d567b3e8dc9a2ff3142181069d0da06919d782e128ee7ce0e2e95dd201c11ed19b8674f82dea6d5d6253f7c705378f0110f6ceff2d72f0f6e8e62c3351ab84164187630db43eb188775207d27f9f11fffbc70185eaa57d1dbee64aabfe8ba8f7c8b653737970ca7 +B = 2410a6aed9afe750b328610f85ad82fe7b93e22d3c57f35f0dd2c449229dfc10ad9713a1b1756c02170dcabf735038e4212bf34f28749487e9b4d1db8715e7803941baf034f7868ca89e76a3fcf16ebe5e3ad87444ab40a2cdc4286c9629798a69f79c807be9c86fbf0b93bdc0728f2a504ee5637a9011965c85578b5187c4ac +GCD = 1 + +A = 961722f18949e64fc2b37ce93b4f10df539f61423fb85f6709e269429eb582a9763406c2466bb499d735dad454726a363c3e54c60d668abfeeb71eef5b636c7ebc047127325ee717d9dd7e95192eafe189344ebb4e19fa543c51d937e9c3adb0fb8986e663840ac377a02bbb9a942ace6c13a78fda252c70cc9bfab4d30b75b9 +B = 65cf045c2ebac15a51f54513153ebbe631419aa7bb0010dee619cf2bed1019812f761cb1ae2195200163d96c1a6eda1a5745a18d1474c351eb680829bb604c8046e5b5ba21d3bb39a1207f3bd14c8da8c0d2538f89dc0311a646ca6faf11b0e1bfd3a21a899890bdfd13ee25238e8161284d7533e51958ea5c5f1d897d9d0236 +GCD = 9 + +A = -62df09338845dc933d45672198acba7616273acfa347c87d0b588aa1fedd909e0939272970d0204b209a6ccbb361d14c1a55ab1396b800b9a34c1135950a055af81821438b8a1a13c64e2015d28870555291d1a812fb25e25c1454d469627bae7d98a5bc4b28e0fc66fc2120933a1f20c24b0506e06595ddf001fcdca2604777 +B = 384d65066ea4300dddb8aec169ef23a2726258b47ff8f52293f959917738103c6dddd0f80b431d99750b22f66cafa7a5813fd71ac9bfb6380fa65da1feda097fd2c4e7786e0a188f89ccd6b24f06ffcd632285f3acc86f0ed2bd8a69f6bc39fa8fcc471dd22c411b6b34e61bd04a288f3b8209683db4485fc2a6b81c55cd154a +GCD = 5 + +A = -857f986de3645f152e0e689ac57034a8b31d51918fcb9a8b3d6cffb6c2529ac4102e9d1bb1210893501e7e305771411fa93b92a459e1406d7c9ef66890a2ec5cec75ff6919bbdc813dccd2d987470ab5f639943b5678be5e6704e1a8bfa3d3b077dad37ecefe34cfa6591b900b9c0add33f8bd282735536f8ec66875f7978190 +B = 16c0adc2d3b86fde6f053d1950b83765a9bdacfc22df0a8bd6c56361c1d24e903e5d4590dfbc64c73ab6333a740055fd9ae97ae476d729f871e0a373c4bc8479f01df5edd7e45a96aebe40b9089e6aeca3e291d87759d5aa371139d4b95ca5ae9e248512c6439288358273a918e0714d5016dd2a7bfa4502082e1022e0c7d92 +GCD = 2 + +A = -1db55d589bda08bd7360140d0ae579a2706937e0d0e4ec84bc0b5906f5dc33a8267ef04eeb3bf99d11446d9a1818d9fa61daec41df466d129f67a38336e05c25de2f7b3034e3039668cfa7bdafd23d0bb81f03ad0fc1bffd152e89011d7399f1a3ed3aa03e1177657d9496d75964d97b13535818e39392ce49f8c604b8efc49a +B = f685a5babe5a5ba3031e643ca5c721abd1fbda6c75997f86a994a4da1c38cfd158462c8951f97cec054c86b3c4b082fcf8d55b864f88ed74bf9abf61f6cd49796a4def9310eae7323d7f642cc3d6b3da45bfd458e082da0ad92f44948f6093563218946a4c65778a4057242a4905b00103af41d5f793eec54c04dbc9c8793fb4 +GCD = 2 + +A = -6cabd38b7f13a98bd4e1962a4766bb29fabda331508ae24bcb63e97d6547fa57fde43b4ec07b6b5dec01a0974a7d3e4c5c2a05191b41910c9df1cc871a71900c9d50d81b0aca3cfc2b5019a151b1e80b7b5d56dcc520de314ab661339238c41c6d70fa5bddbc9387afd6a1c91904fbc7634381b431c0a08395d2dea75bc8d8cc +B = -7b4b05b727311395960b6826c4defd4bdb12bac43ae7e54d631bcada77a61f2c3d10383a0075fe79fd297bab0dc1b03c6820c6bf926fbdc0122d7b9a6c478f20aad3c4bc14bd7a0d68b2bae7d2000a5e1175511e47e363ae2f50d22d417eb2a1f8e61ddbc2d6be596346844e49d893fffa8e95662875b56c0d0becf67301f5d5 +GCD = 1 + +A = -24f968b4d5d3d1122c1f4168be1ef884218c8953ffeb07f0f0905342c4f6c073b99e51ad09f432e9882f259da5cfb3fb3c420cf8c3fd9946f4a9a43e367f4bd958972b6ae4c28e730d9f49b16bf1e70a0d1f0d6b6bd68761c672708008d03540062e6493bd43aee1cb4bb2685489eb224953d0ee2f8922bbd718536b19dad4a8 +B = -43d82a51c59a02f290022f399f275da2e51c8e13c214f04d76aad258970d3ded269475c07ea8153c34503f25ec07742df602ef055305c5acc7efefa6474c205707cb41698c3fe409d25c82fd0bd6431fe94fa1b456123ce77cc5d24c5bd62dfdd9cd07db3576689a26d0cbb095a170c1a37654e4fc334daf5eb98387ec4a2acc +GCD = 4 + +A = 636d11711f36e260069cb73fa0c1b2aeb06dc1eea13bf1ffd60d07a2f362d4fcc910288fc80725ccfd0a93bdb3db13859d8eb06cc49d21f1a4727845113951c52d800030808d55e53c8c9a2880337dc1a3dacb0000e34f0f6b0aa30c16d1223cccf11811145eb37e7994cf7e2ccc88bb240faf25d8de9925f7522f46fb925319 +B = -bcf2d134049cd275476e4b255a3acdf5d84b3419a932ea153a4faa95d1ec5578e2825eca2cd42b0bc62d4553630e2539ac2a11e4cabbd3d212f77438f8ed9a58159c262fc8ac4c5e3574ff23f907f043a431a9c5801f321c845b40214c3ae5edeaed5f4db8fa364b76e0c5ca7a14879f629030ad59759d3c3426088dee036ab5 +GCD = 3 + +A = -6b0efb5649ec830c0f46c9da3973eb8e120a8ba25738c8c2ac9a58d8cb74835941e6cca4ef6086a49261afa28c771583f772a82d4e3acc26bb4f4368c62d4e6f918d49ec463e8849f7e06dd77cac5ce257c45736c789a5102f31401aac9703848e7e728015767bb5f46c5180688b967bbf1326cdbb5a9b8f397e7e169e5870a8 +B = 6c556488a56d178367a48de914f3ab7c695c704894f9506b17661cee6d6afc189562a425c3f21384438a9b5fef4dc3eb1e845911f17c202260274aee1d535cc7e90542cb0ea978b3201d4650bfb623d8dd192360f074a19471970f299ab59b110bc767d9c0bac330f8234ed2f5f17b0a14889e3975047b3f07de8c99ee6fc7ac +GCD = 4 + +A = 88403cb3f6dac3516fd9190978e668b9e76b9180e6759936d0d744547b41326621d9b5e3b80767f33f2e0de301c918faf56f0203f15a2996d86d5d1665548b392cb35ddb1d52fa31fcf376de79daf7486c453809d8addf1d8c9b12185af90e1d7840969bca66673c63061bb89dadf8a11db77a072061e45415456293e5d4ae9f +B = -5aaafa59cc04fab48e18cb7edcccb3e2db5858ed4f2a4b5909c41e6dc813ca44c74c76afaf669d03df8492600120b0eb8fffba9b19e39f8aa6b66e9a34b8506da889f7ee7aea0a37506fdca5953d55730e4a3fa348b3c5ac706604b2b2559340233d7b5135b6e323656c6582e6acb46379a57be8e07d17d79e8710152b28d518 +GCD = 1 + +A = 947dce7834d19fef53447018c986183e1c51c390eb823f12a7364b4d9c328ede24fce7dee0d0b40d9fc5099cd5e6f4550f16ec7066ecc8bcac57b46c7a7e4359773499b0df3c79883cf660d41b72c0da67782f71937b961532c2422e42b8a98647ce985868949abf6b702e3215a77593bb4f6e92db2c0c146008468679a23f93 +B = -784799efa56959587ed3b46901ebd76a5ab7344e3a4e2f69e8ed2ea3b21332e37fd7ee403e2244b411197fe0d95950fa11caa1feadbe145cb538652890bc1bcd526aec7632e19fc05ff403ecdd4ecfd919b7b322b69ff11475767cc5e32fd0c6c2a9fff4f54a474d4ca88f42468932c4a0dc9fcff887159a2adcb7caf253917e +GCD = 1 + +A = -55e4d28b74ec6d553d1b364f4db88164a5f6f88ec359fcc0dc46bc393d5271d4b5b0744a70391df7c26a3f05c65a6786774d7cf27327fd5c63d6cf9fe523ec0abeab7c50ad3a0bc7722f5a981db8a71bd8d662332f96da6cebfcec6c613f6801b0e7e20687330951cb27bca867bd74a77e814d9125400698ab727f044a5e8f5c +B = -9a822fc748950318d69565cefbd036a36d1b80b955fa774d3e129138c14da4199c1a235c0cdedc7b37b7d6f49fb4c50a3bc845380795a1e9925f5c8aec94ccde57a468433205d10005246aa1c4922249e8c27687713e2523db9d4a95cbb5d3ac81eea46e6a0f24fda8c34feae6e4014b6c9f11548c7d560bd3e5dcd7b083dae3 +GCD = 1 + +A = -f3915579101ae26fd8a042b8966e0a4ebb6f450f62e362a6e80c780941ac5435c7a25704ed63af184195f017424e1b9a6d88865950df314d865e2842c4b0484b04c906cd572910d9a2c1166f42f1a836590993bcc0e8a45d60a2d6be0f7cf2e17b11b0be4a7e24e41f92603a8892df8b92617b07d84858cd381f769809fe394e +B = -3af27f228fabfd06ddbd22bc7611933e7741a1d1facdbcc9726315e2f22daab36bb9cff0e2e7fca709c66fef35ff6d2b33fbc3a10de6198a8e9654c53728d6679dafbce191c14a1ace250d96e92b46cee1cbe4e9afc8b10cc8fa17b296c14a7bee1c22182e3b7ec42f092c046fb80168a802f55492fc6a0ce5ba3b70621e4886 +GCD = 2 + +A = -1a9834a5331ff1b7b94ff2b8f5ca2418381763ca987fce6f13c8921741f421ba18e45cf22ab7bae201c3457b0eee8f18c8fbf740d7b6b0c135f0c0f6be70b4f89ee3809c90a1bceea7db85ef93870a2ec238fb27ab4e2ed001b81018bc8c1485e4e75c0a1dab521281422853285b2a142a578196de4c55593890d5328df92551 +B = -4d716c7e05dce86ecc8aa5d44ca078155571752b61d36d97db2d1090bc8cd79310ef60d765a2c1eaebb38191455dd71e133ec8d6a21562cdb1e5ffabb71e95a953bdf849c39fac7aeeacdeaa654ae2fbb9211b915fdd1210bde92a8a468dd959b43fb5cb8928ef388c8a5c1cc864065f0c31f2ef65e405ce9f67783252da1ed8 +GCD = 7 + +A = -bce66a48544d69e2e5c5ce2588cd3693476f7272c67b5eadb2c14be8f9a0bb086261aa2c7bb4cf87be35524e53ff9fb1cec7893024dd1487b12722f5beaf6ffd358a936f6a43944c053d64b73a340f68bfba9ae9f4ebaa1f6fbb6c5b1d1a0f674e5cc34a7612f2d91d2ea26d5f14daf2afc6ba3b85b69b45b693347bf25e1720 +B = -d4e6369c7aef6c4ff6245a801cbcf984b60b6242d3904dadd4021b3b6ff7614102235aa3486c3da1d89f2ded9a1f507a47511805bfb27d31a702fd79251b90e797927a9f1970780ba80f100928f782e9f894100b1992348d64037e869ca522a3f928e43fd8dd69a21af0f7722e36d4f1876ab67a4d63d52741746256f68bfa21 +GCD = 1 + +A = 2f9285d79eaa65235ade7169dd1cde738e9a70eee623115497138d95fc3ba0b7160876eb3baf065d06993e26d82244ba27378da5e5df7b1208df3b49c11b516fd0e28b30b618d09e8fcbeedae1479b848d0332e38a77a8337c9ee0fee0b5136079e527fb4f30851a2c854baf762b5144a9dfa7c91e6deafffe68aadbd8a7187c +B = 2415f627334139d33fce229dda858f790695d936d764ddbe8616d0588885456d41d4f6ee5988ef12bbb196dcfa87172824aca0210ae0d1c86ba429ed9811c2cbde2f8a6da5b27c7a2ec1153d8b59ca4e17b02b9eace9850e3ed1e10c2492d7856b0370241a9178f58786432cc492e9d24ecc7c197de3947b857bf6b8630c8a81 +GCD = 3 + +A = cec5427203cdf62c6a18a25e1989d6c8b5c68eac54757010294c7d3c312a70452840015f22eaba11a9582d01e6f02bbf0477c7fbe8f0e85088ccc6e64df24bba0ef05837ce6394c5a2da76fa18517e5379bfbc007129f6046027d4600ff4ab1ed2201079ffa77741a713df4b21206373c0a00267ecc2d27b7fe6dcd986cfb33e +B = cdf34772ca52dbf46dc9018f74c3162f521dd2615a82604e9f6203345236d2f8d7eba85b0d49f1aeb3f660289899b401f01d56ee1316df385c4aad81d85a0c66d412d88a8e4db2f5579c648619ba25ab0b118428e77a6acbc3b234cc6110df96f467260880ee1d2adedcffd5c2137c2845342741337bddd9182507cfb1b17dfc +GCD = 2 + +A = 2faf9f2f6eac0a10e6b0a14df59a3a13dd9f2b1a19b2064a38eeda0b8c4d70535d5b6d16ee8cfa115079e0d8677c394efb3a963ff67672c4151a1512741efd5fc124947d13d0ec1a34fdeac999b899f75e10451b3f73a2deb3c6b216ccfc67c8f3a4f588f239d97363916587d109ece92240a3db36245a36725d35d6388c01a4 +B = 23bce02f7b7073e037cccce224f479c689c66bfb5d13709ce2b0aa65155fbc27a343bd2c3bfef891b70391629b05ef5bba2bfc5e0363f406dd3902cfa1655129a5423334537ee07e7b929840a8a0966bb5879ede7b8c7acc6e526bd533be5c0271e4a8ec574cb20d6b6c5ba3aba6b77bd7940885ba6eb93023e737a294d5503b +GCD = 3 + +A = a6e08d945a2474842150da5ad2070b2005910429ffbded511f808af86d60cbc076f3850b57da719fbe1885bd7f1afd58125ac9d35276a9ca28e9fecf542fb4d20878ec00e3509046084accbdae052b29e4c573bec72f8a2a0228f93e44e91f233bbaf60d45198a9c2aa0cc77649a2b22ee0bdece8cccf9b87754247599abe0c +B = 1070bdb20f1af7b35dde9e5caed0a216b21c08bddcc01918fac7ccc5edc1a895a1ce0d733af0269db273ddb72debe3998b4af21d198630f5226b03252e0e4447f1ca04f7757d25ae950fc1154c461aa2a38d0740f0c7f821f75da71d7bb20f8aa2c1ce4c53163e030ea3ac74018f7d64e1251844cb0ddaf8d5b7e6c62841b4d2 +GCD = 2 + +A = 2cac3f864ec1ded24bfacc4e148b32695498eeca74015dd20bcbcb22fecc5aa1c3700a65dfe821fd0d9016c3d7fbcf2d85a97f4f32f041d0cee7a524e97390eca65f508f9df01bc41358b296b3ad84fd7f07a56fa6600b9823f983a7abae28f019d25bf2339cc58454a7e5948708cbefddb76366ee67587b2b2ec774660e5162 +B = 4849cf4106e3f6c994dd0f9bde071f78ea7ec4a4ed1574f03a9dfee2afe74b6627dfc7cacde8801cc8e56e5fee245ff6382303b68b3e5ea71425ebd595fc0c4afeefe4941fc68591b6b9ff4247c8e04e7bbeaf518b1b133eaf86e46c7bfd7b4e87cbd750913e3fa07e1576bbd4051de5272ef0e753dac18e17803f6f9687878e +GCD = 6 + +A = -3629f8989e40503db0693db866615af7a0bc134d590ddc326a219e20b02fb658ac1d5ad968ae557c655103c72d2881ea02e4703fad02d6325c50583f10199c80a91c223657694cf56d1fb3e3211a5a2f667e449e953b58ffd286e532297255755448bf5b5facef29c27c545a07ad51078f24315d97db59814a1be211cc357812 +B = 2dd2b61c456ed397ce4cad3cfc11b4b96c14fe4014af610e962e6b7b8a2fdf86bd61ccf5e16fe1ff37d994bf4c47d90badbc366115a3b3a13c5ad5c62d947b446070e2cf729eea8f3c7f5566090aa642dee5cf5326b1bcdaabc62d5b0b35ae984e20960e6ff33fdbe8b2c77c90a7f2de959884dc8cb8a13d6f5af0903593f63e +GCD = 6e + +A = 9497f2226e1214d85f6c1b20012b4e785e0b0f6d8526b4fa47b84c457a599a3bbcdcbb6e7d1b13bab9225449ab2eda5c1706b35de082bb71902aecc2dd7e0231938685c8a7327b344c8836fae10e41c5757b4313e3fa74cfd2f1bbd45e2adcda1de71e8554118d20da0fc253a9552de41dd30230e0a6ebf69d1bd76e4ce1942d +B = -900de7a1a6affe8ff2515f5fa70e0746e298f0bb1cf6d11c86b838fe13d601026655583137ae20bffa5d2431d988d0d627fb8cd18e57798f7fdb3552179fab6ed11b48e70d0ee5a626598af8b719a051bb621751f58303258f556e533702175e967f95d217bce0bf751255f3b0c2914a65b2932c5411ba4f2444546f93af78b0 +GCD = 1 + +A = -532976cd3c8e3fde31abee5c5aa58b0f16b53e23b4e4c9d8024422928c6c7419c18e521c68191535c55d178bfb381487d0f360c5636f92d4f3e9261df7e04ad5cc16ab8544c786d8d1931349d0b85c21ad1e955c0ac79771bbc7b9b53f4a514bb570bbadc1bef54151eb75dc3899e72a04a0f76b583f6cb5b5d3ed9751c18c86 +B = -2347de32a5c1e4ca6329a652172fddee596facc84c873b24d0ac575517ffcc7dfe80974a76b15307c7c0c88894702200b6dd071e2cb1dcce5046a053b0b6187e7b82581adaca73238b689cd869102c874afbd3e5269c98e21512febc40965256241f09c6eb68a4384b9364ac066d824400dd3fe83f4b0ee7f372933942f134bf +GCD = 1 + +A = -e63dc5a55722e9391ffd14fb4472752020562d56c3ab1aa8d7bc071bd0dabd2800507033448b62e2539b6c2bedc8b993fdaf0facff097a897cfbe0995f8beb7a02a2b7b3e41276f6b9b9326b75936ed1b307950a5b7a1222d319a8e1045014718bf7e6d5d6024a92f70302421f4636a493f599b1c5473a91d44bc18d3a18c0ee +B = -63e4441545a8e3e9ec06635a41d6bb9f2058dd8319296c0ba537c872012417f62f61cfb9eac28cfd66d799569330a148ed0c4421a2ae0950fb3c20482b05a747a1c5e2929174c128d69b188b336a6aedd6484b9a3332bfdd07290a11ebc589fa19ffd91c8dee0472e6654ae0d7e437d7160affae650a6694d8486da5b61f0776 +GCD = 6 + +A = 4fa36f85da1ffc4fa6250cf6d019c77bae7e7383de971716adb46ddb77c905d0878a08839cb31589cb651a18f0f14911dcec8f21a8b24c5490b8539ea66c4db701fd6c5b213ac5e8c3cfba14e84f86df32042d7991778df385f608f75b2d047ee971ba7f537327e8bbd89ab48fb9234e0b8099b9ef93ee1875a2d3c59683d197 +B = 6585c622d838f9036f411e2a46a8ad7422f726e502ee4a2f2f0da92264de787c64882dff0f8fbe208a5df0effa4f3e77b63b88a9875ca416b7441dd6ce355f25dbe42ddae5823097bae4164ac15d8efa7c9fa21aafdfa0bb4cb73b48c312ae98db8d434c31b77de08f6b0c6cf1f00c88114337d6b6b38df298a3b67e14747e4f +GCD = 1 + +A = -742bb69c130738fb2cb08e95487a3b53994ad5dc80ea81c0815f0d32dc751be13f5a89bf9f13d2198fb86d7521263cb7678dfeb2667cfaff90c3fc95963c3a7867fefe86a4586d759b849c0a21007a665ec65a9f88d7f9e7eb0ab32cb31a21ae9024ac9b4b63f5a1bcd8cb6932a44f3a9a468e56605d24280ff26dc4b668450b +B = -c617b9f3bc8ea4ecc0920da679a4410611a20f7396b9aff4abbea2d5d444df78b2df1b9070ab7c5e083a4acb936ae78b8833a9e3e9a46ade5a10150c49019c4a20b9275e5c0dbf87746da29c391cfbc214433417c86d2b10a54419f42fa7884c1ebfa381907e6d2ffefa2d968c44bbd8b9cf670909bb994f504fa4425d361ca0 +GCD = 1 + +A = 3c2862d5e5e0fc4eaea2768a88c3b57633952ba234f8b513a752c8de99ea08dce506d46203b7b5c49eb0d8179cac6f23d9de74c632f722c7a518a393c48cfb71e4d20bb231765e89743a2f1bb1a5c1a24915272eb9407fed1c1a06eded3110f7576463b82afde4dbf7a4e066b643dc7824cd8960102d384b6b1e2ba4ec8731d8 +B = -2462a09282fa452d2cb30f9356ecc7ba90189cea0f3091b16ebdd420830eb6fe89b301bd70e89d9f4573b4abab6ff7dc2e16a1556fe6a8d7e9cd79d3692bb7fcd123f7a63cf3edb1b538b5fa2b15e2c4412ec707948ab75c39deb307d972a318fd29adb7c231fa18c1ccc7e4480fcadb0c0bd3aef789c411cf073368c8307f6c +GCD = 4 + +A = -61f5df558c7438fdc0335dc7175c9a59811ae41af43825829007ad1c52cc4820ff4f65cd6fc65f68aa9b52424b67aac2bf25b8ce555d66c80f530267e4844f133df40ab4c0034641b6dac3a26d88df651da94a54aaeff46ad9c4745d475c83e1a04820c4b246c6862822778772881f1978a39c15929f7187461510e3c350ea58 +B = -c5b7b9552a025eb3d994e9c145e6cdbac5ec2cf5dba21c8ece799398ac032cf051f60e828665e8777a7a646add7de115866f01f444a3f0bf1ac795bc2617be8559495b71b998e785f6835b84a36a59909959f8edd4a0a0972f047bca702186cd6839051aa23140fa98874e7b5e2c8555554bdff981eb533cbb7a5dd36420daa +GCD = 2 + +A = 648eec6d8325b0a7374a8c3ab1ddb37fb3c3fff07f7120813187515f4ec3ef56480557c731bd3caaf68c68236b44894300a8249ab5789e4a37725906be8c6d8e3d68e30fd4d83cffecb555ef049ef93ff79907aceaaa3c8bdf1abe09219ed73f4790e750abac9d8e2e97b3a804d401fc5602daef1fe0bc2988c7775ffaa5b3f1 +B = -377d750bff734643261b2ff53c54b7951b1584ce225c1b3fd978213f5105e3394e19f3dc43ab782e74d8928a94c4b24420b6d733f91933ce1905db16725a7d959117b89349a2d18ad18c07851b471924da0995f47c973ba7ca26446db89697dcb97031c7f85fd35c1c86facd91b936f6aecfd0bbdc1e26462d0b148718caf179 +GCD = 1 + +A = e09852d480c6ecd939dac4c0f38977e4fb516ff5b7c2eaa65d5b1b61bd587bcbbd9e2d7d17e488763e9bba2f5d468340a7dda3581c082f325aa9a3a46413e6728aaa3b4d20d56885c5369287530dd5254377324446ba6fc0b6d10949dea78d1163fdf8a46fdecae602c3280e698bd908d7fa9d8a8392571b5d9ddf2906303ff2 +B = f364abe5b51325e989817221d40d486ad6649b094ee9848d0ba7b1fbf1e98f8065860c33fcdd1e40f03d48faff2def9cf27d48be9764c6fdb22139083c57b83ad1ff24dd7ed25321dd320e5ba42246e861e634d5a26d9ce803f09f92037a6ef20f47e51508539c3639da1c1d1edf237816982dfff3c142b012bb59d88f55b6d +GCD = 1 + +A = -8a194b89d328c5b8931d5881c43a70b1c4d79eec0621aeb6fec40a4488de601f267c864929ac642c6679c5f8ef04ef36bbba2715d68d7badcc43e22e1c32cb560eba3f24e314085b36bf75a5d6f9fa3fdc7e5fb0f44d9754df0ca65a9c1efb862538b34f4581d79061bf0d2acec5e5945ed7619b90f740caab115b837eb417db +B = 166431c8f2cad8bda05bb2c126c891902f6d97dce4eb4e4cfa80dffece6bb738816f3ece6f36218c107e46d37f1d3bb58ffcdc182d806ec4d52df0db16a439a935379e738dc476a6c66dd1d7e010d05022a9bededf356a7c31ec953f51001251a20329408a96ff3daf685d0d3f9b2387e7f2c3b03c3669a37d91060e705c98c1 +GCD = 1 + +A = fa19148af661450ee78d90098ad641a9a51660bbdf8a137976468e404b5e6741e7ed937c8d358bdb1269716cfa2a116b54518f19051ca93ae9a1f815f26df6ae718962153e6a42cb46bf963bf9651272ecb37211cc34d086dc8fd58fcbba5df21a62e7ce3a86cfce24109a3d7bae57e12c74127e490d5ed4d0c12c1f6c69b94d +B = -7126e0d273390db965e25cf2e9c48ab5cdc7a621756a60292cd4336e83e20fbf4c8c9307adf54782533a56608490bd54a6eff227d41fc6e994c293c6c9f275b9e9abb8f045edd11228751ae6cdf9b36b60a4571dd5727401b689c07deae87b3d0459bdd703c7c6d5ec8dcf7729b37ea93f8293927a8b7ffc583c760978ad4fec +GCD = 1 + +A = b31c7b9116fae736fd91ab67ed6b212f14d7301741914e48a7420f5b4999cf59e160458ab96475db0c84a5cb07737a8296af83dbe30bb46dc016221db50e8243136e0069f2fa7eb4b99e65d7d85174abd142aef3dbad60896eec6b98c95a5e31bda73b3dd29803bdf87ff63662296f92fb8e4faa34d7828e382641faaedf7d7f +B = -2a5e6b189c70f2d03bc32bd1726b55b4d25e4f0eb9b2f911e6b298fd9aa215e82f429c6ed927cb4de5d26ce671ff0fb62f969ac36d72d6bad9352e2588e32134a2530788df0734dc8550046e9898d5c53b323505dcf13bb4037135a093a15f1d60ba593e1c26c427e496f06f1a29d98c43966fb482b8f751d5bd93ff69233d9a +GCD = 1 + +A = 32242ac9e9c4f069d58f3f8701c37693b336ccc05d709c1071dd417c7355353c24e622d331c894588b701acf005b07318de1d2585fc8acd71915b234c937e8faa8ec29b5b5647863cecd09bccc40cd826a14f6b4a7a70d52fe7220af5a05cec6ad3a3f6be1284584d59412a381520dc6efad2c4cbc7e1b4b28e2541eb2ab5070 +B = e4829a217d2ddb8a5e30fa73f943d029f1ad187d9ecd61c3a38438e9107f82c8708e2f8413ecea9c2070cea54023f32e3b5cf082c3e168befa7539bccea262ded34055e296a4760639822c65025f830f52422b5ddb9b925fddd2c2dacbdfe3ed2dbac9378e921331a0a570b207f0532c682add29d6a4bf04e7b692d1b7296208 +GCD = 8 + +A = 9ee30db91ba625daea6ba8c56bd98be6992d9ba69ec48c81e8fdd8f6be874b0bd7c3c63dad98344dcbac909e780e366d1eccc374e00629ba26ac688223fb6a478f8bbee2068f905ebfb18da1d1dec8243a9cacf3560836a4387dd7ba1d71e7a9cfb50daff55138fe7771d4cb112c307d82b1a9da61bceab8f8f41a237dbd46aa +B = -99e4e2f7a3a7a4879702fdf8fddba531cab30dee44d1b64226efda08947274a53c2b07ec3ce5a6539ecc2c1225f0d88fa3212ff0ab54a9e7c2d3ede3a82ce2a769854ee5f05b1b79fb8373a7a4da58bde0066fa160a00f4071b400d5e4031f2ace0e9c2811d1dbafc022d4e9042e8094fa9b70357f19cb1081880c61a59475a5 +GCD = 17 + +A = 654d547d4e6cff2ffa525545518c0bc07d6a337605de87ea82afa133a59355da855cca627c0fded08c77ba6c47294931475b2676a3a68f9c735f008a2038a45e189b1fa62a28a4a27b8df9bb66d2fe0d78f60eae06ea470f5f808557e009178bc66948e1454b3623a8976f397950c614abadbbb43e777afe96694e57ae73eb0 +B = a6bd8b20e09616a14cbe9f0433e0edc8fae02662e58d1e38e9746f4256db17be7b41e0e32384cb2676002b25ad0948c1ae9817b9971d6579e0a8b239976b7bfb2bb60dffb50aba3971a9178a2bfe368eb7ec739b3789af51db460702ab0f875cceafd51ed9091e547d3b7f7dd71522e143ddc9dede6905fd4c80e4ccf09cb987 +GCD = 1 + +A = 46a9c76e64a99e3f7f97fa30c67952b6c9d5d0056a2a9a099f6e5157b87f84a1dc35376308411cff0f8875a88c28f115210788169937745bbfcd0e2c993929aefe34764e2a03face18ff0e8798f3f78443a9a8bd1b9464c722782ecc0ed347d4553832eda31429aadb516ee32b303d08bf269ad78723b4e67e391cea01ba2266 +B = bb06a0f665c935d6075b97c01e715f01795374f52bfb337651a199852a0e9da0f75f9bdd1a69fa5f48451171d896b5406a0871ed1d9eba06c2811a038b9daccd35849f0280c78d102021e526e4a9bd49397a054ddc1f7f02527a7c86e808e8656846c582ee1ed9eb96516c01cafec2388c73db50d1e1b9f00b7a62512cd62585 +GCD = 1 + +A = cf42c8afeed139d491563a75fff70cfda42e15c93b55115508b27bc5d10fd0883e507142a89bdb95d07e95f5b2c838f30a4ab1ba1ef8cd0ed332d56458ff91d80de696a46409409d07cdbfb031bf65d64284b86f5c49d780cf3781ad38e1f0c50ae19faa115578e4797705c043b088c2df78425bb277607c3af775e24bc5b121 +B = 421969f9943102e4881975a31c5d06315655e711dc5e9dbcc61d2f1318e3c71caff4bf6abd76fbc236b27bbc203ffde8246f9f122b553729ecf83e197e33305abe00f7f8e0f947fad2238b2e2a8f018046c1d4e9098127ccb2b07dba7b85e4591d52da6b17ac1c20889f2c3798ef9b6afd21cd59af891fb3a1f9d925935bb3d7 +GCD = b + +A = -25d3081de644b7c3452fe6b46a5e312297065c1c6ee2831524e17c59b84c8c9b53742793b9de25b9b3cfea51f4439d530accf4b6ce53dfdfde9b1bae3828fa3c50a7f320bc1ad77825ea6c8cf6367bb1fbc9a61ff9d9911980d5cb62dea3cfd5c3d693c4ab6ff140f9844e81af99e065f559ce8932d0e812b48ba1d56beaf9ed +B = -d5cc6be6bed8577194f848363176d17635907c924e1094aba118ccf69e7e458dabd639feebcf9478cd5ff2db365eeea98d71d046ee02d893bf6de41c46d06a5995a79a4f03085a00dd6ae2ede5a830882bec04410f64218008354c4c060714cd6b7f754ad1225b140ecd7c174df46c074417abba0d8817a55ea08719b2e0ac97 +GCD = 1 + +A = -a432c6d0a3673797c838dcf4f33a9455223d131d9de0dd8e8446bd50acf3fe95810ddd18847cc5b8619bc80db6af336cdb3ed7d15c68acc3449acd63f0ff45b4d4514d557cfb800016e5a7d76abdd61078dfb12f765463cbac43f106eb7b33ff00b7d1ea00949ae92671bd4ce9aee2c3e9c6781f605309de4731d7ab9c09076b +B = -bb8c6cf5e36f59285dad4e303de60cfaf9419d7c1cdd9808c7993fd1cc3852d27fcad027bdbecb10c21f6664ddc3d03c0ad41ab9b7cfac0a74ffb89bf8a3330b9fb50635448640a83341a4d421937f62f96b2692e0e5594d809d561f746598d90d5e50dfbffa0520fed9c09f0a965846b74f268dfc8849bec973c7ca2203da40 +GCD = 1 + +A = 68112027785315d5a9846d5a4cb938e952e0abefe520991717457ab258b95893de7f2b930001502b07cc0b091b94ae27cde34e8a714730516f68ca7f5ed304b2a05425c9dbad7bb79fe81400f38c45c1305a497509fa140201c70732bbb1f7adfd010f40ac03e6296f2c641ff2af4911f8031e66fb68c4e04ad3fa14a9079836 +B = -2311d9ba12b6c475467c7fbd02daba863219426453c2a6a5ae96b962df4a526f89742b50a08a992a8f4d985343e5baac745e1d6f692f7cda84e0af8008ce8814df41941ec058d889d979acaa24651e3f2825d437ef98f62628c80817005a61061603f417136ebba4df3c6ef55bba7b9e0868b295b6d4c6bdb32205aa4f8fc75e +GCD = 2 + +A = 49757de67af93c39e02d40787b1233219d7ca51bc9cbe4c93b670903cf002620afae43aff78584843db232f77bb6fddd965e5799089bdfa3fef3409c2051a39a13c676677a08d50c9d0c4f81244c6acf5cec9f06a19ec09bca27953972e2e2eadc46d978bc13558e4cb5636fb3340bbdc61f7f759e743482ef691d4ae9ecdb41 +B = -a5890b9a53f5a64d0a1ab08987085e80b2b9f3b84308d8b5ffeb717c1e327909e4aed2d90437b2a0ecef1aec6835b663299999a09d425f4e132d4ca7823f19b21582f3f57a1c3f83f6920b5b9aecef6b7c2813b89f830bcef1fc039556aac8d68b5f3e0938ebf5bcc55a13911088383913e07567fa86575ca1991c6946817fd2 +GCD = 1 + +A = -5376df749693c55043baba6a3fc403baedaf9264848ddbf8cfe950db37819a38ac901b18670111ba17f341640a621789b5af06d9dfaa02be8370e49ccb5abd135c9ef8f47f5beddfd9ef1f52606292a28db74d4ffa09532a308967679c1979e58bb40a3efe40a9c75bb147b840174cb3d67f1520abb621f0edc87c393feb9132 +B = 7e4ef050ad98132716fd001efc28d3f690bb5a6cbe4c7d1b59b4c80e199099f90f73ed8ca37daf92727305818e1b66e18ef2838e03ea3d11065bf5020f61871fb62877c871bbf31a282c4652665e01913e8a23c8964fee732b4448ee51fbe13efd63df9bde335b8a9c1af3c42a242d551463d0b3875d222d7c6e60b369719a21 +GCD = 1 + +A = -4ce385a9d67b1ff8c17daac37f47f422c2a6514ddbea906552e1876b687dbd32bf76326bccd20793a630dcc2545b1325b75d4fe9386491df8eb45c68bdacc3ddc7236e976fca9cdd99641a037ed551c1652f6153a0d6a0bd6fad2a759d866a6e0028d2c0f6e96bd412a4bbc113bd618089e1defc3cb0dc8124163ed1516a96b7 +B = -b982cfca38bc118cd767ff0484657b33e6cb9a63434cab0775e66f7fd7ead8521264bd5ecfb478e3738d1dc2bc984ec5b4971a5bdbb0852598c7560da34bf3caf7a055f53ea15390ee0540d2fcac693e646fc1f97f9e19322312ee462c390a470eb74dc2afe289299b8bc7d0220e626b31db2b0acd6c188db37c4efe2aab66be +GCD = 3 + +A = -62cd38ceacdaa2b18c07727f75ff52759a9605ea7fa28d51f211f6a2a1d4f3029b53b54e4e15470fbb50c7f332aaee3dd858e27e8a92965acd9a0e5b6001ee1095d66e5044c2ded4337eb21e32f9cc24ddd3f0051635f8484dac118399736bcb356fb7318311686332c892c6832c00b2399bf4e33259375de7d83da4f9b50d67 +B = 83ebe9f4184fe5a331409dbb1713349683506ff6364f20b7424dfe42df4fd476bbc5383e42418e4f764ec5569c4765852940ec7b012ec4db0ad927c8d097145f53d418c2f070f29ea1d943da571cc79ded165473ac62c0e9e526e768793c89ff70cc57730b8bd70755fc9051eabacccce54c252286f7d997c0c5e28316ed4a83 +GCD = 3 + +A = -8dc6ab7bfed5a04cf4beb2e3bc9c702284dce10eec9ec958bf0dab3169b7c6b78c53b587fd200dfa2b0df090ab142b0cd8481cda28f7e75f38ac8da54bc6213414c9585db48a852b2e3e2b0766073024f09f5703a7959879f7f2feccb77ce6d0a11216a529cc31f11a0bf7354324b6438475ba27e79ddb2367bfa6ab9b9c4db0 +B = -f1284c3d18b59d4bc93b5c2206b4c52f3e6d9cec5be41bd70b7f224936e69cc7e358828c98f75f5adaf68cf30ccbaab92b4a941f45677e64658c95f4104e0f0382e4b966026cd4bd7efc6f8a756153e3bdab34c4a8b97e12db9f3881eb14bd0c2c935f1dcb668b7cab771b47594865903b0434a88bc127361d29e457a50916f2 +GCD = 2 + +A = ff315251623d327d939c03e221d6ffb48bf84d27273a8cd66cd0496ebd2a3129a3276d3b37a0ceba7d9c6462f5f8a9e211f86dfb14abedb67f5277bbd7c620157376b4018fbdcfaa6f9700fe02eebcf7b15ab24d1b05f83bf5fdb992b8d0083322e53f07697e8235aecb65104ae7608a010170baf996f5af398d0a53a4051c49 +B = 2623597f80ecce7793b6e339733a5f69c58c577c995cbbdbc1abd75084436e151ae59aaf089d2009022245008baee0ff304b8cac6edfc68c5127281a374fab301e890475723aaed6c68d926f93cab14a0526ba20746f1be937236e69153618b29eb66bec4d9ee3c997e98acb703644ce6475fd6b4bb0650a8c99d697a0f37a73 +GCD = 1 + +A = -b1704c44dccd3d9320a52f68fb111bbf6582c364a8c90ae73f032edeb55a0519c5957715d6e84e29e4a1df69c0d7e87903bd919c7e443c94bf4dde1bb44013390b5ec007b610f1bed3bab1909aea3dd5aba5139a8c09ee6ac56976c9facff3b3cd39880a6c2b5504fef817f44e17980c9ef5f7a8186e9e62e7c9124f65ddae04 +B = -9852c59d799188ce5ce431d68bbcfa66c196ea4b0a4df5d2ea772d0dce3dac278858f5b9006108cef3e296cb3e370179c79ec44337772f2bdc7b3568101f8a2dd3c693a396ca5bc2206889917bba1346f0a7473b936ed5611d77e9d9ea3c28c8a43daff4513e4385608d94ca6d309cfee178d9f4f5b57620cd2d637a4efd905c +GCD = 14 + +A = 3c4415b064d1a9ca2e171def49f94412d8bee09cbb3acdca5250da87952ec224d4ddd779c162ef4848a1c01266527c5423330ba9d8f649b7fc6c76416260419bd30a9f00fc1bb169b25428056b348b90c7c4753d4b7b5db37896cd46c52ea8b558bab805010191e239ccc0ee7d36560c50be58397dcca6b92f1269c6562e933e +B = 3fcece815d5c010417329c3d5085b094a564f712e4c0886750c31567b4309d8bb645201d03289bb4c986357bb3021258d88a5e7ab7e142123f4eac09221d8f20c5ecffc74aed3e8e4bec52837c24993a18249089ba1f182e911cd7b156d4fd59e88d49a42c02b04dcce1e5ce90b466f69d7a43092f1d94b071cec244d867f2 +GCD = 6 + +A = -4c54a942bdf922574de41783f3a1d00ce711d3fcfdbb6b92a0698a0cd8a38029073051064373ce749e6a5da2ebecb0b64f401209e52ab1baee52d845340904fd790cc027392b9d818a9b046ef26a0bdf0bcde7b2c195981fc29f8c057e77baaa9b799266f3334e4fc3415c1f47cda88978362b24da9c2b5aeaf376bf00ae732c +B = -bde86d18485d7edec3a185b9c26be8d6f7b6c2bf8d8d9e720e7ee534a968baa128403faebdaf6f092dde6a439993ec90987fb0d14b9385556c60eb65fa78402b708a62be8060bcacf4f93590b6fc23c4e1e3f2dac1174e233fed12ef81bfe4057cea22b7c8c645bd1e2abd6d166daa2549dd04c97b721a9465c368573fc1f6b9 +GCD = 1 + +A = -2309fcf49841bae5c5c86f55f25c4b6ee00cf5ce08dee7ff3da46000b8dad6736ff9094191e2dd962000f9e64d21acd12ec4ee6355d339edb17016f6130929c342fce7886e7f525413f46ece6dde9931994c392a5478b6ae8e41e04799b1a0934a2e9069bcdca38868a10a3af35e77240310bcfa7962ef128f412448f3b62688 +B = 97d6d24f6a2f2434827cdd8c28b4912851475b3b00f5a7850bacbd6b4a824dcf23671ad8c844e462507d9be9be4e99888911fc2578097707c4b8d4fa3ad472086105418f29a60c31b6ac728c9b50f8cfa957f228df56b64a7ce940bbe87bbf7a9b49a2c4e37115de0648a73b1e2f26f2fcc0ecfbcbfab2157689d99337144629 +GCD = 1 + +A = -8b80fbe4b6be1cc83bd6a26d6d9080234c5b07da67358271df77542f6e8790c043fd721ed52a902634aea3913cfe4b25740869e118c9d8e47ef387fc5aefaceab3d138fed594adeb7501063972617691fc9f40d31592dc3c84c50ec348c495053455c51c1dcd56b86cf3a058786c42a34741e56010faec638e1f3d47ba567796 +B = e4f5db9f0b73629fed55b0ef26653eac5582bdadd059563ef1de89b7c592529000bddfcfdda420aa0d658e934d98e436843bb3ead0fc604993f72ff5c312caf8d5ae054b4f7bfded684655b0230c55618a1e75ac9dae0a66654c349a655a37425e5d862ed3d92377fecfc4b5759166afe654d6dc2c0138379fd2ed6e0ff3073c +GCD = 6 + +A = -25dd341cb3dadb56db0dc8bb2fac2e9de48768448dc2ca90d283649690d60875054bc0c833b537db9de2ea0d93e0a9c8a1e4dece0bb9860bb68cb09e87f8b67efee82d7ebdda3ace99a09fb20b9f978e3c4c163e181c0a21f2b79fb2035bdd7a649810e35b08e728448064ef7f760471038c87a24916bc9e2c79426fb596505b +B = -4724a0a3b175442acd9cac6d9436851b030f815954d22cc9fcd47ae8df7c415c231cdffddbc2dc8694ac29fc84e3c7e0136c1ca97a034f9fd7151051e02c500469d479aff5a4655320985a02225a0c9d3b3fb753536f38be41179d3a185b8e12eaf323cb75ab89ce857fc32f68b22238bd893a1f51aeaa5940c5b775d95a0974 +GCD = 1 + +A = 80241c665a7ed2e7a524ea291c863ca5fad804e9b076a36318fef8ae778d589c81035d991ec0a80374ab5d9885cb2a1380807b460731395155b1e4404b974e48e3a79a2c24f959cfd14baa479401b52ac96be56311556b8777b1f60d73b5dd2a6130cd34f381f7faa3754091183b9d92062ce04c2472aa66232cef266d131dba +B = c57b452005a700815b74b6ad007a5956a9e7b38fbd1e845fab71ba20f70145232483a9f4ad487de1bcc812454384af134a1fb4e5ac5412e99ca9ec38334f4e7cbdd8b1593b2247bcbf3dfdc6d0035aac4d0a9132cac117a3e5e67ff2df09b74343eec9a00e382c6462f77d498773668b04b0f549ece27910ce4b8154acd9be43 +GCD = 1 + +A = -deaacadc27f44cd687d7389db02abb38747fc47234d05f89d9849506090b3a2d03f157d037bd2d94635160fe7a94420d22233a3c4a734f73252b0596b7c1df24e7c00ba112d98102878ddbe78c06dca3d25bc496222fafd73a439a40a0f47e856ea2b81e9d94504a78f1b61b5ad80e67db6e412e8d35d2fb8825bcb9a2485065 +B = -c190f03096fcaea2a441de085c818aa1e2da9a6dfe12a5fa03ddd5724c194b96ff0835c82132400e17925468bf8f57c24b515728f74e5a80915430eba481adee6a486a752e6366d622322f3629611c6c0163ec92c631cff8015e628542d4469a80d291eb651fce648e8e7599cfe129889bcedf3089232c37fb39c4fa721d692a +GCD = 1 + +A = -dc1f8cb9f7bbfa870194b7ffbbde4fd0f1bc91d1f6bb0fbe11d5254ce3c4c8349ee0870533c910444ae83f853d9c0f6cda9b9524a777bf904b831519b3f5ed90a1374b18dd15fb87e55f62b64fe18e327bb3a558b993076b77ab45031a355c76c9c2c44fa6309af0d8efbc28bedf49846cd82686e107faed5ae114ab838827a9 +B = -2a8023a8ee9d2a7b86ea867f0eed181754ba4b77c3456922b248f70dd54d079a7bf3f1901720bd1a81913bd507abcb40d6193b995b27877eae01c9fe562b96bf096357f3f57178dfc5a2d51abe538977682fc8d1cfbd63781b43dc9f8c88848b56d8da6d3ed7a2d5476afeb59f9fd87df055994a3c98207111c18a05baf7f848 +GCD = 1 + +A = -b6404963ee730caea819b2768fcc211e65e8b69dac03261f23832df155d59fe095aca53831b62dac7f8f28ce3fdc23fc6415498ba01323153c566108a8ab9f8508196f24894e7881215028ebb50a1a984dc57c01afdb14ecf1526d3cb58155dce2b115ddc16ab6d22a49b35703668e257b81b9c3922015fa73239f64b2a9e2b +B = 6f3b8d004746f2069870ff11291fd76dcab58ecceef1ce75becd2f0361359b599ea0f8b5ecb210b2816c958a7edddd56cac2e40a6c4c4d88ee13cdc392bd1ef94502591fbe17564d7732a37cbf8cd84ed318d3e3d773b4f69d38165a3eef38fb15f401521feede5aec605c5f5c189b95add893a24e437f79f025f75808732e91 +GCD = 1 + +A = 2c1e039dc7749eecdeda015b186faef593940045ce5da32416a032dc8df85cf03e29ef8f664031b8d91016bc3bf671c9e70de6f4ed616cd2989814376650887300280582fcc65fc83212998352c69651843d797c9d486b1db1d1463872de1bf2596c16233718a3f6bfba1ea08d4166d05dd17a5fcfb4350bb0d08df2752c73c2 +B = -8ccc222a304c32c804507edbc0a2c84e96c9856658149cd86158e81b1df4b989d3f456c24d5d26b04deaf42b1571679e36ba065d547d88a8b915300d63bc07e0e375ef3e36437161db245d15b9973955a027534a999bfa2a2b361dc82998e900918e8880457f41b7bfb4482a4e05cfe253db16c17108d66bdcc17b01d979b769 +GCD = 1 + +A = cbf176a710cd55a804818b61b215ce7bb609831c7182fe5d900504b71ee62d2d73ad2851f8729ce1f244e8b7ef6f937e655adc37de625f34a3ca76d4081a3280dca1fcf6f91f2d8f15511179c881ab4fe56436fd2a63b998edd2d405640a7c114901c29eebb713e599b44e6bc2dd70553d6ad86867c75c3ef2f867c9372d073a +B = 6636f1b74fe94cdcb9aaa132d0d53229a3c2d404af1aa2a14505bf14a495a8ceff5c4ff0271b293d3fb2d120ec8756307c6d11b04d4b0f71a9c68b55e88818454a74fca8b4a9da32ed09f659791dde6938405bf7cd3d1e83464de6bb59752f0962a02c53c83e9c3718f3e39cc962323bd1593eab293427f92c5fed1986c4bb9c +GCD = 2 + +A = -58fce44487aed61dfa6a86099cd21c987434aade86b3e45c5989a19a3d99d302e76bdf506500b9792bb5e9d6d738408d7622aeb544a6891a902f2468427ca3fd02ed126b16fff147cc6225375f1cb0c7b6289ca5bf81600548c9e1a2c132aca000e4486e7583d72281720331f2ba2d6bd0a76935c006a05ce415cea3612366dd +B = d8e9d72f23d2d8b47cda6f4d869dd07379c8f23b31b17e719b794c0547d441e4e82f3c3e1fe8465ff204f8038554b88605be934dcd262401c7fc85faa6674af89a46a82cbd98bd1be814579fdc92a3ad0459009e6936d0d62cc101a78bfbf2bc1ad58c9c08ff764b9ecdde87087b8c718137f7ba52b80bbb776f100d26c88116 +GCD = 1 + +A = 39f19cbd6f6d057db452da95ac4ab52a3ec56b3eda1cb7149521814949bf04629f76d6358dc4602502974ab0c7090eb27cbfca4cdc83417d03fc7c987992c487ff0e82ef13680510ab43a98956dd315350e81d72dee3a280e04056f49a27de6a0cd56a1c728bffb0a48a784e527eca0b08e47b8272aa0a47171c0a6718d3ef2e +B = 73caf7c97b71c669563026dba47ad94f816d3b50f230ad64c5d4a5f8780081c6ced803db0cf7f9309409e77c30709060e97c19c198917d01dfc2bb001f79fa5840dd481fb84bc023a70e8405f4176741055f0c69628c7c581963c4b55ad58c3c95a884c0ad527f28d906ead7f8fb2f4bbf19ac9afc688ae6dac6a424207db36c +GCD = 2 + +A = -ee15e8ae715d4a9128a6a68e1d740d3ec1777279a1fef0b77135a277ed3338976c8d159f1214343e83b7c66d382fd4a6e10f1f0479a0eba7dce759ff5c9d935ac5897c0890a90ae2cbc94db7816cfb97621da2df4222d77b20877a409dbd2323ce7362fde977d70278dfb5bdbeb27e0dc6b2c0c0a03bd538b62c63aa2828d1ce +B = -b39a8782878b900795a3e854d0d24353b7a86fa182ae9c9f028ead664354baf03a7635196f919ec9420f3c3784c491c67170bbf3af853174d3b996d3d06a52a903b7b37359b36b946bf601bbabe4d945c64e44876dd727359d69d988f2c6838a9cb94ef4c4ebbf4da9bb1de27ef94f8bdfeccbcf9c852400a642d8edad031adb +GCD = 1 + +A = -dd4c7f7a119ad97634c818116155e93cd64d40f7e5c4d17e298309f480917530912377df280e87f3a3dce02efbc5324368cc75109eae70918b0d6a83d3142cebf9729421a99d34757b101ae187e6a25e43d527554cf2b86467ba1b222f5ce6deffe8dd11de40dbb94e864456cf397f9902f3fcea5699056f9ee5bf9a276fd40a +B = -5dcef43bd093d11148992d7819bdd3e39ab27a2f97c8a4d1e82a7d64a1986213236fd7140b60ce280285d6f33dcbd61d4326abe96d9ba1cd96d8784c75a60f2ea186fc1543c6a104dc93f619a6bffb5da228bd03c9e71b5554747288b7391b3dfbd267312a9c81ced1b919a18b405c3b40a2ae2ed1d3b23fc8388b05f4e04107 +GCD = 1 + +A = 21e25e87c110dcbc1c88cf83e4fa483522fcfafa811eb3a46126e5b47adbf7bc6e3296fcf973b6277807a8d985dcbed207b920071664338f67a7aa9c27a87b5ad6c08f1ae15161c7c6ac92540649c1d791ae3ad428463732e701074e9d3556da7a381451a87076ac360a3150b45dd14c72770cdfaa5b6d9b7b9905e7de13014a +B = -7026130a40faa7f8b34264359dcc43c05edf43448e3300b9d0bbad0f91c60041a9d65ab1e00d61380be1b1028508e775aed11154ff65c159ff6106fc098cb6138141a13a8dd6ec7c727f0a1658fa867ab81980164e29b9983c143cb0cbe216f9af59384035f59df15871e9a37dc69f4abe9f4babb91e57b1b03ceab3ea71f0d4 +GCD = 2 + +A = 28aeea020d00e8a8bc2b52e292f67167799a53eb8937bc5cffaf12d913bb5d7cc7af9a734b53993bf9412a4e8bbcc8a95d2a00c48981c2c13f23142dc6fe6f4e3535056135f9f11e46f20df0911d8f68eaffe197dd179b97cba93bfcf57c3a8d0c3d0a18afbb357c2c3458858c28e40ebbf6b6a34e936a6852a216cc4e9de8ac +B = a39649af490acc0c517a06b6fdc55c054dbf0b146ea75d0ae95a6966c2fe49c4d02f71cb41cb52943557b2e5d46fb3f070105a2da60b6114de2e18aa480d514c30aa03830482b05a2b46175a1c005bc93661f5b103dc8a027651ad74e05b329476302f38af7f38c3e54e59eb257f0ee1d94adfb37ac981b86e11d5fca3777e20 +GCD = 4 + +A = -add759f78eb0bf1225e75fd1e444e0cf4c5ced5ab44f07ba306f95590ec019674a08547ac37b69f91d7a4b532df58eb79345d29921349d7ff157d191cb760ab8c3d34dd69a2b23ea75d382fa91c46af3a75536f5cc61b7da2dec41cb59d3638bc89adf62c2024d304d748296a0b4df510d82a7cf8b8b78152d2a0b8d147ae9ac +B = 6440316fca0c1a607872f52500af7ae546a0fa8839c18a50d650a16a25b718f6381f25691989369e1905f5416cb2d8b0bc1e06f9d4cb159be4a62db2dc637ff66e171beec9400e690628d5c031f986a3a5c604f5ccdd419e9ce64b29ae59efc4da17cf2ce57df4989f0f4c860c186546037e6f8b91568a2573db7316d8fe0499 +GCD = 1 + +A = -ec6793aec3a80a88d520e1cbf9e0491fc1490b86c91dfea1be7a3bc95c1df0d6805f86c7fbd284072d3ff5813078e728362fc3749810f30507c6bd4e5fa81a59652aec5cb183d09d775e5db809a7403984286eafd9c0f3eb7f6762c87c9cad421760e5bcc91a68542f217fb8b0e51626a35900cce7794bcc57f1ba05c3c85f5e +B = -95b811cca5cdb0de74b07a3fe61b4fb4240b0b6b8ed33c6a57895c57ca992ffa9de3a54bcc7b8859badb4cb2d598bc1d54598179bf246024f2b0d193c45092a6d3b4c9bedb686daec25e865d9b732bfbb5198da003c35d0520bab11b8bfeacb99236db007ff28554dfcb3487b215ef2f4245c270cc1646f046d52f2e4c42084e +GCD = 2 + +A = -bf1e7065f80eb95535baba14d484df406d07d30006546a5adfba8b85c719170416f1d1f511aeb5f2c7a997b82536d90a63bc8becc8695e011f5d48964db8a77cdbd0712274fdabafb11c51dc927657d49d09fd75333cebdd41497d6338ca585527bd5e331ec864c360c8984fb081a01e2b5706e70dc38b1ecde23380a2dab52a +B = 526cf04b0858eba00bb1e50e061277408d8df1cff759b55e31264025bac191f216c412b7944760b16ce8a7ab5c92df288c703184ff8d9d2774882a76072f0cb5868c091d2d1d3631249dbb5cb52ab5094f51c319594ba9485d26091144e1718b4811f21f6271cf3b4122949a1b67076849750d02422aa3c8342e52fe7b2874c4 +GCD = a + +A = 59a2e4b8c8f675e017cb86035f5535eb7a64240277ecd16589ad1a369b9ef2ea793d2e7cb546a319d4d94ee689e79323eafcdbf1a0c87c2101a2ce336405f8d79caa7309cf4cfa6f2de330764ffbf004028fbe5623208872a5ea278cada4b4afb4ff9861ecaf65785679788d81d0f64938e6cd11140431087e5182ddd3b7ce85 +B = -1b1dc27d9a046f43701e96bac5c5060e52355b01131c0ae67c096743870ad0a6e50558595720fe3ff1a804c6e275ada04250e0a60e53078d8cbe39cdb97e3980c591c48f8a07a2fda7bfc5f20991c22e45d8d26ac6338cd59562785a29a7f157c60d9eba7384cb99a1d12afdb83007ea9bae7bb33a54f7a82540a78e6ed981de +GCD = 1 + +A = -c5855145684dda3a6157c7f40276faa5b459a96fa41194b16bca9f7883d3cf30de7b15f302f178b10683cc874f9a26b5c7592c0531025c3d98d3aa13dbd8527e0256db203d2967259cd05c395a697943a8d8ab2866b353d9e026a5079d44a1564838d2d784daec76c507f72c4de9ffe11dc3eecabad0ef009a089936f85ee4c8 +B = d73f67c414a4a2f1929d4bc94000b4de88f26bc44b06288bff6b0ba1bccd72291557cdbac24503cf06c4996fbf6489fda8b2313cfef341388865dfdecd0fba849d43a9763aec60be142ca840cf99042f534798491d43f2d3e7f0d0ded2562f94bf82b9aee6fb9f948bc2a16dc097d9dcc8a3dd3342f5157b71c2b96cdc5d6f10 +GCD = 8 + +A = 1eb6e991c2f63f151fcd868d954cf517ac41af0a3c24f7bfcb6a4a6d8162fe69768a27f8ef7001b9b44cd7708dfdf485cdca104dad9688207f3cad872ba29453d78fefa6c89ad20602678ba6ee50799a8c30cab4b0c07577767448f8a70ab86b0174641140717be570f16f748905b60b65965a275b2d045a18597ec9738f545d +B = -95efaaa084aa7b21d04d821086eb2a0499c13bc541b52dcd3afb0c67b0b2993631beee8d96d99f094a64e176738862f5c2c095b4f5659d028025c1114e75b7b493e863c61b5a1a3d975cbbf2bbd1425eee932a508f6c45ebd5548fb391bee23dfaf1e6977e1d268f381dcb462c048c2d770b28954de2f309cf60df76b9bf03eb +GCD = 1 + +A = e26094b51fceab223e9e4f67f32a38dc4c973316509d290cbd1447410f489ae7ceba0719b38e3ae3003e0ed4b875b09a3bc718a81fd3b979fa2905b51758021d632240362516d48306fffe38acfe357c8f71c472c11d71ff6362e752aba5c4b1daddba2af97c445139223f723a430e6838e3889f622b38fc656ce14e52d1bfe9 +B = b4d080b2d2e99d0a47175e28c9108e90d1abb5abbffcf5f4fdfb13d08cc0e5372f250ac514e1d8defcb00755551c96c9bdf924718290df64ee4dd73cc4758475b4b25dc60a1b71af65b0c9e4e33fa98e753aea82ce5ce2c555e2bf74a555fb0b7f7acebb719c61f2fb757a6a0c421937332c9825ac70d993b034b163860269b +GCD = 1 + +A = 8c7c206d06d653c17e31bafdd2ca010741f918f76ddd2b20f47f3e4e888ab7f953857d112209bcc6ac880d52f5cd3f054cc9fa2ccd61ec67b5094984a99eed6228ecdf38b5f61d965ccb13f7412b8d9c76ebe7cf0eef816af6f66d3202c4b43bed95fb9f25ccc0eb9943469f7af2e07d66576512045fd38ccff0d97041f90099 +B = -3e9d4b1ad14e0a58255fa474b416aed7cccbb967949643dd99c3840da40ee5185f56bb51065972eb904c7fd2be5bc20a582143b19083d3226b77291c31add90c19e29dc7b622d01cbab78a341ff37cd53cf78f5b8dc354425764ab628b7f7417f0ddd55a0dd520bc7aa365a4d7dc30c8b953340549f4fef96a3ee9b0c5a7953b +GCD = 1 + +A = decfe8c4bb814e0dadabfe91e6592be990c548808bf617b79008a9b9148f577f2f0d44cdc0f61a351e15145c70848c8a533d82841215c508c30dc3c0e06005bb111a39f0807f4b3665dc6dfa8ed60be00ce5ccc6181cc55da73a9546172cf6cd41daabd47cfa95e70daef22802dfbd0f2f3f228e8a5b58937e1050e8ddad06e9 +B = e46f4d5ac9d4694c2e5df86cd67814a6742bc1637a5f5460db961f8ca815ff7c010cfea0ec5fdcab593cae6cc390a62012ae56273ea96a64cf7f23e831a63da74e72862399bb55d46b9899f089be38155c03477f958bfc0fadfdb2defd7b93cc95888b8878633930c8eaf2a335adcac45af126fa5cd152b9289882a582338d +GCD = 1 + +A = -108641a52918e3f0bdbd0ba2e35485821aa3b380b0f4c3c38243d17537408aa7e3830aad32c8a1fab51ebb765455a71d0e9c2389cc9ed66ceed519f9c0c6a54fafe05b1397575ecc638f397343a88e226aadbbac0580dc81baff3669211dd867857ca698871e312ec0850e2b2e6c510d9cf691e72143316821b828a1d416ec18 +B = -46c241a009d35d1b5fee0fab2b6b3f368ec1ecbe78cddda786d8e98695059e5d871081fb5dc1e355454790cf5a0de801cb6734c3769fc17346df3d55cac21a84e82d829fc8965bb158efe1cbeb1994298483265660529c9dcee1ff73e8d91a082f7db8869d2504d2ca2eeea5b7b4539b33db24208b4fde855c24314fa5e3f448 +GCD = 8 + +A = 4720ab93840e403322a193d011ca967448fdecff13a5f28766dd52d4ca71a2f7892585636bef4a3e8fa8dd13afaafedfeefbfbd3b1a9790436207461d871b41bfe1a3239f22fe144057b47ff6c53db5342023368dc0769b324884105ec3f70a29ec81e88e7940c12ae2c8ac351b318c4af9245210df9e3b5fff4630796b3bd05 +B = cc4ab82c443279bedf49cbafb288f64b5ad79439d6f1fa4c8e7b545878fd2b154118ffe2f59f01dd4798239512368a155c26e2f47fd4f762428e2acea296ee4dcdde33c1f92509100fbb5bbbe084d229d53f33d3efad26d9da641e67ab536b7a2bc47b64db5469db452410f81e8b7b236c002e58d8cff0c401409317abbdc6e5 +GCD = 1 + +A = -965182269555564514c8ca373da444e119e27e8754aeb60e60a3a3b55fd438d61fcf33b8adc9cd1a459f58b96ba78447d5d2f788c5537009ef083195bd2711c3bae1fb592d7cad11deb56b50ee40130e3fd9e7c8005691c3f289b18c5b40d9ac9f0666f20cb5bff1f395b86d2e8e84c2906b247168c21892cc21a0dcefdbbc00 +B = -bfa9c90eb11f3d7c78d2e51767a281ce6a6b6c5c9692f7629e3978817aeca66afdaf6e063d27e407dfe4130d6b5d8fbd72ad2a2f39a5da1983613cd93d04650244f097351836f7a748d8711c86974a78711d88266cb3c0e5e56558e8d30e3be738fefa6cd20f879a8180c19502beb0aa9592e245e2ffb482e06f9b75ea5a994e +GCD = 2 + +A = -1bc6d0c4da357def16e0ecd8d61a32927e3a3e0f7cd636295f3d190691293481d3e188f2d824214a24537f93594c7205e6aa805e7ebd931bd9678b6e162349f8acae10f2631693dbb17eb9d17c86379b7af68cfaff7f5d55abc78f3038c6930623eef600937a0ea16dd61461962f15b71e6622650d66b973b78e1b9eb0126964 +B = -7dd3936b644bc7108a50a2d4644cc3449415801264b65ae2a2cfe0aaaf78618e4d2404c458a49e9d4b92c566cd648e875c1e71c16c38f205eddfcdba304fc811ebeec2df0ea4d9bef1efe9b0deaa4093961a9d60bbdff781399175385fa970a3fd36b81dd62c03c0d9ced249379f97faf87a0e17868271029a116a0d8a27c2f +GCD = 1 + +A = -609cf5364be77cd9b14bcc5427082d76d8699489b7976661ecb33022cef1b6bb3fd4dc6642f019743159e092edde7f27643183a28f8e7750ed993231a3a89c22990a7f1e9aa48163e62a43129e723e8fc20f93d12bb5104c4538a5e41697211bf2a962e0b9cdd8c2e3f51698a7828b2a3d624a30674d11569ad332936571913f +B = -54cc20a73c9b5ea6bf4f9b53fef33cf5f00095646698254e1f4fe4c9c9ed32c7843d91b2f0e8551c008cc3e3778912be9a033e4aff024e6a90244a1ce63123c84c328655132d47b8aabdbaec09a62f4c78f04e045b87d9cf31592fbd199cf5c976d1db7c4de78110f3ec1595b3c061e6ce4b30c5ac998551eb11c4e1a7220a19 +GCD = 3 + +A = -9278ab3412723ee755f31b5562e01bfaabc5063e0982d5d206e39baf99c3e1737b4a769d5897191c0a2715956412c83f85cdfe541460170b1e6f2247b732b31928320bcf576e7ce7a5918af874e78877044d8791149ccb0290cfd061a6d75785f2681d36819d11fe614b6a2802ee14540e7dfab83bec25c98f5e72055dd7c703 +B = -4aac16fe70310304c3e47153a22066dad0be2cfdbdcb18444acf6c8663972b5c0fbc2c0d8e9bc3ca65490a7d8d3de9b71fd0b2ca744f0b7d5153c968cea9d9908beb6d914b6465ec4af997549851be29589fb3c90ee05d066aec4fb11c7f49309ea1b8624b2d7f07b4dd13b6132af1058b3434c126abcffa06c7ddf5b706796 +GCD = 1 + +A = feb6083cb588971c55d225b3397ec83ca47dc16b9c9852ef6388041cc98c328178bfbb1f01acb5370e7a2788307f13750f51a5089a27eb5c7a0425507410cc8ecddebcd6517be411556325c5bd4787dc400e8014148638ff9b79c1c16fdacbc73f8a2fa3027eb44d9e861639b503fd4bc22548047b7bfb11ba9c94739c318150 +B = -2481f5bea05236fecdf86df84a5a6ebc11540d1ff890126def4a3b4d2f3243ddfbc2e1b92333e64e1925e211ec59908740630c5bc33d80ac0735ab1867d51f6d3fd75d47882c6f638c70e90053d83ed0df56a3a88ed20839ccbcf13dc207389107427acfda235945c4b59a7fcb8f0f16269f1f5fde8b6cabc6babdee7e4925b4 +GCD = 4 + +A = 4d29230b1fbf92c77173d0c58b6bd77f46178c3675da41927217c0e8be65612b0ab8cee4bffce9e9463ce5634f1b06a2769baf331e3d5cffbe45d33c0ab7c7d6804891d3f1ba305aa4e05b56de7a5e5ea7f81d95304deadf974b1a23132ccc5a2bd3c9448bfac6873ae274e5cd13c2e8fc4c93fc2d523f639c6fa49a818550c7 +B = -2af726c1987c192cc61dd4ffe3795dbf798e913054f88e89d85f9070febf1938562cf3e42f18f520f170a776f23827e593dde61de519dabaf2e2311aee22102935c60ed40feb5c07fe595cd568144918ba205cbef87102ef4530b334864a97f3dbd12c34162d4def59a5481236b05a5224ba2a1a44324b874d69deb014b2ffc7 +GCD = b + +A = -dd5614cb4dad71bb4eed045b6a8274c8b95daf78db7b9e7b77996d26f8dc47be1bbdb073145801692e0c26546131ee08e0461f01d9a15d092c189683098b246aab46376552feb1d8dbbe9c57ca86dd67b1942b8220c9dc561b340d569625c17d04a19aa87fd7d3dc925df3751ad641d848349ea15039b37d1bab2ea8eb9230f +B = -dd5fa9909377cf34eb858ad42b67c241488b816f2ef2b3a80c99b49b3b919833002648d7423e55ccc911496925005241e56e2366fd09f5f20c1892a81ebcf6247d7baccb7c1e76d36a68d25e994854ca444c70b235d940a55f84768c3f68336760e6e3315bc89ce4d438733d87c0e04437666d6c28e3a56a5480665a3b781319 +GCD = 1 + +A = -915c11047d21a43b83958f7766e33e1bc7b74c9420c7a2ceeda4327d9a489c78e7c968c71aa30e421981c2569ee4fa4732406981bf19fc0e05793c22106bff5d73f281512710593e69529a2054717e8e3bcc52080f093a97b936f827c5500f0b34adc125f0b43032558f0f8d72560aa9ffa2601cd2fb9915c0c7a7bef529b1c2 +B = 9ddb97d4e9e1b49b0b0e9a7da9c38b6a0e4ba0b75d2da4aa423428cc008c7ac34b32b8332caf632e6a51240d7470c5032ae2b940efd6adf2fae22d9f005ebf5c701706fca7f84740100917fef5c9472f8dc9dfb8e78728fd8481f6c9a4bedd3241cbce55b266a72428643a38aceacc115f51b3328f1158900acd0f3a8c823440 +GCD = 2 + +A = 86612043066c45ae60c979c9b67fa9ae4ee85426b9e32ba7b2e7316df889788c385691c9b24f83de75f3b5ff2b106243720819544ba0653745f22cac59535743cd1d471709834ce7b6fd46b65a3fc7e29f3b384c91de8f8fc6c82d10958b68860c8832fa71d2563245e4adb9f796095297b1652ae6c8ef41ead580750cce1abf +B = -917733cb7b8d867a089f105eec7621da224c139709294486df873114cf494a7a871944f53acc0be462dafcce0426f4fe9259034bf696d4392fce3488c4748f279b8b629fff872aeb2f60905733d33585fe971a048721e2ba4ba910d4fd69b231ca0623d504c2631fe17cecbd8f9a5934f5db095cfdc490ef378632610a15bac +GCD = 1 + +A = a7929e42f128d36dd7818b3ab03dca17519e6c057e3d3bec33832b0ad301c78f8ab8e7b2d07c5b0abc11fa02ef8b57e6821e014c5fa3ef5548295e31a877418768b5620a1b53e38084a4b35e143e2cdb8b76874114dc2b492df26e242203f2a9bffbdcaefa953f94517e3ffcd7e26b36600a67340999b065dcdc11544a1b0065 +B = f4b4ac68aec905b66fc923d96ea9c6ca29fbd892633e363acd507c76d19bedcb70c66b200130f687c4a244a83a8c472f1c0eb5399dc010c26613f037f968205550bed377e81aa73571f91ddb714b3270ef6f52639749890efb68a8a02e82ae414ffabbd302030267a8f556cc1092b08c94b092805a60ccebae506412556ec564 +GCD = 1 + +A = 9a2fa5625026df897b8d3d66dc721cc70cd1740fc1dbefb91bbfe93c099400b67ca41b02d5712fb51ed21c5f3c6450bc0e1eec7fee773d893c110dd67d64da2d4512969ff9e4ad17ae72231a425c3ae547ce1758e33f35d625ab45eddcb53ea832367b7096d44c3578530dfae9d631b8cfb84587b7dab3ea2ecca2874ed76b2 +B = 8b6f058ac42f82e6b1103fe7df1244cd54f686362fdf88d529636b71c60a1c7b612be33b278f429a8bbc00a0905baba66376be1f2fc6a00d09802d7cb08268cb12583c042daa50047c738b2a2c940a6d4beb974695348e7eb7cc7ebcdd4613496e56b305b3caad71d55bfd1bf08493929549d4fbd1e36c1cb5ccae5190241403 +GCD = 1 + +A = 93457720b36d35c89f9317d0a16b0a9fc47f29551a173a075bdba8e575c0d5857ef29934df7ad0da049f09d85e3a55cf5b7cb32ddfc5fdb2700f8dca96941ec9803151f4903173c219b6a46bb4bf92be0aecc7d055821ad8dfa2fc8f5b3b329cc1c86556bc286187f29943f8bd603c2bc87155725ea746f4c2f14cfaf8c849f2 +B = -dae7a6bb1fd38e5e319c164b0e011093a90dd166c80a773381594e74d00f735f0683c0bd5aea1a202b88ef0f687f7d83819a2e8680c39a98aafca159d443d411cd9b62209a69ea21a708d7f80598d9d18e169b2e8b4e50969a474afc9bd8bc5deeb1c00dc59b8a587caa385897117ef00ab76aba589ad1dd0b1882dd1c0fe838 +GCD = 2 + +A = ee29d090e49f432d919a167718a2326c1dc349eb0c440da2b7c2c5f076b63ecaa82e8243c39801ad55e4bb61f4343526ea3f104b726a77d7828b89e497f45f13891e72fffed6292d1397c36084e9f4874ec33138c88271c2f3b5798dd4473d01dd7d671ade1aa089acd55c5c67e9bda517ce483b7ec8a9c3ee07f8d7b2aa90d3 +B = 3a7964d6c34f24b721116517746b50a010581f851175c09ac3925294c11fcf82a6a7dfda5b9a0c8eff004fce8b4137629da9a3a39d8f3cebd4f1882c580c64d205c7d40567a3b23d14fee1c6844c0915df7bab14d3e6c7092e336c364a0054dd4eb973829cf67985fff676cceffeb179847ffca25a904df326e39188f7c802de +GCD = 1 + +A = 8f86e06ea9b5a09439d8a3d1882e43747e43eab412d711dbacfeedc35f0a0164568400bae37a9afd31a41de54e56778658c116c0017eb3b1ba2f1cc36dee7ee20c36b7169fa46abae2113a058868cec9f4df74a93fab7a00a1123d47ecd62e769f7418b74543570e814911f2cc1e4a9cb3a949fad92f3ad1d8dd6ebe12ce32ff +B = -8e24b629a7ac29a0b04b888b8b5d85610136f103012f2a993c986e6ae4ccdb7a5761fe803c08e60007b89c7b3439cbd40fac15ebf482ca5c90338ac30454398423fc227de47291d08009a959d63c266296ca9963a3645c16f705026089196eae7187a7df82831a27ee821b6024e1bb6e8f860b909eedab00dd6362681c4dc83a +GCD = 1 + +A = -d2db5230d1d11cfbcbf401a7bb988408bfa92a169568d9c4226b59cb3c10c72d34e548a5251ece69978580a761b4a982c2151d3408ff33e3ffdca34f111ac025cb712ce4a20ae5e833bf92abe28a02ddc554d2f21e5fbadc2a39fa1db87cda271c3b1ad57af5ec7f3af6f108c4ee07fd445c604e7fa73a7f40f7a2512bf896d3 +B = 6e63e8e2f79c0f96c1b44c14f563d0d1a129d03b5bcff5720d84c28ab2d65d101cefeca7f7376b9c40ba7679f4b02b6fb6e6a1d5b1788051736943ebabc57579652cb26b63e4b50d5b445355a82bab195f4ace074004af856bf3b974a40f50e5fadda3571a914b528249b1ae4ade1d77e791f6fd1f096050cff54d3b714051c +GCD = 1 + +A = fbbe7a65aed45fe825de3d1e42e3417a0f87bef39e1b3cba51243bf320a6bcb91bb5df0eb934e601033945e4388f8af2b2b5fd7a03635e7b8a2d68e2235ae82eff312d25103cd31aafddc8e88ee01346266760414a46de0ca12b164f7e6420c23b084ff28953ae647018ecfaf9fb1f2f0a4dfb48f6fcae372801d9458b369642 +B = 7d0fc73d3ff7f2f0071f61c8a0c75e774ac6e9a46e120aaa5e851f167ee07ce3994dc525945551936276b036d3ccc0063dde1c963516103a4629125a8eaec15e96c5bf6e536aca39b605c51689a5d7b5b82907702b07f598850f25c9118f401d30e554f8ff450fe4693700ba6179e78e7f19c36147a718f6da62377c9565ec74 +GCD = 2 + +A = -5c9885a9a4e82efdba48fe9aa163723cbf05b085981d92ecb9669789e171751cc8c16a8fa33b5ef2dbabab27bcdbdbd80492204ae95bddca7fd282b4238bac3aeecb63c0401661dba005fad19f336ec2bb026414ab68b66d3d0be57d845e45c597cc10b93ef23eaf307c0dc6c96fc95ed99b6325917879f6a47d372cf931aded +B = -56eda4e3fb27ad7d32849038707cb1f9f453169406441f7faf2844edaa161d5d0373dd0dc2b462922ae3aca20165d098f4d123e26d19e55100f4a2186bed4cc34d6dec18c894c3d3beaf1318514ca7debddfa390308286d263a1f03bb44f56305f388bcea1794ee820b6e2c828c607953a466b00b47da8485d27bd85e3df0f1d +GCD = 1 + +A = -ea08bde44d189903f2bb180cd15649d611f8b24f4e1176f51816d9ff2413cc429ac7c043bea266345cb9bc4cdb907bc8e6a8de935ca8618474dc61773eb6093474f9476279492daed490a89b1993c8f88f1ee17a3ece6144d37e5385cbaf9a0790406adafef398c13022b54958559a00bf7ce9306c1eb3233e373d94a3a03878 +B = 23208b8db7f2fca5d86fd000801047e615e222ad327b06b0731b58706df0584e98e3d8c0ad3854bcffaaa85d3fcea5c8f11588c460be69e8c7d860d3fdf3b0ef885a7de5020c239a1b7e07f77ee3afa8d9af88cb7d5c819e8fa35d283f33032a0bb14312b0b82f255b123d0ed7d4918b0fc7c59060815cbce0c8196ff9720baf +GCD = 1 + +A = 40d7af35d73fcd7bb0db090853b0df75e01e5e460e7e2d1d59b5e7ce8f34f95937093385a306ab9e7dc1453728f0969c6f0373973e17cf9c771ffe81236e705d42a76ba20ecbbf0a2f08e5475b826c614a65865029f5812ca0d43c426073169821eca32801c3fb093b79a7b48f10792d59eb5546d5677a04bc58e311e5d60141 +B = 5b669b76c2bea241fb37b23f2e31a81cab2b40c41a48d91686c9877c0b0d4e291ec26334058210e680d0c98aebd4c49807924e2b2f40e5f9ae4ecd098152b1a658b26cd87c77dfa93218e87a172082f2c5b7949bd86574b4b4407c0409415c465767d3fb2ed1865473cff6fcbcd616e4eb928f45b44d80fe767ef760390050c9 +GCD = 1 + +A = 35590707d2c08a43b87d483a322ba5807696ab1412f33069f39857e9543e149c5636003205b22a0ff3bdf2b29f7f4079ca21210c88a29e9617951ac6d0101326e9a18b5bfb3d78b391824e46e669571a5cde0e4c862e8cf80699fd1c9047d05decca517f0ea727465a23dff61b4880acf04672df713cec9120a5a0afef7b8311 +B = -911f1422cc364599a185070ebc291953015acc84eca89c3edc27fd7343aaa39ea299f4fa47b38d4be4ab3075f2f658a36afc5c9ddf205d5a484973c83ebddc7ee2359428ef2315de59a5ad5a606b265f42041644a85b93cbbded4fafaddbd65ea4e549a67423441af317ce5b51072a3daa609cc7b7f3f33ad906441ad1903e5d +GCD = 1 + +A = 55fa1d4d81cabbd6be4418918b5167aeb56ffc9e2c66e01efb928ec1a64db119aea07d16cd819f3ded475035019a3f5c12a9867c6486dbbaef5a07ed3f36748d4419b4040ba6d1965fa1aded4a410cb7c5c739a31a81ea95a0d460bacec055a6f06f8e8bbb70dd4126eb730140eb5b73ef7b7dbdc1a0e0724cbbaccba27c443 +B = -27107265daa7a6708c938d8aa6018e17186fb15e37f7bc4539d5269dee0d111799e0fdc81092f55e83e49c8560269dbf0531af1bfb8ed97754929c21e842f35045bf6769f053d8f0ea68adfced5a70bfe4a705fbd1a2f95487d5a1a8e200e04860b91d05034c7bfa66fe37fa2822f219184b522041ae964c7cb9e6424682e831 +GCD = 1 + +A = -be3f07aa74a66505783d44475fa9cb1a54ed573fe324a644605eb052bd3d180bdddb6894fb478dd6de6da624fae5c59efd628ac4d6909bdbfa24b6ff4f77afdcf35c4022ec6ab0eb16da546c4062a8077f7a008dd24e92431d66ceddee1b9c7a07ef053979f12100fd7aa9f57f943b1af49d74542b6c2bfc000d465e07836513 +B = a042dd9632a9264df8e736267522c60cc23da0f7cc1dfe38dd68f7e1f801fbcccc3a16150bee8758e9295de45e23b8a2dd05093288152b4e55b8a51bc8a7fe1c5f36467b6b26a9e5876088e07c1bb518f114afb107524dd392742ccb64bc3ca21dc30019a61ec7409cdea9bbc65303a5b5a0291f891b48d86991a7625331d45d +GCD = 1 + +A = c5d510419f102fe480275a07e90cea34f791a21c04818994607c51418f148a7d87d8a9bc061131fb13cd521b39ca711358e3a6260e26e0c985af7ede409e93bc8002a349246b97ad43d36e239107256aa6096420f7b1bd902be95f8d4646a908f4db16adc4fb949821267d1b42a760a49d38f45692a657e899b7993d6254217 +B = -ffc32bab6fb45a67800b70a696430fc6658babe4cdd24a42be661ea59b99f68c9dc615da7b622ba993ddd2fea3b7865628f7588fe3c14a2273986d89ae7d8463aec4b7784a0a848564c49dd61dd91dc18aa136bd30aae70c770b11ebadc9260fc0848a6ece5f7025d9f4b850963a08f65944515830b735832c26203395869d27 +GCD = 1 + +A = -66a302abae8e8d22837778086c4a5446a9f153b75982d19cef2fa8f34ebb3f8416da8db43730e83978c918cf757ab68237ecffeb6f1f66379c5a5af9aae7fd25df3951746c2a562816d449996a0468b534b9c6f7c32e7ce6271e97fe75df1629715c72a48ee76f54d10f737040da723b25756a01a3f9f83e541605dd6e711c2b +B = 7862f54384670a8374b931da72d32ef47c97171804cdc227112278e8b128c3e108a2da1e9408eae8124e954ff2bdda0acaa61a7b347fcc8ad48a83e62691ae58a48298e76a9a26703909d24ea7ff04b357d283bfce193b4d613e1d521f38861975e27497c54d9d52c671bca8e56ad517118deebb35828c51b780b7b73ed5fb3f +GCD = 1 + +A = f40a35e114b30eda18d139407068b47f3b521731e023e4bb56efdc78e9f2bfb8bc837e9218326803791dcae3d273eeb2305210c480918888723ff54ed1c7af36e195a3282167bded0c971bd124c5940d10328db029c7f2e7ebb1f8a794a69e630ba53b480d5a3e0afa11710d999be86e3865c09ee628afce19603997e907ed04 +B = d178894ee19ff72043f9901fb9fc14ee3c14fb27c4a672e4030149d05570c11f231b7d6b1baff764e6d8fde86cc1f2984713274aaa15102fb2e13c489652aee46db185826381c8c4956e22811e4e9b86dce4b016d51dec1406f8dfbe17032aae4fafce0806057de5ee00e60a87742476cf6ee59bae42825f7fdfde806ede0e5 +GCD = 1 + +A = -6d2bf7e3b56c003edab5c0a356cd0b46a2b85de63da5de19b86e4e739b3e6a5e180fa2adb56e70a05ed59b9d1cd29b5d243d89ae99767a341aad18cb97d81ecd5c4f0a4ad2dd8e3d39417464700f8cd7486db214591b9f5f9d41e3cd2ca286d2e653c92d75d993f6e37fff343c9470fff6a6a79b5b8badab82a97b374835d973 +B = 13fc8a3a132ecb9746994a95f75827429f73a4342e89d14f67ba7cdb404752055e06fdbf44bd381b815b986d2e621683c869a7031ef5b43c7a38568f100e7a35adc2cb8a5819d95d9ac7c5adb6bb8523283f0fc233ac072778cd526f7c46b3a1df886c7e46dc5c3fc7a768890e7c0e4affe2cdeb4c9fd59706a11323e349aacb +GCD = 1 + +A = 23c2506bf90e469e550aebf406dec7218fce3c95dc067abf5b2526d032d0c35570b9cc42488f802cbd14b5cd50b17b4380b94ae125e98179f2ead85da7dfdd3a06828272a57f144f8e228b91a8d323096108c5eb9287e24073925ad119eac54d23e1df805c85dc87b53dbf907b12270de3bb358b50ad352dc08eed4a35ab3a3c +B = b870fd2a72f1e3059a17417fbfc62ec14331c22fd845015c7a132fd1793910ddf019e04b88eaa27fa04bb71b8a7d65648ece878889607cdd143e140cc50309c5b0b59643262e5a446310c8542b5ad442b5b384b0b044b66be44a8968f5a39aafcebe553914e22965819bc64e5b81babf8423c31b6eac7078c050641a580ddaa1 +GCD = 1 + +A = d98ba781fab893ebc563f70717b1579b9aec15f4ff543125b2321bfa1062ff212a24a6f12a5c9149c9337dcf90dd02055d1340bfe8c2f43367fa956d595e81904c33593d2d2cf99961d1b0c29167d34f3bae2a1edd59f5a8391f9214fea17e797abd3aa22197697e3dbd5880a14da22e1b5a38f2e7c0582944de093a9b02ce91 +B = -85c9a8585f15bf6d22c013a3eecbacd1f7abe74601e6355b41394ceee24af75e93711ae7176d7c09ee6ff6152254f7c459db995f72298184bd8e4654d41ca83c77a1a441fa497770e60c6a4ebf0469c9500386a12e9fb018bc295a7fc197b6b4bd94b352e48ecc939bbbeeafd5baf8ef15826c8957cfd64facb60558899ad536 +GCD = 1 + +A = -1fcf241c0ea8adf4bb4b280ba94d2eacb501ca71036f841daf004a8ae5725babe80ca52bd218220a3efaac09800dc6754db380dda1f1b0647b1571d70cdd5364c89a9f8351dca47109b4f3da34c577f3671825082d2d02df0d86db392dc861387b18fc1a40573a5569c5a2bb04cd2410a487895cb226d78f468d0ddc56730dca +B = -f232f1960071ca338f9798a0d40ebd8b9b42480c8b824ebcdba56950427732cd8eeea8a8ffe10bd704cd09ab41f9f3cf506d2491ba2470cf6e845d9bc9838f4a43f83f48713de57e5590754eb8745254715618e190ccb7dda686fb7c214b0d69b8fa8d5ed64b23d218afb5be68223b9e64631c2f8c0e889e54cae11ea9f173e0 +GCD = 2 + +A = -d73a6808b73654db2d7af9edec52300d1964a6fea675d363060705de7100a904d0cf54823c870b6934f8c1596ac85373813766e36fe2dfa1cc3008e29fd16ea0a353d70946d07a75fa0b9cca2b7886b2a04ceb8db84cc4b29ed8af2fdc63655da982f9c6901c33e8450e9321b716e4f340190a22ed18001c738c6c2b8c7e73f9 +B = 351dd90eb2a8085bec451a725432485f645e4397ceeebcb53d46a165224fe5327ec955548cb9da36f27728f14814aa1c4e5d44f38313b6978cf1cb6ae89f2dbebe58748809da73b03c8b3f35fb847e1b7ce57172586fd7d28b6e94de4015faaad63beace642b023221193148945d3ef2d75dd6e46c554d96d617ac5f2c23c3de +GCD = 1 + +A = 8b273a43a24a73b8583750e5f20a9ee68403d3fdbc5d5cf84726325c468d888e568b8299fab746aca92aa9dbdf547fbd5208aa5b75781582775fb9af329ed090f12c81a28b21641867b584eb1fc433301c980b034fbb13038c86bb9c12da135ce54d9a73d31637f0d2b55000f99d7b730ea1f80be12d61c100d1acf41ee812b9 +B = 5fa5449a098a665d62160bdd0a0f2e3223e745e35ef8b98c316b8c5589146441a352bd6b2a398dd32ff53a6681b48e2da80e099e78df01e23f5368fc8e374bb843fdb403ec103b651ac8ba7ca1a24163f49fd64d5550e18f13365f5d01528a8135e2a8eeb9b862b600a63a4fb6b2bb406b60b97dfa57ffa60aea87785f52f189 +GCD = 5 + +A = c5bb6dbbd1600dd42f9318b40ee906ec90e830586f2189a1e9b5cb3fb3f34369117e7ad75e9919365487ab5cc246d5e54dd49a16622785b60dc5a5fb0905c0d11930b341b10700911f716eb7edf8e27a60e04e59054028eb637341a859925d3537714e126d036852d66a5cafeb5c5e09cde8e62dcce554fa0bcd44a9e8d0417a +B = -eda665a311807c185f4ed6a55aa5b88fc2203c170b7d8a9f1af3de49bcda113869218a0bc99ebc277f74dea776b6a88e4e79f5516b804929e39ce6eac07b0d26e582422b347b8378956a641c950a5cb4f53d9b7c9b830fe10f8496e388e9a15005d4706bd9bb0414b4c828fc462de3023796f408e8d6015c11dd999d0d47d4bd +GCD = 1 + +A = 64e4fa037fa48604a5bc62db8bc35b542946707e500f67f46d54447673acf3b54ce01b1b0bc141a6c6bc2ce8c48cee4d94c3f7d5f272735374cc4fe40103d39c337be1bb97fa90ad5ba8c5459e96f5a1833de2521f987674ea5e7c2c922cca5b37f7f12f0a847c160bf578495d996beff32717451fcbc8758680fab9ddf13ff6 +B = 2cb7a43f80a8c11b29011853c7b981697bf934e8b476668433e0754b7bee52799dae1622513c958c2008f69acc481722c70a1a30bd26a8598e7d9ff9ab62c437fcc3399134e651e0fe2ff811793cab06fb80ee79727a91c00167b82f2c91ac5fc850d7e348e1f9fd9b43a4ba0752f9cb8cd48beca4dab14498faff4e0a21294b +GCD = 1 + +A = -1a18052e2a02e8676b55407d91c3e859d96a0cb155551538a5f22989c52ebb528144216b5f82e43ed722cb057c75a7796c1e1cfa93f8daca2affecd251c53df3bc536d1f3df878f31226e2198cb27451b05d40399ad8748b6b6040f5ceab39f2dbf0b1a0c8f427931f9e87c2e1fb3cfc33c4f3759a3194fb222030b9f30e8e57 +B = -6118ff3b70715c15c2cea688d257e5e791ec872a63509c86e192223b7409ba4d3105487e168392149eed8d7410b982052e65655f6c328e86729eb058fd006eb8af23de42d24de102da1183992edd0ab83007fd0b3b4122ac7a81a9ff20162dfefd00332fdaa1aab941fcdff9a62a8b732734415631185a261975710402c01d90 +GCD = 1 + +A = -819aea41d2314f118f2a35f2918d9bbb91d66071193711df4e147d899f7d2c4922c546dd8ec850c06c42843c8357a6d237349c6b8ab3f37781508a852e67102933334c0869a13d0885edebfb291f1a280aeae31476fc917d9b446cb178cee7831d4248fbf53337d6eb72bcc4a30410e8060266e7fe5a8d6f8fe925413d7f989c +B = 73823d98c1ed2414abdf1057012377c0055282639cb8cef9a9a8bd06b4a453ef0ec72560cb853ece804db8c77f374fdb39d872db6ccf6b5a6e0a5dcb4aca53c199817862f40ed9f04428778ef61ea72fabac2eb788c6fb4074f5ec1adaa7910fcd73ba2b84594a2533157de9e5535bcf2a6a4b81a5922e2d14782aad0ac24337 +GCD = 1 + +A = dcd429b1dd6dfab665e9dfdbe7cbc1e95e67130e6a53127cdf37a8528944227ed8a1650de2098de9ecbd9210ed3c692965f35631214235c5fb58bc4519b8e2802bce00d499796e5d71650359098ad82fea34e06762a72f1fa419340d882b028bee4342295b836375bd6e72bc3efd299340cb3c4908373bdd3760ac2f51163072 +B = c96d1e49011c27f9e66ddc8965f3d2cbbe0b4a0846fe08d0d969093550623804dfe30f5032453ab751dec499ab8dd3f6d5e84ba28b2452ca9e9736bca8738917096b7c1de7f7d5d0b8eac389f479305bffcb50295607b66244f7ffaeef340a8dd94bbcf0398593c9fc34dd86f7a4a3ce8285d245cf2695d2e825df6dab61fea6 +GCD = 6 + +A = -e47a3a8cab43eaeead21d9b42f8e60fd58c244bb6c654559c7ce635e7a7916b953493d849239ff29ae458aee50e3552828831062bd81c14f4bf0e25dfa00ba954d9d1d235e91428beead92b99b2527a728d7ac919b6d3184cf00173eb53c73d4c5891b2897ce5484753ec1ac58393f8ce6891cfa187520686a900746863658f3 +B = -e872e0a28bb17fcf34b13fa4c81da19eb465e81c8201acc77ec1922ba4457b9d9c56c9499a2660479d2669c56fef85b4db6428212cdec7b251c8e6c6696bea9a5ce47b8598c482d56e34fd654bc4d9a292bdcb82150ecf41d76309e7fa275d9d2b31840e3911ae801bcff8039628c4d9d86c22b12b3978dcd4f51c8821e2e1ee +GCD = 1 + +A = a325737a25f0bc388f812d88a061e7e90ff40d1013966f8dc4e98d6798670c221bc264f36cba7c29a0fc2b35062c9d84813844ae987404b611cc8ee76086e0e0db226e4288ad36704bd2dd30169ef00376706e39966e91cca894f68c8126edf2614f3a58c88e02396b5e73fdae0f8e6f1b59f405e1b557d93bfd517f538b0f04 +B = -648ddbad4f339a2054824820900bf35bef95d79ea1b47c3035d9f85889ed2cee5351f0a5acc4251843a6e28d0b7e9e6e8862ae65276d5fa5d42c5db7a3613ce68a6d3b4c78139295234d8f8a506a9e0526b1a2062e6af4019f806f27ed15f50c9455481dfaa6d9ac2878d60b9f54f959019a8fdc2655b6215832d474ae6b74ca +GCD = 2 + +A = -a2628d2c301970dc4cc026f468baeb9524c75e6b42f2c680fd2932bb4eaf85e9fcbe2ce3e0c36c20757102ec59d3b7cd78843086c3d9e2276d24a4b17d8af2b39f401f171996c20d55198ec549147b91b87e2c30ed9dca77f4b6490631b8527fd7b9746b56b23eaa2af9e3b8ab2ba7c3fdd6768e9f397240896b070044cffc95 +B = -90e3fcebfaf863b7f2bf393adeaa764dc4b65082511f723699eb6ae4230b808f94b938706c7ee626d7e53e74d5e50f0df0c21b7f013d23ca636a3e1c5d1e0794d91f5dbe6d33fda87d470a150ef0a3350f232e6b0fc8ddd6c41db47c4e5fcd32269343026b7347dbac9b93c560d4b4962dec2cd9160101d62b1ed0b919537b74 +GCD = 1 + +A = -981e850517d3a94fd1a2c79628489d3e64bdca3b15c0f680a6c2b1de31f35a472248d57e2118507526a0bf25b6573acf9d7acf9477b60ccb0b077cfcaf3a42dc2b1b1f5a34071f3fcce65905f98e754aa90462374100b4c93f381b216ed808abb48ea23fe6402ee3a3fc88118f992effafa2620b17bcc1551819d1dfe6cd55e +B = -33f6f2b67f5804020de6ac81f61392d3dcb492063505b180d62a16a61956b0e07aa575975ff011db7a04b370236f5399f1e07b9f0a54a662b4535030e916be62b595276d5c6cfccff7a8fa243c96d29cabba3de08183d3382978d459278080162519872f245bb9bf13a1290630986ab5a547e1b59655426015e2cb70b61c6887 +GCD = 1 + +A = -88287bd6c8d80f5285b856af1cd02b619aff37fd8673fb12ea26ad3c2d3e646ba92bf68206402698b61bfa583585613db1de5cf910a538239c90024dd82f71c315800946f7ce7785fa1628aa5f6ecbb2f6f75427fb07bd031e4b4e4f5d9c4b21e7d7a6e3e797aeb4106d75fdfa564b62b5011e7e9f159e4ce9e388d0e5c81678 +B = -5d3b18470511a0001449c8b4f4d808e65de40ab2f0cceff3e5cff4e02757c0c057a15abd85473125be29f73bf048941c12c0c0ff0908e336bc2549f5273784158e90a2509f765e8cdd9fdfa70214b680c290869718bfd0d7c151e8728a004255bca8c36032b221bf126198cb0396f28942dbdda55173f1e54bccb0f057c8f84a +GCD = 2 + +A = -e707ca4c7e05331794d2b91e8849877ada09f2321db4da06ef7a47476a47afe389adfee8a27512203a208ef5e33f3cdb0f4b13c0d326fd103836824d6eff00af234a737b86989a35b99d01bd30c92ac8fbdaf8540a66562bbfcd7dd1fdbe1c5c7f00d4a42dc48a4b0e3908d5fb227c0e6e9e9992847de45117bf6757196da929 +B = -998a728d8ad5c87357b678a546f35c5ccc5f8f32bc3152126a6febbbc338a60a0f0831c5d55eaabe3c996e02330be69671e1690aba744e4efa717c5bd4eb3ee6c213947276a84bb0ee119ff259c9740ee097d2245b94ad7191e625afb9f5c85cf6aa45baadf2a5837ca80253e61367a12318c4128fbb8ffbb34aca9679f6a340 +GCD = 1 + +A = 489d0db8b879bc4e2e17b7e4d0ab8fbb1cb326952c18a237a178a1d5cf46a28a53fb12be40dc827b89229d93b6d325c36815665846181eb3fa0e2f00def53ba9752d4f1e4b9771878023a0df23fddfa5a7c68fb1b4133706afec677180b414268c94516b3f76d520e12ce8f9241605043fcb46e8c7993cafe18c623404da40c +B = -54c141f5fd5c3eb3c676320d0f2a556782a566d1e70d7ae1d250befb081ce28341ef8a32eaa7db5c403e7c20b855269fd682510581ff8478f57c9d187575d16fc3b833e6e166a9cc74fcaaa6595016c87e1ae96a80c6f8935cdb6433bfe5fce93c791d0858df626687a9e0bed30233d6ba6770b94ade68a22efc3dafa38cfbf6 +GCD = 2 + +A = -5f2b3e3657e4fd856c207a6a4948ff5ee2011ede8ac0074c46608a08f875f6380e5bcdb1a57ea99ca05e1736ae34304efebcfe34ccfd0297dcb34298363964d854dc70e9882e3646f50266bb6444fac30625041bb75b68d2bcc1bf25c9029f0959a92a940d49ac59082c7a6d4bd2b7d54367d71211c2b5ee0c3559ecbf8bd106 +B = -d0b57739ea96c3bf58c74fc3990e334c77680d7907a97137e708be7bed12dc4d058be1eceea84f50fc60653e73527e2a1fe790813091dd6c65df97e8258a8df63c288f2ddf36538c533567947e275784211e89815475133bfba7863e4e4b635f70b43c47ddfb439363e2812f9f84d7e20bf0346048e7f19a22c649123e5ea393 +GCD = 1 + +A = 70d8319092dd9e7d46a45449912beedae9bd9e38417653e83fbe1d5cb58380df617623006bb82b7ea1580ff49a32f9a97f6ed82d69f1074823deb7548e87d7331e0602041017f75cf9e75f79aa3f8a5e289edb86af95d0d9a2ad3f434f3d3c046e89c8f35b4bb7cf4ced0072524a5de7661d164859719624e147195237f26039 +B = -984b2883f46970ec19ac99a031c104f669a8894a88a980594bddba1b4c40856298b892780bb92131fcbca38aaf6be2c24e965e24e70900e00ef837196ba609542a2898d97f41035099fda3d118e1840b77f1f7e77725fd932caf71b7438283b7ba5f5937099bbe016303abf33297375d68b8649eea7546f5c2ca3d2be6b2c42d +GCD = 1 + +A = -d1562afbb22aa35e4a1e12eef7de39635c6d10f92572cf3a4eb9527eb76323d041ddf58cc22d8ba29a02fba0ca1ff099718699abd6dc66adafa2f3db0ebf337c18ea75a433a4a7be9e318ad76f31608e7d22a5d1b9fad122f067601c89b2bc03a671694b6f8c12cf475f2372ed4bc90d696fb4dae54279d8442239234aea7e46 +B = c51ef6dba8a9c5a036251a9ed6408120e544b8a2c9e360891d85099ef0cddee4eae91b0935de6cb08e04260ef9dc673830dd8c49dfc59d734b171f83579506c884ca5f167cdf57764c4df1d10508b30cc027682159ad772691ec1c39c586b557aca2e0e766943fdb7b7ca75bf6d0327c1ddd03a380c04ec3c12f80ca55bc7752 +GCD = 2 + +A = -d376809df7e77b76db511fa04ff9b418d32ea16cca0f27b89cee5c63d8960ff1920dd69b9b6ebd76f7eaf1e8b7e2abdc81f5ac5cc7bcb7955ca33298f0e49aa68c639150e998136410bd3470195f478d14830000a7acf81ae15d162bf7106782843ceacce675ba3a62441e39722305b396b29c030b3e9db6ed15bcee45fee72 +B = 4f4d97e3936b1845c2fd67135658083a89a214ff9f7d0cc0e46e6faf2ad832de0a069f80ccb4969a930780704b72cd3ad375331438ffa55228597e12849f3f857430e078ead5fa023a77dea27fa776f2b8bb51c717ff9dafbe150accbbbb8ea7ef91110b930e078b16d857abb3d6a1cea3c29b761059006592d3ff2a2200f7ab +GCD = 1 + +A = 491b8c302ea139cf13c1232f3bd8f952f85c2520da2d601177945909bb8bccd950304ba655cccf2db1e196822c0aeae5adcb4e71680f34f5914faab4480a2816b6630d7e7dfe263011e5b6c7c0e6a7f859e0c03a57714cd00a2671897aa7da1cbc7ad295cc1c0f94bd96124e078b59dfa1e38fd19384f20f639eab818e66244d +B = 2b30e10ff02d9464c7813af10d74112108bf320802fd2ebd48aaeca72d9d8554d92dc6a9409b0d645f3c61d1dd07a1b3a5da63a7c24121a3a1c8be82a3d024d86c9e2e72a252b4cb2b4309a316c50d97466498f458b62f652c9aea1d6478e068e66f7e2f7aa9cedec4e715ba636c2a082346288632eaaaf0e165d7e8e1084fb0 +GCD = 1 + +A = 7a1f9eeac0d5a1e063cf102defc67644835003a509ecf4431388d299155e5d16f2654d2c6102f2774d35eb0f6d50e53ed37e57cb4634abbdaebfcfe5f66d65b8579e5cc5c72e1e2d1cbeee8f3db419299ac529a55f8eb94575ce1ec8a248a3d72c0e0c7d311ded04f3fabab61e421638323e79ca6ef5e0cee57e9f32581bb4cd +B = -c44864128b6cf55e3da20fd5363f3f7019fe0e0eabd99b892df01bd185ecb841c7898bdb9b6bc7002e36fbf4ba05235c76f8eddf49bd98fb06a80c4e4bf47f7165226312641f614c15d52fe72c11193f3dd9353976a49563362ef7595b8e4eb048f2f64436e007d3f1f80cc95b56fd731876b9034cb9c30c95a4dc572c7a5919 +GCD = 1 + +A = 7aa4b293d7b884c068f99a5e71d4a53c7bb9a7aae198655602a54280abdfc355ceb625769ff94911fffc76679b1970afc97453d9147309f9887f690b799fc41980b984408cc30c34a53d193fbca5d5fd1a78ab292195260c1c719afe66473c7d8242650bb43b3f21e8d0f6d57eacbc63af19968b7614293e01ae2348c4d767c6 +B = -bfe3405e6845b04ecd7503e3a3041a6b881125de8f5142e3a71f459a471ad5f4e7c5e12c8b58e3f9691ade00013f050a3d094c35a121d7af383c700a8c115201b1f49fd606059867372e610fdfdace08bfa195c38646150a1b1f71e72f4a0a84f0be95185d8f1c2a777bde902f474566ee87393a1d73ae452363af398ca6d0ac +GCD = 5e + +A = 154b0d59c72dc6f70b690c088233ac0e3d93e9c474a722675c2a04d07050c778e0850c6083a6abc9e1b1579a65fdd2a254365bb9ed9685d6b0dff07b792bc04ad35a12c577c41f18a46a446c8f91d0d689ab668f5f228bb3f7f52c9d63221d30b03c4d02d10d63dadbbb10b5bced629f88ebb40dd28ae4961894963bc0152bd +B = -3c885a2244ee49e198d3b751900102f0cbdcb35b0d4a62183443a54929c30a5629954a8ade9f4947c3db81bd6e2b7fe84fd159b41f5315191c1061e9463d2d4cd49dfe343b6103564df3e0e09d74722f3b6bfbd5fc556ec61ffe3fc3b4c5b0a2c1ae6fbe2c070cd9513b78eb025e14e71405e0c616d4c9f30c6c9e8caf8e3559 +GCD = 1 + +A = aedc3dae0bfe44496648449693b32d9e1288864da804f2755b9baf23a35790292f38120b4ab400919e2527cdecb2a0782e8f2abb2c6f167345b61b9bf961b1d4efa29879c1e949dbb698cd757e1eec9d1b8d2f68a3d52712ca528146dc2efbc303ab71bbea8d668e496b13d80f9c97b7b7aa0fcc7c3bb5fbe49fb3ec12ad52d4 +B = -5dce0a5263492badb406a685554f21822da52f6e6ed6c308c95ab33633fc510a61ca25c34488fc5cadbcfdad10ce75fda83571a8a8d18cc8f88d5fca59925c9bbad78d7535c60efed3b501a7f09e64d75cb2471857b11a430d914d9331e0255e7a1e42f167a4917f94dd5dd23f79ee326080c53d4019900b0b4a811aa45bdf12 +GCD = 2 + +A = -53201d3cb5116e1ed891a6a51814371a5e6598af0e8638ca58f3b84b39256b3c72130c6d40b0a7612907522fa43c901cf074212cc05ba2024ba55e8993e2cb565dc26b211300cfb3d2bb4df9ab6746def130bb59e3f60323cfb693657f38ff99c7840694ffc292801c921e7670ca3e221fd727677e14a23f59039243ce11b699 +B = -784fdb52ff6f2562892286cfa38e6d27f975e64d68b1f27d7f4b911d89f41d9605cd33bd3e14b12dab59db6f36e700f8b811c5032bd6e1f48cfefd3e527651145c35eb3cb61c6400a943c44cdabad5affadaff9d8bd5b6f1fdcbc0cfd489ab95e63e212d92245421227c0b97bae9c8def6724dbf80021c1be5fda067cce5e818 +GCD = 1 + +A = 522384feecfa9a7ed6432f8f0c968f7cb4b70dcd64ac92079a676182e1670dd7b5cda1d78b52f0d68fb8eff7a7974a24b6ac2f141456d94607f71366d671d549ad7b22e476c11c32825967d58b149e4fb0d6ef3395062a7006814f6f502f606a714a60ea2a68549b45aa7a2b489479e7234975eb8aa4832b1a5c7ba1eb45e0b4 +B = -66f473cf8daffc708dd2d607aad4302faed9e869c65b32c24538c8ce68ed2ef3e8dbe0113ff9b75a1b94450535b3c38f394dcf6026c7401f9ee5d5d661396ade9d26ab389428d7df8382ba80d79ffc04554419dae5b29a72cc6ad8019b45aa0f239078f4ee8e40087859182538f4808cf90856f5f3dd5f7667f35595ca7cb492 +GCD = a + +A = -9f3a8d7f4c5ca5099be8aeb27ac88bc84a7c54953503db48fb22682097d87effb30d7ab99d20a774f1f56587ea21aaee6b18981027a406adaa2e9044151126545d20d3a676bfe4267d0a0cd76f9abbd18143580db1624febb96458de255c519c817898f53062fd9315bbb0104206b0f3c3664468232984cfef31dbe7b4d92183 +B = d5079ef5b65d765fae1f1494f91bdbc16f746f81b5489d6ba9e90442d1ce4ded8ed3543a2a74b2f96c6c24e343157274809087cc9c09d49f1d40788bd00bf2361fcaa2de41895a4de9da3953983ad9d0fe4c66599ff66543044bca600305a50f199f232e8a7dcb461404bf3eb0793dad42d7d4475ff253257ad4460a8d9fd641 +GCD = 1 + +A = -c29022251da8ea9d1797120a448e8f5c506f7a666153d6f2dd57936ff0d68cb3747b5f9788dccf406e0ca34f6468d78c24506503004d34f297017cd45ed782707ffce61f90a97779b1feaa0b4b527157e8de4557372998183fbc4d49e2d3cc1f33731c8b17a4248073f107fc152d471d96c6430cba0b939ad0a3b2017fef8f95 +B = 167a877ca2c4ecafa18fe4179bb71ef26ca1b50fc2bbf5ed0384e1415c9d7d75ac25d142111e51e3b1496ee00fa916d382304cd525afce6cfd419af212999d761b12846a749476a8c5e7d3a3acb7daa77ec7e4c33e08235e091f6447bf476b2438bbe3f6627089eeb524e5854620e9a3d52f20a6264de93dcfb75ff42e96dc7a +GCD = 1 + +A = -f1b01a508c7a5e1b83cb8c7d9ba74419711dfe32b252f284b83daf391a7560cc9006d35a2549cfc9e4cff464d8d9bea34e9a2879a67435932503a8f37f563074d00afa79071cec2dbc85bd9f2e5cbbdd42c3f2e8ef85312368b46b78329d27649aaf15e73aa2fd7ede847b8d7c4ed7033073a7867d025e1cb92b1f466e1d14c1 +B = -87d7d498ef57cc24e0032c3d05de96f3456cc5a1865128edef73a5578259b564f141edf89513ac601dd93a6c79b7d59c2ecba11f2f81f34d954b6fa0ca81e25ef6ae4b03879bedce03642d4f34bbad67837a997200feb3a37a786cfdacc946dcd8a5d49e7c02284f2ce1904313a54654289f9be672b301b8dbdedc6ba6af1a4f +GCD = 1 + +A = 48a2ca1d093788100b1ccfd7e2efd28a3b4ca2fc68a9803074ca2fde090c16f88cfcf8d21fc0a0b5d967a28c57616717f855e104799ad1f9cce980f6ee5746fabe7bc3cdb216dc9eb5bb809942159592e2da4530b26b1a48676945a9eaf75da4ceb677ddf7d2d9c0d4f40fcedb5c14d84c06bee4630aa608cbe7bc68e95d7bac +B = 6fdebfbf71eea092db63cb3dd013b28a7face1169d6fcbb53d94f185fbc01502435e648a1115d019af6ab9fa0f9d754eb04ef4f47b827ef21cfbf0ed55ad367e340786146b81428a16f27734f8a2439e21d39f8e9fdf28b27e49a5877e26a55ec6762cfd9bf0c82fb1dc95173db2e9f8a5138de70d79304d6c9fdb811567ef43 +GCD = 1 + +A = db659d5c87330bfdfce7cda7e84180787c096ac2adac3f16b8658a1aa1631a5536e96c82038a998fd5d92030c4a7cb4ee65e401461299e9812053888d34c9a1e5faf73bd3dc4e8e92cc818e5a72f29e2f645792a471a480ee644ff5b53d1735137f182b6ce6c13ff3df639261d9285ff700ca12486cdbf8fb1c82d175a0a6c6f +B = -28d58f1ec6190366035cef8a48338f59591deaa7c15c2ac1f1c95ba0f6070b171a1e7ff0f492c503236cf1458bc47fd5575356141e432ad98c7babb5f9c303a585d78aa6b3a995748178906d7ac92ce52f438e01e2643ad5d1079fa80aad66d0a0f912986241390eb341338d3b39adddf4ff69c8988b431262fcae446171d107 +GCD = 1 + +A = -72e471a443703c59a0b501bc06120f32b86835b9ccffbac7bf06de790d407afba8daf6b569429653ed56234d458c73ade9e43eb282d823d371d340871b3d37de1a30351ed86e5370aafb9ec3bd5c94b7500f8158d53f73bd4fcdcd0dd8d3d38cc90217fcad6d25fc4b50f5ccbf00ba50aeb0ef3b2a13de07e32d5c5ddbff9b5d +B = -b1aa46ddfba7df7e6096081cba0270fcdf329ef99e8c0153410cced7e326944063528a3e82f4471cad80a66ae71ba63feebae5ec3a2747612df4a1bf4ac187da956ac6614d1be45ea290e2bc88a2112354640e2d08fc13630fe19da20af2720a810aa4ea51d48e2beacefbd60992d6209604c4ab87ea99a4496d8ea6df537376 +GCD = 3 + +A = f40f9eba98f5a840c6d133f98351f9cc2a9993246d8b848fac591143d4d390fb6775f468409bed0addbb8b7bd97b9df07ae6d7912ff263e37cf611694dcc860cde7256dc80313f811116b187d87256d807628aceec86ccc0c4cfcf155818a75e6bc219c9f7261f22fd3fa5b3ec00587d12e5e35eec527640ea2a2f607358edf6 +B = -54db122a02aaf1e8356cc80a4dd8e40f5f25934f9d2385da7867f9582f49ff4a1c0b396b12136e8325a729e55cd444337897bd7e9b7c2328b60892ae879e2a7a102f1d20b6cda684486b1cfaf72ec410add82ffd2aa3c3f647e6a9e3aee957700de2eb99669468bf8b6a13a703785d0f5597760752b1ce1e97b659cadf1282b2 +GCD = 2 + +A = c2919cc5632e2e2664a81140b59f3f11e0276b73893c359e351755d3b5fbf459078fdc0cdab8aed9799b93965f0624d85e094fca1a1d2042bbb904c4ca6b2e123713320abef0c6802af784d144850e468b04ec2248f438c8eb1cf7e35968aef74c4b7edc191fb4a7bcf33b27cb61e73fd99dd1a31939fddcfe7db0872d891730 +B = -d45c6aea632426bed9beafadcfc2e18fe6efe6a7c6a70b37f2812ecea354d70e8f3552c5fb7ca56e326324265240e59cfe7c595d26167c3dbcc7ed1fd6e5fbabe93ea5ded35a63a61ee962698e5798e28922dca9b252f62800c842915677a2a56989fe8c23986b2182b7d7aa09b13e9504232bd460e6a30207e44323301305ea +GCD = 2 + +A = 288e3ba8025c171a58e1baa1242057e7e40ea2493b5a191db8009dfc9f049b1fc8ca29cc65910d8ce62ae374c4af805e539f65449c89f6b2b682a2d33143941b96b25b21f638ea0d9d95caa534311faededfbdaf71eb65f1744314c41b6e44e697a3d33637ce8077ca382e89137d1da88b395167c11c2e3059ecf2f8eae0b128 +B = ffa3a37f0a81d560285c2cf391189ce07d3ae622e5d46d624bef6e218f14455fa51d796014f933cbd302b62c08b8e4b6908c14e8bea475fd77ff9e91a4d721617a8a9267885326239887275350e41abf437e95f5c59f567ba38cedc6970245d1bf2202e27e61a28859dba4f75796f74c07ccd55d9a0f847bbf28ff3b6985d963 +GCD = 27 + +A = 7ef5b5abbc4d37656e1361be70d2d377733105e8468e52adce96597f449b0766d08996da0b94cab6fbb319ff0292d2f057681337ae4ba8e2288c4d99f1fd3dcc4c87a620d1706647243858f822e7628c8ee6fed2d74fac90c11aab7450645e787520473bbfa4325851c811217ba544b776984bb648deaa97b3f616ff44be7f93 +B = 5c632ecffdab62d2222c0eee1a8b294a5a2113335107422839ce141ff768529424ba7dc7a6f7d5d585a21c2a66af43a38b2e92f924b0b00de00a421fe9a852e06ebcf05b42b5871729404aa70134efb32c637d58593eef07dfd5ffa3bdd3f845b65c7226799b0f8a57cc980e213c5fe3ae50e4335607084288ef0dff127d0029 +GCD = 1 + +A = 140db1546f0baac73208142e1dc6ecba8f85d13e46cfae751a39ff618cb51d359f84639b16157b649abbf060b29d50fa86de5929208bec0c53023bf508389437b46ac304315051b27e65a6e04cdec736392eebccd8fce1cb064206704c1f75351df4f4c9950ba8e5f1bdf9eeea353baee1a5328d992af90692b4f51b0e174227 +B = 2f89690ebfb9ff780b85352071f9b91ff03af4915382cebd1e276700b500210d94c92979fdcf6c31c6499176149dac85422656cc5b8ef675c6ea9521f9f9a0b4278c785f7bb1080530165e660070ee6b7277fd81133a01d1e74382ff9df98e2d93ab653f4f3403734f468ca0c92fe26e0a420dcd7201c51b18a2676474dc11a4 +GCD = 1 + +A = 84084adb6cf02639893aaab4f35c700748396a18d3b112e04aac9e1aa9599de74bc67941dfc4163ea38d5555a6d4f64267db92cd8a4d9e7eaecd26997ca3ba4f8a1fe01ead6a4ff479b73cdf2c3f737020b77ed78df10173fab4c812aed68b8bcc53c56f90bf7bf73961f78a1bd7f756eefee6f4155a6354165ba721152ea72a +B = -7c46a32ab5df788177f4eb44595339c1137d99d953cf6fed96c0236eb132ae35e3c5443247732f3b953a1ef84eb2d2765cfe31138635bd5169c46a0e3ca2e3ed58f8c82918cf1559e042ffcbe0511d64d4f4eccbab15f69309e88d34469dabdada53fafe0b8b93954ad540e03a7d30e770cd4895c8f6d465edec4204c749267f +GCD = 1 + +A = a981fd251483fc2af4fb7af6ab2dffb689485c04d8e129593029a93b215f5ca4766e8fffc7c09e61a07551bfba9c9df8a664f97aa8bdfadc834c4efd27a05109266283f10f6aef075be86cf11c2bc8d4704514f335ea47a2a1bb1704cddd94077796264e56c77004af7d700d58f8d2ea0f9279cb1a25d73819260477cf4ae567 +B = -6ae7fa3301fe3321d330c1f7090be90eb361c4c0a134a5b6f19cff350d7bb0e48a237d42b34a667e947935c329e49c37f44dd7a2e41a1476c0c49f8b71fb4412ccc64707efe1d4a4198215ed68cbb8936a08c11d33b503695a070eb67cff485e0c86358b417fccdd8f93be49cfef57b07667aa7b7ddc1b9d4c52798d5c8f9bc8 +GCD = 1 + +A = -b631f8a7641b5d41b3eb612f279c14202b99a4207b3af5686de3a3b3a06af565dc40f175e7fa55370e450eee70664ddd161e72647986a61f2403fd63e28a6916f59f2ca89d2e7f547a59c41663419f0d4f47c3416084ebc55b0e32a7d9946d596829905535ed5ea96ddff540559e403e89070f76ded127a63356a887908970f +B = 40d83735d70fc67b949d6c9011b424b8610c101e14b6c14e3dcc218cef3ed6b9a6937455df733cf28395a6bbd57b58f1bd6b644d7289c406c02d88a5c90336df76dcdb3915129435a295f8baca607b2d95be6f453cf33f27e54e904fa8efb468d3d3bfe42d205f4d215141bd7a667a081dab56b6bf9ac58a37384960f3d00143 +GCD = 1 + +A = c283bc231037e4382a9cc3dea35145a0a27d81c58d93ebddf41a99a91593e502b85f309c1abe08400fcc242c92a783492d616c9769015770de653108562f7969b164e269112f93ee1eaad4914415790b64b74c4dc3a1c07d183aa9a868de3c8d2f49494e31c5ae8c849ee15786ddc265347cfff8b23b0cc15161f1a91066b4cf +B = 1de4a88e80558a547a0883feecead664c4631b1f59d19b4fe1aa5e61376730dea4cf628ac5347c69978be6464e7916af4008824544a06492fce4356061d654a2f730f9d3cdda8ce520be84c9c5e45be0a59507be7d7fda93ee14b343d8db2be812156c3aba8adfabfb3b002ceff06710c662e0d3c962294fcad438977bf3a43c +GCD = 3 + +A = 839382ff295caf55e6490afe233722d56e9d7658d5fb649723d1e8093bb40941a452e1f6915b808af12abd65f4417184a7bc28dbdbb43bdb87a6b1d79907cebb3f2e88e408ce8ef7f4847d09c5fbf1a99e3d8c36fda1fc2245febd99d9a345f6b547a42d0cc99a5eabf97e4f5276407e990189e671d16f03fa06f75992136f23 +B = 93c2e1c35b426b9a55eb9eaa6d0a519bbb59f8ebca8ac50c0ab37f5d2d56d942ea3866100b8ddaf150601685f9cb178ca7a1e4a6411f92af4065ca58fca5c35e8b1c36b223b874ea3d3360d2d7540a5583c6d7e3da24b3aa24b3c790841b29ef663170e4492fdbb286f58a6173eb4a8d7bbc72ef887d89b36562443b4f2e169e +GCD = 1 + +A = -4a3f82c72925fb805a1dd02a4831fcdb7d0bf1cb0b90f1a97053076b64aafaf9cec3df00f335e25fcbee9f80a80f6ab105db6c80c6b4c9136388c68d20847cf31e402c94946dbf8ef8569917cb7c5eba390cc3e8230398a3386f9c55ce924a108a1d7d42451b1d15268c6241601a58bcc5763d909ded7de1ca6992157bb3e6bf +B = -ce803dd8eaa66bea9122e4886d11e866517fbe2ddbbf4fcea573403b88764dccbc01de1298bab469bd87deaccf4749c93a5ccda073bfeac05e8ee23a98e09c2b9db7dec899496dc86538cb58022307f3ba95d2ba497541c36825ec0725bbea9ff2557f912e9207399b2e2a6eb8d380bf32d6f9b1dd78437066279aa619c01b08 +GCD = 3f + +A = -daea240e1c50452d78975a729483433127094ffe17c1504d20c2d973409065f2f9b04a4671ccbea0ea1246280dc5bd398fcae5a91b11a3b106cb0b04e8ccd0fb2dfd8a1fd5357dbb71b9475f26288cfaa40fce158e523bdb2ab4392d630afbbdc12b0ccd6a22e2db09c2a77c4fcd4637c3efec7d1cc9929c5e952383a17c2ebc +B = 6c6e38391d5c794d7e4104516a24ce0f0ba77d13c8ea294f07ad8f61870f40f587496707e1906d7c8f46a8584e5aa82b0bd16b26b01e5b276fd2cca76f5e8c09bfde3b4628d237dc6ee35ef64e1136fb4e6baf3ef46268c3f4ea21ac5e7683f143ae1c7bb333a7c9e3ec121fdfca6ec8f22e6cfd64d9f68509abc58aded834c5 +GCD = 1 + +A = 21bbda00bd3ffb167fe34e01735d432378a6dd2f896d936e1182e0882f17bccb3b3d964272d2c64c2a7e886fa92413e6c01ecf84db9f29c435f2132b9f0c49587dbe985b18269cebfd72a785c165777e293ad7b32f614dac592e0603c531619313729dcfce5dc210e3250b8bf4646b447741c10f1dd9e495f89c55a6a5c11bdb +B = e303980479317084c56d9bd5a6865b31ab3d1e7675014af88823ca388c915e00046d30f54774f0cd117998d2659de9b04ef7e78898b885012dbd3bd1fbb6f0a608aa47ed8b1328ee3c02feaac84adab461329945b062ec02e690b460ca3b5a0b5063be7a7a0a6634050cbae49091bca19fa229553f412d088c6c1a1ef059bcb8 +GCD = 1 + +A = d35485a01ae17625e5cfdc384f937e4ebf39be59d8143a1d0131bfda73737837d4f59010e72521e9401ea19409d76bb2f0b1881cbfdd515d9d4c1975cfecaa0e259958d5abd2b3237e7da9a76aefd8b4c21bd8349a4d3a1c8a212c980f7984b2b281195f2df08207b99652ab05263e5ef85eb126492918baf4c4d077461ca1e5 +B = -feb136c65beff472a3c83703fdd3959e4c868e63152ae6b1b708e6303e9c0d81b6bba5c9a18b43635161b9cedd55e558069aad4d31e5aeac224ec34f23cca9830f0000e9239eac525b33d00b8c8a7aa90b391a618ecdf104acb30d09ce42cd3836708b05d1f6ddc3f741fbfd7bea55e504ca573bf94af73008cf7f916b97aa5a +GCD = 1 + +A = e6234aee21ea358ed4cc8fe9a1fda68deee6bb7762fa4bf90da04aa9e3c03390e5dd60a5932a3a7e6ad93bf9a6d0f0d79eed7f0cd6a8a714f11a82699aba3e11f953f81dbc592b0a2d2a7de70aa074f592d9b40918c37f02fdb9e7c01e641137bdebb7b3d784a9399ba2c7701de09068e4aeaffa173db361a5e2d573bcacc53f +B = fc8962f424855af7e0c22c9c424fb6c2afa4c35be6d4051f4b9cb3d762d5324bf318fb7ded05755302af37ac5e6aef2184d8178b53b3bb1ba4f0a54f704ea65cdd34550e20e7cc9acafba64c68667e755e6944bb2a01392125f80df14c2fa6a911f3acf4d9b3737312136f2da0eed34109db21c9dea3cf84c56101c4e7ed2e51 +GCD = 1 + +A = -f3d77b8eb4c24a2e28668be112ec8bd8ac8ccb71f324b87ffe5e96f6e13881daed223d44b27adc674ad2f1ce83b09889a8bde32ca4d1c140c7c2e25bf824c5dbfc50458d07b0a7616e1b97c8dd7de5f30e0326352a5a81a564e220ac9f8980c874a223a624c171a683005bf98a7d282e78076a13a47ddb3ae09cd3108b8b946c +B = -89d73a5830fb043739438502b5c5b0b4b31391d13e3e8d926479045d3b55e778e698aa2a593d9936dcdbe3c8213c15b97e34d6fdfcb1bcc42880caa9b4e377438295cb3ffd071f81fb71b13ecaa21da10b04fb0da65b79c363bfcda7e1fd8c3a13a586b8d5a6375dae6c21b5abc433be621cc3d3b462127ac4153032a84be21a +GCD = 2 + +A = -60 +B = 3c +GCD = c + +A = 186 +B = d2 +GCD = 1e + +A = -113 +B = -1b8 +GCD = 37 + +A = -b60 +B = 116b +GCD = 5b + +A = 1fea +B = -ed8 +GCD = be + +A = 1b5c1 +B = -148c5 +GCD = 1d1 + +A = -5a426 +B = -2846a +GCD = 34e + +A = 63800 +B = -94000 +GCD = 800 + +A = -4638a8 +B = -23f256 +GCD = d602 + +A = 355d40 +B = 129f350 +GCD = 47270 + +A = -5ba081e +B = -3a89072 +GCD = 383e + +A = -2014254 +B = -411d534 +GCD = 7004 + +A = -4c1bb1c8 +B = 28eb8bf0 +GCD = 9ac8 + +A = -bcbd0f22 +B = 6b2528ce +GCD = 1544a + +A = 3b3ea5246 +B = 9d812da9 +GCD = 38dd9 + +A = -d341e4963 +B = 897dff148 +GCD = 4bab5 + +A = 1be090b9d +B = 10e7682e15 +GCD = b7695 + +A = f8f4eec48 +B = c1b223b0ea +GCD = 18d0d2 + +A = 38b303e10d9 +B = 37338b5cbd7 +GCD = 22fbd1 + +A = -239480d6150 +B = c9bbdec2573 +GCD = 151fcd7 + +A = -8bfae4efec8 +B = -5cb3b447464e +GCD = c6750a + +A = -17ffbeda3360 +B = -172360f2b88a4 +GCD = 631bb84 + +A = 2db19fdfdde20 +B = 1b45394b87c5e +GCD = 312181a + +A = -4495f0e4e9ffc +B = 9c2cdbe69719f +GCD = 722c331 + +A = -220a630cb9dbe0 +B = -3f6d33017bd27a +GCD = c3a44e6 + +A = ebf8369df6c6c0 +B = -5e060007b69270 +GCD = 1f09ab30 + +A = 7b6f0f808af02c0 +B = -6291d40baef1da4 +GCD = 1b51b9314 + +A = 10763885f54acdb6 +B = 48ad72124b927b2 +GCD = 446be8ee6 + +A = 1a1835261881c618 +B = -489ad34b6f17877c +GCD = 1381450b4 + +A = 501a8657d00fec90 +B = -7d572fe34f1e3f5c +GCD = 14b7465ac + +A = -31d2defd8438d0934 +B = 169de129d42f92a1f +GCD = 2f5f228d7 + +A = -f654ddd0674ac42bd +B = -102942513fe4ff077e +GCD = 53754c93b + +A = 53e625b6193b469bd0 +B = -25339fdb5a2cb8be10 +GCD = 69dbaf98b0 + +A = -e2136db2a4f5c3b648 +B = -a1222b022d7a60e600 +GCD = 379cabe8c8 + +A = 4d46abeebca81ce0b62 +B = 4be4576e8dd4460185a +GCD = 277218eb16 + +A = fcee21b2537f1e316f6 +B = 8152473e34dc6bf3672 +GCD = 7548bd41fec2 + +A = -4b2223e1cb3699148261 +B = -c9d5752eb52f007b89c +GCD = bb2037c85d + +A = 1350d1270c3ebd10c35db +B = 14fc3fdc42f3dcc7e115a +GCD = 1ba06e1280b + +A = 50692071b5ee8a096ff4d +B = 3976ba57d4058bc12dd0c +GCD = 2d5d14ad4e9 + +A = 6a9884789299c2942f1b0 +B = 719653120e442ae6650ce +GCD = 47175a451ce + +A = 72e211d36a45e2f9f2ddda +B = -5e1085e7003ac906d3cdf0 +GCD = e7f966f04b6 + +A = 1c947b448d36d1cfae4982a +B = -6e964fc229dcf41139328 +GCD = 945fc32cf77e + +A = 24fcf278c33bd31b63e3216 +B = -49e65692c65d3aec4f6992e +GCD = 2e7f54c97526 + +A = -75119da40f9986224346a33 +B = a091e0ab5ecfe93c620471d +GCD = 4e41cf47726f + +A = 40b89aea1ebd3cb5f027dcb8 +B = 29a45f4952aa17040c3a34a4 +GCD = 94a2a8cd851c + +A = -df2b6f9d7344fb8f18557e43 +B = -36500a4df1f6a1ace9f0e740 +GCD = 1af85bd617d03 + +A = 3cb73133275e0c9d970f56530 +B = 454f08b3716fae1e8c9520e18 +GCD = 188bbab2af6a58 + +A = 17ed791c30dfb55c98a04aeaa7 +B = 120c7fa76ee6ccdcd5eb13d06d +GCD = 68df2b6f94dc9 + +A = 69e936e19455efb26b03dcc7d0 +B = -5dbcc1a5e9aa7cfd3610c7e2a8 +GCD = d74ad9c7f8aa8 + +A = 5108d073a4f96af8478989b920 +B = 1a457913f0fdb4b6252070728c +GCD = 38d5d2424767b4 + +A = -8f8f62c3e3098f55785870b258 +B = 2d7b6adb4a62419e44660f494bc +GCD = 2a57445ed9455c + +A = -14d2bfa499ee9db45515af917f60 +B = 7b439debbb28643d36c8321c20a +GCD = eb4d745e1ee9ee + +A = -2a757de40c76d46f3a0c689106c3 +B = -48afc1e13db995e04640fdff13f5 +GCD = c200aed70b3c8d + +A = 75cd38babb6944db9278793c44a +B = a0a9e468c75bdd679bcb25244896 +GCD = 276932887bf3992 + +A = 48123cf3d27668329869856ffb16 +B = -2552b4e917da9d397885694d1f896 +GCD = 3ff19116559b08e + +A = 63156f7b59e4bb5caff950cbdca90 +B = 1a87e98e99598237725543cdc0fac4 +GCD = 7c1b98b8b161e4c + +A = 28c3f0e5155df3134fbc202ec5b440 +B = 218e4d504823961c73a752e98ffa14 +GCD = 82f502a9cb94a54 + +A = 66018fbea01eae81b9798cd07cbb80 +B = -7c443a8771b5a18a4459f3b043d040 +GCD = 1c40989249566fc0 + +A = 4a7af2c3f8707c504e065e05b1c80b8 +B = 1ff4e92c21ea284ab39c8d0c3764380 +GCD = c1a41e0f6a1f1b88 + +A = -b3777346ffc00540b7fc277cdeaa120 +B = -1d142b9475c0bcbf157ddef135c6abd8 +GCD = 16b2a3123710d7ab8 + +A = -54fab06a4720b0d095889274d51933a9 +B = -35b2fa44d46cf20e24ef74f5159ac44e +GCD = e96ba48429bf2485 + +A = -36e79bbc0be929b8790f64ccdb9d264a +B = -e1b9be6e7590db6381f7084207711d16 +GCD = 130af4bf2b0ab886a + +A = -2e4ee39b2813741a619d1269c9a5ab874 +B = -334f44bd14e6828f4164e54532062a504 +GCD = a36da43ee906a05e4 + +A = e750698347c58a88587054d34630be800 +B = d40de7a34ae8aec3069438d1049d6a708 +GCD = a2582199696ccd858 + +A = -27392efba0d4a4ebf0f0f9ba498e806c8f +B = 26debce4c2d6c96ef6431473bd9b4a43ea +GCD = 1e67036d83e93d60b9 + +A = -1c4c40c4489f36c958801b7dec347165478 +B = c5a7df972998846db2abf3784bcfe3a805 +GCD = 1ecf5da42030d9927f + +A = 677c6a306c395c0f39529e5d795e6546dd0 +B = -66238cd10f0b9c567e205c82dd070fb61f0 +GCD = 7908f4ee6786542fb0 + +A = -15f3c0bd1182b58d8e243c55a24123d06bbf +B = 886e66cacb7b1725ac4d3770c247d89489c +GCD = 781ba4691294ea97cb + +A = -109d6075209cb53e8164d876dffe810a12e6 +B = 1a78a4bce1ea471a3585fe50cbb7650b3401 +GCD = caeed23752cb0475b5 + +A = 1202067d091ffb7f976698f3f89e09cbddab +B = 1bd41e29f9450ca4d064cb51e67c53e2401fc +GCD = 1ca9a074c9114076b1d + +A = -46df2a3b758f612ab5047193a1de42c43c9d0 +B = -3a50bda4ca03e98fd03437ff2f8a84d73aaaa +GCD = 32776c19a4c5d038ae6 + +A = c307929b88217259158cf2c615804dc6955f6 +B = -44cd179064d7f47b0f12ae52b442e863d9a0 +GCD = 55bacb5c916360ac886 + +A = -28e83c0d17135602e6fe937d754e752f92bc5c +B = -4364326998617e085b6a2cb2c68f579e939b40 +GCD = 928912429b8741a2dcc + +A = ec320e05a24f118bb243855461de4bfac2cc90 +B = 71e9d70cc20bfe0f9789c94f599ed42aa0fc95 +GCD = 1e369b04f74afbd9cef3 + +A = 1ae8d12f2faa8262bc454562953fcaa651545a8 +B = -431ab0d696d3eb7d2dd209d793c81483dc85b74 +GCD = 298f4bee5487a5e31ff4 + +A = -6ba78b017a29c99be57177f0db6e69e6adb50cc +B = -161adb15826f168fd50caedcae729119fa4e43cc +GCD = 6562700e2471a8791b5c + +A = -384bc4f58d6f153c42d794a7008458c51edf9ac +B = 1ddfd41fc2007340874d1ee3b2e98f5dfd353e8a +GCD = 85db7d6c787a79e0094c6 + +A = 28301a390f514d6bede850fa603fd01c5a0b741d +B = -12a7880f4b21e70689f2ccdc4af6b994692f6116e +GCD = 13edc8737b0d454d7a881 + +A = -4afb93a6083083909296418bcd17fe1917c0423b6 +B = -19f5cae77162c6992b48abb66b28af7e1590828e4 +GCD = 3062cf438b1a6020552a6 + +A = 1b01df399f465678baa23632e6f636e6e9995ae978 +B = -33d7e08cd12c7fb51393f4d6529e6b940ed912ff6 +GCD = 1690d80887db5b78ac5e7e + +A = 4e163c74a44bb9366fa1fcbf7f5f3466bf76de0b70 +B = 52ee9fd13a73c74ecea641b8647027c0b70cae3cce +GCD = c95d6705a73e87dfb11e2 + +A = -18da164408d5151d83e04d5a12729011793e21e328e +B = 1ab7d2be06dcfa6fc13972bd8eea00e374e644e9dc6 +GCD = 1c86138b2c3aaf3456294a + +A = 157a8f34bfc93447b2738f99417504e7ae99df675d8 +B = -9e1072f81e35737e956ada541883e55d187bbe700 +GCD = 6cc66684ca87ba0eda4e88 + +A = -730413d5dd18a82f6c9e24de0fd2bab0b6f9abc4c5c +B = 10cadbe97cfb99dca72d5626c7b75fad81c2f4113264 +GCD = e89f52db95f88ba356066c + +A = 213e3442e52fabc81ec6312cf2b3324eeccc536d92d8 +B = -4476713c86e51a0a1a63c5c70cb8d74bc115e1572677 +GCD = 9bf30eab8f99017adf5957 + +A = ae87fd02c6b7bb4cdbdacbec9cc0925ff604559ecd40 +B = -74b6a9328dff01501b1160e51c708d27d1731f960ce0 +GCD = de4c9a887083b1c11affd20 + +A = 24e3a4757c785e98567559d1f444676832c8fb4cf9173 +B = 1ae906ee7a49fcc0239c0d0efdb18161b8cbeb4ff44b6 +GCD = 321e7bdc7bd26256ece00bf + +A = bfaceea21b4b3aeef201c24f7243bef3e896f3476da80 +B = 34966d7a58057e875ae4572bdd7459ded927c2c7b8f20 +GCD = c4ba3ab148294a8e6d47620 + +A = -5bdd783da99a7e245ca551396e093f4c465322e5844757 +B = 59d33cb08a960e4c9a32bb7b8d6b863d5f6d2ce40b8250 +GCD = d3d6a2bc13e9a41307a10bf + +A = -36b5be6ff7a5df0f24c3627304d9fef0b8a79097a7c4c8 +B = -f000375b520dde6f4d09bea91d3cdf6d0380c46f2fbe3a +GCD = 2f2bbaaf28b95e18a84f583a + +A = 710afafd13f2ad4303f6063ccaffe6471a0483185434fc4 +B = 306c5f7848de05605aa30e18280b6476a16db89864e8cd8 +GCD = 1afb372ba598ffd1553677ae4 + +A = -1b9962f376d3d9010d5ab1982723ec281db0de5198afa8c +B = -f59b772cbe13508a130c3af0b5ed5f905054b1bc827f5e4 +GCD = b0b0f6c52ef3c37154c1edf4 + +A = f46660653502988f52f5c5dd41803f6ea0d84e6ec97e810 +B = 2bb7c59422b5dbf6716fbe4ebbdc7022dc4b9dae220c6c20 +GCD = 12927f998fd18a0c976da06b0 + +A = -1544ac242cf18085bde53c7623f058a4be9e74848f0c054e0 +B = 1036957e8f99ca11234ea87465e024542dda2ec01bc0cc840 +GCD = 170e6faaaaee067ee651575a0 + +A = 48e10040e36d3689f808b56e57d66dc229863eb156629b6c0 +B = -31781aba8dcdba4462d0b0d76cedd86e26891ab3df6d18780 +GCD = fe73ee3df95ed8dbed6cb60c0 + +A = -f1ffdd2179159d5574a836051465c918aeb443f34f4beab39 +B = 122d6f913dfc171b7c6dd2c66185a07f61d38b9887db1caea4 +GCD = 41e0e56dce7544c8e606562897 + +A = -2e6ac0b560dc647868c997776eeabded9cfc6333f2b7fc83ac +B = 146b44ad06770ad42a0f04b47351a388de00ea4cc2a9461fde +GCD = cb29dcdb03a8e33fff6929152 + +A = -1390f1c1c2d496fd3776042fb87bbfe8ccd673cc48220e3262a +B = -15c3dbb1d024854be4db2138ab168116b210760ebcae99d0cdc +GCD = 16352e1ead35648e7ff73971ca + +A = 4abac232eade22e553c6eb4d5b6cc04250215ead1c8af15f1ea +B = 245d690f3952b8d5773bd304f743fdd4a902bb056f814338e62 +GCD = 29bc533ba87f0017c45933f64a + +A = 1cce1905ebd7a1a50d1dba965af29a161964433daef467990210 +B = -c258c1b1429322eccc9e57fdebf2018ec8bcbf937577ab60a0 +GCD = 2264d81ab8eb97b41233ea04eb90 + +A = 16feda78c59cc9ab1707decd0970dbc3cbb8445f9b076ac87948 +B = 1cac7d0661010679551cb2fdfc23db05303f8660e5036f8a8637 +GCD = c6da69d30eaf504be7f8ea388b + +A = -891f9eeb3b5acbc7102cefcf4a94b834f1bb4fcf2e5f47a005b2 +B = 14666b1967cd12b44073ba7fdc2eed10a63e5bf2d36cf9589acf3 +GCD = 1903c267fa38ed6b2df075decdd + +A = 48e276e7a4197633d46a896cd1fbd51d85b7ac70ed8fcf277d3bc +B = -424594d2ffe7d44d425e5cdb97e26b3c48f52f401c224a6f69fb8 +GCD = e8196796f47fdc5b8bae54e286c + +A = -4ce149df26eded2015965c0e0277a713a15af9a281e6d24f3ebf1 +B = fee88bb8c116fa6fce83c086835e399123a9624e9fdb27f93e902 +GCD = 5aa90e8c1be239ad94ed9ffaffd + +A = 446a6dd93c81da9bde1a40f88f75227bd0f4d832c0c75c0f0827d5 +B = 3a0a6788e01a5cb9050d7b099db23e540705a8d0b3cf7efce39def +GCD = 98dd9967174f20a3eaceb608419 + +A = -1c573c54bbd96a6daeca8ad08f7c1d5ddc9cfd203c3a5cd7d887eae +B = -e78d1e0c739f5c239fc8c05ccced17235899c6ca080fe619ab304a +GCD = 1f413e9056074460a4c4b1d109aa + +A = -18a1943a102954088a90b0350b68db66564157440bea1b8e4562266 +B = -3b3de5b0847bbfdd3d433b43a260d1fc890d43b50f30ef95fbc24b3 +GCD = 33449e94e1eaf2b7ba235cad97cd + +A = 18a54ff0aad2453a79afd79eeaed1ac3178bd4cd1ac9c5fd8774ce60 +B = 8dc9232a0a1729f1e7ddaea824de9fcad4c0065e9eba1469e55e5b0 +GCD = 6db23e322d6f807c9ac8aeaee550 + +A = 6aa7a289de427771d237fe84355807aeedc56da586108e5c0efa117a +B = -34aa6adcf13c278992a2496747d95ebd7fb0978fe70a19879a7f8f3a +GCD = fa59ae7576a407f0cc6c90970d2e + +A = 14971ed18ba7d1a94dff70cac54f50f0eb1d0b9962ccf8f95ac9124f0 +B = 124ca1338251f6312bb87a181c84cac83e7db24082cc1002b5ad5a439 +GCD = 198d1e2e86808e583f5e08701610d + +A = -26b9cca877235946022af4669b526ec373951e3447eb7d5ace555545d +B = -3428e2f4c4751a204c1c0fcc90ec2cd6f20404b7117f08e12ef7ef814 +GCD = 2778771a4b25f9c0a2a89634755bb + +A = d5e8c7732d8d5ce5b28ae4db0476bedf5d0ef5951fcfe270bbc487c86 +B = e09863c4b9a04887c245137387357fb6570bb112eec5f19c7c4df912a +GCD = 50225f1ebf464370403cd65778c306 + +A = 420e509b0f8d2c7fe49c4a7bf1e570fecd9dfa073fc8cd37f395a06cee +B = 5b481956824e7828a5a0e124dc5b77e1e08cdb563b906601c15205978b +GCD = dea45f684be34846c97e948807b71 + +A = -13d0805f87ac3040a011d5587e2dcc7deaef888e712305e103e3c426f82 +B = -1d06c9c7086cc2a5046caf9037eefdb11feec095a3de1d4de9adba7a8b9 +GCD = 1d18a5461f9bf6bd399d50f98cc4e9 + +A = 43705b3956e56bbdd83b60f5fcf9655efc3c7b675ba2728bb4db1177794 +B = -1637ee6f96e79ede1ab97fd6e7943f424c0f340a58f7ebb11fb6e1dd13c +GCD = 257eb70891655f00a12a58652f8ff4 + +A = -1adfea565faf9f612859be5d997c38448e931da3643c797fd15875660593 +B = -99e4ebee8cb4dbbc7f2cf9b8db62dfc39e3ffeeb629bb56b79d9658270e +GCD = 6c7739624ab895497a5c1e15031a89 + +A = -3bac0f98360e068ea61509b67027db8b5ed9deff3802d3a26b02e1e48e48 +B = 63af576de3b0f715fc8b9e4897a46d68b7d24c01adf9ca5cdbcb3f00fd0a +GCD = d5346e1979317cdc43ed40ff2f0a46 + +A = -4e2912454e3b9ef8f5f70e64e255c7b5d45514dd0261bfc1d3e9d6e198ff +B = -8b2ef5d1398a63fc22b44d1c9959364146787885909d9ae65c4548749f69 +GCD = 1fbeee7e7e619279f5c7c485d43207f + +A = 29301d123239d4cb4a6f849e58493b20bb1e46bac07e44451399eff17ba70 +B = -31eea4ea038d528b2d8793ec97a9c426e41c5dbb6018b0c09be2e6f7b36b0 +GCD = 5ab3487d2e00b2ebb9be6ed84aa20df0 + +A = 46afaa677429aa21f301d151b225f9389c68ee4a260890cfa8a872b72b5fe +B = 1679adde5a60aa24bda71376a0354579620f3a13fd194fece23bacb7a4c9b6 +GCD = 5a18519583b27fb2abc7a4d10750626 + +A = 2fb260963b23665dfba0dd8fb0b7f5f6629eef7c960e75721ff0661a89a002 +B = 3b8c650ebca9fc99009d57a49ff98088550446f566be7377308783dd6d546 +GCD = e385d3223b5fc1ffa244a538dc3108e + +A = -f1bd28c7b6f8134cf6443c193ff73d983fe3a18c5f5ce58deb428f5c6c7498 +B = 542937a86d14d83bcbd62930624070dce93230b769f074776415cb384909e8 +GCD = 3c2d81daa41d0a58c513d44fee26b128 + +A = -59bcb00e6f32df3373988e268d466e06b9827cc455d5506f6143524de2bea1 +B = -22464a4299c48e4ea336b0ce2828b4f48ffe97d7cb7c0a9d9e282bcda8e6736 +GCD = 33d7d0c13d19d12c2450e8d86af98c45 + +A = -51b06e3e977ed94e2184d3899d383f9b6d2c7e8eb3a625034a814a72d0df619 +B = -ec842ec08aefd32f2c1f797c86d40f41fb9483e534f1cc37fb0834ab4ee5442 +GCD = 7d914fa6356c08855ae1f2b64f50fde5 + +A = 2fda06466cd332c4cfdfd159ecdbb32fe63a508d28c7986e8db333d8f3e1e664 +B = 2e4d6e4dc2e60ad07ea26db98085a14c839c24746879c90ed8d8cf66ab5468f9 +GCD = 4a0b745733b83cdc9a94f6b06e589f2e5 + +A = -2255ca5fbd3ccd756513e3d1885af3b06d22a4e7abb72fd876103b4ccfc72216 +B = 681d91c5c012a9372c6991edf3003d6cf8bb0e0608b9349672c80f93a5317429 +GCD = 307368f4350085b9d3572869a6567e9e5 + +A = 503def4d2eecf1e6f851a8ddc9380b3cc3ac66e46667ee0c3f8687abb3134ead8 +B = 48a92023acdac18324e432c25f50c5c619da709cb5b10412ee3f3265897115a50 +GCD = d1f599335eebb84aa19a2e6e4a5c8ce28 + +A = -160e04e27276bbe20fcacee78cf1942e064120b3c0d44f902b2139249ef93aedc7 +B = -10e34b4a835b74e3497c55c06956e41074639168738a23e5491f24df2ec0d1c141 +GCD = 14e2fa17ac3b29e0ad84222283f0697ed1 + +A = 4a3c79f70f46d68c8442a62a487e0fa54dd25d16cf03b907a48c5b352f0771664f +B = -5e55c73e34fcd075825263681b9037414ec73f9cb9862417acf76b474c8b77094c +GCD = c7866e19d6ac563848052fd2b902412f1 + +A = 122e6328908f0fc79e37fb8eefdf29d6a53d3f853bc2262e93be1f8a7f01fd5afe +B = 6f091073889e4b8db7224298a0f16f69fc086b02c6e99fc80d09d47112f06c9c85 +GCD = 10548afed577b8440b579204978d16491f + +A = -4c0aa42cf6b8447cc4912197098379387c8c01a9d2b5c1ddff3b69738d97956daf2 +B = 1102683a5e494615ff1e8f9d2be7469e87fdff0761ed1eccf3129047fccb86b721 +GCD = 2d46776613c8d811b81e3cea6430d84e87 + +A = 1e243b2ca937fef9c4eefa3afdd98ba5a22f8b77f62aaee7c725370f1d19e5f7c500 +B = -73efe730ab094b786236b87d169a536630eb59bf6685ba70b969233a7a69810cd00 +GCD = f6edfe5cdfca81f7569196ef35f8238100 + +A = 4df54eaf7061d5d63dd303a63e1664c93f9fe246d6dea6b3e6f099e2a49974342c50 +B = eb83a62a0bb71d53565ef81cc81186895d48487d386d77afcf19e39dec64044e701 +GCD = ae8facfe0c968dba0ccf354b840110229b + +A = 4ae250b0b705bb71a0fb080b2e652dd9499a3d426732d9a8c291ee504b5639d28214 +B = 734fac7be4899726b5056f4b5f20a91b872b259c61e8a04ef5f6d477c6fe4da1346 +GCD = 11359b62c6e2f9657943b13110059e15caea + +A = 3196454581c2fbd2fc92724caccb8d6e7503817467f190b337e0dfb1f5f8d48f7e044 +B = 1ee50fc646b544d97ac06fdd775bdeb077d73a205a5b84eb9ef05f9ca2558eb315ae1 +GCD = 8610ab99094112e4e3e860a046c0eae1fa1 + +A = 18a43021634ee11eb2ed2d4382850eed6d1088fe057b9315d669454778b976bdbbb2e3 +B = -18d4cd58b158b026dd5c7ba2d9fc88655cf2eb8ad12f140b8718841551f6e0c586cea3 +GCD = 69ca61df8b4e86b35e52d6a13bb0a070e73 + +A = -5a86aea7a57d8832b6c6b7ef935842e12bce7fb730ed253d184859e44e9bd45cd4fee4 +B = -355c8bbe93e163f83152acecce650f9f3941ce888cc0f1d9926cadd3a339fcb4407a84 +GCD = c91b3fde4f08ca8a4173728af195a3b1e7c + +A = -107e5de99404463e8ad8fcb8af83c737d1d26d582f01390e3ab1c1a865970d8228b6488 +B = -18c644d5dcb4d10a8e04046ed1610d8fd4de08735a2932094c7aa9ba116e82ba2928e76 +GCD = 3e7d3538deaf5f1a687a8f73ea8b493f58e6 + +A = -5fe7a36623304438423cc7ccdc85467954f0374fcbe69cc798d4106828e50799ce38ae6 +B = ba95d75a5e8656f500cf09303b4beb88e18d7698a0a81e0faf13525c2902fc959af942 +GCD = 36c38306d6019c1e9676f65080ac9480e782 + +A = -33971ed94e6443381734a8ed2a0a848ddd60aa23f0681736f91ef62fe8347481a804492 +B = -592ef66e68f6dc5ef53ebb6d647d578a67a383414c7d140bfe091199e93e537c8cfef07 +GCD = 5cd86af3e50f365969224beb8c6dfa2002c3 + +A = 36105fd008a760c86158ff4b53e6d61876c6c2fc6e139ffb266f7f4ad980e894394fd9c2 +B = 3b9332665a89fb140bf4149f688bf8a27f724e6021c6968231bccf6292d0bf5cf3b1fa +GCD = a081dc6cdacc79a42514a125234dfc424674e + +A = 13f23783adfc6c3813ad227be1423d07b631b5f663ee340cd6567aef95dd870c6c3f0254 +B = -ba37e4b55cd2de86b030c670966a4138982c6dac29d0b41d47fd2701798cf3a1b716357e +GCD = 193c1005980042f1f075f725ae2093fe0c862 + +A = 3adf066a954791b5069d393ffb546082eb40eee2b077d9e5cea391bde6aa17225d04038e5 +B = 5ef7078626d97edbbfc4f91a85f99e663aa5d8256c898de89f887e1bb37339200728645 +GCD = 20b592800a2b9e5e4d003e1649c798d29f92f + +A = -1915bc6156dbfce1a7f245ecadb10afd6613422f178ff692f85b7c9da81451e0439ff75d18 +B = 1503b6c6ba1a180a4d0e17e2916c4ae422422ed21a08220eeadfb4cee618c29037d58ea5a8 +GCD = 139958287b6aa1db5c226322ed12b6d3dacf78 + +A = -5959fff3629304a16218ab255c20e02bb03f1e53eb1b320b7a572e02833bb485231c545f73 +B = -300b04f5ceccdbe15c9f2ac6512833e163eeacb2fede463bde4e8bd2f8b4d3d88e2b6ee31a +GCD = cacbba40d3c6186745fd977a496b8e4cd2a91 + +A = -1256037784047e3c7dd9aa9456359d74a0c99580fd89bd34675876acd3fbfd4ce870626131e +B = 529135e12eb3b7a0321dcd3477b4ff3d6395d2341511437dc1e8917b641ea0a94f1fca3556 +GCD = 18ccffed86b3bc1e836aa43447831db8c0efe2 + +A = 3d2813b3d9b280a4c03d3db3601964bb35adefb6dcd31e2d27a44a6fca17864d325eee26fde +B = -20f1972ee28233cf4dbadfa5adcd399aee25c8ffe77f1bd969adbc3dc081c033b0ce16511c5 +GCD = 6e664481df3c1f9248e28dd9622424a413b013 + +A = 1629971f08614cbb42410e785d48063802e2564173e8eac978a8d5f02c2fed19f9af85475fec +B = -cb20d96f3826a4bdadbd3763b35dc03b6ac938968eccdbde422bb2d348ce62681b663ec998c +GCD = eb2e218bb74cf554a5fe5ade02e78cfc588f04 + +A = -24e9f690a775d100d99defb230688efae4ec7652c33b8724d4f96f2bf7c0f8b4193aa63093de +B = -20c7981ca7932686f71eca5b2800b0986424e7a8ec3f6e1afb52f1bfcc0e95d24f831cc81416 +GCD = bc687ac30265ca7040bcdde1deca1eb5f25096 + +A = 1d8c9ed1ed1af6f441719718852973096b7272b2814a7bfa6a1363e3f07b1cdb17d7f2c8c503 +B = 109e421661fc6a123fd111ddf55f7d4e4236d339aa2e0b0549229a36ed5ee806f7195c7bc6215 +GCD = 136910e0a9647c85dc04f9cda936f2e438eb3c3 + +A = 1292f188f0c08bb3563e2116f7eb738ccadfd6f02fcb3cfcb617a7e61ef41e94ba7b9a3ac578 +B = 40a9cfbbe61c779eb4b72e5d09bcd9061e0f77d3c5885be65ab42182c8519d8d0827aec5e5047 +GCD = 2a9bc97d63aaea3501e3f1b0f07cdb45140cd11 + +A = a1dcbfa2ad666112a17d65b01a1aeb38b3ecd987e154c453a1624625fb9340a076ca375ce9546 +B = 14a91adfe7a64cbca34b0374c6ff11ecde62154fa140e8eda24ed8539ae1fbb47afcafe23dc569 +GCD = 7d2adaa9139a4fc7a6d72c804123ded5d07a5bf + +A = 65781b766bbb0660f8c0ec78dd8448f3aefdfa2570fbc362efc2f15a903e7b3c29ba4ae994b69 +B = -41b59c298c47be0a4e0fdefdcf76ce2d5ba585f1d213df0abf4b93d295c1a11c49ae473142c8d0 +GCD = 23ad77f235539f36899547c20ba5f3b31d401467 + +A = -10c5531121b0f9a5f4280196c2bbe765ea280f61a243a5bbf29bf5f6b9838299337aa30d69bac0e +B = 10ef8d5bcc77ba1638c8339e5059e6a2fe97d1f2af0499c2c01d2732ba52d3d99ca5a2f8ba47ba +GCD = 2c87b8fa6c5008b7e149aa9edbfcb0865dc4613a + +A = bf96f79b3ff7ffd5b4b02ddf56cdd06d4feb2ba314796cd0ab4855eeb4cc2c6f65df8f0d054590 +B = -3b0cde994a55d36705fb4bb03fe07f8595610a603027854df78e7087124af820f61ad846cbb2840 +GCD = 3089792fa413eecf9209b7fa444b98438f1bd0f0 + +A = -1ada369eadb8c2e586e175de26042ad83a8f6d8e8f63e3d80b05f9ccb2b7b1d868e415c9e6674842 +B = -12bcc5a9bb5bad252b832ca1fdf4f23404b67df872412aea27dfb2bbd6ba568a6b2ecd560ec85049 +GCD = 77acdaa5c92f9f1bc3d29da07fd8f6657026cd99 + +A = -53aa92e0c3679565d691f13c8183b155422d13e255583836b6e1d0f04b79c4b168b25cfb19e77a37 +B = -5e6f97724e9a787d14772355af7f8e0a6fff3b83369ec8c244e3d350543262e7c554926c2bf962fd +GCD = 5c6be609709f5b8370d7fd3cf67a113cd4564915b + +A = a753912c8aae0d791e814ead46107c3141e4e35fe1292c8ccb0a5ddfe920e9e4a21f0e70f4b2bc72 +B = -7240241f78f45efc98c74523c53986c6da7229b423f24abfd3512f89f5dc58ad7a55c7ef38b917c +GCD = 1eca14bfc3e333ca231c3b7e491140d03ea14d012 + +A = 6cc04a74eed0c7765722e6ca29f8a0b2b2bc7d2e85ac3782a87c727dfabc02d575e640c087778b728 +B = -2cfea03bf556a932491a507f96aa914cbf61c179a2b3820a2a2e49d761c965c5bc815994d1697b610 +GCD = 3790682c4276ab8561bf2ce20fa7ee31aecaf8f38 + +A = -72253f3e1b362cd773ed9ca5e308a062acbf1357c920d6a1537a157d1b927aea5fc3c45b047350978 +B = 54ab091f9d0e5d493f0414f699bc7e203224cf9125fcc55a0483af606670e74349a402fd1fdf876a0 +GCD = 43e5171c76f68a8c133bd6b03917a5a67fd706538 + +A = 267c4aee22204ea4cd6feb4a539dd7db4e9ccfe5640aa8a016810b454a9ec3d1bf06c1a63bbeedfde0 +B = -2e08d4a67af7cf209baf33e06c04ddc2a33e27d9856f95ff92a3307ebd69949cb8ac6311b880cd78e0 +GCD = 894b2341dfffa75a6db26e7cf2a06387a22c400060 + +A = 79952c504e7fa3bd735273cad2c642e27fe06b94fddee39bfaed9d418e9f3574f3886fc825e829b23c +B = 13513535014a3fe8e9aff67fee1ad10f636029a0e861151c6b16b3b6dc6147a0ece6fa278299cf04d4c +GCD = 5fae988932ea9cef1b5e2036a686450258ab80dd34 + +A = -1e41753cd6bdeff8541745b6eed07556fb0850de680909bac89c3df987077512831c955ccc8bf4873a8 +B = -363575fb00b8d17f15ce4750333e2c43b357e21e9ba71f5a56c60f6081c0ecf6c2781e2d2e19ea6d720 +GCD = 23b9ec49be337e1b87122a8928bde60b88db8915d8 + +A = 1a0c150d7430a23cc835e3d01bc2e6fa5ea64286fb8f884ee7a950d0158ed4e900345e6fe5b27761374a +B = bf7c788ebeeff2ec198a1837537ea7ea34b3799da04cd2b37b638e0fc4bea92ac1753c25b9be166dbbe +GCD = 793f9064b11103ed1527c3f6bc48086c981a076dde + +A = -6580c63f218b672fe57595745c2ba477064d73be75d6c00278ba4931e6ecf5b127cc6735338080aa71c3 +B = 4b6f7ca1ca7190a3bf11f5ff3b27f926c82b229fb5940af33f92c0e46d8c5aa9e4741f82a86d4608a6bf +GCD = dd231785828eb794328e10606fb81e12647df8c621 + +A = -cc9da1be18fffe6c682c0c804740e73981c5010fbdbb01beab5ec2212136bd602c1f971196ea9883641f +B = c9b4e7c5f764913af6711e6639c72fbeb5444958bd44e7acd422a669e502db8387dbb10f906a3d92a488 +GCD = 12c6593a022fa6cfaeeb3132f985795fc7aec930ea7 + +A = 21fdcf5c6602f088e5cb695b6ab2a7ea8e97efb274c829a350aa993cc6e10332b5490350cc5b0713094da +B = 255349cf969e1e927599069d437efda8a3712b0f31fcd8ed15cf49271741f37751a647edc3dd63902dd82 +GCD = ba4e6766f6ed19f796dbf7015be73c868c869e9377e + +A = 5c7f3f847b12342b82b987d02804dc9799252893a009240d2e158a9bd2ae289b5dceea9ad19a35c40f580 +B = 11d701fc1407a7acbd5539771211933ce9e78db75dba455528ac5996ff7c7fad1251a9d7f75dae616fb680 +GCD = 6fac7e8051f84c3b5de922c50e33907e0dc66c1aa80 + +A = -6bba5cd79bb14c94184fcd351e25fc8feedb77a0bf5923b0ebf75988ad7f977353c1814f2f882ccbe250bc +B = 6e0eee1ec51deafa167cc7446d0cdf8675d903ab3fb0bf1bbbfff9422d69a82194ce353aa142d86d9e5f8f +GCD = e63779a558e7b41b157d3805c8b6088fcdc82eb3a9f + +A = -85f8209a86567a693dedd65c1ded8d5d94ae95336650f545589445062d68c210a235c382f508778bb82d12 +B = -4acfd476665bdfd71864857764b784fdfdce90b639a6e7823711a5ed41e06d09db5101d394ce0c549bb431 +GCD = 19dcc8d7005558e81c57499b933479d21c2ca6902b71 + +A = -2707873a7747ead5abcc6082118078fa544d500bc472c8a908a4e97f04264f937970820d3145bf1d19fda00 +B = -11c97886cfac841ff3b5a75bfcce84c04e076cbfaf7aba9b09d508905ccff5196da54459aaa686fd219d690 +GCD = 20d26819ec5a915caab7efc5bcfdf191f8bd2efc8550 + +A = 7054701496a1a89bdad2a8b956563285d400a22ead98bd91b6094146954da0b10ef144a5d85273b9a1b3738 +B = 1a997268c77427fa51abf229a02948819922c98ae2af2c7e809bc7194420229c372844195dc32cc0d62c0594 +GCD = d83cfe3fc146c35424163d8af62b1520400ab595d20c + +A = -2ac78840f309d76ad80db5be322b61a05860962180f29d9efeb18b5470f0d8842311773c8ef8462af2938b54 +B = 3c2e89dc73201d467f22eb5a927b1ec47d19c1f42c7d84a8650c8dab7f752f71a6953b9784297afba5fbe846 +GCD = da53c6858be7847f60fd8cdea3fba9568147f73c31fa + +A = 75203de87af36826d6f8d721ab8f130b01785628659423de381b3d38b44157e316c0fc762631970cbab8249a +B = -d136743cc99f5a63dcb4a1378b95aebb6db2355062c00a7c6125112a2b5bb37b030acf2890dba1094ccdb7ce +GCD = 11a447c9bba42dbb352ae60e7aef11bfe7ccfca4e170a + +A = -da62eb5663c46a81e290ab358e1625846ab4919a4a5dbaea1a5758fe929a21eca5db6f400e496a1d3a8068ae +B = -25ef945b2823e5e653d0026e84c098abf56cc254749b461e50a98b0ef04af41ca1de0ade55d98c34a06c6301e +GCD = d08cb1b353bc3d41ece972a634c6a0f6256b1fc091732 + +A = -11ea55d281fbc84982279b0e83eca8a1d843cb8eecfa994b5a4bb0628c4b07f2856e0a55ca85e3b8f5763dcaee +B = -17d851f04af3405d40be76c6edd205c72472d24bf4b64614148a64b499289831a1c688b04c3b89fc879cc47918 +GCD = 1dc89dc7ce1b2587d4b3723019d4dea3b28c39233f68786 + +A = -1f9098186e2ac730dacbe0ae273ff5d2e84b1a6937a7865c9edaaba36ed44363fb1e5c6db70bd7167cea004848 +B = 32cc1dd56bbeb6e985fc3f62f4e422fdc6a339154284d546206093d4d8f0ac747966a6173b6e2d98259966edc2 +GCD = cff905834a31af69a90b2bdbfce3c0f5bd2ea2006e33e + +A = -539fc42ef8067519bf74f91215812cd3682e895feffe8e97f014cf8e649999c03f59d3818b887bcd95c558a228 +B = 4bcdaca533de4848ae48e17d75c862a71860ed167cbb7aa5f5e319771cb98a1700f22d03c28e7f5b497513dfc8 +GCD = 107915cdc26bb1457a8b65a4c5ef68b1d99d74689ec198 + +A = 345238bf3bb2eadbe74f169a17c7bff63a098bd21e85d51c88a164741eabc6331edc1cd16cdeffe52feafe7bf7e +B = -26942c82611e486a842366e54f6c32827592fe833dd859c837e6bb27516e960e1be23d6a8539d7e1d7013d0a6c4 +GCD = 205d424e49857c462b875071eae87a65c99f1d37cf9982 + +A = -c9e3ddd95cc1e289d7863a179b44a6f372fc0fd317dc9764c42eaba3290f31430550a984cc3a139236254db3f2c +B = -1aed15c9166cc96d8d2c9f2a0c2067d8c4743154a5bb78442ae8336efd5d96e041ad0d0be45d1238738920c300e8 +GCD = 6be5ae23ef79ec1dcf03948f09f8a775039367584bf35c + +A = 145def3ae36900db349ffdde9e636f50f59754da5107dd8bf6abd002c885ccbdd727c64a280bff0f0ec3ce60c81 +B = 5026b9a0c78bfacb35f0ef7a2cf815e920ee74ed08a7d1e13b33ac18b789c319c22c3dd7ac3f229fe3a7ab2d56e9 +GCD = f29c53708d66a5be6fb6f64913e2b651b6d3b3492acd0f + +A = -16d38f6d87084a3947af97cf4191143fff27c27c03087660106a3a9812b7a0b24a589fbd894a23c5b4c55e6af741c +B = 129a5a1815ccce0a9e2464f9252a58152d6aa82920f9bddc4bcb8becf588e6feed67a04f025b7b2395e0812408c18 +GCD = 1c4b69c3607775a7497f928e3b1dbfb1b0b57be1609054c + +A = 40770565b641268e97fef5cfe1e91c21c25c80cac020c9d23cc7d1d508c0126bd5eec638b34da5c8b9fd12fb05b10 +B = 443966c18fc15502b80bf86e85638b203244077ee13e70993c16d6e98ace1e50548543b736bd776c14b8618ad5a91 +GCD = 2a0e7ceca9b0bbc68cd38628b50faac8a891d0aaa801235 + +A = 753b2c3ab29e927f2771e34da31e5db3775d0f65a9f2696f4802782ebeb326d9c5b17030cf960df1791e2468b8b6 +B = -67a434ff28697a4e660290757602b27a4d2b3b4015b8df5e272864c6388bcc34ef54178dbfb3d430e720f8e466d1b +GCD = 78f2a1e5760a41cf422ab7218b801a23413698f8b5b0397 + +A = -286b0890de2ae79845db79368b2f5b074d9083b2dfc9ac123d22e63a24dab9ad6690f4bf2e26cb188bda8e5f4a23de +B = 6d53b6b7cdddf234b0dd117c9c1f9bfd673bb1cda7931d359f8ce1e95600898438f5bd85441839787a5cb907dd5832 +GCD = 1f8c81a01f2316dc1ea1164df161b3b8f712eb7a23ce822a + +A = 1a763357284ceb368fe9a8e56087b3fd1c2356508e7cbc061c8885e7a5045610cde0c8b5fdde3d6bb8f4f471a3655c +B = -198498012c7cbe6ad15acb6d5d8550a266a9a5f1af731af23d0b1387a96c23ba032e47e463224fc7006320c1b5b130e +GCD = 213247acd8b9f495b766695517558e78a572601bbae637e8a + +A = -151c47f5c8c79774eb97af0dfdf9ed318fdb9b4f54d79296594f9ed156d2f581fd658bd2701e79a4052bc4f19355cc6 +B = 499661fdd595dbc4cba807601ec18b2b2d872233813d832c4d400436efce01d26969983f8a0cd7429874a7191678246 +GCD = 2533450171229c32872dc8ee91419b870340acf177f14242 + +A = -6d343221fa5bf1388c517f7bae0b265bc291b9df8495b186e78e87e6403dadc114202b745cf6864a4a5bf4f5e8377eb +B = 5384f5bbea4325890b2b01ec2b7efd18b50e46335d73cffb2b68a3d89521013073d5518b5843b3c0e0cf72297466614 +GCD = 4000a2508db78b08c335d937598a3a5f3007bd84e07b0ff7 + +A = -19d805952563485e813690d907d9fcd9982b41d72a5a8c6655a41fa48d1dd87d7600e75e581d52460b509a461ec7c154 +B = 4b7c0bdafcf3198e86b869b06e94144de2a1b70d4e04f1556061c1c8d481b96e36d42cdbcc2fbec87242e71a464fe9c9 +GCD = e14b04c72b12cd34361585c3c0e9bcaaee5614a87b8bb7ff + +A = e8018581f5556724c2d85d5749059e8927adb87d9f791cc218b51b547a9aa9c84c5b1e4f59ff70bac41e0bf7f42eba3e +B = -171dc792518a7cf6dccb26e119108fbb9f0919d563c4c33d78c8ab0b4ce9b1052e48cdb008b96d7348c551c8592ae8cf4 +GCD = 3bdb23ceae81fb76d167450cd9865448507b0ae053e554d3e + +A = 3f4e204f801cdaffb8a609e5cbcfff78c717941071a8e03acbc27b45e9d4aeb5fef050896c85588ec1c8a16f928f479c2 +B = 27c6d008f2c65359b1dc1a4b034ffa4b6913da1385bd50720c2844949c70af6e379f8fbd8d7b1abc0d3b273e7a6cb35dc +GCD = 831a3c10761e9a5b13e9d2eb93787e3c70e805358bfb28326 + +A = 1558dd8e52b4a450d135fa59167d6157803cd4da1bd276fb9c8f02c4a95692856ed7f0f61f977764359a0bd31d5bf13f3c +B = -ac9e54f36ed98bf1197b7de094c22ab01f3d692d0637800cb6524adc8ba0ec7f8f2518349f887653c719a274e10c1b966 +GCD = f62d2cdd7599bd724f005c6bced3a26e95cf9f989e8b1d20a + +A = -479eb40ee5130182b94bc01ab422bfcc872db6c900a226f350718586de9f7725f35817454cf25720cfeb4e6abd82788f9a +B = -5508d4d4434cebd8f52319fe9af311cafe1e8b1ca6ee4ebd33b36803d4da56a30de39633c3fa16341f89d92349e8fbb958 +GCD = 15efd7670626a771144651530f20b87a9d81198920ded46a96 + +A = 88d0048b5022fb3e0b20b658b748f930c6aa74b8ec07a79730edb69af5625787017f58b6fd671f5644047e4f9c474b00dd +B = -113a3126fcd16ab8962f30daee939442fbbc0b1d8b36a8b6d4aaf40d08c2fca0e40ec3242d632b756a64defa8df81f20641 +GCD = 54a3d46f93fbc776076987d9bfea8186d1d29589a60c36e9a7 + +A = -1bdc5b8a3404c09a8bc4a2706acd9e4b6f703931a91d099915c522953b6512409e472852c098f21ffa46ec06072137abb8c +B = -19cdfd062e60822f25372dfd9f0fe3a8e70900ed1efe2a9ebd2c7e4a3f9a8f73b5ae6a3ddd1a616022ce2c66836fd5d63a4 +GCD = cba2aa900ce0b370807872cef627cb6f3636b5503646162c44 + +A = 14c8c9e610760694c5c67959786c50241a8f123554d614ef07698e686f84f04349f4244866598c39ffe0b297e4840f0aef4e +B = 7de0d0971de3c2fefb1b1c5f843353deb1d7ab787cab71ec163422da96922c38c00311e89d59b191a3c009badce1424b7f8 +GCD = dabc3eedf6652d65f442dae1df972eac04b623a60ad52fcf8e + +A = 3cd7a3b0de35b8912302d76873868b5e55adc0ed48e18c16adacb9cf32e3abb8473e130f32cf08117a741321aba3c8e209ad +B = 250923c0ae66e1d3119db8a26fea6bff24fa1da2f8fced77ef215ba118df16407515165c6f4957ae7f37942ae4f05d6af123 +GCD = 92b68549280689712ddf5911a87113a38da98181d025b9d8f5 + +A = 3db7f3753e722cde98f0f816d7f486fc22a5f438746bfbdfd6281ab58568238555ebc2381a296af11ac9b58b98d6852b365a +B = -d1e854ab08bc351e69add4668fb373c452aaad30887b70f14ac7c7c159de296b7ecf2faa58a150a220b895b2380ee0936f6c +GCD = 1d00ead564d6fc8d0fb2ef4a025dfda5bd278487c9cb1a6ae7e + +A = -4543d77a51431895adeff40dec120080bd8fa697801b73c5e1034d1310813c16b739cdb51ce6585bafed527d074d58e0a0fbb +B = -1e48df0e1d9432d3c04c6210dfe3d8d2b9e487023d7bb756dbf1cd097c48c04814bfa247fdbc6466a6ee003a144da56afdfe5 +GCD = 2a931574a93c8cee4695a09cb2f28b99111afbc3bea74c4d135 + +A = 8dfa4e53421c11daf4ad243529cedeb2c8b4e0ab68f19adc259476760e1c5e4e8a0821e4b52911438c531d12c57bfd636d940 +B = 1f2658c0a8692ab10cf012b8ce9a3ffc251b37aa6587ae3ef747f8d4cc9c04e5eb899b83deb3ceb93c3385572c0aa3d877f780 +GCD = 7ecab00f8151a74d219b067ede81719c25a0c265c31a7137740 + +A = 3d3767ab5f736946bc457b408c2546deba1657da36a9adcfbaef6fd8caea8f0ebfa7c2f6c5628a453bedbff5abf88a4aa1b6c0 +B = 219b090924b36fa57e2127a3a47563bbb9231c296abc2d5521ff1227fb0ca771e7c053b5e9f571060ca1459affed8951cde14a +GCD = 8fc8bad098e4118abf8709040cd4d5165e683829e7072da5dde + +A = -bf4a5a19a95159d4a8862d1ae61893c714e42632e2f33788000922b4c5d91829f57d08e620b068f19f9b7c315a41be52eccf62 +B = 73e318c13b8803640b258df2cf53f54f0ab0abebe99c5d593c103ab9c0e1e611fe58dc9d8e0496463f4f6e7e3df214aef86d98 +GCD = 18fbb584a28e138a7e129bc954bff84b588044c2842420a50e76 + +A = 4e34092382eb35e7d263b745069008fd18c446327ad915833179008abb4bd3852d71bb648abde0147c2c2f73c3b1b88e03239e +B = -65daaf978c59591cb6a53e938d4116850ba8579cc74bba340511ef8713119e939df7e1ebf34d2f0e443e4d5c0e1ebc94c098e13 +GCD = 37ccb42cb4eae376fcdcf4b453550b21a4e4cf4d6dabfc38c0bd + +A = -b9011701d0c08322f97a831f57f754247a81d4bcb492baf116fdf418d1ab5ec54c15d962053127d7299c8c52d07a3481e30b301 +B = -8a1863ca08e6a2d9d36247047b26201294c36f8d654124603d1cf294fabae963e032aa10534cda7eac6f3c6b3b62dbec7868791 +GCD = 676bca69959743317359428589273f18287d327f338cbeb32547 + +A = 16cc4d9182c42a6b6c839cd2ba010454d3c672b3bbdc3b54e0a9fc793d81dc3e87a3eecab5b1703aee5c62c1c2ff6d45c76917de +B = 5022a9079d66e93e0f6b95dd56ae565f434be101a73de4c55ff2ce11c9449950cee02bf9802170ab582721cb5a9085001f09e322 +GCD = c0c6d7316012448f8a36a5f3d177c832b740ec16d350a8b17796 + +A = -cfb29432f7b6e8ca57bfa645629187784344a45c0b6ab7ff0ab3a33c7d858986587e89a5f2f6e0cdc640c1892309d0e9cd363fa8 +B = 10a03502dcf683ea8edcfb995087c324834796bf6d8652f23e6f672ee0930bb565c7a8860b78e177264b535782b22653a5f2c5e23 +GCD = 133ca4e1201fa1e489ea670c0d538bb399d14370ce00a5f7d7361 + +A = -3273fe450c5a4d13a662665e2b65c7bd6b84be94ca194628817cbcb7a320330fa929d31c0fffdc2f4d1cbf851265591ad6d60abf8 +B = -1abe1b39a3833d4ef3b29c7479b11d503550fa450f4a01502e824338ff496160680b73df032d8b203d58469bbc8cf8ba7aebada62 +GCD = 76e87645b6fd46b767711cc9db0792fbf747ff09753bee7b018bace + +A = cce4ce303bb56f35b0a4a0b1627ab555e0ad5ab8216df6474edfc53a6528126514ced5a620c3f38b0f4801bae834079235cd4dd50 +B = -119a0798fffee9cc2238563e22f18a7a9f504606e7bd8445fed7ffe5aed3ec0bfe1922ececc7a49da978568f78e555bb5672c2c00e +GCD = 554f895adc399ccd3d4eff3c92af8c5eebc7d928eaa653262f8a6 + +A = -f542da8fc3fca1970bd95a0bdfc055a3e4dcf4210c0cb1e924beb544260c5977a209600ec901dfae031442f9a099806a900d3c30 +B = 15f656529a87dc4e8f328c7b9d9cb6a50bafe670d85bf37b69ca5bffb62c4b725d7723af0308959e387c5e3f9047501ec17c2c97ec +GCD = 159f00110db650fa7022913c4be9be5f8db038d21457df67292cfc + +A = -3b914518f964cbc1a2179a9089e822ca5a5a79fda2545adc867674abbd3ed3281ea29c1d235b45123e20aae5b9383d2673f19fc0ba +B = -12b0fc49faa313c83002782c01179de99b1412b57b8a05b9b9bbe38980945c063e533bea34f7ed0d30a1bf7d857f41e9116f0f84880 +GCD = 928695828532755b9fbc6af84f4a9ff75f8ba08b738be1138c7ad6 + +A = -d75c84375ca7d27e9d2b01257603c7c87d35a51174143b3b53668fabd0294d645ba637a04f31ad24a5b19152a6785fa6d1e4e11738 +B = -15ced90b5e836536c57add07d7cfa1b09a1969493ea064b0ddeab1a4fcceb3653bd98aeecbcd56cb72661f5147fd311aacb282d120c +GCD = 61a8fa789fd156be601a41782066210b0cec24dd29691a0a83bed4 + +A = -159b9cc0a3863dfac0ccaa1cc7903a71976b9a29db39e3449f4a17adff7ed1fb44495f64eecfdc40f6c094acd74962e2add4943fc7e0 +B = 10c855361a721dd9732215c66ca8295cbe1b311807c3501dc7cedebd5159665900accf405403c11f3b76f563e9f00b0285a315f44640 +GCD = 635bb3166f93745eae06a1f0b4837afed6156dc9a03f52f79e4260 + +A = 1235a6ee13f28e3fc211e06cde2a30e07024af731c59a29cc1366bd5ccdc1419914508097193fe551a1cdacb94cb48f875f685609a30 +B = 4062e13e531b0f0ab84829f6e292105bf786328dffc60e71533f28390b339af23b0c57f3b09cda3074efd9267b242d7e8b20a6ab3880 +GCD = ab35c7749c37afd1bd42ff0ecf0530e6a5b3bcffc17e07d5b9ceb0 + +A = fbf7dc8e478080932a0a141b2a36ef37f015f5d78ecc0b3f5aba836c8f6f433b092e391fefed68fdbf095808728aa233bd336814ce28 +B = -b329794340178361748277a6cd1138191e5df3ac4e10b1f61faa21574f72db767c3addae3c8b3b36f9e86918e6dba15a308349ff800d +GCD = 15b7aba51d043e81d4833d00ba7d252866edcd7b9d9574c3113eb95 + +A = 22443fd9b5638191f9d51e16f0ce72ded78a31c8caf4791fed8847070afeda7bc212d713a794aa6fbb6488bdc7ba2f3e0858faff2ce5e +B = 5990760a8d54ba970d310d97e21d6b90588741d273010a4b81bcaa463bbc874d4e926768808703735294e8efe4d316abec856db0b0bb4 +GCD = 3a49cd38d520446ee1ea5093efcfb51eabc18eb7aa1ca2a5abc3ca6 + +A = -3364e480f552b00f701193de1dd82e94a997e1401d22a9bade30e9843997495f9b265d33a305634230220af7c1c35ad3e0bebb6ff3569 +B = 131a85a51e1b41f28aa94fab4b35f1349769b61db239aebca57c9d11246fa1263dc4187406aa23ec9da70316b405d1d6d969ec6f90b630 +GCD = 4ea0e98af23428817648851780f0aa6c607bf473cf9573234ac0d3d + +A = 649aa1f5552567c880f06bcb7c794cf3a7b0c625e25be7d7512bc8584efd003e95135086856d57f73a2860687440b6de1acd0c034bcdf6 +B = -19b85bfb1afb006875c1a730fd8df9f51e8bc596aff14b054421f2ff3a7f0aa0efa94961339cf0a4e89890653206058a1a712dd6591faa +GCD = f01f1de7068e1231f256057dd0c109d8f83ea8731195c1f3087b36a + +A = 4019768c40712020adad69bd1b8a4883c500e738175b3a2aa9a47029097cb4bd09b0c0898eb7dc1cc3654e6cb8290deec183044032face +B = 18555037a6818ff4f4f71994e13eae64df48e3ef8291a3e64490e0a628dbe89ac188307c4c4cd781d08b3bf0600bff6641396a129c0d4c +GCD = 3215d8c73b8cab3280e2ca0064820689c076e2811c3f3361074076a2 + +A = 3373f2c105a5eba6339a3b0e3c1eeb6372cb6b1e90fed0b78f9aba3c16cf32134810321697cb5d58ed59251ae813b03a547d42d1fd1158c +B = -300ffe8f4e814569227ee23ade7fab29db2840920bd9cffafabc818eeda9deab45b0adfd3020f4a93a8ab273a6ff0411943086bd2509926 +GCD = 2ff65fb933e30c2a25997c291004dca0c48df55cdca6f32c2d689f2a + +A = -9bc948668558e518d69653e034e5c4c6feb9a16acc99f3332a791faa48c4ca8f39cbbbee34f6320760699bd33554c97c1103bffa752e231 +B = -13745de6c2c9fa492252beb8c83d1969ee623fba21b3d7e3474a2186e30a4f28f5f7075052d8f19694d762c4ff49cb40e6048a2f6b5bf2a9 +GCD = 17552b9afd63a0a99f1a94df9555b6e22e0f96765b97cfe6312aa0f2b + +A = 22b99eb84f08f637b84f80f0ff8c937448cfa9b792820beaa5e283a42545590ba8bcf844bbb0279eb4825147bc5166524d259ab642175680 +B = -22f9f0b193d5595765a4b3710beba70589a24a3f56770274b349472a05a48ba02c0adf06ed4b8650c407ca9cb45775cc183448be4539bb00 +GCD = a13927cc5c5450d6aee173ad5032f488af2a3ea22794ea42e6aa4880 + +A = -10e836ea0c86027feada0d19c73908bd09655285f0a2afe4c6a281f1344ebed130f2a98081e2acd3c5c0e5e6fcc729a52f7c652a5991a00b6 +B = -15d547eb5f30213c6c9ece29048e91e57e4efac3075d474157909ffa1788e427aef39d5e39952fd4ca661605834d0e5d5ab87f2e31931ed46 +GCD = 35fc32ce12e5267a0e367b3395977b1bbb718e9754cd7a9cfa1f496d6 + +A = -660d3e1e6c4786e81c7bfe2e14672244cc915a949a74e5fd81e836d0b5e761edd88448f410daac75e988951ecc3548e0b9973cff77fffa906 +B = e64fb42cf6be4f3254b6d52cd8fdd9618b75f2c2192c8158698209436de33bb5ea391b6d659a0728b54b06fb3b65bc95d99ea9a1b0f0efe7 +GCD = 3bbc4dc6f3cb8078f97c88418af7954de1e4a30ce1303b70d1c32ee87 + +A = -3770dbf23da5fabb8a67bbac768ca53bb0b4f9c6567692467c8c52b89f56178d1c5cc25bcb0ec8167cee916ad8e3b890cf1d63650a85044ad +B = -db61f1213c642a989f83c898e3e4d84ce34fa63ef96f8e719b62772cb8e80fdba8243e9dee3f16e2e7694131e8c25c5419265eea60422e973 +GCD = 6ba743f69174958a228e5260c971854a4a52fc14f83c304c6fbeb789b + +A = -2a65659b013d56e26355f01e62201dd90eb55466c03bf96eeec6cfb963982f0cbcb7c3ec9b451af8e297a30b217664d150ce38255bd4ffb277 +B = -2083732e388f22e6a9f605d182d3929718fbe06f754c39d40be378c8d5cd5a1db05524fc31942fbe4bf2fe39d94d81a0174a1eaed220bd5873 +GCD = a9afbd0e33ff2e7b98cf5f05331909f7b718b36f9a4bf31ae59147157 + +A = 19c2d5d67ea12f2b7f7685463f73c5e62defb7b27aeee0bd02462695e2b408ac624adf5ce716119bc3a0e3e3a8f6ca115bf176f131df3c8b1e6 +B = -5e8713b5f2d2b01bfc102d0e0c25f88236f451961b79fed40d0667fb71f207ff95a3b75044d18f02a93639bafc72358448d46846b879b1c8fa +GCD = 1a8447fd535c9645aad89ac2b790c0d4231bbeb1641273af9994ddfaa2 + +A = -2d1da410c37d40aafcf457ab53629f15e8e24aada4a2d78633949286458df5491667fd59427c0d292ed9704fb10efbe5444f178e657a3fea228 +B = -4570f051785a46938b9db3f0f75858fd81c5edab48a7298e9537847314ca56feea13dcac9b71a5a567f9be748c9403b752f6b4cfbe03f56037c +GCD = 16e6ee8fdf7aa7966069b898fa3a5b8bb9e494a89200a27eb841be4b184 + +A = f80bf37dd6f5c8941d9c269fe80ff8731ae1fb99f45f4240f868d43c24dc8995f0970847a759906b7906fd176a194cf4d1c2d72288718b489bd +B = 105a371338d22b530b68c058b9f30e641ff5cf7663fb28a1ddc5e4e7a6a93f092eea8145a7c9a56d5669a3f42265b1c599ab54590ba1da789e37 +GCD = 2bb36aa6242fae1c6d99f9b32d36f723b1fa8a0f8b1c64cc7f77d404a17 + +A = -544514f654fd9f60dbfe770092045a201aa318647463520f70c9b999dcb719b8bab9282c83bfd4fa9833f3f6ca1a06fbd8436d76c23c3c48f602 +B = 1eb1adc9b8386d872192031ed92a02dacb6c36a1ad965965567eb2fd16917793e1d3d637163cf920fbfba75121920f8d7511de622a0e5e39d84c +GCD = 16531bf534ce1bf9b23463e225fdb3f28f6bc55d1cb6fe9af4e2e26ea62 + +A = 8e2fbcd406c57293d51cddbe10fa33a2d2b21edf9bd0434a9bdcc02c6df1e56284d56924d030b8830450d560223dbde9fb7ef98f603588be81e0 +B = da7d00c8504366804185bc00851a5782e0d99aa1a6b9bf104a1b9d4a8386feabc57469f0e4f95d981dc0183adf9db6c7eea339ddab00664df8c8 +GCD = 29ddde28ae7ec95a9b3e07407fdcb0ec597ab03bed65b2784ec3f597dc8 + +A = 7832045bdeba8a0934ca9f4477b67432f54be4a99227d9d8b41671c228e20369f5851a61bdebc88d8153abb0cee83effcf886eab9e573956e4e16 +B = -214dbfa10b4573d7423f635ec00c68ff20e9f68517aeedee4aa9b57f58499ae55657b0459f3215a070932294faec5d4aa3a0e7d3233ac3df1d8fc +GCD = 44f7f79135a865fee8d94c540740e886ae6965af8a60ba7f558363cdc4f2 + +A = 187b92238dfc9c1179fc485e6dd5ea9b3b8154123fb89fd41996e7ae59cfbe36882661438aca8a0d23c20876c231679060ce87e76481ae9c3dfb88 +B = febbccbb01af358555e22b3e4d02d8512763b853a2f15558199a46b450e4943c79c9e3683e2b7e093e7e72b66fdca956c7ab099ad33d82bda788 +GCD = e8844f9edfef1fc4b0a8f9e18e47a520186378fae7a1ba3c25fcfcd52f8 + +A = -5615c997de67d9b0d8596296ddb43b07af45246b4ce44a346415302faefe7ec5635ba23bb456814f74667f7de106f85b94423519332ca1d43e5971 +B = -45ec83798afa6c1080bb3549e9f867f29dece4ebb09edfc8e2019076c2af4c4657124070c73b51e7df41aada76a06097e19e9a20f5fc6a73bee7d4 +GCD = 7c563eee6cc5a6b259e11206e8df35fb259f280a2de68a594d93660689bb + +A = 11efeb97d25f7fab38d0e36b9c2c25a70f48b357bf4710cfa3eccfa7d9324cde6f86f3bdc508cc23b3f8871c32f0b5221af44faf4bd411ab6475fd1 +B = 175161b7c93a71b2844ff34d2b2b3aacdda47a76896c7c132078efb80983f9a12cd08bc98d71e2cba6c6cf06a84908068fa9ac385cf163f3c0679fc +GCD = 1f91daca6d11233a7361255ee1f84dd89ebb94287a0de01cef08b3ccd4c1 + +A = 3f6c63a6240c783fdd6f86a0631c4128d49665c25fa03b00c137358e34f0f499db355d1b48422412b40dbdf24a7788d15b1878171fb21e1af58078 +B = e82b3f2ef1b02cc840543e67cc4cc7351c4ca1bbaa933b67d7dbdec924f815b6d73f21906f8e7b05b2614e98105d5c4329fe48a5484a368ada155c +GCD = 56a85156dc1a49fc180f75f9fb389616be527a590718d3564a188ac7169c + +A = -b28676e1888399b7225faab2d0592bf24435dbd794bf82cc182eeec5fd6ee01b83efe0ed379847fc452ba2a9264f0ecaa4ec15e35a6fa6dfd51237c +B = 58d52aeee3cd6341d247c92d26360b2147eb5bdafb63a757fdc3c03f5de308cb0d9fb35698e8be4ce919ba5107c5dac6b801ec0397e9a26d941a590 +GCD = ea955035fd3fd8c827095523ce66903b3e181eea3a6a6b3ad023e26e776c + +A = 4b59bf66db0d8e183e53690097de17b048cefa6f956c9d5abb2b9deff2019375336a618a2bef46e0f5538917de46625b44b209e9471f6efb775340da +B = -2e1fc6caad945ab20340ab7bd17b26e214bcb852c995c8a01235adc8ded2dddba5cae806b2b2b2a6778d91b68e26629f18ab85fb017f0c6126198612 +GCD = ebd2978a2d5667594854425d50885fa298a37eb75cf59f24ffd88876e0f2 + +A = 1452cdf9df4cf479480cb771f247a14808685183ac297d87989a4afbeecec255d34b4fdfac188e3a4b3797919f67ee029025902585ea223957220109a +B = 27f16868b878666e9a154964120f3aa91b70164f2f29c1d21ebcfb0fe15839f940d09d7ab3818505a2149753770b211c22af03dfcdac03e357e4dcc0 +GCD = 325dc596026e347ad85b9d829db3ff3d1646256f20c40301c29632ce9c63e + +A = -39379342dc473bc2253a217e53c19a3cc20760c592a1f5a17d8bfb07f043d5c5dd0e6de758cbe2e46cea56ea003ba810d4727f74be628cb4dc9e62f07 +B = -1f8ee483bf73f5ed9d92f35ab4db6af78b12eff98f791e14e6953e3bf60305c6784ea85ae5e6488136060914821a2430520672bfffb1656277ecc4839 +GCD = 6aa576478dd4b6de1396d6d98671416dc691e014eb9c4ea3b82f8156d62ed + +A = ce4b367a98405ffdaea338cf4dee7a788ba1e9a4dcd5a7c995b22d13e10122df5c2f2ee898d3071236805458776dd471bf6934cba95abc513e3e0ea16 +B = -7f47799ad47d1b75bb48b27cd1ed09306cbd4f6ec5c7eb8b47efe3437bbb7b37ab39647d4b6d845dd34742bd670298f0d8806351fee2aa5d0f3a5348a +GCD = 55839b6e1fa2e5d1822c2c6abea819796114c49a8e92afadedff98a40d872 + +A = -59fb45ebd96d6d0bca0c4f0210e610da3caba27549ed5c50645581ceccf4f90a1434f0fcfaf6b400ae4845a308a5e4fb96e5ebc6edb3f62028753bcc02 +B = -51c1740fc914d2d7d96f0c55c1ee0e7e38da7278192d881a2f90d195de6bdad5e0eeae228b5d9c42258578056d60f23b3e8e7990f2b1a5274f6b82c738 +GCD = c102712779abe5875d87989c42227eaa40ce3a655d2e1b74a861e386ea222 + +A = -fd07da97787af8e0bd5357b8c1bc9b6500938676dc042c17e49ba6bcb9817adf585d0c27c63258445570a27bbba502159aa1f6d4426eca19437b6c9690 +B = 917e769f5623cf324ad65cb8a485ce6cdd0ecc20c34a648c5ece0e29d2e5bbebbf68eee9c296bf0db0c18fc355492444ff191d67e1a84d4b5011e856b8 +GCD = 16551e44fd07889edd641acaf2f58e41b986294b824c4da081bcf023374368 + +A = -33230047b31359f319996c2f965e7da69781165ee2e40f7979638667d7e14300bf99587be531dd179f64fae8ad6236ac092ab3fe107333123d192c74ce0 +B = -39d8abd8a8c91ccae3a14f72c8ae7ceb3bb0da758c91218591355ed43ec705396c061313835d894835cde56ff585640abc3679ea7c48a30e5b8c9423dc0 +GCD = 319366f35ea031f160d10e41703842d4b1b2f30f77d7547309776514ba7420 + +A = 6dd03d375ba683681a68c25983ced10c67f8733776d1673f0bb5c0714e08d73d7f21a43e132c78645635d9460cf7a499638f7c9278a6735578ff6c88aac +B = -c102fc49e3fb9a65465d1fae91a65a229d69ebc93a0ca55b49fff91479c26dc39fe50fb1ea8796ee96168e480e12436b274141dfdff2a63356a0cead8b4 +GCD = 1992c8faa77e11bc09a5493918409c76be82e2a3996df8e5251aeed41b59284 + +A = 3d6e324e5b758c2424aa866f50271e36804639a1a884e5c14dd173004c38645f0a1be7913ba7ee169ec2bfe72754e2117322c48f1099f4e24bb5cb85d9d5 +B = -1a705c545c832b21cea0127c7fcd785249198a2cb669a9e468b8b5ff0b377dcdfb79893c15aad2242ceb4e5fed856841a83a6560ea9d538b0734ee6180bf +GCD = 3e905cae3294496daf38abef3b923bc6f30bd1b82ab8d297e20f15534658183 + +A = -3e38036911fd781f5a293eedd1514a04b8fe0a6ea813b985e1f6cb9f67219ce4a3cbff8e2bdb1f935df6056ea96c33df84c5778d64854a0213873b7cff3 +B = 89b72141c05df7424e513e91d93b539cee0eff67bf0c05b3a6b54371da0d567dc2393188a9b8e8776626742dcf44a73417a3efb017b2227316a156040c2c +GCD = 119694be1b1ed11e745519ad3eb9a31e8e43cbe3993694bf3484cd5bb6b5753 + +A = 25a485b78c4e6e1d32a659bfc1bda781bedd0ea14d4d6eb07209d607fd201a3e4c4c25b7c51c952a7388d9970505d88af57f928bed5514558df57ac1beb98 +B = 4eaf58609eead03954b323a16475992264f38554c53732955cc90ff309ff12457734d27286860baa6db8f46655ee4f74fef2a165c2172cc8af4d9a36ad9bc +GCD = 3dc164a3226224f1054be7b340dc0ab766f4ffe0599dc3ecd2d166fcc5998a4 + +A = 1234ee006305884dc928662380b96d0c5160fe382fa352690e2abb7a08e37f3266f798c87e5d9aa8def77455a94eef3eb2782fbb5d0d1fe0d98025905ef18c +B = -cbafe80eaa3830747013758d2eadef1fffdaa6844bd0e66cc979d9d8f3f1777f3faca83b65dc7d5c8ca6e055272aedf5e13fc9b8d6fa16212daa8d98cbcb4 +GCD = 7eb693c6019e37c403e4d9fe55f9c7ae5cb86bb5b4673d77de737c80a54c7bc + +A = -233de6f43625060b93a2d48feb30a546eb14ea5ce90154263d6639f89581a168e73917a82599b9aee74d58fc39ae0c282da264d0c6b57cd7b3d93488cc87c +B = 16bb621a85eae0d1b0ef408ed92a5bafcc95a2ea7630f6084966fe5ab984db5b1183e5927cb29b23ecab67f6acdd5c66ad2527edbcf24ee533730ec4116bf7 +GCD = 26d23ea1d413dadc4423a65d9ebcb207693b94df7b5b758c24cd96c204549deb + +A = 128566a053ab6a683cf3bc0fcd20f44385371b0a2591ae058c8dad8192e75f688416e0b4620bf71ef9c6a43f5b0aa89f6d3b37a9a181a28281e2b07c4ea51b8 +B = bad8822127a17348713c442dc568cc85c1431ed23c49bca02f98c312c77d3a998d2cf45a0b30ccc8b17142af5ad31760ae42a3c059e1a76344da48b4ade410 +GCD = 46a3a91ebec75f0a3970ff30aa247dd643b62914ce4e525d5ca6258edace262a8 + +A = -25d318f5848f8198babaa2fe7fca0888ba3f936ed2f97075788fce7e154009f97d0a4ea8ea91732d91689135d1b9fa83ed0e57ce2cc123d42d099ecf35e6b +B = -41f01924b0f94baf431713ca686ea57580f8932dc6081fd8323b5bab63463e4b94f073fc6f6a6f6d41577fa051fb9f5ef77b4be4d4ee1570a1905f5cad8faf6 +GCD = 318895c677212a08ca1ac28d1c9f22cd29e9ba7e4340eefe75aac405fd55e96b + +A = cf9432ed1d56c3346452d47cbb36895ec7f98e132273efde7d8ec77b9ae65e912aba83c5b70af267802f2a23892515f2d0cebe11a917f712360c80f5aa7660 +B = -13b4dfc2d72e3421f78dc15ddf1ccc1533709122835c2b7cc8b964c168994479c05b9edf1b16e7fd618fbb18fd29c839da73d38063425085d1fdad07c8a66fc0 +GCD = 61b109e7eda91d2c9918c44af0f8d4e54710380d616c74962833ea2eb03707e0 + +A = -342f13177b19497d300f7898e5f948dff17909738b3ef859019927fea1beeacb02659dca2c56a1a84d7da6e06b8f42cf02fd7e4d171024ef645a9e149d19ab98 +B = 3a5fece79f3b089d22b3274b334aa1b4eefa4d60c99cd318d0195edcf70b1ee35bb81780fc1f14fb14c5b1a7194fc59aa2573e6f43ab70af616e53e7bd9e5288 +GCD = 19ebc98e11cd27a6d0888f18db92f14d03046879152c8576db9190c0ac424fe48 + +A = -ed0a6f4ef2b90ab306d67eea63c37df4136578e1df0b585fcbba0f2bf0b7229c7ac0d4fec4dc1ba1c57ef531a3d6aefebf56f2f610517e1bbd09088742af2e36 +B = f637bc9f8830331f6b1035c31f826f39e225931d8d19ae9838ac43223cc82d28e28a21c1d4e75a0c2648ffaf907d3a861af6f74d023ef0b11c6d843caed13d2 +GCD = 1d90604c1d3c66c15ddf83175c87117f94b89c4b96ad06c41baa3600f216914de + +A = -55433233cd172f9543d392f6084a5617f1e6498b27b96e33dbf33586704185f406bdb2ac18ecf5c3ee6f107705f0cb7d914176534fe6314be52d8a5258b861140 +B = 2a3af71b481d1c4a4512af6a6767d6d00fdb6d11656607b4f92c84302f31e6287ddfb27b174d6398f140cb5d72ce246cd5927c7e6bc5886e4e3499f22c8bd71c0 +GCD = c343e6fc91736ba7ce0f38137a88bdc4d6c7d9e3e16dbcfd694334aa6308a3240 + +A = -ed0d31f14127fd4e513b60abe1d66f8c601e81b6833df01eff45c0fcee59729a567baaff29c7ed458a5129c7e3ceb00754d803d14f453a93981003a76eaf2364 +B = -1e70bc5636f0d9467a8b8d2c8d6622d392e2bc68b7a3d952cf6d6e1c12db51417895a74fe5e0121b7f1a17ce88d8edddf3e2a434957d90309b45a2204afe377f8 +GCD = 5b23d4a881b4eb3eabaceac2d70c7c98529c955139a644d92288393d254c3cef4 + +A = -2ae4a14e32ec59b00ee2a645b23b5d6e3eaf4994a3d7d68b64b46990f1faf955f4104a232e5838149608714d08235af9b3fa3ed8bc9863128cde6add41aa9c0f98 +B = 12ecec8bf404396989fa79ed0dd79ca7be1fa690c45f3d293953983679a999ac65d5b3d772d2fcb5b7eeba295e70625b1ef6191e41de62762b55666b1693c042a3 +GCD = f0ec5d66cc8b6b10d77abb58fadffd6f4f8fbe58c7b3f84d1a8caee0bc4fbbf6d + +A = 10f919ffdd8dabf2e18cf94c14634a22ad0be7ad91185ffa6a9983239bb72469a4d52dfe8a278d55ec5d3f11ed57406cfbd4ca2c1ff00e33eb383d673dc4bcc07e2 +B = 1d85eda70abde996add633303e27fd13b0b7d48ff8d28d6b527cf153d51d60614df8376b5dffd26403673fdba09403e63f209b2fc8f56d39021b41fd37d493ee228 +GCD = 3c5c6d6d66aff1221b2fa18f184e66f26240384ecc991efa15ece2c23fc0c12896 + +A = -5ac1bcf25121420198e74192cf1f9ac8bf2c14faaeb37767e44478b7040cd0f9de82e73e01528f3c9d476cb710df631421fcc9548472a82aa243d627bed7c33020 +B = -33328d1923438e9c87d743b081df5f24bf4eaa734ba5b69bbca0d5692e187227c81d5fe0450316e7bb8c435832a8c059f5ebd9afbfc36f3afe3998aa9f62d2e13ce +GCD = 52bd829e4f57d204a7a737772c2abf0281aa225e898f00ddb0ea2cc0ccd2d89116 + +A = -14af0bd5386a411301648f9d01d35b4de32464317ac13357f0ac26758a61972243e3a1c70bff08ed5853d23637f543412d39f1b327f61b8a0289154cf4efa0972442 +B = -107655a4273c37eb86fd7620ec60f8cde6b9480f0a9740d351ba2f910cffc5e5232135ddfdb3c64674a89a2a8412a2c72f54dceda4b2497f6a4e1da926dd4c357c16 +GCD = daa258591cbd5839c8894cf98d54ac67a9bc7333d8580bd2feed09430a11296176 + +A = -4536875469edab4d446a96b93364a7b8d2c3251f254e84fa7f6a9734a50be79382eb024fe7d98816839015e352f489865f8c71f79eca212002c42e962b4de8e9f716 +B = -c1c7fc8c2109dc038548e2399b1a27e25506b1c4953af2bb65f814ab573968556f129cd2c1ad6902f3d6e585d7f8f20d3ae397ebebb030a1d151874bafb353e13ec +GCD = d320551e0a6b177819c429ac6397069c86b8589b800f2ec9abb8e430285bc7c18e + +A = 3c9464bc9e40ab4557409cc04f4aabc99250560ca5daac03ce228e00ccafdef38133668c8582be2560b22afbae0b97b6a8300dccaeabde0e597d421a9482caab627e +B = 1bfa56fa31149462a820b07201a08cce25b20dd47eca88743ae9236cd07f0a2d653e3532a89677e63e09225992c6eda1cbd40e79f7b07cf6af1179cbbee5e97f2f0c +GCD = 1094c869a6360ec6b47c6686a025ddd07203f177a893ef777cb154232a696e869b6 + +A = -17c57ad12e2e9e5d104bab65a762c40b18dcec99612a48f8095f1d103565f479193cd77fd84163ad34f8b4f05b25d8f16e1c55649dcb107cb6178e6c9427607d18d12 +B = 356cf097e12f11b755ad67c3c19f94e435c491b5e350cc7dcfd7f403c99bdae1326758d055dd5deab136c94e17e1dc7b5a475b94b1b300092ea22a80ce36dab1c7514 +GCD = 3f7cb5248e10cbdfdb6647aba7285153e5bdc9e20fe2126b7eedf6b0672ca8fbeaa + +A = -778be9de017539446aa522f00703ecc74580ed6b042dbb416a41c9439dc8f177f9123df209b6923fe527037224d87c71ddc8207ba9545adc5aa37c8e7bf4bb40b1451 +B = -992f46b1cd1dad22fdebf5f6b75b096184557cbec0b7f5fd8d90fa8df5a640dde3716992ed81b1c94f0e5fdabdba05684dd0e5b620e4c59ded9c03fcc0bf3e224a770 +GCD = 633c1ae79ec8d5c650b9bb565d4ad505137227435d3f7dd60af9c59771d5429cb95 + +A = 1d41554a541fabd0fe241f3435891361328889288db187480550a06879add2a4206cc56604da97c5b913036a63728a5476442f433c13ce42718b7ce21c6c863d50aa44 +B = -3d48e135cd06710e8c69f9d249c6457bc584908caa66db4e9d07436f0add7cf0da0ad67abc797d75a37ac839df02ed321463d8c858d03bc69304f310c733cdc09d3358 +GCD = 11d4e55d0e81a25e81aa387d5f02d22d39462bb99bc8ab7943597bddc58317fd38ec + +A = -8455634c818f411dc3eb7bf027ea21569aad9e6552f06e308a4d8e9669bcdfd2feb2f914e1899f61fbaca8fe52aac80f414f7a21424770f1fdd0aca61961dd909579ce +B = -fe5432f3c771084b065d03d5a5776dfadab0b2a3d1d180a0345feeda0d2fadb69a137dbcdd585ef41ecc805f12b6f9e936c983ea25ffd1c471520e14cfb48f85248191 +GCD = 1858ac7a7aa0b2e0423c0dd5f779223036b88c7234eb6a9148bc3032df4c599b8841 + +A = 49dce9eadc368753b29478e1423b8638766749719bcc3898fb6ad0d8aee5d809e7f356d4132c821a0acdede2a563b5a9d5fdfd020e7f82fea2d875730250da3fb60b554 +B = 4975494eaa93eda843db7fb888a6f658100bd0287f3adfacbdeace982abd0ca337839693cc8a817259419828b12cf2540e93ca0731b1627e2dd97ae5c48a7b2b0f94488 +GCD = 630540195d9d523ccf24df7ff9b5010472f8aa8780d2c20cc922dcf4218265fc75a4 + +A = -d29a3206fb085767882b99d6c6deda38573a7e2a0a800841c54d5d243976e4c6a9781c63f990c69b6563e4ca2bda91e3931dd40236eb7c9540c8b653190f6791696b0aa +B = 591a8555617d8bfd3ae9ea04151ae1aa360c559d1b22e8a44dd95d14e4097e59cc0e83ae87ba67604e23ff6a64d9e1ee8e4aabd66caf439c4df1bd96c3bb7c49c242e3c +GCD = 41fb8a80626b259f10881e242a7d605940ebdd903129e27b96e9576c07a42a27d5fa + +A = 3b22d53ff858ad776082cfd170ba82501a35559e76c93b47163fd711f96887b4d94227018ac32a308b99771dc50a93e1c19ae60bfdd611673051ad4ee6789130b67ea4f8 +B = -11d795c6ec29c5f6a0972d77bb5fde0e58fd873cd77634d993087ab5c4e83a5502ef9a2fd9cbf4eaae8670678e5a525b733de5e4ea8006a4d3deda080e00db946441628e +GCD = 17eabfe8bdec99b627bbd1637687510c6023d2917406866a97e61734325ec94693f4e + +A = 3578809697b7f6299a80d653bce567f0ef848bbb70ce9815c821e3d544f81545759d2c662fb8c1d850c91e699caeeecc1d9d7e78969581e57dcd96bfe82ac3fbf2190de6 +B = -25ba0f690067e86d7202aef904198d02de63e42d02ea7bd188cff4ab5e056d4fe600fdc8c88bc1e8b3d69e5090d63dc6e513f7adafee6f104ac55a0a0e4316b663453330 +GCD = 387ce767fa14f3e1cd3930f25204f24fa21b5745a6bb6cb6a9636e3591032b47ea772 + +A = -d6549891f812e60828ffc0b250872dc661b1a224ab49e0eacf8c00367bccbde5ba5d00c5234b11acdb69c68d1f2948dbed33b6a5bec4599fe66a895664c2fe857ec851c0 +B = 27d89e909c13696cecb65df364c885b6103116ec31efbaba0665caa55a1259d89e537bd04d13c8a5b51675360e208815770a64c66f1b635442fe5697ba797d6f9e943a1ca +GCD = 4d226b68b283d0213ef9c111249b2aa21729b144426133d4cb485e94249eb3534ca82 + +A = 106b5b5ae06abc4ff3e191af2eec18dafcd61170473dd3ee64d7b174995f7b6320244e4c82e198ddd8d483c6a5bb610b118182829fbf86ee78235a509f046012ab1d12ff55 +B = 143de6cfbbe172d7b759b282f28464b17766c0ac051b9c588b4bcd9ad170d462278eb3c6cf7e18168fb4c8be6c306ac8decc47e8768908d2dc9ba8a4822d0cb3ab8ca0fe74 +GCD = 686178e74ec3ab68dee87868674f5c2663f46d8ea0960d94c83eba3d7869786307709 + +A = -38953f2c424f21b7b1984c7908938a9e685b2c123831fc7e7f595e99897792a038d0e1d94cd295ead895e7b5b69291737b9556692832c3536fa2b813122f2b3c9802428034 +B = -342220cdf13c19a40bb2afe4d0a1fcc4976f7ef8c6afd8a50ad15c4854918ae8dba140a71dac7236b791a384a6cdce134a71673a7318c91098322d9408178640bb01824bc9 +GCD = afdf4acbd31bc165bf194748ed48a76396f0934960385461fc2bd977285d7110d51a9 + +A = 1605ec15abc0f79cb0d82636376b81cce7d6c4172c63e31421252d86785357bc6d123b188ced34a81d09bdb9aa452c47be44c2084f76f73d8f0b9e089216b22cf1c103bae0a +B = -7cb17b1127fac1fe36218815cd2eab25c3176afe683fa13dc56b420848aeba8f1b6ef5f57af51a565edec386bfa53cdfb8d32e6e1bc56f14facf613e2fe6575b199848cd40 +GCD = 1a1ef87ee5b0610f6b31143911937f282f21e74b86bd683ebc25472159b34429708c7e + +A = -59e89e8f9891b5b7cf139132731b1db0442b52d9493b63069d8603a7e5e741fa8f2adb05541cece22eb18f2c1d85be92724d27025b5aeb123a9e108fde2dcbd42951416f68 +B = 42c27f07252745b4cee71ebe52c82c773660c57aa4a7bcbdab12ddd8977dec8b04be844abd52d1d5040668a09bd49ead568375f5ad66561c296f312aeb1a082d1fe1781787a +GCD = 72cc170721f48c83e6e9108f7c1e0bc72cd81c8d44d5e63df148af05fdea8c74f0feee + +A = d90060ac81e621c82ffa2ce8096a025ee40604c4df2abe2be7fb5938186fcafff01bdc828a58c5a598e9f3dc9ca2ef5541dd5255d75d66f8c775aab103c7a371dec1b8c2c37 +B = -1b629538569d3329094c1ed857de81a530aba3362c786a39b7018163adc2dde5ff823886122c996810fce7724cbb5edbc3223ac30ed832be86dfe4f56228aee4f6af5674f2b +GCD = 79ed2db901e029b59a15260c826e96a3e6c07faa31590c722848ba713fa67df8eebd55 + +A = -31def5097f198ae2fb17a75dd5b950988f4ed2b83558f00f27b77eabe98f4cb47ecc3e7cccdf0fa2f05258bd2fd9795668ce55c16bb4308e958b24b6f101105a3e5903b41b4c +B = 62aff5c234abe59794bf464e5f1d9c702f6e698f62791cf2e8332873914b3e8c70d3df026c9bac7e147014f5383e797797fed2bb8118f938af6fd96efda37bbe8b430475c6a +GCD = 82276595ddd93168e0f0d92b58c0bd53e06f9034bca205a8a6698e118c56f81a4741e2 + +A = 10c90516d3a36d85a2a603fcfbb355638b53bc469bf41be8793fe974b0e6271d78f3ef0b8794f064f0eb19afe52513eedc985555f22ea1810a64ff85fdbe89a303005daecd5e7 +B = -15966c787a26c08abca751dde8f86dad911a9700a98183f6660b6573404f5852a5f75c114f6f54552f22e010d1e10e99b7754c8527717b4c87a4b54194ac9d02281dd1f2f34a7 +GCD = 1f68f6e5c87a4feb57ad18c6a9ab9e115531ff878e0ad319c0b1061b5a83ad72af5af3f + +A = -456e43c4e3b371b8cd10d2d61ea9b858ac07b85688dd4c409833571433b9fe3b133a62557d30b9e9e2ece32e1a1b6bb615ffc2b310a39d454f1320eb816141662818d3bb385d9 +B = -195e597d6dd3140c1d5eedadc031e4527fef05a9c4f41a71dc656fd9fb856f7d0dd0608eb2449cb885b92040935914e779f44f53b375c659992098ea694e747cb15fba85d66a2 +GCD = 2333fa556572c692d6067ec6b77351b427bc9c0754fc34be2db86417857a23f61b5d9ad + +A = b29fe2ff288e931c6b8570a7941325c995a084949879d043d8eac1a57dbb08074595d88e837f4e190148897246e69fcd620fdd8ce7ca89a6afcaca0f7418bcc81eefbd8ba9b65 +B = -e7ba9a1f97460dbbdbe50d9dda776853413a651dfbcd9a0a90df597c4e5db4f1c10e85a79c0a1367fd3fabb217194d14f05acf1970e0a0f607e2d128bea59fd3101a6e276fd51 +GCD = 52ad4c875f1128b0e31ef13793b1bb376d27d0de470603e47ad89ccd08516e5b09a67c3d + +A = 18b7e4c476db1ef45552f206638cc6efeb96e06a3612489a2fa975bf7631fa742cb4f548b2c0e996bf08e4d499a2a73197b343f61ebf36298a5be42968170a03f94215b2057c03 +B = -2b1eed2ed3b6198516d72ffcf0174d5daa253fe449c2aa33ececf9e8d7ad403f1bb1cf04b16dc530b759714e27db09d4c261de4ccaab5d83852010d82c36759cb8cfab49065548 +GCD = 9739486102c6c7ae4627cc8767fdfc14625fa4a350ade34345badd58f428c5576585ce5 + +A = 24d6c9b3c658ed9e3a2953b0777d57a37a6703608e4cb7e2c59f4c45ca287ef569b211dc30f96716cc3457b3694c6301228e2ac0f1149d3f2e403ec6bac420e8751a73c5786a3b +B = ae7154e6dfd32233b96252bb8d9810a7e14f1f3c1e3db698e62e38b8651bc1b807e056992fdc8cb087d64cabf8b392ebc2456270b2763ee9508fe1bfef615388bb7cffe99f9fc7 +GCD = 9fda5651859f8b14f902014bd9041040735e20cdecd618e6a66ed2f23c807ce7c77d5d59 + +A = 4e2cf679e064177b4f8efc7248721cfe252f76713fe0159f0ab7ef39b234813828e73db7152f146584b228befde8767e4daf6be8c45bb149e64dd8234ccaf1aea61438afd11ae48 +B = ed5e1783976dec850f3b89b74ac3ddda78c3eb0b641a79f93239055bdefd50e029041672c05ad4937fc32dd51544fa1857e0583081df6b66ded34714f6b1c9ee7d8935e084a610 +GCD = 19ec6b5e5a1c1cfe588bfca746cff330281a16f075bc4c9f1d95861029e62888775d54e48 + +A = 69264575fc4ada8ef417a44d183203df0b6442292cbcf271f64f4d5a56f4072f6bd50b7ba7980012d4796fb39d5a07439d72770e51e9a3024db91324d3d28ef3546dfab1dbe2c38 +B = 1497ef81ee0e887945357bba106ce890fc2c38625abf569df597cc007c42355b09c0bf3883d3154b361729512ad36190fae3abb6bedd6a35593361e86df5920bbd05d43e234bdc58 +GCD = 3e773f31925e4666610e6b4ead5785dd553087e026d4d7c3cdf9058b0cdfceb517afd6a08 + +A = 31bba84b6ad2237c6f9d6280b7eedf4b5c6befb50ece2d68450c31bb156d593ca18b590ac1c6a996f2484ba62b550d0b1d563d198b6f0e8ad2ab9a5c314efbee4af0d8316c596d4e +B = 2dee795da75d4db6484796d216fb2ba8197af0f96c80a36770d276ab8daace5946c98ef4a6fb882fa8dd2617c9d3e5766806fde07d9f7645f5eef49b1d166462075d7e197154b2ea +GCD = 11dc4efe9ee2878d33758b97bc7aa0438663845ebd0a0fd4b1818a799738f0996a94d14ce + +A = -78d4623ca18af4dc1f6afeae38d1aefabb7fe9c84ba39fdb8680f725f7f49f69474f1cf71e5683caaffbdbf66ddb66b466362fda1b2f6b64d66046db74c66e1f7a56903eda04a +B = 9180b6d5c24de225d67ac5949fb455a3a7504a6580eee29073b5883f367d65b957cb243b16b895e9385e5c2c358d0033183a28e5a5fd0f32c3a2eaaffe2108091c92e459bc503202 +GCD = 2441223b7eb40dc44ba1a8214975a8ca21bc2c4062ba735c16ded0da63a9d32102a42c5e6 + +A = -403ae86522f35dc86e1dca273050020218973d142aeba3e3750535b10316de44e0c61d52eafb09b2f5532259e0fc82343af8df47ff8808ce9de34fc991dea7fc095e894870897e2e7 +B = 28eb27d3a7694a1ad53027196c2f8c9b26963abf519594d29e8f2d275a63f62a0272fd3b46bc5cb3687b8f2c9b93a32aaf0542b6c9168e3b529813b80ca4ac6f0c65479a29d7afb86 +GCD = 363c1cb90394407209515643a2818d01942903e813a0b73636139f70eadff472e14a4e22f + +A = 1bc6517483e57e92a1375f55ec93afe6e0b3294c7aa7f57505adb31a2f40ae373dc35b2c5f0e7c3bc44e0ba2d5c8f76a677731a18eff1552cbefd2897d4c2bf65801040d12f00ec78 +B = -e2bcb37b05602612b3756a880aae851ba32ca2b0043c9da2a1175961a41fd72acfee03aefa6ae78e67dfb210ca8f80dbaa534819e69cdaa411244cf7883f6c42275f2b501d2de9bb0 +GCD = 69eb60f28fe604e4eea78fc93783ac0969b79491a88fd943b66c287abb603d0413df43a08 + +A = -69399414e0ee4338b76b928f0c52ce6e10f3ab65d06bcec7f0acbd8da301e7e11b2e8b3ee3d3e19542f870b2d91d329fa994ac807dbb43c06a498da0860dea4f3e84c192d5eb3a7c1 +B = 19789e9dce980e04c6d488b244c9183303ff3a0161c3ea01fadcaaf1b42bc2c0c2d4e0dc159e79122f78846b2a3d4070b137c47894bf212ce8988b6cd194bff55d624a3cfcca3aa04c +GCD = 8929efec553396a106734507b3e27b8b66292b99ef47f0b0a629cedc017161bf2af037357 + +A = -d3486b411b02d1f803551cca36a013d042a85817b45e1a519e6d790ffe47d1ff70ac54bf64249753f43095daaf72b883b22151c0ce5ec357dc250696723b12e1db2eee8faf492756 +B = -ea5e62401b2c8e77809561599482781e46caf4fe210ac6930ecf06604c8d78b414b360a56e46885ca120e3367e5dd6141f99c82073e8e891efc981d1707bdeeafd51befdca0fc92a5c +GCD = 1f6ee8a486bf730f08fcb731b914ce4aff1b1ab0f14c3220bd00d8c6eed200849a9a6b892a + +A = 3740de51a460599bee0b5bd1ab5f00f21518c5fbed4a944aeeebad8a009386d1f332d015279cc227cd5f6eb0bdc8212ef7ddb41d1de040045355a8055698fd38202df929c5260c35f98 +B = -4a05929c085e16e541172c7e9eb1305b0dc76b7a78d0cea6e1f197820ec95d86cdb3c5b5a618b25f49bca20d4110b8354458bbb5c9c7aad17f49e28642f164b21c8fea27b1a23a0d8a8 +GCD = 21571c25c9007d247a2399cf87685253f187f893e1e56f62051aae733ef94788646899ed2a8 + +A = -bc00c7e60987956be2f4c0db81741c6b33b1f090fa6d71f5f7ea6c7b824dfbc593b49c4ecd591674f44dce089f88201fdd3fda245d9660a44d0fbc922a7835fb27ffc180dec627b346 +B = -d28463ced2d827daf64ac95089b8fc3ca77faf518caef4184b00ecaed0a8c7565878dc7b7d387d7bfbb05ba26fb490c1d4ec0722495902397154d70a781b260592f250540effdc580b2 +GCD = a6b23c0c78493c4857b545d108b4e4153bdb8ff3818d2e7a9834bce524b2ede915a34880ae + +A = 40e97bd2794adaaaf96a77778431c80e985435a91dfaa9557fbceb0d2aa568cbbed449b7fe79b38136b5b31d18458b7482c6ec23f769e449eed2a345ae021b0c34ad395bcca2b528161e +B = d7ce46d5d72a65971a16cbe0ccb42d1536f4e3e9efc04b4b97c8f768d851ace6736e823883229d12b950a58dccf683f2b4f28b991b087d871c5376c174dc30c3296fe3f05e83bd319e7 +GCD = 8ad57139fe71fc8bd3439740470384139be69b6b621ef861541dea10b368a090f001c1c644d + +A = 6cb8b8188dbb02f95a65ce042372a64840c736844854466561c0045b0a1e88695f91ee0900fdce0ea24ea7e26897d39d3a001d182b3385da3af36776c14be39d760e0ae5a8f64af1c7b4 +B = -c31ce19e99f40db83fa040b6ae7e98e23ea6651dd61c0c870e35f500a55e7fece074247278c18c9b90cf22d89d7a75d4d2923c20768cedee77514f65976aa9ad37d75db50a5bc6d2c590 +GCD = 19b168b34ccd1e8e0112bb72937bd092d03feec245f528873859b336fe42b4973e1f5532294 + +A = -8f8894864cddf9c384e42b49a9723957939b3fe54e58a01ebb1b0dd5f8c008c6bb7fd007cff320b06efe407b2b77aed4fd31958e256148d702223e1358467c2658e9e35f00a040c411a +B = -725787378b623a53fbdb5663ab22eb7b5ad93786361764dec8eff6062af2c74119fc22571b84e88320833aa20d81b3b123a16307d0ffe82ddae681623e4d3c4b950245266cef4b00dd658 +GCD = 7ca9ba977fd596140f91a1b8178d09282db3e7afb245c67f6cfcd44c5343b13fa2d5a2b16fe + +A = -135672c5a4985052d791db7a517fb9491029eb60d508e8c0bd3e58a440c0de93c79707661399ccc1456edb39fff5ef10f2f0dd2beb4b9bb68a9b20bf5681029b2a63f4117fb4b474fdf3f3 +B = -18063bde118d96bcc66c868a6f03ba8693fe4509b5a13763f7e6d4b818fbc87b33a7c61e81057b79aa0f8fe128c2a2e44930f94751e6726734edda325c3b87c046bd8f7fde4d99d37f6f05 +GCD = 66159313e37208c2d8372616fc7d259ff7d79e9f429c7b41eeccf1197f0c0e6c9240ad734d1 + +A = -90443b2a7fffaeede1f05e7fe350a3b356817b2b8dd887ee1268957c9cfe522543a6d7b84796cb1cf788e8681199d53ad8b611ddbe6605ec6e9730437dda752c2fe8d32340fe874f2a025 +B = 1bcb30b58f1d36e171eaa83f225c94e10d04758fd1d56aeda422cf97ac45a86d30fe0d4328e27db59c8ed619e49a9393214f63939214592994c815074530899416d89f25d624379cd569cd +GCD = 99ef70d3c6705f8844886bbb12581b26028835e0fc63d9106238b9c278754773b3b12412b9f + +A = -338ceb3926a560bb0265fc4dd4f4e31c23e83fa9239960f108fc7a5c677094a79e43a7343701fbfa025cb0057bb0a6e0b4c96ce608eb88a4cd2c8683dc03aee23856404ecb587b87d7a864 +B = 11950e1b6fbce7740da6cb5e1fdbd85ba2f94c18d261b777684097271d03c23cab39924364aaedc22552cce8874b81ab52556f8702a6d1f45f102d3e936d58be7fa12c383abffbbfd98b1f6 +GCD = 17549b5b5b2e3a5956149c2872289c5a43f65005286243c38050c5e3cecf8e0b5f1ecadeaea2 + +A = 56d7cc72cb3c8e9485ed8aecb28e4e8aadbe2b2442de843be1ed980b7f953bd3c6ab87b13332ad4f0ebfcefb2c4776164c837c5201e903022b3ea1b8f9cd4db69d2c6d478f8e61ac98018e4 +B = -69087128431493852b271b64c2d13f7d50d3596c5956baa739e9825f9d0a81a7d99012b37c93be3e8e9334243d95cf36c4351a99394385923169778c1a188d9ac933353b976e17b19e52c18 +GCD = 6cc0dfbcf02887a74126d85ee735bd56fcdcb7ce1f663403b053f1a0bad7f45cba33062174dc + +A = -103763b67d15ee7896b2db89aeabce477e6044f79529d3852a8fb9957e7bb894a7ce7f593c2ef0b9918a61fe9cd199c21c7407968d1dc06b9f2eb4197054a14e8d372469521a586d91ad99ac +B = -3094b56ff3c61403ac076c43fba6557cf17587a3b72a791e24c45043106b3717cc3f749984d4fdd1e113708d46ad1bf981c7059234533b488af256ad776e39699749a8a7119f4e8140ecace +GCD = 441c03015ce9539b64fd41f34bfa2079909da3db36aa2325b7ad0ae871090326aae811839c12 + +A = -788f815e412fa104b7777a33e6d2cfa9e4cb1958a709773a2e26a7547cce23622c59c2e02a3f93e56de3b0afe919e915c90e75c1498f8af2a468f562352bce10636f15ad2120149668826e50 +B = 2e4c1c8d63e691dd07efd9140354f4902460ca0aa0cff7d92f0a63305c84acbdf07a1692984c36027c105036baeb11a2871e9ddb6b68c96f8700d61fcca17401cc0ea1f71cb5e4fd9fc7f1b8 +GCD = fc40e59bc22676ec833cd8f0eba4d773ab37e2b11783b55a28b5ff82f6e3e0246437f8109b08 + +A = 61fc055c5d2e60711e7bbd4e442b4808bd66a3879b7df2cc8e3cbb9152adfab493fb0e5027ecf80e3b9f1bf11321fc68790687a3215fa5f682dbb395e0d28d089debf364c6a48fc0a53040f0 +B = 10e7df4e9f571537b99b2864e3a4339db511dabb69ce51e145848c8e19901a6bfd66d630e95b35a61498834e6edc971b9248991af9cd631f565f87d404fb39f8f6f8205db5fbb3b1c0c52833a +GCD = 27b6a7061e47e45c2c9c0d18c641ddcf19e625ca774c32b95f19f1e456671aa32071cd904400a + +A = 1345294cc9fbed6be364e3c3df8851525a3f6bf045ad171db5e5013b89316d6ee7cdf7904646a7b1d24a6863cdd8e950ec7921f8bde3cb19a4fe52e255c2dd393e6df85558ccfe0be4fe0d380 +B = -5c9e0c9554026913389e75f4af6e8a558c4dcea26c19259af1d2d3b078d2e13e201dd85e376ed3665968c7e14ee0da002748bcd3a35f90236ec5b03024cb8e5b3c5107a62f6b18ce75ce64e8 +GCD = 281a89a0f3702ca93b9fd0ff34c08ef5e223761f5726ea5a827e952c6b6c316034c73b5f30688 + +A = -4e380e77843ff046af1827015ddbf0b9b7bced42f76ec51ffb577715796891ae48fefd930770e3296421dd4ea4750405b92fb8ec3e606c24bd0e027af8775eb3333efcef768cd7594ca30d11a +B = -fd594abb8ae3fc4fcf752f00a37016b10702b1ace227618c2b340ec2086cea3af35998ecb34960979ef0664241e5c770b256f45f5e4c429b6f14870b519c434b320765786993b40014680c4a +GCD = 191733c89832c80a8bd46d347a791eb92837687275240f3e7a2062c44d1fa03ea61a41cddc7dd26 + +A = -3f24c254338adfda1572ca89ad02a4d5082065ee4b592d3cf24e65c629b4f69e4a78becf76fda65c30c698f036844858ac120b6776973098fdcb880cd27e61cd9559f33b8119bc6eb691056572 +B = -3c3e5d7f9365f1fbc3bd8a0fa171d4ee063d9549c87a2a8bbae955f47bcd1b827a3018e4cb2f0934fa69ed2dad1a4f1ad418c4debb83ed06ac05093c3d5162bdec27411cc2aab89427190aaaf4 +GCD = 17472f7b577d2b479c4386e989954799d40f2dda8c54f325577a538f56f09d4ce2ca9e53c0056e + +A = a55de776b8a4fc34369c6ef0c233417a94a2b2e0cad9a06e6665ef8ad71e812b59890465ea01b4e927f4f4c458012b6a1e7b89a2b6f5ba8716d22547b037c34cdb4471b9d4d20128b3fea7372e +B = -c9f04eb588b439724755d71e95848bc19d7e8ea74c4435d0df8333e61647bc140411124298ad492251a696c66ca9339ef2b1a468e3890cb2c5658c7d7fb34cf493669da6421511810986814007 +GCD = 1c54b2e93095e58d1cfffa70e44e6b2e74ad05be158d15285a1f1c6c17fa1010751187181b9ce7 + +A = -1d941aee517603203dff6d2dfd94e780a1e7c512e41ec7f8b352202ed9c9640416a674a503fe4b4142713a1af14b84f788446bd10caa806b113bcdf7f14982eed3bbc488c0c42a3989e60214552 +B = 2797b8fc55a53a57744818b388ed03a25068c59e63bf93ec0ebae9b314da45176b0324f83ba06406b8a52dea524f24af3b143cb63131f00d0953191307747ac0028c913e47db0fc5a44af9fda88 +GCD = 1418144a5fde082869dbcb7f8e9e22260ba6432f7affa18511c0b5d038553eed8e25941e8608702 + +A = -23e07e809c4c21ed1fe202b63374a9ca956275342c41fa248c9dd0bf5af47bc0cfd05890ce47a62535c2cb9d68a3c3d7c6e9f128577a84772d5f4b86bd5e6c76e37f015274199d5d86bc5a218ea +B = 9255011de765f911a770063cfcdbcb83e6b15dcac04dd968f202af1ff336d349e6874c62174f485c089141a19372ca5cb5e8dc53fba277585c6b39086026b518ccd1288a79b56356ae6b67abca2 +GCD = 49e0b0dcb47cf633e886acbc61368ee07c12667911482a690a58dec15437dd6a3caff7db87f38e + +A = -2e489e90c13b94aa5eb371262c5a06540cb4bca27cf63d09fd97e4519abd2f2fc25faaae09b72a63f7f0330d57d56128a6bf80caf19b39420021312c7f4a62bdee7652e32c988c65274dbded0b56 +B = -2eda51c1af53551bc8e193fed6b71e4fe4519374a41462c69ed028ca3c1f3a6bd72985309c8c3345daab6963fe53c595d4595c8938c30cadb2af8e76620fe03a1a0f798f285bbea9409f81e6ed2a +GCD = 833ad34d73b58fabd1cda79f8e69985813e7124624f6da07d7f097e9991e30a6577a0f94946572 + +A = 7098c102905e6d3617ffcdcfb5c0111b6bbf93eb5783c2a2967a104a4ef6f588534a087453e951586698561f808c2a960046790c98d3585d17679d062edc268878fd4be3eb39a9f414d7692a7f62 +B = 7e4fc8be44ae742fb209e5b571eb0df24cc19127c3d3e305e521b4c978173e029bce150cd0d1f4ded031d9529c96fb0a2c74dffe860b9a1a5ca63c1d350ac74c92f2bd29107d1364f689084979cc +GCD = 1a7544fd32ca4e50f95accfcd4c5fc186148468f9ae08350cff879212e38fffcbd31c417c9f554e + +A = -4021a5a13bacf5e5ccc79246591842a5004137a35c628f92fd98ed897ac12437161c6ecfd0a2ded65cbef3c4582d8ef42d7c2770c469c471148ed6f8697ba066d336baa601d4e9364d032ff1c3d7 +B = -fe3b70405122ebe7c0d36b4467267d9c0deb5e20dfd20f7db8bed22f2eb8dacd126bc2cd659809c7a706996afbd2d7b2b6a47c461283207a1600cb5c65a942ae84d0fb97609c8753269fd2e20d9c +GCD = 2bd4d226bf431f5bfc6b20c29b12ac95a7715dc2586e12741b09ec6fea7a804b7400428425cb081 + +A = -1e5ad39c2fe0213b64aefcb9013bd016f6ce29c275551cb5c377e062c1acc028735a4e69533e4a181b2fb0832e6ce3f73ab135508407122c011fb0188bad8e53b6140171ecb6731c59007c220e504 +B = 18e26e1413d9e67d3ffc44105934505594dd24d270ada1241b0e87ce5bff863a933cd8651ef2cfb773b08b3ada61c6284185e2ca90a7c24e68acbebc6762b6a59bc4daf10eb2ece7e290e6cdb46ce4 +GCD = 4dec65efd6ed794607e938993be3e565de2467e27e1aa37bafe6b24706819fcc593d7b498d50056c + +A = -d9680dcb15ff468668b48e7481752bc62e8457c3b87b015a43385607e4df8da6f4daa9ebbe6f77a4368c573926711d03e4d47573c723b229846770e9fda80b0a9b85ad808df2e0f06c345d1ef5d48 +B = -6b57e3763945ea2bbc1bc6a73de734b2cdf24746f69d1573afe6e2666e3ee9cb2441e758218a293d6ecf8e118c756fd545dc0487dc4efa4bb898edbddcd9ec679bbed32091233aae2b35640b1dcfc8 +GCD = e0dc97a11a3756147ba6dc755d50eda8f840730bbd6a00ef7749f2161311ab6632246fbde9cd8c8 + +A = 978b52b96d783786f63d70c106da9ceecc8e56a326fbec2233d81897d4a0a691a3080d3167ab28002e23ab0795b50a234022ddbff1b3a4e60771c3304fec2bf39cbc185e1f2c07ca94d75f8964f23a +B = 647b8a1791c509803c1ff63c3e78b5e52a785e451f212913e0b11a9627269e51ea95d0305aa176fe87d1132a35629e96105239a0f45956e58b6a40c5d8d1f7a3bab1b8a05d79d1e4252b68ac9a92a5 +GCD = 103692e2d6d62a6c452c95d6067daaa56dad15ffa2765d315a25a3f255322645aed4a89e9dafbedd + +A = c1f0ed4d9b13f63078250707fac8cc061f4d36d2a0e9010d84a0d894c109cefd3cbb3a50a30591656bf4db45f7c092e2d476bdd90bdfec3dfd6fbc089101ff7ecd788b57b8745ebbb80934362398f8 +B = -5781976db214c35cddcc93f4db0a7e614c7e90abfb21951849d417cbf4c16987af67cffab64c49ee1a730603f2bc90867391a7ea8ac9fee952550a07166e82168b7356b1a91074bc807ff0a06228598 +GCD = 2850a44ca85bf7de4ff3bdc347cef8bdca67b1e6853d0b70775e9906ef3cfd994a7bc8a9f42d90a08 + +A = -13fd588777d7f39a082fc06387247ee9470028d4cdadd30885a5ba06bd871668dbe721e5524b3e68e2ec9760802c761e8bc75cba874ed1ddaaf894f8717f4e5b4a47f44ec75bee217383babaf449bd54 +B = -1818e3197077ac329b3b4d53cd98bc99fcb9d4db55fb0bd4798b269109efddace54b3b61deb4fee0b6e7a0b685887cbfe1b1b454a35f66e48d992d906bcb4a3a18387ac3cbf427b6f83bdc5db216f90c +GCD = 639de7eb76ec99a9c4b8adf0127695d9df7516637aaf83ecd126336576ac5e4889b8fad1b79865d4 + +A = -78960d274f09db4bb879808c9b1fbaa58684b1aa0e9d73269396301bb2e1d2c8d195189ada3c35245660b78307c2e7e76787298e950412025357dda00bcd92f4bbb22d61374a0800fcb66e134e41109b +B = -42df0fb0c28989372a84c67fe9220fdc7752cabc7f122d00acb33e34397c5c8ca1d1770511eb656ebeb395e1cd75df1b081d68e37017ef8ee1a55a317f40fcfc17250af1e2c8ceaad708d51bfa6eb3c0 +GCD = fc7e31d2c798cddb8bcc46e3fed48726f9637ab7cf71f3dbe5fa011faa776de1728e734c6ff06ab5 + +A = eadb5e642afe41b70e79397fa90c5bbad4d47b1b0c2f146e5c7f672a71ac03ba06e63b53ceab5d658b2e18475c3cdaf68549321f3f4a1331448ce37af78badd96d201be6474eebebf6ec6852cffb5155 +B = c0576ff2f7ab73ff8c6dbccc99c376a54f88b7079fcdf1769fc03fc3394b5bfdecd694fd954d106a0acc951da806750a0f945d64fb8a3e47e04d4d8813ceeaeb97fc93a9759f2461a4ef83c5bed48c60 +GCD = 12f40d90f061dc0b573379b2645195438691859a12a18f1245a6071b8f3af1d3fd96656ba4558d7c7 + +A = -226cce11f9e926a3560df7438288bbe56bad54f8c91c8578f292288e586dd315829b5b54d58a621044c43fb34cd999ad12e95eaa457bcd3de9884d5c67ca18c18f1c0f17e9d9aacf5e29a9cb807707dce +B = 140150b54a03a165580a780f40f6b34b1b0dcc14016f16253483e273d43234f5bdfd4de155b61d5f992b6e72d4f451f6bb8fe4e3e51ae9a7161fcd455633a4fa6613eabcba1338fe721b5dd8dd656146b +GCD = 2ca53db42218d527d2b256a13f734424180bc120b06a978c4bea6f46e532da58e5cb10d359a311c5f + +A = -13f64964fe8710a8b1200b25c7c91a11de2cad78d7004eb47a2f2a83a832c775815051d7e442a0cb9bb0c16722f1450f47b8d6699595d49f626947665cfbeea0e97bd6e378ffc9eb9e6f32edcc562168f0 +B = -14da89e7867acf9673b8b0f9e4982c24945e93f82e02c9f02845b3b7c231291c6bd468d0d9bd18425daf69783cbcd762a054e7b2a07a06cb23f694e4f73bef316c6c9b620c5491d1e6807ad067e0d7b460 +GCD = 1d7a7e2efcafacb56a38f5b83ecf79419382459d23c7f1c601fdd8c89e36c044d0a8a825462c774ad0 + +A = 32ec6c7cb15c2c24996376dd7f005757845b7882f93700f4b60fb423f6022bfdf7986378a458f7eefbbcd59e83849ae5b7764920516df54092a50e2a8040db9837bfc81aca0922b9709d7358213d94a2a8 +B = 15250ee8d63a714d7a18b67cb7c697c803f29e558ce309c07f29ea81507d5edf626dc8e524bf95a1ab118607bd6829d51319641f6d5544707a7645e17939b5648b72e292710c8b7ab63de32779649b30c8 +GCD = ae15fca840483a5e2680a2bdab52c5551e07e6803e8bd21e69feae3118d98765fac45614bf6844d38 + +A = -1bc676af24215c24fcf65a803d9ee7db799bb9ea986b490c566ca37e1eb5387ddc6cd627e3a72bb23b9e36ad0e6e37a2b6a6d2aacb7391dfea03d3f2426b6cb868be5e03129f0a6423b0328513b8efe9ce5 +B = -17e1c103ea6ba8d089ca3eadd8aafc7c56d002efee3cfc9442db35429e9f2c25625e381de4fd702598acc914d7ec09f295777432352669dbc47a16fd1464ef0a4b2513437c15f9cce07ba4ef0097cf2d2d1 +GCD = 1f21d55c828a2da90a051ca3899c4dfafa8b7c5af6f45daa6d66d5de4e9571012bfe48327395a9574d + +A = -50c5f53a340d0cf0c6a756edb7031dd078f670dde2cd8c2fa7218411b171dc23c99cd26bee86217c8605f5fd719ead965c44ac82d1c3deea21d4594f5d48f8674511663fe2a583b42048e701f250b67d6b5 +B = 50cd63208a37ab931b026b3936e798a0bdf51c4c45dcfaa45131b5879973378be2e73c1e1b8a83aef6abee3ea625c25580745e06ddcf8555fe5640193390f62bbe983d02f0748df876daee08085fe1340 +GCD = 29140f139d73cdd7619651eec490d53274ea6e286ca33965439498ece6c2f4796b89041888fc3d49c9 + +A = 2a225454569c2a65fddba6a46568c8d54ee9c0054e64f1017e42778d131065f429e95badd768ae2d91388afd42ea895607a46c1a18099e7a519a1994d3836ebe0b3d12756c4010fd4903ebd51e4e510f524 +B = 1996542d731b9d6a43c6ff3ce16222c1d2e9e92237adcde1d9296f9a5afbe60bcca76440aab4f6eeb07000be404c89e04ca886d98d3a6a24ba0d02525ff50e1a417b6c2b7593dd636e97b815e7a3d2eff48 +GCD = 48e8a312834ce64f1222121f2c328a2509ac7deef7cea90ca33a973706879b918ea6e624c0c2922c84 + +A = -50ce10f99532af3a053fac575332a2bdb6d5eb4bcc2714086dfa16e1454d962d67f42aa246fb1bc87bd7185665dbda684edb7725c88594a35bbc8b9933af1444be0f89af522b3ccf462e3c14d4e3b1b40128 +B = -5148e5df93a268567c8fc1468df7fbe5c176d43c6285beccd951874f6174be2058b5aa1cdc320e73b21ef19f8288462f1f6048ad59c595fd303b047a576cf116898c348bb17b1e081d199c623c4149013288 +GCD = 63e748b95b57641f7b366a1aeb3c0c8227fbced13124e3691508002c5a330d4e3eb918423d958eb1b58 + +A = -1887ca50d93b18fca7faafe3bc608bb16917d9fed22b6639d652077110e7f87c2078cc4872bb8ff733471c2d59e3405bae30dd708158136c975909b6788615463f693aba2fbb1210f09f960091a26a4fde9f0 +B = -16ed78ecb8cb39d464236898f59c11041fe03498ff62812d89f3a90aeb7e6b8ea964870edb2c8e100d617b6aa60e43047e0540328434c17e6d48e66a6d7733415a65582c09d698d098592ed467764a02bbf68 +GCD = 187027b5115f86bfbd58b347f503668c57b79c2a22fea9473d226cba9d068a49d4410f8a584f5dd7a538 + +A = 4640ef1fc83020f18f2825fc867ffb1fc867dcfad4c48ab18baf8528cd170b7a0189a47c11595c586a28119322663a800062a111cc74ef0402ac877ed6d81cca6025e70c883dbf4bb79209b96eb70707e131 +B = 2a6fd447d5bd8d2a79b3c5f3b252a33fbe98d03e64abafa267c7f30d95f8514cb1d3376665a6ebc857c93ff908d77dcd808e0047f26679fbc6694c8b499111275ec220b8a64add0be99a732c5d5b260ef52a5 +GCD = 296d18aa966f3a7229fad11f7b51498e1a132cfcc4b0a6b1b126d9b1f1ec951733194a152903e02018f7 + +A = -f18f6ff8edddb59fa3a869acca127c178db9ab6f7bf77d9216aee839677f650f0f914d989c5b53b0d8fa847a9a25e735e26b9a296357175e11f002fb4bbb187167c480fbf5cc81c83bb3e73847413c0ce2340 +B = -1cdcd72ba6f09cda94d94dd11ce0532ab0a50f4616cf91dc56a0bd4e0c5b3420502d298280b96538c09cfc31102cf63f3ad0ebd11eb7b988578f02e8e38aa949adc3a5b275e6410e65c518e1754e04012a0780 +GCD = 2c3190c99d7c600b14e0b40fe80022b60eee0c4a5cac6076b75dc3f9e05d08262855d639de8d58823f40 + +A = 43508082b6063dc0949ecfc827e5f1ddfeaf76dc2a30fe78561f626e2b6c5f255f69c0a1ff3a147caa39e13bc7e00c89fa36dd2f2b5d51ae10e0816fe36a4cb52d2c42c9c94c28a41045e8c1dbcc19be43a847 +B = a168064ca805c2a9c40c319a37d3de8ecbceb6fd65b76b07c8f0f6be01ceab562d1b955ff71d970d14eb481d95d47ca15d683d571cbeb879f144dc67f4a5f734819674b865241243ecfa7f7a5684f3f36450d +GCD = b36f69d05297b4731f358351f454766949673f187412905c5b5c5dd209d486edc28c6ab79d6370df4c1 + +A = -3ec96f1259941cc385c5fd71f985d286d0e4cbeef00a35e25e8539ff9a342875a7b5de194dde0250db4646cb047735f4d457941c46784874c819ae6d3c9bd233d95f49029f95018eef2d53eebec7a9213b2046 +B = -bb7af1519143cb6cf9dfa8b2b52ef16a206e601d4da82b3ac4760a024e84c42b9d6701a27a214a3f187cfc2019b9706448448409cc154b15920fdd58786cfa8f8e17eb6c38b945b50b224e709b2289f0e55c3e +GCD = 1457ff49cbea3136c7f2efd1e2ceb09a9105926445056b6f99cc3fb7d21c2e41a484b14a339f67993bc6 + +A = -1055549b0e3a4fd6ed34016975fcc47624a0fcbaed6aa0f4941ec986f6ab070dd3e3440c16a701112690f1340013009870df312c0b128ec28f36581fbc9e7eafadcb768697c19022cc3cc41f00a4a01efc865c8 +B = -1576f648cbe4a93dce7d937bea3bd736b11a15413203d2fb8446aa66511314b60a481c69372765a82165475bc1c83c696c6d3f63d41702bc49a318f2d6403213f3c4d4b4ce6f7a7a312611f30aaebb5706bdff0 +GCD = 44a26f9cd9e7421a16c13c1c145e430807d61f1b6eca9ed9892e2de522206e0cc29569384579a0e43418 + +A = -fa26b98cd90e24b492840b0b5a227257f4f68435f27005f1dfcf22c8cb7f745425975a72e70825cea71699ae7b7775363b79eab1e1d683fb08a8fc81918e9d23c19a23d8fa4e6cdb582f1d85594f8961fc6158d +B = -125c47be35e7658ab5e106d490029e90f6e568884014b8ccd8ec3f4eb9318ad209cd831276f04f4e6207934ec711016f673e59450b1f7e1c40b6eedd6abd844cb23b8ee4ff70a25463e874251344d2fc572a4b76 +GCD = 7114d898bd8f5f5b724be1efa2a9bcf951d7d15f7c38550fec2663a44635b171104e7841c1732cad480f + +A = -5aabb4f5524a2bd63cfebef7917efce47c02926a3f16ce7e02f9c8d606042ff26c9a751d11dde633698280469861f10411316c6428be89964a658dcfab6e57f14aac3544a2048d59a10ea89d183a4275e10bd0c4 +B = ca3ca786433c7e257bcee88493d570d49914d4bf81ea7646a4e1654c227dd116b2529ac8f1b36a4dd9aeab9488c5a266fa0bf9ff071231eb56406d2d588554c73aa684c2dc5ce8c02a0bdb3f050c513d9e4e98c +GCD = c37a5a32e0dff74d5c5d94b89116895602792874c4b58d35d68cd1fcbe5d902f901bbc32d906b4fa469c + +A = 1052c535699a8624e26791242d0cc8ccf1242a9aff9a065365e675e3b979dc68f5cc7dc172a7b0f332a5e4fd9f1660561747127ffe9ae0f25cd03e44c665b2de821558a230a51bfa6083d8e0c49fee7d47726ed8c +B = 91d3b5cfd9585d0933a58076cd2b0d8e628ea9f74508e304d8de2c214dd955d41a993032ce8773b7c41f3d3437b60dd5f3ef5d6daaddc417754e2c3f5aa1f27ebf05ba1a8a4743e7a7d0e12c65505a0ef7d944de +GCD = 20c78a9cd1bd03685b180c1a990c01c5b80af2e3e6ed35a05f3360f72f52c16dce7c9da43e6389e473556 + +A = 5350062a99c4277f68e2b28a27679fcd01aab0365ceebfb422f14e2bce264063d66d04760c524b7734f071c1c2e541bb2811b4d984d31d8671263a76d4c7cd0b09c3a2fdb589ab4c861c10e1cfbf9f4f8db34501 +B = -e2a03db9d8870be9d5628007632987ce53daea454436ff2117588a7699c45ee56aa2ebd229a86920ea0a7799df4ecec76d450100f6e994c58ae609561b3d2009b54edd307d0c182bc7a1993beb6c67a64bde7f14 +GCD = 374ad4ce14735dae535224c71520e76c9fc28c77f64c4d8b89361ed158b44ac8925195d4222b047626ee5 + +A = 153526288c3b2f0a28c1045687e0c62c673bc757f261f8b4c8197ddb6368c855c85477fb8f985bd03356e4b810e37325cdda78c05ba74f2524662f1f4b8067edbc05bd34a413cbb57e299f6f1cc85a2373da8aa4da +B = -7d401b5afaa9262b9a1024ba14b88062419ae5dc686bed09fe9343a914c65325bf5e2fb06d1e1bf47fbfae01706362621a718c5b3da596bfee1affe5c86d1d406334def3362bc43a0d4321bbac6fecbbc43291e03 +GCD = 5eca5a9ad59f03fe20d7e10577d674244126b47018ecbf53519727469f156fbc405036adbe784c876f3c1 + +A = e5cef90304dda6dfef5f20c8bd36c36972e9deba4294043302e7b0b6eda8ef8a672385809adde58b08d1812be0fddc3950c1db5c0e93b2e45cc013172896bdc792d4ccfac813f247b9c491925b07adad49c356a2c +B = -24846228bc1853135fd15536e9d6e921a9e57cf183ce8d1ded7aecf16c9c1ca5cfbf6373fe1f69119d400e145b818e7bf4c04352b255caf8b2f908602500a3dedb1a15735d3ea79d5a569899079df41e54c727aa2d +GCD = 4cf4419991947df086bec5d78e4a30bd4b1d77e07c86ab2f04d9969933ae2043d410c8d17a65a46626b81f + +A = -eba20237df851bd3b286bf07ef825c8328d09352c8cc4dfb7695530ba954435b75a1b823bd4bd9364c230e3222ba256a9c6016b4bfb8b8e15e195643cf2865a2cd208b775559810fd8279490d351c9271d0c2ba550 +B = -1dccc6e01096ac4394001b567cb698be61e7b494fe0a36f891c4d00589c36dacf8b6f26344e6299b3139d5fc3456ded687ca8a858c9b0d70896026bf5f4c9d31412b4fb2a80c915f424371585258aac9d4c24e4fe0 +GCD = 1746dcc748628fa6825ab47d557fd756571fc654f1d15c49683f4493d482862d767567c635f8b7eb5a02d0 + +A = 2499134aba0c05ec1d72ea6ee96b55b93f916e2f33627f9aaa21c8baa5996b419df15fe46fb5e0a5be7e01924a3733c24e193064de749e5a56f36a8c8f873224995bb81995b99a141a2616348cf1b344602b6e1f731 +B = 80a0850fee1232e0d25a8d1277a337c3ce4a5ede9cc7b5556361997d9d3927540b42d9819db2d2bd1a2ccb89ac5da528d81ed3070100b03a51936f49d36ed901fa141b5dcefd3d60833caede7d73a57bfbd686ad00 +GCD = 29e1f8deb7125f1a3c7a28695f716fd263b940c4a0ee950026348b70dfda56f156e349ba1f9df657766c43 + +A = ad881d62206c6472e45b29a26ef710df56d60c756c2aba41482c7716ae46495bab2ecc9bf0d9b5e0bfd402357bc77d584b1acea4181733992c7b65ee690a8389204baf833c93eaffd3927d52b54847911057a577fdc +B = 9a3dcfdc21393152ba6e459ae384d1ff79327f1f4b9a4b01db25184df7604ca5d79fd1ab35eb946883c0bd2814d848dc19813f9d011207b252f6b295edf98a9bb2eac4383abc089a48ca287fb4e4dd61aade05af588 +GCD = 50bd18adedd47d38ad8c02c6fe422af0d36cf4e21c5776db651a6577feb776f78f5a6d3b232af7f6698f6c + +A = 29ae2d5e9a31f8fbf46a562f91a630f9ddf142d0d05d0d70d744ce7bd8990949067841ef1282f0c46a6f8f317ada80520807e79704dbe7905615267c0e5a6b4fa3098287a31ee388d753e9e19262286e5c918fc50f80 +B = -1cc7bd417908e40c67b7ca990f68911b409e92bb9daf4f17fa98277caf4f17e4446c5080345ae8f00222a000025e052ed53050f4771f6e3965e53eba1bc2cf4eb28d7f069185b25077573c32412397248cdaf72aaae4 +GCD = 88652a1c65b4d39a683f9ab787e94f49ffb60bf67aa949269956972dccb865a8f05ac9453bc302516c0554 + +A = -faa87d23dde64ef02fb948ff6b75bc0a4aeaafd9418e71c57505ae5461d4bb8b1aa1b16f0835141b3c393bc9a33b39d4354dbcfb5981ebe5bb25c8f60dc21a6032d8326cf7ba8b790299a301b83ce260de2b72946733 +B = -9dbde9e6faa351a69635d71f19f12a0e6a5141d3733ef3728ec0676625faf252da78badea0b3732ab761392d10e5f4cd43a0068235275dab8bf8e01b3b5c0c3b0ade1104aff4200bf09291dea20028e9b4b501d3ad97 +GCD = 17573323514ca4475885584a2f7b2124a2fd13062f282301575448013abb48f7a87011d806964a310dcf245 + +A = -40acdbb91f8466c598c7b9b43a5df213c1d7e80b2a02db487064769a34f9043f5728206b5046419b40177075db2a9d22431fe33c1b37927a3df053d3dfe07e1ae054509c271b24322605c3e499bb825b914a1786e9dd0 +B = 1daa2cefe34bc1bf2c432a810a965eaba1713bd16e81073d31c3dda7cd6bdb676535c197fa8a3a1688086a7424592cc04dbe5fa8fbb3f7b5f2b75064693dabe72e5f3bf3ebe92df24db2a5340f1de5fbc337ae314687a +GCD = 573777efbe5fd053c604d0bee1dd02a58069e89e58859f65684bd0d6e962d9feeda072a381a04eeac1a4f8a + +A = -67dbcb0ac09bbbfc3b3ba85d2f267a9b1b575e24f654d3c6d7700e35357c8c235c0a2006a2a57e61f26a27b6e75b4a24b52772061e0e597ca1b6dc9e44190c1349984ce086f6583eb94e18871e53ba67a104d8cd1078 +B = -bd07c143d44daf6594ea11a3daa8d4af63d03fd8f645b3767f695b243b6fb7e2a4bbabbf34645a56ef3d3cd4c8d56552fcc71d5e2ca334b52c6c7e49d0915f143bf56f10049f653ab14c33339aa701353378d25db7060 +GCD = 6ec53d40d021d1e5760287408ef6faf8243c224ffd7549067b11c1e761c4fb593b1f73dfc7357fdf686cea8 + +A = 3008861931d6034b0d1f03461c2f6a9d0922ca42ee1815434c0ac6342b405c2ae8ef88fab9652d9cf204f3020e6828dfaf0b8786c206c3917c4e0376dc842557dc6f9b04876cf3d69583b8582ebf83ba97f2a49720ed7c +B = -3ea448c66e456d9a2ef90d0d6de765a03da0d9e35c128773a3ed1411efe9eab8b37c91b77da6faa3403a0623e9b5b3139a1065da51aaa290657d89cd20061deedd92d51bb433d7d058aaa18c9a9b8a00612683e920bfb4 +GCD = 12e919311351b55cbe90f45b82cc2153287b8f5187e73897ff1a9c83f351beb71c7c44d8ce68049a101b443cc + +A = -9a4e84a13e7f72d5cdb49a2c0d1b3945887ad4c6bbbb6a43cd706b78b3d4a1de7b9ff563c3016d4539d1a74af1cb5243972fa9402ef4e4f9ab554e4eabb626258cae8d21b928808d0ec8ba3cfead0dee6b646b8e4761ba +B = d286af35169dab0767bd2fd0f20a237e36af16279ac6406c6be3c854d48650e82381eae198f7a8ab8b2e849e5c17bc6d873ec92da385b3c0001403a80103838cbeac51fa7b4cf8518274c99e71949f8756a7fe37e13aa4 +GCD = 1ed4b6bf7c29917b45a366fb793d183a6137da4b073f5c8e5a5d36110b3a019e283a5c12bcdd192207db9cb6 + +A = 2d34eb938434803d004893f7d8f97fa63f5505fe34a4468a71d0f8f88e840da48e5592ed10f9a85c7d20faa3f1e9c638292949f4a1f3e912703054c392a52f63f270738c93369fc66843e970965583fa03f85253af6dc86 +B = 3fdbbbdec30a0479b799de6673afa51d5a8192d5196851dc05c0a0374e357be0ad021db135af27d19d10dc727e4a028fdcede48605316768666a1bcc2f2e49341f5cc37ed90e13b05fe40c991a2eac996cf4110ceb73d33 +GCD = 2a9a8bfb81c34433756dab82d6c6963d9a5cf8bdb8af1c550eaf507fd5bf62c07006719eee9d655a4df49cd9 + +A = 7f71b9df25a07af8fe3111718d4a793c8febebdcff4e6e2061ca6d832f9327fe4cea56bf7cfbebe21c3015eac801054a439eb0b48eb872819ddbca284e67bfe84108812a32e730a4060722f3a0e645619d1890333000c04 +B = 1573a1e80fd037a90033c15e4ff2c48d4209b2959325245f9d18130f3cc68750a1611b326a0f5521f3afa791ae01f109036e1b4c36b269f2d7a2d939bd9f38b53ffb0e9ff5f1fde1810965742869c35fa634ec75724bf258 +GCD = 683b82f8bced2a7bfa3c7e0fcbce2a865c177ddefc11f65d2b3d7cba13198016eb86e46b4cc0580009b17f3c + +A = 28a39945ca08bdb6614064cce1b8bf688e87da127c186ee7ecd2d171f39595c746c6b59dd9cab8c666c68a4d042164fece4819d815355e6539ea4814ef9b7d59e2c78fbc5b17975c58cd6c8ca93b7d9921798583c73d4d86 +B = -48503c41963820fefb00b166bd05aae1e280b612707f1984d33312b644635de00213a631b70f48fa790757d44dbd04921007e5cb33f1938700c1c156e7ff71a171ae3ff288a5ac19303a457679d49d7328c92ed95d377944 +GCD = 7475b638e1797d8b274fe02223ea4c6e9bfe6a82a7bbd39d022bf70c62d25d5886349ba733741d75e07a1a8b2 + +A = 2013deb59bcabb803bf40ae891eb9c5dbe91732c76485b94d407d5df7abbc81981dc5cbe41e818a78725b103ec9a8f0ff5d42b54ddd3fc24d089a2b56fadad2a46d7e32838b7491779ac47451b3a18d08e9f8ca357e90856 +B = -52583cbc2803db21d0f0bfa3615383163e6735d101ec563a7283af6b44d53ef09dbb1c42c5757e3f87171cc639d69ae2d044731c0b0ae0eaed9eb3862e90273ca2a29f56f2bc7b5a82c6f60e6167fc71fed29236d7ccbd2 +GCD = 1dd7211f6a23ebd4475b1a7be1dd527f78fde2321e02193b19622b608449cb7a082f278c04484da08f7af74b6 + +A = -4964c43b1fe8d88c7eee4201cae0318ececfaa7023a1b0ce3092e6eda98b48905d31d9f9b56a1fb1d274cd1e6e32db82bfdd62d0d7aa45b115070a10de2dce0695e8d011accedd05a3cc33d08a2ed4479218ef9cd931b67 +B = -315b5d4d8f2b4a6496be547ddea160fa0ac8ec9a7169b86d6eebf6bafed78ba14920b324477c714e20bfb4bea0c1e1f696a51afa67268130d402879ebf79cde42ff6de511c7d16beacfdb6de2efbb8aaf2ed14bca8f61ae54 +GCD = 349c9c6c33221af97e24d4c6311cd5a2be1d08822def04b01b2263fe7622112f1f3b8aa2732548cc5f8bb3a9f + +A = 84ec2b3e4ddcd5b98cfce99cb7f8b8edbc1b6aa188bccbff82f4cfe3b4271150472bc96b8223269691e51d77e812957c9ca38661f8e30690bbf377cd4e4afe496b58982889859887a64def7e18e11b1ffa9d971d43953bed7 +B = 63b91f5fe04342ddc46cba2e29da50e839fe08453a33a0563bd8ed2ac745035a9366f965b8f36c6dd96338f53058faa5d88f79e48c518e9c0c3daa545a35a41cd87410bd9399741469cd1903d744ed39de9c05d39a0d32bd4 +GCD = 42776770d683835e30e77d3878bbe32124104a354c69b08d64a70e360c992729120d29ac7824b129d9beaae03 + +A = 26d518965fa9c84e17a0ebcedcdf023c53959117e9e586ed76a3ce7188ed83625fa87f97a0e9927678a3cb02334a23f7bf2b0a34fd079d0e606f918d004bf68ffa6884c69ceef98ae73fed4aeb7f3c840cde199d7cf64bf252 +B = 2176833c6789541d22b3acfca832a67817784b2abb9506f040f4a4fabd4858f00abd6ef1e92706c29a005cc272c2075bcdf310edbc3c01de1103b79b09d4d4f12bf6b969834602300caf903cfde16ac7c5cf449452c4283f79 +GCD = 9a1f9f32707f8675732502401caa5dfc9ee2dc287d5200bfb67db087409f7aeee8bf7c0304f41b544dee12015 + +A = 886d4d5c35d30068625ea91efdb7cc9b038d854f390b340235e80b0b35f0708068eb0c3c6131b05e9559bf676dcaddeae8749cfb22c327bc583d40593c78703bd1ba03ae2712c037c3bead163e12b704361792bbcf9c1a474 +B = 10282958d59d1efe5eb83feec1131ed0eded9ad3c2ab1cf49984b602c5638befb07063dbb79738ab5a795b46a351d2b2683da0a2b5cab99447e37f60670d85030758508d3bc3c77f26abd25202fc6bd966d27b6738f6a016fb5 +GCD = 1221762eca77809976eea5d077facef333256d774b7a09f23513637ea21ecfbe7deefd08e957e9907ecddacf4b + +A = -1f4a3f71cba63fe3820bdbc7bbdff8b162e3de997e90ad939a1540f113d5b1b10d76b356c6d2d626d019eecdd5815bec2005db24d8ee7c3baaff0e344a7ce9c22a207953a67f383b4cdeb2fb7c3e61a438d761e8a8f43d1e48e +B = -455a937aceb14c0b096d6c30c3432a28959a132f8337f288516557fd07e52d8d962046636b69015714c73518f593b6912d0188baf570a237e03c21f00b2653edc4ae3f884d3f954123cb34f17ad9116dda176a7312560d6ab21 +GCD = 2c6dca939e19f8420d9eeed95dcd81f57d0781bf48f5f4d59b84a218e5e78f037fa60c2d9dd5af709358fec2b7 + +A = -2a170c2d3d0fdf6f0f661f35c24f4f69acbef0282cb56c3db9c386b36a4d537e1f7bdf560d27104504d3b0d5cad1d1872b4d97b8fab354fc2553dadc6e08b3dd487f172d41e9c23f2d814443de220ffe4db8cc5f93a3f14be48 +B = -ff06d01a83752146521f2079e17c79140b072be9c3d3df0768ea789b21d0d475de40ba426a4a9088c853b728625b5cdce2359f5a6ac1589763ad80a9a071b1c544ef9ce846dafebfbe3b64c85d9e3c5d96de1d8db2563c47fe2 +GCD = 44169f4c6e34f7b29d4a9f9a0f435c1c6af2cdf7302245a29d72be01d081348c8d8644a274be113fa2730e27fa + +A = 155f7f4d80e7b032db3ef5fc181b93ae5cd6cb905775cdc2f80c1f7c9b32f662599124e20ac8a13034e76da268d3f13a255ca7f3607c7cab9dcdab3abac5fe28f8a4c37338fe221fa33faf62f75919667255b033f3836e5b3566 +B = -4664952dbf5f3160aabea3e59d9520ff4225de7ff7ff00962fdd7c6bb472d3412012c4dc977f697c64e51cf1f23d9674e33309266ca5c40b5acda3a36e5e70b7fb6b6f3c6b7a642eeca031a9e871bf382d746bd1f30a8e694a68 +GCD = 16844896b753ec5fc14bde8316e9e3eeec0b77ad773f0a5f00dab25751d9fbf2c9a05529781f85ef3bf20318032 + +A = -b44b0dfb392bd8531489b6518f6ab1859fd8dc1cd2b9c6f324b5d09b6b393a910a0e761cb63d4fed114876dcde32e1e9eb51813f5cc3bd6e9a95481ca5df7d60a90b36ae9f0132cf4ac6a8c6cd8c06c7ed9610bc8d18447be56 +B = -42a0ec1e35639241b56ce518462366497cfeb2d1a484a950f9009b098fa137e46e8447a78b26881f7dd750dc286e09900c58f3cd76099e9518eaca2d947b312bb2bd250a2126463fdd9b9f2a495be66f25c99b97a1808ca23148 +GCD = 4000283af135a1ad1333d52e2f863dc8cc0247452c461c6c5755eaf93d4b4a12cdebab8976277261e516eeddb3a + +A = -3e9cd5ed9f5f5769d0cd65a3f1c01cb0b306ca607865ab362f6ce3cf05d460d320c3e9cbc7ca1fcd5807c98cfd655632944f01c78a9a29f75e9df0b772e4f1c712c572c89e681de93579ee5fd581e311df5ac6506fca3cb021110 +B = 2b7d630e5ef48c414eac856165c1226efe6d6a81be6969828e3e44f4f0e9377cd7acb722b3d71d7130ef9308bd73f592d5e7f4db445d497da50fb0500e3e270348921ed165bc256044b0ff95ba4aab783afbbda491cac1939c0c0 +GCD = 18524fec60bad39231e2e5511832c3d1fc9806e03389ef6c21a3462d022158b237e1f8de5d1d82f1d65af832a3d0 + +A = -17f7c0f63c5f37371e0b4d23bb67e968a55c65daaece334708b401267ec4ef57c0d4d694ae177105f7484172071232dbca01f18c4c905b4f16a2e5e1deea79f57326f3f39b123ca06ec936c22f1d9f190f82a3de0ea509c5e5a10f +B = 12b8f917f1d967cb5aa9e8728e17ca088a33e6868354352ab2c6ac0a7f05d3657e134bc304deb3ab2fe2151a5cccd61a8c9d315b6da7ff142c268fdaab4fad5c91dfb67db6b1514c4b97b1a1fe82fce4d7fa1b7d630d4e2497a0fb +GCD = 60adea3c9e15f93f75231a866f4114020c8f961f87accf77f540b69b886c3f51f3f001ecd243081e7938a058b31 + +A = -4c2b0d32e1c36e6296aa8dbf925e80f989a3974b46ed648bec4fabcf494c14985e4edc0f0a2fb014a2d7e48e1587ecc51ed09b4d6c98a95385b94d8a4051e5adbff87dd9e55c663c0d4a0dce0c29db83516cf6f5b20dd483a44606 +B = -4f9db15e7e8f83254b3b16ef64f49525ebf9989b769504c3bc77b6f019435e387a6685dd4823f27ae486dbff3396f4ef35d8c9debf442d53f6d0ed6670e4b199ce97b8474a88fb878021876dc89beb3d4e101f0353024b89da2724 +GCD = 1b950d9d476d485d68bc2efb1859af9d3b8bd5a18b8bfd7da170a0b6400a872394e25777f338a6bf7bd1cce7659a + +A = -13ca7f56583fcd0f45f1d1b841c37c414dcae69f8614bbc637ac4ad2b4501531f436961b7e880790ea4bb7f331ad2db31e2524793fac7fbbc9446df1e3cee4d6c6364486afb88be29da297f969709750ba88c3c40ac3c68edbe81ae +B = -12bb7fa8d6daf398f7fd13ab9895e94aa3e8b91a81f897cab24b6aa0553cf2db296fa3bd070fbccbee9916199398b7d4832deb10912498ef4b82bbd9ecd5cf89830990915091ddecfe9de6d769d3b6391293d40690917f880b74e9c +GCD = 2ab6b90336298392e19bb820144c441f4b7f2feb6dde96a70e5e7e87ad3f4d9dd1306e35184d2e125174fa601212 + +A = 1be5400b05c3b6c129bc1ff6554913323fe74cba06107c289618cbc07e0984dbd3ede9b4e43fbf00bb0246a9ae480fe46cbb0a71aaceec8faf375391d86628fbc33ab99ff36b5a6dc0df6aa5eda6325a8f52c42bd3aa52373cdd5f4 +B = 7086d1a975093b0ab5a64e9ec40d2f76e29ea125a1ae48c600ce178bc35701843e03de36a9395b2779fe57fb85a543e970edd58cadf4f6e92c9033bca9dac06d64d62f3471027e65b05b1c119649334877ba9fc4e8ea765a3eb542 +GCD = 37fcec1df7348c917c6beea434bcd45b2a1ce061c6c99aef39b5bb430981ceb91dfe0608fe35f2cc2b25c3370b22 + +A = f8f353b051b550ecec2c0fdca09ffda96dc67b9c8188828d5d950889176eede1caf23bb9279124ed65faa874083a989331d4609385a76094f81e2fe0c3e9633f7e43d7da30f5b566a153c6edf24718903c19348424e8c426247de12 +B = -359189b51aab04c7511d9208656692959f1f995baa51ab1ebcd1468bb50f20df29a9cd7360feb134d157054fca271814a89e79d76166a4a84870c150360005766dc619ea33332b850801a94177c035b9cd989206700231da3c1859c +GCD = b30520c708db9fe43a9c520140ae61ca8dc6b586333f44e4004eef28ac51d7aa93415b9136ce194b75e4bbe5d7aa + +A = a71d0f5f83bcae29b0949ac67671783383dd032ceeb501eba447b6a1382a13e1741e5117c7de63c66b132b035d82df3ed9f03a418feeb8fe073343690b4ba655c6fa8ec5611dca510c056554327dc1307456503ec1d33bdd02a5b42 +B = -6244dd7b23f1e33c407c89c39f0af31e8577a5ad50ac44735521073789faa780c7fb1e644890556d118170bdb463a4c739154fc43647b693a96ed4231f57067b611010fc6a028b9f88704a167957622c6a5204166709adb1517f59c3 +GCD = e42f2bda40c5b833e518360460382598ba653abd85bd2cebb08cbd0f8d9690a5f403bcc3ceba6255e846f735b4cf + +A = 1062ca1b121f45fb4ea09ec5062d30174b043fa14b04ead0dc346bd81e60eae87c6a4a416f16aedb13845a91db112fa7351b29f1a979e423e79cf3fa9eeee32baf19b73714242f84fed3dbfe2708d9b2c876368fa20f09f257ebf62f6 +B = ecd73a16ae56f347e865287412c1722c6bf1d691ab26c7ac73c60fd483817015e325b5c18d1f370ef635ae39b0f504c5172d7bc61628fecb14726b4af5da6de0385cd9a53697382b786f08c51e1e3f161053750dda0338184a24926f +GCD = 1107cf4f5018fed248083ec145d6959d2af23e77d0fd4a1d335eafd2452ef9f2e11da5dae2e4cfb5cba7c2edd8ad3 + +A = 28e9c26e11c84f19e26c9f72cc40b86b4d612bb5bbc8677de54d48d7bc35535c3ee84a8369acbcfe641f85aabf8a539c6a0321cdaf2d104871a9a03e02cc5ac0c72c3ac5e22251ed33d1f76937a6540d3340f9787a1a44ce3f414f66b +B = -30b28f961c2e96c7547973a278d06fce9286e0179a8e047193a9214d3ba27028a483a398698d40edc24bb75cd1bdefc1e57a0e7e15a34429b85d3914085c83d5b9dfa480840a50ac89977aa93c809d0bd8913a2f2b083172f978d9955 +GCD = a8cb1d6827f9bc60d2e7b0532a430bf25d809ee1931aa6e767cd1b5a8056254dbcb54c8f29bb840356b5330576cf1 + +A = -bec4af5bff53a35e8276575aa346b3cd54344fc4e141924c0fcc3714d6dfef3766b39ebfc2327e55c47648d2e335aebd02ae8cefe3c701bb55467530a99abafaf3a7cbc2ff3e5e2693553a01a3bfb3030de9994178f2191d9f26a8a14 +B = 3b1fc9bf2c4faa4573df2ea913e2277dd2101436e1a7a74621aabed4c87a91456c9e52b10af2617f1f68b2ae3ede795c07af61ae2c8241ba7d75e01560bd691d24af95ad1fec89e80fd81abb938b150cfece785d6f76cbd9249f8bd50 +GCD = 1e78ddad371ab2e05f81f5d98ff197d7f886c0371b0d113ccb73abe2c9b18dd3a08f60134de5a638b08791803132cc + +A = -187eb572a45622faf1906e52bc66d24451ed8c16132bd470c0527ac5c26ef3e50241fe2e0b8c162cf187e3351e6ac562e1ae2dd0a4bceaa2ce6dc58b11e601b91d33a098fad4a6b96dc7be83dbc90b60a42cf853f4fb0f500af2efe4d2 +B = -2de57c16b9d8c46bade89d1730a1e332d731c47280a1bc219668f1579dbb07bf0cde72d559da4dcc28c24177740fbc21efa6703c9e277a4fe818f39eaac75c2450724f7db9930b1d460a7f15fcdc32b1ba6f692277d3305cf3a07e663f +GCD = 86172e2a3a6a3c5bcfdaae14f224ef060f19d9f4b2d51167a1e8c23bfeb3cacbff55364fc769ef4cfe64b27b2bc57 + +A = -4b9a74706f873c0e7dc05d45f1e8f7dafa27e121ff954bb9aaf104ed2b4b673765f8008ede0d509e4a337bd6cfe41d8c88d891f608b5441bf9f0b19af45dfe7a6a7030e8a17c24d16fa58dca6567f79ec34b8a7c25f3e66b723143cc0 +B = 43ac404d0f16e69edea0d924746771f35da74ddc85a9cbbb770662753eac2c11555037edce8e510623ae561a638912ce0d7d968a8f6938ee20e730b156311cb5f906d0f2cd080815c15fe6789b0bbee3db720418f2e85c2ca373806a9 +GCD = 1efdf68ee94dff7ece65330df32eea3a737a724299519277ab2b73f3fed7200fe8705d29ddece03f0064037020fa7f + +A = bc6595be248d4ed48eb911e7d6eae643f13a076c34aecd35ab4b19f17401a117bdce2a4f77b5a4b70f9d8fc4e608835d8d82ad5cad6921d01a3f9f618a8c84105f46f2f344ab4dac2a38deef97dadae519c1e3202de9100dee6a153f8e +B = 205615896afe769ba625d60c5a7de672d00776c685f7d284f5d3c828d231017f38fdc72d7492cfbfb8022b07251849b4320c3814850368a9a1e57d8ea6751cc08db1c8724fdb3d325e3d4179ec49767f36e8aefae4a0db43c551a76ea52 +GCD = 69a779bec79fc59f00a03703bcdef4a9ec6bf77846d03530cf786eb5d6ac78b67d99600e8b61ec2d3d9c65551699ae + +A = f07939abace11b47c69e9fa21dd4b024a6299d6d960e5b833a3dc61f1f8c6020ec9c091043162c38575002f4fe44b9215ed98d67bf5e94552de076b7ae28a00812b1f3c0c4dde10c25a0c7f3c4ee1cd12838e454641457d07122fd49a97 +B = -56df35868ee92fd91fa70a89efee7ef71855488f4d6e78b6d298be2572f5a9747213216a41a7cecf061699c6ed106aa713188115fb0b316d91e147dd4cc1da523e1730c49eee73926a8f9f417be8cafffcd7db50f8a01e09a6dd0fdf0dd +GCD = 4fd633cbc3e9d190a659c7041e858627765ac3fc9b289afea7a7f0d3d5e0a64a1039e24105e8f385692db1880c920d + +A = -48c6a705b62ad1fde4bc878db156bb933698a60271f685cf8aebc0758251294a735e18500a125222a4c94bdb29d9ecbfc7c9035cabaeca2021cefb67e8116574105309467475acefe2ca0907dc74c9638383cfdba9a96cfadadbeb75a86c +B = -2e53ec4fdbf83e5a143950c07006ac6fb152f7d99ccaa884ba3e1397f7cfa346d22c8e09964fde376ed601c0b8845b338c595fbf08fe9d082ec409f43ea15d48a35a347959c30e7f08017f3ddab3a581953b2911927f5f2897fe8cc5f62c +GCD = a959e0499771c520193a6ac4693ed620a1ba165efa7ba4b29b7e5f7818c2f4abc0ed1dbf04fa9c4463ab73af6e2cd4 + +A = c2f608d99d0e913b61cc29633b0a9a65276e9d4fbb56e7e1cda792765a8d85464a051c176505cfcfdec9015860b0a0768a6d2f4ffeab5ad0cfad0a071851fa0099ad2c9dec0d52295ec4bff716575edc970f2fc10ce665b2550b9107b840 +B = 1aef2f8a8ed8954350d54082697191f638ab098a18fc5aa135183b75430c94184072c1220484db75c8215c7ed0706867f0a00fb1e2238aaa0abcda47df1f04c1ded288ce15a09e4ab8f734bb832b16b1c3ffeda26a5b6c86fa069d8936000 +GCD = 199d02e025adcc86b5f7ea830740859380c491850304c066fb9ace057b59d3a01d41af7e84d503633f66e6e36116d040 + +A = -70429b7d2ea5eeca53292ffa80d74d73dc08ce01c1e1369fdd683f14ee1f507f6f6c2b7280e85fd5e5d84cf50a5fea1de52c7bc95fce48185a47d43255d94e519e8736f96b5563c976478f1894e690f43551ecb477bfe6ccd0e5ad9977a0 +B = 14904d2a8392a13efe95f3620be8bae324f485f29806e605b4a22d3995a826593af291b34909fa50a227635948d319f26ac21ad1c81a30fe880a6c9e60ecae35e323e48a18518522922f881cb7417777020753d07d6d60116ba3f7a561000 +GCD = 2267912b74db239e19d88ff4ca8eeb73b860e5cbb2631c1df16c3d6ff12b1d6f55c2bd693bedfb8f4ad36b324adbea0 + +A = 7776100db14f0cf58ce1afb8657b72d8f0752db5cc04f50faf2ebf110d93c5744a24044aa8dbc32a0b83a6e90539be8f2a6a7cad132d5033dfdb054d3f7154b5f6050e6673ae99b0f1d801b9f75ba2189402d84b3c11b0d112ec2d667b8c0 +B = 704f03362ac1fe7ef4477f7ad6005f6b718dae79a386508164bf52d47036fbbad0efecefc4328aab3c306ff9bfb44210f246e084eef76dee97b7027379e771e4fb861fb838eacd2c23a2705b877e337defa5d57492a8ab2590ee98b3c6800 +GCD = 4cb8921bb1ed9f93e7d60268cdb1f6bcad4dc4930bbc78867119313164d35a42f8ef169d571402758494240f08a6c40 + +A = 2f490a067678ba320d0c3763601f86df9cc3cd54cb3c80f1cee219a32a9987ad930a4283ff03d4171c89acfb6b90b8c70cb82013181779e631f703d75f822670f1b74fc114721334adecaa06d9453773273dd162403f1ae4aa2cbe93e65c51 +B = -21ab4336c50a8fe382ca29993192af58491a81120b8ae986c38e0454e55c6ea30d02135ff4d82319a7dbb9b2e9d113fc0e7e3449c9920f6544b35ce52f3216625d4090954c30703df50fb38e0e75cb4ecd5ef2e17ced3c27e4e68271b8c73b +GCD = 9cfbdd01f4970c4ba2590e78e2161e64e0ff7947ca86c0b897d92ff8f6b4de5570df504bda6cfa506df523eb66be3f7 + +A = -611c3b6ba26e07b3d37bf994a94ab0abc69a15c9f1b649bb8ed5a4ba4a6c6c686ec72e5664f503d6fe20b10539c8ace71e63904053909ebe045ec84ba639b2228965127ca022a5c6c75815433cb05c2a0e29f05eda3cbc81cdb59fe09fb215 +B = 10fb4231a147ab1bc2a5e82e097b5c62b599420dd1e803e9c09c284e1cb3df653904e1c791a0ec19c6aee376f3297fb6e53e02c0ff85ebd0c63962dd60ed8abae21ab02d8357279dfc7968a99939f12e15bf558ec41a9e4cd12650cebb9b124 +GCD = 18c888131cb1ffc06fe9b0e805215c8f30c72135342102493e8242096698623ea5a5569eea2565b87d33c3b5270fd7bf + +A = 65b9557e5e30d73f22b7974963507687bba687e1c3d5f044e2c41376b3c5999a93262822a052d093c680cdc2a55367e17b40030f54ab63f101dd5a45797c4e10d7277f3afe0363356c30046fb1d6ffe68b52e160474b1b7a9d19d354fd1ffec +B = 5b6930e5790e299e721353aed2d7dde3d729851568ce017504e162b4955cb7e0072bbc68d83e79f136120a0598fc3394abd7518a340f03697bb0498d047bbc4361f37928ec294033789c31859ec7fb15c0dff482c3097cec2ceaf883da13970 +GCD = eaee4f9859aca2f53925dc6b1212591de71a573b07fb4b92165b803c173cb9b0577776b24794054c13dd327949bdb2bc + +A = -af52d8577227f64c4dd76c35ad05c2b6828c59a122794387c20dc9216f6fe5ea9cf9e7fc4ca8e47e2be52e8e8e245b3998f7e03f22cc6267270d386bf4823c8c13468bbcb0ddad017ea993368bde3988d7ad2f5de1590d9870f481b13673cc +B = 9d2d9651b7847f58a7693d41224c6d8360d28e115f8e9ce8f3db541f460f97acf9e1f0f2e72e5956e8b3474e380ee19e58dc528e105547b7edd53fd7ca23992d3085ee1e232ae12570453ef3f0741ba3838a4d0fb5d5a8c249b8de8601c0be6 +GCD = 7817883ee1cde88f0eeb1dd45de78eaace94a27b51d82889e6ada013a5620b2d3a8cd864e34531cb295a3b3fb8791a1e + +A = -2d1639db545b9ed6cce5ac24bd9acac4e3eb8639d6a98cf7a6010dd760caafee22f45f76fafcd33ab906e10f10eea3182279d6219b47768407283fb881381b669e4937caea374d5fed66d22ed91024b4cf57907db816566154cbb8e73190d542 +B = -32e17c2e843f232a911e3a40ec94e5ee3a0af39f179a15c1ab05924a62ae4a4986e0bdee7c80782fa61f8bcdf34f43c69f6c78d94b59200129e1fda6b5758e5a43a3ce6ad1f36f2bfbce2ece7d4f6d1ced2dfe0b6d09422634515fc6729b2924 +GCD = 2a9daaee9085ba42c19f6a22ccd4bbf2844dae3c189cb10abaad899083855a89fd5f03e0fc9a29c173c171ea069e52ec2 + +A = -c1c479bfb428d27fb8d6954d614d47f49527cca253427601c6155f6761051d19a1162cffe12f7ce789c142b29250f6a1adb8342d7822eefdf972385abaef7a9c902c020a311a0e3076f3c3cf9dd262af19760783cc27f61369a5032e59a3db4 +B = -14b799ce82150daf38e7287f45582aed9fcaa7fc515e9f15be128fdc55673d5b87140a21f8f4d88322a9b7a8821435c3fc0d40685b78054fc8c230f59191ab0948ee473c0be9753c7d29698b35dfef2b23def672711b5d7e786c595d9d8c0e8c0 +GCD = 30ad136811b362f9b8b222f0c548b889c6d768675161a8901591c5f7cbf4668532c92fcc827b45db804d508609ecf512c + +A = -9dfe5e74cdd9b5ec226c517dc4d2fdb1f1ca900a6ee86a9b391e45bb9bd6dd0811155ae6287b317177eb3a38eae68d135950cff06c27673778de136c5f831dea56ed8d8894017215de43efd5b6b5e42bb05e30bc4e46e6d647f7fa2ecda800c0 +B = 1d5e6872abb66331000851b33c2763476d8be244ac2e0a05c639260845154cb56a03ca1cd63829eea2101e1070a9f53b28429d715d62c85918b628264aae7c9afa920883708c14fca8e323a7465ebfaa0d0aa2c3fbe542c9cfa6f1a07ebd33280 +GCD = 4d2957af237b577df31fd8d59756896856254ec1f5d1feb7422e5a8fd95dfb4a9211a21dbe2e605e291087e4d1cb3ffc0 + +A = 2336afdde64618b3aa7f34c6f31542762d3c55e8a7dad8b5705390ba7ef61619930fbfc4563bc9b7b6ddc55fdd4ff686a249114a86e1893bb4de0d7dfe2063e99bb806cc948180b8d798ca52b305fb6b71371857d8975d8a45065e25431be4114 +B = 7bb159b33a68c83905028224a106f46622e7256b38591e3ee4201b171f1a945f9ec0e0fb739544093527fab5fd17244fe07158e348f29f9b999c428ed972ffd6569011ebc68f9007b05a677ccc00f001a0079ff3ff0b271d513071e830b59e36e +GCD = b0143de44b85277123fc1331468dcfe2117f4bc55c94a02658b12e48dfaa2710365c5bbd650630134ef1aae30553d582e + +A = 5ec49f56fe8598ae1e816972a3038e5a749370964bf2a21f0d9079863b0b5407eccbe5dce3e92b1de5f096e590edf1df89df3b5ae5b3e4c3aefc9fe9d488a406670c6a41ab764d01e3eda97036dc15287d098e1e3cb808c53d68900b3565d1a02b +B = -2794644fa7d9c5e908708cec66a4d7a091defaa12f2fa714f7a73e0c364c3e28a8df4b4376f54a8d59f69885305038be2ca13847dca01035a1a8bdb32fb71ff42a25f360bcc2a1fe59d7dbb8fd2ca28d5ea5e5fae41a96f351ae9856273744e8ff +GCD = 26196015aacadea54dd1ed0b60bc37a032aa6bf40125917ac14898aa20355b03022ce855e814c32e5178b2d561a7320771 + +A = -581b46edd0b15971e75506fb2040d96c3d396fb0bfd54a1659969495b9ce8ad68a71a98c823e587d97f5ffb4d40bdfc4c962c02af7d04c6912ac8021631d82a0c3e3aca948152c43493fcf2c5fb2caace9f8168f3e6fa8c277794fc2e225d9eed5 +B = -115906ecc3f3058f9061b4a74a65b7720adef86a906f0944eeb042916e8ed6b77e1e98a0fccce8768f9c0c2b34268b61a0a0d7f9b9035c4248136310b9ae246f1bb5dc1caaf568174a5b8744111b793625a02a02229049da46d6fed5b70a9c9bbf0 +GCD = 1b7b7f51e9e1787d361394ac21dc5ea9f8b72efa0a534cd93efc7ff880385c3c25f6e8ddb6b41799e848c864a44fda1807 + +A = -660a270a9cca98128692b269c097542a92a106c75e7775f04224fc13b51e4628d75a00257e9dd5bc4342bfc3a4b781fc70db8553c0965dfaa91e0418e6744d515c0c6f35f09365b6826c9f71beeca315de79aa983153778f70b4e1db4397b9c14d6 +B = 56bc03117abb87d9c4a85098651fd1a3f03729fd659c813c4f7ecb210b937a2b9da3c7a6427748aabae02ea838cd09a2cf8219188822dee3742ae8d5c93ec00465c9f641a8933487d21dd3c4bde44551df130c0cc0a7bb7b2ba5702571d98cf5f29 +GCD = 10af9a9df8bba7e5ed132105c126a9d650b4735839da049bfa036e16df3677a19482daca70cac49d776a7e626b3a917612f + +A = -f5069680be2bc9529260c9d279116d273a97fdac960381d17d7bcfe16ad2afc06f88f625d1a31a58813a14857e74f006c46020c0da12b0d0d225158d15a49c6cf41f5b5890aa861bf4d44c0ce75ea1343e0f29866e7b74b663e34097ccf68395eec +B = 962529257f52161d87ce6d6b0076d3414b660b4234434f8886bf5b044d3b6706207226c0e9f8ff6ec0738d870ead355b00e855ff07baa3bec793b79af8a530b172b4b6e97411a885f2d8ab859dded8b9ea9abc50440f5e7145df4e1e00af72fbc8 +GCD = 4fc34029a1d7df4aea092502b3b4813822efaf2c4c91f9ab716067edfc9e7a200ef307f0942947b8dfe2efb9b0a195557c + +A = 4f5d40c84dc43791f53399250623661528787a609c6b3fb0a1ca8db344446d27071b768191e72ddaa74c049f3b32fbe42e9790887902fe3d93a3eaf2c1d9db2a64090322faad9247922db0e96ef16c99c5a8ce273fb1d13b019c3c5134ffd25b6701 +B = -34d12d06274ed528785d60e56e1c35b27478e907fea092ab4b5bd539202771ade58b23f08507dd54365a3f1be450d5299664915a3191209968f8b87cc048578fce74c6ef755d11f39b90922dde5ae8d0b5fa973a24c7950bfac57ee88b7dffc0a7ef +GCD = a944496417dfb7bdca1384f396bae1d188e7313982aaf4d8d7ddd8c1628b237d0434342a35876a965e95f9ed12de149915 + +A = -d6388ed41cf345a5d4a99275492a6a9210c120f102ef5f07e1ad5da418d23d81ea7d4bffabf279b8644962b620fb85600c6aa10e70b91ad3719131299c53bdbdd6aa90d755c4a014abcbf3f01e21d550428d3dad2f6bde1bd3d4f9b00f5b127ba801 +B = 2ae4d11a437dec66ca7a5379185057dd30a38b157f0782b3be73a2824f66297ae22811c6b8d1716bdf2adad3e2de46690abebe39504be0281f5f36de29bd36166073618027e6ec8576e76654b58f4ad36fd93e2f95601c87af454a1f37ef9eeaf32b +GCD = 12c5077cdd9cf58d1e906ed7d6147b671ed006703bb615c93231dd045366939429ccdee90f45929c5a52d87de6cd9ef9539 + +A = 2e20018e6f49caeca16b018b47accabde275e7e0e6ccf0910382c678a80af882dc4825d59237740223943c4067fa02f587beff484782481f3d10ab0fa907d8fd2d233bb0ce16057db425593f6c52a9b4a0a2a8974b36e89eb0cc22f6e72917422a841 +B = 4948ae142d762489072bd80ffc647fd390b52c85563294985f7a6f1397f3646bbb53a2d6ffe21ae9a9ec12d47b35732db85bcaaf979cca2d08b2bc9d74996633d015059b208567bbea4fefbc5fc566ab13288c01b47167bf43b943daf9edcd43c2a80 +GCD = 2717fc7e8faaf45f7bc651fc00823c6f2410505713a5722bc170814d24ef8a3682e5a2ebd2afbaaea0c84bc5486c0742b11 + +A = -327d55aea1a587e4ef04b8c0157245f845845c4ad0b532493231149eb243c608bd8bee05c743b14a044c7c55514c5d2a5288bf96a574c7a2686460caf1f97a510fedbbad526d4c478ef07e478e54b4ec6ff2ad5bd05c187434aa41a5847c6a9ea62d1 +B = 95960fd2cd83aa48f7b294d2f029e1c2f4c915d91a99d4ec332b453bd9f7fccdb2d46955510afcc9ee497bb8560d7bd8286d76a5dcd69b357e373a960e54522fa9e576254a728511843fe372ec4961367684a147e9ce193a19d845b311e65d6daef2 +GCD = 45e4931dfc4254446bf86dcb3d687f2eb26e35a01be02e80d54106555e8601e4e2136eab350f4e9c3cb904c97c4f66aa93b + +A = 2b97c3baef4aa2dda514142e8139747da67125eab065bf463a35817d6e2e6f7fb947f1c845238e041727802460ec5414a2a7b658b051e366b81a53f7e860ec0fd0e50ff32f6fe1f22cf9dd59fd966a23b23e688e1cdd0558babd9d5e3c30e67db53f40 +B = -3cfd9e9da52a720e2cea1a821e3710157ee6b1c3b2b75871ad63b3d6d1d1897a46c2358c6a256a423afe4c52ae3c6325f0d1d921e4c8d43312e18666c3d430e81d3814f0ec1cb56e42844fe5f6e4e64df5ac54453ddfd327662babbb79df125788b19c +GCD = 144b29fa84dcfe98cd20ca9021a7b551beeccaf9cb6188d193217e5b37b27fc16c27028fb42537e61f64e99435ffa548fdd4 + +A = 1051766a66052f6b8dc88d645b5ca03a98430377b4b72ab65591d751c5757a9b91b9dbdb37094ad2c19550d6cf9af5cd3833d5f69d2448b6f3b3ababe94c19f6a4a57c01bd0e1acae3b32f44afd5e7d29985d624762381112ba8998eb4774de610aa160 +B = d2ecf0aa93e708ac853c8101ee8f0f590971d5c53fe7854b0d443c7f1947c655266766a3b8d6c17f196885b4788431b3df6f0cf76c5ddae4524fc25a411a18ae725054fcd73b634c5487b97eda9e45204c57ddf3ef4e783e888adbeb162e27a2f4b080 +GCD = 3ad165ea0ebe4c834675b9c7c33b6dad0eb27d625097ae7fcaec60d752aa06fe7e9be1dc0acb11d0106a424b150b5f4320e0 + +A = -154f2f847b731646cec8a03643253b8d6c2c6c3225f81ae1b32b6e5be9888a6db719b4d9ad44c0d5b99781510be262052c6187d48569bdbe5ab9c3910904f44f30f8e43839340fec28c51430bfb03d6e6a9873a8a9189fc84ea4aa9c751b33be05e3fa2 +B = -d11e4a70342a88d4c41882bb2d0bb5cc311be50025f6005a44425a1a51e9c1a99615c4dd7e50507e32fc3ca0ab27351dcf9f19c9ee6e21c44784711c84d6b62867e613bd791d8bb6153ab54e38889e0d03a47333eafb43b1509add41ceb22d088af660 +GCD = 31ef02883c4513704a30e2f6183be889f67a80ce84a94cf1158a2a4dbe9bc270e8ac21cf1dba4d494fb99fb360c1b37a2e86 + +A = 95637d7294f9bc9217d2bedd34d088df3ce5c6d55e84bd0ebf6a86200b2837be8fdb686b3f5c35c717574d81d2aa2f66ea3003aa735661f5143968c2bea8f130202783662952fdc676ecf5414653f6dadca22bdf681daccfb24688c533b49f1855c23fc +B = -b41a788caf2de25607529e4981ee9c111acb0f305b27319cfd58f9543fee730217e19123847fcba0b4e34bf48c888e3a907866c66066907d127005e4151d12b7add77852a9d787904a88c4b2f188e5c40620e9e0a866f3bafb61dee67a431e4e69ee402 +GCD = 72024a5650fd974263a5de8d42101c0c0770ebed51f7ec4b452065e023a3cffdb86acd15f13ca55e789204abe44f6d544156 + +A = 2605d50f90ffc219efca5a0b3eae84c3977f8b0c7c3b90f7eb8f27b3d2de3b6387b57abd3efd699ca6776c254806e5a2be5f1f260a10e4e5fe87025bc6fc3f72044fd04e61bcc61ee85157b598fa1b2abb896b82481739b91bac39dcc4345ee92e55ef24 +B = 3cd19af2cf7667ca153ee67e601fab1d660c92756dac7c51b3cbc3e49ee1ce640da8722e0687e9cda38a4bdaaa74583c7bf308279d0329b5ae0d182170958f8aaa73439f5d9c8a7459d3fc75874fe9f084884a66548c7520cafccc9bfdd367b266559584 +GCD = 876fce900ea175fb034d92a1c883370aa4ca3df3ecd133fee3ccdf2e7f5b35ab0754cdce0917110600146639c1a9f862bb64 + +A = f64b7603fd1207e5c325a6728f0a08c32036457ed9b2d70022ddabb38f6fd5ff226cc788c1daacdd1567917058b510e9b4dfce12d842cb5e32209bffe7cd28a6b145d4e29f834f18eaf6d77dc2e7504affd6f56a0b8946cccb274d9d194d226041e9310a +B = 1154be1e8d333fbc45ccefafa94b98e0dff121851af3dd0a8e7cbd0a7ee0d17e39fb2bdf8f9a2999df47f8cd68da787630b60cd23d24bdd4f2c7e3fe0afb61214f7b2942619d9336875a18b6ce2081bb831972f421be15a9974fde93ec347f5e6ef8df016 +GCD = 1fad0c628fdd1b9f098fe53aeb498997bc5984f7bf35ada4e890cd9309613b81c5b7afe331dd3f1e26b24c11ced34099c94de + +A = -351e40a2cdbbec70553e013e0f6f13dd24dcc19b6815329dd5ce63328f4d76809c295fb74608084fec0f66dcfcc7d82ac302764544533fcdd8659961ac5049a3ff317f3222bb46aba1391fbc7a0fc655a3bb81e16b362acdc9ddb152d0bd6babc49df93a8 +B = 5246b50e2f3c835c4b15589ffd2af75a49c6802de112b58ecb2ef6653e8107357c992e943a3f6252db147858e42d2092a9ce9c1a1dfef0782b48faec0ad7e614dfb08e42a40ac1e74ac4525eab4e918ed4c61457f7d5e2ec57abd958fc135f3ec0e6f977f +GCD = 29b7ab484cd02e2c1c3c4a495abe3b104b8bb42b1b20c3411a30c845e2a679e4749f3806f47c6dde03a0ec228d2d46cfbc0d7 + +A = 23590a5ecf117c9786a73d014ee2a31d9930968192d6367875305fa664e7fa3a23f2a720103a62356825f3ca54ee4b5ce9af3723735dbb529191e63e4ef7cd3e795a8c0f53e0ff52f0cb43d1b5f3a08bf951cae5f9c04b793b9d37f3b0c07dc1aa6c0b696 +B = 8c819a7a35ee2e5d47b6fd74a5a0217203890a3415c11170488fd703977ce5d9735d46eba74e141cb2aa5bc8e2d86fcdbdf3a5b4e299203948c587d214827a7329f388a20cfb9e7361b23fe2fd2edde631158f757453b39e087f74d7d77eedcc6e41c6036 +GCD = 430bc8b6324178616c11aa7dd88b440c4820ac849071defc385f4fe41595af29985690ee81fc06e6fac4d5e96a3e56c35ad806 + +A = 52850a344bc14d18a758b47042ba3d2a8340f93612f94735cf212f4fcba92873a2f50f9a5897ed17dac3b41b584435cdfb674d8b902e46c22c361ab95c9125c3d3d2e650cf9326b92103d3fc0024de907561a0e6ecfb7cc2dcdcfe1ad4a08bb1ed9f93d07 +B = -4091831cbbfc028b8d39e56003f1128b143fbb9f662b9f21cf9cfdaaa0f237a0767df5d249b384d9cbeff6d18f6b3547275a30f95dc214d6cbd5a2845c7abec9486c47c555e06eef10db56b5f9f1fcd68bc6d34c5458630fa94aa34417de5ec1872ecba18 +GCD = 92b931c239eb1afa212ce792362bd5318a5fef55543a219f9a6c7050309cbf56ffde5b0d38cb8b0bd9937ab621e617977cccd1 + +A = d7cf5ba09cb8760011b38db1fbbae5702e831643549b393fea88b0166a66b0bb648adbb605051c6dbda8965ff62da60ae2869f3d6280517c5b94cc49244a2d77c0c29c365b7543165f6774d5758aaa4b277ca810788fa00a6fa6b2b9d9f321e651bfd46040 +B = 47ca624b0e6c4e0cb1a874ff8958d07eda4318a21b2f5ba92324d86a5dd303153dcafffcd780156242b814111039ef7d5892b25650328fb305895c3c275a373b3c58eb912ee9dcdcde7e9f68110be97957ff9db4e58856ccc51701a9b7de0b7dc3f37fd910 +GCD = 113f3fe13bc4a628375be0ad05cc6d331c6fa91ae158784bb60168ea87b644c4b5996e916e3262a11e548ef86649597203ead0 + +A = -ad26371e8bb2e5ebe46e4dd365767a8e7ce09176046b2d55eef959e593b17c1540baaf036ceb644dbf377a70e7e4f95cce5fa3e65b2604b02dfc6902582d73ae0ac118708c225dea76c213d8560f9eec160e2e48b960c1b38b9f1ae1d726d8a6c20002690f +B = -146b5a80ecef3db0af23277b8498452ee778f7eab3323da323c7597030d84c0b6173a205b33ef160bb92f7dc1f5d74c502b44c21a5ce8b6564af44867521805fabc3c7a3953b85ec4cc7d4d3ae45a760929ba19a24c70762067af33159006fe16868eb76b8d +GCD = 2c3faf7a6e6911a181341b9a5da00ac41a4c12bd331081aec409f0919af60e6b4913f0157f1a7477be6fbf66165500c267c8d3 + +A = 11414e2ab4abf6e9bd46d32e1447726555ad1fa1e6f169c27e674351e3a778f6ddf55f47fa8c850347a45cbcfbf1911d0e2bdf148a752a1a09395a52fd8ab3214c268cb3ac7bded4fb132573b1cdb0f800e54fad33ded373abccdbf8f48d6357e6539788b640 +B = -9085c12741394e6ec4d255ae74a7efad1017e193786ee6456f8a33c929c34abfd220c09eea0e4352ca1a2d6ea0245728d37b8e803050846364d255d1a9c6bd383ba6a1688aa06e4d66885ecb4d8543bdbc676ba5093e4df92f3fb43f69b71dad783d8014a0 +GCD = 78404ce9ae13cbc329fdc0b307e4bb74027f21b2f885db34aa64136568dab7692c7ba031d2fde8fb0babf2a338b31e3f0681a0 + +A = -497ebeeee15a0776132c177655fe8ac2fc2a76a9e061626980ca3b20ba64d987798ac9b50087634b8632e8806783bf1a4a6aec2d151b5fbb329a8e05986bdb36f90c70f8697081de5fb1f4a3b9329b3753b94e68340575c16ff4f980c8e2a09918d2c9b954b6 +B = 5cf8e34b62528c880dc9c76362af2f813452222190cbfd0ceb3236ad8f00a9a638f148310e82263db84e21eed54251c01bab14b92366a098f32e43d842ac33eeb24dc46da5c7e4def146dd1c6f282f84f3346b7c666fcc6b24f90053f82a091252ed90ea77c1 +GCD = c733511737a6264522a7f4ed76ddabbe4dd09901cd866d31630c0c7b4f62a6cbe425b4b8411a3877a1c5f43c421338d9927935 + +A = 94772a01f39364eea6a231544942189de82aecdc1cb20d984e752880dfe73fc274ef42116e4433426fef89755dbe581fbc264696636674f860da559649db26781c0e8d7fffc3bffa771bb3a9d51158e757f566428d4ec3909e378d55ae63f8ca510fe862a986 +B = f9dbe9a8b1b96ef2178b3ac1c4860c5d809c278aa620111cca122394485caa7d38406d53ec699dc7f740aec2eaa6c2157c53e567dd5d183eef3aec9ebefbccafdda8df71b5b3ce40a4ac48c7aaa6ed3f7197f7f2690ffcea902d63e5189c22e4c72b89c2a2b0 +GCD = 240d217b3c1e749c0baf9f987493734fdb84ca6be82c41c2c120683681bcada315b12239c5c68f56e7153835f8171dcd6aaf596 + +A = 31697f0876d4c2889d2a47f45dee5d39147a9673df50a56f374c0f32592df51b7314bfea73c4dc51a0701c5de3cc6ebee8ccbfd3104881d8cc14b978fd7c3449d3977015f03b6bdb29b0430768268ace8722c12bd353f33b305a94fb54576ad0693852b11618c +B = 370613f25e7588ccf96fe08d99afd26ac6d304979de48e31ae3916745410d65e688db7bb5b874400bab273d0b745ea39703bb5c75452ea8245b4d430556024bbb79632acfd748d7aa4ba60309d9700c720e37063825ee9491675d0720882ccdcea8a0dcce5206 +GCD = 21319b80553e8240201e98dd33eb02cd2cdc83a81c8fb0657c929da5cca4a6a63627a809e65b37c2f116b0688098b5ce6a8402a + +A = -289f13b51b3fe125f795760192631c01f99fbbd14e124087f363c908222425864a750782c855f04c0ea400214f5dd6d8448c134b799a8cf38776d3c5cf70090e8d799b2d75c109f8bb284bc734499e03351e0421f95d604f142c387ecaf68eab7516fdd03d58c +B = -8deda9dd77016fdd20d29033c3c9cb6db1546d631413afba6e95416789ffb457547e8b21c26ca9fd213f9d753891e66ebe9896833024b9a55d0e4381d73ebb62ea2dbe4e068b8157b32ed9cb419c13972f80f845807b21995265e1944556410b8441323fce3b4 +GCD = 5425a4020f886d8d4e86dc5f34242031f0abd5eb08757a6f111cae901c3630a18dfb4390029d88009704f08a3177be20e708114 + +A = -173d7ba64a761f8b717cdad3bfe22e55748c48404ba3fbef96dca11695b8d15e36b654be5b305bf4bc142b0d9d05254e19819805233fbb48b92a82d97fc61dd16327a2dcbab280190af790b7a885f7d49edb90c78bae20c162ffeb8e95be96965795b452a92f04 +B = 45a2e16db55b81605020892145cb89f1cfbcca7cf64c3650549de79eb865e9e8b071647a7ccb7ad234cbc150645b5a9f2db5320e70f85a794f177dbfe998e6d02fbe1dfa4d46146eb41ca56479506d5cf600b008638378e47e64bd3f214677d05298e3ecd76cc +GCD = 28478e46b77c92f4e13936a2a6bf7801560877b5e94fd861b34b53a120c81bd7c0d77bf7da1ec2b9c907f1312862d4128de3a004 + +A = be301fe6317d4ffdb8c632bd4df21c40663c5e3cee79f7ed23c8676ea6c5eb02bbab42541abbee582ff4681285053645032f63126a002ef2238477237b689b81c7f6374e1b969555df12482aab56c6e27c19e4f014e1988bd92fa5b08d5a4a9f8716c8a44a1120 +B = f7bad65b19d9c07631842d57327199b0355848744bfcc2422d14700281ebfdb35535850c2a6d547f23434096753aab03eea132d4d94fc931f2abb5dc4968b237047579624aa2d22e3cf554d6756c33cbd237b09da66d3119122dc855d56dd531fafce15ac697a0 +GCD = 1a6e2fbc6104c0b239a3f7e6a03766e6dd5357148f868373859197f69a7642e876002cd4cd1b4d98782df06274ff812aa651aac20 + +A = -e7d0b110dd122e35af8ed79ae43aa27ef020441ac1388acdebd5b749f27aaf04cdb77fe9c256056a57d038d9eaaeba1219c4bd80cd4810a5228a1d1f02522a2c4165d5c2b6f037c3968f965fe5a76dad1c8821792b5886459dfd4e85ed2ada0d91aa93962b5bf6 +B = f76c3229b089f799480a926a72b690dbccffc855ed037798ad0fc24387985b42c38f7749b2043f4a98e2f08e56893bacdbd32a810de632248ad751f8189e9295dd171820ec3a2e1be166d705727b277318b941b24e09ad7fc15ddf401edec76ee9101bc78e0de0 +GCD = 27db61c8fb818289f8e9f215344b58c74af11a14f914f83284ded8482a15bb8de8a9db38dd34c7405405992844a17ab924d883ea + +A = -e2f3d27203187a3e5cf54b9da1411c6f8c9f957f4e0590db3659f7672f7c30f90c39f882ba3dce6e253d7032e12842304d1512f2f8cf2a50cab5d68bf2b2834dd4cefbe53bdb33163de76b64873e5424045313c56d59b80ddade9054789e982a403bb65578328c6 +B = -4c8174139b7e759bead0961cf4f7a0f0ba9d7cb35e7959b6341b8d5c40bccf457ef1d4aa71e34ffdafbca5de545ac21a616630c06b088f66f813b45b895ed03c09ef0db925b1e591944f516d23e84d674af3b3c8b563aa06968e0b7c12ccb268745229b193e9091 +GCD = 404da3111bd24c9d57f33222db8e3d21d422dc47e5c345fafc4583140117700e9af716d45a439c14f6fdf4100c43334cd907c823 + +A = -2ae801e85fe54a39d7cf57a85a9b587266b13a1a66d0b45f99f6590c27edb66e93ea09de783e0facd674d12451f12e469cdc05cc5504947e0f825f47c56eb9f5a24578a64b2d4969f5e7e58a416ad42eee972583c93e6cff5f7d17a49e7aabb5d3b3067f6674724 +B = 1fb451e42361ecddc973baf000c41627320f97ccc79cf7040000166336842fc8f88492ae0282cd3505dababe1305b28e98b822d61f2b2762e020e990f9c73c02fe05d00ac6a54169f31aecf3de71c2154625e6322b730108b3a0faf3ef8fa9b7846e1fa734fe7d83 +GCD = 175775fe5c314f5472aef5100f5cfd5070d162e208f3aa0dc5881bd0be9d2e2bc2c1a429dba9a87bef0d290fa224f57f3c51421cfb + +A = 19a8e72b0d85b767b86e4fed1a56fa7d8bd12806f74324fba2fa0a401e84bdfae41813840923a87870864c3797d366873966ec9c50b5b74312f76fdb2dc90947334ec2759484815ea3f25aaff304d8e2ec9f9601ec0de922e014e47157bdf8dfae523abf5b7ffa92d +B = 142133075f16db0fc70140604d60f6ad1b381a2e1ba9dd909f49647913849a63046dc796b6211b3d8cc012b81f7ccfcc7c1f34a7a20c758bd9accc6fad1778b205ebe89c6fbc79edbbb52fd2e229b69e9919f219e607e0a183cfe990ae4c33227c5e974c86f46648 +GCD = 1b4502867e44fcc95cb18e6cf7614cfbb7289d627dcf04cb95144222287720dc5a4d6e66a7c67380dfb1bb6e7a134add79d54ef39 + +A = -6a61f23e7ebb4c529feeb351b113ac3bb0c7c7fd143f4dde7f8477a09e1aa56e7df10fdc032c50ed4ea13d94ba17133f3bca3e75b251569567027314c7713d29c1567e26b25e2ada8eeea64cb11027573f815bb07d3e4f020445018bcb5437928d3a74124ab015980 +B = -3d6507d2040b484f2d6831106074dcdf0dd42283400d3ee91c06cd0d2c011e9b45c908ce57e9ba9e9e8f99795db35f6359b538add1a5f9a89cdd8b0a47d60ba52520efd36b7df2e817ceb0af3173ef26d8a1d51e62c3a1d4565a9ec318fb8d64ccd67c9bc7fa91a66 +GCD = 6d88cedf1171d34bd14f314740a17235d5b42ac5d5ab45bdfeeacec79566ac5d02162d2a4318cef45eb0310526d88972f4ece44b2 + +A = db6e6d3f7d5378642962715666261bb12bc444dfaaaaafb4ecfb51e3331bfe7bd0f492a9d52089f0ccd439472f27e9884b0c8f0e6ff0d4d918ab1a97a49961f124b685d760298879015b2c55458eb287efa1a584b4d4494aa87f76a1ed2475831c0e9671649328a1f +B = 545d328c07d7ac5f330e6106aef053cf328c627a6e961fdc8f339243b6b6837e1652c45d711cc63f4f31412d64c5bc743736b5b83fa90f80f9c889454bf3236bd61be290127642c7400e920c4a61d8871f94d44daa12a3ce430c42e396c33293e041df8cdad262d05 +GCD = 219160f378dae36736cd6f2e31f03c0e754e17c90c804e10a7846b0dc83a47cae3a96b4b0fea921fcfaa48ee7171da6e6820f2a9a3 + +A = 488e091d388da72fa2cb0abed3bcd9e6f27ac58e0c90b8438a9bfaad0571dd13a80ae3a7a432d0d0a98d5aa90c39c1d2ac426fe05bfca9cc8ac268404823c085f6ea58014b173ad8b793b2caac7db80881faa32aae16ce6287f7cabf2c04f6b388be9fce99c86c3177 +B = -52b3abe79c9c9788587f864aa0ea25107806ac6645199177e52daf37d9857e8595abb8d7bf50783ba69665daeb70c2dd5b0134e90b6c0f2e378d4e5e40150d1cdddd175e14e2bb3d037b9e2c17d770f5ad99f38084d9f752f2cc829c3283dfacd334aab5f8ebbaefb6 +GCD = 125cb35f34cceff399212789eaba719d0b45538091a3ddcf05c3d15e65fa7bc34fba50b4914c1b9e903e2a9ae8cdb4a0491aace99cf + +A = -181ccf1874f401e08ace42a3228ba457213d53a083b60e1e9a8be244b971cb6680f72ff00de3c9854f0e7e408164711b6f38cbb3496fa3f967e664e125cc17968a1e98392c08017a40642bae1c31cc461660dc2800ad722c3391219eef0780f541ab2883f3b6c703722 +B = -ceb311eae2b8dffe86286065c699a985a2f76d6b1addb5bf452d63c65b205c05a68a66761e94ee7b2df45ccdcd8b3e53d396b4b05d17acd111e3ba2fcdfa7ff7e4f252a613c018c7446f4727be226b7047b40f567ad01ea71701202897ecf2fd1d647d9761374cb0e0 +GCD = 1b542b873375e05818c4aeb64dfea05c8e5597de268442a9736584ac1cda5563f17bf63944f91d75d30e8b2870c14f6c5056509d2a + +A = 4095d03187686b2b9b7c7f6c84eabe070c51d08975ee7eb2686d392ab2c93941e72a0e334d850c1b170b9824b0da68423b153eab9ec0e938d7490e28cf2f1f0fec23d9d15d2aea07986ce24cc96e6bffc59e0e014e17873ca50430a0e98adfcdb985800acea4693e9b9 +B = 3e15f947f151396f3ab5d34b9422d83eff10d64e2398dd16b87d4f2e4b318c24ce96d417e21854dbba2fa2ca8eb9153cbe59e954aea408552c11fc1fd9d8914da9640ed2d7f63b71db529d6da7a2480bf2b694049aa5e45fdb006d20da0743862d7505252f6900716c4 +GCD = 26cfe771d7313fc58ec5b3e371615b9980aa87d146e97e5ba3a331d5dc9e6f87ecb1b904b6c12f0ab3aab542e0a4f695b733dfb0fd + +A = e999572693d3b0a9623f71dd47baa7e17a581aae029c649467a0dff6e8f5cea5374dc9d84a9415146a0f6c3b5fd6a80361efea5d45d00b9ecf13cd6c8e82d2e8edde26ed0de1c63062292fd174f52c49d5eea8575a31f4da7a6384499860420bb1e3f4f9e127d64bb4b +B = -2ef614cf1ef09391cf7c8b884779c2b939f1614afe829521143ea9a1cbc4f82af152c14e3dd9404a4c108c33a74fcdd86f5ed2f5de48064785f9a5615c91dccac85583abffa169a000a5d7a99d15dd6e82dbfc25a3c28334764bd8753b5effe891240e83616431dc5b +GCD = 5c3ae308126e13d2fbd7a2c4edb4f51f6ce9fc344c1663747ac46bc130db84647db2806563e594d5fcb0189eb32197a7136498052d + +A = -5e930ea21a9f8b1ac66514aed615ceec44ff5974e50880790cbe158a47cbb87fc50d7700a101ac56b1a36128c7f2734af94dd1622965c01336b5a004438396f5d3672511fd65f96341f0d773ebf9eb3f2c66f966a8c44aa6f7e91896b26445c3d833fd5806f6fe5039d0 +B = -65e79a04cda2712f2e794e8ad1adeb61eb074b920b452f33b8799e60ceaa6cd87c1e2e06f96c90305e94f04c6e83195dd8f43830e516c7c4b46f5ed2674ffc82c9ae277b4d1294414c1819531b32fdb98a099f47a2919af87247313b9731cdbb8ad071c83125529cfcb0 +GCD = fc3c52b89fcd7e6f49a7e438c9fa46b8a55bb6652e2318f8608c36d52e15a19d6348a8095c7f4db73a9e56a8fdfed9c72084f8e9f0 + +A = -84f13bf6f0d8a29032868ffae98f452edf3527c911ddce819f8b0ec8f114c8081e9e9b1736dd737f9e4d6e3d7b09f7cea0a1cfbda36339ccddb06cbe936d46b73aeb1dc6e0ce92f040d6b02cc9e05f350a55d21b5367514ecb7ca15f51de9622bfd21590804168fd698 +B = -999d27b247b1acfccc7b7b98c65a82169d070527d46f4730531a1164b7e209ff399584510d61112b8b102a8de76eff6aa5b2ff1c83ac5cff7c35b56f3cfb8c5b65012caeda4a01aa23801bc1cea112a5ae9873d1f67d9327323800a694330fedad2ba847933373faa82d +GCD = 19bd3e4990b2ce78e4e44fc252cde231bf9b82796912a294370050c7fc8bd816055929dd272fb86669a488ba21f48fc017729c11cd7 + +A = 40ab8abede551d5ca27e7b0a88c17f2874f30751f1656d1c6ad4a5c7ee000c9d30d6b0452059374c3fd802a802b39ef88596c3ebf51286794e023ab1bf943cedc0d4c1dbcffa0f5988b502edd405908ef951172ac1284cf9269f1c659707f5b9c6c6184b1e83a3fac3903 +B = -1ea9afac1f523ceba17f9353d677a234b95951f2eb5b39e237e2e2da7cc8ad7a329dfb0ed4b6f458ec08bbcad3edae1e8ec6c643cfa7d78e37c47ed17fad01471352fced9a4cd175b00daef6c32055d6fa330d579ba79abf1ad23c2b0b6cf845c16a168422966ad6a9521 +GCD = 742c4908e58b723a29dfcaa3c5120ad4c3ae897b6a409ceca1542e3071431a9f4501b2dca936a55a1ea4c52de022415f5496200d5e1 + +A = -d65e10ea9da6a804efdfb78c2c35bf346f712f8523abf8a64be09d33bcc7048ff875f2dd85e756df59f4cb9d1647ec2e22ac0879b55167eb52368db6b686d9ab1b9f50fc25a51b1a8984b4e56e19ee978665c67bfc3ded2be29cf23497a272d7553f12b193a694a71fc07 +B = -25f0f2de52f719cad71d5e8c49a767279fc07b678cd81d0ee7f6a0259b63075c8cb2749c44cc9aeb222c827fd0e7f500f9cce12b20f8add4a6fddc49ef8069b04b7e9463d8491c40a0d5acdff872d8beb41a8c235c2aa6efc340df105f47d817679faf7b84dcd14bbf9c3 +GCD = 13d763c408389dc6808f678327419c39675d8c3e509822d245704ce2efde4df5ecbca672a8524d20e43609b59ccccc9240d0cc88df99 + +A = eb5d1fe1490a460026441dbb2154bb80b050e28b2261cd08551b1d8214572bbdeb233bbe53db107cd89e36c10fa707bad729135dd34350f1470fa0056b7b3f040eeb2f89b101ca2eb4858189a5d32a1f522bd365e2ed5708eb513343447e42ce4db3f391c457b343f0b9c +B = -275c2bbccf82396177099782b6b792ee766b7863dcfbf2919370c0ab8388639654f39738d22e9a15888787d3fccc4b89e97ea25f1928e30518d5b52c87f37326a808b63fc7d6249bcc565c1d480b618e4cc597392042e7f6b80871b4cdcdefe7eba730abb56b3f672478a6 +GCD = a86abccfd65c2d3948c8c66d37c44503b7c954b4ae6ec8a17bd767e566ed950ec76a915d16275b310bce27e8c7774004e5dbb93e89e + +A = 3d99f894630629dd0eb4daca0bc9dbf6972d6864983f195efce5764acc3b2e56004dd2043a46f13a07e46f789dd9d849714b6d69399ea8a16ca54b3f83b4d00fdb9a590bb3b0ba8426c24503b36ad877715be61ab94eecbdab0e383a5567314600d87f43173f023b6537a9 +B = -93de92a135c29abdfad741da74e7a62f2f3ce7f0f989ead3c9b0ec92686730f22417492508d1cbcfa99e20e055d446fc35d7c0b19ad915400b79001ac7872353c1bd91efc67e57c0a0e1a20779685b36ac0b0c7772ac86c6bf84596472807364d59e8e0f514358c7a7e076 +GCD = 105d443e7aa1a1fe7901d6cba452bf6e7126e22d0e4a8290b0b6fdcd5d004d61139b0a34fd570f18bf42db39ea0520c8e16bc4ab0a0f + +A = 25634b628214a935d3e7fd404872f2c555a995f2bbcc04b6639853a2910cc5923237303da47581d7a6ca8dec026f3a4ed91f5297eeaefe83bfb488b6b6a0e4434b8df6a92b35d1c62b79f12d6568e9b0166bcb3a2022f38c8ae0bafad9beaf482d54ed69f5292335d24ba2a +B = -13a6f891298a63aea3d3b5534f310df9a5aec26cc5585fba4104a9ec2f8b9fbbbf6c0a3475fe41b404d370e720758a299acef1ccf18adc8f0b4f24f96eaf6cf629ce887783107f525eb900cce5255ac7725b20c61a5f504ce3bbd5867f9e0eb20ff9f1cea54bec97726e946 +GCD = 1eb8cdb0ff88ff52c2fb3bf262da3cb089d8d606458c556e6c0071aa5b6c73bfe9ce0e87c601415aa1aa5514c7390b75c3ca446f8c412 + +A = 6bf11ac8a63e61eda3f99c2d3bb0f4b1850f0f8bc61fed33a1cdf9fbe9cdea242b7edb16931f37e13b31b0301973db8195be4684dc59a0fd669d715b05a5305f5d0f3f8d934152ee4ae244a70b93c0ff4edd693de85908a45ea7b27eed119ac3094eec9ab7e33136c15fb +B = f9b63a80daec87ecb5ad2b76b766a5d1d12acaf2580aee55289cfcd74bd9c112df6aed8a5c5289759f4383e91f45936df32ca5c39506b21c7d25dfe5671f7a85e2c23eb0eb169d65d2257ba719db23ae29aae6d67b4b50351257f595c1915b5e928bb083f4afab9e970ebbc +GCD = 668f6697aef26603d17db4fa223e0c162646e5fda615456b827ada62d3d51eb4d48864d795e1b4b6d26187b9b3da633c79fc0699a0f7 + +A = 119a81ec841f0d8bd69eecc1acb4c237bd572eaf8f966c9018f837fd749f9c5f82f48a57c180b0ce634ed91858e056157ef6d1ad8d0a0ec5200b83e400b0d25d52db788e35e7bd6ab967498b075782bc7bba32d171724422c87a013bcb0e39d2d5a803ad899371d3e52322df +B = -41e59655552cb7343616d5e71a557eef92dce58eba99222d0565e24be49eb963190bd67907c4529a1819bda6e50662c717e5705c5b03715ec36aa65a6376849ceeaf18a3041ace1f8855864b9756af48416f71b7467dc9b3bb2e19fe1be639fd4bee32e947d83860d207bc53 +GCD = b43c412d3e3b1c7a7c42b3caf2351500acb33e9f49b56d40d6869edb21d870edcc15799c90b284b2f0b92d126f7f01cacb3955216b45 + +A = -ba162696a00aadde76f476defa27f401a0b1963e7f368acf83f0a707e8b631d91c1abf1a9c8b7af1cf8904001eca9731d43db59ba3ebd7bea7957b2be16eadd0dd73caa85dcff3a55aa747fbc74becb0b7f4b1da30355a3c5de5d7150bc0b2bc14e576e9c4ef1581409e15e8 +B = -e31b40f21cf9db1765a380ee710170531a3c32f8f4e01a5e0a74d5fe3f47bae1a6058b591e69be101f362cdde3a19e53b36ae953eb4eb9875b960659e64de6bdd5d05e800eb64eda772e2766b75297d61d103cf2aa04793df17847873344056e502fec81629c9f59d3c3cfaa +GCD = 566b2a150c92fe5cff53fa13081c60a5768338738ddcdb041f6254ae9701fc95f3f6077d490cb718d8047d497a180a71761a985e7bde2 + +A = 22c0939846a6f38df4f5632d3a534e7eec997883242ac0614d833e5e92feea7e16c95a882137516ba604e8c39843f1998b9e83ab91c875bda4a7015c9b17e79674e851466b97ebc7f307771a4bd64b66dc869ff9b08131dda5f1d11dc81a5f4d0376bce0397dcfc8c2b59b573 +B = 297abf05fe0bb96fb9164a13b0b63d70df175d5224071bf93dd039b13e8144830d52631dd63fa76709da5da5dff517b4ff3e99610415e69e95585da111e926497efd1bf3c3d5ede1a3170abffb5a3825440c627fe8473b74f9655f985599b8ca00f530a5ae44678d29dda6854 +GCD = 24b926de88e2b600d3309a45b549a8086258b5aa0c4b4be2b523f84fac28e79814bdd5a2e4385545a3e0886ed4090adb6dab545147a9f + +A = df1e6af71f3ec05cde41d3741290f422bc5df92e854880c034c523e8d9bbd518664fc8f2a4eab867f0ecd0e605d904a98e2425dc51a20701b5e0413ba88602e992c7567d3836f38d27402d23bfc87fb602b202c2e15ef2724281c677bc57820a04856321f3bbb414c13a83e77 +B = 196442299f7a20f04d1532e2e78de70a46490c24c3cc080575d06199edbb1f0c315efcea19ce068eb75dc9249fd37957c3674a7015f0ec891b70f7eadf7734a91f58fe4df449f028487d74ccee0ace1d60ecb70c7f85a2477727605ee73fcdeccdd470b7ccb455f56c2341f9f1 +GCD = 6ab2c0b52cd70100f646b475efca7701db38134549e1e02f29ce74d36f80112fc95634a2a83b86f722e42f4a0da91611b6c538355e0ed + +A = 33413ba4d0fc7c3078e987f42b271b1f9c7ec0aac62655d8222525a982fc33f3a6c9e8226676ddcdd4e7d500dcf26efbb2298842fcbb57b12a76ea6ff2ab204478fbf64fe90a36ff8232ca8fb2c19ebecf0ff45054c6331b478cb364f837994bc1929efb06600147b220e61254 +B = 2d3859308e7baee210386e3a2b5892ab91b33e5c37217532a63da06f7ee35b18bc320420c1fae42d2bfc2c874a19d7f135373e4e0e0fae1fa5881765c166444d2ae08d7ab1778a1390244b3c87dcebb2b58b0eff1f4e68dcaee5feab491b5cd4eb7544e82f23169766266715ae +GCD = ec8bb0341f02b244ace6db766a7476d995e5a1bc301d0f2b1d850e3c179b3952d84685f000626b856706f489af54065e7e69a6db64a0a + +A = -11d2d9c8031fc9ea2c73d76063265ebfbb0b8d8ab83f485c37747546e65d3ccb109ffb03d92e65b16e2735b4a2dcbe5b2b48e90564bd1fc1e298d5e405308c7ef62535a24b1e4169644c395c9074938c927963ff7efb53fbfbf3c7826c17c17d1a7a07f612348343aa6f734b282 +B = -2ff6aa64fa271f7fa062c486a45fdba3afff8cb8fb5cdd9207556be7dbd1c78fd1973cdc9da00f38af7d28b11f462b487bb080da8507314e6038d3fcb50af67d44493d13fcaeb0a0ab1751bda935b7dfb6be254bb2bf6c40bae715ebb22d302e5136e748fdf4bbf4be5ade6240 +GCD = 467a3efa7658c8dd0b3adf01a5da18939502d17f71d711c75e6de458a4bb53a7179f72caa88b166301216b319d6d7be0c91bfce3a0b6b86 + +A = 1c5df0689b31df95b9c11fabfbbc11ce0df9c36365ad97b887dc36ba450df64cd959f377c94d12cba6abca9c3f2e9557015a276d2bedc26536c7ef35c199b631fa265f1b95ce36abe09d729ae2468c8acd8da0f7223e9a78805fae4bb8a5e7bfbcf88090dc71dc8f377b273b9be +B = -63dc6f8b947723444d1f295fe25f55e0e0fb626be88d5329303c6694547dc4e6582a293172437664ae401e3742fa2c0dbc4842c494cd8b7a7f726ffdfcdfaa59e2cd705e176c27bf3cb1ac70c0f4d18d543142954e4eecfb4b92ef4b644f1bbb1bedf26fa1356c8cdc06dbc366 +GCD = 6f460f3d41c6e84f10944775f81d8fc4f14b14a1d3ece491eb781d5f7e922e19d96568779f8977866264fd8eb3e7209f9bd580dce89f36 + +A = -abb0ff21b635ead4140b48d39df0bad16d7f2b7868ef1f257d47bd28dd162a703b41842cbe56256513850d2ac3c81b5dba11672e15ae6f75680e838071fcdccb9d7401047bd65a79c34cade8f5a21a5bdf0d0b8497091dcc0b6f7059d802bdf4c7e24b534f09ec234c4628487f8 +B = 7f82b461e0c911a23efd31e84491eb7ba7e6b6785b577c397890fa9192270f2c411c89aaa1bb14c14a36506a63eaef75d8c776ba2e5beadce3b9f2a220b2d784d2976679c8b1f5eb4a04bb716b1d00bfc0a8554743fce3f7938d2ea794f72254bfbea51c99592d4fdae708912fc +GCD = 810540d59b7dc454ae9695b09857c20b648dff676452f47dd390f0ad937029142cf9d6099385e92785fabb29c0f3ab03a74dae18e273a4 + +A = -1fbb7bdac932f0bc4de7dc7367f328c6a88899d2575e29b7f3075e4b26678e22fea51482f2f85cafc4e6d6349600d7d5529819c43f99f561e8bad73dc6dde79c80a3f56e2f95937ad77134553da9df81b642e0d80eafef05d15968e614181b92022f04afdf7356398bee31761190 +B = -51b1946ae0768a42470cddd66e74af29b62809620ea04724cd3db4d3c907b16527287252f4abcac7ad3b0fb84e6233174063113b542dc0e952e1bc0546d0e5fa1e09a00972fc5d58f226f6ecdc4671d23c5badf45865ddaa9606e000fed506d2b63390eecba015908586f4e4e750 +GCD = 1ef49f17bb05c77d852ecd3f6eed1ac0a3c339282c399f959ae5f96ddea688daf7941ea033a780a8e5184a5a2f61b2c3766a772ac39d7f0 + +A = 9daf4d175bf52c34ff1400ee9f0d485badd2edcab3500fb080d6c101c3cc315740a8b25c7705681df5f70198ca36fb2b40c06361c5b547ef0e81ffe5f36d9606edbcfa2a0ddc30b8a548e61dbe44cd4a6ddf9b6f1481311f958db289c88d17f334a0f17368db2a2dead43d47424e +B = -d86e0c3cd90211e48e4d2e2a2c11e3eb29adc31615739db79f56e3b8dda00ee099fab849cb83677f3e624fe65b26a8dd2dd71448d0e7194a70e48cc9b2abfaa73260353206b1569408360a166dda68feacfb92e9f47ec1d0a1eb737ce77d9b61cae1bee202cedade8bc70137a8f0 +GCD = 121536ec30d88330c55c573680ee87aa5c6ba1bfa57ecb31c47877f8403f37d82e9453757337c723ba9f10398b4e8405bb5c23b2410eb16 + +A = -3f52d92ce99bf4d01bfe8d8e437c9ba17a4783b99f7db254434baa136cd69f62bf23543285737b1cb2eb25f47e82640a44303c308d0191b129d57e78a968f130920228c8157076f5e7c1b378c8a8d52d9bdd2589d6d6ea34f32615777616e2c92ddc9dd6ff6c9488c4d2116e89a92 +B = a72406b7cfe19e33f19315353e84d52092e77a76db1262fcd3b782812faf40cf302892a96c938aaf03b2dafede08fbd933675d759b38fc5060b9e4d18fc6c0df2048c8ea88c156ee62f929621aa58900d9acaf08acbc11f93ddde681833bb382a9164a5dd6628ff9f4d51c38f4fc +GCD = 23d35279572f58a32bf8c310bfae00fc0a31703f773360784934631ec4d7e45c2fbf183c02db714827b71b5af149b7098b90103337883a6 + +A = -70625f1fe61ca55407c478e469848c2f57b2039ee1a1e39cecad40ae2ebe917e725c42cb59d873518665842267b2a4f270fdb9d8c7998badacae48e8cfd47d030c998ea19a7cdfd2629037aebb6cd8a3d6c9edbfc4d7710db5b91dcae5e34faa6988728fa048275bea4133ce333f +B = -13ed950e9b0b2db27e9536ffb1518687af24258846bdf2da04c0001ca90d9ac8ed89bec4580384fb4cda4efaa66b10446486a281eb4a47e1928a2974038cc26f862b34ce2c5e95503b051852b97c8e74c426c3aee5599b126bce7f9052b468319fc9a5b0f4b6e2f0222599c14e7ae0 +GCD = 6a1a9e6107ff8ab752c26c63cfd8db96a467260ccba0e24bb5105b0038384bd298c9d85feca738f5979be245ff94179952b7d1e440402f7 + +A = 425150f8b168e3ec884aa0d3dd415360bd4b7dc7ad8fa9dc3ba098bcd4b26cfb751c74f65c91d5501d273a9e9727f96e51c93e3be1ca1fab1657c77e1e94ae3d54d5f13b12688e76852d6f6e5142f33ba325d927492e13a777bd804ac4bc55250061dba9d36268f6b8675678cc9aec +B = -31769d01ed4b7660266e3a281f77bdc710942946fe95f88fc0d619367e96c2e0e2ebb374691bf3e101f4ddeaae4830ffc584eb5bc4e188c7740286ccb5e711154dce18544bcf7e2eedee03456b106f01bf06aeaa32c563f5055cbbefd214d9963990774d7c06b8ba7b5d4187cea5fc +GCD = 1e57257d1bb7f7da39a84eb480982e2be899c5cc8695cf1689358d498d2bd1ba5c1b997b73f350b9e57d6fbab2cb604a92016893553fc56f4 + +A = 152064b0457d1f5ce5199ed307f8d6fb2eb786a26f4baec50227ee329542c91931ec9954e9b2b9bfc02d0e94b14496a7f69da4eb4a9ac80d9ff08a03e08ee7769e7af91858d4c91d22ea0958089762994d188429c50ba1c938a79cef47cab55fafb49298ef78f73699dc5e016452eec +B = 14ecee89eec01811ffd32ba7dd8057ebb019dce69578fbbe6a92bb9830b9a8a0ab706b0db5cdd26c73604c120ae2a1cb0ec5da42d6e08cf00ec261987ad6bc5c40a5c452eee68b9c12eb07770a309afa1bf7ef46adf9ff6c7b33a59cfaa12b0e71110e2a8ff390d8a018e8629514af8 +GCD = 228c70cc4c350368fdab7d2c11694d09573ac2f45a51205a69515ac44c457700ec1a6160aea10e3154a0d75ca606dfd36822b18cad603ec8c + +A = 34d488fa70f96c8550f09be15c8183b9042dbddd18e3a5eae1b749c43f686a72a74d822dd632d05d00e245ab255d5acc46b867b1174347db9260e7cf38bddc640bbb2e1ea63384305ac6736c27a8ebdda385a1e77d7f4830d9717c50f41b8eb83b6971788b308f701a18267674647c1 +B = 6342c841eb02448933ac12e4c0a4c947ad1522d5d9690df2f795e983580f24f3757c7f46d62dd199af7cd2b199c518335c8ec60308c1e024831e3c8129a05a8cd462f72291a1036440420a5dfbdace7bee8e901923a6cf72e91e3b2b8a98140488b1153057dc3324cbf800c619501c +GCD = 26d8a5a1b445a70749d544168eceaacbc317f7cc9b6d299530dc84c17c032626645773360d62790cf387b448e854b2fe69396d9febaabba5 + +A = -7d18102a1827dbad01bdd6c7503a2c648eaacae4d59f20fdcb5c4daf9ba50a061b51f2ff2e8892edf8901e7f134a2b41befc218ac3791285f4ad2a71b15151eca7bc0c601964b782aa1ffbd8355a07d1aee65aea46a9ca0effa1347a352510f09307f3d3fb9625de9bf220bb4374931 +B = 13d289867c1c9746429d4d0c76197967677d11574a3d6ae64cea892eb585d6a075f62c67e16ee4eb57831098244fed8796522c9c54bca379d387377b07394a209ac4653024019f37e27aab50a5ed93fc63c1770cde0bcd1e17f07797348a319c08cfe29cb021232a12ff98a7bc437dc4 +GCD = 51eeffe4deaac567e17ead80a7999402a0e206d19d2989ea9f3a3f83bc0fdcd268dda9bf0e027c1701b263ddab78ee3eb02b067f871b3fe9 + +A = -4d03801708304d7dc21b7188c45b3414ec8032fd0ea7846e697122504426328eca1c26a4afd772304d8b0362339ffd2643bf559b426bb8d00af810b4831f64e28094c87d687b9edc02cd25cc3d4f57f5729211e535d199dca7eac80f627e72b7a92b460fbd70f1181791fd85ce8479e6 +B = -20b0610adf8dcbd0bd4a5378dad5078ee9dc3530a4830eb97dd5612f634c706ca5b49a44178c0a6d0c8c2c4ed495a8de503f117b67854cd32ec4dc8495975adcc599809344e615271413ff7032d43e9972b8442176ec8bf92da77ceb6072d95a2fb3a09a41225b24b50e48329b718696 +GCD = a191944a20a82bec1fa74edd6d9beb50d804b4e34e407a08069b12866ace83d284c0fa7c43c89e08f6b78fa7fe823dd1c5e64b42ebc1b682 + +A = b299f79ae9db91aac3bbc5bf15ef8304314bfbfb9fb9c64957a0b326bf53969e8464a36a6915f4d03a7d1672717153ed94f6c4961887a453e5144f0f3522fa1032b516293b1ef8e336e10fc25c9e0ef7592ede46ca2a782b9d8943599b8187c4abfda919082ce2954d77068f9023cb0 +B = -fe2a56f915a31d8ac21e8fcc6267fdf5535a09ac4d600506c33758b8eadd10962130d47c149939848c20a859a5cb284b9aef71eeb51398b47ea489637c68295a968b572e179445b0b29ae086159f6c4470983f83d7f3bae03b6483771d775bd415c3872dd38b092309f660e4955522bc +GCD = 344956c7e865b221e4e877810c66da9ff1393c6c2ea44236fff666255183f925908b6a81ec9947f17cedc29b2eda873703c782368b0a41c1c + +A = 21cfcf98fb4ec6038090493313de4c1e8e7bcfda867710ccabd5b54d33e7f1016ef527ff0745c9df0bd1f1665a8a4cca400daa44a69f89aaf21503b264571725680a8c6b13df315766cc3f721ee56a5f5bef3bbf85eb4770924950f9efa90d6a0275b6fdeac1b53fcca3f98580c977075 +B = -124cbdf72fd4b3a7bfe1a0baf4eabf0a5e6786cd0f3c39d2bbac5f32d76d937d035ee36ca6da6178ffa3922d55eae51545f7712e77667e4154c54ff1e9b7fa2b3856002883ea4794aab1efa4979647dde79befcba839d49834cc7a4afaa7cf9a505983cf215380b5ca5b2bb07380d1643 +GCD = 235aac61a6f03eee5ceb6aa8ece87f79b7c3f6ff596765226985d4f870a84ad61ec3d501c0e4486f1fc65a02cbbb38b97d16836d0b3722f8b + +A = dabfb52277153dd079e78ff48bc86e2378bd7c35f9c497ca2a58c1a598bc9006e1fc39f7780d45157f07951b0baef0cb73785554061295bb40bc4e0366fc2db7debcf25950b5216e56100e634a6e099d0f1318f63d1b229059d7fa4b08bfa765fd21507eac0a0ec19463fb47ad53d4350 +B = b2cff63048095d44bf3c30c170c9b26356c00798065191a4769e61ed7c1bda05351e001bad901f7af6f069298a8bf232e26853707ee4df12be95237b6655b0e1287e82bbba085b1fd11514a47a87993e76fcd243e1ce749987d1f207d42b204b114690fe649c7a1e2bda8cbb330a1f2c5 +GCD = 420c41343d013942898faed835ef8a004a630f47818afaeaa0fe78395c1618f6867bb14c654a1cdbfca7668b75179f4f9f09c72c01625ad35 + +A = -592b9ef205ce4cef0cfa8d53a550676c30be5fa85997d8f6a5545296bb5d2c1037cfefa15d7cae50896415d061ba41e00364845f6d48688f0be62c6d88cc74ecb0aebb8d8fcc0fd68bdb49ec1d80c936f707e46104ba1deb95d8cddc248e1273da2e4d0cf76ab0e9f6058723ee57317412 +B = -700104497e0af12aa11807e6e038fd35f916e3be0ab45d6dc826b52b86c6e43ff208c627e6f9674ac508997a871f265fd4f6284dddcf55053865ad53a2e4f00c4b1415d6d0f0e666ecbb858bc71737e19a525c5719ebc2265c5f96f4569c02422dc778e11c740027eccbb2b26f9d54af3b +GCD = f41da4e774c8cf0411518430d1054e870d59912627a6071b85a3192da4b53be9f945f011e281d8268ed10b07542166b9235b50c1c27186cdb + +A = -127986f90596211f77b9821e753c5022a34d784427b4a4f30ceddde83fe9d20abfa8e9a730e28f65f9486bdd6d3f93f54f929af03766c3bde25d8fe4c881d731df113b212e4a5912df537996428f23ae0d2c731923a6780b556077c52d7e65a9369473013457e3fc2da148c80f55349e85b +B = a0af148d46f9a054a6a2d77b522194db82712645cbeb6cfa6dcb60d658642b8e79d03d573f174b414d2b72052e576ae17d4d6df311e1939c749af34b6dbf45704c0243bc304018ae1d4408dca0f84ea0fb8b68ba142cb25afc1b7fa5d2d27697d05d8f2b0f48a29252e6bb668e554e47b2 +GCD = 3ac63917697d8b851e31e2707246c993f3905ff5064ea40b48998af1a17b837cbdcc36ccb84dc66b46d568e1c86b48e58e96370c08fcdd64ed + +A = 21800697751eaabad7b50a1bf3a886531c25868f98569111d287eb0acf3ff9761da66a855b86f1c1141aae8a024ae4e9fba7bcf70e52d29016a46682a3a65766fb2de223acc3de7f23b27d7f3711442f969036e3280a9fd0d5eb687e268c89b1b06389e844e9dadd3ecd0cbb85ed00e66f4 +B = 50ef0e0ebaeff229e3dcac026ba0393fd80c688141ccb394540c8f7aca1e346e01e51c13b8e577a21c81ab647dfab32fa891b208bba4c5adb62e1caf925481db460d34e3ad2601c3319d337072254cf9cde7a686e6c3a3a68f8296d48844389c6ae5a4f1cf5001b228c86c67c4fa61942ac +GCD = 3c0964d9a5bbf5f02fb5f5ca166c87c2d95fc18d341779716bacb3bb6fac8540b89a7393bcb38028d536abb80eb8a6231ebc388de445c0be74 + +A = -9be4a14d2eb6059ce4fef51e508f9dae6ed8bea2601e7af37d08ce4a25d4e218cbf6ee64542b15e63a4e9faa6d52844ecd5c0db9cc6abb4197fc391a6487df183182edb387ca71db6bf2ee0cca0c95216c61c3317e0cb2004f395ebc418b772011e297afb323ee66655a2b89c557f3c22e2 +B = 142998ca35994542ddb4477a2408c608efae341ae411f9713bdd6e2655183cbbea4f8d20fdab6dba1d842e11d78f7ff6a144996db296416dd1ee6f7fa6857e7b8566d412cd6ca39ed61f5d40e2db3eec7fe8932d71392b239238412bf0d83d7026d912fd078aefb384fed5ec686838ef442d +GCD = 75b9053c7343b6dd11be59f1dd9746cf1884b74031ba76b3dcff3a23048c77468950c08f082708bfe8d71ef6d379c69c5ad93d5611cb7ffa23 + +A = -3f7cc2e64b2b17a3118cd9c6c4a466492bad86b6eac6d58539112e7ede1af981c075f2804db23d9d8b30144d7028dc863ea20db0acd2787d05ca6d36010e28683c95e496c96dbc32cfa2eb7a516ec5b02093fd4a456673c8dc4491651d7e6fca5ea099ca84c82af6f4140e0185139cef5e6b +B = 1cfcd5f34bdd9cb4697c8ecc165f825dba618954f95b24b71413a6a40894a09d6e4af422e8d0f8f681eab80629be55c0f3a728710126eebe4cf08df78a8ff5eeff12ef1e6558ee05a68f23b92b41e973ed4b72ace6c27519d860d403c3c8a50f6c28abda9e112dcab848a7ce9f07896d218b +GCD = 8f94443edcee33f32a03e4d0ac350f58b1037fba3c577b68536338fd921a14f16031459eccc515f775677625a6cc8460a03e3cae9071ec4389 + +A = c87607c87d106cd834f47c0b318b2cc26a097d867e8a2d99a0b57dffbac2a81d9e024ab10975831a2442357dc6cf51db46d0875d26c47776a4b7514e04834d2a7415ab493469617ddb3a3daa42f6b63a0d3945fc88d966e590b969d0d0166003f0f5b87120b82a9fdc2eccbea167263658 +B = e0ec85385e3444b998d097b598f14a3a8bb91507df297629c9edc8cc652baae04e4d2ed2871eb0350d5601f5f005e184b3123d97390347e5ceda80c50bf866dc7f5b467646b443fb569be05b982614c630a6b5ddf869067bb6b00b7c2685a3c1404a35fc5d1adf9922b0a77ec487f6f37d4d +GCD = 1ac13ed8468055875db58597a872f1923d65aedb6d06b7d779dbc5890815070172a39b7221e701354db329a1d6d229fab23300227bcb6bc7299 + +A = a8a5ba7e7aa9d60ca7bd3225ade327db4e3a2860501d0c06c2f76ad323055c4c93762c9f9de5e4f91f995f8c30d0124b29fef4b0b5f044e036668488d4524b51501d160809379eaadb2228fa7c72f12d76ad4a7337e82f80ccc4b12040a2dd2bfa6b04b3bc2367e9952b1126bb41b8eee63e +B = -4b1addced3750962dda3d623895550cdc136a3d8735fd5be0042dbc9b83266f2a04afe7631efd1fae63e07b9e326247d742837187c8391f18e90fd1c8e89ef56d76ef33e9a62d7dd382145390e45d21f968a5bbb98f137e8bd4c12c05ce198722dae28e6303a8b06410964e72c86456bec748 +GCD = 26a41ec2520d0e53241e1ead9dd430e2d0f463a49c2182de48ae651eca7beba2e348227c5de45971e8b50ba1aa77530fa9637ad890fa5526282 + +A = -74d746195612d73fb3a87bf0b0aebed276dec5bd53b3f627757dae7da2ba904bad275b235fc81cfae0b620b99f8318aecd8192e0ed0d619fb2cb3815ee34d613729662ef3871c05ca2732553303473b92cf56d769b0db68c4d4203b6abc5712f76fb84d26a9d1b6453eca768ca8fde5442a1c +B = 11a3a2a590175cfb9a35b38b8252aacf833264262f8befdc6d791ab33b7607125d5f132cd91318c9a0f7649d134dd8bdd0d203c52f0496844673434e5fdee36b5dde2d443f120addfa43509c3b0b1751ce854e8ec38ec97a7b3c1c9a9ac4349bde3186b5c574f710818f03720c5ec96e779894 +GCD = 61ec699a16aa56f2bbd6d54545561c739e074230ed76744d5a6a7d6aa117b2b20913ff1ba1ddec41ff4586416c2c525e5b70b2d403e8fe3af74 + +A = -6ba555e1464e72531d2e5f1487352e2b2de72055adb71cc6666ba9df2208fa8b1039304cb0849bcb00db52033428c7f269c6a5e85ec8601a39918f0d7b01728b47133ea490153be3afba1fe7ec3fde13e0cd4cd9e073fbce2cedb17aaa89e6744ea5fee19c67de63db0db704df33f711535933 +B = 4b380882d27f3eed43f69fada8e33c35d455806352dcf6368f270bd7bfa3339f55c7cee88278b7dfa8c353a019da07f9633f08b536b5423879e1e8a00a7b2990fd3da07e0065fc15954dd625e9d5f9657611b80e953f7ef1d07d09203efa52ec0e94fd9c4378306339e2eaafab831ffa44f3b5 +GCD = ede25177adf92afc77f73bcd13c27fc426c0e71e68c32b3626c1c85d88a3f61c5b613aac5550d234fcf45c0ae8852bbdc809d88baef414f950d + +A = -1050f62a8d1afa340bbc96099ad58d71f3330761fdb0a7ea85d0871cf15ca081d7dd3770864caf8a50109827992e23c6de993bc8f2753780379ab0bc6a8d0798dd8ecaa32ee20dd68ef9b3aadac8a6130141b1ef8c4b4c2b5a6b391e027845f866b9785eef0dceee47f8870643320f1f913b6c4 +B = c00aa815a83d0697be1ddb85f09a7fc2163660417e4d78abb898cb31cd8392ad78055a819e6103d0f57154427a7c17012da60a55c00e0e446f6222cd66c713432332a5746fbb1357cf402bd324021ba60579e8569db17cba9b0bb1d2a3be9979410ef3c45dcf1c30bd51a8f0d191bd219f84d8 +GCD = 15f18faf0ea0bc24c457e024f1732f27faa740b800c85eea7f33708154483dfc13bb31bf235dcbe05c19360b138e793149c2cc867c1a3012c1d4 + +A = -1e7c9043f408ba66ae9e516fe04d091f1b4077710449ea1252b6079292382674cf42360dbb9cc4325fb2904b959f0f96f3e4c189b2a54c5a7b2bed28994805dd81ba88ac42f5e6d515abfd23c2aa6834c52942c4ef351e89597d5a746eba26922504717aa8ba866d596d3f488df76b319405cb0 +B = a39e070db3d12c0ad6d16d0f467743e93ddae20105faf38ebc0604b26cb72c8a5052c580b6a7d9eedfcf6b4dc0c7bff0496240aa93cc161887361772dd917fe73011598aa615d074cd5d531819f8371230915ab0ffda00294c2bfd685d0f2af6a936b61442fd989daf26b45f84c613bd49fd8 +GCD = d75b588b75784ec3f5f930c160b00c2e754134d40a287a0055220c2d44e9639f9ae678260e08808da46da6168aa0adfba9efdf911ebfd025f8f8 + +A = -10c2cb320c2080bf10a8f7d264c1731aa43c9680e43ec0f0db17e95d525e77c7abe8bac779013c56e7cf9c9719e8662e56c7cab18dc9bc0fa50017de1eef3978715253ec9572e5d25dd15116aa17b21afe28b1724f7493443d811cf0413a8bd0f19083d3924d4f06356571631b00bc7da09e5760 +B = 89143b96367b6ac6575b3b43af2070f5354b00380e76d261029cab24f6affd0cf0ea9a834bbc066e577ff74c0f3b83aa378268599ca1dc6595df5b9c1d9c384c069825d541167a1f8081424ad4a9c479ad17bceb48c6809d6b6087b3b14f7cdac43953c5e43afb604f49017582c80c6e237bb9b +GCD = 479a4629dd49cd992df32e7061b6e633d5b36f7b0bdf46e5ea1a58957e768322b6d50dbb7cf465b83970dd1d18db4425ef00f4fe15177d19a741 + +A = 137c584c2e3e8f22402761826526914c94a569bfe637b4c445db819af68bf59c9c4d65f500b5e217fc75a40aa716f53881fb754153353bad32708b27e09090ea23655bbe48eb146fde3b4bfaa18ddd0b0535df0fb271eff6733c295a1e88085504a5f19eade18cb7d6b621f91b3dd0d922e87b79 +B = ca574b12fdd29f9efa96a0bb6927a1e6f5b6079021d272bdf0d3af8ce5474cad90858d5ebe6d4b8ba5bb22354dc3f09e7c02928adfcb2135a234f22a33de4d0c3f6dd76213246471aac83e35433dfaf076aac8980f59395fb1e308b48d7802978a9dfe8cdd6eaf7689a140577f59af3e9ade8e4 +GCD = ab2f03c36ae261dfe73fffcab8220364db9d5d6322eb47b62f0a2fa7bd7144b04d9d62c7d1f2dcbf99678a83dccb63767731600ebc4b151213d7 + +A = d9bf4b25b423b8d7f918d7c84db26043805edf5dc666d50e64423204d034ca0e04c2196ff6e50e6105d82ed70898e4db5465b94df304047679322d1dfef4b9ccbb86266c197dddc6efd7cdae3f4078bba6f516581abe247a86402e9547017831a27e2954d81af188605a78e9cafc4cce01bec55e +B = -11664c1ded93b5b17125bb9682cc1022ebe41f2319df909435dc6ed611bbd20c80ef7726a86e7a66e9e924d494ced304107b3b9728a2ca0d5f23ab395c464a26060b58b3c8efcb1beceafe4df58a4db516658b67e212bcdc9300878fe0136b5887c9e7b5c2eb4f1705127f8209a7055c505bda6ca +GCD = 2dd732fa3470ff80786adb0dd19531aa95ae269ed7156318e468a6e3a4c1c8b4372f43cb7dfa79fae8aa6311f32e4a4cbdaeff248dc8d7ec15b2a + +A = 36c86a4c4768f05f89951d00fc1599efa0b6a9a327dd5299218bfcacf8b8aa81c0832b5f77ee061c25dc5f73255467d5a1ddfe05320c33b777b9e4bd5d09bfed75105049e3d55bd90e462a42471519ef6227c7a4f98a3412a89ab522cb8f2e37c72a11d38bb2e2142e2454326fc6707d90953afe0 +B = 3cf3f312c89d5154dc4372e89fc024f3bcda08679974a475e02b32e5892697f996881842532e0adb07186ff59a76ccd64b11ce27c2c54b17bfc3a2959e58095d75128c3cb7c036581f7d74075100a009f52fd16281b264a87f32df8f9da2efe5287eeaed40a7292e0efc12d1ee73fedd4deb23f4 +GCD = 3ab23c322e9cfcf456755bda46951198cda9d5459a6177bfe06156d05d7f7c817fbe1a335ff09e9bb49841d1e43239792b0141506080b3eecb38c + +A = 196ce36c230e58ef3b4567eb4c2a57c026af2e65c3b63b3d34b9410f2b8bb210409f14fb93aaf1028066239f18c56d4b28490acff831069dada4a6f93f710ee20990ec07bf754bb67f67049f83fe9ea9d490243449454e12cb73c9b7c247fe03b93a5d95802cef7c2c700f2e89cc74d50ddec3900 +B = -73ec289010c03b2ca31ae5825b002f8d2f8384dc674d53880a50e289b84c1c1a64bd78e035f8e952d8e935332d271ac50917603e334c4ddcc74c0ef7c1495a3b586a63702c5d34f06db2b36b23150845b659c37b397d0a4c7cef144178a386d28e5766837d9a0e374072a902e5be3852ce0519380 +GCD = ebc5468c61f0fd4ea0aa687dc3390778f8c09b3cb3e95a4fe30a7066deb667db88730d6331b3bc1cb47616a46a0c8603a394601becd29a815ef80 + +A = -2e0e5fc49093a906628e9e46db3e1d740f72a572cb3407749ea43dc32be2ab4a0f14580c29d1a40647c2e778c68bb49cc0419ce9de51c42f2bbd77d64344bfd7f19af846f1ae396961a5f28f8cdcecce1a9a7e1a3624757a75127d047bf1bb4d2ac151760399d9c64d856a89c65019d7a057e2cd80 +B = -11805337a04695510025c7c8583a3b4e2ff969ec75a899ef5f359571c49467d2509faa0ca8009af84798da75632607e1d181a510f81d3f9a3af6b5cb9947afa71bbfc3d9f715968a85375831ba72028299e33f7e4f59b212079cf2edef2f5e18715c4c1e77e73ad8cb0ed235b73398798ebc12bf22 +GCD = 219ecbec4d671fa5b9eefbc8a0fc5ebfad06041589134b7f8559f1c6d5d4ec9fcc6e2fc6793a17323931dda067420067b08eddc8716cfd8bc7d2536 + +A = 1698769009b130a86faa6cb25aa286d770892edd267adb3b265958c9a49dc382de5361e9ccb26319cc27d16585ffedf0637958738ccddf7bcb5280e45a1c323cad72b34d022f59b7ea813bfb650c740ab47092cddb5ddcadc880c9e5c3fe5bc7c74caef8b88b264bac3632a9527e3834b3290df6403 +B = -a23b83d8eb0993a2a9a6011030177c675fe0cd8e0757e502082fc9384a39c2dac8d4056128d89c7bfc509ef29a818b3ab9da66e781e28010522ed625cebe4172ceeabc0a8191c0db4f9e004824631afe268af7d44e1883e07f71634aac006c60b82898b932e40655d87af6b8bc72fff4d17172e043 +GCD = 184b8443e4a246d6b8b3eece09c8a2f46826476cf5d02645e763fc82d915a4bb2c90b33e45e1671696ecf6c44796d80d00dadac6b1237b76096249 + +A = -40f89a0e67f77eae8ca0a49f0b66df0a90d75f7cfd08a294cea5d594daca79c13f5d4e74dc31554daeec693ab78378f5cbc2c4853809cc485b43eaabb7fa9265adf3ac5497adbcf2bc746a5023aba4fc8cabd28938a1460b2ff122a3cb3f1c0b831a86e5419e106ab1b4e3b1e38cd9056f36357b9af +B = -362fefd818d1c5f2a76ede54d0be2728e32cda5fc535885d8f65d90e953a58808d43ace7203d95b125f1308fdfeb00ae2e4b2002c690617fafecffcf5cbdbcf69378418fbe71ad90956e358bae6a0d78d4300f8c40b2382348bd76246169081233991d7bba235c4415c3b640c2df06c8cca611aa8e3 +GCD = 33ac061690bf4548fcc29a05f2804868dffbc0ee311af714fbc873c74b35ffa3dffe04b649bfadf05fe571afdc4bcd1609fe83ddf576c5ec2734f5 + +A = -15e1f05c1381306b7501c0fea671598fd6cfb53b27778e68e40ee79d0b3ad33d3ce5123f99c1552f2aba31054fe9b579d3d78fa63619c4d90cbb652fcc2e68408046acb69cb1a7b57ba420c0ecf57995d3fe1b970062f17a1c35449e7908da32875ea9ffa886a373179992c9f57c919f756ac2150066 +B = -d9f6b2044c6f95f5ce487ff5cb732670dec617e3740985acb5996d385ab7cefc4f675495e353c7ccb97e8902a891569fc7477c37467ab90236cc0a5e7093f2b477ce37d76dee2b922b4bdd05d4bb214626eae837e72761c32d6769ac9c5d967dc99c4736349ac0ef155aee59cfa4140c33b7504ae5a +GCD = e9493f51c5342ce3613efb829673772a28bd4425e268684c0286382c1785c1850019927be3aa788ad96ae463162cab7fabd350721f14d628902232 + +A = -2038137c239f3a7f9e9d2ed434c2f9492350f945d4a4950290df0a156cb94ef41e6a7942708b49e258e9a614cc9dbc7f48b1757192b651305e9ec29677131c636005ce1ea36d4d4d7fc32bd341647f4f842ff14a78294ebeb16fcc44a9b39c69a530444bc0e52a6d79143e846d176de1a2744273d910 +B = 4865069b26c718f0610fc45bbd1dcf3d3f9fdeecede27bf6ed8e0be9a8b77f9e1313f17381120d5adf3880ca0a608308b238d1210a2a7af3e2b4acef515991a4478217848bd46276b74fdcba352d426e64d36d4df5f6a89d565802f6f1a6bc5345b5a065294453e17750713b6465e51783632fb74298 +GCD = b1014148a7ba22acef4eae05bef50e7e45e6ccb04a459ef6f54fa020b8a539f9f47c6ebf79d343af5da7234a55ee45d721e4d5e0b798af53d5a268 + +A = a35858daa90f4fe0fbc8972983f24fbb68efd917ef8ae21a8d2c9d62d08a6e5da13c5cb5bf72382cd411c5eb89ba63edb54d5b34a193617e6b7149d94479870c8c1072acde2eb9954b51e628358246def27e863efc55322a28aa2082d75c1865a0c7e128a241ca0dfc97c6a6956be06ea8e8477afaf4 +B = -72ab83b853b1fc47ec4f0fded9a2c281f3d4177415e2bec33026e26f3cb8e88200c739e142074d9714407b177a36dcf3c36070063d9057501109ed19c3db5c5f97bfb14e4284f6fc6bcbc9768f4bbfe1c9ee1c3091445f862fe56f8e8bfb8db2996b66e647ed728c2ba3ac7c04938a1bc76b98a31af0 +GCD = 6cefcda22c30ab0fa89b4d82712356d12f5a2672e0d31687cdef039b9f2292b305b847c330e759e3fb5c276ad29ef38f2d60d790e70b1faf83d4144 + +A = be345e8fc34a17284af741c7cf0d885d1042f48ce5e6475913956cb8519d3506e5e071db788ff6f81c9917b1d0accc7319bf348bbb399ea22d99ad96c76fa89d8b6d4a3e0ffbd22502e3b018cdeb4debbed4269ce6f74dbfbacdc3f83632020960e289f247747277f7336b589cf9f83854553a5bb860 +B = 34131d13ad1fb2c3621f67718a324c4db373141d906802e673bc0229ccb5e205ae6563848fb218d6ef1b1cc97008836e0eaa6ea7c9fc00ff712c3edae0655ee7d58d7ddc03f8475c2b5c098fbf17de0e97efc8eec654af861861c493b57b76d3ddf2bf4b40b8ceb0e2398006c16d81b59b050a1e14c78 +GCD = 2fcf3e304ee24d66dc7a8c3bcf52eccbe508e3c12f1951407aba77cb8ef367323fbbeb9b7700ac96ef08909c94a0154f66f332ad480103a7e6d8338 + +A = -549d7d178daef5cb05e4e12fb881d3c0a49bfa37eacc23893292b7293082eb86fdcec97745af18aed017d7110e839b3dd907762beff45f5630a598a52a893e726d229e299c4264c0ad2fc4f54bec747537cca1a599ec4951f94cd343434b0bcfb772e91431e22f2892cb280c7fa4b43c5f3538c13fb4 +B = fe8666fddcab4c9520dca891c1757451b778591213a1943ef85f9e23f85bc4db4e1b0d5b7cfd354c84de41c675460a7a20e934df07ff30f93ad00a96fa9990b88caa4754d17429d04b8f3adc29f9d0682cdee2cc783d928cdc154e1b4506d6ec233bf14d0a77448606adb3df648b41472adaf6e86d73e +GCD = 4ff01f35a245dae14ee3fba70c3f06dc40007a11615dde076a13ecf5cee7a29bbdaad794f4801bf089131614b7a7b731e27c370b11a314ffe2c8442 + +A = 91fca0655d985d0a48f61070f899e9b1a993730a4e050df46dfcbb87853657a4807c21c14027bb72ed58dee5fd378295b5337f67070a9dd10162720f52da293f28f9f821482ddd2424a2843a7b71011ac40b9e9a024787563fd3bad45132080b8b7fac2525817a1a310fa74e4e6b0164a3c2b5a6d31f4 +B = 49f9fac8189229122779f80602d45d2f114011200d662df9559be0517551f2ab1ff7c4f8cb40ae8c453e1b3f17a8e1ac4ef9614438b8e65200b45fb1555a2f656fd2dc4e5b70b1b8aadebca59fb7ea51b4d28478add3a75f04239125822725458d404d9b0c12c2cfc7e3e3296138532310b7c19a4954f2 +GCD = 9c41888508264fac660b6f13049d0d8aceec75df39233f761f775845fc57ee9991c6d643341da4397ce7b37507c485dab704ecf30fe3375098de4a2 + +A = -d5636b21254fa09a4afa28c410c7f054d7a343c0b8b02af5bea4b436e50a7d365b530f36a61b81eb888c0cb117e4bea2a7080f238e0337747b3f6d2231e229b0acaeda580528c97932137942c84c5ccf79a88307ffc885e16f44e38b6519daea34a9f771dad78cf678a7c97ef6bd02e9b7b5cccafc3df4 +B = -b4bd518003cab694a4a5a19fa86de14f2aa94c473d24a1daeb1693477258962812562228dd9d7ee8cfe94d26296c081b455bb5387ce8f2da1d32ebd6eb6304e766782986037050f275f2d183beb5193f90842d765b2629107dcfca1622666e5908b0f1faed4fe4026f305bc59e64b8a3fb4ced86dc07e6 +GCD = 2d7f650c9ea137da64ad1ea979a9b37912f8e5460246790f9863c78664ed042c024d22dad8909db33925a5f96ad33ebf72d5fe5be8851dcac662564e + +A = 283369b25b345a445db025a9b3ba8b4b16234dd03875c5a3ac716ee7b5f903c7687ad19181e7e3ee928af8d4d29f03048172b84c6906570d27b696d395a16d0c42acf513c1e7ced504cf4f72d057c503800096bc9dd79f87ae34bd734b60b6a9939bbdb30e0268a5968d22a82a258fea497449dc5ba456a +B = -216cae4a75235a114aa89a9b4d6a5593f17f0b1990297215f213cc9e7a54c67c75289a09db8fcd668d75fccaffc36600e4030b40511e35b4d2c9efdb37f81dd082794d6d14c9d8d8651fd279e12262571731d8e1aff6bcb63d789f7393d1444ef19121755e25dca10c0c21844e16d0315bdbe1f4d2b0164 +GCD = 31303a60581a3924d1bae6e9641d022063e9278ffcf08a2d1a34b65fb9f9578a6f7d4e9b87fc81fd3020f0ef1eb69ddcf49132744d25c096c0e5effa + +A = -128ffcd17d717821707bebb8e9f981bf88520b709964c42ed568feb9e18a53c3fcb2b2147d01a64261d31b3c1b7528c21376e8437bb1d255502785022bc3e0dc8787f73440b91090727a51fb996b61b9ffdad9c43e913764839dd982bb1c9741bf905573e70b6e7b0471db298c85e44ee74c7412c06b59d4 +B = 1a771b29a19e8be7216cb670c57d2801364f682064a0bd9a3356a556da2e47b7ed08fed6b7bf16c53745d00ed7fdf6423bd385f72de2e396a1322453e96fa941906ec6ab3dde3c21be503025126d58559495f09b57c38a610b9d90da1e0d857ebc8258a43544e617a730b3c97976492570f969312b663aac +GCD = 2a4e74db8109672cd0e1b4c45f1b59f67a4fc4f7040048f56063d6e844c5d49412221a155848dd7da30f52d888c8f81639dba4beff684c1e22c786c3c + +A = -4e95166758c14a62731988165c67fdc3bc68b02d52e9af110c0c9ce4e911196f03217f8a7d54a6d12a61972ca1df4c8bd253674c847ac159f64f91a24f8e832309199736eca41e407f18f2bf18ebff9fe53f5de87e8d919d544150210014b7690bb006b09821d1bbd75a77138ca8c8a8ff1f5448f9147a88 +B = 5926e17df70df20896814a5dd08d6cf51830019d36b136c009136d518646fd3a77d4ce7dfc1aa9c33648b7946aa65f88544d608af691914d29fe4c29f60f55e58a2171e339333fc32a31edafa568b29590f6d1dd29d842774eb6701dcdff04a91e58d2826c2f024653ab3c92dabc011bdd0f76c03e6893f4 +GCD = d575d16c240a93ee16b05241c69c85edf9d11bb5a24baa9b06818a665c1110d6a82229312da519ddd652ab003d10c1ac442e314bebfc786eeb73ad2c + +A = a2ca7519384cb080569980a1ae22c782d773d44452fa405dd3d606e0b43911f82b8270ef948385f814e70ac095eb0def562389a867b042d3348da5caf5d584d189f7f26340e4a08e12d1b1206be7abdabe6ee9c9d0d7b577dbc20f8814a7e04232a8e6b61f13f3cc8c8427003c78f370c45a7b325e2f1d4 +B = -12a401e8d906beac59312ed0cae4dd6ce6a745022a1a704fd492541602d38d2cbfb6443c77eaaf9cf1ab4a2327bb52324be9381912bf538dc9e4442959482c40a9567b9fa6989b652406589dfe2f02b08ccf39cba85cd3c1061d42c905fb369af3c764f30cdcbee7ada624cf5d381dda68ee2dd203e98ba0c +GCD = 1dabe7e5fc836920b45fccb0ee6fdd36b9b2f5460eff40980cd013c3adeb3fab941215034d98361fed1f3210230189bc7536bd3eedf379e1dd24ab5ec + +A = -19c0879ba44d3e3972919ebc0ea6b242b121e593e817682bb419488717726083267cdfb5d9f5f4097d72877b935d973fb224fc35bfa3bef5950089766810e4dbacc04dc528f724d5e848524910a69a01bc899d194de5e3cca2cba60ad86d2bbfac7509d61b8fd4469b64c4ac1458cd48c15b6f987f992eadb +B = 2d8570618517ebedabe68659fc76b01ba278df8328d75c0fbdfa1530c21910f4e43ab6230717077c8aca4f418270dc8f290c7310363ded726f66de3c4e4992f76c9c6c26de623a32df133e006f5455bc5c72061e321e8d5d1469d937c2337c1299b5ab3822654cea10a503d1dbfa869aa4ceea8257da66bdb +GCD = 3594f8ff717c30f4c8aabe4dc8086b79330bdbc7c10aef171bfaaa28eeae6663a448157adc33004ee5e9dcde8f2c9d16c43d0cda95b29bc75a5c49923 + +A = 45896611f96f24b3765d63aeebcef9dadedf84e314c926d5c782da595c2c8bc4223288f616f3456c64635cf84dc3649c6040aa993d13f705e459729661e3ba0bf02a25f0f9108d47c630e92824f3ee76346c7d76cec4d6fe57e0afa67aacca8d534489a27fb23d10a82a44b315b2de982600f6567ff92244 +B = 12b62a7a4e0c0d3e830ce467cb87435d4b5162b780e13e50301fef5c3fa3a61af15d7122ed241b6771b198bdea5f3a38525f94ad4036dbe5fb86f08e40b5a9e0a5cac30c46896745afb52e261ab50b5fc3298e4521e7283ed210f697d5f0e0a69414774e5ad82830f1c56b154720b1c27946f49c00e56d99a +GCD = 4fd3c3efb8a8108f78a32fa3de1dad6eaf9c5078dd2985378938d6c3f8fa9ed30a2cb072d8d1c430bcf6d45f58e4a6475870b563bb72b945f69fb5682 + +A = -203c075e25bb76ece9bf8441de82b86e2ac215f4e4217894709b0256819b438a45051838410b7c32238cbb62785e3975a91d77286d584723fb3a0f598440904af00dc055bdb1931fbc8d3fc940e5af8f9d9b159bd2be17607be1d787c411e25b1e014436ccd787802474015c78a49a6e05de42c8d214722814 +B = -5410706a185e0febc19bb3e106d146c1cf63f61ab72d770ac9048c6069c665423216827721911e7c2f2ef6d0c9f2223506e1d3ae5e0a7ad866d7d2e2d1f4a3ad7f966f1ad2c8584146c30a5884f3c45caf60d784f2544541fe688964d3661fff7b03653de7b57543b6990ba4c2201b738ff6452762b65d31fc +GCD = 1cb76da3e6d75f90901e5a968d994d467180f26eafde55232c8dd72acb136bc044b2b1a1fce1e93e2ccfc01d00e541e208b8092ec77b7f1afce9f6d6ec + +A = aca40d6e53c58740ecc2d8e3faca8590390ae0fbfc634c065ddb53062164cd646ac2aa4dcf6107d9a6c74bbc013d8da5cd99ba62e5e90e6ed44dc1a1ade96d402d297a265a4861c2d32d2edee48c02e20a38eef1a7eb698661a03d5f1f11d0c56ff71a34110e5a0003fa83329cc860eb74347e86084f806ee5 +B = 213fd4fd30cb71b48b070590f5e32e479dc5cd3c4647a582e7a259e59fc50ff12d086a637720ed9f77ea7496e233932d2ba95d8375d09d0a559bef64cdaa3e5c3d635d8e32456a9c0d3d9182a2a899de5916a747c5c2493bbae171775d8850df88341872547766f8488acceccc49d88988e2aae3a7942fb005 +GCD = 149f0d624a09ed71cfa35f28d42e0d74ffda6b91a522ca050e3b51b85c57282b3c181ec6a3a792b187c284e99961ca8c1fda63b1d44b48c6d1857a5275 + +A = -251d8412b8d830274ae7afee7350de4a6f85be2f3137544e060c71da2a134f12a50a12d5fea6ec9f80184c11142a99453e42098fec72c6a7138094576687fc501833ca08532fb66c4c67183c0d1aac05257b26dd2ae69f26bca68b70fd5aa74a625b0d2fd8b3226ff2ae84a2831408d9ed3d186e2dba4e1cea4 +B = -2049c4a7415046d0713ec915d86ba58fe131ddb697231fa35daaabe60bb1ca0e59429062812706a6bfe543d0c659bde19af203666ae289648f068ab574e26704e156c0146acc25e6134c59b070851f502925c8fedacc7a71c4f7f1f6986cc077e80313b2b3d4976a265ba108b792e4fc24a446e1774012386c3 +GCD = 88d12b39d37215c55f3c5d8fbb240c59eefbb4ea896180fc95e7c82bf4125b10fb3e3a2a80a08e8300765609dcf67d7f5672a7c8ac1de07a879de4a243 + +A = f83eb1415c011049d463038d7db7af6e1557f763e723021c14314cdb37acfe2001eeddc8fb8afb676b2f8f1e1dbf78808c5147b4feafc8c425fc917c54e5b60af824194dc4d2a50b74eb3b14dcc6e99c4ffc068efd67a3d4886f85eeddea92aa09f58199b560d493f6d667ade709d6d469a41e1feca789cfae0 +B = ce7e7861e1c786e9d7e42c0a7131cdcaa7b36cdbe8458e2a7f2d5a16b3feede8e12e91ea24fcc01a832866ddc831f044053545c6182cbf2e9e1e1f6d50d1394920d64c99ac6071b8b8ff8a62de638c6904638d75add920bbf06c79929d6a44a923e60f9c1b9330f196b69571dd7e7397939cb91f52372a97a14 +GCD = 738c2164f5ed456dbefbce33b22fb44dcfd78872accdba08f621b79a78c2dbcc7b12ff67a24f15d183ef1fecb37ae1ce305585b681e83eedcb6563a65c + +A = -138af74759224667b0149821b2d1622437a80b8306f243e0f03fae2dd106004b18fd68cdd5a2dc2a2b20678c0cea6b4423154cebac3374880b58c2895122daaafbbba75540b31324f36d26107a32ea056e2bee52234a3f54cb4fc81f75322f5826adb80dca1f416d859e8ee48b6fc3e6962cfce88e89371cf3af +B = -71480328253bafe5b9968c0a3e6871949eabc3acd98096747db188fc534729f17f564c5324cb6e229e06bab4ad4764b66a0c642ee4fdeeadff48df016f57dabc378c05a348390e9429f49057bb09754ea803fa3fbdeccf8b459733bbeccbff1415241a8c14a6b76a82afae5e71ce49c84b88dda7896e9b92c08 +GCD = bbea99bd98e6a6a293dc79e1628603b7ccd0bccc1713ea5610e1d4e7bf4cf41aa73e4ad7c86047b7b756afa41762917ba81414bcde22e573e5d38be4b3 + +A = c6ecd02ebaa7fa09eb1b4bab64a0a21a340641ebccd545d05f2d723b711d25c522a9206c5a6b506fe2e19d13da4aaf41284d76ad12c3b9d509914287a8bf4a012bdba4f270f44bacd3d523e3a600bd51a900e414df83a4454d6252709f4c07bb4d9f03a397f3dc1db7ddffaedc119ef769e96b849345d4200ed0 +B = dc4a269266fc3d7a1b84666eed3fd1a1a2387354cdcb8a0a7f84ddbc1954e00a18a73698fcdc5ed75fb262fed30cec241152305fd7af2a7fa8cc7a90f4ddd686c7b4425cf199a8a5161c0552d22f47a13baa30569ea17d7ab13e2db73cd9eb879938229535dffc62f83783388c664f64c6cb037fceed9c0c902a +GCD = 1242c618cb49b1e5f0414bf98db968d0aaa4ced8b22862e72ad7c06b7d4ee6acaf6a53b2ec54111e23c8698463d44d41bc568ce6aa44e8d39b868915666 + +A = -68767e6f7b1b1f1b7791c6d124ea675768e43624642c0a18c02c65b17c23b21b21ab7c389bd263d778d85df4e7e9e068151cf54e46956c62a6a3a15990ddc912f672ed3f426300d69737309cb327dbf50fa3abc0e77fbe40a3142a9ca52e773fe988ec5e98a0d4eeb059f27bc39bd23786f6c55fba384cae97db0 +B = 49b702d1f7a2f770a37cd2d80fb5880ec0e567ddef08a26d471287379b7893d1139b5614da27262e303e8901161cec8bee11d8b58ad4c055313a996c401b14a09a0e52f053530d57bb21c0f1cf87bc87195efd2aa06737c4087f4c44ce794be02569fdb8a1d3c14ab31cea1a7b865bc8e007d547e601a5d60c6f8 +GCD = 3ba56275ca3b715d77e7b42b719660165c6da197d768cdb21663cc86ef4ef633d9ef5a32ebbe1784d35a8ce36573589623beef5ee27403d97d78b04b8a8 + +A = -127aaab3e40c06285a2eccf231e529c4e7a9119beec49c036f2c9c36e7a697d92c123a6dc842053a3a862648bf3f5b5159da1d750ae40b97734157093eb3070924d0c45652e9b003f6c8207556fe7e93d26f3760fdb922aa9667979f33bf82f8941348e354aa8e42d11143544a87991a5d01bf4825be68612a1fe6 +B = -ea59227edde6e23afd14a7ac889dd8ea7a160a63da1cf2ce94a55690b9580426c3df0a51073599138b567e2cc9fa3ffd7eb2ab2262b909052aed284a4b14a15498a03f7c976f4db515a70c799b483463d4c35b794fd72a1fdc6a71974a3ab63636a19e3ebc2a6b7a3763fb5fe7894ec17e03fe105b5a2cd530bf5 +GCD = 4de82f2e206104ead6ca55c0c2cff048d442cf31ffcb73535dafadbfddd1a6c115968c4b428b1ebef88a48093b2b56a09e15f2c12a941c70f772551a289 + +A = 95a6b512180e78225517d22c10ec89f570041c4d11ac1439aea052c804b81f8d2054021a7f5952d4e3a1ecf8a8d808cc752d2b71569aa8cd62f86c179a7ca1a03eefc68797928820f8bda731edac663d77cc40966a8bf0e4a291260cce7a201ecdd72754cdc4d9c285944e5642414918a3fdbf4ddcfc073b2303a +B = 3f7302e6a5a72d29302a27941fbcd36bdf744aceb77c0e19e13fc5a53def6defb13a9ac64e602ad3d0577b6b7034484cb0b5c03ce9c4cc042657df7c9f913fb6ee3729b1a82e7f32a798925bd6417689d5fe8df008fd8c3911bcb91274c2e32f892a69ad546a0f77a789dbef9bb0d7bfa5c8eaf5f00728cc60bf26 +GCD = 8977794c5a5e9f46a1f6e84100acf294b57edcbbd2ed9dde67d51eb92885b2738878cbfc5da2bd899434ff43350d4d7ec78aa4944da59ad135ead3c0d3a + +A = 693cef3efdf58a4906251a2a3be417188a977fec58353d8945484abb5377aae6f51de48f384c7376ceb4dc60676a538b2e65adc40f5ac6fcba8c745cb0294772c770ecf49f5ad784aa9124e44483537a814c2dc2a75d0dfd57fce4e1294a224dbbaa400de6440ccb594a654cb1d0cdb9a86d74002ec2f6f6c81ba1 +B = -3745231d4c7e85d22d5b2a7b511e34a5e5921fab4650333e0799e6263801d7bb212c97002a0eacdd23c345d8f3bf1dc39187e2f992fc03d6a74943d5505dbc6d99f756c9cd4c007ad555452d1544c189214f04d723eb8e26e8f487e024e06fe45e3d0c7e178d7645fc3e3e404e00a323b701eb27d5e2ff0e24fd22 +GCD = 1e39c2da58a27cc13ed1c28e5ff514304e69bc3a61f002f15916ae6ed530668816fcf158c31cbf4e0bbbd881827afd65428249086245bf5e31ea36dd4225 + +A = -513b395f1a78a339e9113fd5c86f1f88665a1838bb46401bb049eb868817d6e79041f8b654045f9dd874bdebd02474eb276c7bcc5cd951935d15a3d3319af96697ee288762d4c2bee28ff2713f088d14de57f8418ddadcf1bb3b657f4b02f544cd9200ac8e2a871c8b9400433d99ed7e395895117307cfeada1616a +B = 3cc965070c64eb6ca304ce8c477855d955f93e712e2b1fe87be8408eec38078d71c4fda775342a34f88ebb2e00fbb4204b0b32f10017b9d64c2901112bc85fcfc4361cd49c6f482982c5e81d53e92cdede2338c3ecdb99af66f56bb64daf57a5c8af9a8ebabf745a7a057f93abf5247f5f8bb348acb8fb7db29550e +GCD = 7df3ca64d56be96e30807b7bf9e24ca7080b08bff91fd302f58f15750b37d27c3f926629d841b88fd49e922932601fdf16a99fb36b0f27d768e4d7ae5b5e + +A = fbcd99875c5084f1a0c59b5d1fe603fa71f69d3c6fbfc143a7bfa726dc9d71401860e3c9680139f1112b40456fcef378e7342892ef8433294d45899ae081b6f4df708a0e74626a433ca8e9214b69f0fcad6aa3c53d65f5ee45564177fb8b66d3868d9b2f1e66f04016ae835f2f2d857a33e553e64ccf204239bc5f8 +B = d977b0fd86671b667777d021cd003325ee3918564fa2a51f6e77aafbcce042b5f565bc95c5fc9e1b8bbe35e17e37c22c2faabf883fde575c92df7a7f01db9b9c0726808ac70f320b9af5ce6cdeede6db98a3592a59cfdebcb14af2aa86bc92c281d70fbe6f4ed3fa0444717bebfeaa715fc4a7ff3d8ea1508759ab0 +GCD = 43a145da2e0e11169332db03d9e65b6f258c36e5a10b9c00bbbb6395e6597b19b23e78568e931984304c841db119ebbba8a0b41ffe5f4e23c7249ccd5c88 + +A = 38d916967815a8a1b9c77c39e9b9cb68b9f5350da609c2cfb904a77cdb46ec97d27261c1a40da198d6b4bb14c7aa76cc9b57fb2b09fc4bad131a01cef9ea7eff248d158be35c2c185357c43f7b5603c46973e06c151ef7475479c375e3ff408f754cd162bfd6cfd1897ff7ca409284d3e873689e3d9d0e61deb1cb99 +B = 49545674a69872a10218e111c9da7b19f75c87bcc5129349cd29f87a01a5c498870a5318849a92b715e7575c7a46c07b4f17d34b456b7c72f4f78a1017ce9036f1040b135f9f9c0c556ad9255918d939dcc442a8b8ef576f71686e13dce788fb3773c749d8eb93344daa67f039579ad47bd62a1afc4a5818d360c9af +GCD = b5bc5937a6c81084ee5da4adcde46f5f476b1cd5b42c14d4e1eb30d912bb5fec64c9bb0e5337cc85087bc09cef3debfbf584c21b6c3df913c61346c4711f + +A = -bd708af6c65e7bb058bd313bc49ec919309bb291adc7fd28f57f7cbb1f1d981bf870ac738ba863fef2da0f8734c821fe985aaee4fc64db5ad6e7c55f5cb8dd4c9554b804b4f34e15689dcd2763316a84c628c802e58499bc3b5435bae10190f0ada815625fd5cbb6efae464746f191bdaf935343e94ae1e3d1ac7b91 +B = -a23c7040e19ad5414e36e9765b6db062bd8f0c56058abd95b1cfccfd7eb4bf030d19831c802b18b666532c20fe4ebacf1e530da650b8ed47695da3a3f25b7ecce8cffdf4eca155d8d6d2d6e37a3b398156e2f8bc2946161215e195e4a1feb5c8b7c4bbbbd03e706c05ca05e1add1096ad67e58e974c1558417509c28 +GCD = 12cf97727e27ae47b69ff22fe8cb90a81649539c3c6c6128b20c270ca7057953e0d7fd9d79be1bc408c60f6ab2ae27b25961996f1acb272b179676f7185e7 + +A = 2ab0e6ba66ccfeff73b17a0aee7e9aa1d4abfb9c6755887f98fffc1fb1941c0f6de791ce56ee6a4169e0b0d86277f692a5e1ee871439c12850367c9667c0ddd736e31485f15ca10ac5beface9d7b4f0262fc3a8ebc71b3a3f0a8faeb6955c55f1010250cdb01baec3538f364cb9cee5180f36414531207274db53e338 +B = -8392986106b73f2bad56055c9ad846493527013ce88c38f926a342fb0155f5ef505d1294003fd3078b4bf64c2037df9135992bee219c79bd48c7d25ca40dbda361a9d24174588dfb6825317448ef5ec9f00593cf03e2555f6c7f37cabc73434185ceacc7a1d8bd4dc0abf87c571348f65432a2681a4afeab44e06438 +GCD = 22815e36702fa7487e6cef961cbee77287170245c74b37edefb86302d13a2efcc2e80a1c41b93bff4654d7d126dd6ea358a043f7dc0de17363b206d08dfe8 + +A = 98660d75d759865da5b72d224d114ac0cd615edf0bee553522878cd58c1e2899f88423f3c3f3cabcf99b20343fc1fe5d2ae9fa7ebdf7693329c96852f3149818c65d72da9d82e7e18b6144eced2f33f1797569f4fbff3d6826de35cacf30f4cbe78dc01166ba5a11673d0a5826e0b24e45675cd1e1f7acb876b8bd5a8 +B = -4ff9dc61cfae64efe7300b8831782a71dc73ce10124598e6610f5b0d99fbda0aca67d52bf77aa2478e654651f94c338d80eab969a6afaa714aaf28f3d76063f7366299cb982db59f873535d4b87c2019b21a5f72340183d93746ae9fa5259e4a14f59077eecc1118f981a333f60e5cdfebdbcc5cc0f04dd054c0fcb88 +GCD = 47760b38bb7ecb7ef17a910843df934dd4c6183b2d3fbc243a61a09a86f520fe26ecb245e10873a1e2eace8c416b0a1ac48e1ffba8c77fb6c639b5c1a2158 + +A = 2f6e87afcb85ddfadd400724f05f400c6df3fd050df7e82b2b1d13eec135ec933145b6ace02de4fd628485de5754ddad42a7a739d6f92f84161821503431aac74c77ce2d73697d336278d2edb0d4e8ad4963654f83505169f24dd514fecae11e97bb7d845620f9e98c06acd9003c4f5e88d49bf054b42ee10bdb0b87d8 +B = 4bb4cf7d6be4ff65d61b0eb51a9da0f9627b2a2fd47cf200dc2936dec8e447adfdaaf59aa0461a585a7b9e6d09d153f42cde62d5d45fbe76ddca200772c26877a81c4546118d8a4eb1f1e37cb81f69d83b9bf82b30211d1b7d62d3296574148023efc92b87ab0c5b436eb9879ea9473c38a5c0f91e48f4613ebd78ee30 +GCD = d93e2f0f2fc45727ceeb2518f390f16a86766578f20cac064816268b00a2536b9294017dfb6906febb8c2a37e6d759d9469e174be737f80476c4b11690268 + +A = 4e7982f0c2a5bc14095e232c0fc8c042ac084553304472585d9bc19dda0a67af01c054c252596b493945bf24ebabbc677ca1f17243446ace0ef332c8b274a9e8ce78435e7cb0ec1dbc548e71e9943f618b799524317b3b4bf96b81a609569bf756df84279478eba30e64c28245c9365e6e4529a2309a7d8bbf9c569ef8 +B = 988ba75e045aee5d9ae328204221bff8198026f60732fc237958c461687267a716167dbb8208f57bff67ca01b51509352c09d07b4cdfa3a6b1c2c54a563794f688193bafdf5e1135c7f5f8298364ac39e3a1203fe3d5084022d83f948a9e1eb1d2e2e6962d47c31a4b845bdb7b0e487c81d0325a6fc0e327728f9ff274 +GCD = 3677decdb3cc82c048591e67832d5f1d0d0ec4981b5a1db3c1947aadb8734c66032d8feab033d5f3939e6a7057de6d45062da93e872222c2824458ad06cfc4 + +A = -14eda5a73a01d371ff172abbf56fb9955cdc957ba14b5bb50bb7d8653edd85bbf77f88b19c0f0a404c432133082275fa0bf0773d284eb0cb22960c7926bc1e155b44effad6a630ed4104e88c745ffc72aebc944fd92c16394fd79ae59e60c253df0b3af16c3c3e9b2f2c8be6af669ed8bc14819f588687d81f2c9e8455e +B = -4181eefb147341f1ead133ada8563629f09b6bfd0ceedb0b00eac1042a988628330bc5f399fda4c60daac3f07ed43f4d8a35eeb02b63f03a732909ff81be8ea9c8fa3c7da6f44201e950e3dfa8742c92f3bcbf7f246c7cef64439387f0466f1ff8dbb7c3094a6cd79c6bfec33dca8895d13213f831b00ed28eed9b8792f +GCD = 228ef71b4dd7f5e653351ce15f2f96866658af3f69fd5131069be9d67fe302864062a91605a057077f32705041aab5cdfd9cd9d3b2e40b064efe871c75bda9 + +A = 919950e68b598cbf741370b1fc2a79fc0807909475ebfb3cca608602dbbd609c2fa0d5eb5a7d4c4001fd60dd68739582af356881dc06ff3a5250348c6b05ff2e345bff7109afb5eec3ee95b3e0b6460d43676a792ea15799b23e1131481e8a2a84a77697b5d481f1efb38ce74260087546f77826a4bc77f027ef51f8808 +B = c6847029954c3f457a4eb7e1729434b1b91b0e91f9cc57723d15dcd22d44ef5e838425d627b9081f7ab2402737a41cd88fdfa587042b0afd380bab111070f37ab9d9cd7c8e451d966166c1259d2be0ee713f5b306a7d3d92ccd53ac4a3542c04bec219545e6496a3bd9edeec46d864f81c445b6ede3480a0b050eb7967c +GCD = 4ec2fead1ba8656e2c3a7dc3af75f3abcda59b85a7f5881fa70f61cd0584ae84d92e21b3504ed80a42ea2486faf6b1db3e0b2811b5b3cfff028fb35a4a794c + +A = 2ccd42079ec1eb205fb71bb5b2de3049710b6d29095d3604f3843b1faec4d42825dc0882a8cf3190cbd643f837cea97d0f71b9cf1a70dd519a5df05ae9dbd879130c151974caa059dceddbbcb779c42cc2c7122fde58c91c5cd1d23b07470df75ef81e1fd7dbaca8966ce8e06423a067f3a280f101ef1c3f2e85b8508fb7 +B = 3243ff9962b4f282ffc4871c26ddee9d1cce6e17a3fe923ac6c301dc6073bbe21cb6f39be6d8392702ab4f9b7b52fa1f7333073724cba5465b5d9287abb1a702119e607c1dcfb2d109375ea729d8f741c7e0e1690e10f91b580132c8038a0901f5146415c1df7c822a5e2b1169b11ba9848ff198991621363989b82afda8 +GCD = d8e3457831ac26b35f7f5e0d759476364c22231ccf31a3fb1757f6f19eb70e72ce638fea07c49cf6e55df46fbd7e6dc736c929b212192d5b10835153cdc5a9 + +A = 3ab22ca0fb114a3cf0e1a524752badae7b41658e30a13b7422276048acdc1cb77320c9b792f0e7558c0e79891c1457f63e7ce9950a3cdf3445b4a599741f9306dae697672666d5eadfc2a570fdc1917e5a1d360845e89fc1dd4d541dfbf2c8ce54113240d853186f5bd71dac2f336888340905e8f99df0f3c4f4f33e51f6 +B = cf7a7fbdc191b36c7c43ce87e244478ceb0fb26d379bc94262bb0bc2996307172425efb57adc446dbb8b5da556fbb05b2e89135bab0dddba0200c5308c9a104a7ee54b9f6b099fb6164056693f1913636ec753a9c2f429976c7f522cb0bbf22599149f53925f5678f44559563381882353a98f7ad6b08761d89561beec80 +GCD = 1b264ecbb1e5dac047c91b5514d56e098c71c0d98a0fbe7c63f8a38dcbe2f5c37d354d5ad4ef1bdf918c4e15f8dbdd0d75ad44f6ca111fb37ac076f61e62426 + +A = a1bf367279dab65e06110c2dd811a96e54c2a3de86f7e5144203ccaf83bc59e8f9e3fb65bb3f32675f74eeb27f8c321964d7dbfb56e25074a836d7e559027285da0d97df7170137ea867b5af70c17f764079211e7bf3a5ae9f815237731bee6c5a4d6cc48bfb1eaeee6148b102035340831554df253599be539edf856c92 +B = 2497f8eb01c2c60b5c5f14aa63eea6820059b18be163b2b38cc6c9ab53956e451187ce20f31c0b4f7d2113a79728e6f5c578c3b09739647c1186f18d0f2575ccd47f7b7700715677c25ac4926209d5bd7dd50e33c497e0e0653b57701748d5988bdee1f632476e47771ac1b4894ca5165e9d4872a73b457c8a54c2f54c38a +GCD = bc70cf3f602b6057f8e672eb7cd6f89de87d52b7926de031456ce68929b824309b5bc6e2f9b0b5653d91d305c21aaf592cd27a71d00c060a1565e81cd8a2602 + +A = 910f9ad46827e511f8be5fb4a190710bf8a18ebbf2fe45778a4088e2560ff2ee0456c287368e9fbc7d44a539fcb116d6b12c7c8dfe312da6fb3ff1fe8029da86e212772826e9eec7e202e8d5f977d7c7646a3a5116bebea317861beb89fe50f5d03ade992e97d216e143fb60ce773b956764116c6e481ef971a7868277a7c +B = 80ec11e11511fc5f21caf2f45c38b1e01bdbffbd7bc88c902ebb43a18c14e8ccd80f7d6e48f2b06fd582cdb9b4c9465fd7818b43eeea308ad4211d2e55e745b69514fcb5f623d80095a4334e1261a101c524eb39219ed185afa9d9f1ee84494c4a9fb80985a781eeb2baa5b705b5fc7e11b130f26bee0b18402ccb1fccfc +GCD = df8c939bf1c3ebc939e26d20722bc605983378877c1bd88e9a7f33890406da770f82bf6802105f388e34bc3fa59ef6b1ed652e88c4c4bd0cc92db814bd2b19c + +A = -31110cf46b0ff782c66d87a58f873e7f55f51cb80ef55cebc13f32b09270fb7438313490c600e865799e95acf69f3f9d034c50d7f450c19ad312f00b53e13014440f519e5a6cfa080834defac6be2399a0de7e8b82a40194d505ba98b3043f0dc035549669256333c0c8aa0612b870398bec4f5cd64a0d8c39d5fe4e71419a +B = -4c7f31f475c282eb7ffd707d0b99330bba1a54466ed6b04c2bab0dbe51eeae73017c4cd45307e518f21e8730bdbf55bead1a70b0016e53cf02660493e805edfa0fc85fc04a4d83c967af98da541403ac815880e8761e458a6a79d35114d3bfc2a145ccb6eb87b3fbc99ac8ee147089a9b99770b96cd380dbfb932717c09946 +GCD = adb1501bd969e78f553e43b80e2b62db8fb62faaf5296e3981228a0cca34848408b2d6db9c7f6b911f5ad64d99adb1cc74b041959576e2683112f8b5080af36 + +A = 117d79a7564215386488902f48d6e8b50c034bbdb1e810f42a1c27dfe2da840eb89e9f4716a841a15ec7145de969325bab67bcb50e4874756468a2fd160996840d5c0df9295e5e12ea30d657ad1d097eaa2e74c641a9cf73dca638f13479ddeabb40914fb0901ec7b6539b62b7c30bc2ff785752a59f9485bf4c0e41db26b34 +B = f448af3a6583cf606497e82c7e1537350d1da13f008c31c4d1ac4a07632851f6141189dbc0dd03cc5136ec17ec8d3ef4b50b89497777b8514dc2c25057be55dc6cabfcd0d4de1adbbd65b2ed69f39bbb81994f32778c9238b0fe54362534fc105cf8a4ae767fbec8c6bccaf1610334bcf0ad7d8b5463f171f0d531e215cd4 +GCD = 19be1a451384eb66801bfbfc93a17e675b17a4dfc8335a7ccf4fdae172ef6933df35d602701d1d16532e1b8053f3be021f89968463fb47191814c2bdaf08118c + +A = -734574d9318e8c540f60023869d9429d619eb9e0de390ae72d7e1cddce372edac46c101e21e2b92b2289953c20d40465178dcae5b744a945dd96ed6a1236b8ff14c66ba8d25fe6cab31d6fd3e0fbd62d2b421f91f185f1d8ad77cb71286489f6159b4305fe665e88daef12c28a77dd61bbde725e852ca09c010e6d6c6c34a9 +B = -6c0f3adfff1e856a75c60cafaa68a0675cf96eafb0b611e42c0194d0b06a957980bb5ba074b04a02f3b8d55bb1d3578e4424de407bca731aecd2c098e99a8bb56252f392847c8589c7cafde16d27a72a7aad96b2245516cbad804a9bea22061634d283bbb2be406c2ae89a84435263518c33ef2b1a50027dbae69ea32b33545 +GCD = 3edcb3fc86abfe9890b558555644e2143fb68f80f63a7a71226c62672786c1dfee151bd28c0193e235c59aecce29f50a12e3a5e1ecd94c4e84db9cc932ade877 + +A = -15c331aaef740df8cfc9062e52a59f12bfad55ef1eda131ec4607436c87f5fd15393c9e8b6a4234fb5d85199194e06a8f6898f0b1d62a8eb7fb715b27474213cbbcae6a999ae8578442c4ab214487bb12974224e7f9e787b0dc7be2a82a3edc6d7b57689b7e2ff67da9b5b332a9d5db38c0bc080f46198825966a850461a47e8 +B = -28d3dc89c376ea218114791d79e05ad9c6a9666d195fe642c18c971e8c2f26c0089d503cb805ac65f4f475cc25e9bbac40c82570bab7da7071c033259bf720c2a6f9d0ee87b2b27fc9a21a0ff15e2142e9f761c946a2e2fc4b7bf472d2c492635d6b2b94117d3fcda8dac96d96b9eee10060ae233de008726087391b6eeae90 +GCD = 177de3b3b459367dd89048f3ded5a7de235cd417dc70e0e3d381bd5c200e812b307d1c4e09a78fc6d7016d3d30c9927c0eb678c8c3d87c8b539d375c45f459b38 + +A = 285695b9482127e98e8806fde3da4fa50c2e8245d3fdefdde6d8edbea9ef8e9d16a295794d720d9b652e2e54c42ff349c395f855818b441be2a43119969517f9d541a39c19cdd772b180ae4770022fe5c53361fa34428853d2e7c680d1d90cc3521f2f13213c8cef04cd82203f174336ded2bbfac3bb304036cc1a1c8743bec0 +B = 47cdfd479a80ff62478a8a9cc4628a6bfc4131ef84deb0f02465eac7bf710361199318fd9a4b032c0b385d4c7392af948b8f89bf188620861fdb60bc6cd74bdb544c58634b20b9ee1225ed2f24e7878c62865521c8ad6263a9d19fc3cb0e779e1ea8d370c3f0df037d660ba1b01c7a9fc2f71b416ccdf4f53a3a350e49579374 +GCD = 13e8a2a0a5386b21bd4dcb1585260b9ae40f3c9941a13507396979da9415fcb76fe623cd0ca24bf088cc59f8b05f4daeba906505d5ee6c94902cc18688c9a4a04 + +A = -14f94518745c5fd856fd8b5080bff3df9631e1e9a4d4dbe038d86f9cfe21ee39aab3ed16e569ce7ac70995a328ce34dffd70565716b372a9af31ff1acb71846a66a37a6c9eea6df183b6c8ca4c57dec2a1bab9bda1bf498fa08c489fc4603f4f8066060eb1f0b29ad82b89c691254c93fe607cf4ee123e0b0d02e907c6e707880 +B = d7c5dbdc000192905bf5631f7828b7f24f183912a3901a2b1432943031cc82cf257ab78fa32adc5c18f6dcc38bfa7da6fcc6c71fce34d317861568dd026aa3a7afd53b31a425477598a4348b833fd85d62aa17bc1ca188c36a67d6ca56210cd2a2205c46797ac9cac519a8ac55f5880ec7a0b207ccd8abcc7f9b0b8e5eeeea4c +GCD = 2e8cfbf2e67195e00a24c0453dd876590a22c680eed6ea0a790567947e97bf9501a1d4ed29bf0a09a45fbbe8346fd2587f07734c6604589e6d13d654a2deae6ec + +A = 3febfd8136abc153063b564a10e4d0bfe9c47c9d193071bf144a56ba6855e06142d3007373d223518382e7e09470f2f2105137d7ab2f8faa1e5d3bf280989068a253982a2a312b2c2e68500f40b4eb582a8fbc338eb80a582939cc7925ecaeded2da499bae15b7625c75b2e90484e0e323efbf953c6bf60be1c99904f573b6823 +B = -11a39f49857c5be8a407e1324c3bdb7bd74e3744d2aca071ff3528a0d86546ac7e86b4fdfbb4adcbf691976d530cc1e45690eb65c1c64a6c67beb53c8f6589dd08b6506d7d515c4206da4b5e072fe0a7dc64c3e5f4d46c32a1e8fa1edefc39ced8f80f49ec160de6d29ccfcaa932680c2a7a59a4aaaa9b300716c3c16b37557a2 +GCD = 36273d81ada020314268b98cd3d7c5c5f198c49aac7ebbef207c93900a53a11ebf8a182e1a99b58cb391b0c11cd68377b471d377f231803003a84d6a9d73a30c3 + +A = ab69da9bede9e556bdf493c1096c5bf522b116c3a06b0d5705b51b70971c81832a97b6fde4e3cca8e1beb24ed68114954474f0530f1ed8b039a401d5c348c7e3ce3ace1c2ffaede886ab18b1f769f95b9beb6590d5157b39a1f09e12694a11877827b4b2957909b085a6cd2fc4ae84aefd52b8277e7271f3e0b1bb45cbf20d9a8 +B = cd5e6e26686a71497f72cb3a579840129317aeaa3f69a74afec69740af77b2bc0d735708294da2057dccc3ce07ea4371313ef88ba7b0a5e7e883e96a9bd0cc3be1c8048e47638d0598178b65eef20c4df2b9d7a2e0726f6d0ca6f5cecfe3fe4923b23e2b2ee92e2b4a888992ae67732cb6a75c25d9a9c35635b7ec08e09c1fa9e +GCD = 75f66162283dae4916bb95d00f35d29e514d49b0755cf871f6424dff7010dcba0f5a07e69b7ed097c346c3e8c2ebed2db66f7c946dca8c95cbdec761244d7789a + +A = 57af33f645d148750b1ad790d50ba6e97731108bf8bd4c351a79842fea8b595da51dd5a25a9ffdabc75683c4a058b8cad823b22c513eccf215a8f44f70f7a491765a70d1867874377464104949fb0f76a4a20e4bd4049874817049529dd7d2fa5c020bf4e4b4699d130b9a9208274aa3947cee267239042ff0b263343fd7f8c16a +B = -39dc77cdbbbfe740d05291eba1390db06831af0bce8bc093cb1684d59fcab36a4b26b2efa4bfb20d949d4922ff9cc64e26238648810021eec9d700638efa292f2bbbe68d42fca1680871c37a2731177d4302516baecd5850a59705fd6a471a15be5d19ce108a927a1ef42316c768f242fb7e9dceb385ef388a68cbfbe7d165c304 +GCD = 1b7cc6a8cd7ee5860029fc0657ecaed3a9ff8b7dac0277082995585e79acecb34fba5dcfa64849f67e2d25d129aa09704da1995aec86558c542ccb35019e39bb5e + +A = -17eb0227bc4867601423b5578e3af81af1d062074185c77cfbc52b0d629149bcad356d4203abe524b479500d9a54ff21bdbec39ea33b29de6cd9ba67d35105226719a34f7647ec9be5617dc99a651815f67830be1118a957676b997fd3cf8aeaf9e3658c8b858ef32918aa98b9b9bd6c7c7f0ec3b283f80bc7a4acf95e43cbc8a2 +B = 895785843bd944158c829a11236a374bb9a186f6fc397944d9809bde5f1095a355e932835794e01e64f493d1c3de93043979e09aebbf9177295440b616d19014698f0a9c46e03cdaca95e4c2c768801ecb543c11d0ec9643472076f563602652ef5996e5ae3bdccbe52083acfda3f4ab1ed74a279f179401bdf5ce24f7fc2cec7c +GCD = 22e878c652b96562f3bacfed268adcf3982327e5f5a4d271b7547303f2ca7037565b8075e62040f61bc746b71edaef503868cd53b2e216302535ae687fa0eb73e6 + +A = 42831fc823be26d259c1a55c2be8c179be174b62ae1d5322e445a2aa0e5a0323edbf8afa3220853322798bdb1f115b421e94e236239064b576f69ef60cfec499d9aea749157dda1a2de4495ec93775afcedfc030366a6630d927db392ba842002e67dc4412ec6a61a4724221107ec433cdf192d944cef4e61f5548df3d3dbac6ed2 +B = 34bc92fcc7a6b235184c18617dcc257000379ed708417900e69eaa9ba1a8931adeb89aa07d2c734186b018934844099b77f4088f17b98e990a696563bb7e9cd2ec4a13e9d1d39465f78428cae6ec1918afb3a4b83af34e7f0cd5982cafddb9f4c16e06bb96520a60f314e9ae311562d2e7d7b709e9a21b0d1ac92265d910acf3cfd +GCD = 22d817c2334ab652927ddc39965cb39547d0e7f38351b738fb89505b01330b8e221064849d3b24d59ffaaa26f6b6ade2ec7a4834f7791c267438bd91836a4542d7 + +A = 9d7fe1db937e25604935d50dbfa3aaaa34f082fd4666560cfd0b4f485fa5e9a2a123190c7b5e4e21a9d030f66584448d6d0e3b17671fbc98579cc46fc5dc8d254a989107a385d96c30580fa7629c5ab92497a42120f23a589be56d00e421c54c94e35200752e0c155336ae9c2f3f126e3a8ebb5ecf9c040d86c3e6364dfe3efaa80 +B = -6a1263ed757bb83cf53097523fe0d2b991f0e5857683840bbe062374c96118411452842ca32ff60a1cc2f9cd6e692f2ecf191d6d0ed2413f0addf86ee93fc2267bd17b13178ce23b5cab7d9abcc76a5c4da3b3b2c6f44eeb1d781c6d60606e4f3539cf5036f832ed3787ceb8104d81a15d76b3c3966a391fb54d615f5f231828480 +GCD = 37d0d4ed143057dfe2b8b0d2e06321150aaf64f1f2077b8185107416275fb711bde9005dfe09d451f17e5e0f8ff1d301b43893a1752b678082ed299e97aa33ef5380 + +A = 5fe5c2cd33a5e6c2e7c2e2f60b84f9dcb284eb592d4ec1d6e70b70b08d72fe768f03345153b4530461090d697c2fbf164b4aec85b11b7683a66690de9649f4b82025cc77ecba25f80fa3a8c218b3dc6b8a6f925d16aa74e4bfdca7fce9022bae3869bf2aeab8e07ee075dc57230fc71fe0323155e3eb4b0fbb0440adb6593295e679 +B = 7055cf3fbc952721bbab8da1a7d689d779c58cba85645552ee8b307c438b25fecf26927fed04b61c2fab944f33c4dd134c1e4a3d5d29017ede3f52d5233c6d16e9365de1ee20a40d790f62016c2ab0d125021867ce8190c237c7197741ab955f990f6f56c2696135638be3642f8206edf35e2a7e82fdcfec2b92e576875acd12c2aa +GCD = 4e8b6d19f248bf2d35688b32a4a1ff4e8bf540f7726e0789f4de72c3b6ba8ab56175b8e5da1902771fbafe0970ec0b1855deb139e2a672ea91d1e215aa7babeeb97 + +A = -c73122c4997ebd405efd176b671a30b7712467ffd50648db6536c5324e6ff6069895004ec310af586abe578b48b7434a173deada7740e1c5e5f09163c92a6aad363c2cf759284669dde59302b630d47288ef22c94ed4f4f8c9cbbb4d0a3064e7f458570fc08ed73cc7794cafada0fe5e554e3ed4f97c023e8abd2400ae98f643653c +B = 4943aeeead98df0ad235163b75a061e683c7b315516125bc612d955700d1628dbdc7cd7c3208e1637ad5c722c0d14d6058116f4766c4f9712153bb1c5aa428405c26b277f4b8cf671fda5d6f2a6b03b53b109847e5ed4fdb5ccf9488d0d69e6fc71616672e89a7a11c7eb7aeb5b1c64b8603e940713fd00bfd6408af7c1db0033a0b +GCD = 117bbae0438ea8c8ebc648bb6008db88d5df35204df39c1b1ec72a2de826fa9c64696cc2721f681cf0f4b793504b0740c51d98da3ba4530c67d44e636c4a351c33b + +A = -68ddc8906eba4ba628dbd1d190e068acd5cca42ab7243c66b453f487efaf76e80c648d84e2e795a77d20df712c7657cba19b6233d3fe98f5770c2297a514908078640208aa0101e14692449fb7ff71007a479703e1468145951f9d1c1dd61888ee2311cd2f4ffa7c1e85d1275efad6ed2332c7d17c151d50b5dff1c1b5038d687bcc +B = c51f295e6e035d3560949b3b7f40fe1346ee74175873e6322b7453056b2cb2084cb572311a669f7a4886b10df5370239ec4414755902c01d9c6bf1c0afc15b9983862286c2265a36b31e4d710c75e561f1b04cef60c6ae0c36238585273de642790ee4c7666feabba536a0ce5161006d7c2b329721af997b41f47c17fef260671044 +GCD = 16d93374722cf4c1a19397f1febe2dd4e085b8f1665ae4af359cc4f05814bb94f92b43afd8cb6ce81f162d02c5fdf0d7b0e6e8080e56614209cfa002d0dfb45c0364 + +A = -434b5e0b619a386f9a4bf175152be8a216d08dee40d2926cb5662068391c31bbeb231f661a3d55b4e5fe59c7810877284d07f2536d57f5becb264ad0d1e7ed21ac269f6274fca2389aa1787c6535f6f3a96dd8130c9c7786d70de25444eea1ce27716b20ca751ff9a1071bb359739049ae2d507ea9e3ccb63a54ee065507c17586208 +B = -1a473b5a7cb90b20d1e5933c68a464364f3200d1b175cb189c2b4664e4f68402e773c672970a10791512be983cf7399f3c652bb23c467f4833a90f91b05afda4c18223236af16514d7b8b6fb560547ceaae7c8c03589f97c641b5ec8f29b05d44bdd1a4f73286aac830a66e73f37d7836149fea5eb305a375a5f970fa3f9a8191b19c0 +GCD = 5503230cea1ffe7521d5ce4d2426927f848e6ef7ff09f783a7b17ce6395de6d02f1f47e42b29a161a4d13276d31105b47e8c1e3c737c67e8cec49120a2ed1ddb79e8 + +A = 21fbbd2951908187a159dbfabb038f7b2435f9343998173d13feff6dcf3aac9d0597e1f079505c9cfae77e6a4719ebab80c5807e187dc40b2636aefecceb7d10f6c32be1b2dcc12e5a3850bc7967aee840427ab451ee84c5d84c949574da81c5bc4ad663393511494c825c4ed01bd8dd66803cb60485a4ce46eae80c7fd574e4c22618 +B = 2dde36213453e526013340533097ae365c2e4f1056db517fcf2280a6f140f23b01800fc55c6ee8ac08d6f27302feff8d099dfa7873b518da687572b15a1da86e398e4854b4f16c9cb586eb096115084eb7d63d228ed30f1d8beb6e3c778efbdbac17bc746fd45541555c4dd5479d837d3985567b303692ba687699b7874eef4b45d379 +GCD = 792fa86813c67adddbfb1f05cfd0e94a5101b9ca786150921c6cdd381fac3eb76b26f47aa9db2a40230b24bd14046f1648f1bced16df698b8d76039b9d92ba4a0657 + +A = -196e63ea3c7eb3219199b74e52086f891400c116e7038ea64ad817b74e38cdeaf36d4d3d1d502691f6889462699a0402d0c781813a210411c3c152ca3503d8a45952f77ef6c8153ffb68f32ee16106fb8dfc51c2b430b1548c1b2e262dfa40db08b39cb1c2bdb4cdd7be2a40b57daac9b48c9240c2f6dc346cba930d08ff16169a69556 +B = 1c76ba300f9d4ab6ab9d8a1b7938f9ad2078f1146cf14771e525196b393f4bf63e693ba8a1b147966f8436e84bc09c47ea1ab236e578d0601e92ba7730041e6681a60cb5609d34f5fbf2ec599d8f25d5ba1269eec1e479d15472b00aa49720ae6f3272568679977de135d2e01ec611b5a401d5c628bd9a7f0ac049e9864a999df788a8b +GCD = 1f7a689a2ab07219cbe204a5c98b4757fb4522276a2044eafd3548c620528f2362b27813c8e462def1e0d87c1f3056f43765fa604ff8b4d723f000dee6d27ea9afa5 + +A = 2f42f42957e2121743bff04ac2a7fed455c995cd3ed05bc9487245fbfbcf5bcc81e3700d3525602451241bd54634929ebc086c4e8d349b30a3002a9d4114891975339e62a566c6a9324f70da3b4225787d01a1fba22eac0652e654330c8f37d347f1110a74226a66170ff6f99464bc998a80dffcaf3c0909d8a1ea6e28839bdfd85f1cc +B = -372359573918d6ca93a1b8c5bced64be2bc39bab0fe2a0dfd542fc08f7c357a505de4bb12f6379cd52365f2e3285ff9e5aed3af2fe5c7238576148e1d3752ea4d3b12026a1979ca71dfd035ef74484cd490d8157421f702d343c065333aa23ad7c223e2f40acf6ad8ce06d9f77511c00f6357fae438a01fe2b40ba258e8fc969b389858 +GCD = 28d157d4be81321d039b22f34555abce34cc1751078e9c5741d84addfd7535338941a1706379db006ddf194310670a13d5cb32429593e1648d0cadd5c400c66c0cc4 + +A = 912114ac2e9b3781a7f31461816fd6a0e839839f58138cbc3715936f7c5ea133efd7024b68a444ec004eaea478b6c1d581b95c754345713b70f5e21981bd15a29b7720a855f988febdf57ce8a47cc901f2241cdbc94dd386c46413aa4260ca4dc59df4b9e09b1104c7afba6a4ccbfc408c94e7504a0dd38e568c038d5b4de696a6aea8 +B = df7c28305904522fd91ba1e5c618d5cda6fa1a6a16fa41856f2710f6ff217a75dc5567c70a548277d51634312818d7c308041f663d5c228b3eadf2f3494e207ac8a216e14a5f3482ad09682707b237470adbd4901888451f047f3bf378c976422c0abf222f42d7876cab6c7e3672f8729fd77eaea9b406052b4f812f3eb8a14df04daf8 +GCD = 4b42ae4be3ad7bbbab69a1c5e87ded2a7e4f6587c189b2d58130cb94a7b9aa816d3ba82bb657826903694f9009d78c2eb4e189aba371249f36a7f3225fa9282f4c68 + +A = -33b0188d6549981d2ff03433f8d15305108b72ddc0440cab7c4db0c3909ac117c72e8432e5b533fac0ee131b3edc4ee263b1bd668d8e378d1aaebec00774c8f625e16ae75475f3c020bb3d9ae0fb5fc25f5c54509e0b2e3468f79a05c761148f8702ee55d7a8ea7d6d950cbc2ab73cc10df51c2bb7a6a0dded863778cba14bf03be93208 +B = -5431e7a0c5dd21f0e5cccf2d7797d13a84fef821bb02ea271d3bcd6b846c2abdc643d2d6102999d8152b78d24c0f03aea900cf74b2641a437ebae20a9a385fd4cdbac714d9504c79c34bcb4b930bfa4c696e99205dd768acd8b0f2bb4a1d528831df879edaf97b781d7352a58810829cd83c263d3282fa73694536c57d9bfde19199340 +GCD = f3d9236df3a220da713eecdc7e2b38982ea486c3e35a8a1c541e71fcf2f91413d59ca3eb6426929df9e7c59ab49f02ad8d7bbdc061bb8156b6f035822671f362d778 + +A = -78a203c5ad5e1f8ff70933335af7be5aa71f82ada07889af874c62829bfde4f82d9d76ab5ea2b7144f999697921814601cc450c05d72fa42c712c59aa8787c08ac621bd0a5cf6252f65d6324d276ad48bcc8b0a0770602bdf693976528a9606ebdef375f2a1881407d1eb83fd56e4fa3bea37521de704f276c5489b45fa4556ed5cda222 +B = 4bbd77dbab2d574e6359be1342f29dcb037323fd80f5ecee29407008d33a755cd2ceff44294cdba0544a014498e6f114788aa4c7edc9305e1bcc7ac7d74a41ace7e86d29cd2274aff47fde83caa8bc80a58fa6866820ad421e08cffbbb7e724e8742842dbd6870750b87d33a460774203665866130636c515695328acadfea7ef97caa02 +GCD = 101d39e31e422ac5658fe0b3346ed6be5e4f602178be52e13b59e40fee91f733ffc63358bea541b3a3cca19bd1397de4892f460577a26cf568e4d6f4158169879823e + +A = 6f7bdc88e41e8db957d98bbc46f04011869201712ea9393d990525ff77ce3fb2ba3e4dc5b4081e1e2d96cd246e06d1f192cbaff38eb5505fc65ab7f48d49c9ab7b84137a589e17fa868e7885950f4b85ab487bff384e0979b6ee1dc6192d4c4b09bb693558a7bcf2a35714bd730daad89dc89811339d23254a38c9cd9be15185306c2ff08 +B = 3a7d3c7b80b8edbad9bbd1d42f96b7df533f822d19faa42fb6474d86479271abe8b9a5f4b8616f1e92af92252922b6591df9be52519da928d040976c5e02668f80474fe3dcc624ff08f798992b97e5e4a16e3fc8e21f44e8df14a37cfc32344d34962b5d53099824e705a283bd769f186de8e2c001d4176e589e93cc5fe21455a9bff6194 +GCD = b47787d07cee830d03c22292412348e0bec6b44cfba0bb885e02f8ee7c5ceeb22ce2f01ec7aee068db65cd5026674d71b845cef83e627a26bec2bda1a9df689daa704 + +A = -13e379ce4304dd1238d5da15a6d0cc5ff548c67ddcbb3003e28e7caec13e0cc5dae59ff8503de58043f98d58f3cca7979dd1446cdc2478abd02233806db4ba3a873ba492845b6e988dffa20aca1664386a7ce0e51d084ce15de51ca91baefa4f09094b5847253786846e9a6d2d002370def6670d4663b2de1507695575295cdffa48b212fe +B = -d860662e23be93e65fdf63c01743e7d761b1414dc780412a1ef1f9ed10170bf0795ced718b613f8c2ba28db35f0973304ab22d8ad576b5be0ce296ac3a9ff7e6ae77536ae857d8276dbc02a7432d677434da04235ea9e316c3a6c6ec0ac127a7da243bc2ee64a3b36679d10a1eefc70f6a73d65af0fee46c834a2c061636212c7fc0a1512 +GCD = 5142bb437cb3235b5b0a9eb6e9c1f265f75081d9f3925d84632a7826205a9f51331230594d296714355da6a830a0ee83911017cf252e0ca1cd2d2783390cd5755977e + +A = 18697b4097ed7f5a42fd762da26b00954810864e3d82bc9b0c4c0d1be6545c78d848130f8635501ca8427247b8b67bce628159095c7312e1a0687061b33a3f6302845127b1284fa1e43c8941bf8adc5b901b2e49a226c368f5c9008a8c76d625ea2f8dd684732d0da624883e1d160a969671ed178b69a54c93c81e8a3727b57daa37e492ca +B = 305272df438a07083fe0187ba10551a3110e757a650d8807aa3aa275075f240d4c1fe02ec1623baa24492945ede52715d10b3f9290ad3869ccc528c2d507cba1c08c2ac03e7b6783f9a6df6e49b19008ffb752766762277ce2b71f4b1cbba62347ff8e112b45ff664e8f73d4da33bcb46d1e942cd795e9ce1f7f6a3ed0525f6d899917c4da +GCD = 1a8d4c87d3a53e005f1f21ee7e9bb7c116bb2b62683fb771315fe38538789855f40a3ad139d35a907b776cc86bdeba49396048d47b5acf521414f3cddf69130af5436a + +A = 16fe881d102059f56d851563d9fc16ab6c39bf8317b36a81f73c8a3a04ad39afadf715e76d9376a355745a5645030725487f00394baadadb34a2d458d9eb19623c4f3f9134a954dcd691adb85a92be7bf7b2bbcb7426d19db0db61b1b60a21c98cadfa3ba10aefdd26417128f147a64fc01e7cc628e45959a36239742017b2c388f3f1725a8 +B = -16747526d8d646f19e9cec42182f11ccd98ac3245d2a0d8312639d07de4ca85f91e07a7c6bcd152374714033bb7302b347fb225b5be9afe2cfff95e6f1fe8e4dcbc1a46c049b31360f94fa28d5df1f55cd8efbde5db60384aab8993bed69cf64232d4fd9941c416c4df3074eeae4a7f41fba11c5a2b8b53c15c8b3d1db9bbb8197a69322784 +GCD = 1aacd834d71a4c44cc75219dd054809b1c7392e12409e7a7e315e2be15759580e1d86fdf1970ee382dfd2b43aef663c8a7458d2d0ffe9007bd2406f1e7bd7ad4a7d384 + +A = 13d4c4fc43bcca1dd8d26845a0895a03325273eceeefbb9a2921f189a8489413c261cd38128e85bbdf833adea94925f2475af98f7c53de6eb39f9addbed750b6a6cdffc4e94f1dcdb9e41283bcf84b851a65fe0e1b59ae13042ff636ac36d8370df76245d74b5feab5ffc06afa8c6a2920c98efe217932e0384fd748fb88e8413a0da6475a8 +B = -2101fbd91773e403855654985a8d2cc6e97ff9cfa3def06420293ee04db7247cd3d720d8374d7d9bf20be5313cbec44f1aef6e13b40032f0c314db1927aa562b467db302614f24c1c3ed83c31ec4f22336e6b5138fb028972b8498945188972fc2867e786dc2de8fbb39a4021c2372ce327d8e306464fdeec7207d86ccadacd0509518159d8 +GCD = 20f4584f9d7fca1ada53f64dcf9e7daa2858560c93b18b30f5f8e09066e56fb75dc1e5f0eb4966128470981b4fde3f219f77862bf4fecce7e50f377280c8b41177cb98 + +A = 7555eaa8f908aa343ce73e003ee6474bf851d8cec253449016fbe39eae19f375f7cb5684707aaddef5832bf68a9e8f3041bb7998d105f0c3d1559bbd956574adce192ca3e82a7040556236fb6f651a9c7dc49b7144dd658bb4bc9c4e24bad7f07cb187944cbf472fbff452f271fa4d64ed0e5bc12cbc4f284848c28a09c4a00549122758023 +B = -1444ed4ad788362ea000f3838f2b00fe58b1fe31b625d24c566dd7ffe9923726c01d0c67b2b42b49f810c942d4c53bd970490b25d7bc2c06e9bb5ecc04af20db30bc685eeb012cd4ac0a9bf6ebae73bdaaf058afd188fc70cb89288958302252dacd2bf5f565094974ff792f65ca785ac9c3a4ac613d29813172c733bc391951aa6b9867d2b7 +GCD = 703358abcef86f97b51ae70443a419123e510a6265c9d9f203f4bc0123f8f7cf37b8519038f8717c4bcf18aa832e6fad0d92faac3fc46387a002d946661980ba7929a9 + +A = 30bc428710ba249c0c9522f4567702c8f3e0901417702d43e2a5662c6d71b2ab94b9fd1f303f90eb1f6a1b223535a46920d4c4a4c3dbdc84b02bba63026fb08b2315b5fa4dbd76e3968c5b8ee0b62f95d975b644c7f0db3939da1699c9495c51b8bb0681db31e3d2b27476fb6834de4d70a6bc2e2134ff03fbdc84dace2fc2f4d47eebc6e568 +B = 12865cacc72f44784298b8c11b84b79dc5d46151693c3feba814c01092f059ce06996174ad1cf4db13ca796656a85463aca03240db680e824b2c6272568e77dafd316f34e62c5df3375a178378e36ba0787a4f889c62ffbc7507ae9a07fcc8e664b330e61f327a658cf2f72b2dba2b179d72010d55dd4074c13db4283728d5bb21deb245a194 +GCD = c8d609267d731614a685ee2dcc2ce0d3c0809f859ef92d0e655a1c2f344dcdc170883e33a1f1282ac5d0b55e640f98b319eac83ec56d9730ec173cd5d0305113d6a6b4 + +A = f28b2bc311cc0e8207ce34783197c341d1134362f2383c988f257ed8b8c7d690da00e5d535004772bf708d494fa13b51520098b362611fb0148f921a01db0cd2cac6c6cf2c68c8aae4155489a118f28f2d05e6d5c23aaa7ba3db59776819367e58288d1c363bbfd7decb81a5602a91ea0d963b0c207034b5fbbc76043741bb4052a3c1b7511a +B = fd94885d924a51e4bbda4f74f7c2d55ab3ea66330eac3a5710cf8db499d3a6a8fdbb94ee1afe64a5b134a47e3adadbac10b26a8e8fe5aa5bf2ce1ed478a1fa82ac29edb9c2e8404ab38a8d4f18e542f9fec20d6e445b1a5ed2d4bd5615db0d1d58e20bec18f01cc3d17b9e2f275fac08e473df2f8f309c0716b04d99ca5f0e2616837b1f9076 +GCD = cd57d8ed89c357417c4bfe4459620bc0a16b89b1baf19e404e5659b9ca58b9062a0ef6c0a98ff967ddf00ac9ce5e81aefa17771db7a0706275d75d0f1b7d7e19610d492 + +A = -647ba90322fbaeb96f806dadfbd81b30fa7726527d443d2cb73b9686c8d08186536d2db1c412c88832d071745d824f1fa82c977d9796ae5ce0a7ec308d54957d5f7e59bdfb9831de09daa470a5989139350b199a8b50214a0cbd1ec8ec11e5bae857fb03186bfd69bbdcd773562bca7f36e68be0a88d674240fdc40277fba7ca538d20853a622 +B = 490b12ca23bc84063c8a3d9c7ab7786adc96e53b818aeaafaafd88ca962c128bc69239785373cb5f0a4a91f32ca9ccfa54b26c3f36adf5ab7ff7b7fb82d1750a229a8114ee4aaab155dcbd49b7c84d1c1d64fd98e3e6944c3a434ff6d50003df9ad4efe43d62046b3c9f18466acdc0d88fc041fa143ac09496a6f3a698cbb1addcd9a0a6b67c +GCD = 7bf1ce1a1c3e3d52c4b53d74a41648dcec6a3610aceca319446a7d0ebdc39f1b09e4483af99aad27b1bdfc93a6a6319d22022eeb01f799b91378b4cd1265b0a97e412ea + +A = ccb96cb2f82f8ad40e5d0f5833e2e274bf1633f04a8fea29825a0f360c5ef1c57c70801119140af66168cace4e402806fefb9d581d9e376fc0cb7389db658a9df7953c9bd4bdab44941c70f0057adfefd063dca873a207db9c8bdb18b3ddfa91baa7102d204a7f9f5c3bf84f5c9be4439744e0902ce08bb9ca994aa0bf571e2faf7922424e859 +B = -d71534d2a4f1ed6c64200fd070b7c3b313f09450a07177c1b7c2229f3988ea2a2b52308837d4898e3e63edfb5fbc633abc1885104c3e285341ec86de17b63496a3ab7a4f33fee30c659730933e7e36bf98231c3af4300e5f9e0d3115e7c3de2d8e38e7104ffbf5ffd6b7b108ef4d52cbb6bb54ffe32f9902e34b14f7393c04b48f829e3db4b7b +GCD = 5c55fbd8899ce296538eadfaa22e84db5eff475d2567018c7cea7b6bd6573116e400b41fc798dd832d4057f38df1ca2a8be73d6d42ba83611eef356fbc1ed2ef37cd5fb + +A = 51ea54ad859fac06cf0e7a6d522485a3d42e8552ff2db4983e7d808fe1b8d993c52fb36dfd13ea0b8d634fbc283d4e24c97d88c77f2dfc87387ac39dd705ed0cb6913ff791f92b51279b79dd021a203aabdf3d926995891f1884776cc82dbd087ec2341983b3ffa4f6c6b81aa6869617fbab658e109dfc44d1aeee3a207044ac1ae14868630788 +B = 2008d39e8337d5f397303e1cc67861acd2d4593fb58122afee92a22f01c9c7b8f14e45e5f146b4474c45f79f198dbe6f6e254def50f1d476ce7df9e4bacd81244ab4c1fd9531797c1324870af91cdf87963cbaefe67891bd43114a6c0ff8f5932f5a436ada7878e84b8e92f4a1bb94f33478618e277d7e74ab997a3f1afee8eeecc92b771c47c8 +GCD = 214598e8456a22d3fac7a8b41888873ab857c65d3830742f7a30b2003411b41aec6d1c77718046e4c364861dd8da2757f8cebada69c68240e53693b5d40f7330ab7366d8 + +A = -122cd6f55e92b864edd26f90ddad77ae64d7faaab8f146ab427a19e9f3c239ac9ad0452f1fa0ae94dc2272b72ccbd6085d024f2703c35895be6785695de298483cc051fab848a2608b20d49aa70d165a3dcc9e92a834a2670c871fa20e8a16805b3c0ac34916ccde0ead3303466c22d1970fee358e626b23144531d39b2d1ffb5dbe782b6b0a66e +B = 87120757b60840bb60620749af76c8bde55646d622122742d9e074be01d4e9aa7feb96c5efd85a07152f90f9e3b86e2a4ae2f84d88a9d4c77cacbd2906bee66dbff8cd4e171f2c75eb3b217b11acc9c5c54f65a5cfa9508a07fbb5a61f63497920ce9e7d0a8f02e860767e9109549751d26dd2c55b14ddb8aba2ce42f91dc0b4dd839d1cd6ad48 +GCD = 157093a554216c7e675db908e53914f964a9422c7ada1b5af774f505a6d130bc1d8a1c496fe22758c9e9a33be75b3fa296ee55ea5df7ab6c1cdbef48781640c5d2079106 + +A = -bf4a39586658fcc201ef3a3e7df494eba9456a8524d89158958dea392a41a66541cfb1a72484589a1f50087e67d0772782f7064156bd01082d0b97bdc82d2c1911b1ae77391ec7ac9aeed197b5467d66d64fcf5b82de9fded19804efed393a1c8b5d46292f5dcee940a74d56d430af639569687ef808ccb886ae3d148db408057ea635275cdf35 +B = -2f1471fd7288beed0c99598fc28734050663deff146069f220548360f226b8821217269976a107911d1d94688519bfe6983cd0857b6f0a3f84f9fcb2d40af9676f43575a66da92f450fc5af035cb42baf288f353e164ec99bae3e98c37128febde8cf053168c88ee303f3438e79b6c5df2a63517a8b4107af8002c797555d88e3e201c08d1cf6c6 +GCD = 3b7617127bbf518466b3fd055af4e0ada0d96acc00c27d4ab2e1db5c508604330cf04cd928a67c32cdfd7923758c680b3ab28022c2821341b05be83ad54e38524f00b087 + +A = -1d8da70741ba0124e19aaf5f39be7395895caedcf545e9057d8bd5acb9e9c9af039ff42b28cd2a41d6c7b3e7ecfd8ebed98b4681bad3b3bc1004fd11c4a769595fc086cb578c407ffddc50fe28609882a6721d61e23f79115475260e2a7032a2324397bbe36a526b96be511069fe6bb9c1375e5f52425093af77bfa0ff882ab275d1be7d6136294 +B = 104f32fd867d65cb3f80efaa8ac029d92caf774323fdc2335a25bee3a337b7ff0255da3af901d0d8a0ed3f6600fc89e4920eaec472c161efec51dba95eb3998dd168a0d4e69c9f33f45cdd5f1f0ee330e0c6cafe7bac86de25470b1750be6156b71ab11ef62ac91daeb56580fcb52d18a9982c04c8d388e68a5a202b1c525cf0804dc824797dc4a6 +GCD = 50254d0ed8eb6fbaccb25b99ad37191a81f7a4f436a8b99f7510f125a8a2743dc68995d7310592f2dbb1f738401abd532498d5295b302d3167d0f2af36dc81cb1a945eca + +A = 500f8deb6d9dce4e937bea437e9f87f2b85a7c5200fd64ec6301e5b9c2b924a0e6fd1cda1a9472ac000b76466608e7ad74956641712cbca59ec276e32b59a6962582b07ff2b0afb9c5b5298647e956c70585d94a44e3c69ccb417dd5ba4b62815b6cad2d902ce1cbd9113921b1319591639c850323624cc8abd29bf0af8f38a26fe0ba7e1430043e +B = -5b9013cde88e7331093b5b3c6c59adef2fb069da4b9d1302579aa3b69aadeceb39b8a729e4e4cca7c8b3e7bec264693a1d3aaf6eed508658e776095ccd0cde96aec37f60eeb0a98af41b6d300e507c6d2a6f52712a63c911f3a881485e738f7b2517075d56c3b3f918abc6690f9761bac57fa1673ea8179087582c8dc16d01db3460cdc5b9809cc2 +GCD = ff38e045d99cbb2f3140aa278f7177d4883e2ae3a0526971c8636d17e2e8cb7ffe924521da966923d747d9910cdce6cf6ccb63d92486a76190f12a29e9cfed62f305d22a + +A = -1dc1d3b8dc2960cdf9665c5f5d300fa9bcd1da341261d8d8cad88e12c7ba40e63ea9a8dfc206feb4029e6aaf955bc3dcc049f217452fe3bef0d96ee67dcbd7ec7566a87fcf3ed453e5fc6dd449fcb74a32d5140edb62b0340fe45011d7a662975f37075812735eb10362bbeafbcf3e298cb18465d750cb80c83c0b5b659f912b7956d027f2abc52ce +B = -55f3d3c95a560d6cdfdfd7e5c45ddfa4451c1a68bb3c62fec817f14b72c20732b847927d34cdb7e354849c147d59478d0b410191e7a24bbc9dabf6a60466cb9610d48e096d52ac84c773e2fc63cc9f10cf3a987e87a5b5986d11bc9f83c31d98d7cec222d6ea1b470d4df3049e3e6c9441674a804e2d131644f1fe905a627b80d33deb8711fc064d +GCD = 1fec8bf2ab1a085d1b97acd55e42ce90c09ee6c213f0f695cf0669c4f816bd6cabb4d961afb4c2fe4ad42c1fbd3cafb683224c757db5a62fbe40bf00782ec7dc0498f3eef + +A = -628b0e2a53cabb32757fff133eed716037115d6b23d8869e08e2082021ba0a740e43736ebc0fc827dcb4ef11b4037107bdafc7729e33ad3410022f79438d82a8b05ade589302dd1ff5f720bd247a5db4589a56553c80afb39f45d4589fb3c142649d8a8cc8ed5c6eed0af66796ced843f2772f38d848265f13674397f4e7b83d974164e0baff43240 +B = -31354213000d57f03a63aefe92be435fe07744f1200cf111f6df57b0b89e0368ebcbe4fda50064de60aeb21d2e88e10027552dfb58c67b9833d6a33f077abc53a3fc272fb446d859d96f00bcf112f4188c62b91b27c780381533003a65433710f20e386bc1cf05d1d772f9b0fbce92a06480adaf675d521c0c87f46458ce46b5baaa9dd651027a570 +GCD = 31af548346fed09ea53dcd763f6c56a0925b3ee7eb2ca36b24eddf447f743dbb341551e51658e45526af3bc2bfc6b3f063d5ec8e00b97103e9e450a9a575ee7e91941cd30 + +A = -172fe45a5252fbec4dd289c378a8c074c7e0dbe6e17b5d8a9a77503b75dda3d22d82f995ab3f9cbeefcd2c5836fcb84bf1ea5252b4022447c0eff74acd53aac886d96556e3a2152b8f9a67fb8d0ea2c9e11984b3ddb00f3b6cd56f032bd24507a1885c06c0c79fa7ffa967e27608ba0ea5d1c5610dbd5c4c7819f4c4a2e4698cabb83dd7cea5c9327f +B = 6c8ef1f7ee9937b76d865d54f0e9579748fa3de4363c7d334718ff0e5bca0fbdf436507cb1eb450c17063335ff88dbdfe4fcec973da1713f6e6e7eb4c60a50e3a787e8e6670fc58d3b6f07a08a1cf03058106d076bc8a996f293b7d85f2b88d0d257e9d42473aed894244a7fcc365bf0fe254d15365560c7654e2f6114a0353225e014f2f9326adb0 +GCD = 14972c88494cf36cc349e2793ed601017b6bf916d8db44e691fa20924489a9652f507725a8e1eef174329a696af23b29fd373da8cd45c5e9bf006b7676a054694e6b25e337 + +A = 2b938a23b7592bf06778359502eea2ed28a56ecdd984dbb45bbe9fa60a4cf35f25443ead6946d87471f6936b205cd4bbaec1f932c3e39589520f664a3a03c65e80796fae9caf24e51f66de3ed19dae4ada8396755b5453a4cc431860dab6d0b8666338a71117c66a8483ea1911efc3cc7400d81ba7730730d0ce7ea4665750405a859e589841c830cd +B = -40fad12d653450e96425a94c74cd5f9a5d8bc865b5ba7dd189b133be7eb73dd491103987b6a7dd4c92f89f30566fe90520dfac93aa6daa801f60521779e52760fcb0b8faa7223d0586fd329620fe2156685bc7afaadd2a22078dbba42979a4542c46d2dce269716c844a6bdd690b2e46d32d7f030fb68f047f6b820b0aa2ac60b81444d1f3054ffb41 +GCD = d51e1be17d01a5a3a562c9e838f72ec0396442454f8d57d2d5cc3ed067c04d69fcac147050529a41c81d7313e519ff2352448927f847bfd34121119bb5b669b8bcaa500b5 + +A = -cb258fb9b7527bc8546c218c14a580666c299ddd571d52adad2889dcd9833a939de7f037337f13997e895d91310ceea034dc4a808cc21b1db556a27c57d4846b2ea4d6cceaaa51ee962af5099e6964cb276ceadb56f95d65e95fbd0bb5630b76c778659f7907ccb9bbd62761099f46410bdb1cae3f1530ba99c3b9be6309e9162ae6a1fe102f93d845 +B = -b06ac046635ebcc28e81be9f696e0243fb64ee487793d935cd825515e5ee2cde6eff83cdbe1f35d68a836322f99fb0e48fc49efee3055ec2dac9c9c6c550ea379f61bd8a82bf8cb96fd2024913fb1539438a00c9586d83bb831422069e755ef60cbde73465d0cc4fc64a4835dd76a64b3af090fb53f8f9e2111d6ebf43c536fd81bc37cb1b26d66673 +GCD = 103d50e8d7e183bff76f7a0066ac7efbffc6a6364512769a13010fbd897854350ef583903eb0dc6da86f46109597e4a02fe99d7752b33a7416cf4cec2e83fd97155f318543 + +A = 99bd621b0b36b5db62b260100c57756ee6dbc018c54722cf8f4e3337210f2326cf3050ac6118ed3b76436420a8e832690ab433773ef682c519bf3680b03e6c35a66681f48f1c160976347e6577794657ce3d242cdc29501fb0ff5d4385c496da441c04b383931680d039a1fe8d89e59b0761c91bfd478238ff0787d791cda6e67b8b0a5f728dc43d50 +B = -3352f27baca38cb00ba3c43aff58e6ae19f76c115c330cdf712d698e638bc8f9c66fb77ea734ca6b633d7495b1bb992e67307ab27c982d4a9696791406ccf6226d68cd2577062049d3187d6e30df09d679b156d637687132890f231039fec719bd6b3801d9d0bb19fcd4918a1c48189a3bc1db5287a87d486a7c78c9ad756ecde4bf7ee434ade8f5b20 +GCD = 2541d6f5419a07c6242b70744215ce7eb19149c640bba839202893bdc063f98dbd1493404a21167338a3470f43733b08ffceccb20e40bbf0370f22bf9986dd9823d9f7bcb0 + +A = 658c5045e7796579b19cef6619bb689f6ce5ec1091353de6a1aa62d22b2d96566d2e99ac3925ac2a44d763200b8bffff3733f60b871cf8f1f9442c3eb1c4cbacd5367f8c3ef799055de647ba23f9dd9bce1531f3ab5ba078a21f42bd5d5b1d31660554907abeb94e84e8f289885d91fc8a8fa7626c379c2b1edd416ed808e18171879a44e9360da16aa +B = -154a4ebc05c9675b2c684864cb263d6f6ff22a82621d322b97b3c764c05c18dc9d4667ffafbe781f77c005942fea77403a1a2ba943694455ab9665c64a7a338890897cf6fedcea2ee0596171a6185859ac2c84eb99b67b74a907d7c4d273adebad68541910266f3fd30ad0082207709619593a36f0c9648cd1eb3e102189fd781892fda35f1c0972339e +GCD = 65af96657a43ff35d51b6694bc1ed0ec22c5c932762b688aac12ad9e3d177c649b05ae6d9172315cb48033483753cb9a2f46341cba0c354bc824e887b75f4ba6d712a3d97a + +A = 1e4f64ef6776fb0da068720ab1a83dc5ae761a6b3ce958db32b2b0dee7e2c06a49389fc9a519b1f1f3d7e7d543bac9445706a52df1c73b8f444e31a7c540908dcaf983b4d268462b67a4e126a1c82f9832bd1fdfc7d74ef74672c3a3249006ba27ea108978fb0102d6c480a1443135724017bcda82154656a1325ec4021693860d2d9af6857924e2d4b0 +B = 282090b311b569ffccca865737160c0628e111504b10cb37580e9bda012f49aefa9cda58bd06a0ed1dd990ac85f776ca8bf8f74131977cd8106f5f0f8941a6486b181c251182e20ef75b7b0971f9d95a910fe4e3c065d194395517b79c7262c086ea80af119bdbb90690ee837ca5a70208957dacda4fbbd1c40a509a2a70064ca85d2bf7097b1df8c7c4 +GCD = 8f674fcf35583f7997a36e5947f54e853191ebea29413dc1d68e31c895f34e7b5f236da2519690c778a019d3fecf7c829a30f7c9cb02135a3049b35e85b77e23f401557504 + +A = -42618b21493dcdc96505929fb8ed9a07dcd300d16e29d2f528757273e596eb521c5e7c8190444a755f142a53dc84d8a756cd0ab52b3d4a586a8027bd69855f074be8d4583584af85ee550488dc00165f8c16da466c252a687efab543c9b34d7a86f5b3dd43324912bc4c12e75d5f43abb1e7b6e014f0969f7f5aa43729494b5a3b1d56fa0e33f047a6fe +B = 2051e8bbcd1d8a00f0d179b124e8506e0817f5e2125353860458a8dff82a016ebb32908e3a81c7a7d923095832a58cd17064deeea2607642f4fa6ed0c48914c8ab1eb68900f1907a430caad8f6c07109ad7186b6863f4ab15ba0c93b3b1d2606c8a0d552a29f7b795dafc163ab29a4f3e06adbbc3961eb1a94aca2b3fffdb85741acacc82f7ef5c32d40 +GCD = 6a45c6720435ce6abaa6cf141a1f12af2f68471644721976da8e3ed320e42afb61958b9689c9f0db9867fda73d7519cd07ad5fcec3e1e7c477ee80d6902d0ca5f231823906a + +A = -468904753b138a65ded2657340ede8c7d79041cfb5c12d30cf79ab60380f724ce5142645141c83f61d014ced6a02d74f32d9ca830741d4772f3eb0c0a996eb9826d23292699f2b5a094fd2e4f21648cc8c225922a675f73f2150b5e720fbc74747c5f16e71f98345271044a3233fb4843f8a6c84b6c120a3581588714b9571582141b3fc16733cc1cef6c +B = 744b38322466d78c8e92127145e39c8ed8c1c3db291009af3260671e7a096a5026fa8680a522b07d20cd6cb2df919c0dc566eea6afd013d84f9d54242190282407a7791a740b803bf97f5b5b3c5273f73aaef095980214c75696a7288d9b7e6cd9136692ceb6276a082639a4d92321754ed94b589c27ed49e9cd634d7545bf478f9a8db4c5284971d7bd8 +GCD = 7af66d790eb6f312134c56b0081afdd92d30ca38b3a85095cfe951f21009060ea37896f4d7871312b2c829821a802da2b5994a7d34faa9af4eef5f0bfe12e38290b94e2cc1c + +A = 759c2137605d4895a69d20f020e57895db4ff81253a8123f13e7bd1ac3c9999effd0376a9a39ed5b94932be051621e4af0145d7749e29dd12b25ce588c5872df7fdd10404f95fe458d36840eb6a841c42023e1f658babfea1bec2b2729f2d3d89a6a6bc02c141deb9c86764e7f93f088bbf862b4a19b51ea22b823d5066eaa9d97a5f2330741f62c82fe8 +B = -12c5942bbad55fa6ef6576c96827e7f5f7a87837510366f189bc5baea618087209a905a1f079ff03ae49fea1c759731bd18377b513030b73ea3453fd3d52498361026c4efcbe99cc56f78e1ca11c54f0c7246686cbf1e9015eb2505a4ebe9e6c73ed31cbb1eb1383741c2201adb80ee633b384f71b09db9730d43c8b8025ea81970f09eab2b6094567ed0 +GCD = 589d64e5cfb79309f63d0b35e3ba4e12cda01e26df479af513c7d80f75f0f84c06d1172c82ded097744161b461d5e70e3f1ed4325595c02468c0c991aecf8564d20a8395938 + +A = 12bdb41d8d54e99b4f211bcca96343998e6fc66397c32d3f2dde511aca69abab5320e08947551849c19e85d72ee1b410e0777372cdb5daf5b13473e16b4e32f4c1eddb7f7860e5535eb1eaddca0191f200c9b51896b645f080532e43e311f1019303c32f29bbe342645ac6d731f647f84bc1738cc102f080bef4f502eed04bb0a1e1bbb35a761ff060ac6d +B = 3974d7b94750cddc6a255bad4fc733ee818b742ac40bcf30e1337a75af8f38a82b3c8de508ff43c526a50063ce87a45be5520497e9f457ee5bdce7e293bba6c6871dd0d2a50febc574ef5bf9f77fddca467fcc06379eda15f0150a91c3b551126ff2304bf11544f778a840315e2b8c278c048503fd7a5f4c7c85330d7057530b06f5cedfba4ff4a3d8095c +GCD = cbad210fe24ee6514782ee5c9b930aad3012dfebc1a2361a06d66a99235717a9741b1bb83a475931d78293a06b9cb2ee7d84936318df924591621c5fbe8b9f1490e8a55b07d + +A = 13a73cc4b3c6f51798d53319d4d42370c270903447f906b0ef2f0e1a5d8319a030754ccae0eecc4bb2289cce1986d18285cb65f70e6fc6f2c2700dad5d37cbd06a9b2fc9157adb48d65094f88a2713aa4649c967bd19544448f3edd6b5e9a2e0497de560795ccf9f448911d8cbf41268cc89b6a2028c44618e32369837b36d5c1b4500c0d47fadc59b19bb8 +B = ee6dc9328f3696483ef45f839ca880a63dce610bca83f41bc92c3132234ab4418ca70803fe6fe5be4a44d94c0e9f182c03719979ea6f57b29ad2ec19bdbf55a1b89e9799a6a96ccf1d12449f7adfe51df1713380d93a21abcc5da4337cd77c10fc9f2c18154886d0b2b0ff8a4c937bfd0744ba78d892772fc83b4536a4f963fb37e9cfbb3f949bbc351602 +GCD = 7bd5a801017a66f16fb264c01b78e417e8154ff42c5fb216defe1fef95212f5df16506eb2d8f159ff3c4c5cb40b043c1de4d31ebcaec5367373cb6f5670dee56ad91abe5b696 + +A = 116013382296fdcb0509ab4fb83c0d3d31ec8781b8af5f3d22b3e678ca68b0ba8108ab8eb64625ea2c31c1bb1d0cbc6772becc091fdc806e437e9b604db9671d7207b2303bbcb615903d2867494dfb3ab727c25e1dd34000bb613e740871b2a4fae5ee7c338650380d1bf1eada4279f601818068ed41685febe4b4e896be5b6cc0114491e910c99bb4f1ab0 +B = 2ebb4655bea88385c3e090c6b30bbac5a7f543186e43eae765291f6e759f96e5d1100d583ceab9f01090903592249a9ec83e9c44b79b90460c738cf452b47d17c0d69f99c06a69b6026d2855afd6e6e8fa50f0a3f4e9c7f894cb073d20d75e97c12541bea23fa05ad4c8873f89e9e1e14bf93d030e1729702acc3fdb359e604dafc0ce9727a4403567472f0 +GCD = 2a3804a44bf2285d7f63a048ccd35e567d7a6af4b9acb00e1cfd4d23b3e342076d4d18d64dbd47c1473867080a77e47a457fcfc868a663f221534a6139c61a2d05611cb58d30 + +A = ccd52b3197c07b9688271b1f9b4cd8064d040a326d2e8cc782e053d23a448af3b95d677887bc90f359890ccfd8cb151f7f1e002a58e82dc32c5cccd358ebe4bd7337e70c7fa0122c668b8ede36e588c92922a850eef96886b362ad1bb46725cfdfa3f34d1172519596c56df1c2aa6058f76ddc892b5590cc77f8d55d66c4c7b992273b892f2f29576e264d +B = 167ff7c9b791ef06fa36e4b88332987ca835e924b0d45589bdde5ccdefcf5173deededb1902e300e60a3e25aad9cdd6cef3658dd7a2f5172a9c94ba2885d40a35251617ddbd850c37543d23f08826a343beeb7cdbbc49e10c629ce6fc016b3ea617ebc187cee83db885c2d1225b017233bca0b3a52885ae6a13a6f68dc9260bc4433f011a1f4a77793d8696a +GCD = 7b2e5073a975969990085a7f1c47c192423cb3e32a1ae1c7dd5d95d113f76b803938fbafa78c6190a5ff5872199aa70ac1c12b59a5679ecfbcda909cf7ed16077fa4527d0fa5 + +A = 3e993a6d40e09889c281e688338d427fccc7300fc3ad750b499312f0f5810d2a03bdefb98dd72697afb2f0893acff757b8631b39c6e6970ed64e378d95f757f95735e4beaadae3ddd710268fc5f01a5aaaea981fc82fd19dd39b1f18f9240a206b43ad225ef671e7ceefc2eac8b425274a29bae02d8feb9e1c1a11888bc4d85b2158ed8e08c0381791ce86d0 +B = 2a38c3f5948a2eff872b9d7352f927b13cad03b804d39916c6ddbd72ff32e27af0d4629213764976bbb01f2b2654c9e8c61f2c4c933a48d973b46acd7e22fd691ad1cd50435dae979eed76f90d9335df322cc9637621cdef7d55c9f5f4062ff57cd02014104a6c3414555e4d679ca434ca698eeb52c942a84d7ca91e090ed60d36352eaf21b8b19951715960 +GCD = 1694fbbd006933a932fff32df2a7d1f897f60b5901cce46f187919b6a5f52b8d03a266a1b1b8c10820140be300bc49535f8db83a0f32dd5e4fba8f32c349bf7fd8c1c28baecaf0 + +A = -106c3a237e70b4bd2d349c59581820ba71332357cba7ac2eb5f936e63eef61901f324298f956b42bf349d4b79f4e403c8f86c8c103c22d4263e4db720d26cdcaccf8babcbc9f75ece96f43ed9cddd4c3faaa6fc50c351d46cdf2fae1a74e59736d3ab1593cfdf2dc78f4c23bcf5380df577f9b9388df56d16c6a942998b7c7bb08fa8bee6f2a55f8d5b68e9b6 +B = -52c80b897e0f513dfa880116cf0b3b643cb58d7c7e09e8cee4a237b0a9c308fa9fa56b6383e954e31b7aee7198ef176aa82dd43b6fc82eda558de4938d7b200cb00c0ca0b18acf65fae95f1a172a403e2654ea154645fd47d3c408febff17035755d8ff9474fd02a51286223f6a3fa40fa6b528dae981ecf651466e4bf7852c2237e110c9aa358cdef1600b5 +GCD = 138da5c12d454b942196d826df9e4bd7f06329ffc3e4985cd945e39ec5563bc62727c3b1f906529caeffd207d71a752ab4fc655e1b6c6a32d76ece9cd8544bc68173ce6329701 + +A = 6e116bb11156442aec05e86262e59532756fdfa0fe2c7a8b3e2a11589e52d385bc08b5a3c546b7416604c5d338ac819c9a38b84155d1d11e02e941e5c9b13b850bd82590cd12bb28b07bdc8ae73a4007feabe6b5709fbdc6a02077035f275797e68fde3c6f0f1733d30a76fa8e03ceaa9f0e0235de4ac5ccfcd458998c2965c6f92d91af53c4bae95437d60ae +B = 6b8b7bb3ec30e277631d501e4806bd280454efa36f5d420cc3e91a74ea1dbbd0d58122cc04769a9da9d77fa83491126097b404f9e5c0f8e7df62d3f022a3268350820fe4d00e7a860aa2cd17152fb353c567f354ea10460e8cad48d2d7fed192a62a34fbb48c2b6f6e27fddab67a5106572c389982921d73377f2220ca87e330c8ee4fae050b2d4aa08aedfe3 +GCD = 4b80bbd15d8054667664ec7c3edffc88a156d502642707c255bbec9dd16d861d64a8b3852751315d8260c598071c0ef0f783654752273799155fb4a9bea34fde70a547103f8f7d + +A = -658b769fe1ec0c9470bebfa6d42c5fa822f0bc7f57f23d7b97a7e2e4daa57f550d1a3154ea91945d1f04307233d2c526f0a007b02451c2ecc3da0fe6c52f2a36fe7ab7b2a227f979acaf58649eb92aeee40b7234b26aa4202f178ebee4e4af432d2397db712355c64119dad797ab1e5a40827d7609dfc502ccaf50bba16eb62b079625e832f1eb939138318e2 +B = -15bee54a8e2eed4bdb26a17b4ab06a17823805d1e7986f02283b71c059011d25cfbe4d17ff83f4d3a6d8831ae691fc1fd379d52a04812acb9bb538a3494648d5284e59c3728a1004553e9d174ce3486e6d90d701b5291633a3e0323a00515f75871e9ccfa3d2a40b3365e8004b3cffdb045509055e62a68a06eb4a581ff3b6cc324c1ed5a92817b47135df1249 +GCD = 118d05fe7839058e457f08551fe5f9c89f9d9ddc727f356aacc94ee805b17b84043526556a87f97a41997b53a13b0db422e0a8b58c7cc4ff065d9af63db5945c3e4152b4190729 + +A = 3773335e80d7532130b503862e7530c9c5d9440553d23cd423a1697214f4933dc50128b1a38a3df3d2a9f8bb66ae1d08386f0bc7c84b09c7436dd2b6296313f57d8e5af97aff0dbf45572ed9fd5cc7f2ff24a2ef890812be54dfc373279c40c8ecc3c42d4a279c6a0f75eab8d07b52f7b69d62f1b1b5676406248271ba2fbb1e47c33e65568f9e9dee2241dbc8 +B = -3625a177b05c105a93380fe83530e6f415b00b7d5d26ef9ec0b2ae9013cb28c6a446814c6da244a67bfa05fef46cff666079937d742ba87fc4b0e32b907522606fb89a630d317134426c8bea1f5cc62d8d0e246eef7ba8381c35a90cda907b79c7868b3112fc1241e1ea4b126f90925ea47c1c53ac3137a2a45fe2284549d97a1fea360d64fac46d23de77eff0 +GCD = df634cad101563165e1541739fc6041ea443098d69381d9df62e21373622b859cb514af64dee785802ec3c0bb82c8debe46b85eeb4eb6cbe06f42ff60de1fbb635360cc527768 + +A = 16153809f7c35e4d82547efb033f083cddb73e0d069727028d17dd2dc7eca38e6eef767cb7dbb9adb0cd9b4189440fcf56367ab9c445240276e3283d90ee88b3a562c449ea2ada4a19b0af19250a6b671be6d48e3ca201defce42756ec98947a1aa653d599e0720e90fa2327c262b2739800fc15730ee7dce938cae29c2c9e57b4886eece98b1d9a4895c257514 +B = -3d0815770076c6c347449d2eec96ac6e5c56b32a69ce986a6f0812d5eb7be90d465c0eef362499dbb79a792e39064ffe961949491fa361f6601e534024ea88e8b75d26626b9808552540cf08f9a63eace949b51974d63f6c45fc6abe40ba4332e0a0ab90ff58cba40b716e88565dd6ccc329f18fe6bafd291d3a886b1a9f653c3bacf87f5cde9cb016d79c4582 +GCD = 1a11d0548fd3fcc723ce2d5a58d8052ac63188e427203170e235f7d24fb43d1a69a3ed6ff7623c3a47f09879f7e3524487c1f162d80b4235cd72e0c651aa41da8661c717d7886e + +A = 19e4f4acdfa6379561e4fcc72adfe054447cdec7de891ed5179b34ddc9a8728a09201ecdc13316b25b3f9c70b234e8dbae0d226e51793f69036ba109a9318e0fd0ef53a0255ab4c08f1b21ee2e74ef07bc122b910836c71a4e52dbb5e8bec5d7965dd166f3e8c8e7d66efeb8153ef4d773042fab8702962841365e7b0d447f43c0944a78ef78d2c159bf9bf92b0 +B = 23a789a04dc6b013f71a53f66f6ea941e058780b0013cab8bf4c5355659167a78dfd7e708d9bc0a9fa9b3ff2cfa0ce41d60f4369d9b30bef9c09d81d78ceb3d627ebb6e88ba71de5b4332e712406005454e78552ed0a34d36b9ea6cf140e2dc79602d63866a43ccdc34da731297710ed45ae2b4c9b4f4eef7bf0c820a1f9786b4263d600fb376f9c75723bc8388 +GCD = 5fd44646d556f78b05fc93e514f307a0cece74985ffb4c216e7463268ddf418e6b68289d8e7151921f11669536d1f3bbc01975eba6ebb8cf3c12e8f7d8458389e8284d110b2708 + +A = fedb1db662442f1ecf0c5584c39ef4911ba854228d84f6dea02a3302b101d470897a73a9c2cecdc933ba030c5b2593199d9024b9ecbc1ec516894a3ee8e4f4be289f18d6d11ab117ea8ee4242e0b212800dc70b02fbc74de0a805689439650ac089e98ff24191dfb04054ac28e70c4458a7c5bad0cff9947d2dd15167747194a059dc6dc347be231dbd75042c2b +B = -666c5ebfad976ab023ca571ba50f850a3d9f8964983397c1c4ab996fc8921dd376bb9dce143bd03a1cdbfd9ee03f2961147c42b53d07308777045f51289a3a3689f2a5db6492d478ce26f866383b23771703a02ee1812b0c3d05c331d1409e1cecaa86c10bdd525e0b0cffd7617238e54ba9956a12d5f384f30284b37193df6ca12a3a2313fef491f43581e3ca3 +GCD = 4c314f61ff0d0da6bf4df52395eaa7ed7d3f3f16f5bb9fa1ab82b07e7dbcee2bd5438e26d5f86073e0062e0dde824c4121a377c537d4d7bdeccfbc67f1629ff1e21ed4c4702f79 + +A = 1dc0aced92994d2e5c24060c620576c3789738ebe5f7810c4d763ff700574bf63ac366ea3971b76254bc3e9a5b07d87da5a567aced1d7e4a7ab90c67bc2475622402cdab454df5862ecc5b46eb8919d91328713df150d5da542d1b3704def1e92da92b0a18031c87c036e8bdff0c83858944e0c85486d3a44a8fc5b6e279d1c4fd7c551da71b158cbef71b22d0bb +B = -2c03cdfd2614ca09407ebf500a54179d9c76c92d1ec63aae4b5ce5c7a9b0130684491e2ceac349bf84358474577f99f3b1b5b734358fdc69ca96e3dcf43ff49fe06136aac546ccba54b130459771a317003f0228faadc33d41a88aefcc215bc5ae5297ed41ae8a9c04dbe2f010bc49111db4654a07891fe54676edc8378c4c97f8bab7b9435441c1ece0756db9e4 +GCD = 811a1c35cd903d83c563e1fd437d7f4e76fa8e4ea97a61df30b7e993aa7fe2d7fd491dcbf45e545f52493baa941c122f81f62afc2aa4e6bd853b91fb2760978a061b9ad82b9717 + +A = -1a599ec72823ddb64c36f739ca42313ce91532ab2a24eb61f85266f5659c1a8691c848f7ea5b19dd91b5a4a4b0d23a045352cd84b522befdbcfb9d6809e81c4370557270ad3137eadbc19113ae21315283b039a5c7064cba8797060620d101dcc9741b9e178e6c845857c31d83771bdfd0672787a3d86e97fc22c46bd9e9dc328b82b6f019f5ee1b6e49dee563108 +B = -15350e9da0fb1739125ff455eb09daba12605c8f28ffabd786e2875150650f36b8a7220eb2c571e1250559163e22f12f65f0c74ae5f49a2cb5301f9bff3192be98636f5e03f127e73473f5059a2f4d9bf9efd7cd6cc1ec9d38e3b9e26ad85c8de6fec79e7bbd195f5fc5cf83277139940534e065f9e3f6b50ff0a2422e12b6db16d3ff72a3164a00e2bb6068ea1d0 +GCD = ede3e5a6a8b7f1c693404abcb0a01519282de1832258bb707e158f643d044c44464cf2a3b41261c78d6ecb37c01794a09fcb44c6f4db85a526361971a3738c45261dac4795e0f48 + +A = 9d254aa6b5c58362b0ea14e115b8d6cf3facd87d028428042748697b3aa105e8e796f2ef9bed4844aa520bbed84efbede2d9ceaed835575233b24955fcbada6c59af92f36d83ba89813e1f40dbc36f3a9495571f3e63f8e5a7fd6ac30b5ea620fc9ba45336125772315eacfb139e49549648311fdd609a1b14bacc262bab25ff95f881d0d2a35016a11f04202a10 +B = -70d6a02d24ed895ce3881585c57473e0179761a0032d21637a06b6786ef177a13877b4892cf7aff93015525bd331d150b06d393407e46126dfc9ee3c706528f6d18125408c01780082827f57fec2a627ab4ed11ef05b988a78f64441b0b0e5dcb73aa0ef3509c7ba297a33fb395126ff097932e7616284efa85fd1e5a503a6c6a1acfb48c3ab1adfab12d5819b0c +GCD = 34c2f78abd9938d9b89d15c6cef07694dc6e07df7b581666439b3383ae78c4e8b24413c8b17c969e40fa9f50b7747ad37de23b3d9ce53f966c80a0300810da3ac8722c397627804 + +A = -1476512b768d51d1357c26becd2455c609f690dc129af9a3b0a3427009b31b72d3a7730bf038bc97de142a670423ae77172ca646e21afa4576c3f8199adff7e20d435234fe189efab488a1f97618159223caadc006bcbf77c11675e05560981db97caf54088948b910bccb0a9208cb5ef66c620db4fa59868dd78092a53a8894b503136f1925ff01550cdaef38dc18 +B = 1391c5ed08d372e87b277f16072e6a63a15dd18e84b079c7d091aaeeb5a73783d857b13d481129e57520c61c0f1e915f7648b0bade62a7f9f7916be6a324552062a0a9c2bcf387aa847c113a61cc647bb9a890d1789460160ad3aa1d9bcf2a01919c91c69e7c1ba92f256b4132f96dad1e51bfcab27ecc88e7ba6d7a3f139a5714c931ca20e5f083253f13e8eaaaca +GCD = 5420356572d3d9c32cb2a0113749c7da88e86ff4e9bc25ae0a63fe943e8cc9622619a5275976ce61cb2962b81c7d6b59f2a0aec0320d17f6df6f694f5d35ad6c4fe6bda1731fad32 + +A = 1d739c647b14d9c925c9ea783b2c0470e7e86ed0ad7ac19eabe016976a115b70e4369a2b29b83c7c6f826df023ace50ea8049a1ac94d487224f924626f6acb9d45bca737b9d91bc9c49e121ba88a7cde32383481573a9ebe30f593815c65bd5ff55032ed51d474a289b8e2279ba4339fb8bb9312579412231310649964543061ae5f194cfc00387bedbad475a3e800 +B = -1ab0b0ac966f3c6a0d613bc7492d33acd6f6cc4f9f823c9d8cdac73bdce1bc9eb467ba17841c689e1d24f298f93b28af015b2abea54c90672f4ac9c6d1bc6d57a23795cec60c1cf040a43a81c9c7b57c093c61a2ab83f4886879b30d0272defe06bb1ff39d08737f79f9bf7143d7b7962decba9b6ea5fecd764cf997e27e053a0047069ecd8cdd0ba320d46726f377 +GCD = f27af786acd5823b55e2a9d89fb27db0c71cb62c41e034fb8004a7631cbeda8267802606bd544a1045e01cbfa4c439701b256cce895e97fa8a181f1b37894c97a211d97ccbdb83b + +A = -e41ba44ef0a3ef96b0e9829da414f941be4ccd2a1f50bb67a8968b5b56e7c188961e0025809519fa41b65c7e81ad7e8d7407cb27dfb5621f662e3e5b33b3d0da660527a75e72b9c09d979b13edd23ed3f980c45d70401908dd2de61008ea222254f82f94132cb902b70d2422d20fa1252a066b498bce838596bb540d160e4d2c3c513fc76bbb34987e028a16e77cbf +B = -72120630d549bf03f75b3692196ec006b92ba5d592e8a491d78bdbc88e19d563426559f9c3007881f684cd5c9693623beb8ebe8c2bff5ef471d1f15de9bbb01e73c03378117ad9c8bcf91199f9ae6b89d5b39c3d4f7774ea20a05f94dca9560caa3f7a4a5964e00531d7a77db616e18009ded8ce405cdb43c14db058cae083f6c6ee58390b4201c6a322acb2a87dd6 +GCD = 558bc335731e2605651c347a0c442bc782ac65e74925697f0d91f515a38a0fc80f1bbdedf075170260c020e1dc01730dd8562538267f33f082ee3b6d06c94b6088090f1ee18b4e49 + +A = -50f616a9f792ccb1ef70f12224666cbd106de6e079d372cdc0a6795aa9dece214bfe9b34477aa7f66852e27b9913e7537ff6e3c551c402a1ff220a617cb0633f9cfb622ff2f186cdf749fd2f18c185a2e8dbb4bba064abfc5f00ce96fc07ce53f2fcc03489dd83ce12844dd143b1faa37637cab420fb96d5553d155bdfd2e8a71e14a38ef1ef1d6ff81a3d2e3c6ecc0 +B = 20de912f3266b0ccd3cb688b964c64915dff91d406d359fb8997de628712dac18d4814c1dbcec039ddaf11a1bdee44ed4b5e313d7d60a87a8320955d4f16131f4c797eacb3cd52a005418ba9dedf878360dc8ef9621ac8a9e35caa6befd180e553393ee6397650271a46b80b70560523ce9c3826b4be8d0aa1015c6b8e1e2444b8f0fc313a704715ffec69d0869c8c8 +GCD = 318c076ddc7149d530d633cb8f2fcd72d1e35e91b6fe929aa9c7e7b4817583cff108b3f068157f4b218d80240b5086f674f04267a1266a8c3b17b2793632e2795c96db19f9ed5e58 + +A = 60763faad9abc9ed8db507825b827c9ae30b0f9a2ef88ce0b07ca284732418baa3a4bbbc44dc351daf7b5a366ea0b166d1001b2dc6d5fc13dc1eddb4bcf002263a23f926d471c905d92c18f4f9ca82a26759b3d379152598a611bd42bff8c4739e8cdb594d3a777c54219c8adf58f3def18cc036905ee3398d5bec163500cebdc54e5247ad6b40de2f039403a018f08 +B = 25206906ea3af2b5f57257d45fe63e22efd7800d7ef8b59689ff5bc0f6c161d80767220cd610c41976400670283adaaf53189504b6e2b641cfbd02973da9b8dee2f01b19c41ff632ace5254df416d216094cf396737335a4c27d2b22ef9ba82c15272e89f5626fede9c4459b9ed4422e6eaa264df02e0ecf786eeaa0e89b331c3a2a2e551d27bcd67b237fc8a2e0e88 +GCD = 475db32beb7608c2760220455b7095397886cec48c04358eda690743b96624d5f6dcd1090a764e9de83ffed812eef64a197642bab60ccc99dc3f22eb7a26224998cc1a0377f924f8 + +A = bfa32370445f7222b6afef3d771dbd4d75921b3f45feda0c8088aeec4189b50dbe14246b3ff7df898b11472fab719b65118bb1629803dc5886ff63f7264bdd4033a76c6ccffc7e067185c96ffbf488f3bbf9bc0a8f0400776119f4a995ece92ed63aa18fbe79c8c19b92cbdae8e1c0915291af50795eb405e648599372a6e9ba137e4f3979a53d7b027ac1a8208906a +B = -4116b938d9ab2312a3dd11cc25eae36114941743f9ef0e60b966f79cfd7447c524d2448f29b78f8653243aa9fbd5f5fe1dac68148d2c83f4b61250d40fb4a2b2566ccd44c3816dd8fe60454a8b1b1f488035daecc7bcbadbe225b6387145cb9b60a6a40b75f08d325f5fab9a0d8ecca578a0cfda41561ef25c1ecbde5b593a45ee6e6a4deb7c77a668493ed467c3166a +GCD = 6903ade28739da85afcdf76bdb7e02d3cc415f5a8d1c0fac40a21c01f97148a61e23ceefff016dddb1cca68a161124e9a95f3c7adcf2fecbfbfb8bfce0644ced3dfd2fa84e65feaa2 + +A = -160adbc49f4e15fa9005d726e36a334da8e7904a769be5d80f4997cfddf6c5417b4121de7a9b9e3d228ada2abc7435b39d69cfe6c2bda6d3d90faeafd8e86305885f94cb0533a81ed2ccdac1fcf3f7daeed231a5eac79cb631d75defca88f64f700eccb364241cb232b544ef2173422110d6efc777ac559aad31e1410f23ac7905f6935c7385d1a488260f62652b20424 +B = 47b63fdfeb51b3848c747a75dba319a4c4e93300c53e3d621a08caa20ee37399f9f4a8deab4e718459b2f4474de4f1941953372f13a09ea6e98d1b364e58e4a9eb1c0ddd22a32c91170e068853204858340107058844dceebd4e07e14362eacd71ac44167afdc4af0d5d9b20bf1fbf507cb7c3a9880766b91e75aaa1cba67629e0d8c8519d78d851f9331eb0b480d8d4 +GCD = 16fa1abc9c64ed7e5ef95cd9551c283d1951f1e7422dec2a875b655fd85345b35e648310172d219875d4b4759656e18676a2ce6c6b23b76999b665f2e1cf68718989180583f276714 + +A = -2a876bb3a1f12cf86fd92902446843eb4245950d16b3a17cfd04213806c6f374ec915e7613b619edfa27da1e9bc9cccaef4f3279295efc31f9405cc8eafaf300e216f026fd4b3cb160226ecc129411f98c04dd5c5d75aaf1c109e1dd9f233765a58bd7bbb47ff98319dfca503edf2768a0e2138117a06f615488f9af12d03a404bf350f32b19f956463341a364ddc7226 +B = 3585f45860e9a23a87053cfe2c5ab15bf579a9cfd6294d2dde1eec8555b708f3c94818f23ef0af3efca2344966828da17e57257ac42ec3cdb3bc305cbf1b8fdae81652abbb91142fb5901ab1c53dffe3cb61f2b65875b9febf98d1e5bbef0d960730c7c8d0ba40e9275260d00e4c58b9058f086ae9296551f462cc1592a10700a6f833868a7a2e5dfdc5fc394e865dc +GCD = 210331543ac4ff9b3280e87a355ed332c0697cf55948e0e07d88e7895fb16c2f9a9112c4e7380a76e550049fba336fceec74b61f275e31f072df3aa9c671985fff8fcb96df773c42a + +A = -eaf58935d789e20af6e90180ad25b0553237c5cafb0b35d1b769bb81639c4092016b6f69aacaaf6e544d8273d4bcd29a1592239242827a886627b911dad4d2b31422747f4941276e2f2ed3d93968ae90eae0f57c036f957e2aeaecb9463518c387d091245edef0b6398d20e296d84c35f170bc3555fde665f055ee22c5df405205ef06a37404b2ac584d63a9d5bc918b2 +B = -c5c974b2ce3c113ba9325265723021a5b263bdf32f6fbe35de43b0a318b266e3b92b7bf0b4065df0f9f4ab2042075ba66208470c654294f53e2253e77580cc5986292d9751dfec0759c96342262ee98f3b9c9655c10e0950e4a126d60a6f907ad7ebecbb8c2c96bb1bac281e1847a678e187542020ca9cd7f6ba819479f7c36edf4e2a56b78a3c182d1b6f020fd4a76a6 +GCD = a748abec8165ac6b084ab18f80332206906307588eae3988575fd63972f0b01d249facce750d9c4085a3f43458466bdb2f80443b4687ccc8aa8ce7d7c3d80945cfd3d5505f4aeae4e + +A = -1a2ddba7ca3de7b007d3a611dd6e02f67bd8b9f34facc930215c723926bfbc9adf4f6f034321903fbb378f261f21def2de925d9b5e5e4e257944f9aa1d2ae68f985d1af747ad7dde70d88304c32867fd687ba17b1a779079acbbf96feca068fa57d401731d43933ec17cbf40da0b9010cbf2b593bfcfc15b4e591a3caad2181a8550bd571064b3749141cf9b7373df6ee3 +B = 200f4877f01e8894080741e58e6f8ad6a0f1d3eed613e78bac4e4329081785b721005b8bfc9d6a1e9aaead5d85927dcdf576bfd904bcaf4b5b860b02c2bb1def7da081faf8141dd9bfd5b206e8bcd4e5111bad5a33b11ffb7f913ff61cf579f8cf7f65af8a6eb881508c7a79b549d94f41ddc080d7d8b62edc64da308e341ef621790632f429b4a84ca1ba1f48e4004bcd +GCD = b0811bd1eb49c9c2cf4f5a58d29f2f9e3291721991e6280b6b84e641a0c3a2518baaa7166e256987bb43e8a6a564872e1213337a62fbb2d01e3bf0d01206801bd76bef10d77665a7b + +A = -f8d14349efb35f8c1f91caa7e72144d3da751692a506e1cd7d3309a414f197a87e46aeeab0cc9f17ffc78219facabc3274601e197ea1791b3f0afc05ca0e6a4fdf588c5bb5aec074f3ec2c6fe964a013a7f5f70039bf2ed39325194a6b97c1882750b0f4d39de3b43058a646285f71ceaf3f1f3b6aacf1bc6e443af2706c7b5e851fa713cfb1153c529734083286cd5edc +B = -a8a0667c624fd770700ab81f486ffcbfbf31c5f5a3b5527e3562c019eefead5caa62d18e4690a5ac0b1f54b45b3bb94198f9214cfa7ec6c913c93c2ec75429ee4d340736dabb028889b9789dc203563c38c0c4d3fa8f0a0b5e5ddf7145fc03b8e847bfb0cf5c03f95b6a11eaf861371d08d410f079432da1938fee4f644a21f29911ae352cbbc78c53cf24e43fe1c452cc +GCD = 170b537a61b9ca5a169820f72c0fb4ff90b39b74f6b560ceafeb1c7558a005a178ca17b77931543f909559901ee21d38b8642fa79d9b6a788974979fe6b876ebba2d7a8e572d9105cc + +A = 41ae9756fa970deab696612859a75d8b64e446820d8b76e81ed081f713a65c7663b31882d1c28a90af05b1d4a171e9cb39b538f15e93f02e8c9b488cf99f9cb5fb551e0ed44dec761f067e87af900df63701f8a1e4867eab59a640ccf9eeda5cecc88f6e4aadb3354d3130e98516472a439d4160056d111ca77bdde0bad1f52f515864668217660bb3988a379bea87d8048 +B = 253b9ab0e304858e5df1e26f5a628a25d0ce8b3bbadd7c451d202d782d80ad2beaddabb0bf0b8e3d575761723d3df42d62c42c16512499e8b4a8b6eda2ae5f919d1bed78ef2274d5a845f709bf8c8ebe896ae8f0508cf0a53e96579357de334ad9d8ea3f8bad168d3d1d93ee1ef2296b578a656ffe1d37eb0824ecfe95da822eb91b49289c2357e04bf9141cc94344583e8 +GCD = d9b78f4a2eb560655a9e06ef684624e0b8703120209778c907abf06ad75b0c923bf93194b7708d36f9eb3a731ac11a7f84ac55a65b84f2e544afafa2d420086ec23a480c129fb4dfe8 + +A = 1a81ac2de202ded79fc388027b33c256a04d1ba346abf66a47d8b10c60d06410547802f3ebf9082cef504cc1e572fd4f403f84b5c4101f271b784cc92fe443a6b0cfcfafc4af03f8a185e015d80443670e5e52b0c768e70100852fba9fbd173dc158be6ecfbd91b629d58ec5feea6f97e91e516a16c78acf88d01000f696fee4849feafa666545cd4f0b20e0df576dcaff51 +B = -162c7b5fed1ecab532afe3e81200f5d7ed790c39681d7db4e5d5524d359c539a3e5d33d105f0785bf2f9ca963e8721a814bd9b535f0c73942169e80e49de6dc4695d3e5097755c13709541ebe42a2a59a69da7d9e3abb456a9870051dee86fce1cf106a4ea99996532ff602283413127e9ce555891b83574697949df316fae4db30e95a2f8aec9f549f653b679ca12c76352 +GCD = 6f67acdfba992a6a06d55e346e05a5198834bfa3b94ba9af051e6dd777805593dc4b792783c36f171aee92fc04002c744d0cb3dec5ed8d189c2e6fe1b32dd965c51783a1b7a47dc155 + +A = -62e55f65c5a45433f0eff7d84d4a90684a7adb36af0b05d8e9d4b3c975c8c70e54816a7c455114324e6c08d594656f1641564963e4121f3822a5954fca08c76fea29fca093e556db281bc3ce510246b608becb67a7ae9bf1e5900e6d5d2c860aeffa57c25cd09f8d1290c7c2f71df8eac4ba456f10e66d6a4aa0bbad1c14d0ca7eaf9073379e666dd9ca88026472513491c4 +B = 27dcd52867fe0e75c5b1965271c0220cf022249e1567c2c3b37190cdbcfb05c8c78d0955f36c5a61aefde18259d9dd10223374fe71041d52508be0393f2f026292d187d1c2c04df792cda75e6a5828e4ed353f2ab83c22b661c6ab6d0a242cfb1329cf33060b1356c6f5c8ae323ae5585da70d7770788655f354190e9c29dedb80f45b02d95e785e3190126cbc09e2f209de +GCD = 5c70ec695161818b41fbf0324cef4a35f6be0f8b537b510e26f07c2a20c7b2c245729b1e1eb3a8ed7999d316c8bb86b3f15002b1c519f61881b984c3f3c5fa5d0043cc8b39d0c2888ce + +A = -31b786b561f1f2db190dd971f5f1e2bd87ae388ebe0941595316335e26920145a3e122788ce53b1d42d27dbc8e14517d3199abe0ef5759bc46763ffdd916021585636a00d2b476f6826dfe8412971a74bf4c9b4d6d61b1f16768a4a8aaa4bbbab8a89737da56987c9559a42ba8aef02946932eea76b08be78f8ccc342a90b74a756cbc9ae56f19605d4cf3190433b1e013c +B = 11ede709c3a2501a61dbfb7b6e841b0fe345b7b3dff540afb724c900f643eb5a30b2e19c2eb1ab76011de1a3b4f6d9c11bbb98dc60f900879e91b80c966cdaf753b64600980506b35d9e6cd38402b545f1a11fdc3805414726820f53feb2b1b5a7a879df56b0b27cd8620f49bb4b334834e272ab58d8917a076f0b4adc99f3542435b0b02928daa323bfffe6b49c7de396ca2 +GCD = 3d50685289251bf777b6c9d61b91e4b645eeaa7a4caa5d7e38fe5eecaf386977750a8d403324e6b6e22e3f7a30b4bf9c48068058a1c5d286d1818480c993ca0be952a061538284ad2ca + +A = -1ae5054ca2fb5e9a90cc0e35cbd014ef9c6882c0ff76fb730f3aef494c532a409a018a994d8170a00654a901d76c1db43224d3f12b95d11ee29297bcb7d59a4004d27829353cedc140b08208c89bfc58c9bd9d0e873dc6d8228cd1324c09b0bd91ad908098a823a58e064d65a4d5db384037cb8fd9cd22b5d682c70691bb038065e4454f83166218239ac6ae4a32cef472592 +B = -3a1d124ed840b8bcc770549b78a2904989cb64ecc797a671d9ed2bb1034e5176561574b032ee9ee0915bdb4d68514ee3adc7bfcd1f5b114561cc51fbc485dae29a62562085d6644419c192a6f9f97f4834304582ed5cd545eae322cf07962ac4f12fb53ddd3a6c4c1ff7679310a949f33ffb990da9fb44efd90dd5c26ee04f8e4445354bf6410f0f66c83e5dc00fce811b114 +GCD = 6603bf8fefac8c3d584cc08c9324a891bef616c354b4fbd60d379310e187b7c0bb606194e37bae74dc817037d1a2555a60f5ad3b529cf7b4f2defd82476a2c3e48181ba81976dbec3a2 + +A = -350e86b67f805ba1c9ee8b5ae4d20dc5bc3d5be3775c37344e324b8cc31410538e43eca744c95e9d24a0cc2716370094e24ea4f1fd8729a59812564b13e37ad1550d07d7deb4fd920d3ebe3c11a392927ef03ef09c141cf828f243a3ac815cbc7c6c50496e19b54614f45e9511b34d571a8150307b5ce9786afb026112ccef51568b04cd4f1d1decdbe44101e172e4eb90148 +B = -fab5cad155fa226f4c3d840c2c4a33a365d9028f48a4faa1397d3289c12d0cce7e1c1d6a0c1b3409dd8bca027c4bda0ae387f8a847176a854d91fc6c82f36112953821816e606be9a06425a91e2ca64781185e11957c1cde65e3aa0a09c5f8d832fffa0440295a6501b3805cc7792b23faa74b8d648d8c733bd4218003f4a1721a3dc088bd7333b46d70e7a8758ec17dbf210 +GCD = 4404c685e043167e72bb9ddb94bac36ce65988cd5efcea67c9f1656ffad2bac3b2d9360156c872a52930a831ea81b4ecaa68c03f30294489fad28bf9fc88f2c52c56e971620f2071558 + +A = -4626c643aab7cc7c137822fd6afc7eff6c683bcb0cdc66dd8c335cf25a9af0e6e6ea968b458c3c740a4f531d0a14ea16304ed1c60110cb05abb44798da54e436308e84bd124fc987ef0ae756287bdcaf549c9e2f82820996295ca5100e27ca73112c171fe5586eb5c0932c6129514253656a58e37f4ea5fd74269990ca5e2c0be214cc0939107923e540cc657f1b35b305b660 +B = 474abc656d55630f5c355510d4e18f9068d2ccee4fcef73e99597b1fe372c4dfb93d687e63cc8e8277c76df0b130122d9d0e7877be559ad0f25561e2a4860911fdd5412bef2f304a27d383e26fc392e43ee6f2ec0becc9b099a5e60ea49c23670de62a453bfcae9a0f4dde712dab6cde187ac376f0bbdd53fdb35e3aa86e77e362410731aee46e84321610c3ef0c10facc10a8 +GCD = 300dc9d12e176647a62cbffa5ea4369fd5fd3d3aa3aafa1fbe76683dac3e303f15d9cd7b5072ade8760a5f791fa0e2ee22105fade99e0b71807b20c39d03e999190e11a6b72bee481f18 + +A = 602094e49801835c943e1b40488c873493d58cca6f5765e77a61b6682980b7089dfbfa1371393bd2b199fc5239d97da88207fb384ac533415c2034c6713646b7fe95a397c796c5799609fbd51e024fcadcea6fb24b610596b8acd61eac3ca4643454975375c9fa16de742a98f769ca73ef1e00b2bc457e1c11ad056f80cd02c58bde651d42e1777bc64762459895887e162710 +B = ab39ea7b824bfc261bec70b899656ebf089f12694fa904c5ae9fc38e6331e6ddd39afb19552f491ff25cfe07a86b0f94f06a0d78dd073632aeb0f618beeddb9801d5698c6fd210855e7cd48d54cea02cff8ee58dfdf4822316cb6589df0c5cae76c43b0ad7dd3b8b9c42afc78ba2f95192c14eda3f09b393de6cba225989333890ad59aeaea496818f695a96f7f686fe6175b +GCD = 165af20abf538bc4abad7d8a38933bb4ddb5bcdda900a829868eb0b6dcf1ca2817a3499fde65ccd7361dd5069ec226a3951dd3c14989e0dc387a2815d08907f2e1d305d1959b446c634d + +A = -6dede822eac77dbf0cad2050b60762a3a1fd708470b2b4d681ff942bcefed2b522a23d09ba37bde3aeec22aaa75ba4899cdba3fdef80c6332596163596b5b771125b1245d2e781f4819cf067d27b734f69c5080feda008d27671ab15f2f73723fdb5792bd206b3fb230674cfb736fab0ae2f75f9fc30edae880c5efacf05df7f79a79e2610597fa15994f313401c0d5876b75b +B = 16f51bb41673fb6c03e78ce6909977a2f9d076eca100f5065a1e090d186ace2cf41f0716a0fe5316df7cc0cd93deef912f8e4ce37da53eac896eaa9bac318f7cce191792525920222050b268585b76ffa93975332a13bde0ba36be5303a4503962ac1f7d3ee174ea088bf3600274321d5acce36cc961d87e03a3cdeabc43eeeaf6673c558da867016e4bc990f99f1ef548f4057 +GCD = 372945b897af6e0590ec74d710280e60391bbc0167b6f4d2b3a7ada91e1dfaf5eff12c41c2fc778e17ca872b6092a1542c7bdfef1f89bf2361f7ecdc807645b607b3751ac96fb16d8c99 + +A = 1d3b3533c3828ebd09d45343e061999c51d7417af2049320c124fa9911516748eb600936f2f0c28c9c4cebe3181de4d75fd56aec0238d66a050e6a27a3fe9a59da229f20918fd3fb035514281b4909a229b4e077362cf2f841a5e1cf03177cfd22bd2183494cedbadb6113fcb5273e7250c3c5034cf0a97f2d33a2e569eb4498bf573e26efb8e745210358b4dd232d29dd284fb6 +B = 12054d1fed423fa7058f380cc96a754f1107cddb4a5ded5d6e13a3a374ede9b10e36d1e4ca9613a9db02922b3e4654fe126584361615e5ad2cf73239a89211439723e6078f992eb96d2d46464731ef486e0f553a4e5f6be86a0469872cfe430b5f3cc2f354352f7af04a0c58e7e4d8b1911229bdd617eab2dfe02bb18ab9d13f182b527d05a087a01acc0f5f9866c43a34167b84 +GCD = 7dc05ef3638975908fbabcf3ef57505a5f714b20f806cc7305ee9287366caf547a026dbb3ac2744f917fca87b260c8611811cf797cf80f0834b7298eb29242cb6a3b9f7627d2901a0006 + +A = -47c5112e78a8bb851d1175c9d5b48ed3c37a5b45cb13593f4c0449fd04fccc2a2633c6348e0a7fa9bfc18e6a4935e9db3e315391d1005d92f250abb54cfdb0592645901fcdb4138e80f34d00e37d38ce11b2596a1f7c7937628c41bb28849e0cc25bb5c68f4813efea4ac2b5f386ca9e73966f4effb3d5e3283976edd68d4a281e89dadf275007a7e18b760cbbe6635124721e24 +B = 5cbac0a8858dbd1c95861670920b167c4cec1fb3076eb0020bda54e7851fe57f37ebd488a46afb089fae4c8101dd6367812889f4c02cfb1587439b03b5f123ff425b15a4c9a1e89f67a1b56c010aaf949a8480b62e5a2c87c3182922f97117f478fd6b56aa85cac96dbb79b19288e95a6545176fd14e8ccaf69d8f9c881ef3f0b06742dbc25a0847e4c533e8014a60d667f9dcd6 +GCD = ce7c2709928ebe3d93233ec39c422d4d4bd266156d9651412762627708a40cb6245473e861a24007770fe51114c573b1520bbe62a62a31211520f773e7eb11d4de921a0330fe3ee52502 + +A = 1422769af71e2d543ec2740d4b9e0dbec99dd7f005a4929ef59a472cd10dfb9698828d17486ce0d759e922e1162c84dadbe1ba21fb1320f8955460f83dd147f7afdda33c98904ad7b7b68dd14fb6536b27b07ab75ee495c816917255408aa736d5bc04f16375a0fc79f40dfb72ee6a52293ec773ac8dae0a2cf95cbbbde9caa9f2fd5143385930e99ae48771837d6bc5cdb9e91e0 +B = -a080e0aa6f4f4559d277f952b2077db758a4140f080207ddb465f978dbfe329fba08ed6d8375a1950092bbabb85eb61060950343a36fe47d17a891986a7c0df2183950a491de337e86084e8da681e4979292b3e59521d5aa4c91acf714da3d5dfb2552c04fab3404222f4b1aae188b797abbbfdc53c7750ec6dd46e2265a837e55cc28e821cba3f9061c4617c3f801defbc57990 +GCD = 2124144025a5c03658bc6a9c3c683c1993dceaa8226e34432f42da465f9ebde8edef30c62e35446e52921f0d2b12adc6d7162748df2aaa2744e75bd3741b4764be48642ca1d04544da45b0 + +A = -3040e3a6a0a988d404c8d1c390c625a4b4005ea72178af01a348e0e9b39091867d907bd95ed6586a6b796a8e0284da9dd45b88e361ddd101153145a2cf6bd7188cb8b8ab2f9e9be3423983c0d8067686395899927ca4eaa7180b0a94d6b49ab98aedd55af6987ec6f6be2d03506e2ad082f52cf23c7543a7abfe814bb95f6c1d27f9a3e3b2fe82a02b27d9b7a332bb3f0268f1bf7 +B = 727855b3723cf68a0f8b0e56faa914798b23ad3ba1625ebf68498153377f60b7064861cdbf44121ac982e00b7443830b63d78fbbc7fae7c4d38772e128b76c9483eaae6503c338d1922e017dc0862147386a2a9f43f29be4d3854b9715e88be88ea191ecbc427890e07a7bd7c50722b59d0279bbd96cbf54dd6912fcdebfd037673bf6695be2a9635b8a938854cc563a9b93d4c17 +GCD = bd71e442bcb18d2f6ffb6fa3dbe53024c9418481045b8fa7f4b560878ba84bf414e1d3e16c79ab81eb97fe456311d556d83c87f7cc0597cbf62bf2f22af9eb29158e1e4f63bf037149dbb + +A = -8584fc510b131c2e91968aba69b8448b0955cad536fecaa1123a4471bd76fb621762be134622a6b73dc1c1b912304955c53e94a0471d3ddd000291798ee53bd1d3ce3aeb6e9e1e7412533771147029cfe5dea66c2a448748abb7839935515de61c89e66ede9a6ff861401d6a49b0f2f38517c43a8c125822f09bc3b1e29d6495cd9e30ae8795b7bf279995f899e191341e76830 +B = 19442bba625c7be7988d554e11035ff7449a9ef5df972fe17f141f7daba01558841af389b22c61ae32b830d8263d2f59c5debef873b9de9e4f151dcce5300fc4efec23203f2513998fe624d17e86810dbbb3d9094ecf176b977400e4a252178be3c054a9cf54fb327ec6d1bbb7785cb19ecbfb0024ac0d755093d60314a92f0941891e62f29468583feb6bda31747177b8d963ab38 +GCD = f1ce3365d8037b9b545293c982035498287716c050db9d93abcad4464e39fb2bb97b922d5471f7c7e68a75a0530aa3c603de525ebbd7c930830d9c75d9ada6bec681b2feea37dfb13e788 + +A = 69646509f5f87d6ae1736bdb51bee16e9792b0ff7329d254567c3312b70901ad592891515b8221b7a0196037d642056a13d60447469c6e3fee7a3199f4b67feea1eca98655913b8eab2d48684505dc831abb2ab7bc339c8e2845fca854d02fe02aeee5439b653b501220c8b9616a555cd5c9bcf36a8dc0dcabdba21f3b7f8dce69fe14dd099103f15447da2fb0d1ccc51d615844c7 +B = 4c7b5f0dedfa6ab91903884b191987bb00eeca8d6aa2bf12b58f5ee1efe40bfb3bdcd81a55654a9a774856e9f3c81dfb54870ea22647f055799762bb24b90509db14411370fbfc70ec8e0eabb9396c2f4ce4f1e04939c63402ee171ff4fcf5783bab56a989e1192e8bbbaad97d90615d54648485ab493d96225564c6b58f4a31f0776d46df8bbd7cafd46be3cd2ae12cd48d27c835 +GCD = 2e761ee61d22905cfa803106c9f3aa51c8e09c20cfbe026fbb94d5093189aea49538ee7fd8745656c0e93587fd6a0e1ab594b28cd5e0c7637ea8226f58c0c2a63c7a10dcda172d7f9253ad + +A = -11ebd1c45f0b69cdda8a9656267e9cd4f7434fd72e0aeb55a7ab0ddbb0d976b21a2c67c6357ff9af57aaa471e76d55567d4eb6c4c687c7e6b98a75a39e5c77204fdde6613d6d2860cd18dffaf62317f7389dd97027b1d1a1dae76bec28522bb94e0cf4d40ecb5b84d93e9398fb87f7aa41b233d3381c550f1d4dd8fba767904dffcf58f9296714b931ab13fccba91841b1c010414a +B = -48cec63837a1589f4c8800f186f35fa5377667c869dcc2cb1c54ceb02aab1bec0fee256d012eba7d82f63c72bbd648ad292ef6c6a47c3eb67ae848d823d5583fd4f4cb3773aa8d60e11d53a45b792b19aed58bae3544aa8ee708d0f04abc835c07bdbe9612da5aa3af4c08a6557dc1554e751166d8ab426c13753c498a58111f12f8687f80a174157479aab5115039395b669f4eee +GCD = 2b9fd6762705d9a1d0a22731dce79cf8df7c9bb55ecce498b5ea0a9dda028f34419aa95802bb686ea242fbbf6f1bf518baf618c50c245f2fd1c675da775ac206530e46aade78638785aa4a + +A = -2e92acc3745356834ec38e1b3e21f09bbb63350043dd712c12c8880c36296f19949199962d660044d5b188ec31b8982ee8a895929dfb6121b0031d04a3a8645268dd1334039ed6e3d5d6dd3192d6ab6f31ddd23bdcd9b71988a6418f3a97e992c4dca7933693df8c305398ab32a38433cdf287d4f6b2cbe07270d5df5d05de891fb2ba8a82113fb35ed8730283983316a3bf298f08d +B = -baeaf785f9826ea4a955b15dc7f1513b12cf588974cc86543221029785eed5ad5ff8601f52189def0da883722b7a33f4f9e874b50af7bde2a75fc7688cfd4986d8a672bc50f591f6dcb7ef53f85037e0e6ebb89a6f4ccc0c33a9c3b3e23b4dda431b205d8e481c4b0ebf0a980c0384cf74417b23cb975811cf156982b1f3f3e7a56871c19dd31cdecd58d0e42ca1e957d8e5c02b66 +GCD = 2676645447f9c6673d1d536f0e33c25db66cc20b526cc1572933d9c5cfea00f3aa056b4e49cdf2cbd4fb929d3f2f52f100d977a672814cd389b76d40f558caa61e483fcf21858db49fb3af + +A = -6e3de0883dbaae94b7058329fd28fb29c948eb7a3b35bf2650bfe11224a92b2020bf6e33181ee1a288d46fe5db4b9a5ebc8e8d21075d46b9b55585ded50186c51967d3cf59af38927e91aa648afff1b4ae098b16ef583968cd9a9f46aa81e46c224390b1fabc653b3af3fdac53b2efde9d26e88b959e599ba0ca706a176eda4a80ae1cea368e791c6cd51abd76c03ebbb993110521c +B = f59837df661773a0c4508ad0fed3a6d83bfcffb06eadbca53c99c68c279bb1084d68e367772baafeba2bc79bb7c67fa2fe1329e244b49f92c99e758f3fb14c6c901745ef7baf98055f6090bf4fcdb7df9c909b8c0aeeb2f456447096a39706ff426ab486029ff9d404bd1480f9840ebc1a5ef2454aceea2312b4bb1f07e6df5fbcb4ddbc40cc75d1cd0a849584043acfa1fd8620ae +GCD = f6d94ab31f68c082524c7de07c66f3efbe8bccc7deca97e331f8d257e0eddd4832c094fef6e024fb6f7b707237cb64059712b91f8c95e9affd13d4b2db075957abb30926bbac9a65ae22a6 + +A = 1a038147277fd94affbd1b37531a2a442c0a1a7fd8a983c646c29ed71047ec277ad3f41e7c2bcb362cb921cf005d558ded5ab92db67be88861b3987e04bc113b76e7f2ada0aa6d1ebeec15fe78a99021695af9b1e9fab3a3bba690920d1a31421ae876b63233633bbc64b8675c5e40c6436da9d0dbfdd56e1c724d2ede8184632dbdf13a82c3a2c5300734d3bdc6f1a0295246213099 +B = -1425f2a98b63cfcd471a00f21928e48e7b8817daf318b43eeb595b80252ab8531bd354240686eed310a53427cd89b8430779ef8bb610c33dedbcb6a8a800d873335789f76f9265dcff2d059490dbaf84dff06e4a9ffb8e5caa75206edfa448f381179b6bbc8829783cc5563f2ab06d097d25a0d76e7285d163cf0014d2f6ceaf0b58d6794394d42fbbb4cc2d30f0af37d5565c959597 +GCD = b001ebbf5f474aeea9bc7c268e1aa7c7c4d251d1434cee15b7d2de1023bdab467e00f045b4f687da2b05cdf1e0b49d833524ff1fabb5900ec00b56d739a196be3561b7d113e62a5532b911 + +A = 8abd6652f30d5114f3b08fb47300e9c4f064892dc98e47b03be6122848bd677efa9f0946b9a9e9cfc984cac0be1dbfce2637248cc962578524a647fe9cb8040d09c947510f1b9e83c2a842c65cbf623a957ec99b1dca7df84d01ba617dc51f0f2e814fa0e46d41c917d75475263b89a5460945b30be2506f256a3ed65acce8958c58e3add0cf21d62e8c24e0e1ac87983f465b3aaac5 +B = 71a2ac92dbdfe7b9c394d19099e97d7138a20ac17ad0212d3c6b1acbcd29afe6761c1f752d05c358ef6126647fbeb906e60cd591008f8b6a2e0c6cff637a6eb7baf2ca1582fb5872cfb141ddbbbd15f1d3a76a187df71712ab60ff201c9f044e0741f2015461513555a2a6d91c991272b016acf88a1d165ed7a1ed8fc03069d270a5d5fc83dabfb62c325c3a06f9b3190875aa99b8bf +GCD = 14aebfa6ef7c22cb429e8f011d2cd5f8d722c8d8f9c603931fd26ad6c02919916136ac7e6c2c9b1a4db9a4ad2ae408909e544eb5251221fade828959ab37d921ceff929aac55ee6c33d7947 + +A = -121ac8de1eeaa402bebf43a5d63575c2e6d5d49329f9320319182d32e65eadd7bed1dc2913e08c410b01b70e298a709eb09e6246da75947e84860933f4ed07c2f26fb90a702bd9316f77e476df80d1bbf7e8e1f8a43bffd6fa596b8081d16a98ae06dea9203d8f96256a86c3e6528af077acbd337501c3ffbc3bd9e727f22645534e035179be9a62dfb0b451328d7f4535f83de84373e +B = -3b755b8a63903180eb3a9999aca1d94ade18e021fb56979e20d2a8cfe67edf50119b8a31395c85354a471b2ce19648c0d25b0d09cf8f8de94b94088d69b352ee4425ef78121ce6b02573e4c75f15dbfa540a73e1a8b6bcf1bf378135a891259da0975cd6978ac1292aec14eae596c16099188ca7ddad2940510ae76686a8b6c20b109a227009311dc375d538e754accf0d1ed9e3a583 +GCD = 7d5efa86f82336ff2b554f561670a2b6834678a87fe164baecb402caa76745a4d2a92cd4831eb1c92c01125881880cba737b97be11fa9c78916daa4693a65e2c8e7da0488db3bedab705cd3b + +A = 1a2ee9716e653485d99ba938fce257d33b21dc38cd992e97749e44d6d4d8266a94cdd9bb9b2f735d54dd8657b481440094af2c06c9007c9be42ef3e2ec86cbc08664adeffa10f9184ad8d67f152847f7ff3889a789b1fce1b423d772fd4ae9e9526ef2d32e9a84f37b65771fa752710451ad4e8ee257aea2579583538dabbf0d5b53aad6ecd4daeabc5a463deebdd37481041ecbf035af +B = 18b25bed7f613ff0730f8f59dcbf28e8ef54ed0fa62b1a00baec98d2c2be7e5c5e84674036d8ef334226295492c73ef06cf712366e0561c735d985543cadfb4a377755d63ad0fdbae9d0b22273330d296ac3596c04036d1aaf86e2d657cf6f40dacf60f6921cfec8f1e11858a0293de95271dd02b2a68bd5d05b79060d709f007dfb8137721bbf762c7d3786b1350baff749610dd9de5d +GCD = 17d64e8dfdaf7a86b15a713888635cb7c5f806d5ca8cefe2fd0b6abfc3ae5fad9888df7abe3bb6d781d9d44041807b34976e64a5209593e48b89c6068c12ecb0cddc3e29ea84b826934a8953 + +A = 52018eba76e2932a9df722db4e74a980088a7731cf0db7cc135d90051627d6476fc413a718faa56b68397c7c25beaa7480e35dced32788dfac98e2f1899ed442e20f97fb4788c5778a9dd8eca1eec8ad3c573245cb8118868df9aeba962933a683c2a082cf35b1eecd9835c87d9d138a199a4940ef5a8e2529b55a73f5049e48304c589315cb87b40609d14d727ff047ed30ebda9fc969 +B = 2dbfddb374b32e5086e4214b34e65addd6abc54e268868b0e5c752179e4c090b5edcbdbc98bef4cd633d5f031bd0d3e77263e544ac82bc1e15e974a17b6d8a6c80d82cdcafa0286cc1f44067d3e60767c8082409217a44f53c2d4fc638def6b4dbd9831d7905c31644a98e6b8d12d34ce05edc753f545089f21cdecd0d6ccbe8c3c53ffa5914e925e515bb78632b33a365c1e1971fe6c7 +GCD = 4e45533244ce6acabc034e0eef8865a1b15698caa6befa0e29eca392713e432c197b842e1ce868ea635de4583ee55a178bf64bf4a8f6d20e2331881766d89dcf71b6755f05d4464ea08a122b + +A = -1378401e3b2fabf055dc0c9cb24e4ca6c553fc1d36b63ee87721f3817422e75ac5eed34f37ef54306e1d215ee72d9e993aa5c507156bb7448528f13fbf34eb3ac279ae628b74818fe658a32c491c6137d4ef23ed75aab40f9253ee1bf393b927194561445509f88500bbbc75a5f75aa7d8a9f9579489e8dbc782f36cc0ca4d1a880eb2c01f4677a48c7c312dae8d9466dadceee4d210b0 +B = -4f77cd1d352d466b4a584175665db1f88c7b6e4750b05a493d0c48a9f977c1cf7a688c4f1831035fd0094d5831405dc1191ce1a2070e0c7d32389c31600b5ab71d78b36bc8329c65e98b629ca5de94980d3b500e0d1e5df9408960c6fe66959401525855af7f5982586aafda276587ae2c989fede042bdf8ad63372ea6ec90997e5f9fd3be21ebd63ed54e75a15dfaeddd16f5503e4ada +GCD = 182b0d9801f4df448a5d1ee4e21954ebd6efbb7af504a327b416708efa797f22da2e6aee968d8716c1e7b8b4e7b5a937b75067879465d4ada037abca5f4de946a182a9ea57b438283b032466 + +A = 2a6de8673908af397b7d9ee18d2657b119401df64cf6b20fdec65d6a963b47dabd459704dc1660f62f9f55abff64d9a6866f3ead71f9ade3c6a4109af320c5a3bc3eb67f48594369a598483bcc96d458300f01d5973c90e153c5e66fe372a8ff998084833f30b65b866c459d55343f15c61d1cbb1edd620df04160c37695b863c70d6ce2b2ebb94fa609d0ac43dd8ec2cd02782d43a7000 +B = 27bf09741dc53651b8e5fed688b6c872c976c65bc4b485323261223a7a857f644b355ea1837f3b35cfd10165d33934a0bf73b494db1ced697dd621df4c102fc9251632e586a0984ac3d7f60f9c64885fb400f030ee14bb1d15313f0f07377f65da65d26c63cb30615f761e8582bed3610a7802020ce9006611c7ee9e046aedd047759e308d03bc652c7ae0afba38cca0b3e8fa555b0c000 +GCD = fa9bf4d083cf83140e24ef8923add5e79a1a0deb33cab3120397ae16084f2e037f7e614ba0d966ee7a55b108b56d0f000da4c447999d3832b1484d6b946d7f75f7176405dec9bdfe6a95d000 + +A = 181f907f9b5c90860b5ca2aca89c3144107b4aeae174e52a7491e4da7be7eb786ce360236d9aab3dbfa1e8fa76719c405b2a0c4686d85639438a5c8e12f61770e99ca065e51f203ba6d640caa7547947d3cc08d98a8d589878e5e52396162c286315e32a7b6be5ca5a86693a9dcf7a2236149651fe30b19b6afa1208f93e2a9a0924c97a2e394d028e6cc94c6b94d83064b2352708787a90 +B = 2d1fd9677f05a05cc8e7ce0bb7a4763c90f00eaaa3a3e34aa9cdc5cb62c8f204b59bc96fd11dfe27736be47dc5dc337554ff8a2d8ac5685f8290c2d3364bf4a4a2c0533a945ed9dc84a656aa24dc984e578104008359d2eb372ce648d35c99aa7059e13251739ce26aee0c01a5852c5efb0d0108e2b31cfd41a80c91a51896cbb3dbf991f6930ace351370f9231733a777eaf2e73cde77c +GCD = c71b0de446cebc51864abfe48a9383a59705afbbe922ef55b979f80b2744712a70086e61912e603fbc753cdcd8669c7d2ebf0a805a3c39d530afc53f6003a86af968e50869079a0674a59f34 + +A = 4bddc13f12794628afaa4510c5dddd49370bf3386a087ad82a91d363a6f22979e5f6b56af4d97e3a9c2afac10e40012876d69cebfcb8686832a2df1a21f9b683911ace07dbb66e76ba81341ef1746ab37c2b5a24f4c65df6839f44917baba094bd7772c562506409b71c77476b40f694bcca2e504b1d9ec360f027cc75d1105ef09f06ac3bee1ce963c197cea5e0c2512c76c37d080b7b4 +B = 8a5d482387c2cf7ac99545b29bf69ac65c51b7a41282cad18c4a9267ff3dc2d4cef107e888520e3bc6901c5fa48ed80e21707700cb7680baba8b221b2f786030f7fd33f1951978d73a61f9581656b4e28a02b5ab860310f7c33a9ce349cc5a7fb625b471a650ea2ae41537834f1ac1c2350dcfe428cc116dec090477cf572ca0a0b2aa7646da2abddb81b39e5ea94e6da6a8a834ca90c70 +GCD = 104ee6f1f164d6da363504e3d5d605f810a9b233ed591b3f30e9404cd85438fd3cebb92ee5a7ac97cfbae13acadeff18e8b3f48368717d72ea61cf18c0ae46124de932b3747cc6a32cbb0e434 + +A = d4ca76de4834f462c57f667bc824ed872cd8a8ddd1959abfa6cd9e6d09bd7f8fc7be2d904698a41966d88ec4af40e61c7bb01ef4b6175140dcfb496070da5dc2c095ff0a9f980a34dbf0bdbf8f715de485e9e113c63e9605d734a065498b0d8c3d11c2f23fa641853047ff70c2be27cec16b67823c96606121b6729262237fdf3acf9e7adb84d1e76956968038f6d618bfd305870aecf928 +B = -5595d52d73e3385840028bdb222b44f30555f659af124179a0066b9e57bcbbdca312378796c32bfd551e44074f5b4b0c36d1205b97141c6353c767d97a0dcfaa5b57c0c11c3a0b21dbe71bd450894723a05310606652ea2d36ada212b2506410cf7c112b8478284b9cf7afd0a23093d7ad05f75ecc0b515b39cae5560d82edbfdab9164c7865bc4554bdf503a7839aba35e59ba1bfd19d8 +GCD = 5c04e7d16f92ac1cb8729bda7f54fb0fae00266958bcdf06ec58b9f4e210880caa8e12dabd3314dbfb3f258aa4c365fb16e12bf1f60a6f05ebb17efa56ba61d7e7d089b290b745a1500aa7d48 + +A = 2cc15862ae6fd26fd639a7ff6e6f682e1f22524a2073987f5913ffa301b9b6cacc695ca794d946b8279bf3c59bf42e6549b011619e2ee424c477dc2f26b9c59ec822294ee57bce82dbf2cbd696bf297a2f376fdf7aba92beba192a6ce1daf1bb0cb23b656f85273f7bab908eb9f199c1300a21e404fdb69f29bdea40b1d6c64359f30dce71e6cd5435c2da3b8723722a05839e520fdb3d8ac +B = 270842d84163eb67aaf9eb7ae0b066af3c0660e9e03f9794524900fdd89a336a250a53a7ec83b7d7d2ece779c79febf180e59d744f1b396e7f3657ba7708a1d45a9bc4b21b2d8710a036bb8184a440d4288971f90b631f581c0c90b8739d0bf012642e3b048b9019933fc6c216bb21b8ced9a99ac52bd628f38a0d726fe18516452de6f059582b18365b4ee2ecc5a4bfbe16b8a10213f5810 +GCD = 21f1190be258738083ae42209230e2bd95794317d31990b0825b2c32514a1576abd806b1fe7e5c4690288b7105c6b7f36d192dcd00cc9409822ff8ed6b22b44cd0a1de1fe30de61e4062d0444 + +A = 5e6f002436329160d3c78ed38b7a1d9dce7cd0bb6550c22ccc3c2ccff68e86b9c2aff78a8fc3ec5c1689afaabbb28321d2c3add4ae5b297bfb42c3b0db18a60526790245983de55781cab420f00bd43d725dd2acfa21f524eda475a8de83e6ce941a1a2242f87887ad7486e72f7f0fcf550dfb9e6776e392de2709712f21ce126486dd123611f0c9d7b6195b7190404c4c0316e5055262f40 +B = 324698b30e6a333ec6e3adb2db883677cc51a593215efc54e98ae142de38572845167c0e4671bf2b397144f2abe6980087bd1c38133157eab312ba9cba7356932fff04f9c4ad05bdc33eec314ca5f502b1234c028a60dad9bfbaa1fc67ca712a1dab8439bfb6203cbcac2e04a3d935d1ce441048d8e927615684261463625078e686aa1bd89dcd1f50810f59ca5e933cd82a4498ff7b250ee +GCD = 62084be150aa6dcd96fc7f80e8dcd45dcffb9aa2eef16830e4517b36fc98d416e5bd23eae779befd433cabebde0e0d8106387fad9ceb1e7abed5e220de921c62eddb3b5e776f754c31851349a + +A = -38d468abc5cb92fabfb0ea82d1885ee1e092cbad90d00a9fe84e8c03430bfeec2722e3a576460419c75169fa47d5ee9ea4d67f8ef3180aa16a8a3eb324f987ea099a9764cfe1d6bb1588e8b58b5e5be3244fe1d5afe2c1f97892c071dff5264cb29938989943f08bc8b9628353db6e41d25cdf04abf63e35f45c116a603ea71e191eba975dd48f69d530e40b91bc48cb3c8221a8ea1b431d14 +B = 101dc13f64746a4895e5d68b8ac38078c2f7fb395a2c46caa7256e610d4c1aba97b2ec2684b0bb0f136baf6da3fe98957c93c8ccbbb27a8a586cf552e895d876b37a5fa8bff7836938b728ba21c60bb24d4787c1a65d4e540ea7f9d1a0a3c87a630fd93c0c44c9dc7aac51c5689eb0462597d09ab341373e8185aeb3ac06e12f998291e7bb0c8278dc3e2f1e91d3e1c0b9ad8ef90bd1aff120 +GCD = 1d4076713ef69e00ba5890ac92add6d5652f3e986e30d2e638b6797b64d66923fbeeaac4a015441f2aa03168528bf42022d09cedf24d7cce88640fcfbc49c19d1d42bd0b195de17d6459be45c4 + +A = e04abb8fcfe198b85e66eaf1efc0453bb2b4cb594f950a20fe935521f0d423c3b4214c394ce0b1abea152e3c0af0038262fd86b98fde9a4084acffab4f5bd3a5c40d4e8b11b8bda6a427b06cbc8b56122d790247d2da75eb682e3c21dba3dc82344245404866a9017d999290c4abd363474f910021ed61fbe1a650ff219ba6de899394da00d77275216953e59583711526d0a1edc1580ebcd8 +B = 17c48f300e5d74c4b32d5e8abeec6807ab18634ea6524268f653d05a66b9bfc3bae9b2f8a70b778e19cb7bec7304ec357438ead766d6864f89f773cebe9977e42e2ea1ca31124dea5ea9333df48411111714c053c3fc1cc683c51366208df5e7e67e5d917d72dc5b6180a0c2e48f340398ee4091a7612093f8d1e81632e44e1927bc56f823cdca13a22c6f1592038f94c85742b94e22dc2b3f8 +GCD = 7e122720ee9649ca530f8583268e6eb3bb111cddc202a223d552dad06b52a44941bd081f0dd451c840a9ac985fe315f7fbe5f35deae91643f3ae0c27a4e9fd85b0255e13ee1902d6c650981388 + +A = 42dba7ce0ce53ad8f1eabd7f4b5cecb9a0fb0982326c04143322c19df057eaeb71f4ec7b7fff6e5ab596627e12f6f9fb8da032d12247a928df23b0446b5eda4c89726139c39267b38bae04a56106d0717c5fc43f08676f63aa50e7ca1a84c087c3799a5bf70815b0f04ef2ee038edca689609b78e775bc018ffc090713a2769574b3c5c2dd2b6a52d10d652fdf9f719be0d384d4cc7f4dd54e9 +B = 4bbc94e2a4de9ba761e5dacd1c904d02525934308bbde7bc15745e842b8cf3c008a340a776c407e9143a8e0dce946feed07f0d3fbe91537f1f252d094b1d0071dfa556a5d1fef7fd96d579963eaaada916e30468a2b57069272b6d4ad14000a3fc265362eaa332b28a522200bb99c280329ca0b76fb01f9d34cfa471e7939b1cb534045b7fee18102d0ebc06fb8602c95064f9e76ab3b80f488 +GCD = 2aef8299940daa9285daa3a775b9a11644629d1648fea38e63c939c142d97f04e3c1768cb2d3b9d4efbc7dd3636704bb10395484596d7c5d9f663524581a2bd253d1684d3bbbf6c330419e7d65 + +A = 4af4fb09cc55aaa8f20b2f80b263a2e41973c360d0e16edd85de66fd33f27c6be21dd6600cc2b9a1a8c32f74b819aeff423b25cf0aca7060a2f7a6018aada7173f78dfd9d908247795c0560e8b4ffba8a309a5b70707bd261a283914264e7daae944f42e4aa733110293fd082a28cae7088ceab7a7a1147dc58602fb6069fbfdf35b9448e86631a94a6d2418e9c016a9082e5a66b9bd2a4d60 +B = 119b492a5e891d4f5bae2e884a69b29eaaceb1d13a4501bf4a1467810027b5903ed34af1b97e8919105cd572ea31b23a63c53b78d2b610cac62b5e9f426e8bcc6c8cb8b9a59e37a0e4b73d7291a73ac1783785496cdbd670c921beff37cc80fbb1a789eab887cf1639a49bce337514f0ae832cdbc143db6141ffc883e6a021f6f8a6303d8deaf3f61a01a9524ee1e55ce595bc5a482f5f56ca20 +GCD = c2210fa02ad93ad54170efccb9fa90b0ede9c1037bc3f15384c1a8f640acefac6b37b17e81f907d4e86cd136fdebc7d2726a5714bf6a9150967e3bcf7ea5f5041b21bb6838a7371d771d715b20 + +A = 2007a605868586e0628c98583416ee2780b508f472e099fdac69e02fb778726f23dac8bd27afa7327cd503bf0d29dffb9b12582e3b2748fb202f54e25c0f7cf1a1034f4915a6d095c305796ba3e496a9b90054bc6f96def3fb18c87f9b35de12dac3beaa4adab6b4665989e492130f7fd58629cc779eb0b9ce96a776dc2c0aeafd8dfc802b771271d0d0725bb01f6b752f71d81d9a58733127d2 +B = 396bea1845cc6ec5d087bb0e4d9a6068e9066907bd612069edd38818327d34f7a1380d12edcb2a1bd4d58e9c3d010c925ecec2853f2e2525bcca3f107825676079c1628e1ad085e02347d425eb5e986db85d96eef0d5d643e11c41cf6d8c98935d79d6e335806c72b71bbe4a8c2caaaabbf99234e99e565c457e187a6dde3ad4530b0ba53c289add844e343fb682c3c620ede6daeb43afc76eba +GCD = 908e2b8bfd1de4b4e26c71d46a59a07023e5b971145f09f8d7b522015613198e79e266b72b66889f205b69306ef0845c0f907f1faaf65fc5a2c942fbe1eaa6a95dbd2f95efccd272716311b99a + +A = adbf3586aeead2fca9371978c02969645e316f7e337b34a6a3ffbe50ddeb4ef62b2ad59e5a49451783c4b20d7d6d60372064b161b20afa3ab5b5d7bf074636379a2895455b8c80153be5c4856bdd1b99dc1462e93e447524b55d561219219410a00ebcbbaba8ea0dde9e480ceacfa09495bbbaa5207e9155313e7467eea3b5279dea6b91a53a78e87f18d5a59c054dc5f254c9d113842eebf85a +B = -14d5d48264f1c8f2c5856dc4e597235009c15342522107995b618075861beb4fff65487ab60062d920bff8e678863d94e2755b652032868ca7e49ce95877099743c6bb27cd58b45d6f7098b54dc6a6d7bd1e390eb70d175072ed26858159a2cdcd0de1f62385c6673f53373a17641b975972bb4bbabf559f9a01e167c8f59a0b0d30ba7f2db8e577d05a5a5bbd34d0d84d647aeb78b9148e62d8d +GCD = 1bc4aec0fe4a6625537015b56df9600b4aedb8e1151099af509dbc567a9bb0e77e202ce85792d5ac7e842110db298836b29552f0e978bfc945b985b72e9361b84de56eef4df5268922af94b95c5 + +A = 58646c8fe8870c50c2916071259f12d455b9ac5cdaf218aa6c527180531f42556bd2278bbb8c420e064adabab1544485fd4d385beffcb4d66eea27117747716cb8a21ca1a71b6e3ad8d3440549321e65d636ee896e16f26bf352de3af92709c8265b5ad791bf04c23d50ea253be6c586b7ac4583513945b33dfec760257aad9bc6a9293ccd03f7ca4d0857938eab506870feba7c41afa50a30a10 +B = -139e1b1a7f920d6a162865f09f8769a129bed9a60a042f0d3fa2423d4761be65c7556ebe9ee844a04917b80fe8af71b92e0e2956bd9241aea2c71c55b6c6c65439577a66040b3137d62477fe360b93f5ac4bf7495030ab05319a452922fe86a661cab36c96e4867b81430fed04dd3cebaa735280b305726a98e631e780571cb3d61ebb243981b9e21b22d6315b1db30a97e66336670eee2c03d40 +GCD = 175942db2db2901f6d6a3f25e461098563b4366815e469ff6bff97ee511d08565eecd5c411044e26f9850be65aedba6419a4578925c674cc80cf7f6b5520569af364b82106cc2c0e42c9fe4ef4b0 + +A = -32870601aa13a49fe9e6d91f69a3060795c3380aa892d2457241a4a09a4d6355bfa177ac9a32a4a03526f6fc1c1ae3227c5d8829e7b2e651d50c6b59bb30641a24bd7c25d84e51b4ed3ea4582807cb18dc8dc6a16f24aa990f0997192a367bedc3f404b2713ec5909fb4a7130d1684009130dc2c55b5086c268eae279fef7f72b0ade8755fa937a03771ea2c86b5802d848c1c4749d5c71b9b124 +B = -b9c5a1ef1409f8e9fe224346a6e249b905464b9a00c4870640992a6752a73169a9aa04b356084a7ff086c7352d441b08c9cbf07091913049f65011d1570915e8b9d18db204512a81a6b8f831864e928ded462c12bfb24f1ae482fec0286f4b0a292b62c9888110d82bab37bd405024d25db4fdb80ef02927fc7b6e8653a7af7f081e1a52d4a5843215faa62011db167e5e4463fc74569791a7b60 +GCD = 76d6d56e7f6da82573a9a269e01bb82ec405ad92da07c108de24e9aed8d476dc1be3d612c4a5acdd8b2e9f757b1403c3add69804b482bf7003e5d5bb7948478d8fc2ea97bfdbf4b99dff4242b6c + +A = 31c888e7a03340107798150093cda9d0699fcf04a28fecbde5ed2aff96b6777fdabc6124bd61d508098fabd814884e4202ee432296fbeeaffc84025d2147340ae57bad12e5daaa80f7c003806c0bdad595716d9c97fb177400e9ff9e12d66f1853db836b400612f713da67b69ec1ec0329afaddd67b8843addb9840b2bc4e6bc033d76d5ed80000cd7d14f2863d46cd722c2534b656ea8f9c964ee +B = -3ed3dfdf2c2c4c9e02149655361c99927b53f33a3fe57f7269252d7b0a593c70c3a49abd7936b07234d281986ada0e92c9a988acb784c178dbb1f991cf24df4336cb16b17e3c8bfe5602d343875d0abe880e09b41292e9c447694dc4f31cccdf337145b05ad79ec7803ad372170e8de8ded9119270fa821129bd39b81bb498ea97cc292748b41d0433693b67349eb9ff1e961ab6fda548365624e6 +GCD = a3472a57ac5873609dd19d90be1918fea56ca9bac89b4a877e27a638eac6d5374b1d4dfab9f6a7af2a6edf3df57d16d019ffb145a55e0d93072ebcf3c3a6eefacf1f99a80868c06057b88119d66 + +A = f5f7be2dbf17f5c1899f5e71f8c99882d3a743915b0929bc2ceeadfe9584eab5a3e5daeaf743fbfb01d412807cf88d3d664da81fbf2b39dd7b94e3d2bd3ab7b5afcc84221c10f9c4145835dd97099bcbff1d750acab9fd55bbdcb6643458af5132a3ba2ecb24b795b18735eab9ec6295c9a50d466aa7be0b09e2033f9ebd852571c1a7133bc48f79e4254f7f0b3b5e6cc14ad05f0805f74ce75696 +B = -5c70585ccb8d7e52a49befe55db178b302bb3ed1192d5a5ba564fabbf314f146ba99eb57878e249647f6ee0a1651867f5eb550be61acd7f20d0a4132871096ad3f4aaea827e4c253ab7d1bb4f3628d573b0b88e7fc34c1f55dca88df7142d3e740411b9fc94d9265b443d04b61c5d6664fd2facc9abf7fa59bc5c81576596f650ab621236bf421b29d2c330392f76f480929163f52f3a81437e3ec +GCD = 1ff3367d3611b5b629da7c151340a062e89bc289cdb062dec002c43ee413dbd313e6344611c9bb5f1294b08ea985f146c501ac654f08766b1661721df38f63ebce1b66415a3a4ee2c32b703b5862 + +A = -564ef0b63ce0f4b0a0d8169f64f6662fa8593f698f074ee53f11970ba767f82edf7dabde47c59d48c1e44ab44fbd8f22cc0f6c17f8362bc7beb7990cdb65cd5532389f2a337abab0fe16cc9cf38a4c963ea4d7c2f8e3c40d77b1857c7200fdc08fc6cd415cf6a9fead16ee58ab796f600c3367cfa4e7141b8c9d5c1268cf843a8e96d12641c539ab6c8a7060328dc55090cf7c1bfa73c315143513c +B = -1b870ea98e7355f81a39d3da1bc5b15fd2ea73e51c94e36a2e457950d229d08b7ca380932e994122625274cb55e992adbf3dba66ff92818eff0b200386d64f2fa27f1e479a9660f8fdeee93d03c43c01f8e7c4d6c343226804d9d36052514cb501960470d98da10569b9221bd8aeb288a8b8fbc27d924da1c20d93ed8049b0e8b01e8d6576bb27d27c81b0fa512a6a2f68b2d96ba7b0e2de6738600 +GCD = 117d942ae2eba96555d67c185a5b9b174085634e8e21684100d096d4a3c8055c3cb717af8071aa072e578ebacf01e9485a94e9ae238e99add64af951635c3d4f70e477a9f16959b21d85cd87e071c + +A = 15226b1e2ce794a66ee5a6ead3624fadb25798d01bc5eb02154384ca9f6f94ab6a8826d130ac59e900c9667d538881e0af6fe4ec75ad786c95938bd90677bde58fb9e2387fe80119f179d439c4890ac2b979c19a8bde2adeb3c752055153dd6ebc6e35258376999897b602bba79eca73de68df9707cddc476852bc114fcfbe25da67af1ba285dc0868bd8377348804b094efa627902425af91550f84 +B = -12fa7c984c929aafd893b6006847469e7dcd4cd53e63afad236bbbee60e2910a20ebdba5f139402b7b943aa8945a09d1bd7b8671e327ba5f4afa51c7b77e2132ea71f99cf65856ba72bafe2c0336c0268010e403d3ba36812806fddacd8929fd384b0baa2ee54127eee864b9021f871d5f4f69ac64b6050f376a6bbd54f35bf60a0215530b929848226c25a05d771eb7bcea33adaffb9dee157be24c +GCD = 552bbbd7c9a970bbb60714f3d89e3153a5544b549d3a3998c17ea7ed4bd8c30eaf2cb58e3d7001cab3e2b4d64b2e3172288a41ba2b0f5e29592b150847f30b50e2eed111c8ddee2a3e1a5511aca4 + +A = 6533b1d8348bbc3a9890000d368a0291d4e5863837f3485e789b6a6eaaf3cfcb9695ebcaec55553ba472fcc971113632995b77f854cdd188d8eb2af4681a6d4b71ce35b6cafa3ed2170a7cd9a7dd1c5d4d8f67bd2a046cae65788c43e88f966fda91456e21bf71cc316f7ed795dff82c2d4cf389ba2aa0a1370b2401aa607bfa3d0bc77faa2cb45d127fa0c383d6a128166fc344133403b2c7f8059 +B = 496047bd81c7b12f0f86d6266e5eede5f83220fecd13a29ee806cfd1fbfa29a52cb11d60cb388702ab553926945804480e328113d26760b0482e270900a60211a30d226cdabdd318f9ee55bb4fb453e1327ae0eda6299a9928283d3b81da7c05009eb505c46db402e26ada63b087f5d67adf3242c35a2732e65442ad9211d951fc20cd52fab744592cdadce6faf2f28a52a0e236c2eb29980535eef +GCD = 814b1ee9ca215e0b7679f0fa034ed7444ffff2237ed4da9c119fa76d80671321d569dcca9d45016d6e1c2bc9e11891a31302dfa7d1636273a5a430d7b1b5e2afae809e748d21cfb5ddb6ddfd987b + +A = -f78f107e9004947af3904589e7eccda7fdc1e3824307f8c5caf18d729f53fd932db5c380cdf955eb862f9c03124f28851dfdcef4ee2b0a3b6e7357f2ae526a8c78d8de6e8a32adbfb1667dd8bbeeb6084518bc84549c2e2829f3ebb8e097735f4819781bf734b6808ca21c301212d234f2aa250300be247488bb78af837ab64336252178c7183fc4cb14a3bbb65b48bb50d93f4a4ea96d572e891e5e +B = -b8e6fb094656fdfa338806359a89cb8db9dcaf7ea61cfc9291c1e80171e0df00a1c4948950dcf38d15dfc3e4a5603ec3f47d4a2769f00ae5a290cc98bd73a4099eedee6966690825ba4527a283fa064f4a25d5e13c837e9938c059aaa7af4aea800706e02d43d80dbced7e96a223380c8fe72a5c96b7dc481b5b5c5e01746cc95b18826cc2bcdadcc6035a81413d27276e4f165cf1ed8a87004654e4 +GCD = 106190d22407519b89825cce5030c302a685aac4c03c6ce7a1039b9c5f3efd6d69e69539c1f5adbba35686aed52c3e46669949329bc048f0b732d6d70897b1a2b5b3db9e289610479d2e4ffabf456 + +A = -18a84b2b1123be65b079aed11e50ccfbdc591224f585bee3f78943bd69c2a807bda189c1dced3cda5425a747e682811c5953eeda5633cba1dccc4f98884d3632ede89df1a3fcfccd13af3b9753d5f742ea3986ce7832906954a19af13e3014909a5f7e4baa9793c51775527c0505c31fb62eef5c118bd17f3736c16142bf25356639399a66a5cbdfe7998c53892f10b6480bc5586bce2982d408f5be2 +B = -2d00c4756a7f3c8f5226f157c5815ffa979924612cb789af5cd3afb0a84ad25ddc9ce6026e23e45d9f78bdd0420d0a5c7028088158d0d786a15e8e1c4ed5d27b527703670a5b2bb36f2b5d160295e9d52dfecc263c8a05cd66760b5fcd11681d64f7851d4883d8356c109dd271a86a91682033ecc2311495278dbea9380f14b1f7436ceb594c563445fb2e9a69bd79b37f932cc7b9d6ba388c9a0269a +GCD = 6830ca16f9c00ab398116345f665fecd3aeaeac6cc773905518928be45dc98054a04e081cf03eea002113a872922048f0b27907949f7e14da3c59c22d9794b1a993456bc8d2c9c74a0392a0cbe012 + +A = -1a385c9a54caa898b408d8c8762e43ca11681a52f73d90ad59e81c8f99e2335452a92c153a9cd7c1b48f139b16a728df3c4f51c0d2217613eb235944b08b421880d042f5ff916189e5e308a7c3566d6ea4cc1662fd2d7251afc9427b44e51c3969f4eb5b57cb770d13bffa7bb6f44b5c57e39be1a79873536035b7fe6e9e14602044df959f349c75e7cc1f24225c7bfc6b6a42dbaca0ffc0899190410c +B = e0687e1255a3d28491a7a5c39f8fd74e04f0c183d43c5daae60ac6d8d6616a30c8ec984fbcdfdd5a3b7edae6ac0ae61a08d14992f11a5755ff69e6ef529531fd5148a6bfd696bd18e8b03b86a412af3596c87987b1f7c6e0c0a3373817a788f2676b6f14cdcd1cd9bd13eac049de3e4ebc512cd94a2f4fde208dc3ec099b819ce2835903c22ff20338fa702a162f6fa3c5ea92d472ae91cd411f90500 +GCD = fc31b2635d9377d8d8e68ca2800298eb84cf66ddf1eba1b402b31f98174b83fbfb62753954d065dfb73b5fec077366fe64e54eec9bb0592eb090da222f8ffbeb8aba20cbd7247ec4ac4ead112166c + +A = 2ba6e23083f93313fa20fb17931bcc471817493df912d1cb196c2ea6773130043aa3183884d77e2c68b8f2b49bc895664c1fe8bda5fd3255488c5d4d06cb93f77661abf7e38ba4463b5d1936ac9e814ccde6a6ecca1b96c701aa1fe968f1b34b03841e68df3914397618f4af3b847fd10e974da477e3c541530310f70aac0bc484fc7d344ba7a3db729554908c1af61f2e6b0f3c1d73f3469a135e3376 +B = -1ffcde75881f30657031b1b19e72c3b5c167613547bf4ce805642dccd484f9bbde59469089a02f30eb3f705d3672751bbc3ae5cd1bcc604a142702db8bd5021074add58895ce9fa175db991b6080a98706c2e14ea6d8ae686a92d499255074e0f7b6ac1a35842fd01bf5b070c952b0eb2814adb34db1a7ef325a55f578f4a6967ebcc5dcc384e3125fd4c88fd8ef6bcdc0a12550b622a04de1adbda405 +GCD = 9ac73b7e17d78a0b0c749c96889c366e785b706e42f5a5c62cf26cdd1ef210c35dc80b93e786b81af1db0b3e1e804faf3db469d01f833c1ddfed0c30b67cd70a9a5ce3ad37d4c6f0e1e4fa21a8f5b + +A = -119a611a08e0b1d47b8e271865e3c517ff3b15243a76095cf4ecdf906f439e31e5f00657e4b397eef894f29794bdfe099dbc3fe99d9382d75da63334e0090968aede9422af5dcab38ce8054307549cb6fac65ece319c98e0b432159b0229ba7bce8881e91c00724f19dda2d445501c61b07a6f1096582ca017a4473407ded4700b3e09b5e9c5da72de0b19722feb9e2acaed8d8e209918c5d4f591d4ac +B = 10172318b15c5d9b2e316bf59b23e3c05ef61d2e1c7e94fbec025cc980f6b079c7e54957e58cc498308fd0fcae482e160f319e7420e6a61500ac17919090ca9c86c83068e2fae9cef4a75fcba65db41b69d09b4c7e35c289e9e66a437473f8594553e7e30cb8e9954e26b9dddfc825383e25af0828596d6271632ccae0527b6f743622855c1927fd586b3f295277a88d2d9c5a7db79f5fd916d759cee0 +GCD = a5b0279f6fb918a460636931ea895d469d343de2be28bf387cd6049ef18db62326ee08c629bcb4b5becab054bb77468443720068c6205ca74ad7dbc75596f4c7e0cf0e13592ae50af0ce70640306e4 + +A = -1c229c1841b818383929a227d4a46aa7f0e8d384000edd9549f7d5bf9a4b768f26d7a60c84caaa4576dbe70592fa48bb6ca265b4a96f2642faf0a74df18886098eacbd1729a34398321141f1576a779b8cb4917ac827ac924d1792c6db76d2950706e2adab452daf232dcf399007a3ee82c86ea8d3a25a9bb32acb0d869f7a68769de0682b971d60b3d3f97980d4632c88a1df25603802f275f0301f38 +B = -2d0daf7ffed556790fa62b984ffe0403732044a172d8ab866211d58d45fd8f358bf5882bf7efccf4b255678d6daeb4538c7953a52045ff2c4050648d4e4d31100124520d04b848af1569b7589ebfdf24a4a9a07011e70f5c804bfea1a01dcfcfb48e73842e9a5d71ad2f30f3a618206eaf3e73a53c311dcf39216621c2b3b2a0ec0a53218431f668459022ff0219c0a25429d38e954f9053120450e2e68 +GCD = 2ae2053b6d15976d4415c92c71a407d0a4568527bdc1eee72e047436c9ec1831c2a32aa73727f8542287b37096ee87b9e20e3a489fc6a02f07ca812e1ae291349fcded3864bf76f82d767833ffab78 + +A = -11512883cfada5054c4c3c9ff16c6e9f31dc7368f291910fa71117e65d890f8b5531380f5ce7a68d45cc7cda4e73406197cba44c22af3cc01fbec474d4077ac123e9337ca996488e101eba0cf2e5d7cc22be36f7f34029db1482ec63e2276d8bea80c071621481321dddd118c90b98710877000e77b42597e56cd8a13e4bac9a00a396490333d2394c4cf4f779fe08e33645b4b5b9774741048ab4ba9343 +B = cf4728f3249bbefc7ca89614b0ed2b4f699973ff6384190e51866f68aa28ce89bdef7e5514bbcefab17cb3afafdcfbd666479fad44dbce428810f276c96ff741bbdcfec285dc9a1b40e0573d7cf0c04918c1e1760b0703e67c96bdfb23b94cf39dea1a707d9246602df75fc3db49eca0cabaf2a7016dcfda4f940ebf55bd1009c56fe6b49f73797165080eb859f962df9598ddcac381d99afd7919f5180 +GCD = 6b98e6b66b8948d5547aa8a5d7eb202011f17693339beb17154e7afa2be42034d450000a128401a061cedec95484bfa5eb27a1c1c018294808c54662a1c7e45e4ddf8b173b5a2f76ca371891b55de1 + +A = -39658d70403668d8996b0cb6aaea6289c5a546076c550c306fa0c9e413b26c4c0c54669d4a189141844991a5ddb1786735ce08c56ce5da2bfe295a7e4a96fa0a5042e873a26f19c7c3c4aa3c1226d6da64e2d479ef62eedead5468337bc62df3b55dee45050f16517473494ff20d3aff1bcc73a04372e65d12a5e4f93b5c0810cd19bd717643e5f575300db41070faa92b3492cd72d8d2adfcce5fd99800 +B = 37e41a141858200a5e2e23a8867a74255f259970fc4dc07b95489e98a2834de461852949856a26157911210ab1c6fceda182b94f748db3fad17d4a3c6db79f18ae0bc2709d295fe5d6c5164a7df4556fc6c6e96aaedf497fb157b1824f684901dbcf756f954ebb8e9eafb054e3c0ffa098b050c64548e848e491140bd0af9c600cdd3c4a8587a47c64d520a5ada6da8d56735539038cecb116f40c53d520 +GCD = 8f47724f680f3546964521df9da187ab638caeafa53e676b0d36927ae202c1cd021565900484661d55e7efc93cdb6c966b8e42b32f98cec9d019c6f98cdc7e0aaf7bfdb6f7af53a924a5865026e75e0 + +A = 12af2dabd799d5f77a8c1af5a61796f19b721485c460a9411d91c03a2b41a64a181ec8a192258e808979f2101f214979c04c3dd2c32185fad5fe7503e50216bbd38c22a7252bed4fce99f264a3ab15f156d4718d26f1df3c2f799f091b911b3baa1941b5453ebd247f4a978235371e5c4782468e845279766d4790b08f3cfb0e04ac7fa9e99028adaea86d2aa4fed8d46f9f004be58b74b181bb9b781e3e0 +B = -21c68056fce2b70a4915e4d52145448cba5ee900646847568024eb0777c83c26b868ce6005a4f1b04889d45ce4694269d13ee36d6d7195807f4a3edc6101b6ceeff71f632d1381ef3ecfb9ea76392439ec45939ed95ea9a66a2d03540b02766a3ffd0312477736e058dc9338c57416eb1cdd44cafe9a4db9a51143690f1bb7b04da5bee0f6e778c15679988c73ffba077c7d0de0257e2b651a5670fcac79 +GCD = 1c3f412419d522ddec1a02b4e659e31f81c83e366bf18cd7915636d2058e5fcef96a9df015981da7e9dc0d00c3ad20ee8a0ab0eccd4e7bab5b49c3b09ebce921c186aa10a69100722cf794b56963431 + +A = -3fc5a116192dfb88d643f29414952b6d9da348b052154293f831a6c315183327cb8b501d91a021c339a9f6f888682b371db3d787c07e7c101262865827cd26634c2f4ac503aa590c7cf3123a075cfa123eaf57b359cf5006b3b962b3722bcdd323f82276f40baf9f16bb437ba14c424c7f7c940e6df6c245d790cbdacdc37406e2403bc7d4a39adaa46ec0d543c39b0963d2686d2b6ac4104068b8a8a3a58 +B = -a977335dd8ab37fddb331d34db09a447172cc52a5b91aa7b3393c1ff6c7b3f7e3fffb87fec7b8af6928c30b40e477f499bd199da2662176b8e7fc98317d7c7a7324e6032cf95f93b6fb2faccf2f36a4cf417b1e4f31ec2f6c9a1bf4d88fb24713113c854c5886d6c9b296fe8553b1791f9185be29a3ee834d3f0709fcfcd3f25496371d8723935528888e9f3a3d993d1def5b659efb77bac94b1c8a1af38 +GCD = 5c1b73d28eefa4966fb89291f85c257acc33b1d618ee8173df5027817f27f67b792d1de371f635060e1c66a4b12298bc32b27dac176054790a57920510195d75eeca905d7b630b8d4656a20c22c4158 + +A = -78e763d5a089a7d6568b2efaa0d76bfd03fa98f910a5f870c0f9211cf1d97118cc2cb414a1a75b7eaded20b90776c2240e633938e349976f6ef5bb101d3b88d6f890de73fcd9a145efe3dc778446715f6a66f13d52b61f1259fc1bf8f73d6116d6f92fc91df5fc4ded5102e527d8fa4a7e926de954385084d46a5e94c81620e0ed65e47877595072e11ce2fa737abaafc63aaaa2a639dd08c450a4eb2610a +B = -18f77f869661a2beb37d54bd8cef3a2493bbc89891dac3f6ccf269e1b54a5c23f20a45ff51b1b3b9cbe77027c22c46e715ea42901b8ba7b118c4ac3291691c95ab2c65b1f052e69df83003908da3b152732baef38ec50037b37a4f9d9a185e30712b1a4d81e0212f8157c725db0a2e08cba76cde3a4d398899a42fe68344ccfee919a767e9540d390636059f82f31e35c7db1248e358db1a4a4bb5bb6cee03 +GCD = 7e6c34362c5d3af1364d6e295de00b12a97a4a47f8da97f7e2b15ae651a6a0e1044f5c59bde90972ed6b1c2814f2ac6ab5e235c76ebfea52cbe46f700533f9fc59370bdd6ea708ef335d5253b71dc6f + +A = -4042cb1f17097d6dad28ca72ffc6438496f96f904b59c61360a21b1953e88dc8c54070ca2d00447974275bc00cb5c4d2d8f97648038e17652faf48058f46ac857ab751af432a75cdd097b1b280e41ddd5dcf09d885aa3b6cee9aaf044384020232a86dcdc87f3a41302eebc1298b6c9fca49b3a84347f6f31895d128eada4e4fbb5db5d744a22716fea3486519bd3504852851d05e1894d7033a85dcab7d80 +B = -d8bbaafb35257ecc29ba4bed2dd5891fa95752c37b1313dfcc24b3935c89b4de7d655fcce01abc26057833bcc5c43b85590add8bef2e4e7b71ab8eee48c6f15b526cf58deb32d25aaa473622c9649602d9311c8ff99ef401f624a9571a29aceeae76dfbfb83567277e75e7faf83916ce7b31e1b60436c17af34829778b5e0ca416190714511d3edbf56ad49ab2cd63629121ddb5a9a0a5b147c9dcc33d62c +GCD = 5170357aa0defc4b91f507e720d5f2f3e5896da5253fce4ae12a5438e46944153f94978c16a7a0187d09af17cbed1e9c5168bb0ff1cf84f3496c7ca7076a58769e895f23f06b023a6cdb1b56b866269c + +A = -d5646f9800faf03bfa0b1f54757523bb30589df5bb062b0deef17d27dcb01c50115ce768b71e8294323c9bcb37c7dd880432fb8e6726178fd2244ca2e9318c16caf087fcc5beb4db6b284d3f3cc956142d235c82a96443e6d443b6c07923d9d7c87d6f08826e5139b4f863f027b35522df3f33491171a8423311e6d034ad90bd5315f20b16d21e360dc3ec1fcc87bff901bc057cad089d7c05dd49e6ec4000 +B = c35abacc3da62b0cc14b539344861bf9c42b4ded0728bce10651e8e4eaad999cd1faa9a7ad9cd34ed8829705279512e959b38fc3acebbdaa5b9b53d3421d092a80f1867d3985b6f98f9ba8efc3224022fb434c0e991aaaed449a3324710dcbaba0e6011dbf5564acb73db323f214e3e8fbe9b3afbb7a9b4f33affc828bdee61398c12ed474f32a8db1eaae025fb3809666f961ad38b8e4a2d3f2fdbf86b980 +GCD = f74651c283e71afba05d1d8457a4cbac720a2fafa7e1a75beefe28b56eeb97776185467c151d241ea4365e364e42faaf73f1c357b13dbb969059888260f2aa925f1c71303bd43d1fae045d69d99dbd80 + +A = -a71a0de3a7c1e449dffebbb2745ac544ac0c210719fdafbf1ffd7c1aa1dc7ba178f59fc08a7be23fe5c35df07c7acaff53aa6230c76ab5906d3753ce7b670b11e1372b3a4e8b281a56a7566ecd9c53931f9bb09914464d8e5d4a441b9c7d03e1b2c5add77f95a5f9b556aa7f0a5eaa03cb421556f5bd6ab7f7badfe4a16196396456eb75ea9052c6a29af000608911268bdad9640b0aa32ad0df3abaafd894 +B = -ebf7bc338388124422f4cec02b8794e53ed7fa6f959ac0671a65baeacdc56fe41b655123bbc9608482c1a766f21c640d137cc08832e600c5bbca1782336adc95507e3a1cf267de7c2a755acf7e2d094a4f738358a9fe2a9ef7dfe0cd43f89d590fc2e6014dc7b17c742f805c0cfc66b13aa575322fff798723996096334e85fd8919c1d623119f33fc006c2ae57e895a7000509d06e36b823f89dd412f1176 +GCD = 20d8b4168129981402cef4af98101235ad8f71f5faf8dee805b75fcbae17169e22f5def4adc598cdda3c79c560b63e31db627e5cc7e4cf263a51d01bac985bd4deb0633649ddb2775e8d3b0d19084ffe + +A = e9f6a346b458499060a642ba815dd6a08864b85b141fea0a3cfc0fbe23a878b361283f0d8cd6306294b77340aee04e84c73fa171e39eb560689146e9080a65f7bb14eaa050c1312ce3bf68948a73e9631ced01ca400e04d75d959b13d794c344c90b265e0858efe3393c600a3183c7164873e585938caa800d96e6383618f4f5808364f190bd1fb33aef0250ece196c0e15ad62f3c20b60162c13d15f98bd0 +B = -1f138f9cc0500601990eed3fccbebb6cc63d4380fd15aef2ea70d42a979d891594ae9223192c90ea23bfeab1e9f4fa04244fa17b0cbfc440947106322c65721760f7af35a47df0fc6687c84a298afea438402b0041bc73f5f5e623ffb7c59bf1a939b64a4753caa8e34d12ad3488a237c271ac6d820df136955d778dedee03855aa751d8f102d8bdd15e78ec482b10c08d14bb7e877952b64ee4c40d150615d +GCD = 5178e11bc6a653b7471521fba22ae4bc5ba84670e6ba6481a4fdd54e513c4f10ac0fd3086ff5c46da631fc9727e2c3d5a9d7e1c34308aaacaa262b789b57a9e7ee5a5786f02868492a1896538ab0423d + +A = -9e1e0d0d509927d91abf4c5b2dc4761ade78e7e04de5a72a8788b205ed23d695e7d3ba64fa99f62311154ccf2132edd680c0781c546c4104aed21d6906f1b9b9a3c6796b4ef777d7e8bd1498934d15445c487c8305cfb879aec7aa028b653a22e09fc6fbde1cccad60af8e1776b495c6cd5decc963d1c9a0735b7e0302627b9b352c772c16138db8bad1fd922fe915c5d3487112e77908acefa5f489cb9188c +B = 38de5ff6da902f592f03fae32ad918856f07124a3e33200ff78b09b9518a0b304e0c22726d2704126560c8ed40d256d067969efd8926220cee18bb4a33c0893925adc188fc32e6165c2de6acc6c73e5e7944fa375c2b5103e55b5739d5569a2da4702f921852481d21fb2234150e14978f290e44b3fba545d3ed0f60743fed951947acbfc89ec52ab0b66ac316b5ecd88d67df06e8f36cdfb8a47ff712b10a24 +GCD = dc73f24667696c99391c4a9defe9c5ca45732f6233cc53ca859cd3e2c4aa90df24bcb0f8a36c354fcb0d79f3bc078b1a0d3730e536d29200afb2cbe7890ececd551725fa0a89f149d08cd7f79aa96c24 + +A = 424d0764481a415fda9964655ae08861dba717b72a009db2246782275c5ac9c503e204db16cebe9b10ff459e9d60840fcc945d3ef6c6db813a936cd36ec6db1bd112de5c5771e96934fa653271e1bbeeb12248b1f15bf2acf91fa4054b6668e6cec3fbb5bad7852e59df6b061f4d5f0bdaf6dedcd140ad0bbaa15a582099d54c3d43c61b4769c67a0ed66ecbfdb4591413e59552e6293ec13362a354ece6d820 +B = 1a5e8e81757a79341b4e86b04aca38560656accb6efc1e9d982c4e4179bbeac7b36b50d3539fe4ff8b04d9db11c166c161ad1c8072f3829012a9dbd354d414f930182cba135224493408676c3d7aa7eed9014508c2701bb8cc2d2f963cb06bb51aec51e290f4b1203e87b1df8c3c16daca5862814531795cd0f494f7440bef535112667eb797895b6c60a6fa60f96f7156cd869f1d013d89a4924912438eb54c0 +GCD = 6a52bde7a93e30fb969743d8587f14314e2efa53dca0218601f6196ce766e5b3243b0403f476712838eac8e710a03882ea1876a00f64738635c72c357fde60c032ecfd88ada755a8018f35e02b8927f20 + +A = -15db9e276016c57f9dfc330ad290ec43853d5c45fbfb1cd2fefe427f4c866e22330f57d5f2a752f566cb0aa36a2c62a73d01db1ea33b4903080d5368916204afcc5b5cdd9a1a39ace70f0347383f85eaa661248fdedf37ef01e2cad2fc8f320868d16c23d2668ea333192b4d4aa3ecd2d1a872e63541e971f87f02d272b71b910b483f8862f5f89a20da957bd15e4c86ffd4d167660290559af69e2539741f40c +B = 4dcf192166752a6f7dd6a00c62b8b3481f339117d8412da06aad82200b2aa9bab2545e6ede82962c6dd09e43b26a5a3d166f69bc0dfd0b8799e908ded998d1e1907cede348ff03014f057e2ef4be4f40fd18eb0a2b200a3cd02550e980c298f340ab183c68a48158be8e2a5b88f0b5b30109e299b6438c3157da607bf2676b1ebeb289e1a8973226e4c6e78d2eafe0db8b4d69412514d297d0e1d02ef64e29bc8 +GCD = dbc2d41161d3f18499ae0356ed22e1d35e8de178d88d1db47d55e57d30e3ab1169223657adb97b7322686d2a760b65bdf05d7bfd4012046c809375e45ec8fe8e4beb18babc539230959db698f6b8d503c + +A = bf84863c031c2534fce9e1b1e7c3f776ba329462013beb5d3dc9a1ea0e8ec8b5acf9463c43a590f28bc4fc1dddb2e157b266730820b913a09d4e8237900ddd7dc7261afec182a207848cb12a3bb0e7124d91998e41a5aeeddfd93b38f9756260b06710626e920b3a639a48acf61ea466356caeb50403c163c19e654a69fff86a8190f187c02f90eba8c3801105e21dacdbb9862bed024aaa4d4c15b8ccff9931e +B = 12d7ac84f45b39d4b66d77eee8e3212794542c556edf9f4c0abc983b056e2ce6962342ab63338b864298f2806a50d1098c60a0680ae4ecc808be8a603c863ae45424dc1b2a1d4fd285745c3ed9baf6f057f4bfe91e5010dcbc4f3a2ccdb1099cc48c9284d0b70421e4c1838240d297391a6036dbbeb25e0ff8701d6304bfcd4b8164f3d468adf1e48a48decf4cf0963b7948ee5fd9cc2ee3a778dc6b9b2da14550 +GCD = ebd69fea03c3509afbebcac25918c8b2b3df76106b663fdc514710373135f6863fb66475054a183a8c80746831582ef7b1b3f8369cad22563c74a07a39c933e400f457390b887a4b145239ed227a2d90e + +A = 401421ead1760e4444fe51d0ed157fc26a4b1aa704cdb213bd5d5b820175afb1c3db3fc399efc5c4c539ce4a44eca4ecabca01670390a3308ec235015e416ad6ff79df5313a8d5b4247b62359423b32ef1155d6fc4ef6f3d62d8ba0cda98049b1c3f73d3a8a7cff430d99d88a47183d54950c02e61ce3ab8a57d4e95b122dbd30c67a8c5473200abc0b6657b0d916c129576f661f0b670b921029804c6a7a10af8 +B = 36cc99bcdb2619adfd93e2fa2f6ebb639a18d8227df5751645f76d903f18afe129a0993b0da5c29bd7c2e7049da2b4284ee3a46dda22e918961622fe66c6158bc8c57ad9b00c3f8f95199d0550b5cec929cfd7c11a93b4178fd9839880864fcfd58bad1e2c6c96d4ff464cf42817ba1d9bbb59f570a26b640c1d1dd5863be54d5f96e704eb7353e502b1942fe35cdeee669ad4ca960c87ef6addbc13e4f860b1b8 +GCD = 21fa86999658121fe55845e7dd43a1ffd21c4ca8f37a31af2def0a3e27d8bc51e04ae7eb5e65760302ccaed852b24c45e06a8b6b792c515df4344ecaecb9bc985f100b8898690dd83dd840ecd0655b8b78 + +A = -18c3f2cf758df5038731c1be874d26a9b072ce26425c64ed74b246926bfae53114c0dcb3f1c0f06cfb09f43f6b7d3e635085e7023be56d3e54bef884c8fb185635927299154ec13943124d4a361f7671ad41c4564e98f73beb9035451fd5e3b66f92afcae903613dc597fcbb443de7b56b493f1ebc6f3e129b2ec595c6afd86d54bd3863bcc83d27b13a57279d6f788a7bdc6a84352d199f6a55004da315b3037c +B = -85a31a8cc522717473980c0560cf50193d999d7457a6596115b6e640d4ab4482b5ce216872775b7da243aef7eb7c5f104425a4211a07854806662838b58f4fba5613f50104b992c69daa5faca1b2e83d30c45b191b1e7b6b66ee524fdbb912db191902ff72e192d4228b581dcc2e41821c06cbe8f655583d86dc305f05989d54d7d82835c0cd8f16fe0d4832af5fef0f0ab52f19980df538ca8087f85b11f2107 +GCD = 11cf3710ea8f9aaa7662d95dc9ca2e8c051d610fa95bdce9f0f4daa31620b1037296006db1437e16bea23d7d3fd86ede7411556425b52934043278cc4bcdfb565a224c362af57a735ed0d7511417a9b5e5 + +A = -532dcafcd2ae2d7cf964756dd347bc63d904b671c11d69d1a723dca15df97e8acc465800d6aac4c6a86632221df1e992174b6c02deb796ba19cf1e5ac923063a3d000a0aa3e08800e9eab98d2a035406d133832d576547b13a1c15d86af6d844bc83aa93cbdbdfd3327e1a384d0b7d08d7fd586a5e1fa75a7d7a721e52767331e1b3025b7909c6c85858468ea2dde79bb44c5244865777788969eaae29adde8c6ff +B = 3f2f6fc19738170b40b3551dc8f27cb13eb4b6f7b80e3e19dbc508fe609b743366aed5d3778760303ad9f3a375922ff06480cb57b9f26406672075657f6b4fa87ccab72ae32aab322306b4af5cc8c3ca858b54e66bafb1ad62b080e6569e9fb72893f5eb09f44be2212ede48454de9f441113ca345e22678c1190e27a0e32d379e4fe7157e5fc517c10de638f909452811617b338961d8b94fb4123a7c3655845df +GCD = 376426bb3ba481678ab10352f0744dce370bfc0d1a3aaa70dc449f6680e29fdef8e4baa9e957344ed9f0b2daec8afe3908d9fad50771c6e8f4b462e2228a4a13524cb418f3dbdd01836b0cb9b6f4f5a967 + +A = 4ecf32cc2001115da6179d222580a560477c42bb246308352c7b8214efc9a4e1f0a933cacbb48901c4460671d95ca5639a1a74b993a2ee979086bc589afb4587676b9f5830918613291d6e4d14c9ba84212057af208363a7822f6356fe9d468fe590311f420a42229be8f900b63804ce52a482b29856c69c7a28853a5b2c71bf949dfb0e1fe985eab4f6999cce6b63aaadb7aa4a6b16a14a14c7ed25a607f73f536 +B = -1cad64940069b07660420d1103e5c54d4bb1012c0147a6ef6bbf647ba0f35b5b8b9f176df6c21ec34584114a1ac88e73da3d442c7caa7fe6e22401b7b26bd4ce75dfb55a2818f7648652cd9b980561a21428dd08e3e49e67240f7ffc0c6b47c5fb7224e3e13c8ae241458d7577e96f2acf38de2f3bfa3b42cdf45455bc875aad6755a778e057341c680c84dcbfd18afa697a73628e37ae949cc2ef50845b7f253e50 +GCD = 7985cade73c3d55095ed9dafea25ee23e50d1b07969740df6d70a4f3f7ace2ca17f54c47ccd78c5962edef8e77d44757bf286774c6052fc88741008ea5af3ba8b6378a06274896851c8d27a85bf03baeee + +A = 5bc091dbb7696268add9958c0c9bd2140df8b30deda2093d82dce05450232255b969d75b550475d9e3bdf7cb8738869916344cb1aa4309c28979c2e57ec14072ae31c0820334f190011746a2e2c3cfafbc6c48dd20924cd200ec25743713a71be451ee47f8d284940ed0981235acb1ef55b4cdb5f99e9d4dc98d3a927a72edbd9ffd12ef22eca51a1bb38aac5b4e5fda027db16f253ccb9e727c91b6dd1d53c5d60c +B = -215ca904647d4cce9ee41149f6c03af74a9eb54dd1f43c0ee1e1071e3fe9210b6a5fa23ac95529fdf1207af2d1a2b1c61bb0ff5295a6366f4cedf64077207546f7d1ef6896b00de6e99217fb8b644c3f2ad80f65c9d2f50dc940d74189ee97339e54b4a45b1eb2d3b5626003ccfead467e532fc2bbf5f2737631f03672c0c410afbb288ed15e40126a7b7a023350a742bc5d8086754c2d2887c38e015910414470d0 +GCD = 1c4729f28b86af92d0840cd009e4731e8ac551a192e8de759c5212d4a6bc8725dc5e8a5cd34fa1d7ec9c482efc8b999412337f5e0d4363314fe93147990bf419555ddcd8aa3f9ca655a45ec7face2575c34 + +A = 1a261d7d2a82303999efd12a471cc73d302b5ab9d1c4dd205fbdd0c6a8039b8fc675d3e5cdd78b0b45a8b195e07a62bbb7b807d8fe2d7b5bc4d6cef0c65aab0dd3042d35ca5ab0f153bb1ba11986cc505c4b7309d439ac2340670da31981a0527dbb2acb43a3f297cc359ae3ec71f44466f5de95f68804358f5419c4d004b7e3a03e4116faafcee5ba852af09639cf662340a7005e598a2f988058b63554be7e4ca8c +B = c61460ef4326daa99a59f63597d545e49ffb0f169dbefbf48d3c560c3b824f53f8435107464905a23f520dc0548dd6cec9765ab10a737237008b56b9b5288e8e9d3edd387de302781265c434436c3d5e83d74e35ed15569c04649a5ee612e2dd24042e468075e2fd23be46c8d58e445ceece239c8ae3d8f08037cbe0c2adc6c96d44d864ae2cbc7e93488d868751e3786a58a47f15e0d9080a25b592b0399a1a2760 +GCD = 6dc08b6680dbeb60835b34fc41387d27ee9a728d043d95c87ebba8058e033780fe2073a49a4278a3048c68bd9290711f75a8d338b70d17fbc54ac69d0c08474c4d0920db3793cc4f4fa313df5a9f7a62e3c + +A = 70e80c25d9e805222b7d6ad6126e1fe0715d57a5322f70076cf62ce91b61194664c7c715cb3bf656d4ff203973b198846c64a1fd92bf11d0ed04351369f5d8433f971e61e2c0ff6d331ca35a651735951694c82a47871d36dca43b1e963660be719ee35dfe4dbcde4f380f08371defc826f1ab2b2ca86b506f7791841d6a7d29c1103afb9e3aa9b7bcc11569457743e6c752cb3b8df362524eb03ac0f9c7fad9aebab +B = 4c3c5788da48e310686eb58be40d4ddf7572687116fe94d7ae085f001c428c89b0d8c6ea9ac239273659be933c9d5fdc0bac2273b0a0d3a9bbef903da0fa108b0570020df25f97673d302576450cf4a33dcbf41491d972934beaabf3a61eb4d3ae278f82f99c4c64e7eebd9f4ef82f12f871fa665d2d6ddf5aca29a0d5fce1c4665f5b5d3658212e87ce38ed6b79a9c51d61fd4dfe2ef25d5033ac74869c651fa905b +GCD = 3c09e59543a8cb089b2e54d261f674a55dbd8f9354f8795656785fe641f1b6e91490ef627236119c840796d071bee6a03c6c1d6bfd9892dc6511f28c3ca06f681857ae07a9ce3a3311e592c19c4c718436d + +A = -efbccc25630fe209d37e9bdda0b734d1ecc2900037bee9ba10d2c312bf36362931f1625b6b53b1f7b4778677e3c2c9a6251a51ae7bcfdc8a4fcb0e3f6de73f7d2648c14c8a2c4c75a2f867ff6d524455121ed29b149a6e166faa88c772f8d98fdd1c2d34f0fcc0ca1c64de068047caa4350af5794e7ca3cbde87e2d24ed2b6dcf2df69f70b300edd600e9f5b31ca830e60c1e7170d0b293227eecb0f60e45c96e0e81 +B = 434bf8c6b3147dae8d526a2012ff4baa5dc6ffa8239c51a3b95697c65069e375bed7b1fa439dea48e69cbe28f2f183157952779f89d0a9e295e533b8101a4024db5f496766f9c266c7575222f0500db011b437099877e43705d04b028cb41ebec51381eedee14adc67a3a9cfdd6d90dcc44bd885529370258b9241e6fdcbe873d67d4ead4352946094d91b574341fe36e053bc34131ed12b201eb9351ea026ae63308 +GCD = 5895d3316688c60d0ba7a2147c2be7727816ecc0e703a084d5b477ea132a3fd3fa4ae311f4521593ec532d0ed4bd2413d86071360510610a27790e822fcab7ee5c11f7b91c22d62322cac6f4e16dfc3fdd5 + +A = -29da1816f4c6a61f0e459cdc54dcb4639e7d28f6b74c54cb06380def3c8561adb39a0f790a1b70873c06ed025f12ae8cf31933bbb5a45120ca47624bdc39ef86e572e2b6314bf86e57e9e81b14fe3cf1be57ff1a67f16a63ec8430f10e0066957b21915852686c9da65c03fe7cff5d9db2c8a53194aa274d264baa6ec857d517fb7ae0cae537a4a7fc7cd07a116c831acbc7eae6ea1d5587559cb5e0162e45b2a70da7 +B = 1ec8109d26c1abf8eb91c94fe9a820bbfaaa40ad6d82f641c391d3a917c88a6555f584f3337df1aa16f6d58d4e299a96439155ae279f931b6a89a45c480879b9258f0ddf80ecf68e2a8f682d1c7d86cee01dfaab196c62aca4844f52ba740dd775ca4efb9f52b898f580033c82d51f9de34b821500ba0a9b06d980a04359aa9048c81c66aee2cce29054b3935814b17f5419ceaf588109bc99479873a7c8e55e6e0a0 +GCD = f97988300c811da26d3ef64bebb885b1762f8dc7872c6cdaabc3e688764d4164d1ac51ac33064c326706eb4200fbac4cad0b36fd9b3afbdf72c8dec8dd576c78301d304fcfc405508096346792138820319 + +A = -16313a0971dd751ccb75411ccabec39c995802f68f84b7f89ca20fc39252481cb8341533b210a22608851344db451a8b6c121b25c030fe2bd8e26b8a0557d292b9d400ae31c9ea576a7f5f3fb0766107d6ce528064289f0a5f08f768634217692bb834f823dd46717d0e05ef97b1f7559d91f2fff6ad2443dd404894f8fd57b76a27d744782aa237236d891d758b8609a4e43bb6630ef429e7b8fb5659f72de22133068 +B = -294335c2a9fcb1f5707416fadf23977509ecb21fd704dfa2ecbc2cbf5ed22a1aebeb55bb98578ab96b277924d530853cb6795f0c480bb1419b7cd9a6d78f3de57cb7f8420d7d890dcc8cc01fcef117242f996f835dd4fefae27b3c0575f974cafbac6a537ce87928633e57c49bcb8c714e6d8c53ba71d3517f3aa19b512ccaa4f299c1e6b6e0c22a4d8aca2bb58c45476f29c5c281e8ea3b4cb0cbc9c9fa7c3fe470a +GCD = 2d6bebea4991d099b6a061df6fcefe00a6b05c0598694eb2dba0d6f64a06c279db253f095fc60c362322ad0dd70f4737c6d67fe5abfbcc822b3e7a61b6fa4dbf00cefac2b3b91ce4624125e18d15fccd6cde + +A = 329d32eae5e3708cf6825da399ec12a842062d0b4389316fb99582721a5a19e4e1601401c8f003b03494d087d84e35c5745fe19e2a2f638de6aa97cd233b2e7afbff9a8c789d5ca362ee51d173fd6b688b36f33eaba68ea705f56e05c841958c5a887d459aa129abf2ac443da537e03cdb4fb8d489b364afb3c06de65bc5550609444763039d7381b351ff02d977fed85320fcef4181f990cb00a2b68c960b17a931307 +B = 10616bdea0e5df2797ec5a5ecf134966f3a309bacd8d1881eb67f8b60a52d0ee2aa81c631b2fed25d922db3846914c1cbeb7f7195546d5a5156e0621d7fc2055f456b4b67a44dc8349ca700b3d1ee947e16c85abefa5f60c301a470c5e30291691d927d6bfedd4a7a02b0f86222eafa139f9ba6c09b7a51268bebe9047766b9e94ca0ba1940822a934a1ed9b88e7ec5a3c0edb5eb851eba448c7695ac943a2886b5d2dd +GCD = 35055166237bb1af9e01ce90647c1827a79038cd4a8c9fbc2ad4f2d6dbc111a76549786644cf01e803380ee6649821b7b7146956b3a6273b08c6c338ac3748929a59f8133d74ecf9ef36fdcd96af73b5b693 + +A = 36904bd5a8280f879e08cddd53f4d1c496f12430fc50597ee51778dd6722df6f29049734913edeaedf5ae14d1cebeb2f9f0840e88931edee9e9d0c16663930df00ca0df636b6126752374555bf771ec6414654db5d7935dff47deb669fbd2ff28a136e3ddf3b9373cad67b6f4286cbb7f04e634477a7856b7c850aa3c5d606cdfa5452c78f07fcc505e4339fd0a23c350f30098ff91d3dfb4b8e60ff0e32335aa9fbaa6 +B = -10e983c846b305d2f95e2645620db9865649a44190e8c9323a985fced8a6f5c6198792b844c8d6342c24dcae3e58bf2e4c71658b0e23c7c9f6be8a6d9822ae7af644058b21f1bf848cd3cc30f7230a1769d26ed291ef3cdd741b016de806dd4b664e16dcd22d9e4ca9b532a78ec4c42ddf2b6b6d3d6ce290a55c1cac5b0b856124444964d976fec1cbf39834d8ce7c65490bc517eb4fa081c3c16a34ae83b9e78a0b11a8 +GCD = b30a49f8df4592d567e91202f3113d0a3042d8f83da32f9e384db094fb87c92c953e0ca1f1f5d648c31b24892b71ccf1558ff232754ae613299d0fb08a37acb0d97693dc71f5399a6a1307f5526ff32f7f4a + +A = -92d36603e5e2c4ebfa4dcb11e21f059b3b8351f89e2590893619b72f6b5b5bd03099a14f52afb8cb25a42299e2337af648478ad4d21f6f24bed1ae0ab7b401f61331f69ad73d22f4169ada96b405c310355e9e0f40f12310eb64693495ca9811609a4094a8f1c5ea81052715d40796f84ba0b76b6ee9aad312d8347e31ec97c5098a921d89fbe29aa8a8034f0fbdb956d96a62ca0f563d7a13b18f50d542eff534a6c36 +B = -6252eb51798b8bad5b7276af580909389a378edee5fde835ce26b4d7ede5a694cba14cb61ec0e32352df422fe663203226fcfbe686b25b4a1fe0170ebd4ebda0cb11c49e168f4ee2635ecab10da9a8f661588bbf1e118740236a2c92fa213d3a073ea0ea6e4a0c18f12a8290dfc930b85113ff6b6beb5fa03136644ac60cd072a7f408a681d3f8ce43c5d77d2d13e277f5c9d30f61fcd61f494b60e5baf112409c193f9c +GCD = 2af5d3edd317537e82dace782fdcafee33606808d7747bc9cf2bbe4f966bf5ac2aa7fb6166d4904fa97402e6ee97df8dc545d4612ba427522bf1fdab9ab975fdd442500775756b2019a20d2fbe2a023f297ea + +A = -1a39d935ec82e657e1d543211119a4142e21e852a1c1eec13050e0131cd9befa7ac06cbc194f2c61503d3039c810db50e24d6263d271feec5e0a94b8bc27119913945df995c14dcdeb51fcef8fbe9e7b6444963221569906bdc88dad351609d13a15307d5ae615c230414e9fc46a8a7fd053aa1b9eed9bb3a49a9beef39d339e981ed2f29a40a8c1e8ef30b0523d28a7571ca5933d8c0bcb99e6ad0b2eda90e925bfb9790 +B = ad225ec02ab789663525a085d578a5822f76da9b9cc05f9118a9dbfe4fd3e06147e0d6c492a94500ab728600a3e2e2cb0228cf059c449576c15fc3279b373f1e5f9e71c211b3b7c5ee6ea8048de0eba7d405ea149e8e457cf1b76a3ac99d7285f0e3e99e3a4b528f5ce058df799e72e7be1ce459771ca3ea9e0e55ee04fde1dbdab7fe94a30860b9f089ae64103ab46fdf41aa41f6ffba41a6d5d27e793b2c9b7a33c420 +GCD = 1afd7bf54947a0180df0d0765e3d570b9cf5caf805483a5f68d693dcdec5ff2306f013c69000af2acd4e4aaf84f8e7144ac1f7abbac51deb64c3398f508f8e7e02234226240bc93030a26593c1ac750349690 + +A = -36cdc87cf80cbc81b79a7c0b0cfec2437fc585e7c66d8d09038984d93333f940eb47bb59a7a0945c357fb87307487fb381067b8590db8622ffee9b1a6ea5c81ee4a2f0d2d05dbac5811e69596ea3766b2a950886ec6c0f731765c7cbc9bca7fbc3b9192e7c1a14113a1efa92b6c40abbb4b279c76de0875096c65d38c5effb432098658909788811015e91f83adae3579eee7d03af0c0d332d1297e980fa9a22d1e43fbd4 +B = 4b026196c3a48a799ff2699b398e5001faa52328102d64c66bc92f2fde7dd054f6cf65bf97842d3e8b201de3e520e64f3ea2c2aba0e19ef43a451e3e576afd0aaf1240a3eeceb71e25bf81d0129d0aec630cf20cbd4602250f295e54cdcef0e416712da7c97ead81226119a844d7753bd3d30606a43e04c2d5ed2f8b0b0e494883791025bd297fa3f06f25e9528938614a7bc471d9fb808108fac9a8eb7a89b3852255f46 +GCD = 6f4b0595758ae08b899b898394354466b0e95e27d15d60d3788273fcff330e6d9763cee432adc494f6f30ab274077e667b6da3ae4aa8d4e6ea05d375c411167e959383d39c03147e29e3d12f6855595cc79fa + +A = 178d2b2dd5aea994e261c28e702d7d97586309cc4cd2c694bc8a5cc27c20cddd1786088e7b827c98f576517bbab7fff5ab23890651f0bc776202839624b627307f9fa44d6010774872ef18fe574aff2207a72accc462eda36f759dce5e4ed08753b75fe7e9610f1acdf7ddc09b24ec4cfcdd5859f21272be818b8b5aed29ad487253ce96771fba3eb274e3514a1bc1ae0321447f7477cab39f702f8732c213c394fd189c27 +B = 1a9a8bea97eae9d2bf311d86133a9ffcf8746c839ec23b3a61da91fcc0b0981f86a2b33582bd7c57635f9f12b79f118727b7d37de2af2dde2b02fe4a229823e880d79e213f18252d96c185906ea56861a39726f3998bf0f55c754f2b2d769b3de988e94e18bb306ce2ca96a310cfeb28268693c92dd96316340d0989e9b09979d6ab7c276b59eca4b9adce0fd195404d4319930858b108e9c15ec9fbe1269262694ca8f184 +GCD = 7e65b25614174c841b5d1871b2b8414911d5e80124eb768ee0e7ff33679655f69d2426e1d7d1ddddecadcc2b005324cbbd515fcd2d93668917fbd36d182684c271f8e184c94c899bccd9adec28e822f482177 + +A = 5b5cd404465779d6c27b916243c4352078fd2a36127e031391e85fb6f2aec27176af9c0473434b4fa8521f479b3c8a1ea87ac2594cfed6a614fee936106eb3aee4cabb8cd6c1cf842c6191779e9065251bf33b631f65e57816e3b6bc016083225c44a11dfaaeaec8146c334ff3a97ced48a48ba804c372c2176f37bd6da0c54c7a5b419138d3ad882cfe2ce8643abd67414556c896418b155416844b8308e6138029e68a90 +B = -360166e3fe682f7f49f5a57c4afdfc50c1011d9c7d9e860e02c5f2a8ffc38c2533e7f1f830692a36a769cb0552c7b0bca2632d3999e95f8366ab7057f4c469c84072c5de67c3b72e8fc3dd5f32bd94933ca30287751db74fc558d2ef7e6efbcde9bf72bd125c86da989a3b7e4bc9cdcd8952ba1668324a8639cf018bd9a09a76c4871683b2fcba10ea40da132929aec0fddff0b27687919d5be2aafc519bb90e7dbe6221f8 +GCD = 25966d518128d11cda4f9cd2dc6558cb70f7a706fa26050932978341930191d8e9656fc4e629881820e124cd5a9c510a4ad61d8a212ec9bae6d98756596e52f66b2d927c787bbf280c27421c97355c458760e8 + +A = -cd4bc6c3c13529268d34e6354fd4d5c56b46b8e0793c7bed82115d29fd4734fb3bb1ec7ffbfcbcca4047b13515de58b8f6933ff2a9f1b58923316caabaccb836fc4572fa34d727da6866539de71bea483b4f2a2380a5d8665423acc9e7bbc8aa7114a6a8a43dddb4cc0c61c2ab9834944c25e5ab0aa8dfdb6bc96d9dcadc9508747c331b70742cf78593e41e4db17b12140439a84ceb03784a824048a89536a1acf124af21 +B = 1a5050a75419d16a46d11d76b31a79c86a585c0cc2462022d32a6bfdfba2e8ed85228c6b77f7978d93d26ef360348c81da5a12f5b93eba3d51d2b7a36771985f6a962f2dcac00205de8c0015048d01be79c8cb9330de91bd014ec243e4dc97c934b392d0ccb3cd4fc82b364a0fbc1362637d2bdc7b6dced6f5e69aa2e4d0f0206de40f7983276c27db7684d3de9b974911068489e803b4ddab8831e6df8848abb2ea94001b7 +GCD = 1d33ff9865126df1c8e5235eab5b72ffc84d7edf36bb8becf5e1b10d58fcdc335353a22219d816e85041a492a4002cd9b7166a7f55a157b2cbd3d40d09b40d335bf5a3a2ffe85f2b02d1459e64c4146445e573 + +A = 1712a552347c8e4ffe985b423d999a8981c376883a20a61050b377501ef9ce7ba01389cf77919e3c165f875d0317f350a26813febd1d9a74ed0fe2787b51e816e3ea052dec169f0fbd21d353a7948307389b8adefa4f1b7fa283b686a2cc61a02d4794908b221cb327028ea949aedebf8c7b89b821cea04e3ffc2d78f34046bd370e781327eef2e826c23f029552da9277dedde2f4da3480e1c796a162c9e9ab8470e0d960a +B = -510f4ad313bfc9efeea3716dddc199bcee421420ecfa455d978cda66a574834d0e1f2b559c40815976c612d657ffebb27a3474424912d743f7821856ca2f3ec80985533f348cff3280a07f2ee13a203b8e1c0449dbc416e3b789e4cd29ba1b798264527c74774ded1e4fd4943f813901c3a7764e1f5d8ac78676987ddaaebc3966772f4c4b873d6b9ab2e2e8a8e5190eb87721f784b5d20c58a06eddcc40657abbff94d57d9 +GCD = 30754de8dcd11fee7f17326d3153ef80c9dfc58ef76cf8337ddf47048eab6732ddc9f1d9ff5bc8fc42736474834ff48027e0cb51dacbf8d6ae07725b021342868292f22ef4da35d4639c01217091e868ba915d + +A = -fd9caa8e52304ddf94c0c6291729a3d5e7e191c9b1ceae3aa6f2ae8017792c6a51a8520087fb8cc4d60ceeba2bea6d976fe95eb36386549816ff0a0ee90bfbf814bd9f2073df078222fc763bd073a0c98ad4b68cd47e71a580d6ed9ba77f2e98d76205ed196c68479c834cb5446878d8d5897607b17cabd090dfaa8e51b95de8c103b215e067599d334609ecee96a20031d426632cee68af43ecb37063c6d4e127b82f730e0 +B = 12caeb3bac156e415d7bad63a04659fe81040d1b40db05ddd0955f0880aca88b750d6e0308a2c2446fa314fc6007e5750e62ec6d9785d0685a480a1e3bf84eb0d376b4686b321f17268ef297cad1c5e347c9dbe477c9ed9c1b45c491f0611d60d1e659c746c3721cdfda8197fa1c417e372870d8d730537f3eb726f5717f61e79559cbf063b119e6420a4c9e605a892161681416633ce1888f63fb6e15cdbb3a6f541a6a08e0 +GCD = 35ea5c7f74acb11126241f157ab0c26f3e7739ed788e0f11fb949482c44872703591e3ab8567718c792c6dbcc88cd08baa179ab8df2252efa219df690de0b6762b53c3028b7f636d9f50fb4e910ea42c46ec860 + +A = -20bf133d2f89848dd5d32d38869a02c36ebc2bbf2b686aa42a3ead56fe42e04ffaa5e446fca76c689af6cdcac055d021951c09e71d7e6ff91a08863c4cb0c0499d9ad39438e31735009ef0c94c8e58ca48b4b43ed65703e48a492d5b55f9218e04ed96635e6ffb7f00cd2a3fa1ea38be43b620fe1e12a53ccdded2378d00ed21d7c09e85eaedc199c16433a4de6bcc8e3e1d682e3aadd7cfdee5ff9f97b1a12b829fbc086a88 +B = -49f414cb511d5de559537903e32dc26330200ddbbd9937192f5a8741ff5a8c69114ee63d6240a6433d4fec6e55f075fac24683e47176b17ba31ae997caa3f8c154f38080019cad6ee00c768a65953bdc21b68c98f70d6d097bda7b0d16c1eeda8bd20342b5e5bd12504bae876b74bcb8b0c20c4d516ae6c756777c2b7086c94bff6f38a2e0b64c0e341a14e9ca703496fea9468d6e41f7df70e5f4afd0618e1f1271b11678b4 +GCD = 98c8629c61898cae20781d5c01f7fedf5cbfd10f80fe92f5a7fdd17c1856e0d17473791389f74b07da3c17241b12c1db5a556720ee65b9f1af89a5f1f5921376ad38ecdb6c748b16dca6079d2b652c81f8fc54 + +A = 1549e7db262eb1036b5dc6af462186b037409e1c712d65e568ca8535ced8ad3a8dca8d28716d2706ac43c33a6f8b3982463199f56806dad1a4510e2ebd461e37fdda268f08dec39e95a89583fc4a6d6b4ae5a774c0586f5bd23203ce784533dd2b223ff02651a455eb2d7700f9e19bb98902eea5303bc2b5817d0954e7ffdc033cf1012cc3f55a8e55bd4f98c1ab7a9246d2df93ac07f76a73a09882ce791d7d0572438987e7d +B = 155ae0e37ad2ea6125d69e4522aad289a3bc053427fc8beb903033071ba3dacc948a9a8bfff7d9cfdf305acb2ba4dfee543a3a4079b51707f27d5d72c7835cd8e2bc0638dae7eb613befff172ad77d38356f341c67bb88faedb20df5fb6b2376b2cb27246f36c76d8883224e5961d14f205be0f9c655545b408044ed2859a27d93f3e69f596e9abbf3c9bc90e61253d071c74c8ded5ca3fab79d64da119e551de0c918bc58b36 +GCD = 1a884db4cb40c045de5ef62e54956dfe783446ea789af2b3b6ce3f6a197396fc205888616ae914a42076be666c9778574f64c0e5518800ba72aab9683771b4fb9d080033d6d02b43931d7950f2eb651fffca95f + +A = -25fcc9d9907e1e47fad29e264691f4b621affe96b469c2edf1e0cff29e8f8a67c0766a73b728cbae4a3abc9533ab25e4311bbfe128209dbc4fe38022beeff6d36e782095d2a02380f9e1377ce4ec02c461e3e2e0951d320d7ab4ec9ea95f4fefe52c7a1d3f3a642b327e8cfca21c4947d9079c7774943eb747edebe0d990a3f137eef270e438420fc72441a2c1867d9c40464ab647d088c11af78af6d0e2095c302f9d40c3d0e +B = 4df501302608822586ad0c5dab8297b6ef8986569e7810c00381422003ab17c2ab1cd878fd5d4e5d0df7e8de32b0300879e6d772cbf27f525091314a7801efb5585ccf5e1e5e84bc5b69b2c6a5706d10ff47df285ce3440cbecb565a65c003251788818557c35f21ec6e0bdb58a084717204e27d6b9fb56f5644edffe278ed63f73f6ea44d58b74ffce2b8367baf5116d572906c3bdc168dd8e3743e2a244cfd557a12c3d4e1e +GCD = 4eeb4f4bf9f712cffad8115b4d63984095221e83aa0615cc0d9497b0614587fd294dda9f87e3e9e8edcb0613a7b515eb4de20f87eca081e5df3b1d48e6ab66199336f95ebecc765a4e16c878b171b5cdb0761e2 + +A = -17e20b7adf1f412b15ab588b58e91083eacbebdb148ebbc93a9cb4b8bf1d2d974a24aa0c17b496fa715537a802421b95dcbe6ff7788696565b0b1b47029447837738f895d0e9a35dd52a10b0cfcec5c79ad0e3369e23a42dbc36c559d9aae58cb59261b7185f087768ac004b6d3d2ca07151fee8d1224846c0ad923b3ee8773d8d9fc31836b46282f10b56d5ff1908ca41f30d1858434ded8c303701f52cc41ae13c87414b0c85 +B = 1c680d414e1b343a829fdbd1c6daf747a1d953bfe9fb0498ef09a9bf3b6d5f5b6b5582e0ee00b9591ea5122d8e798d41a7255a6749235c6e9970c05050a5ce2cbf06e131f9b0693afaef3148644ad6a1399c7b99700385b1f65ba78a557b465de68df50de0325dbd483940cbfb8ffaaa0c7c58a925a60ba462e9a79b2032fc77de45616d979055ad621a1b9efdf18c87857b2829448163111f0120f186962e2467d74334f6c565 +GCD = 790f0cf744978e067668f4da59b3b90291eb5c81bd3feb77d50e2c57904b6f18850ab1e98db71296947f6274075aec399ea9977027d64f8dea7a07cc4cdbc2257e0097edc6cea6115f5b99ae8596d226c3288cd + +A = 2e19ff84a9a9b888081ca210eae3e3c0a6a31bd8d540b40dece7fcff0b94950499861b56eb5839aea6b236e8417bf7a36535226ea68089da5fc96b308b2200508b33402e2798b4a2d73e28cc3e2cb522f86003507037d6afc33b532d3d977860db87b493ca0ddc8a5eb0304d0a480960a276f31e72c391bd186757f96b0092bb72e36e29eeac6c786b68a50288bc5b8e8e704cf2ee270316551474447d3e6538ee0cc12dfdedb8 +B = -151ca7bff32d60f1172a9da0927bf5bb0f720e9518762ffa147d5a1b20496961a00c65987866b83837901cb16415c540ab431e6608449bcbc8f92589f4c54c046550b7bac1cbfc76fa2357d4a5e223180dc2c6b3f1cbf1766ff5fce51af2bad4c71f3fc10c16d2e56eddd60b94cde93f31af8e01ec29b8d67700646666e0ae906617c28a4e5369edfc9682e34e1b0c5503ebc5cbb1be9a5643794b0a806a5e84ec24e2376182f8 +GCD = 84ecfb4f8437dd4247e24392b789004752212d5d115708bd95d9a03fb20bc0b3e489b52827b7febf2b8c7424c53d00d5082f343a0e99af320c6a47b54494903dce809077166464da5accdae689c4d1b34cbca88 + +A = 15512745fbd011f138f17318cd664ed98db7f4a3a2c3be33a213d04120a33ab4458e37eb9917e61f288197ef540d67467a09e932744709d9cff9c8f7e2ae629b9ae2ad4ce997b52bb1c7a3b963775ce6599cce0545c9a37e73d5bdb8b5201b8e3027bba7f0cee33a090e02b576b659356b00cfccfc77ec77f952cf511e611be787e0e1b06bbe85ab951056c41ab4ec001a212b80af2c1bf25e38ad570bcf6ad87191e6ddf7b39a7 +B = -bc9646ad273a8b4975c627d9d7860ff12e3338d9939b33f654362e25581d615239dc1fedf22f12d3bce02dbc7892f4a7e3fe3fa65e254e674db130734759b79afb909cff6a65acd2b5808facc3c50af77ec9ebb6499868cf537f87a8ccbea9eea6f7c3686883803687295c7b077f89d51997202b57ee7560f55eeb75418af6893d2b3ff52ea68dd2081728499db3d08f09fd03d00fb562e73f5ed4c2d7e377499ae3c342c5f40 +GCD = 196a58d478b0c26a8f91763283c06f47b5cb1922eb4461b12fed0602222d3ed64c106ae4fd79da90dc4a85fbaf187885e598a7e203fe751a81f83f492849e1220ec5dee8971cc6431c5234405a9355fbc5e08419 + +A = 38441533567e323c3e81094a91e486f669e00ebe71c1450216cee42a8111049bde1702a2e9cd4e5f8f8873ed693c907fc5f8275f3d7c5b62353c7efb1708d6edc97ed10ce3fafc08e40fe210d5afe4188a55636d9a07ef06fcbe1928492a72e6962b9cdd539ff3c9622b9d0101a8659181bd5c8b9544c3e057c22d0500b052db92ad8a1615aec3f11e2bf76cde79c5213d093368aa55d8cf069fc6d04d73e95268302958197c7c8 +B = 542710a700b1378f123a45eab1781d51aaedcabb1b87a117c993f95ea69a811d10736ed6c8d0c29826a88a7a34bda1d04b52e997c0fe1d3d7cf596758365a7e91643f9853a32b369e89d107c7ee9f0ac65540633ec717ffa4a631b74565d42a8e8ea99f5eaef60825f510d753a5a28833f5a4fdefdd2e91c05542a03e8246db8e49b90cf09be4c2f76fdd26797923a361250974987c2d991adf90f148c65b9769d282e88a1f5bc +GCD = 6cd62d01a949b45fff6d5a973fd49716e5d123c137db5113492709f862d31085b4b7a80d8ca5b8a2bbf453a748191567917fae8c9d2ac8b2b5832736aa116bf80bb2dd1e1ea663aca3c759027539f91e6a9c23e4 + +A = fde1cf508ddb315a775ec5f312160f7e0cdb6007e27ac54f3f04e6fe60a06c266b78d9497a0a5ee84f4ec2068a8abb3982ff6f87554fb72ed8465c7e09045b330b55609ea4b5419eb0b4effb01395647d1acfcfed0c7d06016db94305bb58a6a8d0be078c2a7787841d17ee4aa3f9b4fba057c61b47072cbb5c0b570d7517ad40cb0acb97646b247beafd0c42f3861749cf68b81ec42d1889c7b54ad70fe51c6270ef08d1b5b7e9 +B = 12c68fc67295bd9fa9bc65ddc2aeb6483d67494c0df292cde481dc3423126434b7725eed546d3f920035ba8cbf7842523b7524cd1df83aeed7030fe02aeeab9636ab8229153446c6d38d368c76a65afd9fc8771667ba4ea595bf1b3391540322e07a11a31923ca4629c9b77ee15ffc3edbd546598298f4fd12a5e17539da50f5af66b3fc75effbd4c9f05dd2132e8dced427e28a72c660a4badfa356d4df29ff5e813d0084016d2b +GCD = 193801a62dc53ff7f3013662412ccb3b64527d6e971a47ec0e3bfd8f8908bb88669c3445afba870847dacd52be8eecbae1b376c2f49700ea303788fbffbfc097bde53992cf9c91479180e44d19550cb2d3454d3eb + +A = -132472a5dc1a3cbf5afd3f729650983622784cee23d47209fcc04ca0eb3a4ca0e8894fa1bc64c3ce72066b757250babadd215afe688f5a0878d864358eb02d512a561b4f79a4234afa1ebbb2355b38ce8e0d7051f446017ac8d876dd8fd5de28e361ff2feb47335305cddaa0945c1ce27c2d6be3991332efea77dc5ac18746f7e0a5da389b1a60cd9609a84046239a4535b12a6831f8ed9d0f6d1cf621d5de18181fd84ca4e8d3da +B = -299b32e1415d646dfc536f6de908f937d9db2e95381da51564a328e10bf65c9cd7f553a9b9adbbe8e9c8d30a60cd68d18feedbb070b6d281c8209b8e2325bac5cc1788a64762d0e6ed9b9341820be7d7059e1613c03a1e69dffbd3e18206b5220f31c49191693b94f7dac8718f6841f10f1285e8bf9fe257c2e25555016e73a81174ae65010f69a4ec135ad94c2ae04c977c215dabba0b28ec1eeb5007c46c9a8e6c9fe203efb604 +GCD = 3ee96bc4062f032952491e7d1ea14e2d692b7f801481e01029369887f34b967f4366d2b3f61f9189caa332f39bb95269ab5956d5cba7fc4cd64d1408d1f1c21fa13f0d6dda63e703d4ab638689219d3275018ca4a + +A = 35e70ae7a1fce34516ffa77495a40604d70c7099fc4eb2c0beac82bd72bfd0f51a030caf0e0b3cafafb4420c7dbbf02309a562763b4961398936c26c049fb23302b7e21a1f6cf3c47254d7103f7f3d44137894fb659c3591578058353d6ab5f68690eee0f37fc19b68c4a49c9e915057816a54e2c792e5e1f988b3b7e1e57d165c5de60a1f29e88cda53c0907c19c77f4a6321ec5380c51e8bdf9ebe4a12c19fdd6a26ea8bc6cefa +B = 1a418f34a6432b7c7499a21215585d3f151db08ed3ace5b9f82dbc4aa7d012da7583c5ff5b7e4e52476bb1418520449fcaa6686b4066dee72cfd6e153c77ecbf25216cb0a5d5183390d70feb41a631892a23981e7da31a3d2f2985014535f07905210098df5a103b46cdbd0deec0e7e6d837630036ed001123c7b538f382e51157f10c2f2d578b54d56d9d224f0b1504487617a5087e7441fc790809a4756014994e40f21db272958 +GCD = 1d78490e789865026c162f108b6bb5c9dc924520ef2a8af2d5e308cacb84fd2b05c0db566b3445101b524f77ea3ee49ffe55691e987256b45e0b9bdc87ec652c2069ae1c9a00ed18307d1044228c43d30570d6626 + +A = 4ba5d7dfb78447e62bcc2c91deb7ab34486ae55860417d9eb1db637a1eb1bf8926755d301c3e309516c200be8a4e0c6c1854d00cf9c65b8c69cc01ae93574f7b8c69194c7dc053209460d2ae28482872bd282b0136441d3b4fc3bec567fa8bfb38c78b00754eb4485a4d2d59b9ea821157055158edf6d3ee138d5b3674cccccf5be8226b6204598b440bf299502c0ca91b23597eb51178a23b1117700f06fa572ba6fd8e48debaaf8 +B = 413207c997776cb0da827cfebca52c65f5fd87305b3de70ee614240a65c6aceaf997d55d2734531f3c8b0ad11fc4f4cb0affd1ac9f3320e439e9470ca09e8cba5fb97255c5320075a146bfddb44d9153ae18337bb65800b9d2a9cbcbc88c3a1f412eafe2f1de5fcd3f56a90d61fcb4de2ee0ecd9f5cd5619caa8dff3688c557ae72ba8cb94a79970df9c2e9f8bf16c369cc0afe35dadcb00ccf9bfe544d5ee1233a12ec248b84e84 +GCD = 56e620e8c6282ea69fa2c6e459463605eda72fafbb8b27888776ac8e3d2d861339ca24d56aeae3d227549293a6a988235605b89f8bd5a28df37dae254addcf3b346e5e39bf923469824afad5ed9cb50e6da196d5c + +A = 62c6a8078685566f99416b21862d67f519d90f3b58587f34abc40c66ec31ff97dff9e28727e555cd28e534ccc8c54aee33332ac827a8a72c69c796db8182792ab3a2cb2876991f0672e8026ea0ab9f42eb5b011d2ee79eccbc6463ca87cbb6633a081a3dca5c66d3a6c6f6eaf2b09aeb7343251db226e464310a1c6f8d46ff0decb396b3d364e64d3b909473d03ca2a51dcc30ea0e0c24a8ebeaa4862def92fb3a8f97401c88d6ef6 +B = 4dd40db96fc6d596467d5dcbc918c28170d1b60ee8882ef747371be72771d1d2dbc6fed637ade6ed3b744580ff1eb936050599c4277551af94bbd7c3fd2b9499e5c65a40eba3791fb169a32e04e1dc121da3a0bf7f242145780926590af4adfef015d1c947af1747fb31de5f34a823aa326cea2f85e64072352ea4f87f7b4104aa2e71efbb57e3e7836a6ff07cc30007ff931e9c73c12f4ca4c3403d964eda9d6b13cd644e977546b +GCD = 765ea443ee10c0176186891c78d9987965dfa0d1157b5274005d38d00d06f6e1f1cb2b82011ec12adbea84313161dfcc9a84472f006d07fc034fa029ccb9ec22bb84da383d7c6aeb8954305191f6266d7f564d31d + +A = 7261adb430d2276980682239cc683be8abca470ec39f450d1e7ec08eb9f16dd0217e35c4ffdb86df642d42312a57ba0b8e4566d16edda08dd7a360e57ce56d8aa5ab3d85b92fcd69907cf200885d9da69390a45050d7a81110f02b1eb4f55481145b50ecbe65f6580fdca674cfb9b4bc98dd947060636b6e7aa164f4330bcbcc90ee538e4e79ad947db0562ca173cfa8fed91d9810d7275b7555450f8ce12011325f9b1c80c550d3e +B = -3a43e6bffce626583e2f085621d733f37181af78964f314145855f1e4e27b798f2f0917d032c0a597ff10ddf88c2791b773c6d71e203d1e2dbfff279c836fcdc66a04c8ef8bfc6f1c97c966862427649f81f39a443b22764d92e048eca7d5a51e7b65d43d71f85dcdc11c33df524a08049b273c4ef22f9c8b2d051bdb6c81a4cf11d16d51eeb65da98a67b691e04cbe58e0e0a626bd2df2352e95023ee4983ad3924895850fdc9ae9c +GCD = 1a0ba7d8776db0311d7dfbe98b7f23500737ff2dcfa0a8acf3f9865dc60b784c32535fa94a82e1606a85e030a85f9c533a7830bfa28c06cfa1a8b0ceefb0e5667e8b1dc76044730c67ecf8c1fa187d1fc834ea4416 + +A = 13ed6d7e4fbaaecb55b4ff46ded919dbe0f2c7e56ce3c4e1af4cf69c2bc72203d53d3d5c69c86a657ac7588ea974d7b9e9aabaa4adb2283b516b7ed6e085eb252dfaba3e2c00bbc9f76d8f13c0e9632c3d3c36c2f54d81ffc51468b959afc879c8a508068ef3d0ca62cf1cddc2dda21db307ce61bf078ecf7a10221ec3b40bd844865e6661cf2dce441d3919fe754d541cf125360ffbe6e318737b71276c3dbaffa0b14a29726a646c6 +B = -1ed4b89fdd2fb106a910583fa7dad5600717ce9ecabbfcbe39852fc080e333adc207a76d86218991af8e30e8c2e2bb66a13818c89a011ce1d0527b97c0a9bee9f8e8d075f0efdf3f89f75357800af625825144a3f38ef557d859d8db501a0c02a20c7d66f2d9e34568dce38697aaf31acde81cff478a5147172a5c05da104b3561f72de906d3559bcdf274a9070a780b51ab6c1bddeb86ed85cadbc1594d98cea4fecbcc3bc39830f28 +GCD = 3e7a282dc36cc24335061d1fc8590bc0d3962340d963e483f0adeb28cebe9471db408cd7cf4548a18f60a7a888e62b25736b8dbbb9b54faaa492b434487717fff68fae0a26749a2e0eee233149d5b7426797e73826 + +A = 5e32469ef3b5820216d038f09aa952118d19ccaebaac236cb258ec5dc207ad14c3d2ce5c7d932a0a0a4d23c75cfe16694d31e0442fb2c6921b7e2270cb7343afa6df33f1a2105a0a5c14dd5bf4b8b6078b638cc868039c09df400f758f83e92bd7178796471d997b1ed05bf555041834f96f630c19038847ac7a9e485c10f220d8218909bf958cadd3e70101a1fc4e3602f10d8efb047b8fd5ca4be4f74806e9ad4e4425b0c4d3d594c +B = 2477e1ee4ff956827cd95304d8af3868908408139d2d22a971cc0f57335880da2ebc64404ed11a4430c03bba2df91e29cf03e3e1aa8bdc4938971d5503195e8cd18f42bb138d69ba17bd568741e13c3055ac0aa39bd6cc0bf8e726a0cb4dfd9678f598f95a15d3a3489e920ed7591df8857d316b74a2389da55fae8bfd13e05ada122e87e7cb6259fd5c74132f8b7bba5120853220cd7a72d3be6428fd9086f3385e6fa3a04ca5ad5c4 +GCD = 65a9c9d501397d080210b1eec9406e94c3be8380f53c94500e3601576e469e9aa5d04109e30435c693bf0784e4713a4338f6fd6038e8eddafdc397f9982155bde3ce240bb844d538110f3e8c08bbf56a033a84738c + +A = -2fdcaacd3ee0ed9032986deb0477b0b3ebb828d84ac4169c775d03b349c56bd9b8f69e442b85b1d339b62329cc129986f5feacd5ff2d844ac13270fdeb5a2d2b0bdc4906d2fa4f9c6ad929eec769c7c3e64a190cfd134922ab518fff3ba95d74f7b2bb78bedf0d6bd087219b4c87f8d7a24a3138557463a7501cbf5f89b24c254ec021a8143b32d90d15718f0c5b92b905847afd78adf8f54cba00b8328d5e2a929bd6f2d63b9c4dc70 +B = 1efe80568714d3521c9cdaf6bc2299af0ffda74916c4d7be1122924022c0ab8d099bdf52a712369356854aee634674876ae8176afb3aa02061c705ef8ca25ac7cf51ae01318437808f995da5df480def3685d5a59d222c316e23ea71bdce61e39c475aff1411223aa56668db2e55917b3251a24ed12b9f7d06c4028800f372213dbec3af023b4b9e4cab2fe2d92e5938f3212b22bbc3e3580170c01131d7560e673284733de8eb463ac +GCD = a26b42b0d92547b64c767322c057b9f652c5a912696015dfd74215a7630f15b7a6b10b1661ec955b4ce28a1f60696d0d168399fc3255460e9610faf09771b14e8c1528ffc309ea53f75299d1e8cb649dc7a42def44 + +A = -5842be67889bce1fb7d42b76bc2bbe12fef44783beca88448b188baa4e8c5d156c4bae8bf5d4b934c92ccbe95f5af56f01882f5c0dca424684031624284f8e28de29db3e66631d926a43b9b762890daba5307de86871579d17fc86bcb1f94090c8eef033d9b0b140d0957bd542cb0a0f2f6d231a0e464a4b1d6dc0de77e7e8b7c9ae79d5790a011ea64566013210fb5f9d2c2298985b66d84b5a910e1f42cc4d979474d81803aef5710a +B = 35835c55f0ab4e9ebb1494b34155b75abd36b627e921887a6a45d4d0b1d48e994fa4818bb9b1354e1c4a906dcbd7ff0d76b35a2cef15182a88e69f1490d530bf00446bf6c380a1535bce96aa61513a9f00d3c4c9426c69e9e3baca5904f2aba102fa72b8e3e8d4caea9ce98d7afcb5298e74bd0dd7e43f8901bb28279c454b27f8ab0c91859dc5f813bbf3374b7def2b4d66313f8a1d2bf6f854b3eb56a542b811a150d4a562de412fc3 +GCD = ba8c6a5f5eb53be4bd364e25e51f4737d19eec142fb2c166b0e4fdb4ec39c536f64b5efd50fe178f00e074f7f322a5008f47028330a3142d889e8527718b95f53c60a1e164573cbb932242084b956b21b4c33a0077 + +A = -1476891f3236397c1ffcc2bc68ae74588cd68b28bfce6f166fbbdcdfe32a380733198c60cf88bb4c5bd6a1e3ded4c8360c6ac992bf6441c097eb96c0cb73161cc10466f56d52b1bc5d59a5a21dc19380141344c11426ebef7abf8515e362eacc0d0de342a379fde5b6ba69a1165f1e90c89f859cc25c17d3fec12463c68f23be2d4adab0ced891e00a3ca8c55c73cf0edf1477f7a7721b93aaf017be06a4efab66e37c1482f972d597031 +B = aaf15e5e461b0d5d6f633c887a130a20e896ff369a270e0bfa19bc870da38b267bfbb108e9d2a96cb9ff568987030ef6655d4025539e089d5ba03466c45fd1dd470a86576e91dfd0fb51dc32ee49503adfc77e7daf5b043ad18acaecac3913e6306569b936b624ebafee95eb0c5ef3434d761af8aeeacaa7aeb5b122b440a345edc3dfb28cc3457540716e2cce85114b11c31a278b6183174dafe2d8d42307cc02a913e0681ea413fb1d +GCD = 16833db0ec92756058522c045d4f2a329da0e550e8e1561a616930d423b40a6349acdaf9039252675e468192557ce5a92cf1f8b86434e7ae6532cd77e2d096d778da6d5af877bd02e5ec8ae44baa81d19722847a993 + +A = -4b34aa6c23f237858074feb32e348481e84337050d59f293b215fb5b124ed42c42aaffee56eb25c3277f42ae430fc4167258ce10365797712b99aa54a3fd4c33cb64eee458d1e03f52ad95a444091b69b6d0e4ffe455ed28f5d47ca0cdc874908aa48702b992c1285b03f7cb496a61568805db6acfc63aca1f7dfcc9036dfc4a96b90a83a95749630c86006e2d9b839da42da040360a86834a6e2decf20dac1a5ecf5e431d227b3e16ef4 +B = 38d5891e540ec23c8ecd5ed9894f1e7fbed95d0efc4f6f19b9fa688f217162b4d2a242f88f85cabbc94fd20418578f0a0b56b89b68a817223304e42171ca89510c3c97c9b0a1245a5abec9164c3527d26d4293d9fc12502860f49fd50e4a9d2de261ed092b4b64a79cd9531912ae9ad00da267734c86bdf5edf14e9deccfe8d25a70aa9ae6471bd2d76415898c9c33c1107959bbe86139cac02bfca88aaa65cc792d5a3c53c3f8a3eae5e +GCD = 64f2dbfd8186bbb73044c2bd67df024a0a39968d825e1cbd69778bd177d323e046eab2aaa28671cb5a17f58bd0ba42129ada2f71767958e13f11558c4c2d995107729ac18efb9ba8db0b1faf7bfbdb24ace3e391d0e + +A = df51506ac722b32ceccc6f9043a43f01f807387d6e7312a5a077d59bf06c79dfea0f999ebec31d2944f352052b1453f768a710e8eda2eab515811601bc9e0e1df07268fa0dec7d080a1e4b43dee39b4f24f9bb408b6a78edc80a4a5bc55345c1cc8cf425662c259cc7998a0465163044e238559139921f9258a9296cccbf8a48acd8251cb5b1cdd5be58278d13cb91152839b559ff3e11d58f88ac6f1de49c3c499ba90575b100274c166 +B = 15989a29121ce8dee3416cd6a4e687298f7cc8b3028c4f7b9ae6309359ac20fb3b9332375fa5e2c7bf3c83832ceed535ee976ba9299a7d5fa76a6cd642f30060c60f545674a1cb481eda0db82a9fe9e9af21ef376f135c7d7a7d0c8e7a3240fe1c1b68051ca5e9e2af2138f806203fbcff1c86d8b2c4e93f1a698ee23b04d8de4ce592fe3ee2566ea9251aebc09841b2f09919aeb66a5b9e14853627999b1088a0ac0b267b212c99cfc9cb +GCD = 5a9021a22f75869728307397d0d910f90fd2c70cb770276375393e4d3ee350ceda4e2dd0a536f1429484d56e1ec976779f59d3ce9216d8d293c495601b37ffc3b27b44f0a11fe53d67f3d6c0412b6ab8a7d7970479d + +A = 54ca782dbb149cf235a72d5ad953629638d50028fdf95f39a94e6294fc75e35a067b490165a6000aa25db6ae7f2ff4cf9ce2db3be65ab7cd7033bd2c7810a7dd7103984f4d3a7298b072e14b6f78d31675e7e71efae369685ed74fc14eefcbac9fe9273c3c8a1a79ca7faf0eaaa383438df0be4bb96172451a07e4e7b73ffce7b9f6c54ccc4addde5bcfbcfef9f482beec3da6866db40edabdef3d22db8e0c69a8b6c7402e895e336e4d30 +B = 631cf572bcd91f01b112fd347ecb9ab43b1600506c7311d1335119eb7b9196347bf298c62e5ebab1c20b8cb24dcc135a24686e0342418444c5d7d490f1606c6d2b04f8f51f70b8f24849188995c36783487152be62e5353af774bdbccf9d4d59a0eeae78fb957cf2f1ba2753f75721e3f133006c779359b5e09e9aa6113a13d15550deff0e336a6c52c92200fe9f3a464a71e3916627b66efd74eeb0aa7e4557efb1700a87e0287f69bb08 +GCD = d705cd8fc62e0eb5777b81893737de088f1b9509e0d069593cdc6f8610f117f99c40b1f2427f23691b538977708d64deb7aadba10d97bb4bd8c09d40bb416e7fa206673f15bbc1be779ab35372d26ac07bc2ccc55e8 + +A = -90eefd3f9978e7026cd564fceffced2455b2c42e61925040c7a664e5549c748959bcecb428df43909df652116373ae52c56d7a10c578ff827f262e5aa3d7777ea80e1e8aa7ba650f819e133a2d1a3a776a094110ce18797fdd4513b068d1028e2089bcef766692a43419e3468d8e9a36f7f54c9d3a4f9bf1d782d77481f2ecf56eeb573f2022c2c094443d84006f1185986f8e4194521efc02307db9b2f3e1b2e0ab288cec3b051132577c +B = -b5a7f20766a8bb9e30d67814685c0ac3a3ff34bbdb42215df89b039683c322ecb6b15799a89b065366e6b458a87494aad80394b5f8aef440261ba7e52dcb127289d49cf2fb9e945faa6dd7e0d8b846573ca6063b040fe5a932128daba61a5745a6f71dc8b6d2470fe90f10eb2e1b09042f8a0df5213f286e6637a0a6283dd57b5a0c1d1e7d83bc50ebac864dd974e0fa2a215953fb92565fc13874782f858e6151f15900008f2fba6180e8 +GCD = 129103ab082602d3202c1a50cd92145329f7d6c09f7eabaee0ef9e08c63bd6459c99e1358467cfba979c3b2d6e6d3c5eec36fd079430f84f2504756b77a58e2450ca0404647ac7f35f54fd8cdbdcd0c03a38400832a4 + +A = -3eb0797b60adcb6e3d06ab1349c9581bc902d88121d35c4bc239317809c2322cdfa0b48769163e1048948e91b02e2ca69e926ff8ecf6a9c3ffbdd5d8d7df8774de6cdc2e50133c6bbb570e2a229f70e3e8e66cb4aa2c4b5b0fa905e7c6044dfb791d511e5497cd69d0f4628df2d0825208111b5214e3e39cc24edf217e9fad07006c0f013360d3857141d51bd54c4ed1b23c1f3de576d4b46aa990530d9e5b9f8aeb556f54eda909a7b07a0 +B = -3123a6032a395a916463928c6a7f40d6c025dafe61c9477772d3925b68c06eaf6c1a31ee9ae6ffe24799bb98aabda4b6a4a6616f97ef82d703d02dc70b0bafaeab8d171f679e465541aba13125c26ec3f802ed981f40d8c49d507df2e5b84b9856c4c6e803908ae8b564a757f288fe302f4b9180bb681011ed206c237f630ba16ba38da9482975f579f180f3355f7a94b21c66358e33b90b8aa1f53ed5b0b574881a53cc9ffafa69072d7be +GCD = 342bdea8d1318d08e1f1bf411de00fc3ca4372d92ee3c3fb39e590e3846d6e52f2499e06177868e4f74c3642392ee63cb5d03c399379efc2d14a75a5793df073d71f38c6bcaa056bc7c69f4c1de86caf803ebf992c5a + +A = 45814cbd75809f9295b893581d7be1d6c393752e584c296bd9998c15c494522262c61a8877f39c0828bbedd02531617a1cc3994a276a5252ab9ec34308158f61725b850405c95a427171a0210504e0980fea788adcd263e3721c5bcef96fb5c93e6af7a9452e88524dcbe5c40f2d455f83f8e900825efed45c731e791f9ec4be612c63af7da4b7fa4dd7fc1f356fa286b71eb09c7deebc7de6dde963d2841ce137d0500e3f9543d1774f72c +B = 127ba47156cead29569dfd8f07af990639a55f67808928b8273dcdfbb366ba298c0742456c2741a5af6724449755b009c4b4fa67dcbd310d50c41ad21d9f2613489c4ab76f6368dfbea76306283edda3383698d6e578a0bd8e477f4fffc8f2aa9f9d63f51c06f3cc448dbde50d9b08e43caa23c9002c29a44a30428034799aa226cd427d282181cedbdd829c3a20740780f682bdff71abbe367abba8eaf6b1542c7aa32f473eda7c8493ecf2 +GCD = a4e05cdc8288383f74a35e7300488fbbdb5e7ef5188067bbae47a92def0549fdf1adad1c425fb4ad4dee817f7673b9733b6c9f9d1f1bf2ba6144fb5722d276e29a13a4073c2c77527cab70982d0a06135b1c7d24baca + +A = -5c21735fba18eb16703fb4c9385fc5d9bbb68700685a4bd84048be92b330fbf5f59133bfa60a6a28974d85593f674f6c4760e49b3c4e9f930fb18a232b2c7450633c78df5797151df6e75021966c0ff3285460619e056c2b794be9c9051db5533c797a53453d759b89ba8468c5f3ea6cb73da398637b36727fefde474ea97b621589f8b27c6c2b1a3cd94d32b20c2beb4772ead066125469a21bd12c4073cd4a52ecd53226a41f01e6a8fd6 +B = 4cd41cb97102170a8648c96e2635f879cf30ff8af6d2f5933f32eec937ec6b65b5ca0c7bddcfe5b54d9a1a37a114fbb4e3371c8b9eed1d348b48447e08df0d26013fc27a42b69251f0131e9fa2b4baace7de87b18d0e1f3f9df257dfcfb6a942f94408fa325920af7c6512eec710303c3f1758a2673e4191066bce31ebbba9bffa4add667ab959bd32144de805436bffaac1dc6d2a710d93fcfaf071fecde34139b9a5c1bb5d49204b09d83a +GCD = eec7c90563e8f623b19c2042902b533ab865096fc43abdfc93249badfcb52c43114f8b9738e0eea74d03ebaaaee8f2100445b3522390971b7bfe706708056afebac0752c31910d43023772ec42b025f3e47434cea472 + +A = d9f077b46fa50251d9f104212bc92cf0e915d90bf24caa755f1453053607dc01fcb874fc12f2f53969eee09716563ab98c354f6f8cfa942db8c7bfa8e9ab05a1ee3e9ffd1a024f3070c6b71a9a9efbdf081e8a005480211e5563bf55f4ef7e8d387449448ee9ff65639d6ef1a9325f51e81eb15e81eec0e7ee34d76bbf53915a46764b9d80b1e1211610902991e56797d3a387a0b87e51d5904880a3ad924e32db134197364829be262a65ea +B = 14077e2c21c4de0aff41a68c2fe31a5312c59549b8ba29145ecce53734f55d7f858bb39a75c59574134ecb4199a81158155165f0eed2383fd26410b9140adca64e13cec7518e0db3bfbe1d51714e58ac245e0f50d0a1e87eaed5ee01dda2b4d2a8c8e37f58e3a7ddde2ce6348413d67b40ccf364a9b79e4ac3391b60d1ce31a048706477c21d34d802919fa93608aeb7e696aaa4a30063ed858d10d9099737ca6d2b06bbd729e16f9bfd92f32 +GCD = 1a1deec0618b775095611d906b9bacfae3ca7b218ecc3c16d1d32b52a15d420278b0e975d8b517399169ac041fa07173f8df266038b31b0a49c5ebd9f7e8baf238d8fd8f82854c7d4257bb8ebe72b8828664195e8504e + +A = -12cf988bb4fd24c883dbb33a3b3fb8ce19a9224299738d3b270147dedddf45f3a377fa491ecb1fd7ad9f9561d0b074385265c8cd5e3715066b46e33433dfc806e5110d49a8586990ede450a89500b063325566bf53a69a36ef945031f62baa28938820debac55b1d6fbbe41c13e7048536d1340643058639bec3f76d3841a788f0b0d6dd44a30f3146e794b1cd33bf32a4c4b858bcc6e2e2755f0d5957bfb9d97212f8781eec339ebf4c683d7 +B = 67cc4e45a58376bb9e4a1ea167a5c1ebe360b52734d9d1378376386af1d0eb49f3dbe7773dd6d4d960ad3f72f7b5a65e0016f6a7dbc539db504093a4a91a3a12d9739aefaa428a731a7fc85076c577fa40f46f6553f0c34e29d9b1e8f175c75090a94c6893684cbc13f8b9630d4a4da114e501072560090fd6510fd8c2c5efb977440bc57afbc628e31587d2527a4cd651d33b8e12f09623f00e7cab719dcea62a76fa2f953126ec0dddd6d26 +GCD = 3c443858e9810b4b144aa123d5b1393e524114342251061d0cc27bce4358b67ce0b88b5ab7c170c09aa5b2b85617caceb814482d90bc605fe9c44f3d5f656e280ae440f9bbc9d0a0b79e8d81965b8e98f579e62d92cab + +A = -fc6b7a0be5a94755e9ea7bcffdda73effd9fabbfad9f8025cbacd7ab20985e32df1279ae5306ba4ee8cf31556d1191fad3fa8958062646b3823be82c58dc1213d1e58ab7f72723c22e09cf751616081e97af353590d51ccdee98103ca2eeba50385aa1caa9e2bbed6614516d90ce3cc9bd0ea62280c2e491e612737e1f82ba660538e32e6fbeb06fbed413ca7046aa929464639cf923fac22c610537f1681a322939542a75db3717be2777150 +B = f7c3329cda5c4ff7dcdc1a482b64ebf214b83ea0f99f85ccb1803fc2f2942a93751a26073c7b082a517bf6147a1e557be1ef09872f2c7cc2fc365fbaa4695d876da5bc78ee6c1fdd5d235d8b48d91752f376b1c979958a8badd1a5639c417cbe6ad0315dd201cb06d885fd44021600648524c6e36f501fac9991cc30c9d49df8552af7e8789aa92f4f46bbb15a6bc9be42f1c09e61387595efd1de3cd51b0672d4a5bbf5102515a210b2262ad +GCD = 7b47800e39a08f0e7c51377eaca79ed2893d43ea440b9346d1d7f2359cfdb11f2800540e87747b006fcd55891743c76c962dad774d1c235252dbbfee423885cedc4015ceee1955f9b0f9a4f65e87937cbba032d52ca0f + +A = -517fcbf7ddf911bdc76a2c2d9aa9706e177f73026a869b7e076cdac4620f42dfc24c3a82ca58f968275374bcaeace8fcaad9f51f07b9c1af0de5e47b344820ebe279736cf39a5f4ee87d3ed4e4fbc4d695272a5ca8a5e0138b5aaec988e0ff84e33a2403248113c9afee75f053401bd04365c3aa4e0d8698ebed44b3657d26c6cc9b157f91a28923977e756f6a6755f722ca89f41f3f7d4659b8e20996cbb84cf3f4775310f255648a5af94e8a +B = 2d9c3ac886c2b29814fb18346d461bad4172551b116f865f79f36f0045efd75bc8137845ac949c05c68f42ac9c9108c84a41b7005e065fda1fe5871fd2f24407d438b761e58c38fd3c68249f383ced8801a64161b609a57090ea15171824a69a2df751236e44bab6e9e51f3db0c01e658d0c1a7750c88b4ef6c563575a197deabb77f362ea53bf3693e6987ede05ef1be11368554d57a773aa85fe983c05f0e691819d5b218f5f82f1e88c9d3a +GCD = 20d987638d520f54d9913104ef61bdb757b963c876a33ca10a13cc1c6f52771c8b45c201821c23843496b9f0138b9142d28676ecba7781ad5d1bdc3c80590ba5884db2ae80de69bf0c8d40a47a08805cbc4fb6e010fd06 + +A = f151babed8492ea7e232ccf8c29d87fe30244af1efb4e3c696fa942425bac19e9ce6cae5a9a6ad774d56ed57113d459b7b5bad715a8901b92868acc4bd5e062ed60e503f510bd41e095495b31d2cab9a43287b97165bed0f7d0f6e33e0a1f36cb0846f383d7bbb1f9cfdee7f2bc4588a8b938f4a75c973689deaea4c4a131c8d83fd168e54b46d9633fb619491ba4794cb6e550646097dae9fac47e8241b87238f0ba69151d50c92e75c4e55b6 +B = -e8c75dda971d38b171c1dc2d06ef786a768ce7398f48bbf29761d6d666e9bfcd101b2a75f5bc191866ea3959de2cb897ae099c9a85256d5f033fd9c577318c3149678c7efa84e667c96f03bc5e95bfbba97d039bb78a32cafa7da697171dd1c03c1a1a616d3e058ca3d408a4bdc33a577fc9fede6f2454bedbe96ca9201868784d7ca5de50283078aba9f583b7c8e2d16d7c013b71b385cc19291b1715a8ef094f743f380d67bba711cd76122a +GCD = 28b4425a7e9ae40b5545c3bec259517689d7de9eb32ab30c4456c3a183b023c0d18d71d86a35186ce264a3818186ed4dd1f952e2dfa70c60d8fd7d54e0099e59d4ec70650764d45475192cf1df22a7de28314c9198546a + +A = 2b9953677d97ac64a66547a9f213f56fae7f823b3397a841f65c65362fda0b0949fd99b7e3eec69824a15c1fdbba93c34bdecdb35584ff1e72963ad0f0b34393f731a54c5bce64b800c1ce97aa6744d256632fd49e532f72ee415658f4ab4e8c0c0975077d7b0be468f7302232f3895576f3d2b3b6c59ad2c0720c3a874ea86e2058ca5447af9df8926fad08ad50bf87ea7e8e695780e0deb16471680d39c25e78a24daa17684c10724f0c4942b +B = 2b6b2e9ef5e03265ef9cdb1a53ae1e8120480c9322d10541c7f340fbc93684a8d95385e1303c4f5a9b3945b29287d429c8e1a04ba97e745a94c8601062b35f797cd4acb496a592fae83a015c6304c5776b2af34bae3e89bc759a4e50849e50520b8c5d8036948a2f963627d5fd76a6a87f4d2bd22cebadacc2eac012c0eba091d309a0a7c6ecb1d055885a8185343fcc3ad1b38ae10628ab1d4873a2ed399730240fd903ecf813c888bc45ba3f3 +GCD = 21d3f3e89c28feae8b54b0d2d137d819ab388498ccc713efe91cb2fca6ba2e0a876e1796a1673ef65588e0bee1b169fee00396cecda8ba94a4b3e4d2972eb8bdac48255a0ce2359f84eec2424433a2df03b8c72da596b7 + +A = -1838ff2d0f9345a61b45acb7016d2623c8c422165d1210b67085c076d0fa5aa5fb7a549c6f77be830d4bab730c60d721a4136db218c9148af88542a5883f5218e84e2743a20f83632f62e63bd7ea97b4da64138c2dfeb2f1e257255429b1a917bce75dbebc14c4db30edb98fa186adfab94445a43927728e963c4b53176671e269fe965c962d961f42a5196ebe3cf736a8cea5bc84454d658c79c07b1329b57561ef83e23388149bef2499a2d622 +B = 6ef76d82e4ccdac702e4ba64e6f6a80bc29b3e62123daf1c3e2bca81301fc20cf2f959b59c36487ae71f7c1e7186e40b09df54b7f5553b8fd857108144768973746032ea798581122ecad5fb8e1450bf41a6121e5451293166b5360171b15dfdbcf87e6edc6c69e852dcfccd48cf71a4e4562bd4e0317c018b038e940cd943b34735a12c7f5477087b1166a4a6f92fe5021726f296c5b449499ad6ab0e7b88bd14bb9935fea7316ac9dfbc322ee +GCD = cf85846c99e5cfdc51d599e1b8c8816dc09d7ad6cfabe3aa8756afcd7169dd5cdc0b9d088f33a70891f7cd0d488379c0568c8536aad394c8ebbe91dea92d7fa79560b8628e095732adced45202d22024730bb223651f72 + +A = -2102c4ded42c24beb3980b71c79cef56612f80382e1849048a09916238a7745e098726ee17b06835fa10fe3128a87d224dc92018ca048ecd611c03a594d5673a987e78c84a918f9d2b6f3eff39260eed33a19ec5d98a4398345d53206114dd97901bc1dce8c8ea3899cca0eb7f36883badf21d07593e8b167bc191d93883583c0fd47ebbc5665f5e423cdc5fb2252fe26ae1c06aa92481d1e49ef4c0c111b8924bf72706769e3f0bfa6d6a138fd0 +B = 3ff6ec2f168c0c153570784ba0386734d1e1ffa0c8032a3db7afa726db0e700f4e194a534cdbb9e0844759e6c85196195e61f47744e7daf88d8b96423614d761156bb2abe2e4f7b9c2d8614b89c66c8389bfa73c1c666b0b4c60a03e5ba47621f8f6d07f9a71614f7366a5fd28c620199dc939c93a15bda5fc6894bb4d0dbd46313aab82deaf307e5c4813d7d6b89d692e8236fad94219f688772eaea386b057b299835a0a55f88856d59a8f2bce +GCD = 8b34f3b4d9e2470da5fa8439f7c118891c5756ebe430291596acee659746ce6c373db19335cb9637c53ab56439d6dd3804d13ea7145d6959f09a76b9f2958dcd1d97d8ecb39141d1119710a7c2a67dc76f3140c9cbec42 + +A = ea4c5db4a2b1a44ebf308d4d0b4356a791c5c939908916dbad298dce2626997d04cacd64a27ebba484ca53d406fb295099631e18c75c0714b95c30c4752984bf99d6df6808c7f0e87c173416d1bbeea89e13bd7ac23fe030c53c6e1ff2c9c0a866c8e4455c83759fe3d46fbc5757764ec662dfff01c36af9b58b83ecc9014e1232099156f5404a07d4a04780ec77030a6bb10f62c74204401c7a1dc963a53fc41761b7f01d7a84be385bcafcc4b2 +B = f0d774c287edad48691b027e82f185ae4bcea11f0dcd4ec0012eb057ed521a096822a90691955362338b56745c0e12fd308728da6bdd0f173388165c8e84df5f38b8481bd72dae0e8edcce07f60fc44ab1dd29e7a415fc8b24e271d45e622f9532b79046e1a734d8deb5b5186b8a35bde666c1082125495829a24cc5568173e8c12ec41c76db77b2aaeeb15e7dfed1c38814da2f81da2a0b16ca02fb7ac0f039e841cdd9c675c980494b256ec282 +GCD = 119d1c9938d9c7767e0fa7b0e1b2b155f7210352d87a9b1deb34aa3baad7b186f0fd95d75294abf1466e57f475226b7024b5d84c55be21238e6e4082309c582ea2beb2c1430881b0e846bc426b40ef4b6d0883b6ee3812a + +A = -40524f5be9f7a38a393fe5223279f8a0d0a1722f791e387debda63c787bce1137353cfea792e7bae34e90b7416cea44ab86a912556e2b852475232358b48a97b0227a8f51c7a7e5b1f81e2c3fc21e370a69f9ecd1ac4e16eee76058fbebab27158127c311f0ea72b9286fa4ad635e077ab2bf883583618bb3627ff0636ff7dfa4c76b95f07d1e8b9e7e2928fa8bf20cb18b23056ed1a9bb08747604eb6ea76eaaff44d65a9df515a807480f3ca360 +B = 19774ba7d9e651fd425b06d2b6ba6c54b7cda9ca41b295aafc7288f793f242c0154003a931e7aaffd7d177f71ccc5b540c96947c7e4c7cf7d786f4f88f84f540b1e8ec8919b5d2b47b1f46ff00238c10761e16d69344975efb4083f11b7e502a64475714ace7424e41ccc0bb189f5f7a266cbf45d7fd22c0c37792e7cbda37fce0a38826722f186275e60b756ab47ccca5f12e5a0f6ebfc8df19c384277fd7ded28cc59b215866cfe0a4ef028f640 +GCD = 74223ec11152ca8052b60d4fe3b42ae095a49eb01724da91f413fea833f89c38b2b3977c701f411ebd8ef7a4318649ae33dcd2e3ea71209c43aad07971ca612730396bb4ca2da2c74e2bba758b5b066d8dd2b40aefca920 + +A = 42bf75ebbb33feb9f5ce519643e3fdebd64a4a535f1b2d8b5d224900e62a4306a966899bc3063fd69fa6120bf2fe7257d554c574c74997f4266119b6bb0ccc36c03390399e5536800274d3f7560c32304b33c41ab17755ef47e5b542d4646004f765d4b0d0a4c4f29772ac7ab18656a5c7d7edd0e84071a731bd1f579c13d5108bbb0550caae1c16b8ea3a77efa3e0331b260d118332e261b50f16606403de300ac4cf76a240fea066426f706bbb0 +B = -135afee71965b61c57fba34721d9acecd571faf57e88cbcd571407e1ab9975790de9799761c831cbd3650fcf726115b668d458b6aacac75fadfd912f5b7c2387b111f1606548cc4a0d43c0d75ab3346a610d3ab519a4738d3a39a508ddb823796a93bcbcbd5efcfc7980d7d01faea4b7df352ee4e358c0de22b6e6f8bc00ceadcda808afd372587706086cb5aae3a077b14f234da0147f38a00e0be8d83f7a2e9b947aaa1afd5e02208d566d5a6746 +GCD = 4fddd64fd66bc318a62823ec16745e6db02305975304c18940798b0e2567a8d1494a0e4f7423627bfe82a63651caa1ce27de17aa3f17af5f7280095f5f0f038fee3714019debf1df830c81ada139554ec018a9ee375f126 + +A = -149547bcff8d0e5a0b0b81f05cea76e3f12ba9aca40f76cab4bdf5250a10345a7b020b5cbe228e6963d01d760407bd6c78c356a9ec6f0e7fdf1ec0243a4a198d65e57c862ef9447ba3c04fa57269d2ddfc26a0c87988ca018d71fa578e8b18f02910505ca8bd746c57c9e856aca9a7344c5cb3be1a7290237e99029eb34c9d6040eefad467be247a16247d9a2dc5f4450ecc9368715a2eaa8b82a9a0d95e93aa7ca701cc7667b2505b9927f22aabc0 +B = -3849452a433e4e3e4a319e25de6ff59de7342fc50ac5e91b68da927459d8a16d0137372d8e6983bd98efa87f2d4f2f558e73c4d3ae176d5a2e72ad3c3a4bbff768b972861df72b98d7bbad953c643bd05eb323ba41d2b243c5d862128beac9de8e3adb0cfd6f51bc79b9ea44083804fba24d29cadaae4619fe90d60a2e7535b0109f54a4d7a12efeaa5e64c5f8de5b629af157b6d3f61f92c15463bcbba18685ba536a58d8a9262db111caf5575680 +GCD = dd09d01585a80a29076270c63275ec42a159290ab4a7b7158a0b358d701c1c746fd9efd7ecb326ee3a106c8c651806053174b6b6b49b0d70d1e316229ba10d534f847a5a530926236d0c383fe9bc3564ee5f31ed4267ac0 + +A = -b71fe85ef0334a769cecda9f6a2455ee32a78f7d513537a6ebba602c6b7b76352ac825f46abc4ee8d48b56fff2b4c1db159b3eb2be5b475e3e16b55934980a54b43a790943f6e39b2e228cbbbcb5dd588d3e4c25487e7b211d65095dabd151712c806e5a999ea3b0a3b2e2e18e71d003f931603e1991428cd789a99b72970ed0753bcb3e370399452e70bd27378bb36b8cdcb7746127ec497fd87caef4ee861266720a7a7d3254f3340a4b134cec7 +B = -884c8654554413e76ceefa384ef7241b468163cfd8eb3ea0dfad5153e0e1c697ff0277eb3bea62cadcaf945f5700479c5dfdde6ea2311a31aa0cf0c08287465f2fd7847f09c4f64d949fbc222f9755839fa9a91f039679d65c0c8243bbb557bab3e71f8261375d85111dca66889671c7ad5ceca083dcbae4ef7a7049f20faf62cea268329d2f64e2439b258546f9bc4b56181577282d86c1a98774743f9814c97a752713a50aa7ba74d0c65c548949 +GCD = 1711f74d5f7e6822bcad7c634938c9b911e93e33f21aa65f19ccf7840d5db4cd106ac07963faa6b9c6498fc8b0d3fd4cc2f9886e39a0517c3bd973975b5e6a800621dad8ed7f3027d3bc8e2f05962f321809055655b7d30f + +A = 3a35d91e7cec417f0a499e734bd4a562b9daa5d7f13908b7aee8aef3a492fb56fd67e26cd271d6cb9d9f469f5cb3045e8136d8335aba5be60ab7bd46b89ae45b062bd719dbb17690bb475b439d0a7a54c47ccbd384ad7ebf9924240bcf54e57782009e109dda8f5fa9483f972302fb211ceead34d8a9c13177a38650e92b86b09bebd9ba8844fafd3339b940440197a612513584b20a659203df192b2395079d5d2390b723d5d067fa61a55ffe1c28b +B = -464fbfdc84431f7491a66d3652bb3a091653b95804f46ac72d05b6be4f57c622a7a6981c7700a5a19a847059cbb50fc8a182718c77aac51196891bc2ad44b450b17f0b522a36509500a4c806a078b7a03a8974acb206e0805e0cb23986a50e83eb2985cbd07059f196e8dcb9713d9e2a68c86c52885cf8595fcc587fbcb7632ce87a6d13a5830c2b356c2c591f5ded0d457fb21b3944c8382448380a71ef73c7d2d168e8e3fb5ddbe76c370e78a8ed4 +GCD = 273176accbab6342fe9fd769d3b996909579dcb2c5c62d627cd860b0c0fa98ddbab3ac0d8537e8e5c54a780efb7cd9435d766712a063222e140b7d3b25df07cfb545d6d8f58ead02ddb971ff5802840fa4b5a3f00a82e71d + +A = 87d2f2f88cfdb6dac71ffd378427d8a8209759f46d967146e105b498ace7c83caa65d1d2083790b3e562350c05060b4a0cf5d69fdf958b4b0a85b0cb05ded56fe8feaa82ca645cf278defeea795d6c4dd927301c55e557648888062ae6e8c51164a746d22f0be5cd45272cd2b5656c7e599ad63498fcbc6b86058fdb7feb92eec91de782db3e458f6925a254aac1726f5ee71ac5b55d29828f1d7d855007d3974695bb74bfa7acdc58c7d8d83de968f +B = -4bc2d2b73b080665d5c86169585e4081e40c4d5f3c93285de57efacec91f2d7339499f5dfb79f68522e53ea5c98217eb5a7372a016e3d3fd4f8d93b9c45c2dc659511e672e095b8b34d4d66de7a65253c9a21e37d0d58ccd54172d89a93a1a99144ca72d49b3397b407168c27d64eb14fc1eb3706776d8bd80d189e13dd6193e4ca13a266c8819e81e98dd6115637cfa453e29eca559c5257f61aa344ef0dbfc3c2512e3fc543183e2187e079ea6392 +GCD = 75d638e8238514ff5ab0f99d88854128a886fe6973ca09b7c3bc4a6870c126154364e2d5ea25c19619c229b0332cc716f3ad627f4e8fa30b1ab82381b6d976125760157a06859e9b9acb329c2da24a9c719f0581235971ab + +A = 3fc450270c1d4a8868aa7090a89e16396746e4e8888ff6742191995cf54f946c6ebd6adb791bdc3d3c6954ea6b8cf9306ff53f8e528ff0ba7ae894281f0f7e775984d11e7ad5997e0b001d1e1bcc80b21b4974b638eb0365845b67927124c490e76b06d99496e55186ef037708307e2b3978a2dccf79ff84e3abb5bed6184631561aace89e517c86155761505aae3b2fa3dd3f08234a85f3278fb02526c27f7103f9b006a358b96a2e1981b6eee3d89f +B = -2050a940e86713d32b8272008edea1d8a05a3bce12d3de892e346f24cb5782a87574e355a7dba28911a64ffea1442ef0c61c3cb2920cb90903e639cb34fa53d61d8f37fb891ef6ab8e607cea1fb9767cb57e7c2dc0e2e9385d8ce24a00f9e4bdf6442fc4be67b777e12d3df5c0ddc1a3fa2d30c823f6ee436ea7024f1dbfc6d132d52a4c18755ef5b0633e7864889e55df518b7b70f3cc522007212dd239178c2026c645c6de6ed1d153f77d315bce50 +GCD = 201dc5d87c92ef902641b261f6fd863685b73e91c2d7dc593dec368611ae717143f14def1a711f6a3adbfba78735aa79f6e56248b0ecba12b7d3174c9b2864b5ccdfdacf2cbff15dadd02ef7e739a5755a90ce03f7c246777 + +A = e92650d273635591bdab110806119455b998301adcd3ac90410556b721af81f46573e7c432290a82319e76beaca8ff6a2e433e3bf22f2e0c84c97ba185fb5ee35af5a9569dcf8eb6053ab669404425fb8fd1cd3315bc282984e4ca86b4d1caee3e54e290d6e48968db98d157a1f16fe5d3d1f50712d2312890074d40607be414b8d3147819658d81e6fb61256126b31c9f2b99c2aef9198cc0c9530134601bfc65bf931ce094f87065ff2616f15ac588 +B = 9314a7f4de474d635413aa25d098ba32b6274c7aac0177f55aa932f1664cb744a9d61e665a76c2e73b801f7f7f4dbcbb4bb3779dde12fc6654e2efefe6691a0f521ee93f78415493271b7f8f149abdf5603e1464dac69ae0a0046e5c6b05a5b2ff8303f8eaf22c91bf76dd6047e07978f18c048384a1498de3acdf199f2ade4a42408dcc699688555c7a647a263997115c078a711c29ea6371105faabd34e4d81ee209228e127c4a0f5f7893060e1e54 +GCD = 10010eebf87281cade0a400a61e00b23dcd8486157eb9e48ec6bd919ad09434b2a1aaa1e603d95f692ed6d608b00cc9af8f7c731cf71946737b6c0905f2c071d347640cc1fdfe13d30e3f1bf58d82e107d9086fdbba9bd9fc + +A = 443d12cceb80bf41be0007e6e727c5468c3f4558d64442622d03748a00564c737e08f2c42c6f4c936beaab57387afc43ea9089c9b1eeb60b8b6843b153327f5a5c44b7fd73963a4ced84c3362d817e5a837c6b598d4116efd67b1dc94ffc462cd9baa03ce7a192f533dbbec6aef49cb77b18a82c87a163a8817dae9c028c5fa82fc84b82e1eb5774c813a5b5a81ec44e29a9ec7325c31c88517334320f5a254733eb1fde23493fb2cee1bd65840362049 +B = 36806b1a0cf2c54868c3cb1670d8504a575db538de8ff7dabf673d38ec7e04075a7796c9d44589933cf14ebfe95e8a47cb905abcca0bdede63f7d975d4395735cf5404128ab2a0a47addab6fe604c6f069fa5dbfe92c287dbf9d32995f4f1bf39fe67ef257697e895db6b0e453d544df680b953271003b2314a46459d17b123126a3fd543811affc9cf5e37f923a542ce5f3609f497506332963a93e87d5e2f9f3232fd1a70e608e604caf6a164788ba7 +GCD = 6950f453860b69135d070cad279a26abc9b3649230a809309521049b8c1a4c83f7d73140bb1dd6c6a11979e75e6943e716638fb7012647a6dbeffe10eb92bd8b5422626f02fa263a03c8cbf8c5a518461fbccfd207ae1dddd + +A = 108663ef079d5e2dda023320bfa0b1c1b336fbdb8d7ed18734f1ef91e255e379c23d16a2338ec8ec9b02a7099ae02fb463776e5eccf3108438b411f17c9af03cfea660a0d6d4e283496c1aef05c1aafab63b5039e491b729abe91d266f72b7cdb64bcef355ee3435735e7740aeb55dd939445d7bf783415dd55fea3ca26f159364ec7a0ffae87b5b4edf8d14ba02eeb4aa80482aef5491f84c8435a4285df8b76fe85aa2dc4249a5353c370df2befade54 +B = -14e2d1a6e133cca1270cbbb5ffacdf95695c8a36666b58950e20363065e93555061fb78356d0207a8be2c6847e464e577f13fc0ba288badfc26b185663d4cf35d609df7e08daec122793226bad3c125ab8e14bc3cc4b887e4a7a681ed81d7b3d0b715a1df04fed2446dcdde5375c318351be5a58b3e9da8db8f037743dff1e7fa39ecc03586c166393abe79090db849b5f9b33f1bcc88c4a57d9960e8b0482da75942e1bbfb3985ca00b3371194e3edde +GCD = 1cd9fc043b5a4ca167fc896b5014f8cdbc9f7d5a693b8771dc5d3a254d0bd6fc571d01aac50a4ded840b184fbe95a3ca0836e6243aabe51b7e3d5b8dbc62004c6cb1bdd4a5a3a310bbdf4f90d3d9f2ab5f9a3546abae3e5d9a + +A = 270ceadbc88535bf0c75c911f2e2ccbc0cf028a9d0b721ecda79f7bb12c0e244a43868015d42cc1c5b45406694b49b54fe44b787d6f26fab0a6ca34d8f96c826a6d69bd01ae169fead3447febd39667ad0e3d3eb47e90944234160509d47a728c480594b54a4be1243436497812aa61aad134aae775927c4cb057965fb640cf71eb613f66954b41f1873cd4a5f83b9ae624ff842c9aa336a260cca41853b8e1dd7f4e1ea9ab441cd1779b496054078e5e9 +B = 299105762db3be09870c3a81c8da37aad1c72e5a756cb9c1f1872e5a991346a621092d622c501b387949425c26748c6cb6657ede3be6e8cd6c093a4b9a0233f49ffb7265a0cd18393f724c88944f913df01a1c16ce6cb25808ff5018c25d1cfa38edadfab9c4925988e5e02182e388bceccad20cc5da73a8ae479618cdb77b80ab069be5d9787ff5941e34892ad404758af0b7c26ac4fa17879e06e73396f0efed08f82c72c584c946d41d860edbefe7ec +GCD = 8194356c56b9db7fae60c64be7249d44fa7f00259c3be6b6fdc5b697bca142efcc29fbd43375f66484dac1935214f39fac0b98eb37620672157e5c361ab70579a410bb79517058b9095101831a95d1383f7ad972d31ac2823 + +A = 789c11be89f706751e9ae0a2d3e307be6b81023eb82e26088e83620016f58b876a57b5de15372aa555bd28c6a6019c84c67093fa502eb4ab58394b1a88083382ad92578496aee31f7ddc96ec14b64dcf10fc3c742bd71b5b1c7a932c18f6b9eb2be0b6137c31c3973a4373749e82991b682e4f646689597e58ae5d177f408eda0a6f28c75d7442ef48861ddaabeea6462db634af2d4970445175c27faa7e8fb807027d7fca72d629925aa852e75b959f10 +B = -1ca5f220917cd86ac4f852a99fcf7ef01114446681024c76f1f8d4d3cb3f596598807f1cd04f52bcbc33047137fdb042c58ac713c234d2d661bd7ceeb4bfedf14b3b73eae8e92b781f41fcad46df9ece8f294072f9e586e6d1fb4e13e76f79f31a67f559200705677c41720495fa9e9178d990c25913b19eb7ae2c3337f46510538f2385f6592288b498be95cf115cf863f991aa6e05ce8efce9260bcded59b4d1ec3dc18afd351e60bb415a2c37f60365c +GCD = 1d24f0716fc0c0a903db6e4255a9029dd2e5a547457db22a846775cbfb3cf662fc589e8219039b24f693de57be12f38fc68b09dde3c1e8f50288738c625b9b2a6764a862dcc53a81df68a5b5005456f81d4d725716d1d8da5c + +A = 230121b69016dc721d7c022f1829ba2010e82723bfbdcd2b78e0ed4b4738b30e4c4efef3dcc89f4b41bebff65bca9e5258cd0eb3db39b17ee329a8f1a2d08cbf6049307e3d585815b7bc0294631974e920d3d383dedc81c3b5221bcc895187f9316eb789b1c4921806289e7371a4b2e20eafc00ea875a87025c40d47ba5826bc2cd382c477a72e6404aff1297dad01bb40df7791d1847d069e82ed353994d4322b9ec49d36644c68ff0d8031d2364046d45 +B = 39300819e3f4eb1820d6ef40bec89440cfc5b370e84cdf484ff4341da5580b64c4cc899abc254c188c495195a95438605fa3fdfd9ad86a9eb8705da86f2c2d3c5215a73c80327ca60fd7e277e86c5d2de85ef150209d1e3cfb465970fd354238e367bbfc3195dafe0f95cf3bcbf1da82b585a4836f9bd912f383d62757d8c02a7aafb0a0b0a84d27a2c0dc6d1b3f6756923c690688ea155ee35277178d2f8b0fd699f14866c93d91a084b0dd7ea08a489f6 +GCD = 237921555cc263469cf181ec0d5f1d24bb510b1b5d7f845bc604ad7bd4736e69658904a03ffdf46d84191a2dd1e064f6e2b3352a13c431df6dbc831c1082d69641ec709c28eb264763901c827a781821a686599e73ea0fe3bf + +A = 42d803ccebcca5bf684000da4d175ed7db1d9978546743658a9c06b0616164fd526d6358f9dc1bf95f84c7129d6ba3abc4cf2eebc09ae62af5b7da2abcb2c0844305ad5504664b80db990c6c8e705c4e36f1c0c3bd9dedd1b4491703b70aed602ea2c6f804da5f93d62fe7dc11ba8e0a949470251b5290155390ef7ed9ba19a122869849f8a57f7b488e7cc0927abc1a3a52b78a236558e379613e101c7373ef221afc7171dd7b9939750ba18281548c3a0 +B = 79452ab68a9d724b81c9064eccbdd3e565faf7130815e94ce9e182cf5a8d1e64321dd4f6bb69e05b3b46f08f5e1c262ab171dc3a2d35b25501bd38948ae2689fb4e847e24d4726e4115af4580a2273e38744b202adccf7c6c1f80f9185cf1ddf64a807ed84c95046bd4180801816b9f71f231a502efe5bb55e22b7fb6e76c2f4ac156c77120d8e4eb8b740aa05d2d29d91b193c3c828aa1398d014d3f707d9dd1eca3162a38ac480c70e29e230e4a5e6c68 +GCD = 431783dce1522a74b069a73dc23ae16f95b7dc0dfb7e97898731b75bad15269d0d06e0a9adabff33d786a1dbbbb2e0e75d6ab36d7a19c9ff70580100d6ec050fd611d5d7b35810ebb20c56dd61268e7fee128a7d7d82179fe8 + +A = 4b3ef094190e5a04e9f36a79d85569010be600184b73bbecdc48ce4e30b72d5614e37961eedc406b21ddb903dbf61d224982759c92b101280ed4edc1d7d3828e791f29b0b6fe671b62a537aa129c349bf055c72f7ac44aabe989430e9119682d2179d515a7d03577f38a3ec57a0d7a0e173deed714ac6704bd6cfb75f462fb3bb0ea768ebe14d6e5a9c88b9c0eed03068d7238626bf2020249d22a360ba5bd46c071bcd40e01cf0439ada8c5a97e515dcfe0 +B = -4b5b86ce82f174b0ee6078dd1557625d3fa395105d6551bfe5fe025839c18962c77d4adcf482b1473e230594173124237db0c681b909d643b62c0a05b9afdcad02f6c69d6865b1c2c81d91f9da5dbabf5115e6a9e635c458706f675fc64b68cb041a01a5483cdea6f9f2fc71c939fec3624343eb1b7e04f82547d78f794e46005c7d3b7532219a2aceac7af7cf37b517151a67f265a19c9605334c9edffc5e57e96d4288c9f1c8218e9b77a90632ca111510 +GCD = 1942596cc7b9c487d7d1a8ce2a6ea63be8cc90c8f6179e3e81ca18f379b4e4961dd6293944a68e854ea2c7a784c4d8246e125fa58d0a59b38b2e3a9906ab2a84f1ae22cf7a3cdf1518f045b8f18be2ead9097d1b4b3c4173110 + +A = -17ee9dd43d74259e4d3d85c68af8f0912bc628babde4bb96b58d2c858cea30c0dd16f6b574899ebda4431001f33f5213d1d23808d9825d57f71c4b0d9a8225f026c22be1db25f3ab027dd1b9fe8b03725e3a5a7d20b09886b0c1929302152f45b53cf6537ded2792ff07cf90f691982e2d6e5ce576c8f09ec4b15743077f24ba1045fbbfc1ccbf55ed137f92422e5482cfa430b4e11716bb5e9d480958f5e4c8c545b9a09395e274c117e3df92a82fcca7c4 +B = 5b3ab6bfe599072fd842401bd36aa227adb8f4bd64e6906e6bf129a1e07f58ba9edbaf1d7a889d06af1dab384d42aa34b3691bfbdb557b7a0debdecbd82718469791adb3af9cf3d96ca2fc6f1d2fc65ff9cc6fe9e4f09d169cc837e9bd1774fd7433c25dc4ec39c28aff1803c02e792ed738cc93a020efcf3b70a4c33ba37e7b4b2306c85883b4870b6e4ec64734cdfc34852b8d0b50037ede450f27ca154a3489e963ebe67daa4454ae6efdd0d3f5523725 +GCD = 128709cf00768373f4766271fc9c669fac66410f08574465e637ee4572e72c80da853158a5091a90bac4ded1bf4dc41fc39c3c51e5ef347e5496193b21011dcbf4a4cb33e7270ec94d04fff621a4a2022ff6e40de359055417f + +A = -4bdf6822716e69840ef4a27a95a760ca401ea9530fa70c350ef200b8e64a318248837e171a71ae7b1044924dc436c9490a3ccbed98c0a3d3fe7516e3f86835803a3f89eaeb5949259dc48b0ec2438135f298458d607d390d0c43ed3ea417cdd1cbef781b152d95dee576b5d061dc9dc4447c851c44a1aef290e471fd36e037b53aa8b4857e2d191a46bc0ce67301248803cc74541a21c6eb616aa9cd7e680cf516d0a5d641ef647bca10e20ed447af4f76eec +B = 15b240b2e7aeb08fc4273e44207d0454f6a504b1fbb4339d2154a41567ff79762a35eb496edf22447eb6517ba14c76d183329199a800709fdafd3d1ce20a9b434632d8627a9064b18dee1252f333403068bccdb5ddc4301beebd8356ec244930e2bbaae9a1235ab66ffce69951b8e167bf1e4509babfea053a4bf635225d8c9de8a4c931d7053a1c9f14604a706037ff55ded8a41dbc034f2208891c1e8047b586f974755c2bce54a2f6298913f922c5581d2 +GCD = c71117ab88689f2e3a601e3be314a4429b25aa1457e7f64f59775ad83ebfbea271acf4f10907c32c9f04851088f007bd880c0e7ac543b06097dc5a7f16fb052a1071372c0888c36780ad90106c3ad71a663f7e4c42353cf4e7a + +A = 7441bfeb978cbd3807918e58634089c0f4c555529550fdc9fb9d3717dfd23e699d69c87d88361ce747d3f016cbdc32729fe03be0435f5ecf9e1b8bda1eb56ee29ac71006e60c25fb6fa9c15a97ebacf66574154b7cbc3f21f2cfd8801e760845bdfe6fdfb34061b4d0bf9b727fe16466afd65e289833290c1e07ff9e41489757d2bf1e6bcd50133d2398b6bda0c173cc998f63cc402cd4fc7b2ed04c441f615033123f357a7e8adebc6ea6cfe8138ca8ac2fc +B = -825023e14739b4a16e28247e7df06d1565ff708fc924581e09297616e208e4995b880b60070714075c69418b2f1c957d94511eb21c6eb21f0368d24e9435daa06b0063491c99e521abd2c9bd71a84c773eda51c29a846b4c64ee40b7a4ded2f113c092e449a6ce13b69b96de8c9d5342aee01591301bed0720b894d138cbb713d768b11c9fb7371ba44c8aa4aef1c74802fef823a03d2fb70e24edabf3d183915086a5b13251aefe3f42b69d2ac1d4e779050 +GCD = 433ad3b37fc80411a8a0d5035148f5effb469ff5aca7dfeba449a11de5078e2a2f3cb70e03833c6b92dc34070a125426f0dbcbfe5f1c1db0856b9b9c1638bf89533009ee1c23a187ea4be5a4be0c716ad1370a6e27a5ed6a58c + +A = 291b0868208aade231362daa7fff8f803b1908d53dcf65e03b6ec332ad37243c51c9407abd507e8375a8c02b43a17c13459cfa07121480167420701c0b9da651c22fbb952b2456c7cd56b1ded9ff03ed9b306ea979436fea2b30a04bdc416ba6aa5f96ddfe249abff75b68c08b9b0d17eeea2ba6305b4ec9d3a0614498b553736f8a91ebd7b780c7b61596a062b7dbaa432a78b243b08e0a169083638820a4bdc2ac65f2e4b51e370e98f919ea4da43e528a11 +B = 26ca38c174827630934094816bf366b1a4f8ca2d984a5bfce342e44a4da4f6006f720c613408f89437fe548432f1e2eb4301855a8cca90a05f9a34e96e141c3f2cad75bc3bc7a269eb6b78d70bb8feb4e0a5abe968d996caba943201918b4329bf5adf5dfec5d9a6a289f316aae033e0695ea285701d494cf74bb6dcb6f7bdc5e0d36b960d74ad29eb7f150879317449150ac70102a7d00e4c4df665a5997ef401ad3a86b881212cb345a5dbf72e7eb0c9bc1b +GCD = 23b564b1c7e4f6bbbae9ee90e35eaf70392601d26b28953377c0be2e6e4510f6d7b3fe3b1ceb0b596d297b539e99d300e07cf392162f186db73621a67b9a72c0520af9b5fc0a6b9f2058320a7e0c59c2597db64332f6d908afcb + +A = -af427e803e6a7f089efb4c6157d4e01eda487c3dd7041c63ed785afe3eff2332c74b6a2ecec6955594a290c2cbc3c602fbcb9c752c617152a10fe6b3b0bbac214662a09ec1115a59323c930511b28e426cee2d771bbf0045848e3bf90aa0bcbeee89da74144e900b9c7f38b394b1dcdb9a09ef8e0c5d4fa37e8c987c4319cd7263f8adeda55b732a92bccdee22ef4d2102dbd87560a8cdfb1dcf3a345e6de8a0b9e1931d316905a75f1b8fbd051305ab3bab38 +B = 10b1c679c818623420ed624cb3eb573612aa74cb01fe054bcb1a0e466cf937f2c4c4a2d494db69876135b8f7105cc833e2b27772bbe69efefaeeaf1f3ee522b79ab63f5df172534462559e4fad8b9fadd913386ca27e722be8e983368692017039b6f7f2ec0d8f4a0fc51ce9afc3a9f9f04a73d94e0841b59dd4e03656e9fb46e7c2feb2f236eb71a6e562cf87321795beec20611b201496b25738be4de4f77e89c8cfd77856cd6d8cff3fef8da31161e24ad6c +GCD = 36813e6571e395a11bed781f203a75fed1dc3a7c2b0657f829c5cb9e46de166538118eb82fb9e56f4d711696a56cfb026be434c508f648bd5ee1d2a111f8fe59d498d32791de1824c434b91771c43805c665b6f0ee0bcfac16dc + +A = -485f6af70f3667e7411f3878331cf63faf9193eb22292a7ebba3375c2f01e4e9b6120de8d177fe7c0af6061337ee65c74ea47610d4708ec03bdec80b70053d72145383d85a4f1392f4f558e22813659fd8a9f76fc782f53f05f189457dd1ff3f447d2d34606bf4eb7435dc5beb5bebea05d3cc0d8d2ac26c6d0d8793d39286c45570b4a0079d0401cceb618ad4caa4be6044a9aaa17ae578bc9e825a5edcb96b40d998115bad40176d26822f3e4e37910b882ba +B = 42c00200737ed42570aa079a41fe4dbf7d27bf6104cc77672a2d8e67a61a09a0a1a9ae67fc08e0168667e398e07cf7cabefe98e682d5e402ca1848ff1b04181900eafab18b1765e90fe32881fc44a4f078c4fe3333ac3bf6ee2b2f8df3716e15866d5e97c1a1bb265bce515f3452f1929c7baaae08edad473dba976ad7c5ebb4997f9529fc9d055a4c6dea15a968486735ace7690e73a6be694f3bf8e0a877295205c8bfa6563c2a7a149381f1a715bd075613a +GCD = 2de678c56e39cf64c671cc7921df5a1f5eba53c19ca35eb568186429151d32e8cf51c8ce6ad4bde43641297983e8c3e6cf378cfbf50479370b3446d708606bf0063cf3050adb4fb519ba89e004a0d823b7ba41cea89a4af9b68e + +A = -1637f1fbaa7e162db33291b8f8304b2b280597467f208834bb1713af9f005c994c681cafc28697367ce01269af117fa3e2f42aae605bbb261e29892b44da54dc3ec24eeba23d8c58bd934ca6889f3ac42b8e6eb72fc440f5146226eded26b806c07d9f292b7d91c49cacbb1cd2e7a56a5d596c49dc7cf14ea1db77a4e13542a648820227e41a21167d9ab72b5469b3d789c6c798979557119c897ec58436c5d0f52e7d94bc9d77c9fa1f9a8e73a5c962f77914ab +B = 13d4d0857fd2ee6496f1d72f7f523cfa95b8f43947dbee8fc380f05361046a52fc9f52afc31d2ae767ddceea47848d231ad4a7e424ef06416e514466e91a08c15054d1bee22953e56fcd68e19054b749a1391c82d2ca58b5745eccf69ae9d723996572ebbef091759f21374281bacc4cbcde3ce87b7d713a76a22b14f6085e91ff276d564778988de9dea6df08408e06c5f84c3db9ba139c8db7f77b97100cc418b8e772ee0d8ad5206a4c17cbcf1acb9f1d412a +GCD = 5f055073079ee62b77ac3204176a691c5143cbca5851c50e554bfc0684af47642ad1a80e30d51337d086e434ea1606f1fa244d4677d9ab6b6df8f6acd63e81c4ef1aa030e6eaab176c848b65dfaf781c18f44cd070ceadb06985 + +A = 223b096e8c446a32712c5668fbfc84de47617192d9ef4a3ba8c975dfdd128f356d654c8a98d9611a1198fb491971b52ce883343d5aec36b9be0ba7f668e3636996d3b2dbd679c144436f4fff41a8637f007e97f02e23002430c818e08f30d4f3b48f3d61212500229574e6d16087abc73675de0410d5b6b5845245916dff90abccaf564b57fee254d59c7556dd14149bf9e92f270a133be98e136d79962510bffcb78de42027e78b80f864963a70ba026eb4db04 +B = 1bd4a89040c7ab24b1ecdc71e870dc83af5a3612177e7dde91aa094f901e7a3691b831a54cc3a60b02595f77e590b25640bedd4f75990573673294fc53be6819f81574cb561cd8bc1467467881cc2d8d7323bfda55dd1e8236ec94064f6c3cb42ffa85ed2902b8a91f5a14d19cc1cf698f24d54c867c5fea84cf5329c991675a12dc2497ed66612701dba0a8e966e5215b745aa87d0bc52c5f6065978e02e230ecdba80933a356921e915c68180a71e2bb497a2c +GCD = b3304b852de36c9961aea9f17398a985554abb0faefaf378ffc57bb9c598d664612120ca5f3a9250134b53df8f18c474cb56dcfc02b87c34d4ea4f3d46e4a7a339bf32b951d7902f072c7b82339cff5cfdf56fb6ab72280ea954 + +A = -164f46663dcda80b362f4f9a88be0d3e579c0e11f3844ff8ab203164a73a2fd1bb3d609af800fc0d1f2e01cbc7463734f4229c9ef86130729f3d4ea2d787eb8d98d0ff42797622bc62762bed5ebf17226a4b45d534ef2c61564d2f33a548c302a7b6eb5cd4a3269b3667c0f33306bc6267b93600ad81198af2ab74fe0046683471934b50e0f49798417cca9557c68d1deffd3a3c0b7a4119376c3ad18f06c6ddc8c18f0dadfc6cc0b6f128ae2882e80c2479f8dc2 +B = -104d1b5f238e0e7a026ca7676a043f89377ba53988c078f8e5c04da805666c56932970a4df9939f3143e173f7548f1aec969b125e454e312b857055d559cca4320b470ac0c108ec119993c056adea9e963df92ce54b8239ce47e7de1af6e84a57f7aa9b392722495ae88b8f17a927f2d76a087bf033a97c01356d2215a75f7408e4354f1e00f2f1cb9e5f8f3df5dcb2c177fbdf041efdfc78f761f7ed1ff8e607456a37ba26266cf6f1e58208c9e53a64b5434b7 +GCD = 1a2d589712aee76b21e7da910213242aa14bd521e76cf949234fb137c5e8b679a27aba445186d4577bafb651af3af61ae5762f12c0555ab85aa3cde74d327d45fa25814678d0efb2ebaa738ef7e06a4a021686d3fd7707ee25e49 + +A = -48edec672e8de18da5525487ae3cc19e858f0580b7627610b150bf7f15f57f734925f9410fec3289dce26069636c0dbd21fea7b05b9f390f502d1e1ded20ef8b5e944cab1dde7e703a00b2af9619b6f41647af823340b1ba3762e3201714c6cabb84a3ce1d09e46fe25a5248e193081de659ee987f0756d59b4102f9b4e24a49ed49d77500e16e731762592140fcfd65cf806d4bfff2e414026af3f74dd8b704f9a9395f713f0ec222f2bf915af1e12bc8fdfd8c0 +B = -a57f98ff0d055bf229e0fa98be06ffc4564166c3c2feffdb0c38206feb986abdeee954d9f93bdfa1c3f325549a4744a9c6f8a4449095f6c54e966e0969cc547e4a55b1664e47647d966acf05ee5561f6b6c44d99026d4ddad7a32bfa0017c4c739bf315e8b25c4a85c737b3417b0fd20d1afa824b1c6e21c67ba38c468d41e438b7a212253b07c7ca548375645e4a47132929b290fb696fb3f2398100dc661cb87cce0238d069525c2815e889fb1a78060f6e938 +GCD = 77dafc8e2b5f342ec0c74d5fadfab795006d559e981c8618b1549fc4f83b97b4cc4e1c5eaabae3a32aef02cb1449b1a36b446bb94b5f9e493dce63f18e089ffa45e3cb120605813725bffcf3d681848e75203cede1ca403573b68 + +A = 23201ccb157cad7123d94056bbab2b1e1f9f7231671a76e53b177b2d2445e6631f920cc89d626fdcf04d368d522f60edf4b4b64d3f2f93beaafd224c168c844101602bb218146179f458f3e5a0b51d4790c36e1d2094582e19560ac27dba2fa4c6e403731c2c66ecff2260740d226d72c5e1c2af9afa27934f9c678b4b1b91ca51e47d52c0e15af61be06f47a96bb7ed4c734a4d6abe2698b0ef7c2c2d04908f0a957c55e0d8e9a6b6dcf7364f82a23a6648122f0 +B = e4c925cbfb1c32f155ad954a9f87b72978a3870fa5934f67ba03cae8913de65e1f606f4adbf2351bf4deeec92bae14f4cd64a9a5fd904f55fdc528ae5fe29068a6315c36173d903d833b0c78e559325aaca56f93ab629d7b586dca0a83f28563d6b186c799744d01f286500a029ecfda64c49697bd1e894901028b19e4a457db866e344d8808319b920a24ba0f4491bdcc701969a07d46c07b96ba115b4671a571092c44978ccb72986c6cf3020272a01665bd958 +GCD = b846c8e8d8838395758e03eed244ddd6785f67d91626e1994e4eded2ff10e409460e921db681ed0e3c432180f7cb70f8f1a6cde520545bc4561e7ccbdc5f48ab5eaec5de2cec50e65653ffffb07355db32518a9274951ea23e038 + +A = -19590fe7eb245dc3b0bbe9ad7c43c00674763c91dfc50b2968cef169e04eb4467ef7ec80f2aadd7fb9a3d6cff115519e63ce9e8ec44b484be0ed9b0fc213994cf15964ac17a13a4d1401e9227c76716e77bb92a0214e7bcd1b22b073acace6f5da7337d893839398e07b787ba0f3f08c6a323d52d65a388b512f0784a1610d4d89afa3ee53a0f09324b84fed1a8c7ca2287c21c5c2269aa24210e3c89530e07d137132dff37f489e600727c20cc46ede244014ddc6 +B = 5495d3d0633222e3ea4ab1e46d1717aa3baff445d1bd1f085399bf517b49fbd8a85c32ac2f91600828b150f0898b251e84448502e323ca47b919d2d485b80d7fe5d532a2c59135ac29d47af0f23cb6f547de30b9b4a7145cdc4eaf51bf2af3b24f824bdc5c22618e77892430b89d26a30b13767acab54bfae8747ee99270c7bf6b943bc58f3f1a95b19f461cee35761e86eafdd178da054680583f5ee56f3d3e25da54e6b6ac1bde14d1dd380f27c8fdea5280f43e +GCD = c70bdf01319378614152136df1f79a97d0f2d1c57ab9cc2eb5bf837d07c33aa7ccd56d2968e0a554608a6cc4123c671915f3800c0b91ff1dcbef32cd3edeb3911612b86f27c7174f1f91687f80eff8287a9e22158c2f73727d442 + +A = 937498bfc72a1c99b081a3ec5166117d0eb2d26725079ddf822cd4f6b1772774867dc786780f4fd979d94e76acc1d10a6d9dcc48a867d1b73710ad17387c23ba2d5bb345d2960557e96e8592feeaeb980cbc283f583d7b3a293f224bc6e9eb3d83dfd8151e73b17c4d0aa1e8f4602e99e0cd40c0aab341036e5cc32472a68c85e36fa691f36fb68188fdf3e1c8f6474c99d73853957566dc6aa78de628dd48849c0c42c2f5f95fe0b9697675af2b3d299e44080d0e +B = -82322c9359f39ee3a2f5c8333da0ac53aae946b7321e01242df45fdc0e1dcc6d944853360033c18f338d6fc7e666d005bff1e54513d27cb236f5f5eff33645f79cf8f0086fccdab2584110c2c684cfcfb2d492c38f9a926ee9ac4abc4e10ec787641b3b568ab6b62589b5c8efd7b064b9e29822508148d80f9c3716a3f755aa478fb2e6ae80434f39b030c596d78fc9ee8dff299e64deee3a4ad908032cb00e45f12941d2e6fd24afd20ea5b5f855dc50c6d82f646 +GCD = 7252ba814fef8c3ae82ed59e513ee1097fe6c86f9777a63a61cabf6cd6c32b1a8784ccaf3facef13b902b36030c6ba4821b3636f91e7b6f98bcedd3c8e510db1eb819f225989237eca7ae9f596b38937e884faac2fb6ea8383a87a + +A = -70366415fc855f8bb2dd8e4d137473b00eec4890a2d29871c92cacc313bfd8141f3695136502972346504bd198a2369ce4ab7339714feafe9f34ce4a2bacfbad8f3e2a90f1da39f91426bdafe98d93c64a2bd6c72b10d8e906c01eed19c91ccf68c01572e89ac7641b13a3a6453006ba35738d6edc07f178a48b83756708d803313fd54669c56a8b21c03439d7dbdebafb0aa69ab9a66222da58709e0fdf7fcdaf6b79a0399f9ce14b4bf2e1bdba9e8444265c38f30 +B = 2afc05994744d2fc2cf2e764db161a81b68a437b4f80d89b10a7b907e196b945d1daf75f7f346b3e3b9caf38b2de24059316ecb7de7a1191f47677427985bcab0b3c87e5ac7ef5809e720ab77e8c43e1e9ba8dacf4e7b1fa201f90fe75c95b9af49e1d07f1424901c294ed916c65220eb66f98a05749102ec4bd8592dce4be683c52de182d16bf213dbdcc6d0e95cee4a5e08578f50c7b14f324168cc5ff6edf0550c7ec46c4dd27df9aa805042ffd9d6a835d7ec60 +GCD = 39f8ac185898b8127149d632ceba9f6af8be9366a5b77b9c8d8ccfe2c2223270cb909a5163b2ee95fde6d58254fdb53a74c42f55d7087f2de86f8b57ff9fc6287a8563a607bd23074b878dfda0698bc9c54c41a732fcae50b7fe10 + +A = 170cc2748ef29a0f23ce419f8fc7ac4e49dfbfb381ef719aa42147afbc74e8144d3f863d283b05ca104cc9feb87f47510902fc76ae9ce3765f5e6a5e413a71e36c46e00c604add4c13bdaac334082a5dbaece946db38d91a2c30ea7914ef81a4efda7d1a6c9490f60dceab781485b9403848267589b597ad5989ade971ede7907777f45940e10bb998238cbd873bc4694003179a0bf3d5df7e96e80fd9f1452b90e7da9651259175b5c2c588965d9f1da81924d1ed75 +B = -13106192936017990e8daf776f1ac03afd40760a2ed7a89db5e3fb09b4f0ec82ab84048a9fc4f113128b65cc9807fd5236f6d7e7370ef56b130bb3062fb299a548fa033a33176c09ed719cbc37375fd794968bb8bbcc60950e94795edee12a7ae0a6a9bd6c4fffd20918273035cac233bf51a68704477fb92047cd81573e70822deb1be9761a4422283bb54a91b19f887024b26671d3576843953bd84c3d4dae143a817d416f10dd0f14e75f774d7dd9bc9fda0b4de0 +GCD = 6d64fe5e2fd4519883307e91830a321328af15443a104bd8e730a0f501cd59d126fde254a39faebb5ddd3552b91afef16ae77fd54bd1bc50030355e27baa25cc4c98561f85886aaa0e3ba37aeb268f4344aff7e0349d5f1f6c21e1 + +A = -4f4aaea41694f3f60bcd11e5d64f17892f38938d8d893370063d5c8f0c83efafe0a1ffa5f83db792b780cdf896cb93afa72ce2aaeed05fbbb267835814f3635e3810676e820dabad59695b87228ff6823305c1f8da2b8110c96be17e3e0137221e48e96bdd9c3ab43a6d4f0ad4b653d7fce173a94286bd620609c5288adde887d6529b0125e613097954d62b5f907ade4412e4097862ee608800862145299e968195045790f3b68b39ec859db96f43c5f6b819ab84b4 +B = -3fe6ff3e85cb26400b5c3eab69e5b46a713166f58260f25cbe3c722156837764362e6e5e9d1b36083dc0d562a6573acf1a2803333b9e20d63114a9a99b54b88a2c5c5a2feb54f83f12b1a8095635b33b08a92b017855211cb1c157e2cffa18ab49d1128acc7a39fd2c2f7610e13167e0b14cd97092cbdc736b52eef7588920ccd05493097b58ee4b473bd66b5e1240f986e8db618e5df6b03397f573f2065e672d8e4dbed3041c792649c95799a1ddeff3a6222b8084 +GCD = 8e786ad5bca1c06f8b0a93ff734885f5f5d7b412ff0a28272a5cac1c3b9fdd662a6e549b1fae00cc58bbbecbb4cd892fd2c44d43b84413ea8da0e9d1356111a06a92c7e28d9042d54d80965392ccd7e9bfcb2db7e1acd1be92d6994 + +A = -ca8aef521f3b3d7ae9a192d93932ea00da99d85b5a122372d9c647297d19a7dcbe13568fdfdcbff78eba33e598201d427d1bcec32927dbdbad30005c3f3ed8177164cda68040fad8d3423f6d912daeb61773b0e0d585f682ffe7e63db225e5e621175d1ca392ef5029c2651d5fe8f1a519bda584f687bbe9107947de6523a4e85a96cdbe491f9985d09a27fece2be80b8ec84c4422a51162603775741b0f18cd44bea9a753747be2133bd78efb044ba283c645c6cfef +B = -82e9e7404926b3813164f342380909b4bb7e7b98561cf27cc1dc26c1aaa9e9b5c7196b6ee0f972ac6182a3c871291a20aba75e91842f69b5a911b824508d27931402fb48124c9fa8d81067617a9c4d9127fd79db1e85b3f6f7b2f69f14145c191639467cc9536ea429c036f6308c8771a849f689ece18ae980f707e7ad672d38122e5d83e4e91ef2809a20e2ca035398d7451f81957c1db1d669c93433f98cee1cde4b8b40d9ee4aee25baa4b846de01e52f5e1a90ff +GCD = 1ba5a5000518d4fc3705994b6517798bbe36c7f3c51b9ef4be10a0ed68a2cc5e035aa3a635198bbc9fe70c5e4cfb420191e3ae7a7de5793a54bbf43fa2428285ba95ee3d5d83474e26f001db1edeb43da7d124e7593e23d964d134b + +A = -24a688f8e8bf2e06653cf3c8b384393991d6d3804a3d68b3214cb81df0bb043e364f62d448711a1768699f3095f80636ef1a41a84cfbeb3d7cbec93d9d3bdc87bde29efe4003c8a1c142696ded7ba2949c630eea60dd8225d51ce99ee2215aa349c2180c92a730bf97a47cd071c40ec0de927062942073f3369d5f9c7cc93b172a2511229db783c4c1cc06c172d5d18174aff253a2db9c6250bb74b7fd2785d47957e52c4e428b4ae25c0e88e30854cc5cf9a17540a2a +B = 33abdc189d00b2b0946a3f7a7cbf2983b5da0f71945ef55ad2e3d00e0a71609ef045a0ac7eee909cfcd688428947f7b08f80710c7c2928945ce4e353eb373d6606012bb32f4589d01e3c0546f45d05ff443368d319cb54b0279a82d1992f45bf2099c4947af1887ec495de9b34c6cdd818622be12e2915187886105f01af9df2f11e962aca9ac78745154054b263c549e7a47bdf052eccfdb228b33ab15d437128376718a220b98e5acb3b9b4ae4a4a9eae8d58db8652 +GCD = 257978a8360352d5e1723aa69977d8f0cd4f51717f0d1e510a45ea163d720ca79680b2dbd941c849f4941371e0368bfafd95b4856ba5132ea621ac46896d6bfc80f9b36584bdb79c15dc7c4b00ef1222b876ff3f64571ee076a8622 + +A = -5dd39f7bbc0a11778f94ca4e9981fd2afa92dddeab4ad592dc01a72949f6d7f5c2e871a6bbe775d0e2be0c0d11b02c09a228243e62b8f1ffea3fd822761ec5ab047ef94a0d662d2947eda22b1d5053251e34745ca66169b9570345a83373502a3c9dde7360b6d8850bb4d7a9923cb9b227c703f9db23fee96104486c29376f0d6a2b17f3c616f078aff1529c0d18eb3919b5808be87d805ba8f78f9a4115adea3d6b3d84a410fe0824cebd225731cb5f628580bcc30c5 +B = -62baabaa5c6a275cc602f2f6c3506cba4dfcb5df0446843a33a4cbb27c8f9727d1ab82206a96f1dd7bd21faded6a4d382402e237f4a598cb7027e72877c6f851725231b61a234433077069bdc15af7f6ce29a0f34ccef2b020e482c88fd9660798a28519b58434b2f184f1fe42ccdbd2b73d824cce1cbd42fb02f0e69fc6da1822ceb4de2adf2f1cf3b00e8db6f1f8c3186b92ab51e97a28de072688cc04993a2571e90ff47d9fe0bfe5795d38a4fcb84a6379f2d06fd +GCD = 535795a02fed391ba9dce6c4d2f0943cfeb85ebf08fee668e47a9624ff6560d48179cce2aa68d9b0e7b2d5fe9813f0595c30cde08ea7c7494e0020ccf4de8acc37ae65529db3a8d831aeeaf19d5fabf232b82110cf929f76ec4626d + +A = -5f0e8cd5b1c351af4bf4d699641a5e656b1b9fa91f223ab36862ffb575f3381997d51871473a4d4afecb6761559fe591c3a110086b5775b1dd70d30222eea3301c570bc0e131f691fb57da568654b76b221145b037a1f7f105f73a2ae76ccf4e20fc599e97130ced1db18812cd221fa8b49b0e85de79edf54ab64d2a95be4fcfb6d0336231cd6a147d8a0341004678552752ef3fdb69eb4b6faf38612e89491f8cab5a96eb61657f750d988969f04c5b0207cf7cd9f5d6 +B = -52764c018b2d65e7f755874029bf8bbbcc5e9264f77673fa4bfcaef8b723ffa066f698bc19d7ab721469a4365a74523cabc232dba1c46716f9b978e38dd137c25023b4b8f743a6ea895b20e0874145569066837fc30fc2ded5bcf0b80fe1bc830730dfbecd807335215ac84d03bf627733c0efb66c5bde2fdecaf2e77a669beb2ceeba07f5df07f53673b63b58355a58442709cf1fab5c5469d40dd8b11cac7ce51bb35075067e2d835c1e5cc4f78700938a8b6317aa8e +GCD = 19e45f548d3a5ed6005bde50b3ba779f5293c1b7c1caacca6fe8416bd43713853850b931633e841220779b34f17c3189259e1918fcb387c0c5aab8b9a84d678f890536d9ba8996af54236df0716f628ba7484a27efb7373b61e452f2 + +A = -135e3c4b8bae82fa117e62ac222a8d363342391f7b92b358028db2a868194841dbee81dc12c2ba38f3a6a2e8dd340262a90879fa9b2a8972f0c274365cc8e941545230b24147c17417ba122bc7b4ac1b340b088d476e026e969926a7c30e182d9c47bab846d83653e25d7b4a46c95d0cd31a95dde12396d8c47cc934ec46de4bdb460a8de4bbab4d8ab78528d66ec8a8027e6411b6de939f09d6c817fa8fb087f397b77d5b57080ad12dce0eedc7c86c5bf4058847f7bdc +B = -e6ce41ae73b5e3131b077d557b8fa91ac0ace8d1ad8bd66140744963b87a4302d2a5f180a3c2a9bbeca169a36105ba0b33975161bc16694c8cafaabb2f43e8d615559cb2387fc4d95922043b08e3b574a4800510cb0410c1b09817800fdfb0ecabab9803a65988c1718adc0da73fe38f886a20b32a903333f837da8fb6ce30eb21e256b4f6e6277b3bfedf444ec4d61b4c90544a6f59f261983ee0c6714faba622e66b63c25283fabce8a112f36a56a6babed2171851a0 +GCD = 2cdb00e7344c6e33e2d88b25c6e8c40e079ef4d250d96036363d61d3576310f5a92b1435ce55c30c71dd61d33b15473566699e35e8e3fc0ba87eb95532d337508daf826855906f65226e07846d919c98be5434dcf1299b836bd462a4 + +A = -14e1a1ce285b72a768e39e0765a8e32f4e554245649ed49679bf960426ddc3f9b119025747a520bde71fa55846e2ba2ba0aca2b4d2fa56a92c69b522140bbd7771e60aa70afd50d4da4b5d2bdfe0072f3b9d5e83d2ec57b481b8eec1795f57c90dafdccc4bcd69d7e1deb2cf2e3de2967b3f427e75920bb80c94aea7fe121a37efb17aed031dd5afc2b03c0dec3bfff2fc243e279e76fd80c4f8dcb485eea9865d544a79ca00c485be82a5ea960e602573cb50486af3e42 +B = -167df5b5e649e58cd58d2f77d682b8eadf7f46deced6ea6c94c974c00f145888d21f22157a60c0f3ad4f982b1398d42c34c4076c739da81136840d0227e0296eedae4053b223c87ed2707084fd779d4a7a7d698f1e4dccc2249597ff739d9e9f54303035a8fc955985a6e8968f80d76736797faba4405de22e68858e6ffc5c9749d0d269692e69b9a7a865443211fd9c43d832e2f0b85b2b4adc1f357ebb84bf0ddd2d0d75a064400e20e27e81762c50fbf3a4f4cac23c0 +GCD = 39c387b62b5e841cc195294fd31da851b01f2c7db1a34e30f55cad5b3f72a1837c5e7ec2472a6fcadbe9e10fbf604128f0a6a7af509d25043a9be3388d6f7fe5a125cab09e979833c5971d32cbe5ce962c1d875aadaa80000c3f1fc2 + +A = -108645f4bdc841cac8c0cb5f9b774bdaa482f8be2c4b443752b4a3bae0407bac40a9e780efa03045d44a242e030c8181ef4562ef81168b9b0e34e2f2a5e6a554d75a79276d189ba880175171ffd00119d79f6c990d8690e253b9cdf877fa91daeee92abde1a6ec6074cd8ad95abab6621bcd321af402984a54a4cf2971cd8e17849be20c5df82fd281cc35684055cfeae9c6e33f97c9591c0ed34d0ce85e899e1faa19314f03031168eb9b33660ce623940a36ccad72a621 +B = 9819cb6792f67e55b30e219c52e59e3a3b91ef9d4e276266ff8643395d67a3da8dfcd4ac371995a582c9d406e04aa4bdd641eb88505376e8d713dca9ba097dc0d045702f8fe91045c735905bd28883526f8aa3fa29cd7aadbe82281a1f680f09a07d72ef3013bdb6aa32cf7fd1b95669a3a80e36042f06f9385e2286b1cea2ab6628747f659782caf098123c4efd6ec3488550d1b33d49284fac8fe229fbdf89baf9a95572cc10db103cfe39b806280d4790aa7f253553f +GCD = 4f409a349256b7f7209d64cd1294fdeaf85f4cdf9740dfc77aad12fade6bf3025808f813ab5b8d3980c655323818c5a026e6cf401a7e69f5c4a697a9d8bab976a15af22e92e4261e760045330f735f11b16987ee9f1c7be0243f4e81 + +A = 393d46ceb9421f76c9db7ddaf0d23000b112334ddb12871eb3054f0ffa32fd4b22af6d86581bcd13d3330cd1399772b287539c80f35f557b291c3d2621ca139e0e2c61d1b49c7d22b7894c007270d5f2a3bbaf50e96e4656711ba209ecd7eeb5003b616aaabd9ca31acc32bff72585c82956237fb225f0d25fc1acb8529a86154cafcd07962939a18746cc8c3a867f404e06594f0e2533ac64a8112d7532be3869c50709bcbb6b2d441c5ab6a714df7ad699a1929d9c4587 +B = -1dcb1a07028d32049cf35691ac7df45112eb0fa8620c8a2b92cce874286a209280dfeda74fddde07f107657f935b7efc7ddd6b65be374951e56378b5848e55f8d19877efec0de3632f15a09b20af385f44d0370318c6a1da18056dd5e0288202e2e895fcc6941f05ce7c12ad5c0914380e85085dd377b663a76dfa6f6d81ebd6e0d34ae08f453b98c406c9f21f66492b98bed5d0a6081867752f3116c27284b8053f96f37e497337429672accf730a38106fde6dc997f983 +GCD = b81edd7d0dc9561b52ecccc39d71b5bfcc9952817b13e924b82d44f1896c9f3e407b1f8349cb4bd7347a9d5dec605d4634d3328e99449ab5b92ffe2511c44d2a692be4f0b097f75d47bb74b4997c7f8c6d96409b0ce1c6014f0702d5 + +A = -15444181c49b9196b94db495519ec7ca5aa14e9df79c25967a890a1c198ed7473b950585259896213aafb4debdfa6224735743afbdf7d1449f8a658b5890461227b0b87771ba5f3f0a265ffc9c9c6319b502b47b8df46f78de1b172094b2352521800e9da1f3132b3b47ae1330b349acd15cd33dea1104b8478c07136beacd3547bc71a53360e8a0f2b0a375a55f49d40aa285aeb0e8cf4dd7889afff0e7548248746ac2d4983870de13b843f3667120450cbebb6e388f56f +B = -c98ab3680d4595e701a5264e0127337097f11a8acdf9dae43067090023e763fd780cb858efbe5c6047caa0aca4575968eb3244076a73bb730e36cbfba2ddd5d2ef51c43db9837097f8d91172cb91f2cef9e84a6b23049c0ec1ee6bdf44ad10880430a712ea2550f9dfafb3196c4791799a5bfc7ecbb886935ef975a01df8d1d174daf56357ccc1b43fec4b8507373530d5298b4995a88dcf4fac3b97f922fc35f285b66a0748054670819bea3db9dc718e658b5058634480 +GCD = 15dbbb82f5aaa55b78f548385c9d7d8916615dd78be7b1164723cd7c13fcdd8345e3d0685ab8e61388d30ed69495670b7dc90e972225d248ba794098d52530472360ed82ddda7fd8eb360dad049e551b0c90fe7811ae320c7d0b64b7f + +A = -316afda744e782716e6434eef2fc0d91994acc80914d3bc594a9aeb00bc29dd36b4be12e643b1f37dfbc16f7af519ce7ab729b7dd71f71d9489e35b9379edeff34f382356d66afdb23d5fbfe7749787ad282bea8f83f5a0d8fed03321d137e0516c0b8a7de6f4fed758828938b3e808fc32b219936a10c0bcf1ff29231bbbf48f18bbf097fd73d44d421c343bf78c86142b7a24b47c7a233c67d709f85fcfede53ed44d9468320a154c4d3e4639bc008af356842a030468a8 +B = -64e249d32f29db88af8600ec23792defbe572bb66ca4734ee7c446873b72c8233ced5e4dc7fa48d5deebc044944073abf6fb14c816ed0ff6e13893ce58a5b82b642b1e44b8896e70bdd59038b87e750207b42d5968886e1c46d4c20dc0be1f8a97210f78d7d1aa46937bee7315cffa249b27c2394a9ab6dcb06770407aaf22ea66a52e51ed44aca9d5c6088ed30e154ccf79ef64d7dd025c6bb4fc3f0f96edd1ff8071789c56dc8b1794f8899778025ff2dc2fb75394e2f7 +GCD = 216c4766f53d1afa59b1cfb6753dba52da29d2ce6e57e6f393685699a355df58c148d73edb9bfc3cbc51aefce6edb5eeaa2149057a59d52a434914cc1743508899bb35ba30b3dfb998cf233925668597cb6d808625ac27a109de605bf + +A = a067d8f392a5c8e3d7c5abcb29d3c3161488ca0d5ce4ee7f820cc1bf8a8831bb452a29ec61655c5a0ace54f87ef1cde7bbabadac69a674e1313e6c199fc4d15aa3d5932d037b7df80548f2d2e0db2b4bc7e5e3e47a40e064774bf40b454295dc7ecf80b4d3fb02e355ec3d9457d35266ed20e13137709fd04edf2ff55232bfb62ca9d33ff53b42c7aed320e46ac0b0cc96173034477c6ac4662373dbc9583866c8f1a0068b62f92c20368ac39bd3542766fdc101ed1643d8 +B = 12e65bfdf3b8bb3cf43a935edafda44db6ae054f24053d080d44d366452f1648e04c1813c0b230aa1d954756228ff7e9b0a8498de305b1fed1c800424f03fe9f9da417201756db9010142640ee059d2ee963f904b58691f308cc1dbf8eefdb2353508b329e0c535bc7e05450105d004f0906c6fd1c444aeb22fa9520b265526f72010b84db29a1fa26ef7b7497a1b3182324d8dfcb7086ba221dd166befbc66519ba6aaa5fc8a01faf5884ddaea23dc7360b71991a6232ed0e +GCD = 4d0d17834c1be77caa433259a55d89849b4140bacb7274c704c272e039ced5579311bf499f7bcfcdf812a45a35d811eddb4623f7dcd3cdefbbd7d8ce4266be109dc73eb60a1c396708673fce78d22c5cf9baad087f82655920476daca + +A = -30ef6b0fd55e5bfbba9c45169f4404e07b8896f95764b9a89a6f2a2647aa58199af4d12e9d2d876519bf477ecd3402669aa321ae9a4ac3c8f71d82a74b98af162a18af0c820d78610208b27889793dbf77ef88bded6ed0c61b46214f44886826cdb5a9aeb1e121f6efc8f9b0caf22739c827fbc4b331b98a607296615084aa2177fa9d1f0d7d0ccc6ccb99c2cc7b31683bcc8ee216613b08fdf740c20755f9adfb3848e3a2f4ed855f88896409fe8c97e460a7f42b4b0a28b8 +B = 39dde6cc3d789a25800989f0792ee0e1803084f4328920330372e37e11d0f995057b3a260e410b6bef5ec8a23ab43af52cc3b529e95a2737bab99e50db60060e4cdde56e0713db678da5e3f1d9a93e3e624075a5b3e6adde0517962135d75c895db1a0766aed306853a181333ca393a1b0907b7554032fad51c42358bf781bc86abbcc47e6713baaf88689628030b64b6f7ebfcc359fd74483b3e091e1ea9bfef9bf95cd7c1d5536b29a3a413b94fca7fd7265d60f8e21772 +GCD = 80e0377ee214f93209ab886d6079e03f6c1c5341c81c640ba2ec846cad0644d3a2a70d783f56d5a64e4af899fec3ab4a18b1d48b878413a4ebc872cd9dfffd61423a2ee6cee5772a3bad154bc32ba37a3482013dc1958e6a2cc0bd01e + +A = dd0e72f5ff1b184ab3c0096f90ef037d7b80a47af8b6eb92b9148487fa774087dc320b820f2efda9efb145f67bfb26e7d4266c0d29cfc7e9ed3160b285b3d96699975a79ed2ae5af47d1e0efbd883b70a54a2a10754bbe581a881e0209efd5df3de7020812f9b49733d17d56a1f88b22911af5c8d9201ffaeb2790002594fade082008cdede850af0560c894de3138357b51bf444f865edfe12a37b156bc4ef689f3076110f0da119889d67b12d07978a89d46922d555623ba +B = 19a5303d92007276abb716d376e08550cf4cc5c3ed574d9c10899d1c87384ad14ff56c05aff3deb7423c677261875acf0c2d6d26131e4a0e98d3712d1ef8a669485676398f985dcb2d6e815530d0eefabcdbb9f40b38557d1d8769613f1183af561e931116fb643df7c9e371cecd58d37c1cb3acd60018bac57e6ad48a248b54967d9a86a0305568bc3b5d671a53ee743985dd8f49e03eed24e656ee1f29c1538ab1eaf2925a373d6bf60c74a6a60a881eeea1814092b4d196 +GCD = 36ed85a23324d6917b6d3ef09e645f795917c54ff5d9a4bb70df1bfe9efe993e2fed853a7cab8dad3487996e42badd803e523bc59a5edf6a066a63c73d7b8333e17b94637ff6d2a0ea0771c118e26e4200a27c5410d4b5ab708fa997662 + +A = -34e7020e63401aca126294e7a15bd3ee50d3a6fead10d18231f65f0ab184871a2cab9a95f3b44d11016852808400bb2d6a9302454efa11cfa28015e91824b00a1338d3faa8f32d04b9b774d77c3366db87e68b9d378ab8a7dfa43fc31fa9613fa35622964b1e58852cabce37b7eb6278aa853759216a10131b9bc1708cb176240b51342a7e63304881211401fbabc7fbcbf5fa92ee0c0564aff0385ca59ecd53b72207c25a465c1630798fc466cef584345d9a017129c8fa57b +B = -e2abdc1ab0ec8ab52e82e4fdd544b9e00f29d6c0f6142719bc9a6eb2f092ec3026751a99e9ad9989a5099355d169599cad3c8d784db19ed0cdb406db0d8628d7263fef3e7b8fd823ea831206a567705d849d31243347512d795e80c7be707c4208e18747b4ac485a7e4b8313ede011dbf8f1857e2bad20fda6688a1c11ef89a06ce4b3c49c55c7bed1deea3bceb4ed646ad5ab3378c18e19fb7d1cecf20d0d3b37827bf322e5a0a88a9645e1178265560e767edd5d5e6eb0f9 +GCD = 3a222edc8f0e632898cb45b3ba1005b2d350d529b3ae5676f80f755fda5db61b846256155c4f05357df35153e844b9a465e4fcdf63362262ad1193965da4687b2faf37c2c7407decfddb017f578a417c81bc2a50c0108c288cc9697a8d + +A = -a752426c0f0ccfac667bc37a750d1d1aba3ca8aac71f78330bb3339d1273b8a1777538e413b8522496b103da4207da94a03c245ff91ba4507e70e52d0e90bdfd99f8992b0db209bd9d30760bed5d6f4aad0b7e845600cc81f61d59e8502f2c48f5f72320ad6402c60fe41d71bec8088cf977361751f6e47a38a079bba38caf05506d080c0d097a68d1c8575ad26e2122408e03d22518365cf9b1d7b4e9f16a8c6a5fc30cd0fb65d428d3f06e9b1ce10a30a8bf58d00d0fc048a +B = -2de71a8a324bfb5dea5ad270b1e9ed80d15494c8d62e12f31a835eeac499999e81725b923c1e22981fcecde12e9d265e3defc112ff49ecc16737384e21bb7b83f0fd5f9e698c83d81da219d69134f194d686e69ebc516885e86b0bf8aa5c94cfade5f204d6dcfab611f14019e9af35a9c59305f3aa894fafc6d5abb4b7f38d37a3d208a5272e041cb4afa5c38659c7612dd29c4cf219090ec819d6bab6f0617bd4bce8e0c3787037f10fbca6e8cec78c0670d86beccdc5b52cf +GCD = 4df63a9dba84ec2eafe43410d33b8753c0a11eedfdb796ea333e12dea11bdeb41e6b60f4f24811804266efb7b369b5f874f849405cc645a796a62ad1472290f4bebccddb66de6c9dd7aa51c4da6863a477ad0f3cd6c099ad752b716711 + +A = -2c6d0fe2ef413d98b113fa992b7238a4ed463d94d5d891bfc038e56cc6a16ef630aca9871d7e281b8e7262bc8739c8c358ce52b744e9c371f640d03cad874bae5830aa818287a710b669d27f6163abaccaa89fa98f4ac8c0c11177b467d30117b7802e563bc996314d8f84ccfaf577eb89268f7a9ffded4371e7996c81b0a071f2943d37063a86b252441365699d8454ee351222dfc13b894ccf483de409e6804635d1136f8c7337af463011351fae93b3a19641399da23eafcb +B = -4ee5e128e9895c443166a3cc76fb6b46aa40c0e845cdcf85b01c4f36b3f87523d64a623f27d62cd818ee138eef95230de9022242cadbdc7251af5c4503a88b0dc4e72ea38c82652c0f459a712c66ef2dd0ee77f392bcdcb7d4a7a87775b247b51ff5db4e3c8624bb8e98bf83ef70420435310de3358f96dcd746e2d2475d39dbd7a3eb9654dd524993cee6ffa04c4f90269247b91a493e5ba736efb87a05e31a08e752d46516d4d129a84e8f32b8d3f6fdfd0c891d524a010ff1 +GCD = c87533896b5b213ed2a49505683bc75f39601c5d1d57681cdae0d42d24101226aeaa059e51bc14183958d7c6a196d5b698eb194f8c6216a69ee3387c470883ea3d3eea88664671e2623d76a887e918db7281fcd5134b3077840bc14585 + +A = -bd0fa3e41b10450a6bbb3714073106e5a38bac190885840a7927a3eedc9f4849acf28d72cf000e121b631d982ee5cbee7cd22afc559f4cd05d04d675f5e4769f7a3898395cae10f3062ad483be985803d454c9973883b68753b21069be6eb7be9047698c36d10db9147550fa41eda6c0386d7c50dd02017ccf7fe4669585dc77169fcb668ad0fe6dd3c5efb72613bb7d7b0660c08f109d746c129dbe487e8ae517d4d6e75d00beb324436eeb9c06ffec8694c3f3d2c0a7b535ea +B = 1f413b0a5b91c93accb04da98aa495d27ecf005dcc9347e685be5723bd8512b8e7f38162bcbaf2d4f7f93ceee46ec7759e428bf525789f5fb59d5bd16fe8e2789068b2a8685ea18583a27f32ce65eceaeb64d9ddcf49c940ca628f74aa4062d3131ec97d83432529b04e1bd1fc6108a6ffce161229d898e5bda1d4d661c8f45ad85e8c90ac60fc53ce5c7956c00378f9487edad5a82290c235037fc99f36f9782cfee5cd3434d886574f6cb681349eeffe1fb1837f2b9ed5523f +GCD = 11979410fae8473d1f5bdb34b44d7e11a6cf21f343562a5680000f2ad68dc2d1d9c7d2f7119ad7eebcf55d24db4078aaa97316597f351e2c82e3a0e0107d4f029726cd70245141de0bda412e8056f8352271429fa4e0ee7a8c7e99c5353 + +A = 5f8ddd4e5bc3cd78fa8eaade54c12b9a4247bcee0cea21d8e26a7793becb35a746e96d018b9344739c52c6982c5cc4d46c5b2256687e40d156b8f4791057286875a0ab3ced331d88584e56f0a3580d89023f3d1bee4f4626e635d0c114dcf1772ef007bacd2b0c8b70ea6841bffe8d43be9e53cf7437d6d995ce5bad5c6f0b3f375775273bb3226893406e71ed3a6f1372033a501e69d60d2321160b55e7149d2494effc861c86ee2f1c068a50213ff512557a83f8b8a855a6fcc +B = 31668a7b453c3df62edc5c9c5a098be6efd88d72c3ef1523d9f7d146ecff154b1085fb3ee21047ca8d8ece6854adf9ed28b96d32e0c63fa76cb833e66181d30f883f4989a6a224cc6be637c0f00163fa3bcf85ccf3c52fd133fa56c96d127724289cb1e5d029b2769d3e90cb7b5880ffce2a445adc75d4934b810c7d2bdffd8d771f77f5d515c4b33d5f2f3e12776e4951d851d379cdfc84afaede440c99940c40a0ec5278c0fc064aca85237088b2289c54d9b5a1c04114d570 +GCD = 3abc4293155c9285d194d9a6090a7bc21e6774f8a485e47b5c1bbca223d3510fc82ffc2b10cc8bb48d71cb047b8fe5ae0097aac81735e645a121560dbecb51bfc66f562a9ba3c0a6bfc8f114aa9abec278b2e375e5e4255e58315c9066c + +A = 10c145186b93534cf2a0eca4112eaed93d0306a6dcd69728bc0d2793e54276089386f082f74fbca88e371365a3408f3af48d96efdde0c1bd1b5834662e12c53d232b795274f689249a1cb84a2ae491b47a269c405fee56bf1a315178291449bc8660654131fe3a531f95ee0429c876114cfa7df7524800a127f2c92de2f60cdc7bb3ed1ca358eb14e9be6cead1515055de2b782be054eb2d5ca00ca8e08fe8ca3277ebd95f06a9d247c6f7317486427803cbee192002f882e43300 +B = -1395faef6301135b24663546b8efda0de698fa87b43bfd754c74faaaf709556d208c87d5877e9ae7825df647ff33be0d0660e52fefdc3d431b81b61fd254a3225da1b385d52038d7ae0bb307c92e2f78167e1ccb730dc9ed3d077502a3508e7e834ed5b8d0a236434354f8c1b87ce615f1e257bee383dc48bda318719d97e7afb4bf2e4bb67ae8a1cae0e671563dadca529bb95c2d1fa1f62f2befd1c92e1031dcf809e190092c868cdaa8c9c8745fe1aabedf580beeaf6791bd44 +GCD = 5feda34ef7cd1b55374506ae300f7dd568ef58f1e28c4f7e3187e12b2c09a380bb40ad2969e8095de5dd851ce6ac8b35fdaa90af30f335650fd10a14d586e10eb654bcafe7569a505419412087b5ca9058d68dd75a79e5961eb577b5ec4 + +A = 33f38e6e451ea0334b00847cda3f772ca9226e2f45db9fcf9e23c5995b453e831a3e4ae921a0e9e0543670007f41b6225961e3b53bfc1a64d07b98589e1e951e8e112565e957677f2a89b90a24338e8ff8ad9feef732733fcf29077cee51c557255e107958a7dd471b0ba5b3c09884e1135207957ce137ff070f87ceb331f33eefb5689700294d77cdc6f339df888c085d10c1c529e52cc2221f2b6496bb229d3b2484578fc77a7b71cbeaf19335ff6a289a1fdcf4cbd7ccfcd906 +B = -4f23607f4bcbdd8f210145b89a54048c7b7a37aa08ce24bc51da01efda95ee0517382c728cf495fb35039781547fe9d187216993003c62ed013870eac3f82880a13ee3b6710c665148dbfb67718841c7b390a07f7d0f314a62826b8c364166b28e369b8a7781e5ed0cf0fca432662051b1a1d9d366efb73750ae18a1adb89dbc6773719b2b0517319f0426849e88ec5c9ef5ee87a09d29e9079dde1a42aa0cf75c2b0697ec0d4e2c4c8ad7321aaaa591b0034809fda0fb69a24030 +GCD = 1685799652d73d1d62ac270e3a265583a7384c4eb5b72d4b1b71781825a0b6841e15c75fec36d0ef44191c2da0980f092de4d83f0ab8fc2339c4d4d02aacfed8ac786cc6f9c844d0efe4670f1256dbdec2bbc963820dde4cc325e684d7a6 + +A = -fea8d8db29fe24d7cfbd1e4391a77b62f4b6bf9b315068986b187b8031350a89e81fde4d0de1c5dbfabe0f6d83224736e3b3a8c3de3571f4d7178ad8a78e00589b48d7494b77f83a01d99d4d4b00c5521f2781a9f1705cf208db588cf262139bdae33934b43cbc8cfe3225f37e51f9293626c03323457b2339cc1bb261e68916d12413320cbf9435e2836c507c3c7d3bdf21ec7a7565657c6e85b241048adf843d6cab529312bb89d5b03ddd96c9d6f1974b6dc4516dab8e910640 +B = -15d11f25275bd956d3993bb1404f6fe787d4761a3977e2cde42629904646cd6c96306afd54e4e9e7e666c1fc05636c835598a4e0e3c636a1fe2875761853b9234e290ca5096b48158e311e9a1591e594c440c340e6bfb6dfac712cb90cf113cf36234363515698118fce00a9804d641426e3837c9ba288d086960f9ea908761b9dd1df175775c3744c6d7b72fe8eeabf8e75dbe5fb413e1ccac74fbac29693893fada4f14beeae59536e4509d24449614ea9c46c0a4b4383b464c80 +GCD = 1be167db4e8a64dcae6e806a29d7ec96a4942b67b329f10cbdd88363c02e94e2a2bbe6951fa272719a2dbbc515e8fb59bb01a2da887588e12e4b69e2927e292e809faed6df8bacf07516a37a843a1f71540c43da5f022bcf774990595c40 + +A = -3b7162faacd65ace7eb8094d0522f8feaa3d920c5cccc2f60e92ae1b4a456ec97577ef7d4384c9dbc6e7146bb22b478b1ea6d1479f51efc646f22702a6c01d73d321c7ce093735c389ef2d2660200a527452abfff7e91c8dc271d3d85bd355331178c8ff01e76416c23b26c5ecc81e1332656c92025e78ce53852e3a9c050bc15f57e5618401619ea887099fabe156529c79e5618490ab70233db1e07c62006a48dcb8c907a3c122e279e2fb5a65ebc54d8d44633a438a6203cf0e2 +B = 41a0bfc19f2b8f7de9dff565fd86ec129c3ab27ad884ceea112fc5ca95bae42bb85406611b7ad289deef1ccdc5248f9d89755620b2e58b49a3fe3e9d9544f260e36d0b644dfdd48e4986934d75b131b6998c967390fd5d56b2dd06e1c54d0dcebb0ae3c3cc908e6d75647144679183cc330ce5f9001262f3093cd5b6ee31e6e902eecba72ab79ca8342945424b8fb9ab61fbf615c93f745521988a07b7fa0142f07c150513fff4b5ea673863a861747444df543e10a336238b3a3a6 +GCD = 2083cfed43d42cf163ade1b27b77cf828d0d0bbeaf5f1a024513e5dc6fe533571497cf1a3702f816035830f9f0bf71e83598fb864847fdbcfc12ce9515b2a1ae5606c576723bd251b6d84c8666c01287b336d2c25b9231778e36be0837a5a + +A = -3882009372e2a219aadea3975ae6bc5030bf0b7fd08f688cb33cb90c880b08ba9a620a296dce0ad2a7a1995c765eb1136ac53f76e892e0b999d94c4f3633f7c554ef23b8a8f3fb21cef368fe16fcfd2a0147fe9f0b94db71c8846d15cc04009ff83d156d368044f7122c051d1c54f7290acdf26ec5c571f77dcb268b4a40cca8e7bdd171d443e29ca48e04a2224155d5a5652606040e4fa5c928513dd91882372a017647430c259ad9114b0287e08517ec70848fbe77a5c9ccf1ebf +B = 888de61cf1211367b21ea81b129dff1e05e4e65e78348f60639e6daaa6cd36588140eeec8c2890dacb2625fa24e86e5bad9669d17de48a8661234279844a62862c27e2193f18c8bb3f2cde5dc926399ae762e7952e3439aac4ba9e0eca050e7be0701d9248a934465dd047575419f4b681e2e845c6717cb93a0e45ba785cde93bf20074c0a3ffd2a24c54dc81e4ec75e48215e35bc6edb13f7b03a13d95e10d6a9a12e5f9f2399f696404277b34ad5a7c90fef1ec0eccbf4ab72f3 +GCD = 53c2dbef83aea180e153a69bfb75c6d4cee0349ce7b5c305ad191997141d5d87cd1467c103b244ca8f4abd22f76aca8b6f1bf2fb9b3789625e356f5df89c2a8dca4774ba3ac46a28c5dfd48c5569e8818f073d2345a7ede918051017bafd + +A = -45cff50b64f590c8cdbbcf93e1efca53100192c876ed43725f7b22b8abeac5d2905bba71bf9bd8da7e989f9acf12a9bbf6b3eebc3f7a086f4f38bbf545ec08cc86e7dd80325b7ae1186741df777d7fea013c9556e2ec971d69ad3d02483f2987b0cefc515acaffc5b7c5b38299b6012b4052ea58e57bbd8a609942c0e2fde8b223048aca76624f3b5afdc972acf65fdcd21c43ea82e6598cc99e9923ddc2be3584918d8404578641efa9adc39938fcbc861e480f454b7120cfdd5c5a +B = -a73296866df9b22ffde1d971a081b56d1dfb5396cb16de99c528d946390e24c64c36eee5fa0eda797070ff16596109835711557d91bcd56ee7bb58e4bf5113d22c40d127d8dfc8f621d0e07a849ab7c90e3231f6d550afbbfc0c45de7afff83b74428feac4dce9fc492fb10ab12dc66396d6d217449b12398d66aef94b22152da548998ba783a241f2c8f072017fafbcd764f1e8328e5cf5f776cb0a66b4adabd7387f3817f1ff7a9f464e6f247ecdaa678db9d18a1b0bf3b4b2e2d +GCD = 912fa0f10b1c113b65dc70a92f0cfc0d11a32627aba2b33763c2e184db5e2e8e35af05f03ad3c300279ca798e404dd29fd141dc8405b567157b4133c1d7ed6f00ea5ff3db568fbcd6d4d0bc7e6ce563e3c23eeda145f80b922d85278c705 + +A = -13cf497921fad45a1b9ba4f7c26c54215b0a0571d30bb10fe4bdb70a83f406b8918beabb58bf10af95eff1ef650156aa480635893255081d0e7a8142588fcdc3150f6099286b2a2caa59cc3001e80ee343c04a165dd411b502851da7dc688bd1177d1461bd90bd08e5d08727d222ba02bedc5101a8972600819a7a97afa8de2e14976bf1aa2f0d5b3a6142ce07223049bedc33344898fbd28ee57f25324a980d0373e3704a7efbba99aab81ffade447fc6d74295675f4aaa3d10d113c +B = 8ac932d7bd1e88ed5606c7f16ec9502d5ed891053fdab61ca1281617227a3a59d090b8726c19bd8e359980fed9d499a097d64fb56674a485d5f1097fa9eab486e7b1677599f7ac32d545ac4cfe8ee077263a5f97a1185514e22a5c6c6d909eabf8ae1e6fef51dd95f63d5dae734418862327415b3bc84bb0bb50cdcfdd986a2f669c0aa77008ea86d3c8baa90ba38d4c6ac59b678c24e58f8d75e0352090eb50cb6e7af09305c14b76d6be11ecfc4c197bba65c6ea8643e84b791ca5 +GCD = 1777e197cf67b614481961017f7ac81608170c0afd3198cdc6da43de4eb681f03b3e88c91a10119d3618becc58f7a939c0ec9980bc908e584a66276daa0754bd2f40ac33e36b66521502088a2eeea0c80680cbda285e9995bf60c92a6fea7 + +A = 383e87fca5ae1b66ad21321a56a70b195bf9921b26d98747ab34a3c6058947749b927566d5e50a70696f9a0ee336b9bfc23799889c2493abd5179867cb7e47d0f898bce268390ebbf60695be60451f48723682194cca95461852358271c7a3b27767e214a563fdba3b26d83c2e3805027ffdaa53eec7c8d8cdffd94660f9d0adf3cfd2e43bee893ce330cc0bfaae486e066b5e67eb2204caaf8820d27944f10e15b025b93d390c3adaeea991c5b530cc7864adfbc969410fa23d48dbe +B = c9c36c512c12d2d95bea2fefc1f9b6280280bd0e93c093366ddc2161f1d119718c8b8a04b26836deb16e88b7914e4561af2e9677f883118a0ec2da299a8b91634950a0148f1d724d9e51bc4780b288f3cae8eac2e2a4643e0274a8267f2e099a29801041a4154b7fc1984b2429399ced6b56c87fb9612c7e35c8d8c9c47cd9ec5bb006cf1fbf09fdc1d14ced9527e9342c48986595dd4787983b31657a1403132cef1e1879b2ab288036a0dbdd4dc410b1555c19aa1901763a837136 +GCD = 39e8fe73dd597e986fdc5c6ff223ad7182ae3ed249ea4ca732627f5c5caeb58a915147e681b4a0d263e711a2428170ed8084ffdaf5fef57d514bb0506d2b1da4810d5b933e7eff0f95996deda25e759c207af1b092860eb9b2f7c601acb52 + +A = 153e9781b309ac5bb022c348889c45e07f70ceffbcaa33a954b163e89290805f06254d96ae7bb85f7f11b046ed6877c275052ef09cd64b86de08f76a8906df1987fe71105335657d61541de92ea4ffd495e2a2b4deb50c895425cdbca5037c22d28b128bc6c3137c49f78f540dfb5e9a7b4a657440ff1d7947fe53813c8435a49491313d7e0e919db38530370ec3208e21bc9894c3fd4c829d1c43bfd0a03c0b380225f86138d65fd098a85bdd53e9084e19b6eff67643352a8a9fd0c +B = -7542a60ffa12ed2330eba8974c8e63dbaa1f4ea7545cca203fe2ee3e96e1b9c62762e7247e3c8158206711bd6112b80f1375d3eab46e26a92a485e2feab46db40e99b4e906980fec76fca7b79b6766dc1d7270ac0193346c45cd4458b9abf93aabffd0b19469dcbf6ee88534db3b5c43375aaa39eb188707e6c4f026d85a2b92b8473b381584bca3da51cb30e03ee965f8223b65dcc0aa0ea810356627305969c2d242a13b46360414aacff6ec80b27422632a71c0dbda4981bca1faa +GCD = 37a4b8d4ef042b17abb5737566f9b4557c7e6a0154c3b992946b1d25d79ffeac8a1bc0473617314b39b3b667b64ce3edb90aa12d0767ffaf26ff66385bb400979baa5c3ee284b05c0bc7e36ff5d1e28fe3b05bfa6fd8f92229dcd92e3b6526 + +A = a3bca39bc2d4394ad80edf2610b39577c23c58842c14065eb3a9400f2ad6745cd65ca5dba479e40af7301826c2945bd2e52f9733dc0ca4fb578d0552f5ea89592ca8a730a4e46f2008416a03f78ee1c08b7c5043774c84b5f95b7e77cd06aca2144459e06dfc701b750048d992712dca63bab10ce6c29720a306e8e172da5bff450dd6e9d6ef808e7b7580e1e35dba7970a4dbdb100f89fef04b9396f17c59256a9e8d1021f7ac924fb44537618f13e099ed08f701ef422f0bda03a46 +B = -1176edb6cbb3a409ff23db30990edf979444cdd712bca6d43ae41e56199797d28278e93f880d4132bba0968651d1278100a3b80400f3083aaa98392d4430f1af29012f345b218ca3d5cceb51802bc3a61ab51881c451711040c03d9e1e362e274af9f288cb00985e3da678054ff3dbb21c0a7ca1b6f0696f46de45cb4e1329c6d496bcf35aa23a69f9ac34fa2502c89eced548611bb9af0dfde3b6f088c7bdf4f1960f574f570e8b8ce06921108fc93aa46f405bd06ba2e65af22c03dd +GCD = cade030b377485b47d602166afbe94f938761fd442aea501ad6e8a2897fdca68586f1ed23815db3b59873790c5c2e3ef1ef65c1e28e94c17e64e9559b3a782ddcfda10f49a990a04baf876e670d38a404724b05d04e2bb29f79e9b184cd79 + +A = 171f11142e8d0424cd051b20072366a87bf5f3e851eaf3445781667c161e56d064228ea843c81268328cfb30b4d6a0d5bf92fcc501b3e0accc3ec22aad82300379ccfc5a20710337b966a7a47f4567651b1fd9613e3289abd72338b28cce3de9d17c7e15ba4b83261c4df893c3b2eeb3458a9f1ce1662a3e1045db6a76caeddc24095a072b6fb77469654dadd7027e2fba3cf61432ce069a41d44526f8744e0645b121bdeb49c67b1eb0a4b3f8b65727118411b534e923a825a00712ab0 +B = -10f8e0a9173613fee5922fe313fdbb186c793f0720b3685325f5d9e9d3eff55e85a9ddcd7cf18d4c50783835690213d51f7db6dda3c5256082a54eb0e942629974bc284692f02c16765bf24fcb8b10d750d3d8c7213980794606392f5d2cdeb2e47a0ca3e368c5a6c0dd51b5089589acd04a4093dc7c1ddc9492b0de2dd5ed027f9f8525c87f02a60a0d8ede88fc54fb0e47943619c5283d943356d04fb18ae8bc81dabeead0daf920ea5067ebe01ec314bff84cf75724b7b9560013fa6 +GCD = 1bbb7c874fcfdb04344f837bacfeda6846b3af248ccbee49f138229ced34943abe509e1abca5b83028bfdbeb6c62c25c4634f8e93a5e85463f1502855efb1acb3529520fd1d9129a57595fb56180db4a7b3f4f89c5dbed8cc3e5a0b1bc818a + +A = -52080b23d46b6aea8fd13266fa88e3520c2922dbfa5d0bf41a171a771fc706d0ec6a6b10d3bf324f0c9d14e8c052d890474de79afa56ae4493bffbd6b6b63ffe3b6c429a2390ab3086eb6165210b7d377fdc55538fbd228dcd4311e0c793b9913fed8f7c8325c041e48e8916808368ad29d1ade10814856a7098b7e0493021b5fe062b33767b2f70e2a41f15b314de3b48c6ea0f5e05f185a770e048e47ed820731573bfae9e6f40a39276194342284fbd0fda9e7fb80bb5deff89bbae8 +B = -56478e1bf5bc2d7a535e89911d3f3627d19d9eec6b24d1290628b205fdb254588ccf055f60966de1d44afdb604b09b9eb48e885a4523f78ae07f742a0e54ccb776cffe091985d9438d8dfe7b039c52a52bb6f8bacf9af67717c6b29f0d9ea74304563154abbf47282de78a821024b0ce1e3f1f51ea78d1da12b2303c320e9267b497c04beb1a5cc8007fdbc43cbc98fd7059a634c36e3e4fc4db9e25e22b95f228d3fa94381a166fd57be1f66b15989bcddc83fffa6aa5aedb07d7c6dc6 +GCD = 3e0c0b78a0745f7ce354771882227e6b99bac48c427bd6c5fc1c2b0529e9d39485a94d225141950475b32bbebed8e331864a63cdfb4a6aedfaf07b39eba9d9c4e8fb1c621c734afab055ef27f0d09f04cfd68d86b895730f634b6a936bba42 + +A = 6358c13a8109a6521baa86f1edf7f0220328cd4aa5ebf2c1f67e19e0fda95c471970f29af9bf6b947179bca14087ee21fd74fedd5ab669f9f6468fb5c7f9f9353ab5f3dad7ce3fdc4fee39dd6ebe5ee409c5846230a0998c9796f78eed6597679c39d2e6107204b8e2c01d403951f8c2728ebba705d0a97f6f0600bbb1b0d9349e111e388727efd7e88c65dc72aa6e77735754426e595adbf0230e343a8bcb52d90880c44b47e8ebaa37eb364b07cc3a407a9239d105a316f236e69ebaa +B = 1375dd747402cf3fedec94bf5e5a89edeeb2caa73494dadaf28ea66a337134b4727efb89c18ece039c5e7a3ffee63733903f86dd7906858e747a9cac9d50483132e4f879e295bc17053a0823dade577df8979bb25abf142362b7ce7f0e0ece154dbd82c702b801a6ddafe3a7acea146ef0be931fec3141e154941c50269519ecdd9de50d72da27ab18becb10af5de2f448e38597b15b3c7a54eb79e7440e43b3dbf8d5f8eca470713b7415fe83f3b54840a3f644dff80a5ddb38e220d2d9 +GCD = 60906f336c3627c181f538917cfe666e74c54ba93dd8d013b178a9d1b31afdf9148a47589872c1a3e68a27ea48490fa438f1ec918590fceb665e8eb6446c508f390f07bc993cee9df4ecd6c4791b2909cab513130f278f691776bb6a2e11e1 + +A = -15a7330abc9c378a42a04c4b798492ce327cdab32fdda4da62eefeb68fc271c9a099f26dc308058fee835605dcd763823d9f947042d6f441a5bf9010d4d9e6b26228819f053f84a8a767e9780f4761c693e93808573e556d7d034255db9d02882115f79ef8d4514143738e5b209099d80682815f136b04206a69c5ad283fc751899db529de2cff3ffd0c12a61ec7c15e6945526f25a8c5114e13e65bb801b4e7541566c48d8321f172d764db5f92367b9eda50844688d882a82fb3c0c3c0 +B = -ce07f69af6ad7179cc052051c99ee5e6149245d6d83797c466ae7df9223765a25bbeba50cf7973fdef40b16f897e06305cc2a8b8d490ed56ad88edc8751038aef620238c97b6b1f8c4e6881109ec24ca2a2001147e489df685ec24c3551a20fc1b8cf0b2e780e10e1a172220839a52907c6b8ccbf4e8928dd67b3e2d012d3a66b2f830925e08669552093c6aff84f9a15fa500696f0051c24615d812d98f952acfa2d473edbdbe41f265da1c5a8253f94fb394d71ac1a70f2b53ebf491e +GCD = b93ab0924e66785205e35349bf98be32a23346baeafad2b343a1a92d4748bdfc1ad4ed6b48825f070bd85b54e55028551125d3374ab572bbae5dae0d869ecf1094619003d52505edc54997ae517e1e0e3ab685f22144487d6d06f70d2a6b96 + +A = -10ddcd0194f78d9e9f305d69196f1eebd49935bc658f8e5612519386949324e4a653288339510ed3fcd0900a06efd20d0498822eb63f170d82e2f1d05b33c91428d225ba3b41be5d1f5101619f83330dab2635545d91bc349d23585369ac160ba8ab9f7d2950f0a681c3604fa7dc3026597b702c71c46a5243395e43892370bfc8c4f5d395493dbdeaa3495fe5fe3d4cebdf98914448947ef738fa041fc42b22c2e243d2d71d428f366b01f33aa95c873f1b1cfcc505b679343e8d53e5ed4 +B = 2de68ae2c1bd54ec7582f626ccf34ddbafa1230946cecb2a31ca2f11fbc40c4a1e5da8d125a820be41f9d7a39e7ff7c4bf4cf39d1a1bf4316b1a265fcca2aafccc672cd8e284294993cc1f651ea9cbfbae24c15bf2bbff1cc2f8222e496daf770a859a8766ea5d67bcf1a14a8612aa47f9b0081fcb28bd8885f78ca45cf092d0815eb2d9f7969f65074f6c7abf7cb4f0235768cb74898d9321c403ebe010bd23befd6fa1dbfa65b7fab3af9daf1eb9138c1032b6d9f6987cdb44c37dd1f2 +GCD = d71858582a93f899c5d648a159f2a96d2aeafcfc5521a999794fb41d9f6555972df70bac71dfc45a1548f8f6b70f56417c21dac390efb1351ed54da6bb50da2fde5438bc9d8bb9ab0f1ce8a83a81498300f091c7a4ebfb5bd668fd170010c82 + +A = 752f49dee1380f2018bbc5cd3f747ecbfef03d5987ba64a830a7453186f69d7196814efaf9a6a1ce85d4866588f2bfae03f6e2ab0d4e22d06cbf3d90d69898f10884e7503e821487e3a80ce76b9ade991db2c25eeecb5fa75d198fb0eeae483781f0ac7e9b51c1a8d8a48cd82fb953b180c263e18d9bc687371bcda75a17065a02e11e734e86b1ff45d0046c70252726e618fc30ba2dcc0fa89bbc984d4ec812581f2d59121d124f74ba96b87754e8911bbd83c9532f5a151186b4986b90a +B = -c96ed7194229535675ad89f0c34cf58c106f992dfdcf1e3733bf16f3ac0597a6d336dd09acc941e15f284018fe304b573f92139abc33634b677dba353b37e195bd7d7d3fb25debd96d0dbe2c5ce065140ca20e620a11af163f07d043b1415231d33381010f44280235eb0a47869861757724e6d583734f1c114838d3e9a4edc91ea15148b4e2fd460fd1f145cb4785129eb4e9ab7c13bb8b64814da8c8f82cf815c3676dbe9e378765e3df90d4715d7373c16ab98c749eb702e0e538dedb +GCD = 3c0f1a13934b1dd36b04e0840dd0fbbe485de70d5e763c9fdcb723c6f175c849b0b34f9e4b328f3600e798e14329e5cc2414344c3d0fb4cfa737b5f2db97b54c718157abfcf6d1eb144d77ed6dbc3a6c9eb827ac3f654112f63819fd8170fed + +A = -4f22885e92a59c6be618f2e23dd93fbfbda5756837d89b72ae36a99bf1f0903e5912aab5d3dae911a000b90a7f93d6ca0886a04d92f635fe632e20bcfd94879ec7bcf8d105f1ff69b1f0f8745bf5e6cc4be153d938cae44f204e8d95d2b91919e6b8a9e506e4731789cb7c157243084f210cd0664f88a2ea79fcebaa3409a4947dba2742148883f8627c4da184908b793a8c0eacfd5169f3af221df7c2abba84941f7a80297af5e0b7d6b7228deb7776a577f930737a0b8412fb29f8ee2f8 +B = 6ace5ba1d15e78c95ab6a09249103a06cb866b51c7cde2feeac8639ef52d3a2772f168e5d5ab4f6fa00ffee6ab67d5d05635e674c8e1904d9effcbefaad50dfec50f5429de83b75d7080cce4f19be6cbf0f769e4a570cf896405804fffdea35ab35335a67816bab449b19b0998198bf2599fd5405db4705f83858c07720324af3d2625cb479f5cc949aa2f323e7706be2feccc1cf146b824beebab309d969dfd4cb159c7d0fa00881cb9113dd97513b5261c2ed3fde16ac5df19240330369 +GCD = 53cecb07df45e50cd74e12eb97f74d1c63e5e2e3d285cf4c1214b6b097812a3e3fca40e7a4b6a72aceb7a8cc68edfda6718db1b984fbef2658067b5afecc7cbebfe35c829d193d75ffce416233949f610ae92c78e06d9ea2263c7632f97b359 + +A = -3e4362fc07e4fa12017301c9a4e3af1a0bd20a0f2de52881fb408e09ebbb4e8ad3d922851ccc1ae538e1c0c5a9e1322d3bf6d68da1c876a81d8639e2b60075d818d4f333d5f5d6026ce812e0df7cc4ce8e0ced7d28a98c553e871ff6b6da9fa702e99aaa1b53b126d777d8691045d6121e4cab7f5bd48737e927c7121521705cb92c46b1d26de708269064edf6ec205255601345a2bdd716cab2f04402355650184da4bc03ab3a93caff40943862b3d25d3fa6efb9ece6d366c63b48ef92e6 +B = -3d7d480b261903541fe6e922a4c6f52fdf67772ee0805b3ffb0485f4fcc55395d7f49c0ccdc910daeadc79984f8cf17ed5db9470ab61ab9681ff14ed7ade9052c72dec807e62bb26e791691712ebcab24843df7f64b22f8d4ca8cef028c32086778e570129d5c7fdd9f8b8e47d9830f7b268396dd9ea45c7402757a7597634cd25bb1582f269cf9e04f2f07dacab0f42c6ac3e35bfd4ba7c552c9d9f47fe0d71fefece6a6ac916e398a492d6058d3f69d93b4a1cdebea36d1bf6ee72ab33c8 +GCD = 19db5a143b0b59f4a915feccce1794878df40aab0dbdf6c9fecb620528200d59bd980f1e55e232c3abdde16631e5932e2adf3623af35ed42b4f7143c24cf5155198f61f57598254326eec0f0176d9deabf751d8ce501d41af24de2c58f8e6562 + +A = -1b6415af858a1d5723020b830eec479ceb72eb6b4005f6b1f1649999366a8b0ffe90cd8c3b6850c8494dbbf978a67313aad8696e2399d8e71aa665d68564ad1ae5c8315a648b1cd70acd316b46c08c63a39f71c23a2811833cf6460eade5e9d8bf154004acbb14bb19cd287c2a133e8fc229e84dea7026fe327df4f9c1156f605b03cd581b5305675f5fe406a8a5c2659a4120aeac6a7f64a26d553a59de17941f1db052e136ce385368d5a03c6f583a9ccdd84c830d6b06a665b0e6df255ec +B = -1229e2ad72228e981ca63fe686a4f296df232787f3053eedc5bd63a974aabbcea28fe76cbba13017d237a1066124d7f983c39921a7f5e388de21c61254ed9ea9bcbbdf497c62edd714305fdedf924828595335ea40394336ba7c5f530239d4c81674a03b7ca369a22b94548a5f45930fbffa471c5003cfeeeeba57a1ea3498f07da5381fdbd0ecaa3f210ce1f2aef7d657545e714f40445e7e311c291a5ef5d8b97f53a4508cc45e7b1f30064078c26a0115a06b0f879b55b767c000ebfa728 +GCD = 1b8d753b4e1ae6629d08996872ee4533b72fa44620162dfcd69d2f90ed26b14fb95db3ed72f0528ceffa28dd4213deea3aebaf2a4ff494159b9e62007cd78503d638e040ed62f9f785514b873668d43f002ee14d57ee4e5397f0cd34d04e7894 + +A = -116e457e99491a7ba2f413a366ec885a641c0f694a88caa83a6d2b2ae1c428e2e2f1702d5693ead0b274fff2bc82daca107eabcb801375ba7298094c1e24f58fcb8512d901284b901eede1a11ed28c9a66ab38e850c3bca185dc332af4ee78dafceb4d91a15bccf52d187395dfe5e98c30bcbdede97a4cdda0fa4454c2a9c14a283fe566d2b99a36db8839f9fa07dfa85af432a897bf2a7866567a44c5d4d393c5359247f11b1c228478d790a99d50bfa8de61ab3d41e09cdf57427bcb62a24 +B = 662c90fc7d355e284a889b957fc53fce481b262a6bf57a056fbd22379c7f12d9f033c6f062ca15a56ac1c923038dbf1c50b10739cef85f4df2f8d4429fa1486951d8be614d5cf6f525931c518926d12f96eabbf45774a93127c7a918c869f0a03285df1d378fd0b107c701f0726efe0b3613ecc435459128867ec72237d0da2c00fd941da335ffa143560dd2f6862d9c19488fe05a71c7902c1e22a512d1881f37603a9796fba1dc1522cb5dab52c3713e293a23969debf33732862a87e6995 +GCD = 115bb698c9d06096fd6b226f31b28ef71f3653888f3107d418f35c1fce565e4f81bd4a3f1ec25711096f685c24eab8f6ad31aa394e529b24b3bbd14f125d0c30904aa21c783127314f9921a2deab725860e8408a9afd7e2626280be134edaaf2f + +A = 29a3589618ee0b102c2ce5e1d23908b3fdee7b6c767a6bf9584861db17d748e364d98b731c5da72fbb05b2d8e91ba143a23ddbbb3ff305d5a1d92a1993387f847e308543352d9740ff259405f386dd3dbcc7f8cbd0b1f568becb4548acff28a0760e68af31e7c532d8b30e985b738edd351acca267d8fabe97bdb0be633ff541de8c3973c107a41c2f0a89d85158e9cb999758107568682ca4c5fb601b826afe12ac4b7538d9c728552abe517a3859f9213608305dd861365fc44fbfed3b99e +B = -1508f73927985af5d351c23ff0a8e3ac402c641b111f01d17c36c0938aabfa6d5edace3c83de6e6ce491aca87dd2af561b2672602b9911ea15f424ba1e2d50e37491c5bc52fd02ff50cf6bdedd2649c66d92dafea318f7ae7b3724a3224ec56b6e585440a0a446ddd34871da1bd3affe736e862dffc324ba9288177c3a4504b8bb2e21925abb772c0d58587fb72471a13de67470deb576a91bca1dd253ea4d7f8220902bbfa8aa2847db00d2c78ac60d7951693257553b8d4087a91a654227b4 +GCD = 699a87037694c8e5c46eb62d692add1b20f7b62eb4a73a3269d800030e0106a4365aa642af842cf10e01ad599999a8ce2d4cbd3117e5666e60acb9d20223272b6ea548cb1077d4a8a92b0a9b418e0c790aaa3b71f91f2b2a1769465e8256f6a6 + +A = -3755bf34cd5fbfd07147db9be999b5e85f010ca9ac457e9aa5a8dd248aeacf2209a368aed237150d62cc22cda4aa1552f98604f7924be80373807bc349a87d7cdda2b4921e9d016db3b9691b6017d3bcd3e30278c0aa274a5dc0a25b81f3c31b62d1effc2bf4dec4cc8ccfa9444172125f5921e42528abfb0d752a098b68555d68c669fe71ebf65c30623a4cc6ebf15ef9c2bb89f33b6869c048c5651b5b40ae10f7b113dc650b430327f32552e6d4c594b0a00daac99f56fe2e87995619fac8 +B = -605774f39ddf7883e6a5bd13cd3782f4b60247b2f5df09e77b7eca5b7d8c98bfb1be397ccf7dab73d8d4e432b367fc80a55321bab19755b247b245eaa9c024b2870296d7bdd32eab5b0daf5164600a4c7e337e334836c10b54053e787088d1267d5b83644f8ffd29e8b09496b7b6a4c9174ffcc7e477fec613c13ee365cb262e1e3e7a991eab31a2bac7ed48e9ce1e361f310667883a9a8c803ac5f8cb572c6c8e93e98c75e8aaf929f57b902e48ca56821cdc6a5e1c1a4ebdb2df7074a5220e +GCD = e1c50c4699a8247d6ec400ad7a8b207b52ae8766e3555e549e248e10b18f06cbef14b0ad4af33ab311e4f2226c2bbe25b9e6503745b60c5e472dccc7d5151145c1fd9b86607cd6f166bd7f08f0c51f8e1f39dc740810bccb6edb55bb0b647c86 + +A = -13031a3a39b4556011b08769bb552c083b219b8c03c988cb851fdf26a5844c2ce0526e34f27605d06d2afbcb4c26554dd2a8e1af51a8aa30c972f3f63323342efb342ef8ae5ffb7ab21df7d39fb01d911c73556235e7ce1c7a2e0072455330b03631ed077e0c037f30d133152972d210bf458073bd98e091f5e2bb049485e44f23443c299a02ab4deb2faf70a0daf42d4387f40f22565409a3a885a7465e694340336063f5618af9789afa828971bacdbaed05bbc95ec1f09c169e13147f46800 +B = c50d9f77cb2cfc8f8b832888d34e103978fed3f8db588b201748f9c3a3bcd8030336cf99e48cb31d0cf782a4bb54a13fe74b2be8d11fab69df21743faa6e58b6c4d6fe9d8b21ca8d8dfff9d709e6a1385aeb8059aa7798d7b05e54b2bb531a437aa2c691919df9824c9e264ed39511fb1a8497f71ff7322226a17c87c3d00dc23346734203b94d84caa2cd458b6568545cea6ce6ce629f9f5941f16ceff4a0c4168e1ac182e849417912ec07ae14d88c64c7c63c396548fa7da0ae115e470780 +GCD = 18cd3d0767e7995061a510d667a5a2681ab92d8ea29a6b6ddce87ae4401a3c02b535d410d8b33dc66e97cda209605b3bc10dcc3b5cd2aa5c58d4266faf25bd9592e7ef85541dfa49a2ff20bd2596c729135d1471099ef4d75baea1ce10e05aa80 + +A = 2b5e7d009b59ffe20f0d376c51c3bad9929925b029ddc2e9cccc213f1e5143a2992ffeacdef5cc6d337afec29402c8096738d62fd8c46a0991225fc1015918f4a581f4336e6998a8add17123d8d69314c0874c744bb091ee2f1fba68b5e7bfda198dc9050df972bba863659d0ed344164ccaea4d7dddbaf37eeb7c3f310463b1f3350c9dc6924bd52f168b59c08b144da1cf2e5ae00f55967cacbaf976c1eac2a35dc26f8b81cd487aaf7075e1ee635f78e855d17a142f8930fe26911dcf34044 +B = -457e693ec38b2429f1a17a0805f129436a18f69e31615e50f9056320f8ca715b58a2f44dc7336951d070b12c4fafd2f611ab2ce52a0e1c55a46db90b626099047426de73aa9abb3951f5c31977f2cebcd14b9263f7dd2cdd7f121bf85ab7fcb6945c979c2af06acf8ff9a52b6d4f8c18008ebb59da98ad6c9de472c42adf3ff6f526c501b87efd69f48927284f9ad219080f923fc221a4f45ccb4f4d12bfc6b06ee32009baa6760dba8088383090219a0eb64349209274bbef180369b5ecdcd0 +GCD = d8856ee87419d6d67c402017f5b22635ac68da342cd726702afef116c964f71acf654ff757e2f41a26c0fe1a6192fe45b217c9245f4b64add4276d0e11a03ffb4a303dedaa8a3280abac053ed4ba4c80167904ce45bffe4d635e61269c0dec9e4 + +A = -11faf74e5de0661b17b47a5048195ca4c7bc6082cb3e0e63fb1cb1ed7e31ae827676c7fa0866b69481b7872daf2c2cb00a6ccb9cfc224a86a14746d5a67d69a8ea92b9927b3e032d1110979b4741289f4ff276e45e94b0e198ba56098605af5a1aa1bb3f9659ff43a8229e7bbe5e0695499b11b51890f552894185ffe211a45d5c34389ce2d5783cdc3e483223d61ac2b062fdae09c1b6036b10e77940a4b06bfad9e35820d0bc51a6063ec6e0e3d0c1f544f4276ef96711dc7ef8b22429df9b88 +B = 102ea6ddda85e06591610d8165cdaa7cbd61811743d19b73b5df51ec5dcadcc045611241a1b987e2542f2a0400939ee1e26d0570894a37eca0631d837c19500851409c6cf69796a5dbfea92d4a213646a20e119662cf84ddd366b6fb245468f3d98b2105f6f682ecfefedd6ed53b99bafba61f38f487f97b31eb2564a1d71ed7116265b14de4efc1b027b0bd5df1ebb3175d5cf92f1eb0920bdfcd10781047853960061cede6d49d1b462f2b8da0bef4c1d6052b39107ce2888eb1dba734391760 +GCD = 37a9879e5f49a9fd939cada534434a6d19d1eccf974015e0304daf6c66c05f223bd7f9526d8de078dbbe587ab1ee9ea4114fb77a698c9646ef1b4c85092f8459f2046b6dddfe4b6e3366130ab41fbd3e96cf0139c281a254bdab1c0bc02d344898 + +A = fac9b74e7f36bf643337fe27e889dd6a024ade0958eba72095521beb91398ce01ed19bd83a44f13076f30a21c4ad7ebb6d74b62a63e8fd458baa498f29db5a3fab4e55b999fc2a8954be04937c24b6c4df8ee1f1de61fe9a99722451c46ce16cb875fc393e2fd9b67c0bc8f712c4d3de90958b2106bd3c7d453618ac0b2bbb22868e22874927f1012c99915d52dd28c116e21440a841248732e98a3eae587e5dd07409dd9eae97d0a9272c1a74d7755d1698c90f1105f1ae1284e73429f396d84 +B = -445cd6efcb3f03d125080d2c67d7f8c8bf618de7da2133e34a77dc4553dd458318aa34b6b4eab4e1988c43922ac339f1826db141f1a2fb3f540beecef7f994686621d1531101451ba5b0a05c4ee39bee690f6ce76f7bc93311bfa436865a16cc42a9a333c37233a2335f974c8807ef69d9671e0bb5822a0cfb11ac1fb21d7ec947a4968b399539c4c8a07f9bd64ba8269cc1ca8a567f9eda05ea5f0dd9be8d44bc9d61b5bdd0eac0512229279b16e8ddbe233e636a7a8db5db44259f06f49473f0 +GCD = 97f75404f5c9ceebf7710e2092f504797e578c25efa278dbc785740c9daef899539519e45bec45a1812a08bfa5c7a34cdd9f7f8df8dfea1cfa15fecfde7f3dc24b93750a7cbba0b1c378f00591d4aa899e139e04f6542db95f522b816aa49e864 + +A = -2ad89fc1e2f64e24a1b124cddefdcec53f6bf8094e681704c24e6d5e381e571fa516046494705ba52a858bc50d72ed7143c5a2da8465aca9f9f5efe240816dec908d91bafb959b3958a8824c48a27a3db56f97ced2beb16295cac4d292d77e092365ca30aba14e12d971250575aadb3f743ef299f72d6f0ba0a04c5621325bad959a883cd69c70710c491bdf2cff53bb59e33ec7b04027691caa5a0f119c213d5ae6a773649c7bc10c7754215b0f85850218d722cdb1ba1bf8644408c81916535 +B = -3579eb843532f8eb9d7726f041b455bccda78bb12e9431f5e4c95d98d3e7d58c5272fea65cd89b2e90cef492044fcc3baa9f0a604bcd699e42543aaac1c769c13152d995c55f347ce3448b6fc308b34f2aa252d574940ec7c8f7f1f3b324aa2cffa2e4ed8475fdb610f0f2a7e9f3915c90c9d91062b44a4195fbfdd3b8aa19a91d3e01f982fd3465e2851bbb7e8ec3b191a16e63726afd3adc6d2ed2f7e1abd0748c8ba97ce07e61ff3c34ae7b5b61a4c03daf6ee8ca0b8cb6c29d920594ff120a +GCD = 11c1456db647775e9ddd34b6cba2020ea23010d94141d40100e1816c546af35ffd05f7532437719475e39ebcb09910dab940ff99c432e58335f10f6c783769dd0c7e837c5d335fd4e3967690d4cb0b8f6eaa780c1d065f4294747ef842ed70e12f3 + +A = -7940560cdec3a4d3651d74977e0f3f76ad4bfda3ac9c7c3a8fb2883e4476d9b5e6b10d55437b262aecd2abbb9ac65a7315b56d43f4858b449dbc1b11129d9ccc89442f93889bfb691bceb80da46d2b60ce94cec4b8545f0470940d92e332cdeef2da73d694d0028749099147f7672652f1265151b1a5f767a20f5abe0acf0d50e9a9808afb957f438ff79484215920ebeb156c65883901390c6ce71756a7da0768e6122063f4f5afafdc527fbd0ed9a07a72aa6a19222f06350c92dd996d6b428d7 +B = -16c10472f2725323b0cdc43b6f4093ff527c0726c65713105c0cf4d80e12fcb8ac621ae31eebc24b3d87f7d1d6738ef8d8bcc6e065a5602c2bf8d04e7ef8b0c6aa3a66d885654cacd5aac9fd0442eced9a08e084e8e17dc14d4948e507329e91abbc5ffc7f883f69a06de0f967586edf17c4e03020fbb1ae80049ebffcf5da1d73947e0b2820c40d1d947557f11d3102972829a00e6218ed9d55a91928471af02945a909e709bf9a5ba1ffda783c2dc9a1131700010b817a1d67d9e706e139698ab +GCD = 3e8d7a6f7c3f8cb9004d43e8a8c6721f228c035e92cde92f1f0e27237f46a171145e5e36a9ba2de9b860f55794816effedd4dbf33f9045cb4598f2d500b6847333affa5852c8a54f87168311fa9f5365a49bf959c744e5d5ea3b2afa494348efd9 + +A = -15fa44c71af239325e9260e4fbf379f00e67de718bf10388d59e9dacabd2b6a6ad3d39eaee396c39d10e0b991dbb91ecf0afaf5c1f5471a637d2dd205989e29524df9123b43432d7314c3adc6e30e56996db671dcd0aa4295233b92647ac855778313b7721d0f4a2009a34c819915366f0db4313ad78db4a779088b47e902f66d43ad005b4c9c451ff64917afeaf21bece85a540ba04f999ce8364e60d08c1ac88f2cb0ed8312a8bc17387c5fa42be6ae247a46af677a701672a5baa423e1e7e4fe5 +B = 95a309437fb8b0ec7a4b95f54e7a297e71ccebbaeccb3ca21bee8d04d255d9b1a2d3f7cf2d79b75c7d002d713bf49279ab16d7bbc313dfded5d67cc9c6edb210f80c193852409350b1ada2547879d9a6f232ad6f0f14bd8ca7ffe602f3415560a5dee83a98b0a9a98c4728e4b5cdb2299a0806ebba850f51598050bd80269e3cb3555394acef71e9e2914ca61061ee9edfb6ab0b949496abe1ee14dd0b1b8dd3090f62b6bbfd634115e5d2cbf471432dae9f96e974215caa7771e84abcf57a8d577 +GCD = 7d78e98677795446e580a2575d6f6d5af8ac073bcb41f712cb60a83866f5e1f3271b0e502206e6ba5ed4ec7ccc844237dc08496b27a1484553a72ade7601d66851f65d927a7fde908afd682b63275aa3bb9b8c34d574fb1852e46a377a0f39c6a7 + +A = -4fb36216ac23149576159af96915337f1ce472c924e375590d264f1f8bd8fdf921d7586354d252513fb4b62f1a5c2eea178c8f8485c0af8de936b6102d2433662045e9b980a16c4b33ead273f3e8e1e92d380e391058affe761e09353edecd8b56fccea8d8afedfa782b9884caa033d0a47db5e19e2cb374da5eca60d7398e20d1f8d246a2a82182ad009d517f733ae8bc4f6a282623fe34cbe5b17c1f0de356cae77b6a42c92fc9fe8b31fb7a26a7f403edc2657feb48e49b023e1354b8bfe374d4 +B = 1ebd9bb72a46b52446213338a26ddb6830423335cce495955209ab8a0caa58b839fd608d5c046374c78ef45b79802bc3954cdb5b07b42aa3b69e7161a21c1d1954f4bc74ad5bceb0a4df21d9ece603bc849d68fb44f77cf36f9bb2f054309e9fb02e0477d48f122f40d14d445a032bdf3e3f9d17b0671471e72ae31a301de3655073d77f76cfffaab30b1a636753d6f9c832dc5bf632ddc59fef52bf2daba14ee90dd56b2cf4c2edb74f10cee784ac85f32a38bfbfb9d0cedbde5a819ce8ad7804dc +GCD = b10689a4b5ad275a4bf1d70bdf4af4a3a9e23c2ca5e2e152bd979bed923bde249be8e63f9690a138cb56302ad1b040d430b1234069fde127d2110eee5982ce8577cdd6f414524b240ef879ca4b4d2358ebee43bc33c194e8a8301b1cc648cdf0d4 + +A = -997b2a54ddd367301ad8ae5c3c9fe62b4acfba91553a35c9ad42ed20916e31e4750147d7b7bc7dfa58dc0e59d4684893c9453228cf74cb6666d4e8e6e31acd8be307e899959a15f31b300deaa5fcb6962e37c0e0ceef7a1f183ef4c38eee7962bb593b696ad0994b18a874ae033c5a12f5f2c7f021319cd571de566a80c27d24ac325e363418f521bab77ffabe6c564edee6048e72df8fe7b8a75bb7715a6ba62627f81e8f36ae0d84d1e612cd25c9878cb320d648e2909c535d85b4ac958d6e6c0 +B = -b67b0710bc8ff145a49979a7375232ba41973997074ddac30f8b3f348efc98d483e5f63b73ab4fe78769079a4564dd04d49c4420a5d3d4ab0a25e27cb6dd5574d2cbfd164cfd7fa7c2982c5268358de8eead68eab73c46ade9144ccbd46a6e4b7c6fcce126c44af7d706bcb978b8d3c3e0b9ed1203fe541ba9807564e60e7e44bcc4b872ec3791424ea693311ffd0d6a21f2e7243a82658c06897f28f9437c3248e91dc6628e0e675698ac0c5844b1e0fba1564e7b1a2c36c905b57769794dd00ae8 +GCD = 320ce00900e6f2f432fbf7d8d6c47f62a951673aaf76a7fa8d361ba9e968554eae39c281759d270c9b0869448ef6391d39758392409c9b8244337830a1e8975b53d71f8866c6212bfd34ae016469af33dd4ab7821266a1b4937e659e74f99799408 + +A = 71aa7d9df45dedfc873eff26285941097a2c1f12f044cc6fe84ba6c821a3026e73d67d2a8eddfe43bcf7f0faa0db9fbd2891019cc4edc1bf5f4b4dbb2bf506c64349284ddab7b4b4aa55d79701a856c46f139bfabfd698a709101e431328db2d006604ac624b7cb00105b84fd56e42432e8bfd7db568d2a41702eef95efaa8936d2b799d96c59cd152897f642eff8032f5c04d919b502e81e99beacfeccdedde065099f43cf77c61def35415961d7e088aa2d54d76970496133a51aab1c59a48e2ef2 +B = 477f8fa9aa3afac8eda8083825f8866fcfaff5a90567510df1d271bb2572c38f133e0c3e071831e107587c2baaa1ea26a426885f201ebeb3f4cc3c07331758c6e240f95480e312653187b532000e6a906b20c104bb42054ed4374d0f3509c6fe54675dd556b8432f080c087e1a88de58b65bff2f9bf2dce541b3e12c7ec73ba414d04d73bb2269562970ee7076a380c912e9427b070e8a4cd7f2454975092d25681f4f7d5faa29c02a12531afbadeaf93cd67df29be8a1745a6b0183e1452b61b8b48 +GCD = 67adaffdcf6e6fc974323336f753158ff91837a5f156dac056d4c2e30e2c9b96bdc990097817ebd6bc5088c4694d3444781d0b8054b6a24d0a1db1f009eadc5d6acdefbfcbba2db0b4ac819b62314af48fdc0fb5dc15aaf313900a3bfd239cbb596a + +A = -109bcc9b5acc608206d9c03c1c65bfc25754b6896836fb415dacb87d3ca79a1a5941f9beb09d270ae36e7b9e36abe396a40ce8d50784516a06bf1d4b20d186ec32ac4ac554d268e25914a06eabda9086ca7f2811f59fc3a03f421f293bef714813737db9c077da606ddf3bcc5b494b6bf16d1a556fc7f7c9cc3005be39c61391e1cfb63abcc651cc6a77147c374be86ea4eb9a97e2472c51a7dd35e705825baf0694530e69289c4b15c4cbb347e33977573a8b28c9e33a9eb882840cf566032042af94 +B = 16ad52c23583867f853b8f9847e0f4ac758b12b9ecc634c51bb010511b54f858a849d236d5f7b22c02856b47f7ee7549f6402bae859f1bd0542dad481ba826f5baba64cfd906111992addce57535c0f0c8ee0d1fe634e08e1fe9a793cf84fc70e8b9bf8b0a0f0bc14d5d84927b4737d1e97eff6f779767879938a9ca4c5052ae101895fabb8580d0e974616f7e895848c7e446f28bc139bfadb56a8b23e7874e6a2e8ced2dd7da7b93a2490f6f6f4917177722158aa243c010b2a0302044b3062c0c04 +GCD = 1ce060fc15a751ced9a3185743d1ae21df73224a90eb9786870dbe7db9442bccef112d713a1a9d2d7a9d39d9a6d4427e47112f777b0505030bcc4b514872fad8fd4466830cdf0d76f1084cf53768b7d6df333605243dde403857a1d8e08382d074cc + +A = -320d7663c393a90592c5947bcf3891d2b78aac9bca762fe79c35f7ffc3307e53cad430065a08f487da1d14fd6a1f821de83218b3b69a560b1ebb4ad3512bc7888c7e56fa31d4bf9fe1d001ae71ec5927a291b2f7a81721293f0990d7fa5d640adbb7147ffab0d2f8abc62be210ee43e2a283de858ddb0662c6f780ef6134bbe1d078b70f6b66289b33b108e3f1da3ed60e35e071e6bd33d9a80b95cdc2baf333876356562ddac9dc832526f706f3f740eb4cd88aaf1661d5ba55780e0e375fd8404cfa +B = -3e61a205298e015adf6f85c5cce0eeb55017d654ad457969fdd40b8897e1bcd579a95253efeab59a6b96f6775237a8ee1e12e3b8914efc9353f39af123e1bd65d6a9de28d9ea7e09b7d8f8c2136047ed4b7de125468f0c3fcf5e7af084d420513ace61d93b69f1a0f5443f371db388a5a9e560fed09c2d929b111974f8cd67cfa0610d06c403cf00f9cf6c946ec8d62fea43d0709465890a47a16048aa45a2ae9c7dcc061e0b23a21214e01816813e5d3a46c7e6acf92d4d190c43ef3537103aa16085 +GCD = be2427bc76269ac50542be06f4938b86528950d1334d2218bfdced9a66662e86910d82ff50725a97fb626484099109353b97fc32d01787d3e2ba308bee4ea2c8c8ae649ccf94a3e9b1c53d98b02319194927704b904316ed37a2d77df06a0b3c9ef + +A = 5cf2aae7bd0d43aaea244ef29ff5d5f78bddb9c7ea633f96642dddfc4a2ef8dc8ec290db003f1d11b3f90d03b0b25234d0d7073099ef57b9b177d13940c41a8d9c3bdf0a7f84948309f2a84d68cea93e9cdf96ee3c9e6310d425c0b03c40d01bbc7db7e4e5e39371d538e1947dfec6b2cf067bd99625d37233bc03a381eb41f50483d9efb87b6cb03b838189e9416fd0d1c64160ae34cfcd2bbeb77c630db0c571e05859e5cc31e398c9cccfeeaf6e1ba0f5f70e5c0fe199be108ca3d377b5c9128de4 +B = 13b630132e60e77e27eb67ca5845a3c48068d02598e6b0b59307ac26e5e1315520a71a8d360933bdc02a1aac05234b8d7a518a44e29b322bb32d466215ed1fefdc3071e0c1130f2c8e2c8080b021e6127b3440a395dd67e1f5515b8258a0b04421e0ab5600cf8d4cffe12fad441aac330919daf551aeb88069bc9d5fbcd0b364e19e0881c23230c29b291c7883d76f4fa0e2195b87811bc1aca3210c256ac2d9ce7ccdd0643025035620ee4832838acd4e4951b675cea702bb15ba8143e0d721282ddd7 +GCD = 1d933b6399aff53344bba97bd6cac0fc8e12028110b531cee84241c054141e551158c242b12505af5424a68487aaa786102eca79126e277f92dd5f4fdc4c99c97da9420406b050d1ba9aa190ea192c2d1486cc56d57e21a49d0413de50822f4e32a1 + +A = -3aa9180cd6688887184eafb48dd22dc230738306f3b638ec8ff2b3daebd0fd4c5f811e5404676bf16f09338967445d154c1869b010e31b2de3ea21dad9fa6ce769e983960c3417122b3193d079b5f2732e59c6d8f7b2a6db7e889656ba005ddcac2116d192aa6952db7e3d5d456500140d58969f6b0a45e3d7ce709849fca19b481f9f62dbf309536ba07e2ff873ce5c5e2ea61fc1e2796c0bca9f90f61505db8b177991402c19da9f99ab3d83e4c4a69d41d7b2944b177cbb7cb182255f017cf4eada0 +B = caaecfcae71cf27ab410be8281378b8d7f4658bc3fbe63ea53a7a8bc3488c2ba846ce8584db7ad22ac923f01ef5856a18e5af2e1b1f0df3631838f252b139a6b08f22964a949dd20591ec735f8581fe46e4b33874613daf5e2c4d768698f966518ca56e392e5dadf6c555c4a647fc120ea2a8fca0bfe1fe1d706f25c2ec9df8aca9699f21b31bdb48ce805c9a0b05d498a764393b9a22f95d64c63db8436ef4477cd0e8e60e398662988bffb3ffee5e086683e156534554402d4fb692102f511eed110 +GCD = 26476f7570e0953dfcee79b15c46347b79d9400c1aa0c03c18100fdf8df79d8d9bf1bef6941cc969509f10b144fbfacbe973534c1a34006fb76c0beaf6dfcd90d36dff75027c218eb94ddbb130ad240b91e30099ad1c795248f321c066ec9c131470 + +A = 11b7bba00ee2b94e3eeb03f89b40977e242c37a13f4284cc70b91f87e17d905a3aae5b60d9e9506c844d3d81f6e204d4d57304e690dc17303dc9135d51941645bcd47f62e97059d4da29dbf8281e8eaef04fbc9736715530c8cac368d5b7e305400bcdd20c7fbe35da2284d0bfaba3721809dd6d9a07aae45e356b1e686031785dfcbad42c2d44df90d1b1b56a60547d562d0b54b41ec7589dc3a5dc92d6c3303b6c5c7cd7428ddf5cdd9b4aa2bacb1ed90109ffc872d8bbaa9cd9fd884ca34fcf357e0b +B = -d5b633efb032e68149dde2fdd02cada1c687cce6635a14b31fd8a21e1a222fd307ecdefcb34d521816a3ed7db3662270f8c20036be798cf90098a40119ad32b3a08555970cad50ca5923028da9fd2efd64c7f4c4da013c1e8399f7f8cf3b99120dba559c70ec4ed8b0b2b4ebc6bbcde716f5884e3af177901e8be6d2f19cf13ff6b0a893ce9397370dda052f873fd446d05bd3de3dcbb0c87575c028fbad95a5adc6ceb149d7da19934965e4987b6d3fbb1ab7c047a94358f7f3e42dbdfc053a7db1249 +GCD = 5659d551ddecb6ccac3466c4f5d40d7be89ca7f12452d6728b0ed63723ee77588fae505d89ca2283ddd59268267721e7d1f5bd1e82a74adc141db003b6ac217cb60c00d99240a0df6aad7b9fd9d8b1a8238dafd8589b052f5a457ef2aec4f8f2dd9f + +A = -695c26f5e9a7f84503f14b165d8458669d729db288b143a3de9c32c7ddd1eddeda69f6683453b49c3096d572900e5b740f1174bc6ce963e3308af5ed13721f035fb3471f146939b9130fa6299b8eb23391848aa1dab850b1c4ad6848d72429852a8ad324b57ba400ad888f9ea4d9c2710964cdcb59dae6a384ade2e9100a48205d2d5082b458f6d950413ce899251313f929010160199298c8ebedc791e020e440ddeb155e0a43e423e2227a5f10b6b2aa142ae5a2efc8a999eb8088a4a138dfd717747c +B = -28a8e610b170d3b246436a6882ebc62e05661856149776d260cf5ae4e9956bcdd0fee765b119bac20a308ca4fd73bdb8c5f72cf3684458395997012b886e7556c40e343e09094246d968de4fee47819a365143eb13cbcc5df1fd6ab98bab489f321ae77d3e4cf7ec7f34555a35e5b1353c5bf2965eb62aab91f2eebf65a2f25039350ffd710bc8d1e66f857adc3e5a3edbe6e9bf573df78d2ae92b13d8b139849dd7571b1ef03f31177c88334422ca016f90f303c4e4286f298128d42f43c518876f95bc +GCD = 1af5be2ece28034dc8e6172ca51b10b1cffbab170f13b1b3f3573aa2432f192cedf63fdfd291399202027244097fdc24165d417766d73e75500a580cac20e3e579f111b58d672ecb12a0bd3cff06995401a136f2deffd492b1d741cd8a5ee11227bc4 + +A = 1bf7391a6135c8a61a80b3d73833050f7aafa87cad5a74be8caf6222e0af6cc68aea584192ee4e640b31495a4981a5465b9260103cf502dd3559b10a9104422051b6f559cd8000c9f415d218ef19fc09f7a17c98ad52bca1ff2459d7ef13bba4b0c802c28ce4f65dc0b2ea89875d3420aa23424f30244694f7365e094e304e65d149ba4064c85e3db83bdc3ce5a5eff5eb4a05ca83db90e355375e7e58a9411523320926dc3e2b6a58d663ef47085239f5289dd0f5df6dd4c538b4245a9e0cdac3074b8fa +B = 285b79ffda0687c16cd380dbb6a9dd14692b1ddfd6b337c576f50e39cece9e7b45e37564ab2c57790f231f0697eca517ea455abe444f04312356b82c9c0ad2b8aec3d2b1d4115ff6ecb965eaa9046292e3292a546513eaf3ee030814b647b21dea92c3cb574b64ee8fe6f8d7064269f19f5b86702d05d92212c2c1768dc5776e54cabbfa2041b3fd7e54fd4c2cc35d73d283f27d597b40d075740dead24c2702c419d702ed964c1e9afc021d9a51d9cfc412602854853f669b8c909692866bdcea1ea0f0 +GCD = 1f7e11a8ce42e2f739a9dd09d3c186fc24be1fd22261580d491e4d96f70b83db80b91c670d7e36fc12e690ec7777c72d11cb0b76459609dfae523def75d4484d030dccf76dbf033958423cd05822b1cfaa3a005deba7584bfcaaf996d78b7925dca96 + +A = 39e4eefe6c7e509f8d47c39ad468fcda0a2d2442ec94d7789c62acdc85eaaa5457197d8b2d36b52380d4e30ff3fd4f31ab6f07ae3089ff9ad70f1bd09b6b4982c9fbd68f8fd1224dfa16491c7435f7edd894b6ed9798643839b622615a5da088b1f723cadd3b743ef2bb30b783aa96cdf42ed9788cc959ea4757aecd8ccf77cc0688d0c79f77de623a86ebb4825b7cf54d1c278928ba37b976759c47d0077f5621c0d091012a05ffc4a51b52df1c6bb6b367829d8f72b3d5b7bd87bf85f59b34d4d7e8460 +B = -1f9174affdd8c1aa322d5b7b51f88d48e28894618470e787e8f3f2cf6a201848e5f414ef23bf5fb42811ea888cf94f19a5df110a8497636b1b031eca9958ee27f86cb483a0290e1c0739889b71f1dc6fd51151be52b5a43c7e5dd6415245384875172da04328f57951efe1dfc7cf2716bba73b14f7744298f17d9b005b5df2f30a28210ce479f8eec1011b8f4131132908eb13e618398c758718b5585171c60b7f8131b36b58df19a38a441eded741e3b35ddc700061aa6adccbb1f1be3c9fc5d2b073280 +GCD = 228140e4dd67e44b6487826dd57b30892cf69368ba0a14b540bbd13cb45f776763163196faca6649be8ca338b7192d9089b055d9498ad5267f201ec35bf24aba9ec390cd2b035c9395aa698e2f5441f01c2d7eeafdb9c3674c26145cb98ce8d2db2d20 + +A = 644cc77d65b67b61afd6fee8d89cd9d00ea4b543b3c16b5f33b957b8324e8799ddb135bed175b14c3e5740df1beb7bcb6bd205d341c43ae5f80aa62bcdcf9d6a4afcae3b854f0fec8e173da51e67b027ccac2ec3044c0d0dea2d6a23fb8068ecb54b3a33654298fe7ece6e5fbca4c10b6cf33b2c1194a71dc5ca2ec6bee3cf91dd3485406f94681e3c63e8a9be439d218bae8ba40c21f8c007cc2492a72e83b2015e2f6d7a0d5f7a3a4403acf1dd11690f1d600a02da88ddb5ac9407de26746052333f4cc +B = -158edd961ffc597e66816ccddc1f5704f160471f0415a41164252309181c39c02269f423978e32485ce961435adf8e987740e0d2021c9ff19e8374122fb87043d59be33fe3bd554469d2b35eaac461ba58dc5654f863e18d666b17e6cf3bfb3559937d99a3a2e1298203184d1d90842709785d13d79ee22e31117fe01795b2ee587e78734acc86e0d28688099c491103d1c78416cc6f40b084c941cb13353d358606e9d535a361beb727f10615ab2262bb2de2d130ea21215d154c38651c269af064535d0 +GCD = 5eae6aaf79de173ea82b71dbd3af23ba52676d8054223922891bd993ec57ddabe7e8ad9616d3d8a8d601a5d7513b332df14adcc699bcd642a093b2806a42f292ab186e2edd43b1c5095dd89d64fb9e6312fafa1a7d52e06b1609585d4a1fa50675efc + +A = -422c530adf6e4cb7d955842733b2e0a51761df56ae8d40a2ef13c8452de64cf12be8c8c496f3f8dc6155fe6bd07199d2922b98c345dfc4de57ae8c4b5157f9123e961bbe574cd48b5d9aaa949b26a0079404873bf1efbdcad0f1e8002e24f8a719f7928a5157c0c4ddab1e8a605f23a68b8a369464d36fe3138991531af0490f1d446fe389465ef60c650591b9ddd96669ed6e2980b43d4f6e3570a339dff90d5b6b215b179bc039402b7395961aec27d93549ccac1e1b14fd2efb4d5102725253bfe9768e +B = 1bcd86f0cd8cc8f2e3b282283ed15f8f0cc75c28732d01ab368425d2215d7dac3e3a4adcd0b431db4a6bf790835413d0abfbe832956d791804596db415508b17ad4aae9da3e481286806777c3a048261d3bf59cc48abffd3025e9ea324797c374099b376bd9d7978ba2d0a3e8a622ca0bbbb6a698c09e0dd4d8d4b434c4375a5ff476ecc7d77557cd3e61c119c9f3c64aa27aa3cfe13984ccbb7a270d57aa5267e82d81ccc471bf23fad29b9521df3f3ce702fc4dd52a9d5f46b1cbaf3fb497efc3dff0351 +GCD = da26cd945d466a236b1c9b36afa60a1af9bcab7016405814858e2c954c763ba9cabe19adaed4fef51db1bf91dd415fc200598cd059a34da861502330db764cdac3c52137b12686716bdbc691ea71f2030ac99e73ba38df50b6d37aac0165a0a1f8249 + +A = -32f808d3dfcf394d8b153f0ec65eb196fb7db0160623f05e712468790c61176c993bc5c43a36dcfdb9a90d8b09ff0a78e98e87f1985bddc8cd5bbce4d624add27737235fd3283fd2a5aad6c8119c6bb96413e84d372eb4ea4357a77c54e6b3dd82e8a35f6d380bd54d5c3acdca4a775930ac63fdf71f1fa4f9b8a6350057eee8bc94ec31e418c459843cf78e13c58487f01eb8d36aa51f59764d35abe2cab2866468cb3373042db0472c8ad6ce7aea3202777ba0b56a57b75aa050499117b648033dd4e320 +B = 1f7c102fc70a9e89cb47498aadfff197a7995a09401bc1d228c04630d1eda98e91983a61760c00fea04af1dbafeb9b60cf1c51e9168c655d32d11e5b0513865bcb367fd68497e53eadc4c83956b89afec9ba59b674d6d052e93c5bf7878c4c451ce0010bc7feb85b3d3ad20a591c72ac61a5e1f52254e952bd06a0d6be0a757926abd4ea590506aa2bdee018ddff8bac3825b328217f0207c001f1ed933b888978ab7430e504673908f5c120288a67e8ddf3b575a198d790029595b2ff96783edfbce6d6580 +GCD = bdcaf72d9237cfe427df7897474c708a46073930e0ca0ac93849bef751b168210b26ce12513e2f4bd7570b926d21a13e741c71522ea3204be3939cca85e3073b608530720a7afa37d3c6f4b397d5f2f7d599088f3df5f35c305e70e086aad930bc5b60 + +A = -401305e272e7e9a14db093ed9d2b80b20018a67f7387f98e4e068690ee2ffe73dfce983ebd2640d6babd16e869da39358769292539df36b8bd0e9d1e41b8daf9b93df93e206378675df5ff112e95d56c5c19092b259e23d82cff13a34cd3eb418a0d9637c646a79fa69ee3dc3e5730e1e295bfe755425ccc22fcc633e77131a31880bfba24e7bf3723d6dfd248cfe72776e327f8f8fbfcd955dda598ba6d7d7d28bdc7329008326de5418539b6b9a229c9fc2ae9c51005b61563ff294441e753ea071eabe24 +B = -39aba6a13caed06f8594850f294fd43407c4a5f39c7b0759355e0fe404475cb0d4dbe1e9fe9bb19430a51724fad6bef02210fa51d7e6b3baffd9b19e03a2eec73821242660d11309c5914d7d75faa1833c58dbda2fbae80be5f6cafe9a735e14b3ae5340b939a286d242c0d6bb6787e41d1233516f4786af3dd767cc26f0c8245eb118b73e13226908ee7474db3cccd15ee4c4bfe97bda6d55e6f16f9164cc75c5eb3cca30caaa5ad7e9c555ded9ad8ae454729463bb6f27037f6c0a3f20a1d84dae548d608 +GCD = 296a1bc3c1848d61cc0944faff02a35e2330137eb357d7e4c00edd9fbdadb3923a376510eb1a8f9a93849578ecd8be586221c069ee590cf55ecd10714459bc036d72ec0da61a92a94f77e6d5731b5248a0e53a221f62809312226d7dab11c66b7e59bc + +A = 86712a1d494814294ce0d7fa6337e514acef90aa1963c02674de95ec2cbc8a737978acad7c4d831f340f0c6fcdada3546e43d10a23298beadd58bf9327c8defdc06e75835376a9d8f146e2f5c2e213a07cac712608c33dd1f250c11f597b901f640e9136652bee88f275e91bfaaea641c29469177c6888f34a9d75a8ffdd17834a4285e2029d5df943aaa47a2817b356cbc127844585a7ac066bc0fd9be34526a902bbffc58dc71588128025f4bcef09a15ba169b2384351b2a053d5e72764d5939cfb04fd4 +B = 1a069aef8d0bea0bd4316b3c403c998c5edac6272606335eb32cea42fdedec4a3263f2ae2d1c6b4a317e02f8d5eba7485ccf3271a6ab8ca365f47e092afe7c5999becb03ea743f308ec89b8bad21ccae53d678004711ce1ae7ccee56d7aa5ecb2fc910f0063abeae01f4600495b3e8d821d1982ed39e4274fa9babbee5ec89557abe7a0be9fb795cfbb295c065779ec94b8489e7af59990b641f204d53f9b9a991da4ba22a58252f89bbc7c92db6877c88b150662de4f3b10303cfab3cee2542e05caff638a0 +GCD = d457fcfa5c2c8d1386f68ad13e6a9721df829045d0375a34f40f67df66452e63dca9bf8ba3dcc270e95a44b7fa4105dbc0700f71155161dd776423def3b9373228709b2296a2237b7a630e9753374023b6538c41e575c32c6a63db5837534d2439c6e4 + +A = -5e0f0550a74b8682832697dab0d6edd0d6b98cd049617b964fd663bdcd0299395466b163bcf6b371594c5ef53a94853e89dabf2856a6a9a8d02b8e8a33cbce12465518d1ca1369a6cc71397ce0a04aecba72a63afe9408710fc964bb56398c35c1f0e42396698049cf40bb99e58658c2ea8f7ac6d7448be7c2b3e0a05c4c3f5768db4b83d8221739b2592d5516d1cc8a6611c1a3ce2b33d5082ac82b468c79abaf3686984788301186eb7d2badec1b0606a77cf5d036645f762143c70f6f8d90cd2bd1bca560 +B = 9fa9c99fb2283316b4d44a897c045c862c71ad8fe64f4e5a57337df296839a7fd1525f7eff657318b5c6c049bf69ca63428c23f30aaa8162d68c4464edce2b1ab0671ade48177eaca5e5f8aa93831c813bf7769037470177bd393e652a2de7f2c7c9b93b2728d9d9abf55d3b9b8c784567c4477f646f72cb794a5f7aba80572bfa0cab7923b4783bb2407de5aa1dcaed5b5eeec4b2bc5bdbac83ef6f631bfbc2f8f4aaadfff07a113057140abb45cac7b14d8a7d6f212b303a1233cfedcfa70e14ee83e3d20 +GCD = 45da7875095d075995feb0bff8300b601b290eb7e3ad96c575f1260f6f11fcb9890707f2c82e4ad4ab92f739e8a38740db1899a5671be5439288aae52eae699e78d28a0c9b7ebe3c081bd7115cbe82c0beef65d0851bf22eabc9f331f7eca27f023bce0 + +A = d26011e952ecdca58fdcdfafe64b56306f0f589f37a9ac094eebdca0cd827f0d9783cdb2e41689489f505cf313874437b96cff001715345a3f2f89881d762112d92832ed282a1d81f3bc3070438846a0bbc5eb9fc27087fb650ab6a7c8c92da898c6ae6d89a43b7f6c5ca7b361c9fe88e61f16465dc9b1d318e0ca72dfa8be261e16913e4d98748b416aadb70fed8a116db796c2d47d4dafce345cdc3c5c92ee8ad2ab4507d7404e454994e47a1f17ffe2d457a2c102bcb22bb99006bc56c696c77f0afeed07 +B = 908f35015d4563be793b5a956898a065218b6ec9c065156dbc5f665752c18ee78ad6115c8b05f402b45f342e34a9c33a77071e9c4b2950cb184c32024ec6c52830d79c107e5b6d1144ba4a2c0768266a49095622eab60a7d41701b883f9db6a887688b5ff8d828c9c0bb9829df7416ef2f992c8ec9b0ad5c98a1ac600ee3ab59228698a2d09fe3bdebe8fd0d7620679a4b69b8eba92f0bf2ade933a9e3a79d10a886254f3377a655239b160811d4e80b33ed04dfd4ae8672c92f83d1261469938d7bbddba6ac +GCD = 1e1b191be6d4f3db6410c85a3681ab54d7edbbfc83b7ba899e8b2a46864fc159ee83730e7e45fa10807bd83eec8372f8add9a5fcd9a03320c2d5d7ee142a9ca6f1842d3da0ca3603067510df4b8285e35d6d12bef12a90ae773ed516abe0db6cb936b9f + +A = -3489ade7022c6ad6118669e7e5d24972ab558badda67a5b9a16d9411442ec8502a5c0a4fbc297074e3d2e923597b76416bd17fdfc1a7b49f7a0e7889a5568cd9c9b388b205a053ee97ff5f8a30507979e9b2d03ddb3f54eb97013e4778b4001eba2723dd9a14050754029d6c3aade4cfb824fd24b4b57e2a7b1267c3ed7ccf16ed9cef3154923f2bfe8ea761961ff2d143c2f8efd19185b131adefdad2c765b57984482d2c6b629f1cf13f9e03f223d33df8154e2c1740d48ff245cd3f3547ae17f62706f1612 +B = -7ac6dbd7fec276931ce753183c21d71d1d2b20a4931b931c9eb973b2dda39590e9b95158c47360b3701ddce8e843678cf88fc7ea90de70644070338725cda4d694918c83ed4c490770097ec83b2984d255404c95ed2013ac119e9e83d148e3fb9c0250edf98e767253890c8672b306c1b9d8abe438ef8681a5c6f60ebe86e0a2dbb961dce73a690fbc0143435bbf912a832b4df1b7155ddbef1d939f30113e01f6937253b6c768f6a0411a56495338e7bf2d21aa126c221d7a9bd8b1bacc7a16ec514e5176a96 +GCD = 7b9737769106c155ac8c20926a401649535e016f68b5732d9247b8498dbdfc49043cd2c8bca28c95e1f381c47f4b032bd6dc135a8ea1b2e48b0b4497c90d063e23df950d7d1fa6e75ad3c5e5d050014d5711cc0a0140a387c60762e9e7a8423c00d1d46 + +A = -5dd8db2d99489626dda66b067aaa96f395a9bbad26a93176ecfe52e3a71bc0fc1b70b2c811445b7a9a4dd9a8ab30a934e993e6f18bcd01d2bd4a812f1473915275c9c5a5bbb67aa06be725022b99442715813454ba612a85cb1df6d48ea8dce8b896bb55a0bcc9b94fc1ab81592d3735415db2a6d3b8261c1eae2bcb15dc7a1f598ed684a4f6c7d40e78aab84b0c68d4de1a86520c1eed8e172d7758b23b9d42d73eef532be31c0ea6a01bcdd0a4b48e744d18c63ec0e3e7f49c9f219b1b92d7d12ccd4be00a0 +B = 16acd6d305384892e53eede09c586bb10d905a06ced4a0260be887c6c14d6bfa95edad6ce334b7f252eec9c66ac71d8976148acf50927f9ed84dbe71fd350c8558b0c67009a1b131d14e317b16d127e4618cc8fb6f2524eff9d4db519a12143a9259d1ca5151df2ef85f372d15bd8bb50e71b50f5399e580db9853ac14dfc505fb57fb2c6f00003853e23944b1db5177733dfc5bfc7601b05a83c508121a4f1ee6b7e617f6b6fa319932c17446100bb50cc82a0d48c9a6d5312c098c4a6e36328883e309961e88 +GCD = 1e717809d1cb24d62b0c1680dfae01ec4cf1532ed989789ca847af25d38e082b3e7fae8c3535e308811acbcd1ccd3a4dcc8178ac968bc9c3c4319c3fa499943e02d342e8cc84d5fa51d020355b052a56fdf407404452d560ecb575af580132f8428dec28 + +A = -17877ecc7b471e7ae5c7d40e163946178abc88db713589d1968042ac4e3ebf2499dab854643d0aa5cf56fc102cf87583656da11683efde0b1f7487429da4ab0fa1931f8b58a7e1df14dae0b1b30c534118ea7e1a3673fa3fb1556ea07bd1c893ae663f18f9bfcfe13d889fa536d605fbaaed1576626ff377a95584a01be912424925f331aa2d9cd76f288e0d69359f7f4ba1947fdb00539c9ffc210629b6c55413807e103aa678f5e73a3797c4c0bf134d13c45f35ce444c3f506621859f2ca3fb66189571f690 +B = -12c4588c9da5e78115800d028d19f30a8a85c8c47f708dad881548fec80f51caea08955554cd1dbab36e62aed8f0ddb14f30fc6fb618feb92bde94acf67cdef5e9b4bd55186df482c50cca46385c7b779d1e17b9394e7a32571d6a7d1a24306444106a0364183cd972f9351959f7b462afe860956fbe36e93671d13b55c9c001273a01dbfaa5c3ae906bc5a2ee98485e8c531665fcf588868fbb2a7e0b84d06d20cc507d8edb01ed38065eb044ce556b21f3a34fc88b0ab317b27950538850c6c07b5bc5ffe8c0 +GCD = d5963bb1feaec15dccb278d3c47e09d9550c500a23dc192ee3a5e990d0f13cc0badc218738a7bde407e657bff4a979f7e387946483fb1f0c15ad85d6f2e977c68a06ca49a43d3bfa91b03707f824d569a60adfac9e607ac0c681208db395f8bd17f2b70 + +A = 4ee8ad35a25975f31965c362c4f43350160e7909edeb21cd702caab319e806f522d511c4f15082dc88d70c210eb8127d389d9413acfedca32f9059a76004648871e55991c44be932f5d0b6d3d9686dc7ff14f411fdd605d9499473d273c3a531657de0801577db7b2592506d9f1c4e8f2dfd93702637dbaba8aff8615427fb6c7371da1fbe9cc753fb919f7a5caabf0e5f9b3ed1d1b9c8be56b5fe5f5057357a42ab372d5c249c0a7a3f5cab08b6f4e53f8d0a1cc7a46f0aee86be2db9d29814f69f67fa14a364 +B = -196343ce38250328c3936bcecfd807604210f53a5c72b4af4867beee558604769663c097afd442c5ff7d08d13b1330e00cd82b84e2ce0ce45fdf77d040379800bb95db6c09753f58d41b1003ab4e90d2fe32443cc66af3c62225789164a64519f715f85363ecd5ee6c37dcbd3f048f92ee439f92062b06edc43fb2b09e0825054f0a91cb08a66ce0981c1c41d19b5faffd3b30334a6a300e2d651e11e60e625c906474330e1ed167e33bb1c1b97395279168f52a6805d09e66f1a7c98de52f175dd42f4039134d6 +GCD = 1f69c9385e3538c6e25670d9a0fe0d2237f84f2cc4b131c7b71844cd835206c3f5470bb2b6d47f828e3336dbf94a02927d692c7f7569bd2a69fcaa5e72c0acd9665a02c97429d0ac5cf8036fd931f331718c9ea1c5ae9fa7d2d359ce862bc76e15d45b2a + +A = -27c651e570d2c625c7b4bec0841fdd09675d4365ef57796ce2d9b469733aa20c50e14f3cf665e8f80004be44823b2b986977b4aa08d633fc32fc793e3a9d60a19834b5af8aac69a712286661baedb749baa6dba37835897d9dafd1fd307da6c116b89ed6010cbbf8685fe94666c1ef57c0f833b21fee4d6c5182cb157db2ff74ecd2dee6f16727edb2b741fc48681d04c94c0df990771f140cb7f6c0a25d4114086ecbd5965f1259773b05a60fd55e77cbadae4bef733fc06bb6a834242729b1e3ecf151949fe04 +B = 3504084a47db590c812c672586ae99635dacc48c3a42bdbfc706120dbf0273c08f73dbda651c22e7196054c9f2c832f720492b329873024771b35108a9d8b1263c77241d636df47c3590cc8fee14ab3c7d8cf18387ac4ea616f954a3b90e296660515a9403c4fb1cc2c36fe6491366c525d224339d44887771221aeb08ea1c51c913ec3f2982b257aa826404350568969557a12978951f4aafef2566d4a76873b121df9434f2afdea96b233475584b698d74a07e13224c1f7de10f68b0080fb4c6db3ce34298cd6 +GCD = 519fc7daedd5d32f9351fa4764942e1568b78f4469fc2a8d9e43fdc9d213aee766a001d0e83f80122394b487e3831a0550772c21ce3cc69669578ba63f79c75fa4ffa16a8c2dbf04049ab59b645efe17e36c6388957c4438d02409383dc96a841211efe2 + +A = 1196d041205af939a013b26bbacf6296bf76833afe634d5cf57827710307e98962f8757dbf236ce11a8f1cb94a1a8c5a7a4d6bf7227c4e404941996e63956f160e0a83b5c2a3b26c9b3d10050375977b20d5e61dd752b6a9ce9b733bc744631928a092a5f1d06d370a1bc0fe7beb17e6b742e7ea3925ea2021575930dbc05cf435d5936e18b28dd21d80aa626dba30ef13f48d86a7e10de95e3f9a9e479e3709da31310e25538dc9a8ed344f54f269250a6b95262f7a313a11fada099dba04664a878f5d2f121da2 +B = -b4643d5232b27c3aa1966d5d19a2b38ae378dc2a42d8a281e37319dbc9683763c022b508316e150d7ee3059c196a50d879cf0b4cc763c38fbe6321fb69f60a23e35287286c304ec77be43180a2e68fc4a315a54a12bf6b829e3b4823174863dd0f25f3d1a841101f7da4e3732d4b144431d04d15e5a6c4711f35bf4da4888a7e86078fb91b0cbaf7c63ccf4bdc19f19ea74f9ef30c6a41ad832486af4f42130c4f6d8b9b2bfaa77fca85ad60fe535ddcd7dd720bc0632f3f487f6c1f106099690aec4ba16b435f4 +GCD = 61e4ec9f6e205146fe076bf849faceafbd0de3582d6597283760b11e01a80257807d805dfaa352aff62805f78613def8b79026a457d47400b671a1831a91866ff33da9a5bdccefe7b2fdb3cfd3cd6f90b99dfd7d30e7d80b8836f645333af36754cf7fda + +A = -691ae24f1f95467e2bf85c1bb179e304ee83b1d50f8ff7ca0f6f7f42eb248bc59eab3bb6b990179f877372493787ee590efc2f0a5d2bcc81566aa4417e9f082943b9cf7fe32e18bc01968c73af31a2cf0266599fb270316dba50125879a11ee902ca94b8754293bc417dd183c145dfe0a1c57e06f1ae40e83c444fa56b384b84610da99489ff2044057094ae5f6e4755fa4c84dedac84365587f25e80e4aca375e29db21b3839b08865ce503e5d48859d97b253f09933758b574865b4edfb5e7962e9cf04ac9f884 +B = -2b4a2dfbceead3ee496271c6129cb84f99fd8d902d2387ae9d1da853c9f72cfb2a30dfaf85100063432afbe5a68f65fa7eeeb0661cc083eb4c3c7cafd98a980e6de9a59333eeaabf6251a504b2e8618ca570d504f8c9bb7c5d2a5ac1c7e5f76060d06d51d2b933aa4223069fe190f8831b28d7aa5df5ffb9bf707198c49d2210f7feb24266dbe6dbd12bacbd41b6c70602613316bc6ab68dd439035bc1a6876a9098a07db89f79e0d01f1a2e0abbda496ff6dd7bd2c71fa2f4aaa9d625cce015a5f06a1c5ae8eada +GCD = 1c80e95f7be5d775af933d8fe31adfd9bd67b7236ffa43fa10a51f5b4c7e494459b6678ccce88d29ccd9409d1811a60f5bd92ab23269440c33b76dc2c6c04becaa2afbc59f9300f497d4a32bfba010d847bbfc5d04b22b8c3a332d528b71de3db24cbd686 + +A = -f9990c8fa318f1f98e187dc6eca4075ce8f50d1403c7cec2a5c0c1cc5f74e26fe5879322aa438258f776a260471edf4c1cc15a111a0513fa47c4ea6304999bb5321b785b47aa68118198c2267dc68ef8a38101dca4a5cc3e9cb8b876a06bce26f96c819aaa68d4266e23db7ca9e75f9f5f670b028edff16fb8316d50a5833068d2a561cb408f00124c9b90e7986fbbcbd1eb5bd45eee3da02cff35e8a78888b20c43f8fc52a0c85bf9b760fc5cd3c9507dee89cb3a1500efec9467a1ddc6eaf61b113f4621958672 +B = -866e0687ed22b6932c988987124b9b1cffce7223c5c9e84fb8da17f084c747d46264d4e6df18b9315d4dd35bbb02bace7568af473535acee5d2f9b47593858f693450927a06b9f8efba1fc1a2a186fe4f7969a6856be1c01b882a34095383b8589c519827cd94a34db5b19495b2b6bf79cdedba9ecd65b5d4ba445236d4046a014ad448626ac855699c5d30bb2780f84805f0ef3c5d18f562947b453c2f61cf561c7237c59631428cf3f7e8a75b6bd16f10edf70164589f6047edf919bc8555b44c48d7d891b78dc +GCD = 2040d3adbd67dad5b7448cbef6f5a0a9a1cf2c30e2a43cc84dc590a24ddedc9a7fefbf35ab168272e88410c5c27be0a219e8bb8dfedc11e33635a17186eaed486936af01c4e1b986e7853a2a61d9cc3f94d12e93b9a45660f90e70651fa1fef6b43ad9982 + +A = -2796d5683b25d4ca29f1d39c98d351a88d3f165fefee3163e66fed6ca5ee50373c4be23a000019546aaa510009b960df63bbc64005e56d15eb792c9ea627f66068d07af8611d8ea0359bccff1266cc3ba5654928b063115d67b62e8b5e76a64a08570b5d46ddae63e23ac0226a5fa5406c7c634a5ed7688a6b440f740c1be800a8500587cd0755d2dd92db0333812275823af3ac6e4482a9379919d6ae78315f6e963b902dbb6652ba75621d13b0f703ae70eb6f3a00ccf6eb320730481c80698f0bfe17aa08d46c +B = -21057e4853134cb801ec73070de0dd9451d24034a8599e7236c06a6ce0d3082704d958a2a31bfcda646880899ff8ba2b6dba2f2a416f58558370eb79f2fa259471a27838139b8551ba740fa2e9194f800cd6a950d05baeec875a5d6abac69f48cd1894545fd4fd10793e67f2cfce85ff3c2def2aadb25bc5e7e6999857229612c8da85d55e3e6b9c33794df967499acd0f6d34c12f4f1146679c5941542d820956987ef2dcf6dc9e1ea00b17fad561d439b274789d5686950ddbbba784c20e4fff57ee8cd48ebd20 +GCD = a6c16d6eeb6241faace0d5644ca80901d85eefa9c97cd7c04bb762b7dccc41ef49f93c273788e52b115084854340a32a56fe271f7949a7639206207c0cd09bc6f0101bbab59a8f4875249caa3669743231ecfb5adb0e89d81b13de77e6ccfdda58ec8aaac + +A = -171843003dacde2d35330ebe60f7d34626ee9bd50abb3b57b169ab2c91f9ecc47917f476a7fb528ccec0e30709fb98d3084a8e3587f38c84288ed029e48d4cd0d8a0aa1eda442c86d09ce93214354dee58694061b3a5079217787a46e8df25dcc8850c1a6eac9ca08406d610a067fb8a662a62232a81d7df46b71157e99f307f25fa3dc97bc516e06d120209c87aca87f4d04125075c9e2a73896df2e4f87733d3c30f45f78956ed11c98e4992bc8f4ca8410d0101ce6b0d97e9fcfa94d1f902f90d7618ca9e5fcbb3 +B = 150f378faa79443b9ec77e1a107aa8a7bc55889797353152ddc2949e0af76e9ba3d2903559c369ad27cbb025895371744aa7544bea7c91387385ee72afade8eeed0da5a3bd362b69ff34b3b65d701b7f44ceeb146bf6ecdee8c56e3ac2ac3ba41d7ffd7f62bce95aa1907974144de26b6ae1ab190f27f839473d74c10f0756a63c9ea525a8b0245daae026411a713aa07c90bba1f443aea713eb102c9bfa2474b744a438f749e39e45de62ec83d1ab6429e0037b197552f693a4fbe893dd9c7284a38a542d51604bd9 +GCD = 62a6cc76ab1b4ef8ce94fe7098254ab7efac7a01cfc7957c0accbafdeace1db2f8ad559060a6b69edf0f4f8359eee7f7af1a1ca50f39fd9469a5ca83080e655e00059d1ecb1660edba16c7cd088bf7aa622197233b523dbca4922d26f399cc95233653531 + +A = 498762cdd4f41970aa352e0c6be4d444815399ab3067a5769bddbefe475bff53e3b71f50ab3f66eba9974751f9e12965256ebfad4c1f49d64af74b99da7235823affba624610a4b66f7e18d556c36309360003b41160c1bbd42f4971bf86ee2a5e04770c47c24fd660d93deca7fe2b51346aaccbd0509379d0e96583686173ec0fedf1678f02023089ef24e095462f6ccb3bdc58147e004c41cf0fb7fa843b9cb06c5790fd770353bb161dc9ac45dda9d869496e9ada13de24ffa47d0a08819d18cbe5162c1df399c1 +B = -4a6cb4688726892554ed2f66e32f6ef803e6ce25a19bc37efa80a291efb3d24287b5c9aab66d6e7ba4c920403df0a4f9a94768302c3f152b0c1759a4395d6e6222852d956278f7568c752240bac4c3f2fa7f20ac95629e3da196f1794dfc148e082f9c448f40a8145f37d1d514bbaa280b81a012fc34550a7fe4d50f118ba5197f11e216617d4ab15d9e789f5c8dcf3f8e6f938c130556c06abab0d41a06cad93267e4845f26dde0226cce36a7cd94ed958897e5183eb4b99a5170a7bf70368f9c67ed083d8d244464 +GCD = f7e7522cb3111f6c19f9a2a523abe270170dac23a11a97b7690d3c8963ed0aa656939fbe29868bb41d73c79a96d8775c53ec399ffeecc09cecbc453f32e1a7c38b9289f917e29a33ee713313581afb8ae2648fa45e06e5913384a190ca4742acaf92586a5 + +A = -4856fae34e2a2e62d5c5423010aa81e76e7e66ca1557d9567e09f531c2090b54d612dcb48f332a206d2cf0fb6eb1a8f012fb684cd6d7039f608de1fa7c3b271fc0dfc104d271d62e70c054cb5a7c1dfa65fe5ea5ce7bf286f0f106c99cc124c4d0aa243417bf3695579acf8d776ca799f1d11b95f039f4155db09165fceace9695cb9ba342b9526d4007c8cf0dfb5b52a612a57745eae00ed64b2a52a7792f89f87994f53dbe877c0276daf4b2f2fe78ce13d2d07f2639141e6d013462d7c9b39a39f5fa103316186b +B = -3ecadb4521e63c5a5f495d6e70d3bbf72f4f4c22ea1b4065256e0438bc9d1eecd41d1fe799718449720b051a12b0dcf57d034ad41e1c48e258651c1222769d611224d2750fb153880cdf5e9dbf7770ca3abf79c9081f5bbaa1f39becda307ed58491a3f263f367b20d78004aef27852b3f2fe3876adaf99a66e731981cb6e3b054fdbf230fc3659a8c92302cf21eb6a8970c6e933f40c9ea25d6e41d7825465f6608bde29a026ae09ad1d7c7507cc5132d834e72761c51468771e46d76c8d19cf0df241afa21812062 +GCD = 1004baa61c90bc74ae6997b6a6f38aaf187a03599fb233a49cb992a82fea4f72ee3b6e9ebfb7de41b4c97720a1b6503bf28b30ae613167621b9109da976d7b74d13e3af46610c810da3a959f5b914d504c55310ce21f690965b13811081c43395cc03d3237 + +A = 5622644a61731e8c9f5380b3ebf67b4283066e66b65cac981f7ff25e1081cd41c9aa50394dc1e5cffa0b8d3c338d453c013df29a9d10d1782cad1f7ef4da553023b36da6a927907af9acd113a14a53f2724d65509e29f18939c641128488fb68d724233b8acc19842b605ef510b539ca5db7722ae0d95c6d702d1361e72ee8abaf6671cdb9a0890b544a72ac1a363bc95b325a074aaae8a9990be3514a00a3f361a34bb83a515a5617c44bfb2deb265caa89790b360f24ee03145883b9f34022d3cfd06ce97b0f804bc +B = 6194d8a8618f6cddd71ca05d06b9952caea8be3ee209d625ecf024e2662d9bab06c31050eba583695908ca0f794e6a2a6ba4a3f71d30b8ca493bcfa884c3a1f64ab85c110d6f89a2e077f27bb7b8205e6273c185a7cc39a31453870fd3eed72162b276f6b2dbfaf5dafef3eaec04f9975a283e3c146efb40ea2538ebc75f36e11edcf4a2247003294a1c6d0eef7c83131a338dabea53f95043fcacae3d96f51fb2606ff688121885e51bbcf90a35119cf16a587130962d7126653020e4c88482ff4851ef87aa872aba6 +GCD = 37254ddb948c44e1539715650fba971c107a4cfeff0454424b6468ee595f9ababb6a01c5b88795e665c28fa7d30849faada5f9b594614e02747a46197a449443d0a5201854e367ab0bef206c05c74fac918fc1bde784d76655f280e41d243180457175d806 + +A = fef6c34675f1f45792a0ab3b547fe93cd2fd4d7da43f421eabc41c99a7930705c90c1b3b0fe0f235ac98bf16d2e9afcec86fbcb8293ebe031a5cdb880918439db0bb6954f90737d377e8dc8c97fd23f1ab6f1d46779c7c25b5e8145fd5879902bedbd2f6525607b385c10eb8c7df074d78eb3890207140c518b3c8066914d5bbf8cdc2f7f5aebc2b9c17ebffb85b95a0b5054c08449e09bf1fd7fc704e2fcb83221d3be05e7645b96226c2da3057099bea2a731c9a968c1213d7cb04bdfe35641f671534ac699b850ed +B = -7013c25dbb99686b79bc9463485c2f47eb7b9ad4e24dd724cbbba1390c43b06fe94661f6a2eeea1ddc20936841208539c87f41487ae977e0893139e0c5fbd44a60848cb2c9189c4290c3182c293487494c7965ddb66b0aac6ee85d158e5531eba04f368f3928f73072fd8200199d94ce619a0c5d56936d8f4969187b11818ea21cd76d75d3d0cd6cf5d5490b2cd622dde3f1028ca5eeb7f2ff444e4add8844b54430dc8c912cf7ccebfbccc5020ad4303abbf725db805835a0ab97b4de1cd9df6d5802ac9c98748977b +GCD = 73232880d57267ce0587b30ae15b47f7fdbc67f33263500f96bb975c6d75c91e90532c26ca5aa26855e51adee5868216cef0f4b9eccb7a4049d663c81c1328fc47f32d1de240a0e337cf4d18736c1f34e5cc91bf1a3707105a961b82732b62e2a3996b21c3 + +A = -1ee51059732f32908bd36bcc05b60ad4b4ba9ff91e0332059b0670adb1cfc73579e5bbcf1f4a014e5acadbacd1883188a3444588cddf526cb67661a85868e21215bd3baa56751425c3a3bc485d4a5b281488978d3e153e75c5daa31b088a717e980c8a070e9c43e00fc61a6a7710a8702a1b1627d2f9e2f4775d081c50ce3be8420aedb9bb843a11bb9f1762589cc67ec382fecf95f675321701f112cac48400ab5b6837cf9f68b750178edf492e7dbda5913799ca6be5ebb437deffcbe812ee7c406eb5f1d8298b698e +B = 2c8f835444d350601b8045901796b01991c0c97701364c53afd26f57ed43eab5eb25d7288cfd25baf2736c9b4d6ec77b553565cc794d001a342eeeb5810668922a0ca04325c7965ea603baa1bde0e32d33d71e6b1ff494fd17a8e0adb1e0f2cd48dcac522281712552286eee79a209bfe6097de097500ef798c679867ba771ab4c379475377c130476099966664530be6ea9bc7b9877519f3478ffbfa8d22d9382198389747897b600fabf0418790699d2b94008c0e00765a69a58cdc24347f8ccc1b50159526e740fb0 +GCD = 104eb83b6ad6e2860d3ea1c7ab438e266c2915d3ee1397b98f508c0ee5cb4cd06627dfe839c667e7f0d10c740d1a081c5e5fc3afb99407063284443f91e8ba34c4c8a0f4d54dcbc8c2bd02a971c965d298cb49e065fd9125ec366bb997f2b76832f8b499036 + +A = 21507e334c37f22b9d70d37d6255963b03e6b39b9b5d09661d03c2a0184b1eea7a4e8d0bc2fbc9403d9b8830ad85eb1c4e22610aea1364710e67b9257c2d8a5df6db9089294d3e4d5dc6cd6a472a732670157d2b39e6ee32d5e11e38c919db15105af99f903881308c0047e8178ff6ab781176bfad1c8d7ba607a16fd7c2884e6b9bc71ff2a81ad7753e18c5f9011331afc55d1e7ced3cc281ff90da09f085b75d60c649b2bcdcbffc80217ff805ab55c78fcfd0cedba38c89207f8754e833008168f9a84d57812150c0 +B = -13383854bc8a7ce691d2fc05a693f81f63a0ae434d598ba2470978160c317f20b0ae8c960090263f5054bf00e7bbe2002e02bd4224ad2179b980a3b8e5ec9b91e3225001e8f75ea10d2baca94b0f11106a2f688d316a68c955155050829065024e47cd0cbf9c31a713f46001c819b05cb2620c89a5ebdea8c1cf364f203a372600e165e4100e0d7b883fa9e9c678a4129b3fc9edfeea3e18adbdfd4994f24e08558cc4a77f3ad0a08423c9a7879a422682d80d611a575bc0aceaa1448d9b1f3cc533ae8e0b2feada64281 +GCD = 178049839cba8b4302b23b31005fe001ccf8c8243c4e95d883ded2f42952db029ce0594288cc13c86977744155eec92fb8bdab65b2cc8e5b1092a4fbb524baa3143fe484b08cc3a875b6e96fbd42536369dde2fe0e58016566c7244ffb667256c23f196d6c1 + +A = -5d92f64dfea1704aa7317339765b0b42b4450ff7dabda93598749b8828eb90ccecdbe630c8ec41f4bebc64dfe288dbc6492f764a85eba22bb36da1517d5b3861e9d821474398e25751ae6ff1f767d1a2247f67c4ad286d6f77377f6d40999071a69d35d00acd2cfb78e4b12411007762cadf3c1f076304483a08dd8f7b6b3b87e4e2b69e6b6a35a457e5168b7a5cc5735f30dbe042f90eff9833cb8c0bc84460600c4269f85011f0665d3a3783526e4fc87e23cc045d7218384acce0ea1397aede30721e06bdb384beea +B = 2d87714d5af41bac703033d870611b6c6a309091181b2cb08f5f97b14144eed5d01737b1251b57df1afbf720c33fb66d2856c1be043cdb5647e966ea3d291492dcf88f723f247759ed609dce93b801e678fca455a7cc466b7911b754dd27f1ae6774f79ea3d0ccd73e79f8bbd4620e5a573a22ff1b28be166ec6ebda893032082cd6766e94762338b17bb134dba81515ffce703a92ad4cc2f7863e52baa10c07d754088394c231b07cd8db8621f4f00012c13053c6abd73601d6713ababa9c633ebb9a4ed928cf1f8a481 +GCD = 38b665989165a956253dc7819a03641551e91d990487993def43ec54408efd9711a25e27e792b251aee4eed7a45619313b95967982658cb827bce80eedb0e4ae5f2b25a146b17fad50f532f76c2923d3bd98de2cd605ee2c1eaa6a5ee3212ca35f692e52951 + +A = -9815c62e65eec3c3fb7e2dfe3b69ceafa71b155154c4cd9927d52b3c52f49a6b2621a1d8ca9eff2f12257e0512827a1dc28ebc7f3c2bea12a82a1c103c7f873eeadf81c574ab5feec9c383a8e323c9a436ae184ae4aed43de2b8cf01a2c39827be75950eda80bf5d15e7096d9c2cbe520cbc8d6729e8f436ce11ea9488950ae46a998560ba1f4a4293345fdc8431e4d4c74d4ccc14ceb88e4e1773edc85491894f88e8e56931b460e7acecf050cd925316107f7713d2070220a1c3ddc397730940533574bd6f42af744e2 +B = -368feb51dbb5906219be08f069739f5cdbff5b58598f3383015a995320f345c8491bc6830b86913943991a82ab7b65fac430dffd4e51786f7d73cf5e2d9c6574e88c0e9520fd0002a7f7fa5df3e4f5824058dd171c02898d3d3a4f8a5dfb918c643b29d6ca3d04232af573dd75f91dfb21d74e751f2982f139d95b9f371fb844804579397a14d6c23847259d9adc2670a6a72c865dd1264579113a1488e077a758724621d061d159a07a5bd78545b3954ff7129f8bf46aaf35282d2849ad2faa31c9c91c16c9d7f2d4433 +GCD = 5cfb2483ccdc5007309c84b9b549d8a885a96d05f06caf97258f11690f0ea613497b058464297d69b3dae37da878913426fe5149be90338985557631924969e5a095e4025d614d5c170935c2cfd47165844481da76108599ce055ffba4e7737b2da0b68c559 + +A = 3d168d266eb73d3862baa050ba67aea7ee219268153f2751f932d0744faad7a983752b8c8d645e22582138bb7982f383da8e9f6485dc1633d870228107523c9623c4bfdb910c27573dfe89abadf569395a4c8739785a36ed10f3523b4dfba29fc1dcd164d3c8b5d2fca09fd24b4bc571199d7c23d932f74703e9f3dd3ae39269b113176231977dabdabd804565269c8097abb56cde74db785f40ab9f73f0a69a91c96decf8668e10ea0bbf56bf4824701a49b541612ba8855923c58fd796c2eceef20d78d3c27735238b54 +B = 6c31b3f24263e3d37bbb5d9113f0524333c992417495b2b3e247580ce55267ac4f65ca4297212ba35a385fc96e01a3ece7e1ef7f2187703686dd7bb22d28fe77697ff45cee7215081b31a33f1b1b684527c8b02bdcd388f9da13ed3eea689d36519000c65863488efaf5fb54a66141b3caf93158af0a7fd4be05f2bf9a35c551053abaa011c141550622bcf9fe1d1d4d7306a23db92c3423155498ab97496457eef48a40e45c469c501aff1511a71481c1d5b8ea84fcebf52f95551bcc8639d4c436853b927657608d8724 +GCD = f7977aa28e4dbb83c0a0bfb05ac1282ac6b93d0ce91f7f0c88586dbee6df920b8dd31d13b03574af99a027ddaa91104238d029af809ca9792886b4b6864b52e6f68262f3a272dcaea752ed818b259eeb027b695f39c3be795c4c76bf007866f3443b91dc38c + +A = 24225db6ca9307f2bc6eeb1d28068363a7dbe61102ca907e226e5f39668dcff694427894839e24415adf26de738b668a8a87d84f59b4311984ae062a44fff7038a88355f513c9f4e8fa1612b256f15c6ff86a24ed0cc02dcce5fea5769854e6da404eb7d67afd123c85c3e52245288d092d979cbbb62e6bf2b21c0c2162cb409fb0240eda74adbc7eb75f5e0704425bd4d04aca84dd4fd4938e2d003b9ae4a1a929addbc287845dcb65a8360606d4f4e1c48adee3a50a82312004a2de471ad6f3463e4af38e2e0727d680 +B = 122fe4639eecec24f0c45b2a3c71300a865480827ac5c73af917ceaf168d353b5795fe53c66449aa568f11dc25877fa04e3dd5e25a1cf0e2944f23bc5cbc3ad73c0e43e54cf0b8eb90efe7930c49385ebb49acd395b936d8b04be2677cc9178ba2c515fa60007085f87607fc7b26a75f787db0cd909114df28638c03659ae3034fb73edfb4100a0b838319bfdd23b2ae6552f591f99ee483b9e21fad115331d1e774e39d65877c56efd4c508e161b351ef2cd21f18e40de614112c9f5c2ca5a421e17154656761fa48efd60 +GCD = 247eed9441e3a8f7bb074ca1ad236d71da994d4b7b3d1d442620236bd36586e150bf674ba23e92e4b5de395c7c6338bf53b229d1ea08000e66b23bbbd4b92fb7a1c6c32ff2a4ccd727774154c734aea22c8286f1e39a7677fce72de7c76a76d07b8640187860 + +A = -280761750ae4eb940c9fdaa468842b33603926121746aa94b4d6ca2ad47fdf4b8ad7b2e3d785d93370a829c03ee80203f542486367a97da7fc950c2b503aae2165d4a9583a93465dee0c59ea756bf744f7c424c6153fbcfdc1ba24627be33bda724e839d27261ec084886eb04da759b91f51880762b5cef0e757654903cb4977d25a4a1017cc95e58b1c04cce6a138ca5dd1d168681127d5c6963825bc9f41d16fa2c845802ae0a62b4431fe2efc947c6898501830f261f86edc3ea16a50975a8acaa39ed1ac79e508217d5 +B = -2483dfe0264fdcdd7d3b6d11bd932b4f38c6ace3eab93a3831406dcbbb17ada477e4878666e114991d1cd9282e20fdc01d6e598a48828633bd78c6c68febcf3b6be8b67148120d36f9f754e76f3d7aa2c8115a82d36f5d5a4711ef017b3a74a3ea4f154755c8e8cb017173fcda8dedec77bddc2b0f8811684fb84085739fc15826de6db5990af0f5a9b90431dce6a558d4ce394fc421764f733a65fc98686c3c0a91f9e2f276e4801bdd7d1b5833788460e65f99571bd9760c6552c0014e061365d8f719f26bc8630059e4f +GCD = 3f2bb69be2308f8d9bd86f0d4b4572f8a450dba5225797a4d9c4513cc40468f5cf8d4ccdc55ea555d8872f00bddb747b4e3c836e61e4759b21bb7efdcef94e9f4305d6920f9f2f9c7bcf52a8c9fc021e9fb2b9f2006d9303b21b1e47d1cf33963820cede3d73 + +A = -107d197aeb03486890a3ff40862230f72ad68c09b60c449fe70aa75656d76b05815badc5c5971ad6b68ae7056493a582a93621cd7b77dbd665c92e41543c239656347391d7a17582aedfcff72244f712e0dc9fadad12fc9f38b0acb7d2b3265fa28f28e86dbd10c5d606c88bc9b63491ea7f40049e8313e2cff6efcd28310983527d3f2ad12e45eda7e6b1d9a36aea3718377f11aca645f64aa1626d8ef7a267e2b6e2571ef42adbcf09791f2e103c054d7b1a60da51d44570b686453e42b15f7894c0cda07a81763b8549ee +B = -4d980614ae5117edb7937aabb4f912b1564fe81a1da721d523c52cc44bfbf337c06eded8a4ba67c025af629c70d24a5b85cf1e7ba2dbeeac9268154f4a716466631b85c74d5d26f67913e4e2017dc57b9cd28cb78e866c363e91bb2ff16a4737b74d4768d80427df7aa9fc29a7da5250da340292db5bd4e3184051f0e812672772b8f1071147ef4b5e961d56db7e65aceb5ccd765ef1dfd61ea8572855bae2eee141cb719d9c72fe2631092d7d31cf2a54abe2a2ab4d8c3b5ff99a8bc026f4639b3eed49fa244d704bb4bbf +GCD = 5364a6650e9d93ab6a05cf7394a077c9e07afb9eb842abd095a785b6533b2c5fb529eab4174c3a051e6b955b5fbd9a99c3be3b3c44e714b553c2039fc0ee378e86d5c057a73204549e901306e82a738230c303e8962f192169a4c82f5279a8593064c071a7f1 + +A = -290fe19fbdc8e36c3e87af5b2510633c695da8dd1e8baa39ebb549fdaeed5ec44f615d4ea4b66458a2c6784faecf4a9e2d6ee2d5b702916dc7a9d7c8694f65b47b26410fbafb99af2db93e83d6f80ea7f79f88df5e24282acbf0f9a8c76a8888258bd168bfaad700d559e0073ba75502efb4cdc6c8272087f17998a0c4c2bae5f7fc33ec8d6f3e6b183ff05fd72d290c9c9de5cb2343dea97fcededd93f0e2af225346cd311ee6787113b0f8d29a8b6b0a209be1c5a3dd5e29129868c73116fed8f5d98a0c002e0d5bec0658 +B = 22ff217909c505c7cd4da00019bc1985c7941008ce16a336c911a42ad7761f11a4fe76854cc66f2bdd8026116ca425397ad753d4be0002bc9e79740118e7878bc89e69b22e7dc009625797388dafd377c974171b03acea053a4cd00477733f1e9bab4516a56bce614f6a97b0f116ba0e3be486bc0f732326b3377174651488a1225fec76c601aaaf82967320ec508f3be4f94369a73d7b66aeebab080d92eabae8f2b8db20823365ebf006c4db4bc64e1f1faf0aec8057d224fb30c846fd784c72b91500a31b1e789ef04a80 +GCD = 147486edf3c1eb2c9ca713d33f07e374234d76555da57ca46aa97eae817e1283c33b3bde1e35f797b744ae53de1406a8421188a5e29fbb896f3649a206ad35e1ece45ccf851873b2478537dfbc130feed4f3dae6a07e9b07ed5487e0b45055c651f8787c42008 + +A = -314f4a18611858ffc662b5c1260dfd6f3c810be13cc66cb455609c0594c63e49ece1e7244f1f56047a55bf54bc247515abf3d5003f063a3e214b4569c61dd8b0ddfd837867c6cc550f7a332a8d274463c5f2f97b5b15d0c387acc4a7937d923c7fb93da638dbc87734a8165faafd8430a16bcf6153fd8e984eea856e406970cef241e47ca97e3cc9df9e0ec09bba1a26ba25d522c792dbf528335f2592cbf509fb72b93d3e850efe4d04450c5a81ac7fc953439893a38246fde3da68cc81db889ac92b13e6e34ab3eefac315 +B = d8315decd7a239fe74a6162a4ba75cc8a64d9cd18f5bc91b9026e6e09cd37e196e584ef66c30ece3848d6ea0d293973bdf8d6a5e707e35509f0e5087235ef5ba5788a1ba5e4dabcbc974f5474bad5e92f0c8eb42cb220d2c1d222217338c05457dc0bb0d6d8a7b0e1025188120503a5976eda63ea1ac9012699539524ac16cc972a054a2adbbfeca181a80d779bc07284992a5a37f9efd710571e93de1ca41b70e3dbb08b3f59c4f24cff30e1de19b0881f37fca2140f015830de3f7b13931138711350aa719e9ef1d1df878 +GCD = 17b917648215b2852ce2eccad271d9b2bb321f0b65d5b23641f4247a29c13d9672d79f02d180d527d171b5b652421811b110cd7b9e9df182b2730560833692a0c8216e2225478f5a1043fe864a5ee9f96e150161ffeb4e9bbe71eb3112cf4fc6686b0e42abcb5 + +A = 3bb81e51b01c1a9632d6401f6425c2eb52d5b93d4ef41e66582daa74f273097f9c4809a0f7e94830ebbf0ad875ca8738af314e83a45e0a17e14255775d70a69141f1ee8c9cb20e6897e43243f38ffa1f2c71b67f752ccf49ab4c71a4183c5ce3ad7ddbc920f5a34656535912b3fa99bd9e7937713f32c99936c0486e19e846ee5796701407b20b08373307ffeb21e8280f692d48ea16e65e4942e08e19666b3df2f73fb45063d56a4e010a84f93db8c55dd1a5c16afc1c104f4baa3cfebad0965bb61fa62f02a3ebd7d5389c9 +B = -ad0c46736ef9c8968f68b7d9948e890c86624298a2e2c5cdca75e3d32ba5c14ec1e12cfe978fa615c6ac711942d36b30b071559225143839e1db4afc69e48dfa6607faf93efc069ad1be6625bf8749fb9176f46d16b85bfa6d1c5b8c84b966301c2fe680037e66deab01dd1fd0f02511d010e8918324d114f92c237f95b4efd9e80e82f15e677e74f8097e27dec8505bf2e9e5f045b747bb2ab15c629a5f9394a752c38fbca21ac54b122b0a9fa4d08537ed9cb9608f0729aaec847e325558769ef2362c19607fd43098dfc0 +GCD = 102af2d00763d432076b62ecb517a8bdac8373860cb21685a176828de7f9e39c1a66e612c046d77b6295d033eb9287e8a960baa3cabc6ee3575e13dc353b58836e60d8dad2be05d4dc60b0b4d5ebd31c032d25f9ad5d68cf8fb5988a78df9fda0b928679f82a36b + +A = 150282bdb80ca5d2b2e1d8fa248b5fb2a5d5be916d947beffd8c66f7b227a3a6a221e297fc3c4c7b0107796a9b5d9fc1d4038ebaefe7d52b7d2e13165c82451d033626b4e8e2c36b06f8cd8b8c396988eacb64ff0c5c684f460889e3dcb9cbd04229128b4cddea969be206ddd605ee2459ed89cf0fdd453f049eadd45ff4f040910f7fa6fc1c3aab6084563f9c57bc6f280b0f6439ae5767ae250052827b22cb615ca8c311e5c5e5c81fd119b93bed766254107c454a8ab7871d64e70de736f4804aa94dc32dd047c5c528ffe6 +B = 4833f9f80cea39cea88a47993e1bbe18d374b92c6abffa4d742ed9ed4321b1bee84e0f56bd03a362ef4f1262c870ec64f5af5cf6800d885f2eedec60f93596970e853b4d4c75ffdddc5cd257a4b2f35e397afab111028d705628fe7c75c6a9ae13d6af6175354e05df9e21c4fc7f0e86548dfc0c98424b0c232afa79ecac29357877fe87a55db88bdf8694334f7503baa5d836323f2c0ba3d745b32056b76530108ecff81bdbe32369cb0dfd325f4f68357eea539749cbaebe12a83855cd6bbf7fcad36d44bf93ff14d76e69e +GCD = 5b3381d11052f443eacc0f25b531239167105c6f1a3681e2e723de7eb469192b05198f4f1c299e3973f91062365f8e88f6f7892ecbf02a2b63be4f7d33c886c60e36391a650e3aa438ac1edd28776acd037ef58917b897a3abc26a295a7cab8b996caf53414fa + +A = -1f959229bf50b205f4d594b99721fb6aa2c7fe8cd067d50018efa36ee7cfa86e96606498a4d195db23a8f3582d7de69283ef10abf6abec3844b3ddb7e5f84097bdbcb159882e250ceb044f76ffc9944411e97fa932bcc4a2b4cf89c24d7c08369d044db92e03d29932d546b5a4de321bbe6c5c43e5490747f65707f267cb603ae7c6ec24b53814df22ef17f0a71be2e9854a76f38c97524491ca666e23687c042333d2ffddf097000d41b8b3bdc78d409ad702f2e8dbb50320eb25d2c60630a9800aeb9b2883fc8088230ca874 +B = 10791dc3e6cfc6bc6344048c57f1b84af5f213c025fa7fadbf9aadde871773ec4ab4cd4fe5ffdc16fd57583d90810fde01c5c7132cc7aecbeab86d7c5216d6a8f6805f34e5726ab4b510e2b6605623d5dce877ec4a3fe0f267a41b467c1ce0f807b5e51ea1e96eb94c2f03136ce1046e0fb7d070338714fd3af32acd65016b0095c44c8fd3cbcf3b3ac4799ca83caadc599ecac8c7c36ae8b728a8128337b037f84ebe84169aa9510571e3cbe73934e37761bec51588eb5d9fd7d41718847959c78e6912fcfaa996edbb315ab8 +GCD = 854341ad6c6b2035fc174490be2ad3964472ed109e7de141ff72f35b7c80e4d6721752af249e045fffdca7ae34cfe8a9fc3943139fdcc4c43bb909fd2ffc72bb296a3b166178b75e46455d1c81c38cb3dde91478bada7cda5aef5989dff6b43e8e9918b98a6c4 + +A = -12b4ba0f3598084bf17a73ab706f37f60e13b931d2773c135f7d4dc6d52f34cf5fded897a04d1de7e3ac701aa2b8117de85baa0a4be9b7efc231d0e00dad0346e1952db3aad175376d98691ace884b814195c7cf7949e6cbfb019bfa1bfa36f208625178c52c3c6a555bb17f4cd911418a0caacb3e93628a4997dee8dc59d4189a81b1f6241926c374717c1761380ea7b6c4e1624c53861d8606efe06a01846ad715c087b1c3fe76c9dbe81a32a6e7bfe43fcec739936359c1a995f56e458621c3bb0f73fc824f584919dc5bec8 +B = 1414e5a0c3719e09787f64a46147c107776b5d0368642a204f6650509821ec9fa088ae59df37154f0e36badd21171e0b6f33bf35de1377e5fb5de339ae59d96bb66f595725533fc2b4301fe9bd161625e25ba41b350413f50b6f322abbc4d4a0e6f12ba4b1aac8f2a5c7e893ead4b3faafcd88f50855ab92a48a62159112d503d18ef073a8d211a0153e2fedb974ab02c6563be2d3658d30d533c38daeacb85efcb5a13d329c7c06b3d644df88983a76948e281cf6e1ced33dc0650308da716f4fbc384a2b355917e8afc1989e8 +GCD = 325dcb67516509efbae96fd4232035718e8dba318e7b9d73d3ae01065e12c68399501585dbc55359e2c7ba49e2bb013e46639fbea79e90c9d88da020f07506e50799964acb941744679f41a74b82a86490a2f98fbaafdb89e36dca3b4c9f8b478e4f3bf72acc58 + +A = -4fd1e47fd914ecdad6b131d48395505ca4341b1e24070105cffe0efce7ec2848c602951ce7e7bcd5bd58c672371e571730f67203aeafabf883f840067c53a58089de95721b806c29bae1a14b281971e4d2b091f4c8117a052ec6a68b76073dc0303fdaa3ca6f5858132531dd15c5aeaa778572dd02d4532e023cfb39ffebafd1e2a7e8264e743d31fb0a070c77d08e33bb121713debd178f40d8af76697ec15b5cf7f140ea559f49acb9c8bdf97c9028d6e55e7024aad9be5ad2a23673669cc7697df24a77adc749bf71bfc6cae +B = -2a8fac5f3183df8c2ab3b98c12273f110c30d349cafa7e1cdd17fedf727042a5dbe7e0bcac8c14b6974decd1ad2dc7b5bff4ace997f9038bc3e97d411b5e3381a904667af9be7225e0239fdc281b62c43cc401af9b7eb010f396ce98e401b36111d0a94320bee8daa7c97bcd272ac21090bc8de17b53fc2ea4fe9cfb304b46f682a05633f9ee5f12f093fcb8ca8d284bca7cef7342ca21467405236c3f69b2a0d05d9ecfcd4fcc8e076d8ed3a1c039489007e567f0d1806534ebe0d699ce68355c2b70ccfa55d9d2567210c5978 +GCD = b9359f0391ea5e2c8a0d71c00caaecf6c9330e7753abdcfb42e5608a5593f903722dd222e57dee4449a4d32c1b0445ccfb157f20848b952cf0cffba9b0c12dfeef23c08faf77833d30e8ce17f98c2ba91bb3261e3c3447e3ecf58d6b7c4f83fcc864f01c326d4e + +A = 178ed2106ec30b65b08b0b24dd79b31a8d07510dd56f7455644def261c2036b0321da9e40e235bf0f8241e26823878d90e0285e0f9f2b404b9aea0459edfeac09171c27fec58026432188a475754c1e9659d04d0f3a34a61fd2f0e2c630761871a2ede715f3bb7504d106c198551fbfd51991cd07d91c8dcc6f68c6fae42d161128dc222be9809822dc16d95c08dd27b8c0ca72f9263d45033789a8c4d33ade74aaeb5584e62edcb9c5ac8b3abff4fedf6c253a849e1f8679548bca0f883e4c76fd0b13c7f98803c2ce8e37ab88 +B = -54c516ad07a7e038496372cb032b4f77f46f996f9508917fa065326a96bcafab421b0b2fa93abb0215a2307c8e01752cb3dbc182586723ee82ccb49dba895abfc2a0b4600ca0e43318b4562ca0b0a24bf5cd820c82ebf0982e0b6d376353cfd2a1044bc83c7a8b5e8bfb7ba4978f6906bd8861531e183d6fb411bfd6e6e2f2a9dfec2b0020b7959f10ff6c3e9834da1e35a58209e51386cf14d304d17a87d9b42f4c330d6c20acfb4ef91e5244d5d7c82b00af534640ebbe75e9449fe9061e8f3ea3732670f060d27b43ba24f30 +GCD = 46fdfbfd0917ee37b42c03b07321de682868704d67178832030418ef8d795fad359216c6c38b13f095f6115ca1a8d42b4f1e551340776474f59a4bebd1719d2cf8873f763020f375eea773f12242d6d580e6f69b585d6618947209d2615d9af9deb136b9444388 + +A = 46504e907a83503276354d465a9e7835dd1d39447d6f5c53e4128747e420db87a4d6f6eac237248b9d858ed203918ab79aa82e622c3608d8b755f6da6b5fa5ffbbbfa76c1c5d749c47de43a6bbb9a944338cca0fe28be90d89ad12979b8d598543b1447dce8697f4799a0d4ddae70c9d1195177c8a5193ffd1de052e15a2c34f9f550f46d0247b6dab40e8b6bb68433852f9185ba5e9e06375d7b565772909efe3a3ee351d89d0c2cf7d28623bc82c4ac7e77ef98ec55ca82763ca1640d8c2372e63e6c02b16745027b6ce56f7fa +B = 4eae9d4e2c70f0899f3c6c8cc74f2915f12fd900fa606988822bf254bc9c5095985a951d98b3c069bbda6fdd08a85e0f5004133e48ab4e757a33321e95ed97957faead6de30a0087548f78b9f44c64db94fd2a043faa1e8d57cd226c17c6553d5123b8acfa6a0dc549d5969b815b9f129fac9f06266fef65ad3a73685b194e85e381838c4643fb1ec6cfef7fc49daa369fcca7346ceaf53f9f9a121be0a240cb3841a67c214090461a111c7c4602afcb3078dac4c59e122ba522b223835d640c63d714dee36272ceb69bc48ac3c6 +GCD = 18a87a65011fad33f9f783dbdb0b13316ef778a985873096497d84b18201943c235e1d2681ea924414e8592b52206bbd454da5127b06ddc13794932f065f1dd6efbda2941121df2d497a9d13006d2d4c2039e935251ad44b98840b5878deb27ae310fd26d17023e + +A = -134853eb8de7792e6bb4b5197e9c55cb595851423998e33d3d53ab1fcc7eed63a60aff06099be5d8a3091c013dcd34606967f5eb638d947525eb93681422a402d33f8e12c9a1c148607f6615b90b089d850347f12289422ef5dca8120e5efe8caa1bb4b27ab132e97314f9c696e5449aae03060b2493374b1d7a97294edf087cc85a85a6482f6d5f26f045f7604698d7bedaef428cdae3aefe035d5ca97288febc854886c9b6b53ba0b0cba46394dd03ddf9199ce751fb45254e031c24928283491994ec6e263c9b136a64e096b0c +B = 16cb2aa16d372302d569a8662dda475890ef2e0710dff07152b42f3c6460e300af14d11adda2e8b6889a5c894584efb82d8425bbc0b8c8e3eb68e70a3903269b774a4ec947d3bad6bfb310b3fadb2ba2cf823df0a6bf8a45c80815bdb83257e18aadae98a27b8c4215ae3f24133556ee95b63c2c9d5c71e33169e5325a899a5b13be11746ef6b8604415ac9e161d5348f4c173898f0bb38a50b7d686f7df72b2c28635cc89ad029c08987261267b77c1c0da8cf4daec91282cb279d701811e41258db5dbbadfa5ef88ab35c2442bc +GCD = 16b85e0dfc4a7c1463c372bd09f43e6b3a191f0c6a074c6ba728a538c54327bd9c843c73dcac526872790a2d348820fd215d50e39e544bf7165b3aadc0477afe2caa9effbfb4c87be692b9df3cbd510c31de7118ae99a17af997f3408e7706a6d111275b6604cfbc4 + +A = 479dbdd255485fe7ed2cadd32a19a9e4e54ce3a48c17f2fb10438c89e53e6378740e5cc8c4866c448c1195793a0836929b473bc64929d2ec8de176e7bbd83f4ce0a4a348c0da4e0a646f6382c5ec309bf6c2252ed2d9e1a61455f9ead89734284e576b48d3e5e8c3cdc339d9032b3b78e53d67d8927aeec68b9fb5660a2f147a0bd8c22327b371b9d4f82e815fe3661ddf7da5361dd7706e2eb8ec2e6612f5bcf255e9303a72b685a2123472c79825458a98ea8e401c15e155f7f4fa97ce5fe2687db0d56ea4f17e589ca011c7962 +B = 47a2276424a8fcdd6551cb70b2e883f52a2fa62839e740448522f8a37897a2a76ab614b6990e07315f357a48b0cbf1d108ece5a33a2e430587c240543410302998b239215dddac39a496796bdd47b569802fbd4341aba23c36824e5e0eae8754cde9807a842d7ec891618fa03f6a4ee1f98890560d5c4762ca13d5eb87f5ba55ac885bd4721ee3311fdaeae2d36d2ed5aa552816dc9ef7cb8d61c15bafa7e16d692ff6dbe1d37e40bdc01fd2d99f8a5fe52ccd91836244dc55e277684eb6c9c5223fc68aa62e7f6e9474f333320e6 +GCD = 31c74f1ae4cc28ae9c88e51cb1b6e8a725939a1c4cca9d535cb252a8d17cd6931bf6eddde2f306c08f5d64e6361d50d5cadb714c2dc9f82a48c9406b83b3885c2e9d04d50196feac58c221f5e2e0507d5832cfa372bb881a5dfc737562f4b69ec53fc280c1f42aa + +A = 12ace83c8d7e178658de51120c6ff7042cd3b7ab97a238d88885f281e115995fcbfc748cc9d11793ebe291f6c6b4b39b26b34a4457dd72027d5ac0b77e580aa0c109c72a0e13a39be6b495ba2fcc61f90328b9f7ca1b75b720d0f6c44e4b1215658f1a6e8c34d3e3adb064c3633d9a9b28186616f2ee61fae4047bbaa9d1bb9549a2414fb52a7b1b8d76b102e7d0665802574f1f6f4afc806c4afe3ccd56274a1f6ffee163d641d9151f3002fdeeb2f0b4e67026d0e058287c3b5e79003795b1ce99af11470831daa9ed8f511dfda9 +B = 967e6b02ee6e1004fe4b2bd9be5de4cf23fb566baffec0bfa5fc2dc4def2800e1478b8212fcec1762f30855ee92199b70697d51c3683e204cc1bfb69ae5fc3ddbdb956f70fffc34e6bebbea236a9b19551b8b8b5e4f993e03d8461085f6b424b3d8bddcd333ea8cd14839aa22edf4598a777ed757d097a6056366bc2e66f6ad7101778ddd31c3358d2b02a43ab15a33306d0359417ec91f043396d93f9788b89778bdb9ed45e8ef28b30a3dc6ac558bebec45bbddd71867e2f505a7676bbd282c9de92add37a50dfad8ef08f1eba6 +GCD = 51c98373ecf6553f1b2747dda4475bdcdf43c01d5bb0cb466e3ea6dd217fb19b252fd6fd17638ba7f0ed4a30bcef060dd464202f264d85acf645825ebc6b16cdaab39dec692fb3b91afd7d5a51f399af800ac96dd087175d5d8c342f4dbfaf45c14150637f42003 + +A = -e269fd4af89e7752c83d68de444cfa373a5fc3156743d790318d28df826201fb3cbb201da72cf9c3714517b9331e4c38e43c94b49c01eefc1ad8e3215f419f75070ee5b0765a02a500ed4cc52c9e56fac05b88dc80ac3311745bcb6b695df8c13d0289f323131533b88823b45faddf9edd240c5aaf0cb19c962daa78a913875eb2208df9fcca7845ebdf1402f217bbc98495124ab003e9b54f0f7fc7f4e8da5d3db42eb7d511a761b41c7ea3603a6df0dbfdfaf1a65d092f0ba56fd9187a9b2d2014b1c845aeccb18d00948f4d239 +B = -36b650f7cee24b0dffb8d60bf3ecd31f01840e84bd20c558c7a2ba2d86b0ed345580f93292ff42365405ea5210e3bcfc51963d7f3d1eefa69e43b1c9836ec984472ec4dc4bb06a8b09de1c3169cbb9683b14d5c483d15df972d992f48d439fc44661597305ce8c88521a3d59e80722745f9e61d6466815ae85ba52335bf5688d8ea23a4c607fbc4414dcc8d9321e4683e258e8f9ccab49a078e0abfed4e6d3bad07680e7438849fbbb9561bb8e9a165b9128791b8dbedab4415c7cb3bd91fa72798aeff5393011db3e0935f073e6db +GCD = b9d76ba3efd3bc15756258c19b0c8e2bff206cfaae8e3bfe9484a73564574e3761ab5d67eedc94e4de12f4ad42e9d908b45e9b79fb87c4060034e48ff5377da0844945a5770b71d1dd18fa521cf0425efb27cf4bcbcc239c228dcbf8f54631ee3ed3db694a5c063 + +A = -bba04498cd3204cca36bfa305dcd5bb7c9ee54c8848098d6b04c51ddb45476cfa1f41030132c5614af03c0ffa513c8c7f4a5380870509c573c61aed5588a6789656767212a85c3f65db25f06c32529e598eee6b20d7291eb597bfbe489f238e9f7e0daaa556400bcefd39e6bdf421a79dccc2f4da088c1634eb8871b9a906e77f1ccc7f4b75b3b2f869e254dfa46884d452379d2103ebdb9ade615d2cb2103e9dfa509572b2fc925d3d1399f125848a94d8895d0a005c749f11f50e63786f7474a1c8258f7261c446cd634f346b310 +B = -a0e1ac596cd6ad5d6c76391d71d7cf973b9af40e70af97ed6d4cedb0596704aab60944bec9ca7c78b9626a78a8afc7905544a6045771b049c9523366afbf50a7bb183f2fe927404ffe5cfd7ab9eea89bedb7f1d2948521ad413db972722a590f7df032bc2ca289db99835f4c2862792330af3f3f699d52d32fc5a97574706067de637895f65584b8580860cb04548202fa0a4ed1a78c2c06411e6be4a5addf2a8652d151af7a335fffa7032b4d5540b11e7f60b7f34af984a29621f63e54d32d66a875b35f7da75781d5cb090c75f0 +GCD = 5aa6a389e8e154eb0ca4120058da179f7199d3aa28d111f379bc834987859cc8d2a021635af3a21ca7e5dfeaad33fb48ef19820b49dc91c556dc4d3440ec504e159fa83ec455c8a4e44bcefc63bc47c814f5eb44128bb74fe761a7e8f046b6d977b83883adf12ab0 + +A = -2a8d88ea2b666c5f833f986ed6725fd3f0d3793e18b743c7d0891942e519f101d653a9ae11e8600d785b3f46f4826c9d858f0703156d618fb1d7d2c37dcea8962d66df3bc5c00d2a4c200478204b6c793a33d37169cc5f95f46b5b2912be10b32ac5656a7fcf982dee420a9fdc799ab05c03c756b28ad97d4e1fa94952f0aa92c883927b7c7fcd9210bf07bc903e4e231caa13acdda3efb1fcae0cee44d6cfee93530ab6d7f62c2f33fbe21e8ecb676099a844c677744dfc59ee6ed0d4152f360285d1057a67e530a0d31a26f4d79d8 +B = -4552356256168426b862edc277cae7444bc934a733a61839e942592f937a3d6ffd2de989d537512aa30bdf6c137f688c20f24cf747312ad507ee9b1a15d71314fa8adc422f05d7450abc038a59783aa96a4ac1a67f38e8c91b174c3f0d1ad252349c783f99028631dc6927760acd57af214e40ee21d7a47535a0c3f456ac0b97ceb5e165eded205aebb4ca697f5939538c4c257bb8a8519303393714e08f56fbdf2419e4a47974bd2f194f21ac86c553c19a35c4b5e77d6ea649329fdec391a452cc2f91398cc059f83bfd3a14ba3a +GCD = 56080f82bbfd98cb52f632c18f6e276b1042d1149acf02773b233ae4c9d8138965af412fa0434e34f3f67e4298a214b744e74a1a92debfe01db90d457f83139cb9ce0dbca1385a7cd4cb67d42fe5148347e8d6aca0d7af52db2f9f60e6aabbdea6a8586aee0f7c96 + +A = 570d697470ad67a1bb68812535ec07e9cc38fd4556c4b332c2a8dc9ed8a97bb81d55164ce7743ee77879b05d7c2778a994bcef891c6d018b3417a4acbac92a59bd3e41db10587b7845c3816d037adfab0dccd8c062559d339e5fbcef7fa8c8904f1f67a2fd7830a981890ff5cfadd5d733289a9b8207265753091970b6f6a8ef7d0b639b7bf1da279cf97128690998c41ac2811f898b7cc45ecbd0c6b0e3a976286c99fcc6ddbe1bbe01bc65e22ecdfcd24c4b81bd2f0bf825c6b127edbea6894df1d70bcc6cd666875d73543a8d3e +B = -c8cadd60812092823981ba3735c26768b89cb5ecf3b0ceeaec33f810ae4f15bb08ba8250928df5a16e0f92e4f4f2a0d249fdfc2a27b93a6999490ca39220436ee6de8d6ed1af4092978d1ec46e58cbddcd4fb060c032e1a5130c1193eb741f64e4540573ac42b58891573a19b73cc1f751074d36c12591f7d6e1883ddcbc393e6dd2ca1a7019dc40082f3e9de983f068a37fcfc019a61ccdcc99f2fbb22bb6b82933d4ef8d0010e7dcaeef4c9c272e167c55e88ba6ec606f4048467027d55bfe939ac13480713a19e9e92dfb3aacd48 +GCD = 4f9db0766e42779807c5716e578f1e07a4336a86ad6783e251e61e577ae74f384f7e0ef443f8b409217a83567ea8bde6e847fab9d61304c623ffe34bdcf10ee8eca726f843f6d8cb909f260f0276b70488e8cec11a8916b3d5608c0e9b10caa9823c1abc999de346 + +A = -3260866889bfed187cb832a388875f4ebc7d63106cc361740350b8d2c1af6444dc20ae73d300081de30442d224aed5b7ed482c8b038bc16fdf162f6c7b2f38ba821ddaf0590e41892ea835737188f27d3ad0eaf795b3fe72f60ddfd612182045de8587b4229b4deaa26d1929fc4ac9703f10b0ea2820e88a199837e2d3e7fa394884187d64c4df7ce026dd4ff6465e1b41fdc6d43509f80613ccc37788dc95bee6b8f1424dec74f3ad8ccf446df3a11b86b89d8a0fdf6580758e9ee1d1b7cfb1da8862db3293b842b8494efac39f2a6a +B = 6c269d46bf0771c46be864fab851745c8d96a96bdc12068317414c551291539a73f551807b5916d7804e19032fdeda271abb369d04814a5e146a6e9b0d57963e45caa932f5b325574bf4fa1c736628f0759a68b63a9a05966da3c11ffa8eea2e26f7857ceca899eaa2339eb2d57b2a4a723aa74f4faff4db3ceb6a3f5c5f56402f7797968b4e1cf68e87eaf0856b62a2d1a4eb029fc28c173f33748952dd4b13374316d7e78b868fae8f3bd3f508fc82d472cea9588e5bf77d5bb200a4babb47e6a295acab69dc0675d2ce714f850320 +GCD = f4d75ba3587c8f87184a69802c6053d9ec75ea8640629d8aff9c13dd0f42fb65b6b4a46d907c0bc3a15be238915278273593a2b3659e7ff72e7763f31685ce0b5cef5cb25a498c4f4411085cd9dc4f51a3f881d962a15d900c301dd29fdaca123e7a759664ad54f2 + +A = 19e4eda7d88db106828b6ee793b51690108b9d53594840b58f60a1ffcb597712c4d0e092518b131e41c39c1a6d04224e2fa9afeea3e70328b774ed7f1fcaf5f3ae421f752be3419ce6b0602b9b7a3a85675ad446fc61461a57c4deec7287041b4c11299135ef60a672dc6ef4d1024ae40187743e952f0744ac911d84c77d045633c69248dc820a751cf83e2565aeb9f99a34df85dba3a53ce3a1276b3819e4864123bde29d2396aedee370ff9ce7f56d7682d5d6e6d5136ca0b65c44dd11162542999c1a46fa11dbd88cf9e8b9ee3976e +B = -123274288f790ae6bed2a05703aaaece2bac76cc86f671c6e496e7d21a6358f344b7b3f97e80259ef9aa246f002fb77895e63db6250146636fb9d7c2962e88446a4d4ccb44a10c112f1974f074c42373d0ea96906b1d0860fefd91f034d88fb01a68b4d1951b1d18522bc03969cb9923d454d4664be9aafd595b1685465ea1608f1ace6fac6481317c1eaa4856e8c5b65555284d0896b7577b4a3a524041de60a4ee826d93ec571877cdf5a8a5538e67720bf4fd77f69f07306653784ea5a9a785eddcd1a0da746409d0717f1361b9a78 +GCD = 3cfa3e2ae7977bfedefd1b3dbf2c920a7725a80068e2b6ccb00b543e89591b551e9e42ec400a93c57af0f19e4d1de1e9ea02cd927ebef6abac12ae1f7b3d8aace5334639afb06cea6899e6208fdcf2ac76c3d1656a76497b0dc3b94c47d92a7dee78df7d55c4192ba + +A = -42c7490e79549680fc543f3c9e56ce3c36efe3200446a55a3f8e010988d1c611fb82b90f5ccaeeb854ade1f065117145d4a160994fe0dfafecf809cfc7ede461d7fffe6f840c0d266e9a59bce2a5707a23a0c260213e629b35345a756cc32fc710861e273429ea2cc735722685f6e7f7040feb8f11737eb8d6577f98551eb95c7c420d4d70b066f0d0c2afb44ec7901eb7b34afb10c966628096c9cbafede2096e2d664b78653ff4c6f57c18f36eb24d94a57898ccd9acc815a5f89aa7a3246e1e32ab6bb2ebf693272f9f5c349897538 +B = -47a51631d32fe44477b979eb3c6f0b8c67e837ee37ca451e3b2caadf918f40ba8f97d9215a6d86174e1a3e63683dd5a2d1c870dde6b32081c4a75068bc3a4adaa5a035d3e2d93d79f7b70ec5e9579720e3ae84164c909a606958d6cdd0d3e33e405157693b678fdda9830a1d8e4583c63a60c3f217746d14b0ff5d8ea9693f2fd3d1b57f84bf43de25c4e9755e4e494f86230fdbdbc6b0f8af3a2b072ea5f1b6f9444226b194d7f9c715084b1b247365abcc5a735203f0621f6833da7b244245e8069dc37c94e34a5bae55547746f1470 +GCD = 851b5a2bdf41f30c173f28e4a35609f70e9ccf9056221d788e80aaafc043916edf0c182a4fbf357a45074248f7072fccf298888b48aa6ff874c92331ab5c3efa500f750e2215a97161bf1ac6e425f7330d4a3529e06b4a241972cfee6e5b48c6f04e0736df00f4e278 + +A = 992283e046e9449d053b046dfbad56a99f4145c01950fd19c3e0dcba65a571b0ebfe1ecdc28af8afb2b7b223bb414c5c0d357a147e19260dc42d6e5c16a663e3429c1a39d73040f3b5666535a6dc0c1130aeaaa0c429fd2f06052c4375bb4e8a8eece5dbe8f68cd7263db5a11f712253b056bd7dcf6ad5760dcee092957201715704b7e8d1ea5d603b720e94e80f3405561b63f249db8f84859e9b8326b83a8ea67fba23047f9a619642168b3d6b344b012dd9eda5ba7f17a9d71b25f0d037c526af5ec545d1fca5e5cfef45d8f9583c +B = -244806ec43494fb8afc2dd3f8a05a3b6ae973674564f04e9a94b2e97006a15d062b9fe2a1a32cab2eef61db18ad4be5a1e6d81ae618e14c6669e17007a6f81ebb169f2f60561c63019198026eab8a33af09588dd7d3a0612cb19efd355767e62c613dcf52b04e830694fec81c733bacce7026807279a74b5c88030b1cc13f5583a28e0ab2d77a3b2e0ace71eb05245889ca135d98222f6ee30005c516467c54dbee0b95964174068471049ab342780865d8c0f32d2457dc5ecbecc54b3c2e33e1a075563716bc0b2b625e8c4bb02960bd +GCD = 5ef3df6b409c57c5015f7e75fe3d9e68ce7f902ae1f89bee30ae0edbbab5ae7bbe7ead24be38961f64bcff23a46f0ab9ecc48b3094edca70b6315a5123d807f63cbe94f3ddb414ba10ab395414eb7e520f73efbb0954398dc8045b36c51aba8291a36b20dc30c5427 + +A = -2cfaf6ef7f601527d1861ec20c05c16ea40fe84da648b8f93995e4d16cac355a723a8f38087f46b4ef2ad79a5b02da5354a1351859898b6bbd98da6a73e99f62e7bcfef5082e34d8b01ba3b67445f2be76ba25932f0a5cdfc458986ffa41dcd17b87206974a1f5d31372a1bb3e515817de4626ee1318ef18ea2fec5ea1a6d35c05b293b96e4a0f314ab4876986d12f57ab6383daef654c65ef2eaf3a430fecf555101e0a5d050b6034f5aab975c397a813e25448450fd637972d437100a043590b57f0b6d0f3e736319ed09d93210aae61 +B = 49aae949c54424eb967e24b5624febeccaa784c8429707aafeb4e607d36c5149856b8aacb9f00e16aabb9ae12444fa2a8552e78ddd42fc59d596e0215cd3c69f3429181c83d10e8d1bbac096d8926b1db560abb765f84f11776f6bb083b90e7202435afc6278e4779bcd85141b8378988c4641d495a4446a85ee9d07a24ed03491fa07a7b77bcefe6090e03614ec0aacff5bd3d3f53c1191ee1c5ba241120158f2fe5bb72c2039bdf1b0c32f4e3075b6cab04ce749153b1897619a2606be3d1000760f94dd1ffa923b242f98dce7d027b1 +GCD = 1cade4bcf4010cec6c2e10399370d7869e74a95e55650ef8534f9fb47d832e153c65df3a7188e638cf98038e395daf10dc2ab1591c37a61f9289bb3fb1568f55f95f42ecf34c49b26841eaaca6a9f71b3151e11b9280eb658fba9c6de91bde34114e993cee7cf5e21d + +A = a9c4ea796c95a7b3f35c4bb336bb4b11da44cffecafc0db7d647588edfaf0e6d8141161b3ca1b87aad446f1e8245b1634c889f0ad314121f0d11407495ca3c4823b9a25e02c541b26fec1096def857e98d5cf0a7678a03cfd5746731e2764a36c01d95427dc4f1e40a652078e16f149ca8a30b9dfff2b3c08970c3e4ed9fc95cd9123a5cd83dd67b7fc93281891ab445496c5d4a5d18a914c1b5d6521d53af7ffb159e1575556ce7cb002ff96e9dc6c476427872fb4fcfe68f7a1fe5858ef352e7f658f19b920a060073e5d003a23d4678 +B = -3261ce369957b0db7eac4ab930729f070c21f6fb84f7e4dc2eb87093ada48f7b5ce29d81c59e98c2208c525b604376ddd40ec38638bb6e16d2a1d68040c726bd16762c6f60a80f9926a704c525be51b0109d6cc8b2a3e8679b6f62ac1b321a1a7d0cf36795f1e42858ecec24eb66d40daf25a5d3eb0dcecd2587ea19a3d213c840816000d51e4d041e740989aad76c73368c87450e997990ecd4ac6dfa55a7d4d62149c0a08fd072e731d1f691141bc60f0a0edbe84494f515a256d5ac8b62a0c129da7f969fb2b6556cb586aff71c7120 +GCD = 19aa3dd163f9dcd5205fda207fa62d9a5c48534ca7217c272f862ad89fcd57c27f205ca18cb33c5dc42adc3771c1f806bcedf912e1adaca321d3067bc9cccba02280548175090507c76c70be2a49d9c504ff0dcdb1e21d4909e30b5f733cbe1079bdcccee0b1bcbca8 + +A = -a41a6758ac0ce626a2f88ec98c74c82c9031fbdf08e4ade768fa7d0ab0901ac2928483e817feb95f0aac060803e266a3ba48be7bb1a7da130325802d3baff375250c5f27f4c724153d189cf48091bd9b00a51397af7a8c2530c515ac967664e2b46e15775682ba4d849ebbe6b77c6eb1f724d96f371b1423ac84a3a16ada86a81ab3e90e21329abfa3f47ad9bbcdeee7c7c24bf81784349844e173065de3249e9e5391ad954e3f1aa80bbec04266e26a43a9de8341728e3311da25fdde1677ef59a79b5f8ca9afe8ec646e5266c269ce37 +B = 127265cbca40f0619ce99fb0a9aa5186a6aadb7c39064d72dfad9f359c6e81fa4903a7243d44dfe67642267f9281c9d0ae87ab332bc11a056151c12e83811125cdddf25cd8520606c38105d9180634e2ec859a307c3a43f1c01dcac63832c87a1ae30060bc6dee9ff65c154ecc60a80986d13f0c63e82842ddf9a501fce8e6ecee9c44431b81f9baccb33b582d6bf95e1aa9f8f59d3345ed237548bb7b2d8002d79143a499e4bd700097a69642814bca89efb228b209ec430c68d35aa7d1f5eef19e02ee5a8e29b1e4cd1a9531c4bd140df +GCD = 2bcb6613319cb6ece4bce2323ff4071d85a84afeee6080c24a961a3645098811b27278993b5119365f5df0ef56129cdaa6a69023435f36c43a535ba944deb5f6682d39244ba097639661e34e788af0729eebe73d68290de9591d79c086a671447676f95fb32f82b709 + +A = 6e7439658308253ae3a2fcb6b11350eca6b3626524a4219f4a129608324afa72d44c1d942b884e4e4a1b5b02098bdd9838dc06fe6925f182f7ca12d55742d2531fd5b4cfbfb50a2f27c18c14bd54c18ad22fd50531fdff70662d31b8f9a01282acde6e62cf2257f0170fe22b9ebe371fdc595d2b341947e3a1d32188dec9faae778d34f303b890863004a735a78d65907f1204100186960a76e4d33c7bd35d6b9264dae859bb120b1fb7a3c198ec683426bba6fc65c46576adf22ca5578877d47742b8f7eb6cfc9b82cfd511a9886a9a208 +B = -affdbc796d31f7a8611806a0983b290007c7d75a7d3a11710cbf133b2f901cc63e6dcfd7f034e9e9bdd43a9514254a22cbfd50a412046b540b988f32c78f4cedc1ff82ff6c10e3a664dda01e886edc6dddee82077fa06e29c14469b4571238a7f3882a116a1c0eb6606812a665f11a9298e1d52ada7baf8dfe12ba92cd7c8e530d8ab5a6d2d41a15017ef74b83e5101824bf88c3816e2c12ef335b2817d655d4503452747471d998d1f57aafd78592f03f528381b3e41a58a03157710c7585a93d3ad8bcaf10885593f3bd307cdf77db49d +GCD = 493012046bcba1917df2dbcc2ef2783fb7759753e6deb8b65f243ca26b1ddb99893ccc69a964829cbb9fb00d6584ac80205cc7eedcc136374ab204765e89bfbf126924c47f6a5ae37a0505eb3ccabc7d8bf3845079524b323f5369e744ce74e78dfcbd4d98b77014f3 + +A = -324db2ff987c47de97f3fda5ec3b4950762c0591a96ba4ba7090a6d53b7f0e2a275a6eee26d1b90256e879d481b24702993e0c936814bfe2d823be8f411c713c8171491304ca238a547d626f2c975d9e9e3a2dccee6584e8a71e269f90b139aa98e59d27100369ead5fe18631581c79dbe81d16664b660e16c96d8ccb1191cacfd2f5c4753b482768b7cb2ae5fd3bef6a9aacb4d78aa2f3bc8066a885ff65dd6db8afbae13a96621a3f5164583a75b4e71c6c0000b6446838c886e88df2f7280567c5d1c571423c72e2154280407e6b4bfea +B = 153dc74164d05e8775b9e2e7431ff6eff959db8f33f4f02beb7d5511f304d46460ac7fee591b3cd45d79796aa9b2608053d9f076da2f89c78e76cbc8cd0dbd1de95d6074de5935e14a7d2f6cca49cfa839b7c6455786ae155d97187de33a03b7e2421f9f7337748490b312b623d0282465c2254fde2eaba9302cd84ddf78f4737e22681eac32108a21f1ff7d4ddfd74707da02014def614d09d275ec49823794ef97acab0293949a894d20b56815007493cbb8df2a8cd1c73d7fcd45337dad5b0dcc44c78a4a7e003b33a49af5ac72f7d669 +GCD = 9c45c0db9668b48b2dafe8d93088815943af4cb3f2b7048474faad800e8e8a0c785c0dfbd2960e22198a01567f6b3e0b991ba07d9cfe13ba1d0ffd227ecfeef6a181325ce61f6d290ef4037c6a5ddc60e94b7592271c334dbba5349ee57b93c63799d9e0a4af332d3f + +A = 3728d53cd29e37c9053b8ab8c7462a8e5ac2c672fd11390d1ffc4b92723537f0504e4975969a6e46136217bb4716f8b8933098a0763d883365526fd7d1df44310f6a83879cd4d30d4b4ecac02f73494853f30207113376f1034964f502032c776798976e1e34d613cac4e69bc6e995870c6f3028d7c822cb6dd8cc69c3b0c1d740155e07af6c1922aa3f97292f0cf1c4f9c55235efcffc41ce1cbc3989943d315fd0368003aa09b69c574135b73dcc94dabb54e4fe6cb3fab81c1153e77489a2e20d33ad2f01652ef00b536c7a61dc98cf40 +B = d1bb2a3567d3ee089830e5ee0445dab8a555a50cae1eb04b06fef95680d3c40e4446bff776c51b1c97b29db1662f35d14346c51d8c86bc946496417915a2d3b90751c709611f9a62ad0ad8c9d154045821c59579d00580ea074e3b150357a22c2f007f4cebeaa87af915f60f46eb068eb03c30cea7e0d4ab6f92bfbeaeca31b44dd562ff9ddbbd727d161a433f7eb8dca5c5dbf6743f868eb2e491c8ac6d93a9e422eda3d6393ffeeb93355593946b56f933c9fc30afd8df4c55c9b162dda608350feff9ebf0f198340158a75fe0f6a6cd80 +GCD = 130fe4fd2b091ac289b64afa11aee9521c74010d4a64c13fb512a07a80c397301906026f219164316556a1d2799a6470424e6a9ce0203e03e446d7d02e83f3c22a22baad80a547e4290e4184e8bdb77a69a2a89fba2134f433ba086dad62d54bdf61d94ead085335ac0 + +A = -20960d0135780a9cb0aeaca044f56006d0a21808a2905bc170afa846f43fc141e20efd635fbb214ee7e382dd77d9e128c1266120302268f5592d85e01b01ce133753d493543fb41e62cbf7ceb53be33f757545a19e93d2f28bd1c8b27ec236b1149b6030da7324bbb98bebbc5c06d97b3db6d1b3f12c3363df3d8b9942d3f4970946a2f4a78438c26d5fdb83f9acec2cf1252b86db03944dd7776ecddecf05edf78b1c5c1f6f1ca96742173422f9d8bc814a417c3ce7f97aad2242cd9369c33f7ebe69dfec94c08297567c80932e06892aac +B = 5c1330c1bd410946b99cb44fc5d0e1fa4e2b2a65e933aac7b3ead33b69902cd33552dfe086ebba6ce5f88976132593591c32694cc46b0fb1443db2d4c05750b824f77ae278aa42f947248b66ceba3140766db8fe832e42c58661b05971e77ec58b8145a8615764cb047fef46d81b28810f156b036d4e1dae0f7579efd2391ea5326e18fc828d368a6d898b966e598918f6aebdc0017d253848350ab81dd8bfb9165184be7482c4adb717c8d8aaf9301713e9390a698b73ea58be37e2628f1f191438380d3453223fa3df38b25c2da52d334a0 +GCD = 786b482e548965b1769d214975b6cba3478140caee2aedf19cc0adddeb05eba0c4f2e0c8b96a2521e7f549657fcc030ba10756a2b05635d30e4057a2b8ddddf579045aa7b7fc9cf4f77c03e09d82f8a0f12194fbfe1a8f9be145c40713ff49129a38ec4e16dd8f741b4 + +A = -13c0aeeae09ebd2d259e5691ebea9dad07c5309498cd33a82c055924f87e37a1721acdf7250cc93748d2be5c5c1a21deb205ac3903636aec5b40ff88cf7ca3bc733e1e0a428dceb67684970ed529b9bdd3c362348f1b5557458b29a0120324410f8cd89c8906edaa6ad5261e4dcfdd41fb72fa02856fa0e4672f5274a06edf011acc78de7b21850ff26b4a8bd127038b3b373f89709fedc330f3bfca998fda71a7f20c80c00f9dcc2fe6632ccdf2c7e53a2e7728ba2ad5d0e40b7f55fd12bb55280ba6222da2f2081a23f3f109765e14e17934 +B = -930a79283b37a9bd126fe8d54ca1b9efcaf0b7a710479ab4b63f5fc89bf39cb0174eaf663eb34ae199a3a90759ba7042618954d80fc38226a5ec9032a43ec8b2ad4af6f87fa564efd17f11bcf9801646e181ba279514406aad58567d9f9f53d50a76b58ea07f22f6e141c06c459691f868eec8eb9e56a40b28c7449ddad2aecdc00d838beabf2450c68f9d6c652ee592a3f2957f4282560a0e4a2e6d5787a6543c327c6f4823bf27d800c496e8b46718f3e5b7b672a6b35c81a3ded205a227d70b8f8a9e807b4ec7adc2ae209484e2f1584c8 +GCD = 3db80cd15358c71079ec993a417b2318c09e26bb5b1e5f02c3393b5b19f7fa897109eba8fbd406384b5b3981fb2d1e1c43aae2d2f006036a2ac825ff4ec2cbbbca56d2843d3b0152b4501132aeca06793e1f43aeef718ab1547b8eaeb2680472f2a65774f7bbf464651c + +A = -21553f8ed6e9f88a5a48e60e55f328b46dea2f55a64e080ad388af88c22f7905594413df715280fe937f7fd386ae43ecb53d55b9348d3666ec6cd144da6d81eab33d092e0b3480d431b6b35cb9d61568f64b8df364c929ec708de23313c2bff04b1deecc46b9450ff374a3a5fa8faacdb29c5397a1aa0e0a278cde58dbcad55cd772061a49aad0583250d4474cc24bccb4e6c00edbb5d10b84e80bb24c1292f605c8c9d804a6a6b4ba3e3801c0163c4814865c59e47bae162f9505bdb61aa81cf26f8c080c67347ce0b8583f031d24827b2783 +B = 48d640ab736238b9ef9f86e573f46229fc9269ac24c292a29760727f2f07913b390690ca7d66bf3af66977ed757e886354ea5474e9bfd8d305de7f5e679a96a833a42985c08e1b389597c572eb53b9e0945136e7322a51aa9b002a5642b4c0bbf2943d5ae4229be8f1afa4743a34178a3b8b7441b72d1310fa45d96bf878ffb3de022b172270f1d2e4b273b78d89f8b80e8f56ec94b8e1f17f7eaf1ca1812046f8a2c42cf652c4721c81ebe3a5a7f849c6387d67d5e5449965d3848beddd1ea80c2365eb806a5bd89eb385398abf7363c2a141 +GCD = 9e1947864def325c288082b6572ada0a696beb8cd761b67227c48a9a55db3fda0443363ed5f6e704da27d8a4e9bacf64e3d5580e693fab840d117cc2fd024f8f8ea2eca6c6b861d9e966eeaa7b041776a0c90a9c1e0192c8525888a4d7495c4c7577f1483eb4b536aff + +A = -a2f61f3c6ebc5314175bd5c50793d4dcd6bd8ab5908eddb5c7e453079f3b91684a6302374e43d2081d771fbc16a08caaf64d27b58461cf019663c6f33099112c16da67002d727026c27046cc50af8e5bed732e34d8820bfb861835ebe0623a66ea2d398aee9fc31234f9a32bd91be78498a009bcf86d5a88666c516151eb1d8bd77800233422f2eefc17840f176742c3ee3d218014976c0b86c62eb927fcd281f34b2663b498c8d0115af60aae8373a8665170d288e43185b377aa5df7029c32d67a2a5e207bab59f3d7582474f68375cddee3 +B = -fb489dbf3ffa155b0d820e61509a7f52f5357b9dc82d6acebb37f98fd9d70bb8eeeb4ce7ee22cf359895d96990b4e8245510427d74a63f80d2853c26f158fed0526c17b853c067e26e0a93123005f89c3df30e79ad73692b135f8f7959c9b0b21bd99d252d371e5d5eaf5418dc3cfca7c75b406740e7874c620140eefc748920916283563647d5ff3f6deffc4e940daed7ad3d98483da1115683e53888f3bed190db138fed7bbf4662b349f369e7ed38dc72cbd3f6eea86d3bdf859f25faaa353a7f224e8de34338eb82469cf56e7b00e6d7df +GCD = 13a484cac4f1fdd917ebc10a9cc0631a01cadeb93522811a8c7aecb84fea273e2349e5cc212b1a7fcdb585fadea58eea06e8f6fc91280ebcab8e2de2b48778d647da8707b546d3bbf067f7de75e41cc0206a9801e26a22571b0a43081e3e899948110d789d2bc85ea83f + +A = 4395b701cc83ea6d64835e0a3b6dc4e5bc5ba039cdda2f3ca0bee40d50a033cad1081c3f33b19a2dfbe58107ad50ed586b385d3b81973a6e172691f4eb3eaf73ee83925e3ff4c9a05ff845ab72461e0ec9a501a248830637732c0f8ca05170994aa5c8beb9881818cff6bfffee72c88451c5d12bf1323fc150e836de5949bcfd4d6fda8dabaab425d85c99b64b7504c663ae0274140e3bf8b6d2a8aaf5687c88abfae86f77a7bf2356f1399785326e2771b3c1d08caf476a8328a3fde423884662ad8b6ce5c6a17e6ee5d7005b4401710f2857b +B = -3f7b4559f1603ee48b25561a3be2d0b135d26dd6fa721c5e68f21cfcb63527969809cb550e9e68493a4729040bc2c6840d1e6e23407b89bdc18290ce27879a90631ee32625f909c028c26f4b9c27df253441fb73ddcb0abeb2c05b8474d2bb2506a6cbd399889e25d82809fb99e9ff6468e5b6fe07d64e2facc1391c25323ef8251c410fc36a99267e6f406ca468d7f0773a043f5e4fdcadb5fe0c50bb51ac27bccb963f2efad5e76ec7e55b32115cc677ff2f8c19f1cd24ddfb9a1d1e7f7133fc0670f6846ddf5b89c3489736aa425e89a1e5 +GCD = 3256b914b43afa449f729e5caf16e7a74422a46846511cbe4c1afe8e1facdb61ec9c1eb7d120aad212f1b42fefc7f02ee9c057d14b8727073a4b50a4a25c89ce61ac523cbfd2e0a2c243214edce1271494db117be2eed2417686605d3f0e98cece81513cdadf0d37bf7b + +A = e04824990c93c5bf859eb9993e6047e221f6e09732523d229846ce37257402246c99fcc899db1dfa3d179c2dde4582d260e00309fbc44e27cac544781412f592e9c7180368efaf7a0fd41b6924f7a17b39aad6111e0aa42893dbf4d999ff34b3313e46f49b83bf3227bb001bc217c3ab60fe920183cbe0b7e0d4b0c859c96229681f178aa5317be8188252b438ddfaaf3dea6cdcb282b3785fc3eaa49a9c85cc0a0cc0942120a48d4e83b41de62add66d0e8185bced36e4dcd2d206399e93dd4b9d901107f608d50be93e9ffffd6052d33d0092 +B = 9943ed6897661272cf6ab2d43dc876ef1ac444ce693d9266278fe47058b8f1c5f61d4b0e856fa0c27333655b05cb9d88f1e3984de3159302538011663ecfad4f2041cbe025c4afa241cc5639e5ac753b13500fcd80a99f3b3ff3fac70cd3fca11f6c45f080a6997d592acb3bbaf2774571a3e95019539332635e89c004f55fe4350245fb2e7a451929f1ccbece66144e9cc6802da8f9577e0645ab61f0064d601dbd8f235344468184465dbe467e8b30bc92a6bd77a74e792fa73fb6a68668d9a07508ceb140b2df9fd7ad7990bad3f48a1d902 +GCD = 4285c7d6573f9c900098add5575c13db7eb2f45a4403696045f4fa652b3bc792c57948451de05c2e9a89b1ccf1d15ef80dfe01493f2dd7d5bcab16d051ff60da2d193f053e19969b735c432cdc18d2d28992500dee75f1dff93872f21e15e582db8ce55c139155c65736 + +A = -5f48591f552efb265b53bd3fc779b6ea159323cf170834b8dbe8347e6dc31aa7b619a816dfb450728ea0481865c7510af876e4f380d6f256cc76fa046b7f799e089e79e20a7db398aaa7e2bf11bc6e659d94795ee6afddbfe1f139a45168d60fdc7a8339893f8b9b2ee762be7478ac82795a2c6f75992be4e8514172b3438081ea23a45dcaee58a0654442a4802b96b96a6a12f95c0fa2706ad4d06d2c14941540c34c7f2614a4b4eeb382bfca210da42613ab44ab4af185af54c26831150ec5ce84d2e48dc452c0703afa5407924979192e638a +B = 2d22ed7a7ed26d7365fcf0ab31f566e4d66fb31ddd8558646dc76668d6f9229021285233c885fd6b1cd9b0e3c68ef6f19b2889dbe3a48a71587dee74f3f0654f2d3f6492d0126e9cfc6d133e7acaee177068bfd8cedd8bc672e11e7e012bf4254d007d6c1dcf14c2bf129e4980a2d6ebde81e5ae7f1fb8f4fc107ec3090e143b0acf0ab50b75e096d06bfbcb571120b1c30cb1031e2749ee39529a1046c71dd23c4c6f80d3e2787a7582c132dc07a85fd97d3aa19732149aa3268c063d75f6e28c70199b711516c1f9bb88f284ad9e83f3da9698 +GCD = e0ff6aac8b2ed106e05736b761e8d50b55d075c2cd87d459533566617aaf707bd996d8acb863714d00b5f43567a96e6df1ac700aa713afad241ab0667ee580b7c7dcc42d5c4dc76e92b69b4e2033ddac6e07d69ad20001ec11f69a41b931e1a9d706ca22bbf20b88ed96 + +A = -f30dc9e03b781d1205699f77c0083db25033ff51a4c2ed5c320ca249026eeee3294202185fe3d1311c7d4d1e2b3f350bbf2d7b73adb6d8ccf4b10983b6f6a706c01a80045a110bf43e9709a01c55733553693b5086bec6f89769248a7fc5b68183b32c642800e1b8813488a1b7db986f8cd015eff30c889a22215f9513f7859faa2743524d8833ccd78dfbfcf7bb6c4e3559d646cdb812245c048824e1887bf83a6c7cd93b07d3c283a8109bfd020d424c65f9b970b7cd85df1fab335d31f087ab4855c1eed314c246366a53268dbebce64693fa +B = -d21e3a8635c79786b330b836fb676306831f0eb9e5f83f4183ac19a583982e8910e16975c09084438dd9335e0b29a08a13e0703ddcf92e95a48c4aa92eaddd8126d3469bbbc362ac2bbdf04aea719518c28d642a0628d8fda3fefb0274d932f993bcf231aff895d0c2b06a8f466fccec4947418d20ddbffbb2df98613da774ac8da6e9c093231040056b253038693482a3d6cdb8125d7a10998b9a24b495d94eddf850be7e864daeab9f46d6f07a6101baab685db2cd9eb491a7dccf177c2589b6e0546f8aff74a372f51155da8254d433fe17fc +GCD = 1ec6659c7c6bb687558a63707211bc261f6bbd97bd0e159b31f3083928b1d0384f5363dade67c27486b57b17630b61d280006e29d590b263fc93a17e63fd4bbaf2267f19059da7f16a2075a0fe64c480fd08fc6a2ba3ba1f96c914c8ce5271ff2c983a41962116be2adae + +A = -470776ee7edfae83c1e780efb6411ceddfe38160a199b62428f0c52f0c430279285e374e3c83544b11bcaf779f2645f4f5fe6dd978ff0bf81ca02d5a7d6c8ad0e770046c712c4abda8b17f0b9539e52fc31a00ff17235396ad8cf638ce688767ff7b7c2de9e95dad03c7981b2aa9be16cc5a7d0db915c5a2ec05af056ad5090be5d448b672584b819a59037a74588e0bf6ea4436e6626e741a86c4b907f821e749ef4692ec20284ca23e75f2493c9ff866127556a088913354b218cd9132bcb48f49b0311ba8a1b539c19169f297f91a2456121d8 +B = 1ee493fc66c058c7215909feb07ddef942fe0424de439cc3d2c08d3cbc6864965657a7bb8210eab31446519e0c99e4ff5f502e516a7cbfc006c77a5fd926dd876c2fa51fa2073a9d721031d26b1eaa461f25b4eb95458b131d134c4f88d3d3deb361e37aee07a69156e5ba7e1f7c31e0e311d9530e089d4f4bec878391337d21469caac27480b17cd82aad4724e5d5d0a1cf07a61a18f22f474d23d41c1577b648fa5e97b70cc8f3f263d2c38503263c8ebc60c14adfd54487caf80a70a8782201fdf675f050cdf3935090eddda8e7557276ac5e2 +GCD = 472f7258b3fc6444abc1194b85227a8a3507fb003cf68cbaa692e543778acf9976bcb7f8763527eb0b46686591fbc3b5e6f9c1b759935ca9b84f043de559e5bb2909752ac488f6d1aafeabba5af8c960531f12f06b8cf5c65b9f0617ce0037f4b6efa41fb7d31fc3e8372 + +A = af5e15d8b89b46ecceb4fbd18b1a08df5f057e18c242d30e5a9d8ee23aa64b49c76cbb92fa896e71563e8141a389c97dd064fb42c5f0c12032e06d6634153657c38cb203a0075513d347b9a9f1e6409c398239d59542176e32dc7fd8b4fd15aafd502e4b85ebe37dd6d8c3885ae90e319ec3210ddf1dafb0af681e3f12adaeb6913f18112c6f7ff9f97b791e4d5d8b371c845929cd5bd8552e210f578911a42087b125e499f853d76f4f913cea5c2838024520287bf1ac69a0220b3f0eeb5af70f6a91743101e1f41f8395fda1985c21d0f83e7c0 +B = bf03779147d6706f6af24cd390f924c332c6a6dcb620872bec3ce422e6c4101b868d8f40025406f0ce1ccbd52552e323a1d7ecf78941c93a11201d6bd2316da427cb3a84844fd90cdb05708283b4421beca4a7b5273885b7ef5b973213af11db640718f643738d40595c7a8de3c0c2da6c2a05a3751786ca120c56045225e79abf38b976b2be69ddf0086698036141a6516951eb6007944e2d156dd0f16f300472e95b3bafc1bb367def840c61c2bddc1bb28ea0040ac61291b31acc7675f1f217c85d57a8339f0019c35fb56cd0f3d9d99155920 +GCD = a55f8d7d9562c4e6e4180dda74cbceaed91ea8c6866a5af383052fa800f65df1e2db6ae3721aa3604a9da30cd0298e659dad33b0c4684420b69a471c1fde93403658504fb6524b738ed9727186ed1819db8cc27d6526ca0a4b10ce33b2c78bb455a492e10ef67977a2760 + +A = 2ea2383b39104a440aff46d2e5989c8846df5f0c439778bb3b3ff91caa7e6cbbf80bc7cca4e3590573b9c1505d9d5a8c2cda59af8ccb5de20ccadb5f05df216b6b870a1eaf8a8737232ba6fe0e21001a7163511be5696d48167066f2b5a1b6cd303d02abdcc65989f94e3f82e9c5b0ca25ad827245fa1394921f100c2bc148975a831bc3a0b95b165ca25deaf6eec72d38466fdba2225044e58c2050909a540ac6284b6c2ae3bd76a678d6b01b5abb48f954b2da7b77d8e84cc92e5ca3c1768df7d1114f934ba19974e1377a3a4e36dc55b50544a7 +B = 2928aab086e84ac5fb3170784d45741e720806340792bff9420e29faa287ae9703632d8e0f7dbe5c09a9ba71d00ef8fbdaf4a585afa5527ce0de6c3f73d8f2578303b9c8bd9d7d981f3ace81d42c303c013d39535fca806b117b473ce71b215517afff953e6540cd519617f7b47235559c1ced8648d694c4e9199a2a460d6ba75c0218fa19be6e08f019902b9df934a0e0243e5cb821617d5d5b0165e4dbcddbda053394670393c362e1c4383356f6dff2af8e2dcda069f7bc8b8eb538cadf71763e4f0a8d54dfcb1c3f940618d37218f6a11a210e +GCD = c26b8776797890777ec9c3c9655e49e2e4bfd6f6abc3b47dc9009d7d87e12d5df260dc583cc98084995e24604312347ee7fc5e2242ef46edbff1a03789450607190afe4b9b45236bfdefabda85f57a0ea2e25c9340101fabd8c66e3a2b6c9cc460c874e25d6a5c281a3df + +A = 376ae2158155ee514271540a043bd8785c45837bfbe3e9cd22681d12299f04158e97518dff8d22c66461f65756cab407c8857966aa14c1a5d32c793ef965525e29d8acee92e8fc2d93c6245b575ec46c08ed2c26b5bcd299049f8b1e12b1a11b0a287c5eaad63b5988bd00e55744b52a5059c7c7e9439d895b8357f1401cc28d4c7512b7260b15a8031574223fe37667440d782bc98099b4efe6c4216761234e0d57cf723a1fbcb8f4840e791b52558dae207bfc444da5030d5f4450797adbbf9f6769ed8ffad8fff44a52bb84eb6e21ce756537ea +B = -8ee14eb4fcb63e596f098cd5fea5cf406d2d5598bfc8bb238e749503fb6f986226046f2481c321da97b1927af6192dc77e39be7ee659a1416de1516478ce934835f7f73f028c558158c7e6607c4c9d0fbd0ad0d85917fda76407fac4ed098d25fc431c5cc2c5ba3518d6bb04f2617d21b6cb027288ca5060509591d4110e52762d46b71938227d9490901ef77eac66e33ea7e8832abb9ad001e46514e6b7c8e9ff0167c110c3e2bc838cd29d6f6924b9808c04edb6b99e03923eb93fe354202718b8cce6d37000aa4c98ccd3a68c9e7810cd5cc0e +GCD = 13a3bdd7d93c387b214d4ab924aa23efaf686bb517116d4fac44b81112aaf4e10664017e2704aaaa3f4c1854d6026897b8e59a13009c8f387bb83fc7f3d5a6dff80bdfdbb39a2dba74132c42304a5a059984ea8615d1b4ea3ea6b8ef6e3bf30f3b8ac70d4252f04351b706 + +A = -63f220d51a9ecc72c8a0478541b6f187ad38134c055ad52337980546aa581c96125437d47cef096f4dd5ac61ef20e3165d2a051d993cabfc574a610e4245e7a42c99664b7c7c7b858748452abe51f66e02ec2e49ff003537aba854c485c747775ac33d9d750ed1d540e3c3df35fb1c42d6e4dae9c602ec043cde88beebc91df43fe8378199729bb7a051ae50309bd71e756b58199617dd86607f1c4180124b150ae3a285de5473d60920a8eb2828ae15032ff40a96a4903e5402136984e7ac252d53d3a84ec4c61d4e37312927e38df078d1d602083 +B = -2654686b932cc6e275f9cfe5a5081a0ba788a007d333744766aca794836750eec8c57e20bccdbd34ce418fe3856780c6dd7ec37dc5690402e474220da99937a82cf9644a4f96996fa3b77f0535cb4cab46a3d270ad2dca3dc367b4c495d6bde8f453dd2fd3af49ef13246fcd2e03adec7789992583353bd3fda485e53c79efbb2ed69af0221ec47bf5e48a05839a89517b84520af4321795fe4d0ef303efff9055f7c04e6824ccd9e91c4a61e2ee12ef07f338a8a907553a863663a6a8757f66015dbda590920c42df3ae9fd3b9c09caecef3e801bc +GCD = 3822cfe15cfb3966ebfae76b53c2ac36215484883d019f699edc77c6023e530d70dfdd60c3e1d61a9edef076a988e1818860b9d3108f98af2186ffc83c8981e0a83d7f0655be11f5c6c8d9da05c0943ada2182cc4cf514dc6be13d39f802093ad63c0193625ac06ab397c3 + +A = -23adee5c85a79c0a55dd12cdc9042a1d13a9bfbfd6845fc39a122c39a8d573939931446329a0c89fe0280bb2d9689eeaf407ebfd263ee373d5c277cd8203a6179c3ebb87f1d260f89f7c5e62afedc7a3f8fa67d93324038835213e425ec6ccd644c7b9628bbee49dafd9507b5712532d7d2f1478a561cb187fc83dcfa06b19d677b2e9cf909f4c14f681aec69d6e2a3ff4bc23a1a01cbb8d31ffece65af16662a2194276cad5f288348f9c1542f9e4d2c2637ae6c377a71b9b33328f632d54206a3d1e854ffe1513ba8761ede4b541fac95cd972fcb +B = -11c04e9176334d0d94a9b0b549e435b15b518ea9d8952930703778e5ef01d7c1205aa0c41d6ac0c1c78f951022c75ba6a738a6d7ff3360a187a4b45b66bfba91eeef8894f45292d5304eefe308df4483aa962d2c0ce3e54442fd9e19a71b27e91543b0145e0522c8919935c196e5f6e08da182ec8fc24feddde107ba76b6a8588febde5a82a6fc34540fb368c31a73b114e34172a921dfa5f302abef0fc7641e7b61c0604e7ad92f72d3e8ad85f40dff9f15e565bc5492b93ea29827d446e1b54594e644339e1b3a212048e949639d5047e4a5c835ba +GCD = 54f50d80c7e43770f7fe3f081d1c94e0868ed09e65dbe2ad01e9b60555bfa164e26b699c3608d86f962663e6500fab6852c70f2a61a45feb29b52d48981368b1b85adec9334ccea116d55fc8e2b27963e4109200829e1bfdf42ddf0105d38dc73fcbf8cabc9b15f3fc7ee1 + +A = 4f5a15383f578ffbc4dc8efa64328b7e234b0346797d9445773d883a5da940546d6b119c142cab6b2104fe397e0a0616f7cc31653aa3d765e5598e19ada5045c2c6f75cdfc381f9785b638c9056cfa45b33107121e2c5517a7b3ab1768313f3e8c476a7eea7e8d7fe3e5a1a56b1756b0b1f7913c7b6cd14c390e6586cdfcf8182cef221839d2ee30f71ed22621b7f71960340cf9236e419517aadc22bdf0bf766bb58aabe60057bf354812838f21bcca46fd67d642cc72a33fa16accb864ee39afcdd8d96749d7ad24bbc6f8331be7a6507776f13432 +B = 7326aa2bc4c04d0b61f73c281a69b6f2299a3b0db947cfbb79b7f249c5f6b65b386398445e00ad5dc52c395b4fb259c2c7353444396b294cc8780c8f3ba1f7dd857ec4a602e966f75d448fa310add402f8041b0188d7e88b751c71cd967462fa6a8ce23285e2c610597af59daa81c3b340eb006b66e72295914aa474838fa5c3077f2eb50da86dd03e5a10150417fcb3466b9bcb852ac790c4aad5ed90ac74704695c441be98e388a6d1de914b06a48f01862015c49e72185faf772f80c8090603a64cdace7bfb414dcc972727870021f7086fae1fa2 +GCD = f36d2d696f9850261ce219dffdf587dfea93c29d56dff4e4e198874b9ae43c57b363914c3bfedd787e362ada19e896e0086258b91b21c47b7443aec5eeb1dbf492cf2b5c61d53de4b5f74175a4317c7b72bcaa571d47bdbc97d45df32a7e792499e8e8901df937fd152d96 + +A = 4834f5ad8b267c3d77b5588481b8c20919aca3dd926588a13d07a9c13ba42b24a127dbae27feaf6949e3366e80c29e9ca58770f9dcc1e99143a8f099aec27d3beea8fc7edd6db12603213635cffbca3de9a8a698664d05265b591dcd25e5a9213c544f0da31ab85bc4fabdef47d60829cd9fa698d30a638b1b68dce429a9c2fa3bdf8799d95ade49126737a553edd5708a187cdbf5aab13f4594cce2a947f6f0ef5b997792bd9a69b02d680b14b60d28dd4b73151d73ee11563e4eef2f4da405a937765a5424b7024b24d6a8b56e07c2e7a8481c2200 +B = 16dff423e06f1699b0aedb601aff0ce8be690671c7d4d8ae3fcddbee4bfdc064022e9bb47c34a32af7f95b19554a79d7b65596256db6eaaef9a2231536e0172a86e550a8dc8e2e302bed4e7bbe31b6fa12d66ea920135b5674a97c12ff1923908fcd320e83187cc34e7df39f72904d8b7e150a89ba2fc46fede59cdd4f728d65cb4e0bca0fda09c93b8b1d11c15d2ba39e13c7ceceede607335dafc5980c4150f510257308538ff9d443140f32090e73d59f82c642185439b002da6a38d661f9291041d99a6e6213855f082ae70daa613341bd177dfe0 +GCD = 1ab875f3f8da5bb12fabca8c0682682beedb859325bb686bebf3e470a5cf58c186674cb54b9c778c0058860b317f7812e74bb6aacaf4bec47162d797f39cd945522017065f9ba32565f1c0436d1ba5d4f4029fd7ff9852b3658c7b59a91a0a87f117d37127f631f3d1bcbe0 + +A = -14cd3c2b85932d460e19c7418d6c54fed7a8784e187dc41f7da8eea544c29fb8ccf852f97364db09a20d0addc985c1d4ce1073b449b0ceab2aeb17500c9ba7e5f912d0689dad3e23424445d78ddbe91cdb1c3861dd62ab18924c8cce06c6ccaea2e0caad6f786b36ff1c2f9c5cc9812f8b2cc507cf52bd871bbc016010e5142e0f456a3bef43cda12f77369c9f2321397107e3c723ccfce6d9425c8f5277e9024b2aad66ab2adfafb40c52e5d819362db87bf06e3c51e44d1cc552734ee9af8a9bcedc860e996e2c4f0b064de98cd08debebadd7af641 +B = -18d850b77e1cb63c96fc912150741c6a8ed963b8ad516b5e3b721928b1858ed76a672a9682e7c84ca99a6dbf6eaec5d68c0290801828dfb55abd62020e71b9c041fb3b905d2617ca029bd35cfa1c2c034e6b8e63171538857ddb2157eb69f582684efda22755ef851f8e63d098707a4b7ad73b0b67e2ed88a60fc5ef3adafe294288961ae92b34165e657b32e1ba34901744300c4586964b6b2e36202932bc5d516b726df63c487c13a13603bd98de43d2a1d70603df6a5dbd01b57788b8dc0da246035b0af2a0e57308cfdb860e5f0957fdc5e6327e5 +GCD = 34b4936e17939aaf24328b54e99c6b6f6cc932dd2562e390985a73f94db4c2dbf7be0850f76cfa25df20001fd519563bef158b0c804c5d3071a6f7f6c961f0dbf89d0bf6bbdeb6aa358297a1c9fa30ff300bd838d1f36d44099477e32cd282b7af5b871b4ec5a8a22e210b3 + +A = -811c871564d5b3ea841d103932cfa48ac9f8310024d6294c5a2fbb5ff19d2c62f55d2c25c5ad0031e84ab35f2d3e213713680573f4a36e4e74645f717e1aa2d2f0eeee8d43ed1889ca698f70eddc32763c383f0757bb523644eacf8f01125f115010fc8366238f609d1294763f7911c12210156be097a818a9d0eadbb621b67637b59cb3bee59dcf60c96230d8504808d23de4a2b927164437d793d4559fa718abd18ccf2c52ba05f447440890ca081dbcfccdb059d4cc4fdd2ed6573cdd91df8cca75d8881b135702b4e4a7f8b948ea8497e8478e8c2 +B = be146436ea9abd765f9dd838ce33807ddc12454b94bd5d9978b388e60e417b618c639e67655dca27566e04d692be56968a95f663d0d70e5228d2d628ad1be390bc39a4f2356625c69b5f3885e7987721c276fecab6e23856610e578ecb9ee8ab5045169b0733e5141209708e9f84c9c2067f08a6c1d551d84ea349da2d15e622f45b56e8a4a6856290342c4a3e1045919471722bc270cc2ac3420f0cd5cd6bbe657ebe036083c691e5d288333c53c6ee7a83092688a2f66c96d5be7f694c1e31e57f5769023415ed0f077280630d41f23643a89e91c32 +GCD = 600671238399ec8ec83128e16e8c7b702511e4052e5bf2630dff45969d26f1e125e29dd621d4e1b176477adf2f8aca3654beff0620e78b3363d6a97b9dd35fcb92f369377fdb49c385a080f883224d10b81cab74920c54fff2dfbc401e5023406d7e0941ad3de9c1e52c93a + +A = 2ec6c6997943d93491835a059adfad16be937bed7a11bfae86d5be980ad1f96e3584ff486b197ebf67722fe0656d01c8acb5d6713faf39d20a25ad2ec247cb7688336ea7c377bab1dabd3d5c6532a5ba0bf3330c7756b4db3f5e9d7d2145558ecb3f4a0b4acacb62ff2f37b44183da773510c6e344ec9c474883905c32c9abd405036639f2e7be7f315b1ecc2c8ae1476fbb0958c3d730971c8562b91905a81a1ee54ee62aeb681a7813ffb5c389cfe341f49dba5844ec6049941ea519f91b05e89469125171cd85605d2fdcc3955d5278c3945b13d698 +B = -452a91b3877913af1eddc84ae4aa3db2ccf6287eda28d9fa6d81c0a727aad3e7f95138956bd17da1fcbef8be0c73cde30c6996f601811578c352d3be30a9091ddcf626b71f017a32caa5a29532dafea6b77ae631ba6138c619695ede258e3063e18624b1a936c9f6707d2092df574bfc48f73a0f3440636b2707e0a989cbc25a232c386fad7487db7974c41c417112fb81c3e47f566826fa7f1c7505123ad380b4d9522a5e335e774ecbefc769de163ac531ea7fc2d74cc324a1dceadff695dff218f0b5a7dc06257d884279d3730bb1c9c2e6e69b0830 +GCD = 908ab132d64e253add417c0f4830b22d3ba803c844d32b8f0c30f7a5af1db75c4ad15bdda76b00919d7ee5eecd2284c16eeddd137687515e236dd61397261d2264813f0001a3cb27cde35bcbceb720c61012646b5c9d3635754b6733a536af69c81e0101918572c48cd3408 + +A = c2e55033eec5f33206c6eed7a9908d65a9e9efb60d420607808abe82e18b1197bd1b07c1e3d11dcaee028f4ff0dff0b488148f599711c7f1989c1c6fc480f69a3c05e28394a2efb3ade1d7a176291437ea2cfabce67fdfd3b0a237bf10a49324fa873056464640783701d8c9cedd8fcb56ea5a6b260a807acbd0ac4d3af6b4a4282124254c41cee1e60441d2af3c2890d18202bd75a4463a4af629c1d8d8204d652dc0bd95fef8786114f08909f9babeaedfb6cb04cad665442dbee0511f22a7b0c03ab8419f030bad1e71c110a1b7893942c845c54c2d +B = -29ed372cd9be405d0800e62496850ff8cb8d366499319da78ec5849043a600387fe52fb62fff74299ee56bf378d17c6969f903cff19107c9da3a1781492003d3c2d02141859fd5b5d7b02420a47c861283929667c3c6344f0151c52417ce698287d5f948d8ca449994234b16d30431bd5446c4ce2c938105c5606a22e54431d50c0abc7b087127c8ba8dddce2e9cddbf922308afaea1c6ef1e04d1b01a914e03752fff756b9ee1738250725d8f93e95bcffb5e26d645dd8a1b1c98acabfc9098deefe2773959977a240fee979ef4b86f06bc105d852ccd +GCD = 103c476c792670238e34ca359958b781ea74b2725e34494d5e214c4075f1eb0707ca3abe7c53e8453b70c84de159948f49f1fe181898f7dca02228ff9e8531899c2865be84d65b3d98127f79021fae48f8a873c312e347f6213e15d90b832af3b51ed95fd1fea825b1015ba9 + +A = 6abcb7dde59d9b916fb69e594c5f4452d255bb94ae38693bad2d08df28c1d29153e277b61bc63607a116e1ba912b54831cd35ed63fe239120397aa9c4b9b6dad5661ad9a0ffc9e4cd1068b10ffee61d52c1babf5cf2a123d3af1d79593178031636c11e6a099ea1df437848ed502efbbb548d28ec7071625f652558bd998524f0fe7dc05e93942031654f5ecedcd632b75da312c5507b16d61671a9c9df94dfc56e1a39ba253784de4f9f77fa9f215b517a9da8ec87f228a9f6ed399f265a03cea0928426b99ab82c465e9fd2bb7b6bc17709734640b91a +B = -61941271bdf17917bf9b0ef273f1990ce1407d5b69b093bcb6f2b12fa7357cee984bb96ac3bf6ab161c1d4c2a34f965f0103f3e364cb46a6cd4634a9bce894d3c442f22a28f95432834181524468ce047a92a32edaef938abdb1b26791716aeb857946bda29dfdb8e1f13d5e90ed39a616887e3cb9df43cff177e09385013fc9655cc4a0dd5cd1219b4b9122a65476b6fd65a991fcde21186780ea13d5dd1544878ab144ab66cd14c763ab17e88c4c7ddf3540794ac98060d552a8a54146c2766ed8fe5905042d81e7310ecdd587e0b0be8fd3fd95762a +GCD = 1535691bc1482edf5ed7084d74246a922e7e9c9422c456342e68f4b8d4cfa33fa38ff90b081f5f9c38128a12da582729419836d4f54659b7b254948c1e4acfc38cec6221a3679dcc24410e18dd780e2218c95072bfd6a3191c2f9e8a4a4be07b655222203bf657e8c37ae687a + +A = e0c33ff19aff7c9ebb09b37a5a03fa0e49d19b1ec74192ba95df1a854ceb7e93b5dde250f9407a54b4543dcd0047e4d94e63d84d19e62b8a1ebbadc019c762896c8face0520003012429170ddcc426da38ec44cf99a3c0e7ad12f564251751385eef6900237bf2f66e9d90359ccdeb2f469007283869cecb5210f30e90fef28ed4fcea20a4c7c6f20d0544008f8b40b524d03bde03331ece7e4334b428fe9a019efc6e4a84e28db2f19e2bc323995fb3d780699db25db694d72906d88c1f97c2842bb93eb1f823bf7d0f8e8577d97c883cbae0c162cc338 +B = 390bfe07b1aca8402d8f1c3589b8b892c7e4a4a51fc066044e6f121e27480430612fc6cc133babce36cc81cacd8853b455e23ff678c8da745d54b91bf7ce23b275c1d8161779be25cbfaeec49ee6d40ccebbf5e306c8c66a6da57db657ce62a125484af5c2da651ae584c376f9590ded16e261151766d6d25429e857dbacd0e85d21e251ec54af7af2316b88f8be5c14594c7956acbd4f61136615dfd88d1d7af9f0db41fc6fcfb823ffd33b5ff3add88597df6bd94bc3430143de72217b268c104f770f83429734f156ccbb77dfe301edc6f54635a9ca +GCD = ff045a9fbf222e980b500d55552738248a176139620102f769d956a9881c2a0a0b4c99ca07204ccf83dda76977e276f192490d418ea0bb120dc404b951e08ddb62a26cafb629d3a801cbd455774a2de2b8dd61bc36c869d08f7507f80327bcb643a30b22e33484b335d90136a + +A = -31c4f524c95b089a7284b44922494a3c4e40fa3fdb1a9a5690b3f7c1f5bff7a75219e40c7e0305f88c87564ea837b1001c321d73b1454a557170d179d0137b9327feff43ae4b38b55576a9fd18de1f54e545c873c2c403b5f6fbe31e0c7dee9e139889037f4dec42c89f1ec86bff46e7babe9b0181da3d6b7fe202b5435515e28fe43010cf90469500b7ca1b3476c12487b53404136b6601279fdddd491632a56603751808c0537a3997de90e2c0768551b717231cda943a3e6574852dfb8902800d05d9f44bd0f2beef43734e906dc924570499b98e5786 +B = 2b4aefab57ba2a7b643071f86529dfcaa8686f99f1952a5925ac7261707fb69216f3d0c7dc6ab40c365b0cbbde70db1bb7f5e92771dba99fa5263d29a820cee6da7d3437c7ec19c6e8740c760e24506aa6df7aebbf378c9f19f2d1e2145e5c0724603a66e58453d2837a84d182b642d58ff98a21ad29d77f37cce10389706449cad5d3b3ee0b925f6d3f8a726814bfa84276ad74029fde17a8a3fa7de218bd4f47dd06759d4669ed57d8fc47d9ac36d068d0f136822d2903cbc2b23b37c0a46c3f98ffe6e036c14d6579ee387f588d51b6b0e3f1f908bfb0 +GCD = 19f03d9ef07f7d20e550d29072126142c7dd981e25f41a54a63b7fed1528e2001fedf11c7e347040d1f6065e4deb13c6621c2e14b4dbee3840b043695c7f227f599fe07259db77a0d1c3920712e192cba551781e9780138c58fffeb96741a74f62c8f27e5ac4d486b9d89641a + +A = a6227a9e8b9d8887ed66563b9e91158f3601b865f722417716d2f4109ba560cb41aaa6f2d2e6013f1a88ec0e68fb5836c5f376a78ca0845e76c0436ae1600fbf9e2b02aaa441fb7681c0947cd1cf1dbebe27528cdef48edc0423eabeafb2d0f5ec36d6f986609bf741a79556ce712ac59e209267ac8e19f710132c6e13d5a32255b73e959663044af8da8703c5a6206085e5f63635dbc7e0bff34c73d48d4c7d690c45930163102c035480b406374ed07e0f400eaffafcc5ebcf4cad544526805e7c33af8cfbd7c9d6cc79817fbc17ba5ca0d82487a8cab2 +B = -ae534f8de6d978c99632a44ad0cf8dc9163ca473fe0712678efa08ce31866b25a9d9ffd479d7a9a5b150f550979bb909b94333c8ae733fe9574592c7e0ef1595c60a2b8c05d53c4a59e13f6b5c7ec0500f46ee83462d38f78d6e9b65df03fdad2e120a21f6647d74b2a04970ca4ffddc0f30ece85ef43e9bacb2b82a9b029cef1fa4a0d8cfc1309e9dee74c953ac7b74675869c172ad6d2ebecfb60affa2720f20f3853cac34dfb51087dae47726e27387e6e111890fc1bb8f09e90d36488d98f427f11c1837d1182acf653c5988c067a41feaff9af8d01c +GCD = 2868ea67876fb1f10ecc72461bf3001e83bd5e8ce5fb3f49248c072513fa35079ced43e5c676df80c6cf25e9b3be88fab56e1a11bb6abd73a9ad2cd36ff2a9559c7ac30b2925e57593704594b43fb411f75d1f9e011c9f9ee6a2f3fa6579dd74f0adf16cf9010b3fd79fcb972 + +A = 17e4623572fd48fb138a23f21c0aa55d9bc5537a24d6102d641567daa33f1aaaa3f793803892f51c5e551bfcd341812de4190c02d7d68c0369f89dab6bcb203ab2cbdf57bb4ff20721f593d4c92fb196929b839da3c93cf33818c5078518c43a39fbe946537ef4be768c9852c1c18f7ec258daab22c7536cfeaa73e68ea56ce709fbb650a31abc18e7a8cd6f16764f282ae8682f259848b184200ebf5f6929403cfe868e16e893c50ac76757e6b89a1a8b6a3cb19f51dd7ae1354c653023a0b422046c9328318519cd007e3f85f8fed9fb3ed851651867d3b +B = fb1a0e15e5acd3847dbb4d8fbf2cee208d89542e34c6b9bb96ac37417a51a3a41d5dddeb00cbd598db138772fd993cf7fd0a33f459b8752240378379051b5ffcaf934c1bac1f85ee9c6dc30bc3bf94cc8e4323d5a566299bf0b6958ed538ec78e2d87d1326daee311adf0407fa656499c1376bfd9760992bc2ad1a5c638deaf606acc5b7e068b227e6efeabd1cc11fb8a902820d3fe909630d6c55581b7e990ba056aa12953fff45512fd79bd45f517207a85043e7fbbb30613aea14d183553f24432647a049c63a7cdec0adcfe0e052880e470b4a89551a +GCD = 327492372f235a22708b59ce755b17abbd33d88902b064339bbf3fed1886e6752cbeba6379c376c730300d15bbeda580effeabae39b625d16959a36f41c11d396c230b5a1d1262529a310c4a7a33ff534b172b811ba318e08d54631f7c8fcf2ea8dbd2d2893386362714505c3 + +A = -19833a12fcc2514bf5cf9254526d0e0c3bc247802766b5eb6f1754f8845dc6caf829c7758f2ed869df6329b1274607eb93409349b0074ecde5cd04e3cdfcfa33f4f6df3b3f7ae83207c7be631ab71ba4775d0c19dbebe3d068893291359ede7b40745d84b9c8355dbefb23f31050e2ec6f38703b7a4665cfd06501d33776a2a1d03cfe48d966c7a354f45b79b0be6f52671374895a393fa9ad26ba60ed4c87e6339973be7651a61a7a1d07f6c7d6c58277a3f5bb7b61eb1ff5810cd064f6be1369cd8194b062d782c197c3aa5bf6cf5b69419a4de63aec37b +B = 58e271c8f626171e4076f3e149f7bf6e9638a82de4d10f64045be01d2238830ad10f53e7f6ec1c032f7bb4c3ba60b9fd68a7a35d6058ccd39abfc224678b47af11d04df750e2177cd88164b111425b65803aef2dc067cfbd1903ba4f647bf45b33bc6bb3a43d552028fe3e5affa7eb6b20e32c480b2a4fb60fa8c716f3111a00f09c27a0604bfb07a96d09d7a7eae257334f1aafd8934a73565f66d3545f73384c9beb317d625b54ee467e27bacfadd55ee2b6d8d778ff3a542e484112a0ebba1e161b0d228ab369bd313bcb9cd763329ea88e2d25cac2d02 +GCD = 4d335ccc7c4ce89df160a1aae1a90eb6ffbf40a59c98a80770a1459f31f8d187983a93c7b38b30298a252fb263a4eece1da7efafdcfe155d745ee68fa90689f33ab27dde32d21e316ec8c160b2e1ee8fa30fd1a40f29008b0e3f3117a32fa152282858d5406bf27f7fcba4f11 + +A = -2161f73c6b3e2562ce5ab7adc8a71b2f0a07e1105fa66ab420ec7850773846eca1841e352820192692c730ecd76556f7471d41917b7597bffb6ca23fb7c53c015c97755f16186b96b34261f7ab537921ba79ef8d2d3bd997e80a923a6de157fd1e6ffb7bca0b732f8441e01af789c74ea5dd088aeadf4f928dbfa31704de7d85ad89db36ee148b9431ec3b5fc8f45c127921b4f2789f0eef45af57b229749aa40cc5c175f8078dcd46c6e1def1ca832021d7108d9c30aa536b7ab269d0516e33057b9c5029d86936de2a9fa436588d724727b471abacfd6625 +B = 6072e72318b5e6eb1cc9143d3e1c918de10de4ecacd998c375f5814ffb6f25fccbf399dc5bc8ac4843a2fe67cdf33945c7d91d2642591d66ab76022330d1a61b76896f96ea8eb2f10795054f20651520425c8dc4ae94d05e558d4dc04f5f3e594564d18ac82d87eefca6be9479c1cda3c7af991c636e1c44ea7656b9a7f6b3df2c88f311a4bbddf6a89eeb75682ae3b47a071c6a6a0a1e9cb9ad7823e9d7380341fea885e2e5bc1ab460a5050e9f6b683ead053cdb45aa4852709f08b514b4065125890186abc95a84aade138b9927cd23aa966f46de957aaf +GCD = d837634985ccbf1ceddf1126d4547e37788c82e2ab93b886f60488e41aadefe62004545f3f47f531b2aaeaf86b0b7ae0e13ec3172ce454c984862f06f2aa3dc9053cf4bf498f4360b62345502d11adfc7e78d3170f12b3376c9383fb161f4232decf3c94a1a4124968575e75f + +A = -d4a819713e00b31910f452601b22088eef13e86dfa38c5428a7eb21b3f538f02abe08962c3b77ae0db68b299a7ee019e8d51179d4fafc39a206164402fa2af40af9f97bf637bf8da6c848bf26e3bb1301d7b530a0cdd3fce20ce341dcf4ca55c2647da8717b5fac490f883545f23bc4664b5e61609875035d6f161ed603096bb20e5901b0c4ecb7717b00223fa85892c591d00036a8b5ce09355d9c9e18bf9c3c9129da204dac725b675a6bea38c18b6d23f3031eea3b2d85606cee92bebc35b4aee0e4e486299decb79bc9dd3cf87d62c6aef529ed80929cd +B = -17584f7997c1b71af3fde24704c8773bf58dd4727cb57e56b4796e863d3e8b35c0be7867ef5e96c469125c88f369b8de52a8a348e4d720728fabaab31641b4285d6ae00596b729715d0be126a221dfdb5a04a1ecd2fedd69991b966d25002c043d6eed6c1bd1f8a33379017da280491c13769af88960afef42099d34dc67b27397f7176550bffc599487e7dd7d9bd92c67127b497b405db225e64cf791af8463277481d4254b2d4d10fc3f1c5bc48bfb6cc922052f7fb9ead2f2ebc42205f8db3c21f1f288cc38f6a7e3f0b78272110c9e249d189d95de6215a +GCD = 1b45e4d1246bc77001316dd453ba4c705c35ce2edfb8af757d90460b2de0b018dc64e2dc27490bb265853b988254323955eef10e9974f1aa71644e79dcfe72d5b40585ffdfede070b85c28c116c34bcddfa73c741c76368860c6d25f5ad9061785a0a99814f0d4376536f0fca1 + +A = -dc555677ce7ee3ee8b84a900948c00fbb6bf4b0fc5a26d770f46f68482ac9f0d473e926a132a8d951c4118983ab30cc90614b815b9a49cae6435945262dc35b33c275c45689bef8b9ae5a1ef3787531dcd19ef3592e0933c31dea31ce4f4b867ea800f78c078f48e4a00d47c2bb77702b49b008944b6a78fa0b4690d07a1ec8e7097aeec981801c99931bde147ba65fad2f8a394e44fae73fbc8856ab235d03bcd110f701f4fff24207570efdd718be64c6035559cae299a700389b39e51a447441cec3aa95db560dcfb046d2c898b29d5ea4e80e8e484fea8 +B = 515a08d7d4359a0cc547a2c49b041ef4eff12bcc3737143df1312ede20f0504c0947823ffafb59f90c8738c644554ac0e4879605dd6b0d88a4b99d45fb95ebb20f59a87e98ae98cf1b066828e292a4bb89afbc59906c5e1363b481f2463540934bf8850e22034e3aa3dfd23db16e7f179fedcdb0a28234621249d1bb0137e76ed084b793a91346e0925c3af6383701321245b882323e3367b325cdc9116512344fcdba4b8083edfa3add3d05e5ec59878e05855a010c7851f57d7875fe7fecb15a351c3f28cb0fe35b3e3993f79ffcce016773f7df078fed27c +GCD = 3bd21dfdf5d8927466f7db1c2e9f2bda7015e00f56c1e510b992ea8850d1363630da727e7440904f86f1ef63bccd70e7faf95e924e0a6094a86449fb2dc873e680b4565cf8555e030cd7dd2789f0b5017097e6e5546658e56fe9dec9760828a8b99f0372ef942e130522d4d8e4 + +A = -c6c6820e99046833aa9c9e551ee0d042c49a2eab6601a32cf80de817c8ef59c1394ba5264ac7cbf15aa7773780a7b43e58d78e241695f1e42979ba684bdc968cb1f008edf09f1ccf00bba855e54cafab0a15a74a916dceeaccfddb41fd5e753ae22541da9deca40ad2225c010e97c77f572ca2c0012f6f05167ffe247ee9cf3fd1f2f9122d15ed441ebe29a4287d62b128428be8467a7ff3f52fb2b439fcf791a1a3977bb032fa009455182e12922c34f6726858c8d8f0a65b6f546cbb31b7a13bff4124fbbb375ebb8e3b74b1b1e6e78fd603568a599f808a0 +B = ed206ada84926801e26028d6b3b835c4737f816222a57de81136f81cac2b59568f86fa2f878360ea3cd7fc9dd0c9d79d31f992d95d684d3c131e2b3af5e28cf187a7abac8f68a5fd72785fdb882c19dd0ad44f07490ca160449f76be6b3005c3219cb64d4180a8f94f1d21fce452cb95ecabfab6889f717879510e1a3583f48dfb0572b27792b8c76cbb6dc3d1081955d973135888eee92cb21ab112b1fd31dfaca04f26d05d890c07a1deff6f82b4defc9b62d966bfb89d06a8f0ccf64826fd9b1706d0e92694734c5eaa28961bc02ee5b71ced0afadd7f6f8 +GCD = 84aaad330b4bc927f7c01bdb05231328e39c119e19f4c67bd7b5c616a3aa2616c430d7d16e6870f0bca4f6477d3ebd1a8d1c04df26b1346a986c6954aa76620a3eb1922e3a11b0974db7c0cd2ef468614ff7e1b43b8c5c525c120766cc48ef2aa0aa563b36cb3eda8cf65e70db8 + +A = 463f508f2028fd809a3284f6e3840f77e2c404203365f4f72064cb1629b1ebd822d5fdae867be87a1a8698524bdbfec8141c20bd349ea394c67767867f72300bbc4e9f426a640162cf09346d4e431df88ebfaa9bf55e3658ca2c9dfcca7e909416cf3d2bef719fa5103be45dd643851b17d628762f78d9364582e671987117dcf87e21e65878512566934c18b6e071ad6c046502d6e4edf6baf0d1fb5932381e8936aaa5abdb31b94cb6a57efe4173ac9bb732d9c4bef58c279601805a2094146fb233378a68f31c9c9326cff23d54aecf66abc0ae2156fbbc64 +B = 592b4d8d1053b9c7ac5c5769d6723ea97300cfffcc6c9cdb1bc07692e72fd42d4a7b32db565e240dae7b071ed3d9521a42a50dcb562d176088a6a1fae28e7f37a4c0de823b6de1cf6b26b7bbae0849f761741123a9c15403f0de96577b739db3a43cfa159b338b6059c02ba1e1a997defd29c1222ff10f778ba8d8265972e1897798a6843d0edc335286aee3ba32d0dfe9844162f586d4d5c2313109cd4a25d63fb7b7f1666b52678e57f9c91f2ab4ace91350f8f2f2936bf62d5a28e696d915b0477a3c27196139b5eecc03e8fd466a9e89fbf46f43b50c86dc +GCD = 534939041aabc54a5619452330f81044ccb1c3d4be9d688aaad6c78c02a3807b42676efe0ec727f17451445064116e0920a5b8c0d35aa7d92db287dc4effecbff3e4699e913db26a9bd4bdc35cdd80eab1a0c22ddd161b102efcc52457de53a383ea2755302fbee607c3715566c + +A = 1667e3f3f43f8e259fc554a7e6461e0de04ba4b25785e8797c1769e6c3e128f3450a8e35c099f28d7d4cb02068e0c116903cb0746027b62c875601ccb089083834ace5462437832b7a2a4fe0d95f1cc3218594a1d9d6056edb75d6cafb0f3cdb5b465d1f2c7fc6e01f4a215bcbab260161f2d025a62b1208f672c02efc96c807083edc0cef1115f4021d0d83d50b3f1df39791b364a1b9b845521868488f3b54c7de44bfd378b041977b05fc67cb28fe7cad9bb98145bd2b7e783bb5c0159cb7284ce540f623ac41f2f08bfb4c061811ac8cae246070df3c2403a +B = -1cd69670d375257c5acd55b107ad4a575dc37fd8ab7ec0eca7a248370f9f95bce23f7c21d4e39128a0022112e5e907a5aa5bfabe64c970b3493563cfc4bd0872c9de6b5e9c6fcd98542c8b13aaa39ace23d93e374ac2597eedeeeb6d97bd4007c5cfcda2f5b5ffcac7294d7db10a8ef0ab161ff272b6bfc68b97a8dc93e20c1909938a95a6fa8a41108ff6f833f5230960aaca02742fe0434b20e5a584f45804ae8be5737e4bb06727578b59c8f58bd828722257738bb89305a296236d5b6a4b575f84f1a59740b86c8d1d3f26e95944c1ac64ffb4c6f4852f954 +GCD = db0532bbfbd55fc7c4c0a5acabc77f47cbf7c369135f194fe7d84a85c95dde590ba48f2220f0037f0f63bcbf80def284eebf827a0d0c6fe6720aba60363cd4344c01ac10da268303d3d15bf1fc4a1d7de6fe2efec92e4342d56e9a352f559555137536aa76579f191d237c3739e + +A = c823ea63b1316fdb4dcfee6f7f3f1d7cbfb0e31aadf2e18aee5470a359dc22c7eb1666013ef2182382940dfb27d8e938b5b03fd53f505a9da086d598c3eccd40804d07d507dfa0a2764ae09caf9ea83d19cebbc2c824b0b3744a74dae66f66fe0d7f779554b58932dc4794172cdaeb150963e69bd56d97a728decaab959670f2e15baeab311c2377521d6264ff184df634a88fc329a0d24e01b90f01bc01f6111bc2817965fc08460fdf015ef97ebba5bbe351f95cc55a912687d7fc007ea97e6b622149a7eb09b36d497d6f59a40d46de0288ff36decd21a0aa +B = 12607da13ad0d303a0b17006dde959cb654e43ab680b47fe0f1131f840e8be73d93d4f236c8149e659859ade29aaffdc9456579cda03692bebf454bdb146ec6f3ff0496465b878133032cb47e3419e757e3e352460f75dfc80fc618b28656c74d9458bb0a44fc0aca3d0e2589d952474f04547489079b9617ba73e64c5b102c5604e5b94371d2974f1cf4a1d0652f0ffe1af7e17fa87977ba0e9e25922de585454d4685faf39ae101ac35ee3d44a7aff049986fec974d0a725c1f9353f7854e5697dcee2a94d80aa5b46bf313322d7553cb62663ebda8179ac27e +GCD = 4fd8493cab54b22c1d930cb1acf3f3c0e87a0908773450ae9858e292472aee041342bd0c6a0bba299333d61250377070fff01342a642b490f7aed97b2546af1f96aad1ddf50319f017be093fe0aca1a3b5091fcb7b2054d6db8e0bc30b4e48896cf9241113132a9ea859facddf2 + +A = 1d12b6ad0c5d84e75d61d93bffa8ba0b1bbcdc1cc627bf489f5aadaa0fdf3c4d43578c1cca07d983a0ba672faf024ceecd482d50aa7d75bcc5eb97da85a4f126f47b19b717562a055bf0bfd295b180197f3188c8cb2c573d4ed67273bebf53448ad47d6c0fd073d3de2cd578499a18f28d272f2b2b9feabcc2f4e201097a56a84c7602c5cab47d6e3ee452fabae6d9bffb5716c45792a1445409342510088bc191578eced9b5383c5c5b4d0e0cfe69afa16ab7ff678f9c2609f551e52377b3e9f8372e70d61b8cd11decbfd61238b71fe49a9552fd26fbcbfcf3ee +B = -af675140c602c88ce053d415772dd43b51e6b318ebb19f21baa9ebbe6d03c0714aa5a201eb5fe78e16a97cdfe5ce6652eb2b6568af93fe74343556de3b038f63b80d964f5c76346c0c63333ebe61daadb1322aa1e492a152f6c6b04f26574760feed38d583b782f6953d4aea509a940ad1ee4c32b7351f148ac0cac6f8482d66a252c6d9b53091709bfc4b35fd8b732cb6784dbb15a3a6c7f72561e857d1671c6c2ac7c5e147552e233fc78ad6a792708caab8566588066180d085f00e496cf9cc3f96af4b142fc82866d6b4969a0af1c22923b0a56ec2e7c5d78 +GCD = 7d08d7bd306dffe298ab4eca4b2d20b6c72fa7da6f0e5998458ba4b818477ca2cb123436f0b4b308e41bbc46c1587babaeda68c6c7d46785aa3be1e5ff0087650503762fafb3eba9c6c6ee5f8c914e708aa3dcce3965772c48624dd0fabb84e9f4a270a9da52849114e27fff5ca + +A = -475f8b7d575dfc23fcccd16d280b2bf60649ca32313a8f668d4c66edf1533b243e5d6b850760c26533c2926d857290010e32edb7f6e6c035cf92e1c6aa41495874e607f07a71510bd193060bae6422d3b7468b66c9e20f56e60645f861fa22ce5582616dddcc63b214dc2f187a1800225e25cea2c1acf5cfb32af9a9af20bef986647b1abf8dc9c25f04ac021afe6535a2df819e1dcf80a857dabaa8125c3d82a9bb5f7810eaa2abd36b71543d1c9deed4895b1673bead6cbfab8c66ec2516c6611e857e21bfb61ae169ba5eb9bee8e8448a4cc7ff46cbd805c69c +B = -56a142f58fc7dfda307fb8a196077ada3f0f172f340316ed46f944ba0013651af391aabc6d5921a0ca1a7774587604fe73416afc55ce3999abba553bcf0fc8d75a86b823181fa4ee2f754e6584e9b6cf205e3c27560b975e143a28220069c252dd650bb4c0751f6dd974dbc0eb38d34b1168b453c567d308906a499a819aa2254eef27d028d75bc6f7448356f5caf53247128072ffbacf8fd70546fe8c826971a6bee9e981ef2445ba9df3bb0457f10cb707d4e8dd0f56484bffb95f96dac800cfbb17de90d506c794091f95605cc70186ffb30cf4e9747d2e5707 +GCD = 286466a1f51349bbc00b06419fb9ab3523851e85e7f407531e38ea449af177fe22168693d6f613bd1fb329e1da0a23c935e00c1268c3bb6f0e1ecafb97904d3b9bcdf3aed12c641ac79db15556f6ca332eb038b4622af928d9684dedcea3d61c84d61548bcb99c32a44c47a1714d + +A = b3fdbe4ddb27312608d5302a1d3531e2796eed3dac6943e0c06f3f311d73d172d4c19d49683905c52fedc89e64e5e203b84d3e56c885014f60edfd3433a169a120a3ad708cfba715e4d1d19fd25038c34445bb786ccf33f854ce68255fed4ddefe1ecb27f0f2ee847f364d02094c01bf06c181afb1d6db7063b7fd85f4571c96f77a6e451bf16f4384c4605ff56478f12000a9584c45ebbb33f53b36448180b85c9024447454d3b065a100a9ad9343250b9268475e31d6a3022f354e94fbd999b77789ca1e8a80ab5c54dc7a996727dbb8080de2929619778d7322 +B = -d8042a2bb9c1733babd69fe1e824ee11a90745bca0cc3c10ec78be54adc745ef407638b9cf73a17cafdc4444c9c4c4724aebd098ff16a0b7d14c4574fdc4fa5540542da714e3e7ac935a7641047a2d490d93932238d56de5579b9731dac66ed345fdf4f2cf99c6332facc398881828f6f17f32449e310d7b90cfd578d84abfa283a359adf6418facb021dcc890408b7fd950273aaa3ccf40e628bb0b7bfceae7201d71248834a342c8d18e6ff0179927502ec5c20c1d11401a67628c38814bf0b10a64ebf6f52ff759e8bd540a86a7c7404323d02d81a6a9e1b6e4 +GCD = 2a795748b8d5073c2c0bfaf0e4f6e4b055a27d2d78844c29f01b45634de5026ddac533688cf14c55f42e02e7cf5881e7280b674807d00d36d6f60dac645420eaf0dd5108d2fc2788f2ba377bf43de6278e168f984fe6fd8cb3bf3d8a6ad5f110cea9d81037d8dc1cc746da99d80e + +A = 3b13d797e3cf586899374c291f174c5dbb0dbe5b64bc3a87e6bf9c5ba1eb988cb66bee3884a7b422182513d2a8da2b955892ab2c887c2be895891cf6ad92fb624668b286d1aab0f4afb32204b2caa8ad8af190e21124febb9d329adce66deeff4b22b4ca19a95f9a7c3e8ae467a94497185cb360add04b2a662eb10e9fbfd78e5c7ef312957daaed4b6dfc52ee707415e94b69702361663bfc2c86d9550ba7268fcfaa29179cd79f016dfb7041b66cb276d6b716d1435fd91683059c7a9002acaaeb775477eced0a9f064c689064bfb5d2dcbcadb14f16015d400a0 +B = -19b867ffdfa2e567fd50166fe20f88a8e1af5ae410f264efc4257198ab5aa26cba841455eee9dfca4aaba04bdb0756a22726885210a78d3fe2859f7070b6a54e65c1f8f9303202e3ff55235c1ad303cb13d4c20f2cef25e14e65961ae1fcf9dcf57ea09bb21325cbb822c6b328011b85e40cb38f232240af1215cfcf1192d5b68c92d9a82db5c3944103767745771b554fcfdac15f57f24e4047db6664b843cdfe0937790c793ad67808f536117220b3913aea29540d081f948355d4cd76b07cb3227779b4683630360146eca5567373147b1b1c4b9bf3b76714084 +GCD = 37405b95c1ec60b7ba5342750360c0dd03d319e345a2b023a6a4d8b462e1072d0ce9f02d977353f252680a528c371f4a11e79a0b4f17690b1ea374a58b2a7add75e97d15656a9fb3ff40a08b2f82e6973317a95f1a1412fc64942245a6ed583b16777316da5788639d0ce92ef38c + +A = -1f0127bd1ffe25fe21b934eeeaf1d9d7c525e3c08179aacf7be1f550cadbfa60cce6dc5f3d89b8e0cec74999f27ca3c76164d78cfff5a68af2f96542aa3ac88da7f64e15328a3f93b4736f9015e1306ae232f0e41e6f4c9cfe4ab24996159627f2ece676c20e09a2a582e38b6adb8527d165038d0ea06146883ca277a6fd0f34e580935a3b81fc066583c15951d0ae6cbc42615d87eed7fb79462240ad8cad84fc20bc9f1ca72775da98f5bfc7e04c805fff89a05f408b761b6ca7fb35567e8e8aa6a9172be24776f5a2482ca44079762f1aa7cb3e665dd6d667938c +B = 125aa9aef5c5d9af33f15e1310c419b8b9befd0700db34ff03a26e8031f5d2e4cf425308e09b085597aaeb51ef407a79a5a5cb3f53ca74845bc6da0b4415b05e0d272b41edfb18b50c041d31eda9e25604fa061dd1a70c41848e575659d2922210ebf753c1c70fa69fd7605fba7080f59a80b2ae752f684ab2b99f41e9b76a6d03d0282fa03a37decd8b08d4b98f0ffb01b25151c04bfce6919c9395cb657bd58f7c9f43100cdbd27eb44e70018fc71a2fb6683fdd06947bb7a731aa7e565d9c61a70d2fb8e08c471cffa81f5909f1e0e18a29720f6261cac93caf70 +GCD = ffe4cfc33929720c10a50d79e86a763ace7f2693872510081fc480b6d810c19c25017f5164b0b692bb8b1dd6b2c2ac24d0229737f444665a8c72519949cfa61fb965a30d4af3c62a032b528afb66f66ae81da3f181bb57afc5553817f1376f4c58d134762512625d7145a97aa384 + +A = -42874c28267812ef9b2762557d7db31414c72c7f72ad0a427a4533b04df6407344b4dde15be9e54815855ebea31b10d970325eb323513c5512eabdf43b100e8394dd87da52b4bc2b22e66acac7d9c33cff25b096243993b960cc5ae8e123e62d1190b331d3abf85fe3ac1597e1050b6366b32f6a76a2ced1e7ee45860abb20259f70ef2a6a7b8cb2e1249a162dec0e7aeca52d95dfb8e9db23f95e09987edf2a9f7e3273a47c629b759e66c9793eefe4e7ab6ff45242be1d7619e6d76e9f0a23dc2b1c83aae4dc34a16b0c3c443a8d72e01f24a84738c92d598dde40 +B = -3676dde59351749bec5f3e33bd076d22cfd659a25ed739ad45ed0d2c078a5b34ab97189ed2867c271e53833267764b449ee527b61ee12bb03cfc3d4851e93a75c65c759cdc6a5c88b488a93681cf0193c2709a2458ae892bde55148b5d39acf4e1fc1950eafd5aca224390c2a9ac28e00e6f5bd29becad476bec35ca9154553ad050e46258559307edb3a7e13bba11ebdff10312c50bc42c0cf4b6539f6987c6c107ce93ced42777359a6628485af740ff8b983b317ee07a7a5b0ace63f0beb8443cdf7a33f730b6f1d2db33762b1d1479baf1ec0a69dfc405362370 +GCD = 747e05b87df1279d3c852d3ca73d820261e95a157aa16445422148c43cfe9c7d1c746ac93968946269ccc90439aa468673acd7a804b0a6ca97a87aa77feb8fcfd0c3593edd4f9bad9d2c7fc41d67cb49ee28da0329efa3164b1c875ee2acdd9e93a900d0673a2b18046dff249bb50 + +A = adcd61d26bd6dcfdd92d88182506cc9d73367543964e01c1cf455a9c09dd395eeed64c77548e9f367fdd9251a22c9acd25239b22f58e43e978c19e7ed30041bfac12b49e6eb45bb1a1e8024753e5f20992ec0d6043e4e9dd0baadd83743dd111e71c10b899f5ba56db8a832819c1c3f7be2dcf29c6c1d4d2ec5c953f999dfc8e51f224953dfc1309da281e73a4ad1b80f6476e28e8bf10e2b6488fefa050829e15115082dc003493fd741a4ae69e31376fe0b038dcc4f7427096a3c510765a4ab37eec7ba339dcd584e888eb7b6199bfab0ecc7b22a6c418598e6f41 +B = 923bb71361faf6f0a75d3c8c3673c0f77927264bbbc9733857fbdbbb4390d7890f7add79d09ec6363aa91e6d8ae9c3f9f78606f71f819f6bec174f94920d528fc3c912c1e77c366c4fe09bf36252a4b90fa14066e545df777e07783cf89a67c7561691a1c0d33e25ba92d4d5f8cf08c037b64751e4bffa046f055675aa96d048ac7a096ff40bc2d71595faa7f91eaaa04d1cb505069508939146ff039b1223392d2b6f78947c447e38c3003448748a8d8803a9ac0f4aead43e031a452f7f6664dfd29f0c8fbf8ce93ea089aa4d37ba49aeabb1a41f9d4d2043401848 +GCD = 12ff2ac3a4268a64e19c0d1e4462eda1b5fabdfad82c87d435f16e53a302b278e1fdc5fa22c729655f17ce07e8880126ce0f3daeced1bc3f84856357103addba1165553173a1eb31de8dd5821869a2d749455b97103d2172ebeb91b6b08b1efef3717c5ba7123613aca5549ed134f + +A = -20e61dfe5fcf44f0faeee89c63cae74f883b12515ae5cc99f9c0a0f116fc6a2bf69d6576fd8be225aa2c8e824d54297c974ebcecba8274aad93856b3b58f0de574ff69154890f489a8039ac8bd641312f0c908f502c3df474153a760821b4c2fd097fb568e757b9c82c1c465b13e2e28d0fc166f2d0989b742e812fa435b67071ff2f439e236da56a5aedf8588343031bb6ecc6e3f88f9f87e594e75e485e8ae821a5bd91e3d67cad37f77d0c89db07c0cafcb960080236f0fd63fd8eaff1be78a234ba388102e87cd7ebacf0c94facfc9c6f16fb0e490e5c24d91a50 +B = -3c61a0d2f705af55c29dbc3e3f99fa942eb8d13f39fbb001dbdca1e89a0c61bcf44f60402eccf80265a7c8a3e3cc1755da2a0f7dc94b5227b65db11aa29c6350af02259bc49613269f003c51ddfbd6d0358cf7ea871de278cc8e97c8206152b611c7f70d9150769ba6f861215264451bbfb60a144efb6a6dcc91673fdc5662e81a60a4aa8b235699c8e2c5f27814b05ed6114c7caaf268080bc469721de11e15d6571c2b44d1fea8cd275fb62f98fd817bb934f557818adbb80d5086492a80c1dece0021b97d333687c32314d76fface79930ac7b2feac86849dee194 +GCD = 45be1539c46a2834a1fbade1881a16b8fb2fa0570c363599f61b138c83d6110e0d6216d30cb8caa97ab7206d42209022a1401a7bcd18f48b6a53c4bc6eb00d863d7bc040193c629ab3e74910d624706a8b3291563e35a3c0750774ef91188cc5716476beffe3ed4263243eadfee84 + +A = 4878c5e57ca36ca033c4938f320fbeaf7e8fdafda0f146299b8b155322a15d98986b900405516e0a6e44ccf0e730168ee01f0330e031e0fc9186cbe5d0012719679af5a2612ce86b9a3d2db40783abc3ca018b6eb1f2a03424cfba61e5e730bb6ab5c422bf125e9e65246cf4eb1fb100ee5a9ba575a01c1959157a04e6e965c15d7819a17e9647410e4f070fe9547afd1885b8572ab85ea257fd88c7f537383d48e685f57c775a234f64fe48387c542bc6617f426a8a5be365728e079c3c57d48e297c125fc4daf152c245ca3be58474453653d50f1d1e9cfbd3e5712 +B = -86745b64176f79b15a173eedd09793897d760ae2aabcd5b399f4954f339c62a1fa34a35abea1b94757a4513d234dc729b45f7d4090d52c7123cf0a0b12f9c3bc203808f33cfd145755ef22f630ade100cad5e13fdae21346307c3f7156f7ad10e7c636fc9b12443f0fd0fa131b62fd27e859dce88430f9a86b7d3a7fb0ffa31b029eca32bf53048333abf34af9e738d3259cf0902bb1b03d20e7eca505168a67c0152d2c56f084575b4c3daecd7f0458458212ba6a861a0354d51a01e57729c433c8cb52f6dfe630b5c53691254cd07217409aafabfae5c1f4f93ba15 +GCD = 4c1aca8c47fc565105cd9f58abbe21b8ac3137cdb7b5801bb7b127a42a1631f5bd6ef2088260113a9d6063edb662b1f71f81ce5e4da902293472598d530470d446082ff37caef7a9798406dd077844c92214dc99a3990efdadafbbb260b3cf35dc17650ee01a1feffd33f545b3009 + +A = -565deb72b4c7d0773c74c4f78d6010a6981a35422d8999dc8c13c14ba116ab8242b59427c43a9de6830f35db724f7d7511387065195758ca0ce080cf05f4515c1fabc54943aa61c0525de7c46d2141a75873608e5c359b7ee389275d01ec64d95a5d17a06b7ae1b8f573ea18ecf7315c2acd0148a10043f077980ccc6831e97e1fab4f29b585beb0808190122ab03cd9ac23885e703cb22d623e8eeffe54d257b82a2065ffb17d5ba68b7e43e3122793436e2ecb0f9bf1b2ab00dea83c37fd7b429509bb4bf4ed0bc8d56f8c88b31b9af2ec272ae74030008c14e38a7 +B = -42fbb0de01be3883dbc4417379df7f0cb45f72084cd6d5126202ad0a6fb2fd71c7963daac0b1868ac3ddec4c320a7f42b0d50d5305e7af6971ce894a9ce09054e4dc7c716eb25776fe7afc547b7b5796d240eef70579ae7e46118cda2f07065a455bcd2c0a92139b5ae8a6445473af0dee6c12f57512a3544f7e5c6ce2588d41e0a90bb656308623737bf0fb39dff23af1b3349b2ad6739f6eba0056ce72ac1c88c8826be49ba233935228564841e3bd569a2a891528fe768142af9169853efd150a0a361febe19025fb888dfa733d710c6a11b20b14b033617d3c5325 +GCD = 8be3b4c3b4675483919118bc17457798be184d821e9d81a47356ccbe2f8fd25d3fd35e281ce90d3c11250b20e4342b0a29442b3047e18db2bb249b0af688c1e31cf70c2d59663f34cd04a5d9bf9dc65dec984c8d68bb967bcbf0817bc977f07f5705ea0b6f13f0d8bf166a8f5ca9d + +A = -eef30db01b72f8a0028b8b384527b106e08de5bb096bb085518c87f07d426f5a62420e1e37787f44a73febbcb6f1f64b6d4c517d1afcc1a2835eaf09978131682b62ee4e9dd1ac259317b1e78e3cb3a189a9cafb04253d2f7244a7f60a7a7281057f0099171f24894471bf7a94fbc5b3cbe8518185eb243ce86e17038fe75f31f07b5a108c54dde8069c9a6e2e9e17c32a4f0cf4d2d28eb391a23a8cc8cee6219d95e849dead37db7a9c1ec708f531d754b3ff008000ddebcf18dd40ca6f29b53fea9b4fbd928989ac76fffcb43afea9e0e29ffb1033d135741b570a78 +B = -17cfcb65a271185b6f1017a1c5d2c81ea23d765e2d60eb0ee2d18d5b2e281c992e5cbb452760cc02847ac702f9a2f65375a5ef5887e0c14c795a5b8c1b8d57f90f91123e5f396f72dbf13b91a71607c679d21285fe11b205d8e5bb209304aa3df14824d855a75f4d499b6f359262a03d906c9a6140a8652b8942c17cc756813974b49fb299b288471025089d86b9574fdda0b08a12eb23b43859723c04229c090b53655711a8f93bcd8dde9a43b080cdffc494802b1774beb76fa89d766936981eb080d6bd207f55cf7557870a92ec7357aff88f6b8c2ccc472e030e30c +GCD = 1e82e176994803a418616e837dab8a2ae2bb68983b090b15af6886eee1f2a877f362ee20fb385193867caac5be26996f53c91f4a31ef9edcd166ed78aef21fefa95b1a4eb63ccafa60f943fcb162b31a61ea6bd5c1aa04127255b36ffc9e3651f458d46c214764e4e801ddf4bc13bc + +A = -c3922aed31518df5d5b66383478410188bd0c546ee91b8d08d052e8db0b93035bfe322b3564e4a529d7b5b3847b64fc07fcdf13493c948420e0a654e844a2cbe753fba0337655c1a8c4aa58bd914592653b5097d06377c2da399ae0dd8b11636b75e7f5cf902d417d68c4128c3fc124dc401a57ac851e7b5b230a0d7c66055713ebc5913889d929e48c429145fa50ed05937248a8e1404238e4518a2866ed62abaed2d847f90f99d92b930d68fef615e544671995e3cf8db73a170bc0e3dee2f98587f74e26de8dc20ed5c14ba0a7ec7142be000fe9f9daf6088a12938 +B = d333766e227d220325efa3a638364dbf744f3a038f28e9baa4ebe3d61a141f17a58c558fdaf56032e86046d28706b30fe7cc72bf8877fe89b013683adefca877ab44dd2ea9251105a39e28973a7d9df470c88c993ff7fb58ad2bb14a62c88a5d350c8b1347d407d8385f25e755576008340575112dc21c8ca340be6b7a9988513cc49008ffeabd0724d5c38736da898d8e0efae1e059f9a1e7b1a9f761c01a148ca4ed49c4e60e7286b6ed0ef793fe90a30233943ff0eddf51f2c2f31235dae2a23e67ed66408de4b87df20ee7e31930f3da011b7faf919a88612129f0 +GCD = 6486d245617f8c040e48647247d9567d1810b04b08a9a0b9c6eadc46d987e9856b52680fa01314aa29bfe60a3e9bf93136e6ecb495b4a1a63bf1bf4f0ccfef86e1a42256d22ceb0e136314ac0e1e23567f8ef087a4cc554ac251d8effbe040d1849adeb223cbd030a548fcb5f6e728 + +A = 11fee09859e58a5d3ffffa5edced83d5f9bbda1dfe8f7079650a1018d032a322bfabb3dc78a35feaa0c1abc705355eedf551ddc77c20ee9ac79f52b8644a7b9b1dcdc5a1b7c2ac1c06fd2c46d5fe5d06c9672534776d880bf759a04a2310cfbcd98767bd97312bafc1569c515f2fbe996b5e1dbdde393c1ee9f49c68fab84a33285f49daa3ca4e999f6b4c99b8f58e1fe9869e1d5f4f218b64afb75f531f54243a812b4c83b87b877e7d6b0934f40aae3c352f6a5cad98a1d2b400b5b1a226fc7249f8897f1910a949be5b38977c49087fdb360056dad0d827e6fb61980f +B = -fc38ce95afc61765cf2703b190eba47db1d31c539c2f75f09534297643d789c3e3bb33a51e42d700fb4f8bc93a4408638b5189f8d88bc3b17f6e97416b908c3917b04ea24cc25e354a1ccfd61342315c8126589bdb4c333a43a3992dae58ed5e374f30bd978afcbbcf03be131006d0c990a5d1d61db7d35b4e6024de876e2a9ff697dcb7f0f42f32db151fedc046465141b5f87a5f8716b50124cb8ef7a2ae925614a49b7e2e1e2ac9861c8d5ff9da4b2c4284e09829d8a51e5025d5b13166e599909ab0da8c612d37cccc3ace25867e0cea21d8b045ffc7ff1acab320 +GCD = 1a4f2ca964176a0557c7ba52ed55a7fc7a15e75235f2512431428df5fcdc7dd8b82d7a6efcfe55144362ffd204cf9e0d411f2fdc726ddeb4ab95c5f291c02fe2584fbfaa16d7a39d9fbe210780209430e92a6fb19b18e0031b52f11b2a96beff8d3454c81bd88c636f37a425a33d719 + +A = 465ce20a359d2f8b512f9c3db247f5e7f3898e6d01f34c12cf1f59f84c6cfe131e32a6d2ed8ee392a40d756f452b53b830e231577876c7d37c4de6bc6b392d9ad1f8bea907e8ded4703a1d81639cdff8e649d70e44b7a39068ce2bffda0f445e621a9945fc3205a71ebf701a8edc4b9fbf7d8b6d0fa380c26f9d84845aea7b91e6ddde7b2cdde693ba73db1ea92e80abdb538906adc1b979660eaaad42a2dca6e9fbfa9be8730bada7c595bc5df008e3081274377067e5a4d770c4d2830da8a866e3a916f82d18ad9a1aca825b1dbfa070d8be372e23f57bcced94b782d0 +B = 2eea0aca5b5725a6b023bcaed986272637e1e04ea0466e46a1aee8f7760c65598d51c385342460c21f4e07c5c612d8852a25943c28b0b42f262a1d0095055b518da4f7320f5f7c1297a06109f7c1ac713004bef9ca9753530b2e933a7b0ea62c54b5a92fc1e867ff7a56daf7ce966c63369adbb0c49c41a8895f9c0855a72beab389a8415a93f71cf002cf48f29c39af2c9b0315aa71977242bf2eadf518697320ae86c043ef6654a12c58426552333c59842f66a9001ce237210a6683266b20c8bfdfa128adaf7a6a6d0f7c3516f9377c882d677895beca7be0a5d07b34 +GCD = d7a7aefe0f0e9eb9db3f52f0c5e3f8dc15d1439880b835b96e5c2822ea1e98ab967eb10db066aa1ebe6df30120ac2f4d5d9c7bf7979bf0ffea365fa35a6fb7c741122bda2e4bf9797a2bb5ca7ce788a0ee065d61ea76f573561ceb85e6f0d13f15aaf0e3e2068941aa44b8d1b96f4c + +A = 3f12d7f8d2ff8db9df0a180298ad1b206f41127b07076c94d9b69c5e69ef2080576f111a6f9b958a0eb2ddacbd9e0e2269fbecc1e5f40d8504c93fc53772a1847aaff3e3b263c0a393e4b8fb34d19d9c32c7be3b782535bb3c0a5056f794e489303fc02e7d2e81922faf105ed5a601512850ea9fea4a40ae93d046391b86883ad2a1d2cbaa6a43b14d3daf7fdf0d1327a2a0c7da31e8804054826564d7e87147be9419467abb9660b5afdc474574aa62fe27a7fe30e73b75aa4fd5c80dc6b58e40fbb9cd6d0f9fd580f9f55ccf03ba3db87b8e06cc040c4879fcb69bf0ba +B = 1ace81e971800948189f0a863c272ac40ec217849fafda84accd637a54f34a5b82c02ee09c84dfa776e2c68f0eb1c7c321d8f88f47d18e5ac33fe70ab380bc3e97bc879446bbbc718123950c449b3e7b94f80c2f0b99a3dcfe90eb222ae5610a4917df4736f13e3b684bc2970f9eeca5a2006a32b48e25d9fe7dc29640490f9e4bb25fdc54e02aad4f06711d48579ce002b031cee0834cb0ba6d11ab22ad99b2cf0d92783320ef0aa38999f1900ccac0e7b79cd0fc111a52ae842358d825aee7eb3d8f585a063106a449990da6e561d8451bfd2983f910e4db1a98fcb82a4 +GCD = 39452d1f3937c1890703410cec285ccfbd8b17e35829065fe47f66dcffcf6d4b0cd3a9927d74308401fadacf12671d774aa328d9f9ce93578db1118f6bee542043a5d94928fbdf09f23d9d82ecb830072c0acb31ea87025908ede38b3ac828eec2c67cb6d258d224b6cf5e2fd1ac4de + +A = 1afbed0d54a6ea25741d2351639659091978b1bf8e8d5082e9c0a360c665f2690f8fab55546fdafd580d9181646692a72b31f4276ff229623ab674793af440e31399c60680fb2b204cfa71fede9a945fd8dc1be228fe727b237f0f48804274f5fc8e90011fbeb35929227d2f193d79d02b19ac791ec1bb94f27a07dce536b44a15d30dee0684c31c22e9d21e97dc3a2ad75c7878896eb7bb1d405f9402bffa2e8041e5989e82d08bca159bbdb5cc0395cf7b1c6f2ea185787bcb94a0f8f2a64e2345d4850af22163edb57f76cdcadd60c9a209993c0f27a2cbfde0247e5ab +B = 2fe34c0c99a6826dc332867dfc77dc99b8dbe52e9683b86b26244291ebef67f9a3b9bd46b673b1005142845a38d4496c6d069ed27653c414ba5e3023a8970e050b4e54a54a2ae90e04cb35599872606dd5da7f7f80165fb2bdc539984114ab8e77b8316fdcd8ab3d22447b26712cd58a71026664a35a61529075b0aa56e201607ae8c59a3c1da6b5a68144fa50e031b2c709ef350541f1b4487cd53746181b4d99b71f42f80f3c2ba363f6a4666a0fde51f9153efdcb2837459ed75353ec9da649385dd034bd273f193a1c3d323e840f1188b21cde141c66bc4c77cf3768b +GCD = 248ee1f194cb938360dc5e0ab026069d44a799a7e2105f9fc1a89b96169ed3cf188d80311a8fd0d2f074b1fb6970be469bed4a1e819bcb9407253300d77691b8877b95cf442ae76e8d8b47148a6f9a233a7b67e7eb8ec5dc1bccec66ab52a9b946b1bc41acc8d95adc84486c5291911 + +A = -1be0d6f6e188444f0ece9942788a4f99bd3af074fa80b9f428d10a4ac68bd1d0cf322fcac4b7e718d1b936604f5423e621ca1b0f45e28565507f07cb39fb334b28a05006f5f5aa29dabda17f16d5037d17cdbf170ebe151db47e14d90025514a17a0ca18acbb78a18ea4d83bc1c13cc1877e410156e1398188f842c55972c6b0d939c566c3f17d1abb25b15640153220c072968fcf56cb3c1f6f39f179bbaeb38b96f0fd5693eeb2247af34cdeacbfd56d0ce09d3f53a79bfea10085237dbca35b1172a76e1fdf91637939ebfbdc2eefd43105f5d53bf7d33269f92b96617a +B = -9172f4550e4b5ea55063ee562477fa88e74461a5ff42ebfee0c624bff8efe839d0d69da897b7cf4bc6f5676ca9c87f7e39012fd8da3b41b422a0227d1919618c2dd5e2cc098e1c0434d39166966b0c2dd09ac310fc45df6b611f87aa181461abe77d7c3fe471a8fd57d4a7a7793427185052bca466454afc8f4726543e3b38efe4d9fee8a9cde8a6335d956f2680a4ba0974fb0378f6491a92eb77afece22b799227709e6e21b4d3560af9fda8de9a7ae0425a9909652827ef6971152bf7478f792af023e392c50bb6c8b7b24cea6344e6e4d0afffd7dfe43ad2ef4c338ee +GCD = 156a9ae1f0ee924868ef4376afcc86c8d55c73bbee924bac55922ee3a01e6cec17359e6eac36dcfb37445878612938fdd6c4fedd671d9a3e574879cf90940d44a93eea5d922a090ff55273f0973218195690d2ce88298ebd81e9780b33f1778bbdef68d8410d6f1a385be9db6113616e + +A = -56f539d41403be769050f817ace840895ac570babf8c3033b667d2db42a52005ce726fcb55575556775e627edfdcbf1bdeee323ad1fb675690b011c97eca7d88918e0f71fcb596d266d994ee0753a8d7c7c89da69e0a5041bea64c79c3c93bc4011c444e17cd2ac5add4d3fd10b0bdf2acaf6b70639442665cd330d20192ce0e4b0fe7bd37cfbcd6d1e8f4366f221d684ccf4e1fd89856fc96a22b079b5d1611d6f0922d2428005863f47ab6c485d71ded4ea373b3735b19d82c0568877a095f0223015ed5a41cb1a060eed36c06bfee6ded92f14eb96329d15c136d30e939 +B = -4415503e5f846ba1f0f03a90ff1c05dd80c4d085437228364e0b4a33062f95368112ae27133c10d5d7d4682d4cf2dd9024ebde4804854ff547c69912eff87c25738a0d7c8d5ef1912643a36e61cfe8a1f40c300dfc63172387400519719b920bdc55c9b7da3e1c1e858641a7d5c5e2a28b005934600a2bcb859f553974cd1e0705dd10ac144afff0121d3ee246bb0f9bc6f330920cdbce9753082b10eedfc849414aa5dd933af9055b80a33313273e4f5f3f91caf9ecaba012c10972a6788c0e0444078ac041440493a79ee548d137aa11d3d0a98145f578928216400e1a89 +GCD = 45aea79a5239e0836adaf6641a2775b4bf306d38ffb9cd07396369d7ce988c4fdfbac92b1d96ad1308be1fff9ee341a430478f47c35194abac2a702d40600549707c8b8bc377187627b55239741db2f18609922c3a5710cffeeda24e103f367de5bbda61d38eb12b1cf04f90034e3f55 + +A = f20c4fa93c955d6933dd0cee2acc5b7240c4483e6b7aa87b07af0d6a675e17fb93c3edb8e0b361e6c93a1f791f67b7e6d93da495f61cc4b2a5d0e8c02c5030ead30d96ae6f204313c53fe1b0cb51c95973c921bfd9dd7e01d72ecd4a8fdb68e64988e9145ef498f6848642191840480b899202d05de083ec9e2ec62072231faeda69480e0106eeff2d35385a312d2fe8708e5c61f0603bd5735a6d2b87935b6b8dd818d0d167b76043ef6e185f3d20828e9a2c4cbb601e0ebcbd784f6ae60f752f0e2c4f348d5479ab8c07c67ed908777729f861a3a4e62ed1071dc122af03 +B = ea2ee01685b57de18cdd73f91bf904741192a96abd66a3d1a6c187ef8902318370e32fa5aa56f5cd76fd536d381bfb9009a7bdc062c491bd4763f759d6e773efac7eb9a2ce2396ab45b88ab6ec0d6114593c5a2c422ba440eaee760b51ff25700e882668f36eb1946ab369e06321b3a0fb805c2b49d548afa4aa63b3b88b1dd2196a25533b7661eeda2d9f51bac4c0e23e4bfd09d340e6ec0f4e706459d22044421f0a5e802d6e5abf2dd73c60c083280815e2aa68dbbf5b2cab139f89d3fb1a96bed1db64bec1dfe32549b975d0a5271960cafe9e10e24c2d16a7871d0b3f +GCD = dab08f84f8847817acd2164bb91cfc1f8bafe8223e4fd8bdd1b8a5ab42d652e768385ec71eed5e08af81d73076ad436d9d4521bc6eb87afe61374db9f23647f20f101c2c565359c97f94006f3f5b3db4d5cd4d6cc7984a47c3fc5eeb6e19868d0f6808aabfdf2bcef7de057cc6910a49 + +A = -2942a1927a93d2a128bbf767e48362cc697d248d441336d20047ac900e50e7a0d468e0aeaf3b57528fdc9ac6b1b3958cd55ecefddc050f1a795bf0b6a391015f33b8579879cdce4cf7473ce1f1ad5db6dc9246c1b76d6df9e9d70d8fa4d41c57c287ca03398aaaa971dd245e0489adc3cf9701e3ac6770136cc95a874c501c257159f944cdad2cc8c96823db6cfa3d52fdf7bec49de3c6ee249c5bdaa2b5bb155f5adf57339f2102e2e15ba77479b8ca59c525f3c214ff1c7ca3e2c6091074b657286974261c7e4d8d4aac743d328075e6ee221606c07ffc0ddf79aece931b4 +B = -471ced19b06c7aa0fa0fa99c9c5e159f72e511c617ec2d4075168e4562ee742cc643aa6e45b5e1a00ca711654a3ca8f2ab16bab6da0e9e013c9f980c595dc14f250cdb4398290a03e520ed14b06ffc2d764c5650aed43e29624577a6d5958a794cc6466c826b199455289cf24c08ce39d1b41c342584748686e9e07ea65ddf02f7da5c04d0489edd8accb2307f783566ec1139b8b7f7e716afff7fb40da344e9e49ba969109b07483dfb7b3cb6dbf1441ef5a9d5e77cc4c68d0956399c9479eb7fcaca5e49b61a5733c1c9cc031d0877e4737def7ecf5770c9492797547180e +GCD = 49bf3d936420e0a631c19cc07c32f897dc9eba63db1f4b6b394619b3d79a7b06aa27628369c426a60dc868f52db7c9c1f380bba102910c89c7aee61efa4520b6dd199994e245d3c8a9754f661b0395e98e1b9555a10bff432b9ba7c24b11c36f510f74ac063487b86dacb369483b860e + +A = -eeea554e09138296d800d60dc2bf5a7c2c80671aa931f70e3947771d1c9db9008be9746a3843475d47e96bd10829fa77a1018421323b9dfbbe9f7fc0a5570800f29d30fbe27ca4be1d0801e6b0a9456216be6f0ae0eaae947bdbaaa6be2a611c6a653b2330b82d0b45ddcacb61087bfecd085c4a02d3247dc627ed70ee8783235129ae2afc42d4f77e930f38819e4cf4bf582f4f4e02fbb97e452535883915ff0e1e2b2b6d979e06ba83ca2cdb9982992f09ba3ec0ad12615bc0ffddd23bfaced60eac37c654fc0505a32ef61395ecc70d9e75f377ac6eb0ccc784f99151907 +B = -7780064239bffd36397611985f54f6ade9fa8002c2c771988c3881c17626204b8908ff93c42af8d63c9ab835f45d0f944831b9f21afeb4d75bcad5a3ddb8ecde498a82aa7e57d81857ac3dc961aa885edff580c98841bd752c6fd06fd8b7652b573bf22df9c08fe538256b54e2a6886d12b533f9d6ae6691ad3c2333fa6f8dd97097cb0d5c225b59b584c953dac02be5f4a263d028c9fd522c3ac462b36ee9eeb34786e91d8d7e765ee8f3ed291938c246a2e3e9795ada0cb3d768b97d9c8480625f26c857605ef5553aa5d61d995ea29df1ae8622c90c86bd9458eb40e3b79 +GCD = 69fefbc7fd8d81f0876631974e9692b1cd231a40d8eef4395650c9c1fd48096f5a6c4b43fff1c2dd645e6a5f1ccc47c21d3bd0b19bf9160c5e86fe6523acadc61bc9d001ba79ad971a7cc003c2da1389ddcfbd83f30b4142b0cbd4deb9afc9cf63c6d7e0681c6105fe964f29a0915787 + +A = 3e2fc58ec40beb7ae7bb16983aa742a4dd3a0c23d7bffd643cdddebaeeebc667be7ae9c02f178e12159ae9eb3a09c57e0e0c1f2c5a1267bf2cad926680faf94299c043643c5ef7e4477381dc1b2c5181b3f509ba2a1a2d7280f263d2160ff248cfbd5770e312839f95773a9efdb8a14d3408e80308a31feca9e5c98ab1f93ad0c086634c4e3fc647f073353b94e2a5a3f4d2dbfd1ea4715d67acd5d214f2e53a48659edf2a3cbb3de2edd7482b7d1a9524ab5c91e624c17d7b48460f5536427ea1c47f7461205b9303e4e48ff5766f4ee1cfa00694f294b9c1b1d044eea8c11b +B = -1db6e556e6441a313ef9278e351916fbb1d1a8f60b0473852c545733aa56cff148a5e9a99a4648ffe094cddfe85f13977eb992e573d38369c71103f0d453d7f1c9cd28bd22fe0f8af239a26740ee8a52920a2966330613c815f9e4f5de7a8cc4d595206771475fdcc0998aeaa91cba4ff23f5755c4a62e46c488e4af8ab3ed2e671711f514495c47daae8c7b39bc16bd7513d25f9c9c5a2932cdfa9a4822b97915fb08aef9a8d700745ee1de2b1b8315cddcd939bad1eac02ea4f90a5a51cb0fa9754e098d5cae722559a5f675306b94a3b555fa1f129d0a8e1c2bd33d644c00 +GCD = bb6ad64703bd74ee232279542a844c115240879b6ebc22b737ba06fbed48796a20fae26940d9f07a4c8df49f6dc6c02779ed89702e7cc8824079f024ec1de0e40820b909888d80d22d656fa3f1089cbdeabc4ced21406a1b278ee4c3ed02316d5a9fde47a448488687d3085b88387a8b + +A = -73bb2370f128449853de02fbf16710b2951d2cdc00432d9d559407e5dee3ee124482cc8841367719d261ac6ee08990c780c541819a5ce7724ae42bd19a13692bf59e36040fbc28c3f5c6e3082647b96957fa1294aa24bff9b6b13d4792f7defc708ec57b6a1828acc17001fce817f444f154fbf50310e03f3f3cabc66b8352c130e90686827187021377f0ebaea9968248fa22fdb2c7002eb00b64852d1a26250410aa9b43965728d7af0ada868e28a8139debf8bedf59c37d3e47da5d6d1ca6b34d6c93921cc626b4a871c6e4b14137ad1373a7067042ef74983faaf9752bd8 +B = 960b1f8b08542cd8bf6594332bd841403f4f4626f102df49c03353dbd0d62a5289b581b2548c7c8a2e38819a27ce89efd30f06fd4929f718cfd8b7873b79293220a07638846de5a066a09e5e128bbd4e45dda9786a63fee4ec23bac09b2c88b5e83b6954dcd3ce851cc03a37834f125b3cd704c8477d2379548bca77ae370bf54f45247de785fc115eeb5f4091724791db4e11a06002ea4de58b0e89dbdfd300730afb14fe91ac16bac4d3801ba8920d988853c9ecbd345854237529b8e2c2285c56e0efb9afa54bfc117cbee3cb457cfd26516438f700646c08aa0b38f3d44c +GCD = dbee0e63069d014880f53fcbeb2aafeaa97991df3499349cf8619465f47e5dd88a55d678be9fdb885a62c072e6a30a24fd125a4210ce4d3b02f8bc140acbd53d0f084f9f523d57238d793d788d89a53e6442ab222fcb0761fa574676c43469fd1511dceedf8fdf1ca51c862b8531810ec + +A = 1ac5c776d25c58da6fea2a5c1bd1ded76e001f29ddffcd431325de81d61a5dd1cd7afdaa7a2ff3c1f442f4832f085e6983c6d10e48e75109af7c5c1c3afb94baa236b738443d7712a04177d4c967ca5d7c4df7c761cc8572fc6d8383e8886e1f93eb63eb5c2ff2d3f7eb631c63896b4f599c60a8d9114620051ca3ae40a4775f8c9bed0d425f0371ba8aa07c3e258275aa05f3490ad50f067e4c6ab1f1904df1f1fdf4b72ff00bf9b8d34fe223f8bb2d3634a44efad47c8658a35059929bab11c35ed31089e959d870d27dbf2bdc41768198e93f2d86cef4687184d1a1b7de22c +B = 39ec69cc272060466aa4137b2fd9eb5b65d1471925b399b9481b5a2a91fa5047469693991e813dd9bfb8c4242229567361f42ccb50f933a48843274027b866f6605742d5f36878e2e24450494cc385bd57a808061f0483be1defd75038eff0b3e89b0855227540157acac06651e4cca8a150f6f4fbcf21994c48eb9e0d5ca60da78e1c410968192717b623fee6b4d48c5c0d876eaad9b970b3699805c83cf3f5e2a60a2bdfd265b409950796335a1f9c704c16b6a577a5de02eb74da151acb6afaa8c63a6a0eb341439aef9a6312d565fb5d6a982d18185c2a3d13afd47871930 +GCD = 2d32837528df392b9f03d87842e8eb30554486e30d647498465bdc7a8f06d3ceafcf7587f8ef5934dbaaab3cdbe176578d4df84a55a0e45531428cded60cc3de24fed19c687e8a603fb46bf21d70a382ebd4fdf15df2a2109709a7d76ad28287d038dd62b617e517cefdf4aa7bfc9837c + +A = -8003378719862360e61a4de0221cee76cec0deb355c8ef52fc14f1c90cb0c58173ff5010b1f5fd2e7a3b2988ae5e806bcc363299ab3e43f0808b16e046e9fcb5a9bc24c58b02cde79f96747e75f4aac790193ca7c104c244497b5259b70c342be35c9da89e9fa2df22a21581969891013b11ce81007e3dfc4970cf70c5d637bcfd0422c17f15676f08755948572d9c25bac8b75f0ba6dc6f9092a6ab883e82177daf43348d4cd1c5ddf6815d7e7df0a60d1a60fd21b553594d9969e54d107086a7280d1d19c37d63cc9de66029f9395c0f20da7cdf25cef3d517bb6e08ca70c80 +B = 7b9a733482154336d56aaa63c85d2606e846c76377b12486b96f2ca135e211f3fb71a3a7623ea8f008afd9c23385352124653f1aa9b6af07b511e63f5f5aa8a14adaacf84ae01183d9a26bdfe6bb1439a215ffb0597b78b651dc954a6a0813553bbed13df34c6262fe7aeb182d3007c6c048243bb39b8c5ce5a874abc796d6d0c76b4f1e833491a1f73808fe29a078abf2cda5cd909368b44ebc39e5659540090aec05fed5735fa164c68b18db260a8f28848c8aed19c89ca219ef53508da4ba527893c1373e790e30c27b7d5eb7226328d7a6018024ef466518222cf5f15fdb8 +GCD = 5896d7e146b9f8378b12e6dfdd299b2ee9d709eefd722f730a0a0d67db0e9a3dcc60923fc54a4975c3cb621704ff8b00733b28bc66a6098e56782834c1fb59df57d59f37fbbbaf69bd4252eca8bcddf68d87bfca9419b27b8c834a9eeffa1070ed2f2c24922933be68d2b5a3bb90a3068 + +A = -10aabbb89a2ab07998d0fb800d0dc7b692af54f1d0010927d3241e48e301efcd429bcc894d1d6acb2b6824ba23abdf8d9b44898b1a198c5e2d03b0951d9a019347805df2288b5cd6ab02b43d2d191c6e34c028f0d5e701a2b348fa37e3e6ef9188a8d170706e8e0831c6a0f1ce1cc9f20cf8f282376ca00bcc806e416232c6e56e88fbf224fa7c91eeb883e2daf8efd665a7605d93cfc69bdacf06e967f2e22c40184f457eca4715a875ccb47cec223295fa6749ab37146666291ab0f9490cda54b828baa3c22dec3a99c6032d26a2511517f8aed7d8f39e6ed5cf60713ac175b2 +B = -24d35fce2c78cf78eea08fc77c10595871d1fde91e89652fd9c83663be827bb609113947aee14dc9c9efe58aebae9a957532a046e8fd8e6db28b6a44b3b3fda27cc116f070f3664ac34b73909f6e2a2e77f5f7a8ce5ab650541002765ce18eb0db171a0a260d0cc9b47208a573a714d92f261f00561c6fdf87c4adb1a3506eaa39d51bda047ba67dde681de74e39f08c9bf84a49cc3eee67699b57d2981ea61ef1bb02142d47c2aa000be40aa72ad49e90cce186583945d0aa5a3533b29125b8211d083271cbf3f4bb44e157f000d7c00241e74c3150a70ea623acec9c44a61530 +GCD = 930b2ae56db52dfa3ce46f074e90be510e2c2ed52f8d12712a29ffec84036eb08c2b010612ec0dbfbf58a4ba584b553ff99f60f240afdb4c1c8c348b12d1181fe345bd4f015621955fd3de9f40394e8a106f5ff4652ff89c91a8690186e6302b3a864469864f45316f2d17fa94124ae72 + +A = 114517f97454f6c2f29b4c1b6589a9b00a2c629cc6fee9e710514cdda09f287e78131d9741f7989dcfbd89247601c936490731e36cb6ea2439b2ddf93769964e753abc02b4fa7cc92625fb37d7d96ee30f33f8cd2c006384727a1b620bc230a9aad1bead5364a8a1c73fdbd9b67207180823538b985d4df7df80872357a9450c71ba965c76e5e35ae8cbd2785fa04c5fe34db7c17d3984986fde851070ba856fc83faed335ab3dd533d461e7b8b88da40f26bbc41ee3026ad402811842757c613d2f201e29f7bb2b2b4e6df8385d03eedd8f216182e70f2a67596e5882c36b17370 +B = -2d26c32401b306156120d17eef5dc1df1cf56b84aa61f8f89b98f4e0585cfa2a6276d59d3c9a6554f1aff4ea846c4bc4c5f0977e22ba387bb24154ea603af2c6a4538a813e77eeb627ef479dfd3628a8c92611370bc7147bf07cb3fb2db944ab1a565133d502894da4cb57a32acccd664c8ada0b5a881d8a9446a929132c325954010c1bb7229ee578bee1f55a602142f42fd4e29ca7d645528f8eb197721bc770acad5c5976e4cc635a82ff8b3e253f6687e5c44cfab956dd5a8e04d5e72f302d2be6395afe0fbd3997aacf875bc559be45c3664f13c18c408c746c677446ff88 +GCD = e16a6f2561cc6b4971da18eb34c610c4d3fe9e90ba59b896084d6757a94ea16065554991c0faf341b8b5c866792350528da6532a95c5363061e254b87972b56325e14d36e65618f64635252a00a2528ed3d4e587035961778868c8205c3a6300de7f7bac945488a9b28b0a840f3e1b6828 + +A = 3c18fb0054de1f379a9a1fc8324a71ee1fbc1e364c0ca9ee88e5001f3f18a8fda872ff63be0198d5d334f517781ad63831a79d2f5de70f4b9a4cd233f5a07795d92e43a3073615b69a23917ae867f508cd7d96f562025306f6885aff5e374f65f9765c56aae1fdc356ded5dedb5ab2b39bf68393720cc3ff6f62a91f78d65579db2f78931262e822f1e85ac201da648f49f19828ebf2ada440f719fca6a1c027501b2261e3b5700cb84056d836c4b58cf6c8e8cbf825cdeba06a16c9f6f30d072ca1456d32c03689cb77124afd0c5a53c0e70d417853ab4d09f3725403919601440 +B = f51a4aea1175992a7e214a98f18bdc8603a1a301b48ef739d451ef2086b35f24400628745290214275fc9a91ce904f79959a518a57a0f770c213248000867f56e4854b1d5f64685ec0807db455608ba64bd1b261f5f7f19f3b386af735373615ab513dafa1a45ae870e9e3e1e0335678bc1c9dde6751d566ba39064b1ff29be00d687956c371cfedcd5d546314a7f0f859d7b2ba75177692150b8101346f311cc10f7d04e3d7237544af0328f2641b9b4b00cf4696e5bed6794e118a59decd69c3315c3508eb396e13285cfe79845b8f8a0378f2f6279e3b9f080aec68b79e5f00 +GCD = 27220d92ad86c3242b4ee7dc91cde7551a1385a1c20eaa6f4641dca256c7d36f4654bab606557f7f42a07903e026658d5947905520c2a3d7af4744fd89d818e837fb590ba4d2a4c49c6313309b05dfc700c8e35ad69baa311654f98a1e1eafdb9f0e5b69dab0c40d7a6fe1259b535f4040 + +A = 13c8372f0519a9e7b7246d0339e11372f3837da7446429d33b56b71b240c8fe8cfbbc9c980dd7657c769f685ddc26f1f483ec7634bd88ae7082131e2066bb191ad2e46035aca1996401f00fa11d2ace9245e8fdd2526aa7754436f6586c5e0e16623fc32d206c7a7bb65572ce48037552352cac1049cc74cc2653c4745b96eaf1cd220d1eb207d75e1d4a138f0264b21786cb3769782a2619afdcddab57335599cfbaf06e421fc2911004ea32ac685c0bc5402048e268e428db5675e4ef8a34d0dd436aedfaa58ba31decb51b1e8076594779c28a4df78317f19f5a7abc4cace3b7c +B = 6d288927fd82bd3bb59a235dbc56263e28c139f297857adb2b21383922c47ed3749b77d6dec3ceeb50f9521b5c5a3ce89e686936179f82120b134f6a8a9462acd2d5251fe84976783e71038e4b7d00390ec164dd9b329a4dfd631512e8fab4b6c09e6180d73360d816035794934f285fea324760d532963c3bd3a762d4b10cbfa83bd47bb606e6dcd0e5c4c1181838559fcde8b3a1ad0525299c5a58203df31513692d2171a854788de7ba683c2f3a4648477e988bab2441020f1888c82ea8eaa1fb805083608a541457566b999a1e1efea8090609368721c9ef54ca784ad9b1804 +GCD = a48e109aa498fd39e7ff176fb9832ba616dd28ed999e9fb201377c0def71791af5bed77e958c4dd9b4d1e58e7d94f68110f514399819724f18370aa1058222b997a27c1107131dc5dbffa13e9d7f86144c1ef8f80bf5e6847d6826d0bf42e22185aba8f6d4735113bd82c929bc51c9fcd4 + +A = 2dd5b46990984dafdc4d5027888fc5823ae16fbe5b42e1ea296f35ad0f65be426754d4749e408f9d8dccd0fdd0bf3f8c283db2a5714b4d0ada6a9db57c2af7ae295ff2c8167775008531ee4cce17ef316633a475fddce2a6e604a63ddb42ce861f227b0481bb6a8bc107b44456c07e3a74ed719d713c2fbc04823d5756123d54c9d4c972332ea0d56c80a438205e8afadef6fee7ef02e9afd0509ffcb03853810edda51fb3513ad1a97aa73a2860997d3396e368a4378fdc658400e3e70904ead9d4d0fc034ec4c6800f5ae90a23701dd0578dc7f53db66a2771d34a8f753339ef26 +B = 19970b4ed7267d41f82735c71b00b2765e3f30f2fb61fbfad9a99267436e0f169b3e215c762c4d5bda9139e13fc67ebfa7eadb0a2660c1a764ec98afd63699d7a810548277d84ece74e981d9c8ad20afc1afe8945a23199108de1f56adcecff9245a0b95bf8a1a69875bc7ae94f47b56ed0c1052486bed08a50b9529ce1cbc34e2b7dc798a02ab4469809ffa4b6e417c10f8307b96010ee9774ce5c78afa6e1b7185332777e822c2c8733786a1222b1e083508f6a18d4e3d2472acf15ad2c7585018c551c0da4f98695a82385c756a195412ce7d4c863843e3383ecf18b5bd35bb18 +GCD = d5b2ca996ad2a962d06e3bf99c16711cd742ae010528f392d8ae8a9b62475da6ec5a5f44fe58a600eb4eaa6a1993d4f85c68eccf577926b2536df910d0fda0b6908f4a8b79f8a6308fae75ad8e43c684eab8ef3afd1637a44eea94e1670306fa043f9ec16068f1475c5d8bc04e24e8fe46 + +A = -c90c142add4cb6025fef5182c08267a33d11c6bc5f288f17a7c2cd3bca6d70b82655427f43331a43a89682f67a13e2389166c5a1c1a3bc16cec2f3d7079f61bbbbb931b6fc4eb138fba8cdd29f0130be25a09df1c34ebcaf37bd750ae601237862fe0e002d988814cbb9de83b9f9261693f5409af575674bc86dafd837c2ece00b1f7694eea21dcbc312fefc3c15597a297b08c5477873486ec592bbd5878ec5358f715374a5d0c89e1ab55734f5f4e9a79ad3a8aad69222669d26025a6ec4af9d4e27ec978f2602e960a8ea7714347b2d7cc9ce938bcc9e74f70bcafa8e0c90b1b6 +B = -4fba1ea0c0410f92b7ee0053202d0af5cd97f4c3f7711e59038ebdfcf570f5ed371ec7677ccdfb1ae9c16ab0e1928b7fbaa222d377251f63f34e8015205b766326249bb8473c2dc44d218ed194c09000ef7dfff514c0e1b8b9421c9f5beec5397d874c5bd91b18cbf27ff7b0f98b2b1b14e642bb289eb62602c6ca1c34b4ab3fb78e00d8a8dfbc49e905bab4dd04d1e20e8f4cff2ee2fbd96cd0cc4b9c041f3730f75db19c720f9bf09e211ab3e8917f77181e2c6ba7c259e21ff78272588dc0f7c5db9eb2af0ee87c60d2849b1a35aab0c5498289d4e24d618e73bd9593e4dd5c0e +GCD = 4c27ee7eb8d7f39135166947e0cee7548aeef26149fa24da5e42359a1fdb59428dd830e9392a3cf54faaae167f12d400c3cf870bb97144c3ba32fa7c0613772957c7ba658371f43d7463f9276d2648f25ee5c01f7d134f60c5f16bb2da335d6bd3f9577135da91ee07f22e301311af28356 + +A = 51407eaca8a7d4e49ee30612bb7a917a0f1a2f1f8ebd74fe0f6d214d698c2e777bf51ac38c236f0a7d961a468517060e83c8744737043bd393a2cc5e6bbfb3f0bb07361415b1dd9e3c5ca03972c16c4a7c99597f5e3d06fbc88f2707a7a9ce2b92429bba6750f65dec8b4a95b1801b9df47a813288c8f8c93489ff57c49cbc57bf059fc75881143d7039189730ce5d6ebbb247b91718c9dd83d0453c45c2891af317d9d98b696896636eb06ff05e2fe9d16eefe0a2988e58bf52f104bd0e99a86a36986321920d101ea815336bc92638fcb80fe401f7620fe26d8c09af965fbb7c446 +B = -4753075acc3e52a06627c3a8f98273593853f6d28680b48310d63cc8841e5b9cbbf309d1dd8c138c39f6fa092e88b57a08251481b7a046a322ba8940f33aaa5a12c252d33122725dabcbef3ffe8e9f85f411379dba977ed79d77034c6fe7f3672464325d1f9f7bea605a5680f7ad66d4663aeacf5b12166167e5b78d092c83ca68808fb927773efc1ebbb84c4ab7ce39e1a410b452c8b61ec25e863006c28f0ca22f4e30b859c9058562c137971dd7a847d27c549ecfd68ef38e8d83b726ca8be7e3e9e7d8ceca45da2891b9e2da9f2cfaeb960d4ce5f5b0cf7d887deeef4e292d49c +GCD = 2fae0be8e73c72f9a5cc9e08e31711c7b98f3f534884890bc9d5eb7d5e3e12b5afeac46a6356759a0a79c424fb335daac0d253ebdc40f1f638ee9187cc0f60040587056e5eaea8eb300cc5df84664bd11da29b902b1016faed622a520b3a457e8a6cdef5fcf7474431d9d8723ffecd4b83e + +A = 44c3b4d2611a1e2139c8700a89562c4d7f30d32634ce0ff096ab1e1f6ab7d16ca855af4d64864da9bf3d15093971e16862d42ecade782e5358556425db227b8dbf63fd8c9b05267cb8b92031d4e81b656def8be573f0fb7b769df43e8d74a191b5bcbe1935a48b8bf517a9d4243c293e02697c4fb9d4997a650d80e96552ab78002e30449f0f268ea63d6711e45775da7836dc4d0d21e5ff9722ec8ddb0c61995061d04daebab654990b896f9d0549e2a86595ee8e7efed3c5c06fc5bd9956f141192b7de127dc4a745053279005465f15f3172fe8fd79d2228e3c70fb47c6daf2538 +B = -323b29283f091493e58868ee85808101324dff01e33cc9cdf3e2fa98615d55c063a84d327901f8ad582fa8ae7772d2bccadd4e90014f3172a727bf6a85bee37a35e0db71d385b3c65527f3420118848de88b35efd695989b2ad329b0e6cba69f631b3207cd4664e4aa36cc77eff4ad00da2f51f8e69a1381c1ed7506468b61a797732ba77e86b08184c55e837e67be59cf59bc69032914077639c5247ec544f54f826607833d3ac5cfa760b6777ee95c9c804caae205f5ec44ea9b8fa16582321968d3b293842882066e0cf6da3a58d4ace0292d84f2b243653c6f5cc3544e1b3a5f0 +GCD = 461e865fd91c3746fa3d7cd99e8f7c4cb5ee68c10a886202831ee554f349a7cdc1e18346703d758e616c9b2225f56b30c6ae07135431fbe464dd31916297a6bea854e980d685d887770855e6079414e1188d168f42713b8fc04303584289bd2e84d1942c9d6621798b226da1b13263c3838 + +A = -484a14524658815109e22b3e0afbd75fad59d1171f886f1deded1427703e42c1e6a39aac949d54e3b4761200b76c3b56957f7bcfadf5712fd8d6a3932a640fa4ee648106a1b6012b092298b510a54c8f29809ef1c5e232a7e6e2f701fa48cc061bf8a849c6e45ce82c11ad4f45ad7b5ef4758d3db3c098c936486d8ce8d271f68e56e1d9657a21703ab8801d8592855671884a8c6f8f00fea14ca3df534b286809d975240e5fc6922e03e4b682f49e885cb52f6bc7e153bcbc66854aeebf7edabc3fbe8f1265bae85f171f63edee194b1bab457995217e097fb6d6761b7ecc8bfb23d1 +B = 53e323b8ffc9a9de9a2d4300b14c701ed5cbb4301a7cbee623d883b4c57ba787470807c407e9d85f04fdac64ada58429d9a2eb1ba4a63b5cdfc28b23e5b6fed862001c91935af702db424e6c0878b804088201b2c7611a711b01a375fa3a20f05fa67b462dc7b7e51aa4edba1e5fe4fd8c1ca5baed8d02af19dbc0070247a49205aa64a3a2a05f40f162bd4b8cace8e3341cccdca2bbc2c8473f5f0b9efb4f4cf22f322b63f92ff947ff273a58f1cb48fb6b9d12082a1bad6ac1361b9eaa46e27eef7001f471536e11b7831572c273df076c98dc7ba04523795d354decbafd7328e715 +GCD = f644fd3f0e02931b84cb01fd9e2ce8d295c5aabfce4da5028940919d3b31acea6922dbf99bc7dc3629f587951aa79600a408231f6b35482cbf07049d5735dbf8185c506f55b099fa413d8a712f88e855ec8e022847687b1eeca356163e2a20ff4e079694048df54f8ddc75bf49f3e3703bb + +A = -28876a61642abf9368be3cf59fd059b35a267c43e52399924d53e79737f3303a95e273e5337602f086d4eecb03811ffe23e4d5a31a9dfa0a36ee79b5e420bd8b843569fefd1d845ac608b61a277612a14e3e285600115eaabd48be272b0a7903ca9fb8777c2002e8fba92e6839dec9b6fd07d1ef356a4911946ab80330eeed6da5728b840a9877b3141d186fbe74ae97c141a9501771f4befb6536611185af5027745b0464db7a9a8124b37246e0c40dacacbc49a60d7f748f0881a741c74a84a67df2d021d1dc6114dbdfcf5c440ceddd5599d19f3e6dac988878186fa951076510a1 +B = d0a793226b62e9725f00dd0b75bf6f4311b028b88855e4895075ed055d48df2437afac38cc5801e3de57732162a837aca55d46c0a2b9daa7218fdcac4cab5aac84084b3e7d0006c810a153df3126e78abcacda33d4506aea31b6fe0e02e8ef97c1d48bc6c81449ecc810c98e66d599aea4a36d6911673a9eed1d837f2cac9af223a41c2fbe0bdc83998ac9130d3d4f5145865c50f8c5fdce6aa6daa825751b998249637f4824a32c20ad59a9e59adb4564e38ab66d6965966a335d94360e4be5c6ae2a8d9c490d61231eba282b91db40c5cd7b5d44f714c08a8ac3906af1379b536ac0 +GCD = 1aeda3db46a15d465ceee006c4b34158e06b6236d483180c966c9ca3a2394d36b0385a6d2c785d47df4df803df305541b8153450e5be636ce6cf88d2832e06050f315afed07025e32d96c1ed08c7df66d53bd47b1665aec135c872b8df2828f7805926014c6890ac857dfe68ec5501d88c81 + +A = -3fadb2eb4179a7244d02f41b8b5fbdfbe16fe76aab0267f6a5020a6beb819fdcd9128ccad97f721c86dde164e35f2900fa48baed7c67ab42577af5512acb64300cefe9a0857b63629f6b7f73491d99144192d5a613e2d6dd1a2ed1ae23c079c06927df11af2c1ba9ffe2a6b5a1b7b78da3c039e8f5ff326c1b60552a5416d77c7cd2db663cd1ce4945fe555fd96a4c2f37a854dcf91a4631b676a538d122b688d9150347c9f72d8192f10aa3eb812669a745cfa4701f5381c14dd4f6630758fc2d0674e3ddf601ffe480e6fcb900dfaa627f76f390d12097a11e09535e6f07ce7196158 +B = 3a8df796f2f3aa3096b98d38018f757ab2ddc72995b4bc5abcecd7618062a94e59deec43fa7354e11b63876eb229d3ec4ced37c932c0b472fb2d5abb9cee3021188193d5771b09c52b7bee1685de9be055c34f8e1f5ec663dd8c44ebf756fb3d8c1d9ca47be6b1020000b3ba4c3f3c85c17bada14ff3120c7a4d2201fbe39ea8b3695a5114f7b12153fcfeda2cc4ff9f6190413a9536a7fe639d05c8b5289251a286d6a71cf3b4c1c5f24f4906dacc2adcbea106c9cf5e071e79b144fef16e233fd058424a8ad84235eee837096aca00e7bf7b619bcbd14b7b8dc244b0d252e41f78b0 +GCD = a5b9777ec6a4000f87c1c0418df938cbfc53de702367a2035a317812fb8be40e3d39b5704afea69ae652b6cd5c17325f31508b64ef019fdf0072626190c797e923616c097c159e5378817cbcba2aba68f2f650ed6240d087f429eeff283a1eade84077d9a8e1d23433cf21552d7cc2e98358 + +A = 4546dc88545abf3991ecf7964abe6fd4429091e15059dae00c836bb6d43e7ceb6420896430959df964ab6ddfeb2e2dbaae0b98c6de128f2c027f96089d3ea7fbb665089a684b0c7f121fed84a05dd5e419ec9c2523b35955dda5134839143f03f26017d962ecbfef1b12eea92b018c68f65200daca146e6703a96490a47f775284acbc3c3365e18a524734dcb075b7abf6c8a229dac543e0066633c0ad141405d58fd39d511565955997f0b1fb1dacbb0fa10a151c7b1ad55d5d8cee4eeadb58496f8b1f3a2bb945ec2794b71d816953401829a6d3166205ca1e40285e27dc3205fae27 +B = 507fdaa9bf3b4d4752d3651aa4a7712edc430e3ef35e890797aa626db17ce8363d71abd9b5e137a7d3e273e982d0ef9d96da50115d1434287616caa69a2eb92e7098501f3ce35d4c02fa6909ab39cac1a7d86ba2ab55c92667e631508290e0e781846e6362a0de48936c3b5c8ec2e51f3a27579eb02e65982febaee6ec0e5a916351b1a6221219a00e5cb0a6bac543a434d69941935427e214da344a92d5b71e6bedb70e79c7cbac9868cbfa07b98cf820585f6af62cc2988bcc00843159311938ab76ddff776478e75ee386386f2814ca1ae65c640a13eb466d4ab38b77980fa44eb55 +GCD = 443e3bd521d2a8550284501529e20cc19a8924f595a7a1e5cc7df8c2adeb80764502332844e61bd7d7f2749112fda7151e2cfb7c940862859b294d2250b037fb71d3b9b0da435f7bf6b3e43ec703778ba3d728b0e3b9193150970b6ebfa4d55451f5b44304db5b55346f9afb2a1ffefd54b7 + +A = 3da9d76c9f488318c800429485935f3392ccf854f168ce9668332c66b604bbb1967425a285dcff49f4ef64bad070c3b9c459e8d6b7e0de45e511653f37a146873bde37daea52b0d5d0ee240faeda35ee6a0c4a199f88cbed75b688254e22d19a2e2f2111eb444343b55914a184ceced9106333b437893d2bd0a7848e5bde16b61a4facec4326e92cce9b3c779890ce4c5bacc436becee62e156d23065b06fb4f99f14aea51f12893a5d4949861bfb47892b894f0c73d1e2abf8f58c872e2f170df8cb3c11f4c818688836dbb74a173d5531ff334083a7a16e38e5c851c77af48fe89c7f1 +B = 418a39b25b12c8fc987ed28132ab13a92d42358649b604ec83df11944d880efce6a1055ca83e0e78de1de2fa23fbb728e58de3d2eaba4c14c8fc3cd5f3a6e5d8779c1db2b780a564c85bc0e61503bc5247ee0a26fc5a4ffd1b053610fa40ba85c78eb3d319cda05b28d9800878e0bf6eafb8b5cc21b0ddd7f5a7ff0c1e3cce9293bd348ad35aa80d0f09cacb008c13817e4b4e0255bf7d0d12eeff8e805a600dd6502d7665fa7e31ac52bdf8d498a67f1975b489b47d2199c6a67023470d574c55b6f2fb357122df2e5a504431e501082031ea9ce880910701b08e3eeff4ba7422af65bd +GCD = cc09aea1e5c0f063c86c23b3ff69a0236b6f7b1ecbe680c03939244bfc270551cdcd7ee5fd02895d838abb11c755277178450c0093ef1b2588ba52a1a6021d24cbb7a93379e093be891e3a091cf1dad0d318a1b8a316e9149603bbab61ac866383584cdf9599f0a972536e725e945cfb1a4f + +A = -30930a5058812e9d1a321c0639f73e34ebe5118f079a1f5ae55ffadaa31e0a00422cb5fb2f64fc836941c1465664bdd4c9bb772b7d4d7655225a0281a68807aa0e79f331384058f183385c7ea7e66a9a9279414725420780f6b779f790d6dd1f20320ffe9fb4626193ffd3f67420c27ddafc8a95287aae955ad4853cad2826285d0b80588364a6e3adbd8dcd6d57219e3c177041722cc052a12c78119c6808326ea017fd4056a31cad667d22bf13e184b0fc0e779b4aad8dfed21c85befe2654d90d427e5a2f68314e77ff7dfe691416563e30b3e7c4382494ecea90a694636ba045a1d7 +B = -b4396654068a9980d7698bf6090e2221b9477c9611abfa686539391951998f39e8c7ef838ef58ec33a5f26cb67b87967d45b607a6b3b1d0b8960bd40f1960a7dfa17a40967228324f06508c0a0cb40f9ef1febd68a086965447eeee232b29ee54e43f8b555fbbc8eeb63833f723fa5d7056e9cb5cabe3a629c2d9480cefa10db82b5064b36e0c890c065f84f061e8b96a3d57764ad56710cabe1cf0223d77a19217e7cc2b85bd523999d9d893340203629f46bac67478256a18e6d9e05f3c91d1ad8f5b34c2920ec53b6dbf41d1a47be60918ee9b02d4361f6c31ec380995cb9cbac11fe +GCD = 7948f81b148567048ca6761c68e2920f6f910dd5e172e619c191fdef466ea55fc3151c697bf9d2d60f340f49dfc8594e46dffc564381343e9497b7fdbc3679346ee471f4793d2a94e3da634b24cf8201964cdf6db8f38e9c8e521c15f4387a0e038ac5509439efd842061deaa001cb9fabcd3 + +A = 2822e040466c5e960c876091f4b148719c2502de412bf3f80dd593bdb5702aa2529fe4f9a47cc53aaa154ea1cc02837b753e8c0be83143afd84da0faab225104b0cd2e1a7e17bb10741c40895d7df77356ad2ed0fb821a3a050d8ecac86ba3724404ae3bb0a84f3105fba3c74c40e0a640e84cd4df3761af3d64683c33129fdf657053588d12e6d5ad32be50bdd2f0e717cfc2e2c87ebcc77e2b84cc638b207e3ea510cec224a2b9516ecc85fb67bac6d80c65828ac5950e981ee378b3c7f0fcc63e85f316c3c30a00bf34f09839b3e8f13b45c5dd75ff389624630f66ab8632ac291627 +B = -6f60430bdc2b03eccefa2fd0c772f3b615e256c0c787118fabd7b1d4695a1e3718441e45864ccd1566f57c83a6f204739862422979c18db6231d5f307eebe0eca2634442a8527d5b932960ed67a8ecf135a8d56107bae8aea83daa9be3f3bd56b1e7358136e894bc5f0b986b0af75b176ce7e884b62130a275152ea022eb64d60d6b5b9ecc00a7da611589cbce65a17c6343e879a496bce744c99394037c8f9d95fb34602157997c45be0b8c6c93861fd14b0303be507f61d4ee7f5e4ff11aaa28a0b947d4d8bdcf4055740c4f8573691348c4009462dc89e03b6c1b0979b4ec7099e1335 +GCD = 387cbd97765e8fd3655450ecca4ef9ebc040e8cf909000dc199474a7ed28ab26220ce6afdeab0c8e772e818a87f13bb61e17b551682a5d34df2af8447d2b30ee06cd4c8fd2efb16010461e4065b8e4b3d30987b85fca9b3e45b0bd953d151eff3e250d46f678a2ee46849ffcfedded2cab855 + +A = b6673cc591252d4a0e447feae2763ebe658be5b2e5bd80bd370f7510d5ba9c3f89fc2ba85e54af92604e6c1a5b0db8647bac06d3061c410ce418aca3a8c55b966366f212e3d5703e7effb87032c10628de2327935ff550c7eb77f91c2ce78ba23d47930d9e41624561381297ed8e2214fc916fc96c13f733a3e52b3235c3dceb0e9d0781fa73190b901ccbfa69fe6b7a7156364233c0a2472f834928a73b6fbfe39ac8ab15b07a0491829b88920982cd6bf2cd8068946c6294af451822d2d45899a6251970cb51903e1eeba99f65853dcec035a6d89d90accfbf7d3c51c48118641cd1f9a +B = 165553204d8853b7b379b90c37e8c96b534411abd9fcfc1db67e654e860d31e3a0fc0fa1f702c2613514aba14b816c349737fe80cf8ccce628ee579f372fcb081ad9ae87e305dee73d9b15b5d00f677accd5a11c3fcf20058c42ddc2a21bbb873e7a5ec54c68b77f452263d3e26a017fe72c47c4393334bbed3bc28205e79984538c33b41aad4ba73490108c81b2f14cd40b8189c3accbc053499dd14ece90d266f5bedd58433198e78461e945817a35f184b15bd9824edec047a22e01028711700d76d8e308431b96ea57e11b87cf780aec75504194cb1f288a93c01a26f61508f180ba1a +GCD = 5af3ce452559f8f500a07def004380462e4f767d5b974a253ca4e1268b9303719d9245a820e1653bbe6001e429a7e48054e2f1ffb0a1e2afdc05cd79d8319e3ba979c652bb67b8646eaff17fd0cb7fe162dd6d56646f5f972e8be1cf488d731a26fc004ec312e6bad5e2980bae96e691eba8e + +A = -f048642178f3a5493fd98ccc18cd5069ac33c61ff5d3c7615f8dd3bbaaf70314cd504c5037efbb84ae1120a8ba65def97696a9969726f31780b7a499f78af24990b1ec7c152a8744995e4d96f7fcd8c097c6f02ab10fea507d48f2ec421007e0344fbccf1c7b5b23f08043314bebc0b359163823ebb9cb23c5d83e7c6ae2819f87a81ee46acc1dbfc17ddc9450a9d16276a9ab6ffdc574f07d10b3475a334e6fe34512b1d52c1a369a766c3f865cb10c90d5f9d3a1db4c5beb1b97d9bfa2604d3601d0dd7f5bf26bcb96c3a35978b18af5b215d75f37406bc7f987c69859f964afaf911c0 +B = 646bda2711b65a7a8e22343db6002d48c2e6beff6199ddd5b3005770010d29ba617a31357b692a5c7cf77cfba9771997793e64c01e2ad60d58f858a3360a03dd35a061c4841c5fa4ffa3b325f771a51635cf32097d66729a72cc1e550c57ca72b0427bd24908db28756297a2bff7330d0b7999cf47c552c7444b5fd3d87074ad42a757465c60ce2102db04399bda757dfe516ffd0597cfe0c211c919f731d0ffd06b19dfb700afafb2b54f832ec94c797d51f699d8ba47bba7e34579c90ad50a15dc4b3a71f752ca41d4a23934c7ae221b96ca8fccfb4a346e2525ef08b9934fdc14ce0c20 +GCD = ea95316b8038b8eef1e2d0afbd011876a1d4733f7c47298937206b053d072d6a4c88b1083fbe408aad7da2c9b9986bd5f689a5f70ac7f27287efbf457e3369d9442bb1ec76d489ccf45fc4ae1a38c08448cf04bdb1980241c33c8d910b674dfb5e08fea2df9e008c79346525e1dde7c6d0560 + +A = -14c7c1cf7ddcb8ba7345345f425c774b49b56e3642ecf1c21c0bff2c3a744f578cf53a1703a2979e0397ddcea3a6180b509296dc6d12cde958211c9fcf9fe4e0e6e0065ac3765ee6eed36f15fbd4dd07c15849abb965a12f2fa865f162299ae1011472b35fe483ac79546cc2f9524be07aca9c7d527c3e78669b398cf427f62347dc963abb45be2235ec373fd6ddec8b96f361e6b5663d5fd0083b84c7d075c453d93f674fb5aebf2aa6b100bc6950d23166cdeb0b2405714a78ea5ef5bcb2caadab6edf9407daf4542e40a244b391a52b0f3ba78d216c19ec064a4aa45983683da7ba3fe10 +B = bcb4c900d22905935134b81f862b7e0b11cb14aaf616529c65f725c52294c47c61b8a77b4c1284cda54f008826b4fa4b3c1859c3597ea48bed38f27d1194dd92fde5ad6971415639048b7cbbf52d167ec09aebcab3e3776e4afc3a977b4696b6b1c8ff4725595e181884d3faf38bcde08c25179e825e6103f60b1aba0e9a62c0b3e4e2835f5e103dac8ebf42394c1fd4b46300b1a9fb07763bf460480c84c5ec4a0ded881f86490447e48825e73491074be834e17747d01f223aa7328e1b73a15c9779850642bef7d2341d8d6f94c5689020e60df791a8f088301834e08657fe37952abb96 +GCD = 1838f6765028f611a0659d913c8d1bad60a03d29d87351d793efac22a9545c1662467963a38c57ebee6a1042aa5b77487fd2e5b09feb19ff9fc87415f6cad068248186631f6fd10ac2b8827327bf65c832bf055988612b96a2cc62070f1df00c0a9f280b6b5bb855132695008d4410b6c592ca + +A = 1c48ddf1f4e2e090b77d2f0b6c9793eb421b32e37d1ff05a80108ea48485e228c2512b0f55ce5c3e14db073cb2bc041739f428dd632557e8c81953d9a82cf0c4735108330a317abb9928121b29f6f074c46b803d845da1c8df1869751dfb27814e77443f87ecc558a22ac72fedd5f239f94a5fe18e432e16c5341c2602c756e631dca354b4058c92c924e00132d0b66b9f3b6279b2e99eee4fddc1af37cd7059fe49b0d2973ff1db8ced02f5994d9021f0256cf0a9866301c9596d4dd60f087418377410d54d90fdbfab920d610e21d54d48efe64df6e9b441c94a98cf7613ce32b27ca8f64 +B = -264f91f06321f47a7d63b1b293c4ce36d290dae687690484533f0d5e7de7ef6f32fd64f6e200c184fcfe3594ed529df17567074e70a4f003286d991a29a68756cba644b4951a854a713abdf80ab49ee0c467d57bde343022ffcba330b68967089be4882df51fa06922ee346e96ca81b9ee9678d7869c09f17b08e5f3aa3ee75e0d8f3e9d5b43911db2c81d44c81b0f74793c932bfd1c86a0974cc53ba881aa90058b53c85008009c532e919e079c34a35c0a6477a6a6bd0f1149d20cebc5a1dfb66dd3814f30ce96f6dbc4d8baa5bacdf0d73f81c90d29cc0f88f62a315fe0cd16a1a9efda0 +GCD = 3eeffdbca0cff6d529b2de69af208e6b99a9b42028c92836af2b33b44d94074188b26ee0e94ffce40369999a8cbced6f6a94fa0944c8445494b5d7b983dd8952abca8366a7c0f0195cd0a4a02a9833a33d9efecf635529e99bd97fa46a8b9c3f129c0546513b4cbdc3fad5bfe193f7ca258764 + +A = -1334b8fdf64ea14a5ecfa55ee2be8d844aad16cb58e880730b78624c96af300cb57ff0e4dd9bd755b1efbb257b67425020c584c32b55baad3bd3e09ff65d3f2e2e1fd2e3fa422863a18a0943151e01219448cab205ca585fded65a9438a04ffbd07bac974c021c93f1c743e6054ac0dff56399d6ceab5ef2592738f4a66315ac452cecdb33d4cd67e37d630e0ea4aa341eea9682a015ea2e3005e1ffb635c2b0cc8b8be5469f33526aafa7c6545ed82dbeb979b5178ffedadac33b1fd37284423daf18c9a3e16defbe1c68034287298ffddbf505cfe69684bd36c07f41dbc73c725400133dd9 +B = f1e43544265b7d2a460d8a619ccb001a6190356fec99b45c1ea457ef16e8bba1d5b593f62d6dd8e462c07e8696c7bc49249dd30424c01dd6270f3ef9a701ffe4516beda9641989579bc3a19850e4063589b43b10bcd8c588020b58110907368680103f420eee6159e75e286bfe7e57fb9c8bc00dce8f2c24bcf4156cd6ad8abf810928de7fd021493fa84e3bed7c073df52e6c64ccb6eb42a4013f63d19ee5a08ccf38aed7a1801997abcd1828ac28000bbde8a4e17e6590b393a0a8450815c69a046164d25f8f4321573e54755787b4bd2d61b1d54a69f2f690881f36e03d095864addbaa +GCD = 13a227b30d272f363b5314536a673c8394d47382a13bad6517fd2f25824ed656ee5582dd4af61b57b29dd411f58dc6343f79f2ebd1f438b75e36421d8425a8f45acde7f5296e572ff3933682dddd17cc5921f8b7bc08f2f58acc8bc598a0b7c345b4f5546d1e6873484e1b782a61b486d5d4649 + +A = 631439392ab44709aff68581006d4d26f08c91981c556ffd73e2216fb6a57e967598943b8ce21707e3a4e913f2302eeeaf5f6e698834b671fb70b9faaa5803df021f00fed99417a687d018fe88a3f6d451659c88258fce8e2eae399e13420981abc80ca62ff4889634f112d1a95ee7156b963b39984fff66832c01ded16c21d3e95beb9b80b586113c572906a1abe64e82ad599049df08fb15a3332a701d4023f72839d1ff81bed0d949e5bf577d0b17dc757cff6503dce26fdfd8f19f5aebe0970f3413f11073d668fb4b5b95848e933e08777a396b9a4e876bc7c46c7e764cc8dc8961b2a8 +B = -68fd910c09db7c7f91bfe1681694f9eb3cdae2038da568d2f651e3de40c1c49681f04bd0b6e6138b22c7ae472e6c8d25aab48c9793f327f83a8720fed7ae600fe9da69be87b4d17e306664d98abd18e7569df688375ff67015cc8b24b85feac2265a1c8c7bf59c892ae6f6a06c32c724751acef03b0c6352a7f963aeb1a0f26428cb9bafabb4bd00b4a023c69a424eea642c32f701771ef0ca92121557276670fe4a6095d4af57b863d281283d1f6b1b81eb7e4a06f63eb7424a1e3e3cc37dd66a3349907037301338b940f974460810aa71fd4ff503703f1c615996867d738e158691bbc1e4 +GCD = ee906e3dcfa0bfc80ba7ec6f60680c35b1f736751ecc2cc44b788f2ef3eeb5ba7050b2770d16bcea3486ade92b2c4cd57843713d03c82227f90357bbba7873004d32d00367b65abc90eb9f8de7c0a1753c11e185205f306b1167f1ea0f65c3b08433ed093e64cfecc42b469b4cab9614c7ffb4 + +A = -1c3c92d85ece7ac25acd50d92583baad9a55c081183106eb03d094e95741461643e47e3f580dfeddac4f91b6c54abaf086aafa076e81228d17e928064789771984bd9a77fc48278c7c3d176fc5c6f14ead8c2ac1e50b5e61f1b6f1f5087ced3a9fdc60620952a6fa89571636918f6620b57be9e73d599435c1d3768b8af7f53659c199baee56c45e919a53e7edc14bf052bf8108ea4d10159a6a035b9e3d2c34a59a93c2018c089e8e02f0e78de4abd7aa4873b64d969719b7bc2ee0f4a5d1b7720db9047a69fc06b05e70d308875f0a33ed409677f0402f6ece663423a0856653ef9cc5cff53 +B = 123238a9895b89e4cfea644bf0d37f13e826de10d159bb22a898a0886d3dbf0c97f9f95637b70b7a732354c176cb89bfafb9069e60f9ec474eb93248090ae6df18101e301b617a67deb23465dc8274a2872e8c616ab41ecb41db68ff83d6729c5b64cc4ac2645bf92c59326738518652ffb212a2dbb419b4f3945cb6d3e7687c565a75857973dcbd37d89e3b24017c6c7b594e77f10d51162107f86bebb5f48406700b8dcc67aecfd058b1df64e75ad24569daace6729afad72b62689b4e7b9e0bb1d00fc0ebfc4b861a821789a502b137516b6a984de4947f83acebb43bd5f2fcfe1e01d6751 +GCD = 1d9a0e6e71a23dbbc63f9152d9d650241a510786848dbed2f2e86354e97fbb30cde2f7bff63c69d3cd1ac5ed2b08392ff8bb87be42e1df14154816e81cf7f0cff5bc78f705af9ebb9f0588f3c5fe578ff8d01f86f217d3de0dcbe67f1d3859a1db5bb3ef1dc239d9af5764b46d474972fa0a107 + +A = -3e5e2a967d53faa7a12ad8f4dab9fec7a43bb415f748e3a3dddae9096b87cd9d742d2f3b7130f2a82564682295e521754a7429a5a761894769d54d8f2111cb9552b5064f93544fbfa27e5f1a1ba07ad05e89fd2e446dae65d55e71877089407e97e50b40b6b07278969d46be1b985e4cb185b0d800e6a8a00e3a768cfe52ad7f625742407ec4a2c3a246037353c86ec201b0bf5c832e559608194601410a6fd94d8010483bdee47f1d38d79a0cc5a11192c3e64b656519e6568f0ec45ec664fbbfdb7d0c24b54eb0e25cf1794e3a9a1f72059f6ef4c93045bc828a4f3089ba23632380be40288 +B = -26fac76019831b0efe3b027a929ddc42f1baf5ad08c7812e3763f5009b22bc1f993e5010f1f6a4e0fdf4c1a42ca7cafa9d1663c5fa7d78a9d907ced834c660baa3a97480b6f712b9b50e73e4c1966e4342d382538582e1c3d535760d0f6b183ff811f4243220daeb64eb4c4180494a31f3b84c3773b3bfdb92215aad7e68829b31c9448fdb857205862f085357b0df5b3be17bcb36c809d27ff1e19035c8df35d34a5cdf190f8be2eecbf82ac6f7fa534f76c6f88b0e46834aa28e17125d4e57766a8f5f397ddc235a7ff3fe5e755fb867fb2d933b5cf117d0bbf9e3198de2b0aaf0e3e59ab0e +GCD = 2ccfdc5914a66cb177ac376f9d8dce59e0f63ff15828b8a07461b74afe7c4fe7f5849ef7cafbfb994de8bbbe4d51746a2d78f9b5935854d157b8a6f916cc8b18c7b9b17ba98ad8d1fcbfc7976f56c59931f017dd6016b6b04a0011764f6bb3468ec2497f3643bd4c4a622768f8a359fb650f332 + +A = 1c6b60d15f6bf611e1be90c5aaaa2178e9db0e2ea1d389b5a897684153f9b4f4ae3e5daf908c186a93d12a0ecbef797fd6c2b763cd33cedc107fc3affbacc5aaaeac7e3838252f3dacff7c7732e97de098b84f39c7cef85489ab381f387b43037876b7c6e46f94c87cbf1888e24854a7d6332341ffc8e89315e360a36d572dd900932fe8e5178bd186b311655c882de0ecde312a171e11354e715db5df75f73d60e39872b603a979901f5f87e969837f700b5e992fb0dc1a69744411bcff242df634ea062087e9e2f7be469c8c68fe1f25f71af94a0a7c11fbbee22077460acdf466b4d71c8f6e +B = 2fdf68664229400d21ca8e86fc520d7f294d82b989ca2b7e6056fde84ef1c99a924a2a35b83567d243d1918a13b292f5ffbb661846caf1ad308bd71bd48ecdbbc3d2346e5f227327ed68b04d29fba7de045e911bf66d5466a9300543e2c8cffbf3d9ec46d8fb3937316c224c7e622feb89d671a1b5b9fd992c7c5ecc94ecb7244342c1ac352fcc0681f072c174b61bd443d65efe6826807b113758aec5abae595e28399a9e210bdfc4ce6128ee5373d631ded0840d98ecad4422848dd3d302ce1fe06ae928aed058f72b06ef37b5cfccca09119ac32a6ad14d5fa3a12bc737fcb25bd0776fa94 +GCD = 76e6be7ca709dae8c7ae53919df8629ea6b2bd6f3eb1b0a19da01d043f63d5ed21b497cfb03b3385fdbbaf8e721d9fafb24a70441c55982cb032b5220ebdc24e9b723f9f89f3ca961cc764a11b5a61a896a591419f90a9ba979e2be8ca469597857a25c827a54ce07058f727c8372441f9a42fe + +A = -427cae2d686c2e6f2d9d754cc3b4dc846bd9d1f502d6b43f698b26c87bec28f9e29e61fe227272e92e5e488dc8b8b9be83b2288921e576ff2f96fbd7603d03cc51bf5bf0cac33da421d2030e8cdbd3ce9ab8c63967a49aa3bb83c13a060a71ac3795801d82a728660e9b1def1c9d5e7916164af2ed4f5107e04bc2005bd1edf83fa72319040686686e4f1f4d0de0dde71e98ec1af683753c2f95835d162ea4891b339f9699795a569a761227c9679006d0e14d8f73c932ffa429fc3c6408a927b8612b506beb15ff31327f60c089f281091cbe8f3f45d0feaf40c56498464940e26abf62c618f2 +B = -19cb0ee8d08d1003a9c2d49df3072537bff98ed370cece39560b22a83fdf3c3216a1c6a994a1d6c1615f51fc3e407abd014a66307dfeac566d817987c78e2285c877e67ae16d9242e277c4454b98c9516c935bbb1c57321e57ab44044e41c51d2e0a9c8a4ccc2ba2941a8e3037018956a78ed9bb3bd28224e7ff39170e260fedcd3b5af84912c0560eac18948a8aeea8062765ee874f5a8415aa8413f0eff04b3ecbf019aa8e74645b3299cd79e67de4c6c6c2a8c16da63369f6b900a5923defe4bbb15be387661a5928085aaab2170505ff1b0dc761058bd7b444545ff1abfc406aead8ce21b6 +GCD = c51a0059e7ba25ca99f603eaa19c4f6c85a1fe88f7cce5f63a4843241c632aff66a0f67d419ec95790d29bb9dcd194983bd9257e8801aa189b6c4193a2723fd67fbc165a61f60c8b641085dde1fef498fbf0078d244b2b541eab89a7943c9ef00fdadb1a71d7437eb678c8d866ca5a7c01bb996 + +A = e86355e0e8bcb5e6d27c26eee1642949077300bf57af4382e42679a4b56f44b28539a2256e1f50a4bca0a18d91b5739cff22087736af74c1c5f5ed75787125fb3740ace227e23fe23d062bbe2ce8e3d22a77143e99e9c400bca08a5a98ab278c4d0ba4e053bc0b43caccd8bfe568070024b918550a5072003d29cbb570afd7cf30197bbbbfa12bd0ab6da8ae38c7a7755ef31602ae98db4f76344bc72d0ee7c57b12bf7dbc0f33fca08fe7222582187327c8c97ffb7d655bfbd99e77018beeebcb685dc3d33dd6f40816d5347685692b7655f1c01fd65b8bb000a66c8730f30dd2dc7233ead8e5 +B = -9978252808f31f59ef028d16bb19219423c8bbb7c0dae3d0cfa2afe55d587ede9ccf04caa421fd54bf00c99f5162cd1c7001173381dd2d5115fc59890b16a1e127fcd560145f1e4344a29773359e1845354a8088d31ce7008ac09343a610bf0049cdf5b8487a8631d1b9e5f44f2c140ba0b0f3600b05751a9128f9e5deca2bafaf2a66603b1aeb68fee50f8ff763daa95a1b196bae0c8eabdca0b7d0d1ccb335094d326e92c463df36e283ae041c486be0767398d26d3b2cc3160838be3e356b4e8fb87912484d5b10c6f35f2c73ebceca736c98c70d31bb52d6acb71f0c2e31da5545a1317cd7 +GCD = 10498e00a7854872c651f1b8f70611af8720884468fb85e47fdcb02268727b6134390d832420c4a9495011d9b01adca356c73381a65d3a463943dec1f1e46586ed7636986ece14002983365c3569e0ada9b2fafbf225abc82a6e9ef1093f6d3abe4e5558d6ac0bfcb59fd0267bead429ac2b7399 + +A = 33056396ab8cec0fecc98ef3162b02938c587a891f1f3a6555db52e92a063948ee74da3f119dd17f65759f6acc50726978f2c773e7413de0a549df231b6f8d7e805deedbd338dd91b9150d6dd1cfcffd10cb2361c74847ab9ededa975afc3525853002e6654a1c8c3726b13773462468ef0d3ec2721f58aab9531f2361b86a045e5e474c5e60fde8c443e3c3e1912aa2738e2278afaf782f9f66a1a224433ba5c0b509c62fce091026095313d2e52ac427163bf91e9ae0e007e2fdb37bdf5b39eff0fc7fe718c21a9231d05723c8bb6220ca1efd41528109595a08615e2fa7a8207668afa1c84bc +B = 1794e6fc76f28672aa31fc5ce06f816a23a471a5524c349df29f6633e70739f06a673d58d535d76dabd629e5837290fa48f07d327eedba8cf5be816598305b97fabaff5e445fd941f041ed238b1044ec28b234af9af90db93b8fef73ee16e107e1044aa73f055199efb82a0cbf8f95d0d4cfa1b389cbd210564a58c557b7e27fe7c20f01e49a3070fd2b9a99a27c7c5e3e4fed2eb9b8cf2d628e0df0d4467545e259dd26271c7ac2a7e0e0f0e3bce27b8e71764e46d44bbcd54fd1ee345009abea06317230cb28ccc926dbf90d8a89fada44e520d7e7bd4abdafbe489b779b2674e26976849426c +GCD = 66c0c2538c0f215bc264063e843f046e97acdd72a6be8a4df097fa2092062aa00d647364e9cb9f3fb4d6d230ab55ca2978fca9ae5c2ecf355675668b8244f1292a7a6a3c757cc466a3babb50f459e8717ec74c9fb3f0b707d075c42bed7287ecc72335fbc09e5c3a4645ee6c0d012c179917fa384 + +A = -3b3a5314bb4664ef2ab0e91d6f1df9cafd0de2129aa3107b114cd827834ad48c32f685fc2df0bbb35a639f1c5e69ea5a1f659edc5c6fe367d121574ef045ddbff7682655619753ab3c0722541c2ef0520f004036dfb6eb6d657fdb4f22001d5afd1e27c99b2692c60341c5076430180889cb0876b829ff71cf97194f2f276080bcccae82bddfbd9a67722994c304b77d8e64a4ead5687811dc1c22f9c2768c5a65e9a214217666f62e5d1f9048feac743b2b6e4a1b70f606167afbad0296cabae1c96875de7d25e70ca71e4aa27d5572bd988c5c79a2de945492a2a8fda4b0c282acc7544481ca4 +B = -8c581db9dec18ece53c7b789ea7112db2fc3eb69f742d996148d09cd4ecfe609cff2d1127f18bfd8cd0e1345dc861fc403044a33817d74d91448aa37ea60eb01a8f056994c1c727354962b68bb6013e3596d0d26a52246514eaa0969f7cd1631a8b61ace1b71030ba5a265f21244f33bff821eb928f2314ebb898977b280195cac32156d5586ebcef564a946c00f4175494f025003afa0d75e507b64a1cb1afc812328a0a4c324bba02da1252678c4dd8f487a850fc423748c7af6671b185d110ed51ba57c15951cd968d4cf658d4ee8aae261c9c422ccf486f5ddb7ed12e0d82723307daa63960 +GCD = 1542dd51e9b797a6836b721170844967093b734f90d3f3c2d994a3ab3ccdb8540400243c04f569643c5521bee0028ed99a073e1556ef4ef494b75e227ed7bb59114235173aca3b269c69edff2992a17ba5546a641e89f40fdbb9e85904409cd8bc48423b0c9c0aeaea17855c86648a444370f8c0c + +A = 15e2b28ff803f51f8288785b8ae7fa86e4f3950984ccd177c328eb670bc43bf5c3606b67d87eb9d66f5ce67358e2b5796daea9369e70eac202a172bc5b964b2e35c6783448337626fa942d8d484ecd43de5950a75b31b54138199167f47f4184ec735002816a5328a66d5ee19f4380a1cc4f401644c5a38390736fa9602380934c5c436950f31c96b5f8caad7eb9c0a138dadcc1229232f5991e555f4d50b503e0f779feedfa70f8a1728f607160a13ff98d0014839522cf750a46cb0d495a2edebda15e6a14004ce0b5f5b54f30a92eb85fc73a1a0cbd21e11fcb857d8b038e3caca8b9f6c41000 +B = -49c127992b7db7580b12f2565a44109e46233fc3362880ce492bc32a4bfd239d1f15ecbf1235f172dc7eefcf9e4147dc414dbdc0dbb1f3b7dcbab491920f2ac7222534e7061ee9c64a7379591d9dab761e78f80482ba97af434ffdb7cdeb807afd25c5769ee3a2cb2ee89f3d65dd4fe30df47cad15d73eeb0522f5338ed8ac1525be55b262dcaad3240bc0388c07b01b4e3ed5b1660178aef52cdb1ce4c7578f5a8be6bec03ecef50db96f9a0499c36a7e56da927f4534524c720f64267b41c37192d7f2dc42c19e9871007782560a6d61eba2c386a45de5eae7f260623ac4611fd71356255f9100 +GCD = c694cc1b3ec498b42e0f4e017f489412a825b44adc014c8ab6aaeb208482328c74398cb5b0a29a23d98684b7f66543de2a64c0051e320f3b7160c9825bdb58dd54b745cea68c4416c2a18c117bfb927188eb98ae09c1d0bb6b8fe33317304da17fd1590e333a7037cd14d66f3d141036a6146d00 + +A = 144c7624c202337f31addbc25c57eee691d4c53cd144950380b0a258f0ca3f9b1070376af553fc6bab7bab5e24d29e01db5ca843ccc372a2626c7bd9bf72354fff731db688c306eb212b8ac0c632059365f1f8fb0398693045c20effef6e1be6772f2fae9393e1146e351cccaf17b2f94854388a43ac8e9d5eb88d2f80f249d5569b34752795719f8364eca5f95b1c81edcf0b132fb5c842631e4f11ad9ea48cd7954edde4102cbaad26ec8c6fe6510c89e888ee38581065a14b837d553ef51fe463b4e60ea578b8a8c9db30d7d371cc8245bd20fb09320e5a02a2ccbb095ac49a88602956dd30ab4 +B = 12905ceee8770f359c84edc7a690e5cfdc622736601365cd5873a06702f159cec39a844715f1244746a4eb3696633ae0d58ceebec67a5b13655acf3f43b634252c8367bc748b255395bf1717eb8c3d2e35cad72a593b1f0072b746a957805048b28286f427459446ff9e989600b48f7c536dcca749746f1196ee459c66752a21aa62fc1c64e7ec1ab2e253f95de5a30a4a1f94e4af1344ab9bc2c348baf186112d71e54081187816154b17c554615c7e695e653496199d314f248bbd46bd569e2c8bb946b479fd57bb1bf24466d05e599bd610bfcf28ff58e5bd5029e0fcee95cd090c55f06d69dc3 +GCD = 19cd7d35cd66d6d82762165b023f0ab2079d010bc60c3351191298f6aa84e7ee720edf808ccb7fef965aa6a45d161b61db517fdb81bf844598cb89d8da88f61066d6754b5ad1d198fe097229ae809befc77c3430601832ba014e8003bf48a44951ba07a6d0c5455d3f8d15c757628537061594827 + +A = -64c6f8f645e5cebff01bcfb1789002372de6037690481f31c6460d6559c9a991c11c2f52c4e23c7f7aff4cc7d414b69ada090d985fb88370d7d90e4ec3d5c528916ef0924b1e3feb091a79e8c076038cea37014cd4a6919fd8b63d07b6d974a73dee865a272468b2014c48d04af52a0994f0ef31d192f4691f8a6525ba83bddacdb6c5794fa0180b24d196b6422b20f1c5fd0f87d8b83a23c3eecbe022aa2c1182dcf7f6bfb654f6ef768f88b496b511146d179dc63ddad0c0e1c320b69f1e44eb8ae9075f58fe120177c695ada018469c8ac75e2caa2ff7be48f78683b5d65d3be215326a7fefe3 +B = -31c6ce93d717e079220bb57125aa35cfa1b0372cae028ca09b2a8ad4ff7e1aed3cf6a4da340be66d5fefadf6f0dff307728a6d695367c00d83ba34c8f606aa5c2d95a2ebdb32ea62e6d732ff85f6d8764be1900f25459c26f3aecedd50bf0ce11f5995fc56a3869d3c635871af6f45f36af89dd35b309ae7fca7db380a4a5b7656ab7e63176f343ca4b4e879b23b7a6d0d4fc089a06edf9c8d0ec25de94cae1fbd9cdf12a74dd264b0c11761c5944aa8f419299dca934d253bce4baca8e7501ddb2d6716992bf310239c881bf28534b89caf9e72c48a25e033e65894638b50878f31b40080eaec060 +GCD = 2419a972e10b2dc32d8117f561e4033d49e83b290965e00c9a044dc2f5ba783a50f3d03df5e0391ecde035d887da4b0080d2a2913510bd24c8af1eac47b5c0cfcc3e6997b860f7ec6314c6dbff675bad27919ae4618c05572dcde1a01c309a7c9618e1b0dc8983edc35895b02f643603cc3f82cb9 + +A = cd6606d6892510aff4f5a536b582c847ce3b56b81ca1c0b5364dbfe56875fe8f8382090f9eb54989f746adc00301bc7afae592a49c6a658fca77ee18d14b6c00c81e6ee634f81cd88a85f0d9a2c0de12033cdeb6bdc5fd11c2c3cc2f15692869f95913823efe48460f47e594a40087c92eb0c363bae3d5d71e38d5430e74ca9d4042e8501d639b8b5a9e27e106c7fb29cea7a94a0dffbd19baabdc3e9e38d60d334ff77c874660b993ac99ee8eee45fb44d79427f65e84fd27b609bf1fad3a4bad2dcd411bf58673de4b6833ae1352922b1983b8d4559dc11663b0e8c5148ed321c28680a63c8c5cd +B = 8892aff7c9af626380c036c35b9e4ebb7b570cafe38e36228423c12f0c06b970cd0894e51737a55ecf3885045a0496a298061a740e32eb1781098b16e5bed89d65d85fc2f697d58497a6b8a5e8ea5832dcfeb07d8aafff1fc4028b0e726d70f0663cc23f1d3be6c775a7d94389deb6879e596442d173224bd61bbdf659f8f9bde48366a9ca2cf1847939e29b0883b2011a690c932c1a8fc9c33b4689445fa289fa8bf015d5d35f398cd9719fffa214080ae6d6596b59dde14209fd6a4d1bc9942dab9fee88fbf15843efb2a2a0a747eab57fb7884de2448b3b86ab6d79fa79eb5c92080f579730629 +GCD = 15eb812c409a908ffd9f509f93fae6f6fa24467ca7ccc5f0638767f0d7a8e8df8293971135652819f5492c5a2f35a1635f72cf187e0ed7959aa309eee13c7e58f8c44f6da62cc49e658acb7e76418bd735d7e9e7ce507985275d9bae2e1dfb9a561cc89bb03583ca7ab4a79eb0df7e3a9674e16969 + +A = -40032fed495cbcae331309b15837a774cf9fdc6a738978313a51edd3b89629db07252c4dad9149b9506cd5b2bd779864b850d219682dbe33c86e39911dc656974584c7529fc385d44b7e8a8250097f3ef852513fe6fcbaed44be53f63d378c6cdffb936bd3e7fdd262d50f66941e179700b99255ed290877b9fa2643c75ee44cef7d0a288a6544e4a269cae6991e46e961441d3544b39c6b5efdd16159c98edeeb3be8f0da8129a68e346cf0840577fedd5a0d5d7f665c59b43aefdc62bd3c61cd830b2fec4421a73c710407eb06dc1812ab6e725fa65a065c54c81a48f7a437611a60dc32c26bceb0 +B = 30a36676b41b072124887ea9e7a17d99376a53796aae3d5c2b72f769f749d1d19ef7bd7ad350f5e4027bbaba8999d6b0c970d5d78282f3484a696e4dc435f9ed2a10c1b07cd60e540e812499da84ef41dafb0dad73c9c56bf03f100a6cb2b0bb94ed56443ab4844f5a1ca6f76d9145573f5b77e09282ca550e6cf5825e9da080500a7cc903a00e5dfc9ce4b493ffbb3107156ec4ca3497dc436545d91751c8335e685ab97e42f36bdbdb331427e805c49baf31106a4ad4ba9fd94e67941b10a0438c7817a8b3094d50bce92d89595f9fa0e153850c9f29f213c331843ea2ea7c04c73d3e00447a9350 +GCD = 16eadad2be9c76f1fcaebbb87aee3c816c90bbfb701289b53aa8385fa518517b420a3a740b43a1512b64d53fb814bbbf71cdd88ccc58d5848416b9de7da63b18b9bb6bf587a6da1e22969052a2432d3951b6e4494a75981f8ab2b8b1f49f672735dc79b062230cd1436ebf4b11b2d9bd879e5fbf30 + +A = 910372f32571c79b73a8e00a347b6e5e00416f7e307ea838efeb34b5ecf4a80bf89f3115c02a52d1657f169888bb7d6b377fb758febcc7f037ca33edb619a12ca252f196df9a36bd00b4ecd9b125ac435c9bedd04073c8c9442722cb2fb1020dc3e6c90bc84208e2e152948e624d612b01ef8c34654f46e8b053c8234cddf0099a8d09d6f4d7887e5bd0c1f87be84d4c3ad62cd49e0158269cb6191644d88c6701c64b4669f6911874ab5cfe16dd795e883f440a55143a1a81aa914e253311411ab6ce7328712f707afa372b4964fb213be59bf302b7dd3120fbb44be5cc2b6d25c04257a49a0da624 +B = -16ccfc21c05b259ba7f85e36770a524a2e062b774408b67b8f923f3e0364d2d792d539b65c55ce8fe8d465c0248a0bf7c45ab24cc327bdfdbc7128c8ffcde21fc18d2b2ce5eaedd1c0688ee6da89071cf4c95c507e8924b7389d6110e255edac5f35b87d45ebc28168834ddb5e4ec8df2a44c14985aa427b38830e745c926ef6dcc7ca350ba0aea3943ccee74e7e8c8a661f935adf919ccd6ab9af7e91d688734fa0288ae4e161e41e0bbc7d94921dc24972de45babae761183d85f2eb263c68abe78fe461f8db6a06f8d50bfdb2cb26b5bab91dd6d6d8398483f4640f67f1689065043a3281eaa86d0 +GCD = 19cc28786f681d8114e48257854da5089753d5fec4f891c7089002d19ad7486a59d7f78359de4eb46893cb96cc85bccc5fe01d4591974575342f81f757fa57cddb3dc12872168394a8d8a8a74d41192ca803134912474c551d0093be12ee93691256d51f6330db61b804db219bf54be07e5f9a8214 + +A = 493304b7f96f0ce1fa4f633beb3b9fd4a205c6b60db3990918346d36430d34969523e6104111f49c870c0ddfc03451023a2611849e6040bb70e5c27ddce0e9763f19d23679b723f2b85c734249fce4f5d39790d57939767ff2a813450dfba695ab61832523268ce4c331f6128fbf8bc99c00986f31f9894404ce325ed3d1ce0227e29f7e5d0b56534f8db4795c3258de47972beff8352ea5940a15dd635cdf7aaa3c15570f031de45fa535af0b78905fa47a75ccfdf068dac26301cd7411e2617becfb2d6c996dda9458082eff6592b4410bc5320900832cf09e64d247cae6180e1dc428477a01fc417 +B = 4399c9fb7d23545a484fcdd57014246c039ceab921aa0aa358ef3a2095f75d5b8a3d36af98099c54a02d4365573e189db4b022157315268f16b75a15b075d93381c2b6b02dd2273647c5dee06fe8d6cc3f2e2e34d8e9e09369311caf6ddfa468ad0cb43c1cd523791dbee16384301f1009e4d59bd3732dfc9733ff053470896a71785f621696a781c3bfa6f4aa61cdffd8c16e7cb8e8da76332e8197adebecd0220aa6d27256417ec8619e37d37fe6de9a0d2d98affe94f87f5bdf9e4e90d0b022638d646994bc0d1472a892bbc70c50472bd278653187f789acc69f090fa250209c739463a1acd55b6 +GCD = 5de5a39c97c6aee62d45826a13fb87f7301fe30518d7b5f141e24b90281c4c3c554afcb2dd0286c3f65996f8f2cf801c4708b89cb63de6e69df18204fa1d478054c4c33773c52f93677c0d1a7b55e337d3abefd684c99c189b0ac10052d9ce7ec2d3ee6290947693ee42416e1a87daecb270283a68b + +A = -787fcb2e73fb1c63b36d5e87afb4fd2c390d2d51d7dffad374cf13da6f2dfc56486fecce869414a0d65ab8541fcd43361f824917404082497dd89db3cb383cd384403fff63e5f69ab47e8f7f167e98af338d6cdafff5cee5b875bd726a3212137945b9dd3ce512af7f27dfce8816a420ef9be3da0aec033a8242e48e24bcf843a095a157ea892c4b4ad0a4a57b105f8b37f709706645e4b77c88304287285cf24b2391ba960f7ffd77321345bd44ad7c61bf16e7abdc1a6201ecd4c7fc3546dc6eb5edffcebcd09ee1eb89c5a676dcd2e1ed8d58a468962bcc5046a4e08d2d40d217ac70c3ac9eab855 +B = f7b007351a8385cf125a8bf624bb4626fcb401a2fef8ddad056c168a968835996a67cbc2bfb23f0d042b9272cf8dfae6190db8e110b93b1694b85d6d89a33863177847a47f87233f700e76f662994329a4b910b386916c3853de530aee27f2da9498bc53ff4ef847b267be4b420e8d3dc634e832dd67af0c011e76f83c88c6a94ab119db00c6047e0e3392c3c8c5d35033389e8cf004e1ebfa4124d18ad7e5d293e2e2b5e45aaa1ebad6a31eb4c1867f423418225e544c84cbeb0beb5ead0419f02f332469fb116966c6da3852b2d57cee0e35fec7657248d3dd801d94b5b64ee1f7f8303b2b9e22e02 +GCD = cca8212b7da1088bccc7d58f92abd0f95b9ea3fceda0449b8e3d0a5f6880a2ca71e3446968346738ad797a59dcf53a2f57a35a131c6c4020ddf485761f7b28541fd1f805e3b6d3f0a67dfc9eda59abacfbf7cc654efa84e05d1a30424d21858ae1d00564e6fb03a7a97af1243e1df12a7a9d561c49 + +A = -605b0c4d45508914a93ae9837b3ce24fce2157cf34eba1cc224afe7a9aa339869b0c82780223f432b49d99c35162e21d63886c825cb5764898fcdc2d84394686131db17ffd6af3bd16391148d2efb3f21d9406e0e322ce82713b4de672b25dc8d7f4c669fcd646bc2ad95f874d6a9efa618fa80aed3e1f2bd560a5bcf504ac0ef5f27fdfe906f7b56bd094b9506ed02eac31a100345d8111f2104fc24bd8920e2a502bf703dd6b7591ce8d119d3a4d2320ed0eb68f225bd7d231f9093475bced1e96f9d20591052cfac4b0209b8434ce07ce8d1781fc3fdf19739939930e8f019fcbbcb1a8020aacba +B = 4f887815861ec237f5a6865cd39ac99cd4e4c22e3d86af0e7306769599446f60d16b3a9810a11bbde61a4ef382124df5a12b96b37beed4a1851150908056b27da473dcd8d3685a04e13c83c88bdd3b761dc7688c15cc454039846c13ad5ffb722193ff6d737254917b90169bfa2b407ad0ce3edfcf361239b773d2e525348ba7cf6d45889384d15045b3912e1759ea0949a0f76e623a025b79fa96d7105fc2eba2867bd8d3cf3f1d240c7aeeaa275e950d93c9c0441ddf3dafcd81e111639541bd2e2dffe78513025a0cffafe600f7d5e4907702a55bd7c50c7d790471eaa6c73665820769ff04673dd0 +GCD = b49cb116fc7b64ecff52cf6465edac4e6bd5859bc63fba48bda6232b012eac29585dcb58ad8bafe3954a31b86822f480cef8f2ada21eb5f9da2d975be03f37a78f8c52accf862383acc6b522e8a460b36b4a22e4e8750cac4f3ad1f1aef905bd91301c27626b6b1c2efa5c3bc470a04ba0f82e48e6 + +A = -5a0bd5360007c82a34128bd60b6da030deb6158dad4f83138dd672aa7cbe2cf918c0566e5d66fafb7a4a0c6a4ee152b9892d670511cbf82243a9706cf05dbb753970f4919805948e1cf496231c5a6d9448335ea500baf021f44924b12783653ec9c96b249fd055a5f0e748753304ac2126138bc90437014ad721d1795c0ddd460e420df301bfeb4c313a86e058b2adcd4bad821f450af08332fecb336449eccf952c862000845c06825c2c952dfba038edbfe0e6832ba67e8a7bc5a17283dfa88d7e8ec03adb7daddc986a8adee256a66b09ddadec5de61dd435ca9104e0a6ea8353c5ee5f0a2d7f9570 +B = -f8876fb325fe1ab2412e3ceced8ead14b1633cbbaf19c1cb7b3405ae1ad4e05cecaaef6f2241484e8d0a9000a4669c2f1488220cfb7664c4f0ab847f5dbbcbbd61b18254e3e467914af85da5322127c6c269d543e42e852f7e99b54bc64b2506ab070a08118ae82df83d61f6e02787a28121a64f7709fa207424f8e2aacc54240e2ef0d56ac7876ac7adb23594bdd518eacd1b694177d71114ae851fabe9c9fb38aba0eac6f7d8555fd12e3e73a2adee2e6c8826ade7ad921c3c33a57c372c83c19436888876dbbd691cd74f88723a2049a39e3c5581382b0e11d82f79f007a8ff66773b306ee4266c88 +GCD = 1be3f97ab8856be5f5794ca6c116dbff7441360931abb899d6048f3c953a65d58585eaa4ef19d542b79e2094d70ebb34f16b4e125f2676df70f9ae77eb8d32d1df13cfaced879af55ea02a77e4e7c81214e22f907448dc54dd1d711adcc42317b8ed6a9ff900e0a4e01c49596d326cbccac1b5c4728 + +A = -32b6265a4c525dad6688cbaf8e30d60ed57f188e30bde7bd76e2aeb8e4177d9ff6a5a5b6c2908a72b37ba21397d11315de5c6a13bcd95bc8b02637e5666af43adeab5fbb8491f1bb21b6055d17ead95c06ec27922a1f4ad65f05aac1fb790affc99e3808d90d6c461d4c7cf5ab358bacd1f40e4bad8edf473cd22806167639e83019c12d328f2060c8e2803bc55dd6052043931ca369bf8d048e26c7d28c4ef3e6315b98283389efd897af3e9efe682e9f1bca690143765bdab96678ca18d17861b047edae2fd59fc38fb133f51d0ae6ca6396281e241db69ca56e75113f1dccebf279d365e3d313d5be0 +B = -16414cea556c8d344a309888331fe81df7984cbf03ab2ba6d805377fda4cfe6727a0665be8f80e66cf9843eced5baf72267869ba1bf58016c5ed700f61068b6170196443c1ca893ac592afbf375c62c5058e6064c4e574edab913ccfc9b9b783085cc8191d7f125c429341b3f0110594e2b0aa598a14a74a73d26191a4b0456223791fcc73815973f9f693fed451ad5dd4766e75298a6760387c10ad77d577e4a8616f2140f1bba7a9a3aa09d08623782f169e70fbb29ee68c2def93be8d367b96de4cfc8c15e14f6de227ebfae646998d552da2a34b7dac4f6f640f857462a5a1a5142525e81a27f2c58 +GCD = 2607c20d0a73bb16f6d031b6a305b6cc74f4d8bc42b50dc0ba7af12f08e52907dd0cfebda50782f984adecb31ed3fa935b05a9e8275441de1a3d1428963802f7e67051b8caea74dc823bf76f6ea9ff4889ab2004baf3ac689d3ca24207613df7ed2cf8a2d1730735a1a1068b93f8acc5a9f25061968 + +A = -34556ccd3afb5c513403caec74d40ac9951148ef05eda2c9216905320302d7502ded8431152e969deb1fa0e3aa8bb2ab44f92c4667047d98898f2d059aa23ec7120478c2220faef1a339ec03e4eeace99b9fce9b1cf8ecf06cfd8e6b0c1bab4d6dbc2f06525e19a3490a126e92f7132bd5ce5158749db8e5c2f8a13fe2b7aad0cf2b2d883f4564fb291481a73d1db19872f4c02524064dbc914d952ec7618328983e7f7f3d2a343cb5736d252aecc6d2f4be47c642bc7d027f883e961340a8fffe0a2e4df0721598056abfe02b035542e78ece6b9ca34da75b37046290133bf38a05016ae9f4ed69bfe2e +B = 992c80f67d8ab0244c02d2d5c5d41a76e9f371b632dfb7540769294ff3c703b5a6f9c54d6ee4e0627e76cd677c0b5d301e97fb8a31e02eba424c3259b6d2af105422abfbfb7ac58ea00d57c2e6de5082ba5340d3ea57dbdb33805c03f630808b424f5e70f2b3d7b5eb678b8c2a69d4b82dadac66494a9901bf8b12914f2f675b935e8d0c4cba85a7788f94f1f2c1ea1ff1b13c2e45dd0faf89ec3a7cbe34cbf24aad42547f4e3651248171ff93f9f5a2a3142f70fa69825162b40c48672fb3f591cc2209c27b302bde4820abb104dc58e394f665574a65587aa7b51ecb097bfcdce7e226e441466840434 +GCD = 4186d32872115f075f3e78fbae6fa4c562a70bc291a7d76b3b1e49c15f32ecd8440afbaf516b3b33918fdec066034315fce6351364ab998cb0d253c4aa7f837c83f8cba8d7d5a699b79242abcf0dd1e1ea7d8676cde77af2c1054796f91650fa30ef1df88c89b0bc1170b97af466fdc1cfc9e7ba212 + +A = -6f3f89acaa5e4cabaf55a49e5ce54283eb0ff8f906f18b170981a00a8276dbe5fcb0f8a1890203d570ddaa2b7ffa01ce00fa52dae4ac2cedffc5c3e23ee1891cae96b96f796bf2728ed84fb506c52b5c4a2c17e584b651bc154aa7341fd962ee5ff8f17b0294057a9cd68d00a139a311137b9aa50112dc9017780fab6bc9f6228cd9545ae9b13aa4dfa0218ae30716ee8228c5328a0479fe9b8825083ef0477bd324116ef28747103c751ad3ab4dd41903f08a0e759b669067564eaf35e95672be21236a92f18e8b38cfb28bbeb6eaf78397a20b876a38339dacfb36403359b69125ad0c8c133211236927 +B = -447de267e22d62cafb9163b032fd4b05e5890436e130d8719367990bec8a839eaf7970a8df7c0df2e170b2b213f3aea2c7564ec21bd058066c5f4eb67c1af16accc7f0cc2ed9e7dc09f18146cd93afec53b7deea0fc76f69f4674a35641be085d143a8cfd566f65f89c4de11edb5c5edf7ccb4e55a3d7d5ea695665f541bb16e264cf1e68933027344ba21a017eecbd381de923b0ed0e8372b0a3151c2c098fb7cd907a91db061aa80b7fe1521425d9bad0799800fcdcf708509d95d3efefd9cc4c70fb40473aa6217065e1167ef1ec8dbf61e8c4303b6b56db0d9bef2c8edea9ac0155c8c94c3a54b4025 +GCD = f23d6ef60f002c47ec68beff8a5d37e1d237a5b74cc550aa794588bf7075dbfb7b0b2d33ab5d4d11914b86c5e2dbc5d9aaaf800d0921c128532f180caf354c3a999816b3f530c28d9dd98729929aff356df0feb21eefbed6e8048492b3cf367ecefe22611a8073abb02828fe2b41b4e37879a5ce20b + +A = -122db965487b2aedaba743fd7c75005ef9cdda325b1c071b376639dabd87c5df076a3c554d9134b615ef7e76500f21db921a3f29080646eb755c3f413f8b9bf18463e8a7231aa989b7f6b4171f51d416bad1a33f422f6034661d7c29697d874f7f1cc8b9a9d3f3483944887533e79e80182ea20e428ba8116ed326aaeb8e947283e9c16a476b89e25e3fba975e9a626bf8d60b11d42def26d2af5c8b371092059fcbf0d4df70d6928fc314feb9d3db4dd7aad0e0e4b99676fac2a1641fd422009dd0ec4e6db48e01f73ae48d7df9c1fdb8080d28b2712669d8460d28b0d6742979ded50970de9512fbf17f +B = 1cbf584d71b5d64c0e1abb94069fee883437cb199da2be679a8555bdb281afa9a622811eabf3bc6fa2e76e05940f2837a1a4d5fe42be8c0fd60846c7e41de85df5cca213bc8a437a5cf16c61fff74a565055d043716cee41df8a39ae25b1983bfa94936fee682be736251d01a005d738502bd11fb892d5f273835ff1e467e2f588779378389d7e8335fa8594bcf6dccada1ce0b8c3d250f0a56912836b01b361e4b67b1ad843a31866b3cb742e6c4adc4735b906c308d7211252a905e7c36ad258662f1f05c112aca9c46b6be0bb67bba542d4e4622542db284f3be920038c203df508a8d4a29eb57ab7a1 +GCD = 1a16014f6779396badfc6b6c72a682ec0a2abead65a8d91f0dc8f4add86e910524f457b45d6ba55c1ff0073960062b2992f098c5dd8d91adf851c7c53320a28372e4e7fe6dd3b228453745ead77865906b70f2566fe2aabe6083e13d22ba3b0e9cd450d6bcbb556751c860bf1eca4eeab83f9b1b9cd1 + +A = 31b3a9b6981ef0ff0ed65e091a110ee281654d81a43c4230046a058b823cfb7edb5d3f990982de7677583caaf62442cf5cd732d056e3619c59479387132ffa3941b18aa87407edf0eab4d0761cedf4924615cc54ca6616b19ef924121dc130176710e011f09b5fd6f37455ac3e37c7b3a9b6e4f173be6f009647a184febf14b6a34cf649f197a140f89139b20db0ad28c7cf1e4210573ff84c8219ace07907ad8d01074c6f089880e0621dc6ba9af775d5bb6d829f818c65488d6254ceff0692ff900cf125fcdfcfb4efe8197ac06ed721c2b085fc1274e270465a620ba4634c5a346a3268033b764d3182 +B = -2db9c3185c27240951e05bd53b8a3c2980bace3c91437ca26c1e6e2431a28f040e2b8e76d942f38d77ae89ad6c84d034af9734bdf523b4d6a30f6a671d0d33ad095a2db15a00ec84ceae7402c1266091404440c685aad75ecba7fa5ced7c5a2fee0854f6215680184a8f3d59ee3e92e86e568fe6e0478f63a7da71d4bbc1ec3946abdebb93745f86cfacaea2ddb7fe55177e96202e5e2c530311c849cae60ee45dda43057b74b1885d2dc086283e29bc06b5bf80a1715b74a2dd74ec5e2d6ca92d79957a7cc04f78d8fa32039759980fe0564f0522f3a49ccdc897ce4c184acbf1a51b5aeb7db55fb6cd1e9 +GCD = e9e570a6f0a658070201ebf674a09bb9f1e2b47629280f4189e80a5ad13b13e9f77f3c2d1ac5ba3e8c0d33d7102bcfd243b58f5a05f981d30571ef924dbe0eade1befff3a71634cb7b2632fd1824b95dcc423eda49095fd6c367d065e336768fd8dd1417957e535fefbbe2032ca62e08b20d1a2be88b + +A = 17482df2398689658b744dfdac901114e972a3deed4258011d211d0294d4a9026aaa0ed3824e47c1ad1da1befc562300822b59cd8395b22251a95d4d99ac2e294e0d666bca09685f3eaa48ac7ae7a223ec9eb779df9cb5d30e4462b5a1bfebe54ed39a4fd60affaa56fb2590997e12124b4548897a2650d4a26ff4fd8b7d128a55f99dd900fb8b7a8386033442b25f7e0cbc3703e6ab3ea8ee16209f8562ecf02f179a95488419744e88c00dff63fc745fface8a99ec47e878ae6881a3cf0d5abebbb348a7a8d20180cc0dbd72d7a6a7a9edb63b7c5daa079fe559a69b8828c35615daa02bb6f6a9582edf72 +B = 1a9223592d3478273f8a2dc7b4c747604eb5e7055f8a5f0518eed3f97671a276a4806bbdd7c8d78c3b2f6c22b23c0ecf14b0ffe61f505cb661d40211ed553b947f7e322b543f89880151f81c31440b65afbc24d912c8de458066e17ba2b85b05acd57fe8fd7cd9db652da09f09e59f38ea3597d8dcd6afaea783351c55b73536dde2a369b4241d6544b2f92a935dcb1400b8b8a2e4e48b657554f93fa127ee1717c06f1bb82fb01dfd3ebb10837c4d0e34a4f2d6ba9c1c3a05d74a67535065a7faf371bb9b14db65ec143f384530357e626b4b0f76bd28b17d7d31c343188c92e84dc9132872cd82483da2cc +GCD = 6aef2fb6f066c0c14b7986a81f95a7d886b7f265fdc4915d327a227dbdc932bccc4da9ca8797a1a41395f744fee1eabab075aa3a9fb8e16f4fa05e5f86c1fd832cf81100256d39f149d5a38ceef9b30c693eba28be10773cf9e3f75882227150fa6857318408e9ec24f2d737c2435b19d12fb17903d6 + +A = -fd1c0466f7714ea2ba6063d0a937b5d786c5c9f356024e6d6b1b8c4db1e7e766635063fb6e49a89fcbc6c7425d61825279acf71b53ebc7bad844dc830793a3ac88c8be79be94570063f96c12fb545fcc93ccdadb2f9aef50c258a8a1bf5d4ae728d063201fca3c380283de44d620a4c7b1ffa8782b53a39e7eb9feb624dc1018a63cc38ebafb5ed220a06344674ca5bebd3a4e2ef8115369adb9a344b16733c39f22c71fcf90ab8041c8c5bb7fe46e911437b708e555a1b05d9a293647e1fc26e9cc4bb4c253d4d2200a5e027bb60fc6f30644f51867e1ed1180b4fc8c887c90948436b967141922399fdfa +B = 6ce66c4141a3c3a9342f27e47b6ace43b6a51781f7b325242339ca0105baea91115e32469e19a4e66cd160266e890f9f802142872e070fc48eb794d8f16b107cafea07434e7b1263371a12c46875a8feee338aff516866c0e409cd6eb1cee3077520ac4e56c5119cc907573082b7c43667ba329af930fb4eaeb2105f5c60162dccd45669babae312656d99c7bab86645dd002802672d5fb7cf46fd4f6a492bbe1d94411f894014182223b8b57f33bf7939ef8dab98020681465aac458b186b7a591352607dbbf3bc1583c6bcd4b004c258a4ccec681cee796f1f6de02e89d6c2e7578373922096728a05e3ee +GCD = f9170b8925c94a44be7b823cd9225198df5a4f5ba75a1de35633fbbfb9c1b6cee1f2c996ad7fe0d0877bbff07731c54b4170b9cad50e04ecc771cd9adbdb21f6de041e0a672535dc473fe87455664ff315e2cd56f1cc62ae32707fa5cffcc10352ec8d19465edbf4a16e6e4fa84e9af47ddb49ba70ea + +A = eef0c318f88a58ea569f007fc1de8b8a20eb1daf75bd074cafe54a98d0ff42e382313ad332fa72131ffb892ff401b6f8629b6803984601b3dca097665b3366ddd718701bde7a3cc9a4ed6d32bfb03c417f46504940693ce40cf4974c221fac6dfde39b6342cebd40ba92c4c0aa26d055b1dad111ac1f8191fa2023c2f23d99d66b3586383de397a0c66884dacbfd94a0bb00e14e6b42dd3ba12341e958b8312fc137e4ad74fa5cf2469cb8b77223525d10b30d23b142f1fcb55ba65f387dcc3169250a425d899e211c900489cab7d306c2eb601c41f72881469bd072938bdb1b0343c061c85e9f6fe1a5f148 +B = 1b125078001bed77b9c4b5e87c9fedbf07f76e17613815623726c6747f786ce6755a892cb09e021d8e19716a0f2fc13c47dbdfeb9ec0860144fd8c5828fa40a937dd88ae2ca6d99b7f4eb13d4214b0ee6967b933c8c04514898dab3c4c63d58e9addecd03bb9201285df8b3ef590f35a4231a4a5d04b432c91b4a5e5f77cc758909450682072c461a5e375198de87b4bc5068c2485f2c39ee78562c170e843d50cada38aabca0c54daeafb798bdc23c04662c7688aed7696b9cbd122b92b1d3e2df4c12311428ec3890f52a9301036b279c56a46b53f56bcaf59a98ff9818a679086e143fa141ba9d2ff52b40 +GCD = 144e99334fff16163532ff0ab0e059bdbdc5bcc1806510c8be2ea456c498418ea5ca5c238e440a6bdbb158e5115c263a929566ec6281873ba40df8f50c180798adb5b69cafba3e316cb86a73f27aa25be874c3e56cd3113f4e8c3c9c49e143faaf4de622ae598edbe2a53ca6ff80b9d9c6fec3daa51158 + +A = 6791ee614290d9c57ab9ed346151fcc58e3fcb9d52ca6c47f9fd9d776c646462351bd5942c10ec7fe74a1a353a1c654fcb8b5d222ce9c99dfcbf94869b2867229e9c453afb7eec49c9abf81af1ebfeb01f9f1aaab650e3e4a20df44fcb6b5330c65e041df0843cbf4717be50e0296b089992dabb968abe34fe183877fdbe1b3eec9fbc988add47bd46193521d372210e1713add6e43d77dce093f713d313d3f56ac9dedd63436d12fb314adcd9480fa18f5dec67a1a7f6f19a8a8c1c1bc2a3c9d66bc80922a1e033e74833e128feff522a1a8b82384e4b444b3270d258c0524b44cbe1c2a13efdf3bdc80c14 +B = -5c3e390500aedbb40eb6df147184f086cdaa404b9f3067ee919f6583e41a26cca66afcd2f4638eb2f13deae0fedb6ca1087a41479965e00d86c270c689d6608a919f20ea5bc19b1480caa0cd87352553a7b7a9e8676511ae5dab60ac2ba89ee958806620cb8d80fc22a3e2e689d91101484e259eed684e491f8d24fe07f37f2c76be16710f8264f86ccd1974118f425762467aaa70361def924f3c43ed47673c96aedb99e4eff0b3e49b9028b7c508361167816531bedca40dc13eae1ef4dad3deef629c51e53a5edf4b69398f3c87c1c1ad616349f165b0b1b4c44a5c23d32b98e114f5fccd7514ecc22474 +GCD = 94bf24d9f0da7eaad7694019b2819cd1be541661e24a1cc56c5d17ca47fea99f221b86a5020e740ad910b7a05d12121aab47d8642ca90a50bd4979e3e01750929ee9e168205b44c4aea451e8bc13d4c9041841ba578a1a17dde7f590f98d8e30cf0b83cca4678d67ebf7614cb127c8f4c1d9a6059dc8c + +A = b37d970823b12244dd6386423b600fc1cd6b708fa33c0ea4ffe02af206e89873f400c7b4ea15ed5f125b3bc7ec117e036006fd79dab2c05a86d5a1cf0bf0f99b93c8ff140fca3cac9ded6696f6a9f391e2149e24a2e5a87ee7728edd222956479fe669b595b16aa55ccd979753018c3aafca95f56fe010e614850aad199d12b5b093c7ca255ddea0838c6290ea717ce592409b8cf4557444971175af8c2db0dc765bd9c52ea1f10effda3bcb3ab08e1c14b44449244bcc17f9cc792895d7538ebd1a61e43f000cc6ff9c2a21a9bcb54e0e42ed24a5ee2fdebd3b18a2661208de553e861a8621f85f52343b6a0 +B = -e5cbfd8548192a199aa4094e2d35bfb8df4e81551a1de7ee4c7840cc3d2cc2adc2fa14c7faa6e50a5c6f56d4475ccb182d0683c26c178af35a255d47e1a90f410c22dd3bdf8e9ee1f3d31db2f722e980ccd78165558d78d648cb237e5cd1dd7d32e89f77a1109e8e630d02f8fd4296d7c59566d95c0a2766142cc2ba990a4fb5a3da46234613020b137a4eb98935575187879391c52702e57eb3f841144adb32a168b9c4520c0a08832bd6257af939ffce0fc3dba908f174f09cc758c84ba739ba20f412ff463e14bd6bfd74dba1660b17b627fdfc894e0adaa7fc69db4ed6b29990dd921f1ec5df9312bc5e0 +GCD = 1754745095ef8bdab40ba3fc9af00182d694d63f86700f7edd9fede8bf305f44093b8d3c4aa0fb37e561e59f6b0e45f0a637c9e3f1f2a938eb3aecf6ce923ca4455844731a32e6fa2610a95940596e0f5b0adacb63199d62c1de4779cd0c81486d7f3b1f73be54f8b2a2afac110d550de10fa05fd1d3e0 + +A = 174386f439edf19805e88fad230c3c49ca9943df583383551689380bd18f9f542682e2a2aa5299abc3f89ce8cb17fecc4439e516af296721316ae6289b6c17af8646afce30a977ecd5add7893b4b3c819a2a93148389cfd974512b73086d494daf2ed9eba71e48d944a041d6844f20734e9204701de46b5c3da9eaa2631286a15a806777733e8b3b6c4207caa39c0fe4fc2c0106abbe96ce3bab358eb53c5dcecf720c3e3fe1932d84a64e3ed4d3bec94fd5262aeecc4b6db594dc31e85d486657658f54bab9d15bdb109544e50bef4402d8f82aeffc85715baa88d5c8957936dbf9b77ec5c24227f136a60400 +B = 411dccf78a8cda1da2180093cd1bd62e939a844f1b748c65bcef8c19430bbe3e928fca5838f9d4fb3a61d2f3580d70262125bc96efce26c53df0aef063c14ab2fbc4b4f70adbe6039ef551388cb9ae46ca95765824e83b667f4028d29e07e477ebd850aafdab3348d1a50a56e965da68702f5557ccc920d6dc053ffbb4c1418230b79cd0bc2bd67c8c4b176f5095d0f788b1528f597578fefb735823550c7322cfcaa424f2b1c40b35b24f89f85d7993587b5aecd48746b731012f905ccf86c9bffa64c4e183c3f3db257af4ddf67f15201bdc1260100ee07305100bf3dd80da2038a20fbfbcf3592a91bee400 +GCD = 4038075a3913d712f534c1bd0e38b52d5da623825d079b2f3fa45ebffb31b1fb5ddfaf87b6fabab063202472cda6f5de7d8b8466abfe799647b49ed41659dc80e640343cbab8a041a257e0fde6374a9d8dc1d208bb5e66428e5adc19fdbd2b34a015c4df383ed067ca0d6c4fa45330b054ed48f3f5b400 + +A = c04fd6b66104840cbb2badcefea7d4bfa18ff2066d31fe98d8dc092b01f9bb42632db53f4b79242440d63b98b91a259fab64282fa7fcdc3050493d8640665473eb753f833c7651825f3fac053e4bced94329b7b28fe49447c353c4f38f0744de34a6a36602a3f45e9078c6387d72276798eb9f05a2bd4206f3c929fb113100e56620fc37382b1c088a99f5e44b647e38afdf535b387a65ce38b30ef2b78245f0712d110a224ccd2a5a934179f0440fe2afb3297932fe9d8d39b18526ca4607fccbe4c2682ed7ccf9906af99d3aa391c7d1008943db873c336e3c3b70111f99611a3b54e623a0e95c8e16e3ab8 +B = -31e939c8f89188195891ecfcd8dfb3e016743a80610143579423dcbb8ce7c0b13032355f4a8fc48a4b358e5631b01030d3f8dfb87b1bd9f182ca03b77ab1d1e3fc847ee3406317a37797f1e99e2eef1901d2b943be0588c4dc34dd8fc35cfc0cabba0e60090b7176f56d36d9723b03ac59206a8035c148c294dc04439ef340be7b59566cf2234743c1c714d85ce54738c7835f8aa752160305222b79a610d803a77a51500d73c03777f25367cfc92243dc14a4c27d0d593c749570a5f4a8af038427fe7a85559866c1d24cd505903656aebb7510a9369237422325d86ef578f242b40aa1b0dcf56be71ad6c9ef +GCD = 1b4bfb8dfb59933f302e2f0470f335adcbf2cf2a5854f2dcca53fee76041ed292c026bab508c3aa080dea74bed44903b4006a5d74988cd723af379bda82f7295d9af87ec11420260a3b13805a31aa234eda0ac956482b5779c00c2ed47f405d59130ccca809fe28e16279371f84a32c996b3ef5beb2195 + +A = -1ec84d7ecf3c26518a107f674c281bfd12515af1d73e72903c8d5e119939ebd75a9b0455494bfe045a32c244e92bd683b680d9f61842aac09d7d0ae531c844e4aa140b740c53dd989d260c9e448e7c3629cfb588f1986931ac615bbad07e5da5cbcd539b23dcab88d966e5152b8fb6b9cf0fe77ca160cb196a77cbf745bfe85fecd3284001859d14f996bbb545b10b97c6c8977079dbf1706c71e401b09363aa633d6c4df95e71efd2e88090fcbe543896f3c14fb4993ae1e0f4a7af55ba23d03be16ff35552f37713abe690268e3ef44564103893e563a7b2f63adcb3891d45b5474d3c4f942e981e40aa59fae +B = -16dafc071f159b4008f13eefb507859e951027aab1e7e8806a05c3ab146984b2afbb857db6f4acc8b832aac7f44a32264d0177684109c67a9d8bcb8ed9ebaecbfcebd46b81cafe10b5adf79f7f06d0820f3aec4d0023a76ec0e7de29cef09bc2a664507b289aed12f1886f18a031889c3082aac506ee702f057fe6a3e3f8fbf1832ef62f40555360aacd4f3f49067f905438f87e7ca2f3d7d4fc7317dce37fdd0ef53716dfa6bb381b18af5bed2433190742c4b8db74c2295c73bf32a7e5af52b880f67a7094022f5a4c3e5cc9f8caa2e2d5b8b4e8261d155e5852b2469cd881123d95bcc079388bf253075de70 +GCD = 60212b367c8604754ae62a482f83c726f9f86f8049e3e0a457b69e92fbca6ade5243f1a6ff929f46870cd8b111264647d8132ae51577aa8c3cef7899a615314d007bf8a5f84e96636a1ccce31012c694ab8b1a7f99409a4a2151d5301066626ad62122f509ab92291b2f49d461136aec98aa2731058b1e + +A = b178291fb6e1e9c507748d4ef472b65f20199462a13b9d3207d2f0c4b40c6af8a83588dc1fd8e267e6ab2293a193eb7e7fb3bbe3f6a7bfba2169a97a66b66ee0facefd0e07846164e3146ab2dd79072fc31aba3dff30a7c38b79adb1d571eb7ab72f253e9bf97806e7cb12d57c4a89f85a07d825ec263ecb4d39424114d532e891c27e32c4140d6689b42f968f0152a053131c22766e7f3be78d1ea90cf63bb6c5b3ba5cc69030996e40cd78cba5c474d979b151bc53a6a0bd488d5157e7648ab512f98e99e3a399e6ee30835ee3f1f86e649d8db323ec77a87d9f57e47842e6461d5b3ed4f7c8b582d97af9f18 +B = -d7c7451d838403e07b9f637c9c33dcde84b208069f5f5b045565842819f97514dcdacb34fb61925da000b05df70c61e7e89ba27d9d1d41aeceb78d9057a0afdee1965e822cf9b41bcc9efd09d443fc3617811e1679a8919b3e010632b39fccc2ae4bb640626991c8aafff6af497f27d4564c569ec7005570c9ea7de397177c53ff799dc8182bd6b88550c6976076c9959acf1a8edae670fce2571f5c313b03318bb8af75a6305847c56ada5a9bae66a4c8e7716f0d6cb31a33c8ecac693c711e70fd6be3cf7d6a913e6fc1d27888a4698e302dd7fa765f61844677f0567de1418586ff8d782626ca8b11a96c440 +GCD = 46dc0c1210cfda85efdb051dfaf039a051666f92c9de8d9e3968e85c0c8ed0fcf787f60809df46a9a34fc8c3f2da82ac2b03a56b2be43637bc29ac7b5cdf4ce87fa240cec59a71c5fc53a136561da626ca99be9a3e0c7cbcfd51e6e117dfeabf53e1dca8d4750ed0a49b1ec35bf86f8e57ef1a803388b8 + +A = -4c6d26c7d4540c867f1a49155fcfd4e23098123b55618b4363b8fcafb96416b8dd104195cf1f6540f19671cb388a69775a3a2733f4499a968f638c5dc58361f91edb5a54218f7be6b0aba1dadd014626c6f02969ed684917018db3a969fbbb48fdfb6738f7739f544f111814d5d89e44edbd2d314b25187d7c1f2bc0b44a7ed4f4feb91a5c05485a3b52d283e9ff08f4cd5e1af0ceffd9659c1e92debedcc53af3d50dfc8a3312b59cf3f3596e855cc86fcc4cb00b88a172c7b274e25b4c3d002ee92f2099a2948be75c4c880983444e6eb4f250d804935523cc3c6e1589b43a00a8e604ef0ba3fdee87d2d12e14 +B = -691639e248536e130516d522327ceed5344b019c19c7ed83ee5dbd590bf40f75565e1cfc588ad936b23c3f1c4514aa5bec0346df07a25c7481bf2d6395f540004249b4a2d4ba8e56c167f3551deb13b794ca396d39b997d5757f60f94fb9c3c938060310a302a4b69fbfd5d4952242b3b12bef46928d64645ae9ecafc7b8b888f098c6cb39c046eb640b92ddcfe5ee9abc2b7a59f23a99f9a925dda294cff0d09ef6bb1f5ecd7cf6429f7362d25b9d87f93a2baf440056155caaaf40df3b19c52772c374acf20a652e6c0f546ab4244045766075206f6eb0a8b9e06da4d40501d8432a20ccd1bd880b3eccdda48c +GCD = d8e3e4071c8adbb32a1d190edaabf7765777333e3e8ae7a4781e6e455f2589d4ab57794e81ba8515a42b1fb0c2d5ffd127b66daf7e1c712772e18029fa1c9495deebeb8c2ee27a8b67ea1f01e2d313ef01c31cb6cb0f43e9097e8b2be44ac786803416bc90ea8226f7befc64997b4305eb0fb4916d3904 + +A = 3b8022443b59bc90b3cee319324a22171b8d4d91f24a960013fa9ba41b1ade6eca006a6239bf990d21376203c08446c63ee9a295bee7bcab02df79daff03ab532f4988846476eb2f705cf1d2bc73e04420fafa9bfcefa63331748c555ff209d3622087e899967b7f4951a46dc44898662b0904534328d093975086dbb96850a73dfb2459b2edd0519b6e231da5ff20149fc2ed48f175c53b59868cbb3efc884cfa6352bd9c08cf95f10cf35ff79add7a6b7b0318fc3599bb118cc74fd9c30d3f45037856e35ba416cccaefb8b42b6d71cc096941da66122656f13df8275d6ab76111579fa85a99e84092403c8438 +B = -1370e640b51cbefd4b1520085830175c8519354e1674af763ff8dda5f049fa81364d8947ee69d8015f2dac66c24464dcc7074f65a3df989a51efe7dbf40a642a7a8ff6e78d7df722c0d7e3ca803906aa949e8f8d423037ae98e2e80cf175e93bf15cd918dc0d339d9e0b7b57d0d0440a54f422da220ce175f17483f4509d42f1deb5f5f4f9453a796e47bd922668a92381f05f566e989890b9fac0b4f033a2bf6bc0f36dc83d45ba1c6f5df726adb42ab2d2b01573563feb3eaad7adfb28902c7402b7dcc4041b6f097ab9810b270f7180bdc4786f65c207c3f1d591d82870344cf6fd719061f3ebd79386743450 +GCD = 173b54e0de1bf6d7e2399c31ee6a53a2165268717f8e21b4429f0c5c7c09de122e78f389b9d6aafa1dab387ebcca777fef562a3d37d845befcef6099f181933ac69197c400a739cd8fd878875a7eb48f117b1e539bd6df3d959d20ae3b87a5eadef33b736888507e60f660552027c777b277ced6c84a948 + +A = -749d3d1b9d868b86b905e92496ea7ca44168a9cb9dc51da55f4edb684fcbb57306813e4f10e4b93beb15f46b51e98ca9b4a3dc6b7ea3ed7f5563cb3c2b6181d5da8aa58f92dc21a898d6a83e947dac0a5ef07a6d005d807c3027df50bbc8915940733b4dafd0a7eaeb6fa2098ea0ac5d0c3d439259fe4f5c9fb90b1dcbd6519f14a2388d68033a7cc7ff347d05d07619e8c97cac5120b3574fbc5dc8782d1a5b43264f992aafc920a55b2c4d3853ed94cc493431e01c1990b68ed964634d22ff7f6cb1c83f20f76ced68b6e0c042dabe2e2867138457ee5afeea49c6aed0938423355b10d2a23508ca0c788cee472 +B = -2b3d741c37ff20274866897bf9185ef567dfd2753496d55403bbf4b62d65abb9d8e2660baa774ca923229bb50d2701a4c8b26bafef6cedfa1a5f2f7f68ba0d6a21135d3f0d5c87ff545a464c62caefbf3a9d94f020fb645e142d3b3a3124ed5b4cbd844a8cb237fac64bdbcd3e8425dc647e3ef7a82456a05f542b3073e0e9b934b36ba9dec34ae03f8a39d1dffe14978bc90a78058a85d8dda4b30518a8f961d9633a6d7e269359ca61433da7c9e6ebc30e5e90f54f5e2824d5156320ad612c10cd9144ac09cd6c4dc5056565cf83d87f6f7db34cc13ff7e4cbf10c59d06c04a8d06ec680f9469c3c1aade760f85 +GCD = 3e88cf2db1bf24158b04a9fcc3ddffa918173bcefb2a855afc39878270ab61c4683fd16d5da1286b6cb3d1487cc0f2a05c9f731a0fa132036c9a59db500974f33b340c38adb25737d558232338a2585ef1882668a90868063066ecf5dadf7da643df01499c54995e94c42f35741da0e54fc907468ddf651 + +A = -14f5c3e5b58f5f53a8be6c4329f11f3ebbb98f940bcd7deaf1a90dc7263e78d913e1120a4cecefea9f578523adcabfda6ebadd0b19d2b585a19330a11b47ecc7a3fda5782537bc3ba57ac14da2d11e6d840297d9cbef2ebd84b72cc51426c1b85dd2d2ff5c1c9e31070cc110f696a50e440353116fc02a3eca267a50fa314c311b5a26146212f8713abea8593e3ea7b7b9af8f03b804a837d93628175a0ee06fc8d96674103dce65205248b6f3da6f6902b5901a2c471adfec09f8d4e5e41a7f714e1f2d9f72087c23b50fbb6d0d1649a2e12239af1ccd28241f406e399fb3e29051ab89aa354935e029250e9e7ada +B = -bdc010bedffdd5fa24ca7a5460bbec7b023587918bb9e342d52b6f3610ce6539d22b30f2a186bb5039516daf6582076d99883e02cd0424f0d0d40a4518f122eccfbbfdd09bfad58584a96f039e8b329df8070db246b55a47e718cb7417531bc289e6a4e894f2f02df96a1ee4942ca8998bf27b7ad6c81393a67becedc76c7a3db9b0c659702f08331938436707a5c74e07f383dd77694d4e92493eaff259871910d30d8ca092512362a7784e9d432524938649ba66e9acac41db0aee22d40b7dd163c85636a30a0bc9bac7733090a6770e09db8c07fb3692a008ab3a14cfe5da495aac423ec93bb58374c70aae950 +GCD = 21ec0047881bdd7b4e9e1bacc1aebb7173c9facb8a4873772f39e17b7b42b1789044beec05ccb3b4fdf9ce65b6cd7e882b22b611b69d328956469330a64c82ed42e30bdfa7ae78fe1711fe879484aa4242c58ce2a7ddd58c965e6b0c3a100ad5077df840c1f757fb09553f67864c0222f1e9d3a453b4f926 + +A = 2d983b5c3a8f2ece106c9730fd10f66bdb245c1203efa79e0e9cbd812027f49b2fa860aa500c2980e21a9e545c778815615e7b1eb426cbcbea0fce91eefc6d3416b6b941630ca5aaaea606fece9f79754ee6de7d757caa2f9b2680c08b75f957ea107cc6e046d7c28263a458dbc6709a950693269264e368d468a5a8b10c7eeb38c2957a0339636b55958c707cbe9093691a7b47f6fd67bff83fddca4d4f726f403ec0ca1389e556e5193c7cc98fd3ae09d6d11c0ad83c8a49659ba885e7deef0e6c52dd728c7544dca35ad7812a5f3439039dfac6db1c7688a5b91b560bc0e462633a53b438cbb05784ed4904da78 +B = -24b8cdfcdf5eb60963ee5b143293a3e25b3f18a66f7ab885835e3b01f3b8ac64897528ea6dec4c9c1e391d061919d15bd437717647924477a9107266497dc09dd3c8473af213177e96b9fe31399a6aa4f6b7a8f38dc12dc10333c3b6a5ebba5c617f13c1ef6de12479b94d31933789f0da6f51d7564418f33ddd01f8cd22e2deea7d772a2d8775b8f362835a37c76b0ac42aaf48dd9d1ad367528b467bff0ef059f7c30d9fc004dd5164f54e0f3d87eb6738f7f1e958ffbcb4722ed1a4018ae6e24c9a9e4707bbb3eb6755fd2195aebd98d629ee2977d5306da453b850168082b65cbeb8bb353ad6a8f433dc574150 +GCD = 105def511d8250125e9ef631c4cc5ec371fb03c57e5f7e6b9d27457ac21ea9332d04da023cbd685365caf405016a09075de4dd4d76ccab56c71103f2c3947f71102c12a67596a3697ea12c94b02b4b2c3330716813877c75a75775c668472dbf013d266085438490a97f0fabd6c5e3b9a7d9a61b51a0db58 + +A = -bd7940d141f8f2c2b9a8771aa6782c3f1ab5cbfbb64e9504ced0cef179fa18c3e2e9686d2b51f53ca3f0ec59a1280513d68a907cbe449fd352e56acecf41fbdb5da3be225cfb7c93ed16fce95b3bbc522b4bc115b9605960beb910317054ad3790e1e3971395f75c71abbd5d1fc245113379e002e501bf095a214d9066264d60e9d7947e5a59e03126c3ea3cb9189beade2759d76ea0ba06c4982597268bc78096ac109ebdfa423dcdf0ac09ea0d16a5715dbdabbe1257d54ab6e4539ef66a8815e17e61df522e7f705258035b0a05513adcc8349532efc08cc184adb387d724f43f25acb0f5bd9cdb9c9b388d8960 +B = 1402cd8364115ce45b11aa799c576d6accb3927cd29e460be8980114a28d560941450dfa04c353fc90632f24eb226fdf1a3b8920af1d8adb2ade8e1613f4befedb1232659ff879b5084e5404c6246ca54d68ceefa49f969957ed43b1a7b93d4836cd0484c4eeec591ba0551ced48e931b4f04a10f3ac5d474f8b070117d430752fab4694241d98b09a54d1c137a6cb8b706e6d8dd239cbd239ef027b51f036a16863b110ad3917814803b6de942d2f41bf3f0291887226dca3a4aa7f1acb42022c511bea7180cc70cf9c7e694b63e6fbd12554113f0d4593662f1c10d5820f797cc101df7f798e38c20099b05d3aeb1 +GCD = 1716d462e788e204592fa74cfd7cc6c7287f42022d0860d9f2f678b0f183c54a7562aa74b5af92e858f4e6feb97c6123de9934dc101378f4be88eaeb05dc0544fa723b5ed270867aff39b2ae531ebd23bc22e444de9682409aa45067c5fe14d9550d18ec71cede20f2eddf756383b6e2269ee8c573c24495 + +A = -412ae3f499945d703b913c31fc818b237fa4fbeeba620dc64632134f427f3490f4265e06dc912387500a6f3b8bd389348cfccbbdf34096959ba937f7e3c8ced1a5c47387ed09ab44ec5cb9ee88a6ae83044866c269dd7cdaa3e4cadab1af2201c95bc3aa47d2492e8f64397f4f69218ccc0f9968b740bfd9a020e6bb6f796d36e223bcc3cf41b6119b6a167ff883a19cf59168430e53a2407ae65c520d34c596af1b525f274be1f1e0f34d8468889feff5e3a54428d50662c754559681782161b15e35cbf11228acc2955560f5e2760b560fe92d234b634f3211d35415f7729d7f1574f5ada9c35e419fcbe7dd654b4 +B = 2c1b90954547193a4c2a5689715eb5e57139d1142167652237d98d9177669075371b249e1a5faff8fb60037d15dbd865acb5be7edfb8374f316ad411f07166e2dcd5b0bec5ded44898640af5e96d7496037aa016881ce9c66da39c749ff3d7d094a6dc280ac6016d0e7e6519675e2436605e25c0be8b9d62ad34a7c8ad694f198625bc52fc6f5933164da87383c3a16593845d6dae73b08284ccdb4c3e730711d37d2d69afcc52c102c2c38d8768855299ff08378e2e8fc7adbf8c621b4ebe7649610730fd9b9865078209413cc22ff3d3b1f8e5febc64c2d187f350a27c5b8eb96333d4b950e869d5f1d7a4437485c +GCD = 4d8c7fe1d4d113e69e5e584cebe2f42a03faff4e8fc3f70e986b2e00271727d072f9a4371934f995143db2ec321b2502af5fe98a901c586a24156fff1a958d0c1431008a7fb48f779c7e1725bb217a9c16521f64653f8c0f279165803f22d5b2da8b01d2dd135cb65edeec4b1ef1e28c512ed02be13985ac + +A = 521f2fa1c832ae50091f1ece98b88bcc6529af62fb8463d01ba2c00d6de37a2099dd5448c44c5b66dbb5cb6014dc1efe94d37f7a18c6a86de1a065fb72e4e28120ec6491d6f8a77d90a4a5857fdb10bd5a6cfc4f613dae126ae70d5f8280556d0c533fc790e3f4bfeea54c27808dc8f6a2537ddd7f20a46a0b6a2e48a1e17c9f1d587c1cc646727da0bed31ed5a783da305425cb4ed7d20f7c6d8514a19a8624f503c454f2b738ef1c86297b2e3a3d28c545b2625a147ab7ddb53bc81c749db4e84633f59d6e7fcfcf6404721ebbb2b17992e4e80ec50ff928435fd22795cd8aa83a41d5ca3ad5c8a00db25acc0a9d8 +B = bfb846b6591b9514133bf7bd762e19d74a6ec85e93a83e60f8f7ceae7fe2b5599f720d534a13da48b9d6c2d0083e57f514ca9e269c68fd55c57aee6c6e6c8cdb132c3056220dc8a10c6e2a7397580abbb02f5d6bcb5b02a96a0bdb7fb76fc7244eaef2b473a34244a58786f09821563c4a0fd3387ad21099e3001a1b7a5e52c9ba398d51099f1541273a24c1341d51ed8c77b569bd9ca1fc66f4db5947e854759c9428705a06deb7adae92df9c9be567407c14f10e04333286f851213babdadc67fb9ad035c615b5e52713bcfc3911c2a1418af6698764f7ff6111d525cbbc74930be8c6e4a8f64f7d292848b9fa4c7 +GCD = 5bcaa8952065cffacf06c004531acc5c2fb89c9186676fcc8361e4f8c7bbcac2fc5479f910be93a1f72abaf1384857346c66abcf73a1614ac6226e5681b7f458ec6d341b4d81f4711a1760e4026f2aeb251a67c2c0ec8b01f503523aa113e6c0e3138414a37cdcff4787bac6d2749355ee86568093a6aa3b + +A = 342cd4a21e3bee4837c4ca53bac294b952a7a9fa836cc9690cccdc886d55322b37c9e846faafc205796b5834806748e5167010aceddcd383cf55f42d9830b980cb4a26c133e78e1f6308746c6777e843fa46c4c60a5c6015a338b51c862b386fbac8e6ba60debd0f27b126390cb2e441eb796e6633688cbf4525b95c2c44345feae1e8dfce6244fbdcac16a2dc533879314bab11873f716d32bff63ae0580cbbed5382ab5b1939cb0008d8ad61642c808a3c4bab5fcd30b6ea9067b83efb59549ba6ebf2d968c4724e533e54d3f9823c8be37a80c7e8abf2ae438ef7a90898d91c8fe9d3f5255a545a3d10499c794e7c +B = -266eac6b3d6f05464364e85663c55c72f8b62b6968f1f137f7e02bf9d9b84fe257fc02f135c52756f18f57b92132f87adc604ca161e8acf309f571d569354c814fccbf1ca687ad21825398b6fda7edf2842767628b8d126f07e26f1ffe20de0674106a2e538197744036c2fd888ba5606ae86d34efa10b5adc56bfa688c532cede9e0946c76786de5fb277977d3e9a009e043a4ac265f9b9ca8b506c60c5a07d36aa372028fbdc7f9f7241987d5aacb4348865eba04aef096315e0c9dbe4637fe652dc8f7fd2517382fd04b075d6306f4bc10b8ccd0ae6c34c442ec4141de37016d62a99179c45a15f688e8a927f8d74 +GCD = 12188435c600201aef9454fa2fb9e758ac02ea05202d034105a7713f5b50c066d5495c1098e0061c59dfcef7375ee68dba4414960e4cdef8da8401478ea3c571a0be72d2156fd4fa8f787e64843ce5ffb62910a58d0cc01b4e8816d24dffeb0c8d97880f3048fdf4e244e76331d571bbf2c1061109d776d8c + +A = -13f75bafd5bc6ea46745ce580e10664558d811b7746c4e74efa6fba8435a981d26b54a6d52904b3e221c7b28d6e565d96c73f118e28f86fdc85c58b9825018c3df8b7a9896cfc0bd5b02eee8716f29ed8b5e5c9d48f8a413cfad87124a41abd329ba24b28032fc69e788ee9c61865021679b389d736584457f723021efa57483d5e3bef7fd1277cebf09cfd9af9a53bc22029dbd48daf68784369fd06c3885ccb2681398068046b9b6d6dd00b4757f97a61e14cb29f75c3b714884b741142d08297ff185005166dd4a0392639288260e327870df12f4080fd0dfc54a4207c1f8df88a7a312da291ebb9fcb2559d046792 +B = 1788835a5e1695b131c4322c9af94aed587b7e7094b7aba62f53eb0906a0d7f02f2977b65c6948e58b3cb7290df3aed12278a59bf618202efae29ef98a0a0787f2a8825d8126a540033974310070342a7f1c56db2bcd313a4bcab94a0f1831ba28b393f0a3096338168a5672154a246ebfbe9be14e096be38630a8d493f989f076179de97de6b50aed240d9410db59c6a5d3d72c969b949f0cda1b0a0b09989b435fbae08b6201cad5fa59bf53b0712075516971965abbeb3e6e78d37cb13c965970ceb4366d558ee83e1a69cc666acead68bfbb08ea37a4e0ed1918d58dc63403c1e997c3e1c30876e85722af8056d12 +GCD = 1ea54133b01807a50d5bacc9d0de012ad3054199298fbd7b797d6b4535cd1d8ec15395b603ec83064c51f9b95605a80385ae598d35ab81b82464f4960daa52c8c7120baef072aecf987051300f1a656e54a8b4b7648ac9f42f713b3a0437994dea769ecc0d4c4540cf89d641fcce72da2d54681503e9947d6 + +A = bb5b75ab1272f8bb02e733cc23c2a1672904c7fe3795427d0eacdf5da2fa0baade10bf08f02fbb5274a2dc4df2447bbbeaee74b52ac5deef980bd631de315914de06d0c31d4584d98b0a980d2dcc386799694f6437210399814d1b654b0cb631091745dd965c399008aa06a2bcb6fac1c713c8097f342c211f2bdd2e30f0f009086b79549d0a36d68f03ec5ed5569e8337073ed430c319a45e8884fa87d4c960bcd1b2b1f77125bba061b58c5138f1447c4f97e61e1dee995381f200e9fb310cf04beeddfd03dce4eee17d4c6defd96672a5b989e15f4960f7a5e5c66ba6cd20cb3f0ee511a645f0b7175a3c6e767bf9 +B = -6cef7535acf902aa763dd7cdca6f9e6f3b4e30f948ccc7eb24be2dca79ba6bac23f63dac80ba078bc953c9be4cdf6a9d63370977174dcd4084d5a4b70d35d97af3f631285dd04306f568f57eccf2c4ad4bbb43231e57242f6bf67b71c70cab210bda66f55749e8053e6a1c71559d2e1c64a9f72a1fd273f108d09c7ba3d809c5516b0c69a1309026df287089e9cf6ce8b8b1c9c5329d4411812c23f52edf3e246188216ae3a0d2baaa843a0fd71f5cb9cfd10beff6d990e652ffc2351268fb3a0378c47d5a5a846ce84b901238ec3ff5ddca84330f32c17bd0205a585aede464260ad809a1214d3205ab693d3f23d45aa +GCD = 389eb82ad2531abdb57d4011b5262e4df98c0590b57bc92ae83e90eb0c5434f6eb25f1ed941f6109283e3597e6ef01503b72a563e54105b20e366469620a464ac5b187b190805d59e0b4d52fb211d88ca8401181c2866a848ebfd18982fb342db1981892a6d5791c33a430dd943964060f4b8ea2597a30971 + +A = 189805bad506a888d8646987ace5940be0fb07c212ce2696d1bf5fc4bfeb5f0c85db2cc6ed633badf296dd952b60a59c403d8373f884a5d9a3553667d28c796c5e3de0b62afdf75f5107f629674da51cbd039c3a2d312dc724487337b9d40ab4a1c3689b5f61eb9a5d18303514b3b2e8dddf79a4f0e1b52eab17568a26bede7f99b7077b1f60f657720ec0be7af63b6cec850a17f9149f0a9ddf85ad6ed9f33f5297ed0c90b09b9e43cb03f9a4b98ce125828faa462a5b07caf9d31f7fa85b96c02905498c19dd41ebd447a2661c9aa0809bb3d034c0858498ca2cf9b49cb65ac95f6644019b1d548bb8b034f8ee7e14c6 +B = -2cdd4f188d41cd6ff1b17800827da7c37c9455b5c7967f25da8373496f2c90e7d302c4cda5815fbf589fbdae0c1688ad93bca5af4b4a157c57ba3e7b65dee0de4e8c69121c52168b4acf3428f9378048dd64c43063ed02434f350997b456db5df5f0aecda1fc702bfe76c49728c7ea8e49126f6bf273f6007c87f18eaf09453db04e294d70659cfd7c20678de19621261ea1ad07cbaa1bec0baa6d2cad2e3c4a7ce183c2922fae3db0e9ba03dcc9a865aec8783f8752480e7296aad74e30620512ff8c7a605093b072ebcb1f7e4cef6ae0a0c84f3ead823a16e9d3c74a896eb94482a1e50426882f20de7f3960de859e2 +GCD = f7871589591a6022368e85dec3d7b00cf82d5ae5aa1e0d27478ea03dfa6eda890409f2ed3da2b20e4b8dc7c656a33135350a15e2b92cef7b73b73668534f1a63cb4398d832b096abae15c0722f161d622a4bf62f9ef3085e6141876cf1d129c57b66c2b24040ac6f93b81c37dcbe06cc8ee30ce864e48f6de + +A = -184d1912e5e7a5bb52d472077a5f5660ab45f3f22ede211781e48886ad134d8fe92999a507a96332e24cc1e6b844e06c72d6d2a7c031410045278c4e98116d6e4eae5cd5e20d135c2747c9edb6ed6c54b002eedc344278ca3b31a4e5d5ee991dbc6ce5bac07f409b0644acab4b90d83f2875b1893991eddaf115343d519c80c2394950619c5359e78bb900805bc78e298129b1ca826103f1d70512ad9a92e369d9e8cf796a21a783b83493d39186d4490ceac9dee529a48e33839c834b70ecc4743062e68ae80bc1547dd624246579d3314dc0baa47850c9560b3cca9abd8ed57171a109b9aca03a4622e215124076fc4a +B = 32136a15cc09b55b8377b0f87fe1541f195880767f2e018f463684b29bd6f8f47d6b06e02fc33b44b986f3a1514e40d6e1e755c5d07d28c857a0105aa26e6218e9f28de1dcee56d84c7710a592b0a9a442ba0b270cc53cb85b75dfa75b299e6f368aadc67c866f54449c704b50b355340ca9d0e33327da83b516b904edb37262c0bd7e403b9e82d2f023095c0c5cc746613b5e432e18769d62b4338ad22c4c727f43b869b3f8ebd3cd16c94585d4d612e9fcd8e7da9c466d7e09e9a60073552bef52dfafd65e92efe5969bccd241901114494f550da7076d0284d3783f3544dfd2bc2e117091f2d60c4b58d1cdf6ef9608 +GCD = c6c56c5174e4f790fd73e3eca9b47509e9bc836d32b5c9cda12615c20273010e4d35186953f53c51d19d6a0a3629bda5cefbd26980f17f8fcb339a028ca4ad59e355295a90e61028bbb1ace71aeb4267ddd3a783fe3f14d2768b086957b3ea750a6ee13b4a7721b6518cfa3ad753d9c5265fb99241ac7656e + +A = 14b8783be74925a07fb0d1c23353d9e1cebef26fe0fe594e4b995b64d2b5c0b12f74d9442ad4414fb9f18da2680500b199372d4e3d503830f5ce7d5524f59d9c6fe2673e8403f3c6feb2bc0f33b2c15ab9d01f08c4da8e51b4c8d0e27f58a8540d8c783c88bd35e1359af633e48e40805e1e007607806291facc207116dbc283455d4334fe1e820a52b4caf20ce3adfa08c77e7114ac50634f8aa2694a26612dd6b67f741e0c0afc6f58580b66dbe49f2472ba2aab133f6f035233341218e374ba37b195c7ce1922732f5e09ee77354d9c29fe086ac78878710ded8e49bd7c359f916d44dfc656f2762c567158a0ded3ccb +B = b8b7770770458fef314c0ad89280272cd482db0b9ff04e6a66330b13d38f3ed546e9764875a0b74e8dd3b1d9c4a8b110d6e9b2d1b8a59893fbd373e86b1f5de59c3b8839c21e85f2698c0c75ec145ca2b82679c27a706842653fa3662fc906fe8b4b9f34db8d5feb5fc247ab8b774382a5db82d42fd8f3284c7b396704d8d9be5b6a16cc220db334ab7df6ef73a21a35b3041bfc360480ec06cec67746eea5958f629427ac690c93033757fd8817087b0c1b86228ad5dc68b3ec5609f50df456fd7aeaea3416ba89e95d4b78c457d63741ac3cf31926cf14039fcedef82009a58ca6845c7313bb15baa492993aa1858c76 +GCD = 1e668cd8acc5d0053370c5a4e84be9233c8853d7a5941fabf24d413eb5e5ec9ea8d4e177d4bc7175877a773f2a70098a81eb8e3be7d1f8ec7b76a3b66ae467d80cb9676cda1d651e51dbd1febe9b713c83f31ef11ebf91691dbde704d8f45611754afe94a986d527a8d838a9e0041ae6e7869f17da3def9931 + +A = 583bb10ace4032964b5956803080c68517e0fe2063abb21fdc96b9e47623934e837548326b4e26f63f55604e3d8317a73ead9bf237e09dc5eb98125c5d538c7739e65cc0fb0a80c9faccadeed3f8462629cd0a53d20308bf7a4b0ac78dbea7483a0895d15446081918574bb9658bab94b8c6ccc8ddd9443e16917526e5515133d43239ca7cf1e6d2842f397041a1629ff8cd720bb73a4926b22dd0e97f03b1ce2755632668026e2f4e3866556b07fb5b8613ea758eef61f7d188be2aeac261400fc94cfb421de242f83772f7c4ab91c62ee5561dd54638db6bb2762a1e2af40fe55d23535f1140a54cf00cddca11af8f860 +B = 34222902b4eb240e3b6b01ecfb4139f7c1200527f59dbbd72e9d8e73e989b4b3a21a0f6559fca698b3c066870bfcaa0365b5b905c3ecb04e0d008f46d235f629309dd35553e047ae96997b746f32f885eb87730d797f61584248266a97b37adc067f68795e15cf7af5b25909ee51edee7dc03efe89c0d704048b4b4766d0dbfa0fde6316317cca0bca806937782d99486c9fc4cdc8809c09c04e776357caa5e061f40830ffb01cf575f6a4a8d8b4ddff100f52ce409d7a6520d489ea9f6483959c88cb05d787693bb727cfadf05ba3f1d593f7e65778980eff3621a0f93dd1c79d94c75fb640c79ede9b30b03c3247b8a28 +GCD = 33643f51a7115c978417dffd2004b660edd6b2326960d0fe3ee7b67011506db769c35ac9f28599b6d220c58cf51137e8b382236fc314ed97e54e06efb58dc198339a07926088fb5a2e598f50b0cf50304e3eafe0ffcc0cefba10fb459d3583e919e0797d4443b0c5c1ad05ed5a437e28405e7dafa81e06f598 + +A = 18e6777c879cbfa88aa063feb1659d79ae3659a5d798f5bcc8cfdd5de7e71256ec2d90ce65140749a6ea7ceacca7258a207a836ed6f44e7a76ef20e0b8556060531a1a53f6c89286002ced71de78b23a657d8b4446b2f9dc8a3077d850c29c9478c3c599b579babc7b4c21d88eacf4b2238f78301b66e8252536e3c83e9e4e9c52b50905ebc8a07bb6edc9d0fde4c4543951ed676ee6389a88a1805dca58b1824a667167bff4b75173bfde062583f8fe12cb5ea282533f2a0b5f9733f988816b682a067b2d98f15f5b003b258f85f09c473280a7d5379027f4dc5bc7fb722d90df788ce626f4f88728ed556f014956ded442 +B = 10fe850f6cb20e1a14bb4699a53b014347d84e1b078a9bed4838cd91873ed767f43ef5120e0d088c3065c041ffb43e788e4532c9255fc9cf315d293900c18f4181ce6c5d18392996dafc6cea5f1d70986fb2fc1036d2b68b333bfbd190fc359cec72acd0d25382bcf189af2991ae543d2744e9d2992b6fa29c14267cf6378ce172d681630c1b792eca740ce843aa1a05059021737e9f864d4653329134bcef0569f1c7d1852ed8b22f86d0ac4fef85214ae81726ecea88b7810a5a946590c4dc3348204baec25ff2e59ac2f90b755eb5838181d4db6a0d77abe9d338f8222d6ba23ab724e815b8b8c08a131773e52ae2ad0e +GCD = 6a3860d4c05dce55b41f3f19dcfc26161f6459ad3ddf161fcd8e931d022d89df1a1aef041c3b5324ca880f3c5966f8bcc63cd79c74198c9c6fda459efb8362ad0ad1ecb1f9fc9353d46f881e3b38dc793dfa2021fcf79b701834506ecf9b23553ef21211211345c13a41db522541ffd20b1bc27fa4c143dd1e + +A = 34789df833a4422e9adb9e8db7c706af8d39a252830f2b1760aa677c532dc2b92aa992f17cbabf7ef673dde6e46d46395421540b03288d94cdf97c87262f42e8cbcb07afedf79e269bfbbcf1b36375d46c841a1029df4531e883661ff0c24dbff0bc36df64a329afa5dd54830e2692620b7ef8fe04cff0a0bc99276bb782400cf7edc2bb2e566a380a6f9ba12fab753ebd1085ba40cc26c07d02895795a25882c57973cb6a65860d27d357c6d70e85498c8c11e3ecc98200ce09578b69c9c724abb51d4722f647f9d3dfd7fc79f771f5091bee89bf458570121942a6f0df4dc01dab09c18db361fbaef8b4dff1461076ca88 +B = 521100a09d6b38f256ead652df3ca43815e94f7138e0923aae22d9dc90ab9101dc6628679edcf7c747829d57c27b62c3ac4fbf97609838d309c84ace4180320bba6178d0221f25b555ef520c1d3829aa0054b5cd1d60a372df855a5d88741123ec67a9ba151e9eedad28e0439961cce73c31a1900ce6aedba344251c5df9b1fbb536961b1eb44a0f159ac47058e9557e12324c9a90d7df1f441d2d8595ec5f9cc8041d5086d42c1b376f19a327fb9d02b9f75fba80f516271498af7aa44d7a3c7e219fc93071939771795d36cb4235518db81965ffe760043b1de885b8662fa97c279400ef564689c83cbc283011fc1d7dde +GCD = 1a32bf839a0c1cace8996403a20d76da5458b1d69891b3442b4ab2abe8183428d6955dad08bfa9997a4770fee07defb76f0d44ce81383c551a7bfd14060c8e55d36c7f3ffde08a62433d114da74b4001a07d7126e7790bd13e565e75e2d71fb0359f3ca22248a5628ba0d99a007ae8cae70e559d65756bce3da + +A = -163979bbadbe4d08624685cc3fb5038896df186bc8b31e56eb15d59748e27fa3cdd68368c279bf501b57848ee15a11b71f8c95fc8ba6989bbf7fd45fcbba0cd1dc458fcb1c2b2581588de73eff27e7cb0c0d17a148955bda62e07a0a37caf0fbf2876577f24c2e924c7de43811973f240fe8090c8121731aed4d186863f03a17cbb49ddf48c58df56635926ac7813f7b6ceabb9b1c6f3af0dbaeb218edb5788ddd866790a33fa66635b3e38e50ebaeb7fe82c2fee7460f9042c625af314f19b437eb77a8796e3c42d162c36c773de3cee21e8639e7212324708c3fd2af7b0712f80e5d3a079ccff59b8e67085bf8b74565ca2 +B = -1563e705532fe7a1007a723fb888f62b18d963668f64a0ad76aab22ed27cc854959b93f68af219b46cfc1e24de05d36997d208290becc0abd92a23b505f42ed60574903740fa857c53fc706f8f9bb7217aaf8557cd8ed04acb0b628f512e0169b3adae4b4b17faf8eb4bb77080e5b8f78309adb04bc35f3aae94fcc9385c4e9b39cb2c442d86890aa3f079872e99c591587a9bbdb364766e2b79e901a941d47cc14a3da23a13408095800a4f9e7962561f46f7dea3c9b01813c7524a5980839e7b1a110419d4606baa55ac1ccd14b791b7ae513a8a89fccf4e0dd5e25e79ed6223f1ffbb9e8ca99dbdf249049bdf0b01f40b4 +GCD = 1c8633e8d467c40dc5ec4748768107a786110043902537cfa081baca652014befefe4bf0406f16d0754a0625bc3b0303944594b1f0f2434cdc785db7c6be8f2ea4194f360206b3bfca96b81b38b036bcdccfb3df400c8cd6cf853264d577f33bfed6a327bcc627ce3946858c67ac537649c2b4791d03a89d7d6 + +A = 1017fd8d5cb35f27b8758a9d558a168cea02ba7d1edb4781fa48387414020e5fdedc26404e2517d5659eb9ec68a750248764d5ec6db6da948341f981b690953b1220d58787528e50f1b7642938e7e9045dec1bdfd60b2e25e52feef634a27bd04818c5f8b4873afa9311f28cce262aab6f672f188cd0b10e13a082582e51c249b4f93c8800b1b438a9598fde7f5b101094ec4b2f61b72e0d4114732894c908124724bddc6ceeb5d0ff0956f23850f19a108a4c147565c6d7e260caafe73ddd9ecd4bbe6a02db6b0e7947f6349569e83f275457e935b0fcb04d85d5dfbf50b660895d45101a0baa71cc988c1d86a9804eb3d16 +B = 3dfea7193ee191dddbefec187107e53239517c601cbee0bf198c37604a66c4350a012b738620d70c704552cc74b0be6d1c689f04ce6ba07d99c201983aae7b9a09421910f5522460fee9d13fece90a859df2066e2edc77b4d65811e56f17ab1679f78a3edbbd6af94b92803087e71a14410aa143971052c052a1513ec86364191003112c45f9e04d19373e94ced9425893283e99684b8d816a46f9bb15d44c15b53429dc93f2c47903c536eb0a71d02e55086b40340af5584cb35dab557845cc3f67c80d9ecba4b2731202009ab27bc3ddb134859df51ffced2463679008ee2e740cb37fb101511f51298cbad5963897beff5 +GCD = 3426c6e901c7c93ed1e8fdc631827a3385117ba93d49ae53a2f18f1bb75496e6091e15a84b416941ff7ea9d6abb442a537913d211b36b9a5eb77c7174c0979439d193eed23fc532b54208959db652914b631aaa21e8ce74110b2bf128571985042b6fb50677013f63fadbbdb973a7ac5deba708d7979802d221 + +A = -7a80832cb129929a1a44e0a9d5cbf264db00e105427c34e5759c0ec01f7d2c8b86f7c3673239cae99f0d2ada96e4d04c743f997d1c3703505649c4009ba69b118f87848b25f5b8cd6ebec196030a51de4728b8003fe71fedb3e93b7b70e5376b154b89bc4efbc3df143a594c791b906e258b5a39a54fd892e87826239a5875e7ffe738d92c4b56642b59d2bc63007c2a87ae8fdbb2c46eae8121157aff6dc06475086481cac534f15d939edded0617c9a5e585301b0251aca7da99411ebe5a39aa90b2ad78832483394fc20a026aea57eb9500ded2424df97a3b32924a80708ec8ba218a0697292a57aa948191284e75c8de5 +B = ed692893d0bd3e7b1c3ab12946b4b38ecdd761fb42ed63308754b1956911c212e03cb4f8c81f549bd37a8b59e5b7fb38266a6f9397f83e8f66b63aefdcf27d1e30d386f07e3e86ca2dbc6588b02ea4fb8cda2cb37d3cd75cd28ab9154ff1fda5a2c05bb2620350b3d3f17cb7e991da2987d25a108dc9d10f5019ee9e2d588abbbdaa0608b2144876c5049c1ca00103e8855861fdd02fdd8b0be96768c3ba50fd1866fb5c4b1d7ecc819244af3198fc68351280991dbf077d1096cce450ed0b411d97d6a7f0ab040ebde88f20f8eec3aff9904779386cb1117b5da2090aa60de0f26f3c8546193709f5232705cc80d28fbbc39 +GCD = 44a20b3ec29c0b777e1861c53a9a89a29ae1402ec341351d46233d4930f04cb7dad56b37d43b9d7a91a8a3160f10576324670ebcc22e0a433a912fe355372c6acbe811091e8769c1697d6ff363c2cca7a2875027ce6e36a3d2d2f55844170e42f05b88ffb792ddc72c9411f87077a1083228127551538feb95f + +A = -5997ca5bf11ad822c7f392aa2f9d107d5dc5a2dac0962dec1f5b39c9e9471c9ca86eb4da11bf08abcdf3585bcfdab2345e1b72085826db1be4305c30654f22d7c5ee1656c72825ec8a9f5442228d6ed65f1b7fa1ce601da8cdb429ec820fc0aa7cf4ffd5421667cee6e3d226079aedc1b06485fa2be5848ed306848181180bc25829ba96f0d58d1a8bb9faf6963dab15e4f68594c949855eed4afa10a707fb5a349c4c2c4215664ce08491dfc4b8c4b19b5fc7406096248cd89682d444d1a9bba38ccb2da4312c60597f0ea4217f8e0d670dac74d985f9d4793382d78b532024ba87f63452dce34f8fbbb2815b802c036e613a +B = 3a4ba0191cba8bfcc18d6f4f3ab45d4267553c69ab14ac373c32f9b508732cb7ece15c6d93a27228573ba808897be72196582b7f6cd088fa56e801f73eee92dcc066de5077ead02d95a9e9b33550cc75337e842fd055e217bde8d881b39f637e6b571f5f49da09c839fdcc43d9853288c0dae6dd20ff2fc5561a1be56afd2a1a767b18af0be08bd00fb042629bc8b65368de6ba7722179b6ed1e97f8bed3d344cc7f7ba7406cc2d9c655b8ebf4a35fc5d1a2a63155fdc6d510aa0eb4f3947530d74ad46a5c809b29472c9159f9e3898b1d6c049e692243111e53c4a468394631daecc1640cc2da98dd4bba2e97ea836ec6b074 +GCD = 23b5c1599e4297f5514d2960edbb132a60a0b9d82537e530f3647c76ae92de592eb446a0a9fef50ab6201e4db8a77f253f449d7fbe916f3bc45c18f6d2bf1cce1f2176964612750382996dc015eb2f9e67ce426a25a155d1f8c6f59ec65e33d1dd9773e90f94db939b97e2a1888e468f6cc57b5d7236a9252256 + +A = 72470e00156eba5e1878fe4f8d45a181987a702b420cd31ad92777d8fa9352685d93bdcced6d11b075bbad00aea2917dce89fd01051f0a7c59615bfc6a8976c603082cd0b393f3a46da520d957fef9a5cd785cd3496d150b95c6667d8d0c997e572246d34e9a840709635d8e8c49b92bd885f26cef49efa03f1c258f18796631d8aab0d3a435e2566b81b742698cc732129cbacf9c1f9e46ce996c0c61c3f81a870b95ea3d4146c5721be6b8ae0befdf2f4366a689453acf1490ef77ba3b1da815b721ffc381b081061890903bea3586ec7e3c5d2041db523c3fcda28fd9e63077754cd143a6dcc0d7e95364e47c65b7b6c5b +B = -15c249bf0590e98bcc88b7fd2e899c442c5b6304257e931725593da7718454c64d7fd68dafeb9cb45c79a0335841a214ba0677717bfc32baf46d09d82913d64c210b1e50bb2668a903e23032fe7c2150c0c32f78d0f7bb7c424b3f681ca092f30cf7a5cf577fe718c415c2ba35317d791eef44e465377e55f39204ec4a0c573a008ee880053d6cc015292d1133677622b10b7462339be977374e8096f7f52d6b4b3e30c20a42daaf25788e61b072a6c5f4a2e5f8bc16dab400e6b6b30461c47f0fab47181c7a3d09da3b705d1a32bc87c4ff32f08da2c4caea914fafb7f97072d204f3801d643062f6fa4b2b78d9699b0d56ae2 +GCD = 1dde625feedcb23e81b13be86b4e8d051cf548f9264d2107ba5bd6b86dea749bdc630ec68d272146fbcb722f44f64477d15154c64a9b7093e7d38d6591401389b13946afe9d90424ce5dd079d047312389186c2e216400ac78a80f082181de8a9ff0dbd1a144838478e5a8a4e4a9f2ff8625702d887aecd67879 + +A = 384e80968a8064b47035d52ae60255ee091789dfbf643498d6af2425a36fb8c818711b72ad17f1d0b19c682a726a7f7620bf41b61563835506f5e0fb63cad7c9bb779a7c8e50a44a87ffb53c6ebaddf60c510dd90761978ecdb2a1a9197109220e65c4aba6cfc73f69e56733a64eceb3a2e1ea060a0f1e61ee40524b028904e4e00a2c4dfbe51eae5c02d0bc11d1923a503e2e06aa911096efd6feb75f17f870b8a201aae68eabf23e2dd27cbcd0562390f6163bc73ef514586a190ed1a0629754b3d4679ad0f70bf018038dbf24716ccd84f3076d457de1955db88217b3b3493f764c2aaec7e3039f14a07f56984af22d807f0 +B = 2a76529bed94bb1174c60d5b8fda44af805645c5d222d68735ac55a2fd4ec313fdfbad2034e308fdd22c2f275199590b3e8362045cc9833005d303367628846b5bc55eaa93de58e919cdf8f5d7caa61b2bdbb03eef5f9c448d2e10375bc7a7f8b0828bf7220b64dc4a302cd3c3c5715ddc01ce4bb2206b7186a0f918a3e56d5b581c02ac5c97ffba587f7cab6bd87bfa765edf1ba77440e67e43b09ce35157e0e031d0f64570b54d09843d45021aef75cdb16c9f184e0e5598bfd2d96a1cdfcd194b7746c84a315afb408e25f1c24369069c1c6f56a4f8dda9c5da77b051bea9ca6682260d12859af944b0e56991576692063a0 +GCD = 4ae7467f979b4891e7088de3f2580e880425f8b12f3897bd77ca06d06ff791085b4db8ac1c7e2caec13253c344c061693b1d09f97a51881eb2e85f9e33deb48794dfcf5a62e19258c2d7f6bcf390505bfa69e85359ea991e21eceee222e2a0604c33132d824616609a167cd93bf2b12c035d51edc5caf4c21230 + +A = -16f4207f86fd2ec8f63291a6f6fd7fa7da587052962071251bd0f8ee6cb32fc07aefa9f100e7c308f5b75fa507b7e4fd4d14e24fd073f3367877e64ce46c56ea65aaf68f74084dc09257f1641350b38d0930f67e4187362cc3b731f77f3ccd60a261c4151a815a8714265f8105506e5e075fb82131bda64d8f46015c98775c4c77c8695d1307528e1e133d1e0e2306f6e7789530f089632e6ff7ece92bf2a553e2d0c3dd45ce4a3ac2e763bbd99830792edd5c2a34305e4e8f889de59cc8d63f3f2ef96eb89b7c9ca4fa7f1267a0f7cb1f39308d17534103e89a403fe8be49ea4a3c46c84252d9a5eec50b4a5bdb6ae927498d63 +B = -6818ebdc18cb717eed0dfcdb81a1207c6f067c32bb4b8b410d0855e1b96e70d22b05be3eb462319419c6dede364bb2dac98c62ce7cc447104a6d3474628ccd2a0439c8c73ed44faf3e9662160cd6591b51dd5b6736f0821ced838200f5a21850852c2392e65a58fc7d40295f46391f48af3b0c0ca04eb0b1d118187391cafa117cc316cef2b9779f3f417151ae7536f4271cd4fa4e74106222c3294beb626c21c00262964f404c409f7226b701f744f301edd2b4d01cf2a3e107285c3bd669766e10fdefdf96cfc1b5335399c9187bc42fec3be01a769c39b5417458ca82878ed875b8a7d21ed4debb71122359e2e452391036e +GCD = 7281aaf204c1ac8866a48ff86eeba8e69b753e17e9b7d372f64ad7dadd2360f06e5a960bace4f8e23d2b2005a6530373a6b8557e885375f2378b1589f57f1ae5b059449dcebcd91c9978169975aaa32664404a52ee05f5e115e073355f7ec5a8aafdd4030a0324c8110c0c48234d6c6a7adef4ce057bfc6c8483 + +A = 29cfd25415fb471a4e60a18c729b804637f53057af3d708735eb3a9a0bebd41d77c158b4c6506899366e6b6183830295ae3851ada7a459c4e171dfa200d83490c396e4cf7f6e8c9d54d6f49a9f6e2eef69c8a9ab8aec8d5fdb17669906af0be4821316101e6dc2480e03ad8e6b8104dd0eeb3faf0bf65609ad103ac43f5d8dbdc460f48199a47073f66e2dd33fd05311fb424a5fd81fc48d4073492b27718927c2fc02b32efd21dd5694490a88f43e7e5f2bd3ba498d53a6395d24ad1121a62f76d23442ef2ea467afaed2038984af9a6dfe1925760e7ddd4a535f1342b60778acde2e317255fee54ff7e88f0b3dae25e8b5f7d0 +B = 18c5f8cb81371d749cd85a869bfc4b6da1fd988e629adf8b9f9e3ec77150f7f8e35b9aebaf5767e1f7802fd323e73e86178445fb3101966248e0d45607c251c448bbc3b0d5aaec5c687bb185ee1c09819671f0d4c449409f351483e94d757e563c66c1940529f982c5cd180992d10a8318f7f54b0019c0405f57842726f0bcdd9497d4d68632664ab7ccd44eee532b3662e0fccca27224bfe222e8ea37d3d0fb1029380ea67f67c26a5c133afe7a5581e3705fc24b4408817ea455dcf0549f947052d91c441b454dcb25691facec66f8e3a886041b8a932eb18792bdc1b190ff695a1eb2e2400265472427854656468bfa121e64 +GCD = 1165812c9b00faa32967fc6a35674c8410c110cf24eec4a02ab4f6e44e625f4f2c30170e9e111040595d7429fef35349cc7d7ac47c4d22aa636ffbf39587cdb6a5db80bfda515b76e16ea887d8f51ef5106f2b46341b89bcc236f0cd4f6a7f2413d95115cd884ab7c1f57cedea01449e72841fbc7c3a07cbe797c + +A = -97d2dc5ee51fc2a949d83a6caf4ee84ece160a0ca368c6f5c01817d0e5b9e512fada2e4969649293b90106c4ca44d7d9f729ca1044560337ec7d597f22df82b911ddab0943b7d3546857637279211b748d360f7df78831de0948b3eaa7858e0d340d3c88493e684b2674a07212e33568806aef9ad69a9779212dee3951a9120325ec8d94d599c62f307b352e8ab0a21028d7030696968850ef0ac4f6632af0e5743a9a9bf3442a2af053b2ac7a2f7dac171a2bb355d060ab4b71d5358ac35fea5bfde10bdbd3d41a205e2dbb735e9ef6619b941fa71732e041439668b53746fe5f37cbe66761a5464f1c832bca9c1e18f4b8a64f +B = 169dc83c1a986a0e8f03dfbab56018e50c21c99fd9fb3c3d2e550eaa214bbdf49646c880453b7b24f87033250ab20438d2e570e2a787a2b00800f71f1bc7f399964a7a64d5f178da59c1e6c2533f6c4968145886a06b9296f6a93335adbd3797322433cb146eb04407e0a36c56e690f1da5ede26410cb50c4e469e816ae7dc12f41511f892b4327450345ab74f9755ef5a1182f89a9074448ece46978c5c12fe61a4022d1b352ed4c768f2304ea5b5622e5c31bb9ed7aabc972c560a333a86ba41c8fa803787ee8085c4585d1346c6165a151a96a8b2d9502d82dccc32a5aa8c472b8d91a9486457f48665f59f88a8464f90e7481 +GCD = 1eeaa67dc52b75fd2ebf04310e25e1cb51f8218d61310fe40b51f5ec981d9605ef0a558a5912e45a8f1204f5e9c7cb9445527fb8e975426ccf7e73495deb00a02a7915fb98cf385b4b08d3d0a50212321733a8088d5635ba2f625121538316bdd0d60690b5eab3936f55e41ab154ddc7a55fb845e4545bed59391 + +A = 56030780c03be379cc6a1b64cc45b954f36eeb201f74c3f7b23e42c68fcb4bc030dbc28682ea56f3f8c69cdbcd8c14b12d12253aad0d26a713cedea590f8cc9178790160b80e4703736a8e0b9e84364ad5dad25b4630c33fe60ea966d65af4aa205c221e6aa4a246599528f14200cfb67043d808bdea60001c7175870761ac95088d591422e7a8f235c501aca8d4e88d5a0cc380d7915cc8e5dad2b296caeb2a34c7107f5910addb86df6322c1acd5826edae92698aa84e54184891a528e28d60e4809c336382ef88d0776791c8a5c1c5b7a8aaf77394d34c3d6b29a7be52810b42d17139100f727bf9e2228d358386b177034740 +B = 318b1c18bb131d73b2f505e2f223667abaa2bdee0d8197f8ce458efaf74b470a1cf0cf30b052d9e71ea10e2ce97b93705b7225046142e99e0597e7d7002f296777f37f08b1354ccbdf191f60028ae3f5b833a5eb6373bfd4fe6ddad73d712ec95a87278095f2f35ef7e9fa46e379921b05db69f34474bfe03d834db03639678a271a1437e708f887630315595f036b2ea3613bc1a2fc79685a84b7bea5f6812591c037243f2946bc3b48920cf5bcb1b967eab8b0bfd1f66cecd7c02ff9f09b906f4c05f727e940f7efe79d7824d78d262093a8bdc957cb73c4317a74fa951c023f8c9100b9f8472af46d15bf0d787977f1f3f68e0 +GCD = 7fdff20a53bae9756728abe67d783fdddf05acd71c9e3d51d4d0dd492de950fac634f8f7de635539eb9d2e77af2526cf2f09580e568fc4d7acb5a306c09caeeb0243b96f77998c92458b757b15d17473bdf3e90dff7194a3459c6eb7dc5ec075963b21da313bc0b0abe425751d49f803fe9aa86deddc4f6909c20 + +A = d94cd11d2a93d439eb826087f195aaca42b0b9457becf1c7d648d0f27d11d5f3e64c93be955d129e7b36afde711ab97b9a5f3a4b209bac91c054e6bfd11470b1e8454ebd6090dbbc113d2f5a8c983272ce4c1b93c4f20c161cda14113ef2ef3cab9e1520dbb1894d3c39640e312ea04e1e3c622b9a29dcd0f2f0d42286cea76e53f22c464f39a7dfeea2898b9fb75152032897250e5fcd85722eb8690e1302e5b7fb475c741bbf2a0ea6c57cc2cb61bec83313a2698511a209cb69f0c0cf590806e15bd55e41cd7affca36cd2d1a3f99eda1b8e94eed96b4b18809ff98705be00c900342418b2d1f60fb0bbe7d10f1937897f30b2 +B = f995dd7d4cc178649ab3a418a536589feeb28406aa5e3d96e4ce9df5b392094737d5f8637b19d9946b1de540b6526b52b5980012910883c046d0a4be56c9fc4943a7249617bb45ff11bae3a497fe3b0de10f9ccb635af35fa21b0e00bc778a161e07cd8d552d71b6fd6f2678833bd593dffe104a00dcb377c133b115ebe2477a128d30f4d07ea73c541c656aafbf6d4442eef998cd55fc6b1f457412634a365906ed988483aa9ab684cbd4589a5f7616d84b4942e0f6ebeb9ba4e2807f99a691c370f43bb6adbfdbee4d5d474b9577fbc8b46791a115b0f27628997ef225fd26838bb9ee872605845e23b08c2bb41879c04a61794 +GCD = 10da41d390027bed1661f01e09d4d8b3db2bac9993a531d5756c999cc07df488c3cf3772dd2287a56eb5c6865e56bec0ed991749a4ed50d16d6d4d741c506f569308fc2a3c7ddeb908889e6c92e78d32cae7256ce49cd6d19e4b81aa5132a2f061d6ae9bc44750b279a5361a4dfadc064384f8f4c4975ed7499c406 + +A = -3df39100c5b407c55d5ff7b9c9c916fa195c722bb94e062395cf666c36acacb0b7af94d8e41645b0a89fb25e0f669ea70416d91b5c5e7ffa7553167c23515e0ad57ecd4a7bd109cbde876e01d387dc4980e52d370f5e63828f9a002b7762b49342420d9f82a86dff69d90aea52a08bc3e458be2f25719bd41bcc6ac959075687f8a2b4242d3f890c3aab83f1fb3675e5041fa90e202d1f7d38dd296ced17ded8812e0610884954d23acabb83e7e10a66f482230d3b1d2d5499239bbf6f5b79d589aa289f2b608b6db3caa8a527838b58c67648dda45645d550ba7198b8107effc92b7ff7a73ecc6efe4f4e66f803c9f8ba8ebbe2af +B = -20cd74c5bf7860fe7649ca029fd197af9ee0415850870f9be6d8498d4651ed432534681fef24e93f8d8dcc10eca8317214a3920fbe1a0c96d0f9bfc5cffca9c8ea00a33403bba55e40c5bc2d38392adc19f36d69af26d9ff7f1a0fab8c0fbf4b9c72116aa2e5d581a0b719db3efa14925ecd3d5b3c626f266e022e181ab968a84012aecccd64eb8c0f46b4af50f0d2f2305d4c3887ceec9cdb4e6c40c48995cd10b49a9e6eb2bf57a7e830f22c01d00e0a7c4b75074cfd7867f8af858c791990f897111638fb50102bd6065c403559d46dc7f5214d71a86f0160617cbbd82a81c1f0ab84896d62e2c95733c3e58042b82a439fb4cd +GCD = 96aae5ab17bf62e9806df66b53b142c93d7758cffe62d830ab75ec3b606f25bee4238acb6bb318a734b838286d8595d11d84acdd91e3d139e132e38622bb69880ce2a5679d9cd5aaee8f7c0f27532e7689cc9e283bf93beb95b3177643204b81b76a4c03f2e3ff1798e5f8ac9716868dfc4b728b3a139fcc26535 + +A = 1598fefb6de3ea095576e4bb9c5aa21581c5cbd07977be6c8bb11f5d090553d88e7d9e1dfa0cd2605a4ec04344e21aad6398d8ffaa243ac47d18b3bfdc39aa1bcc62919516c285f4c270025a38c65916af539e2e9f85cadd5bddb356b03c450d70c32528ad449dcc42ff2bf2d3269d6d2ab3f9792af69ecd8161119dfb37e53040eb1f4ef04b85b478db0547c63fe6a12db86973671e36a728d17e7efaee5add9d5bce35270fd060ebbfb876f2d75559b327e9adf6142d74eadf3c106d4dc9ac9d2bfae3c65a6833a7728cf30456b570ae9e4232569a4788574a5546ce0174610a2ad2fa739b6cc8d531a642af15a6852398db70c9 +B = 1bb8c6c15ca26e0c58844b44bcaf8eafc0aca6b0b324d8a33e24fc61f02165c9f642eefe05ffe2377af7935551520fc0ad1a75cce57417866a753c13c726676662c193066e2b012097a781a5e41554f4bc260317f378eb6336b5960b62fe66e6cd47dac4092ef0469f62f43b2f6ee1989b4e63f035763cbd4fbee4b490f1540813226c8ee423b40a028626444ff9c0417faa57029c61795d1f080fe81b40532ec10de84377a786475be0c025e1b4754cd59d847e4b1e535cb22728239039b5ca3fde90d0f30fb2606503d19b24a513a2d653b05f2af9224c51fd2666dded815e1d8432b7d2093398156941155a8b3a737230aafa683 +GCD = 58344ae83d285583bca65018029c3d7f5aa0f867d4bd4c00438dc9d20124f7fa23e1e67c992a071346a60c4c89d1c499e622a2dfd7a40c09eaf0d7d0a452e85d5c177ddb312e55f91eccc6e6c332d6cfba9b7f39f4c13efceebd79c3edc58faff5c7f4d891f5c5b9a0977903406c9ab157af2d2ab9a2a450dd5b9f + +A = 2ea36bd4f02e5b8a759792a825a953a1c1d05e3b436c3f1dc39fe7da42098d501cd25ecca3f383e167c33b76bd390d6d91208b05b856cf4364adcf020aabafb8db943a077b74f152cd06c2a6aed920063fdb6fb9a5ff7f66ecec98d4e4d2e6e2d36f22caa968f61dc2b13a0912ca4c652ec559a14f19f47e49d3babea9a45e1f8df10d5f13dabc3237caf9317b00ed3a9841d91ee2692d034e39c05f8ba3283de54e580e6df70b3c89c58c61f994b483a8256fd6d9d66a8ed249f461712fed7bda784ddd412d04129fb98a9b0fdbc0381c0cf28648aa77dd7a17d6c5e1bf7e5c06e826c79de52affcdba957b3b9bfc0addc4d2de1a8 +B = 1859c6b6891744e23f0c893d62d88564026f092a1cf9e766575e127879fee0f2b3b3ce67d2e6eed4b10555dbd023d658f4ce94a0fff0c38dbb80fa9d24636b04abda0450352373d0590dfc13cb2bc49bfc25a6b6cdc3b23b8c93b8ea1e7035b493465bf95f02f62d0d35969432654a568320f68b05ae713efd6706d943ef548b50ab16891f07ae22615972ce2f6d4f516b6b41271fa693e7cf0250a402857f6cbce5dd31fd3d7630c7f908c7c0b806120bcd0d2c7ee7cebdf5aca552fc23d9a3da054c7d1a29bbfce48f15c64994fbc452b63e1d2a8a88cbd018bec033ba74c700a78b6d5e887f62b6e0ac56c97c391e140152bcb40 +GCD = 31274677bdcf02dfeff976b2e1d78428c48f7ee3c3cb1a51463ffa6e7272d50ebda4bc24c22166093389b68bf81aa8ca33077aa9bbb784dadc0a009edf35f29a3ea9e4533f011d612edc2c542bc0eeaa1c0ecfb979b68d2b4f0f11faf6cbe47e507a5e27303e9dea8fb446567051c8fc7ec784cef2a44386525f98 + +A = 10c6b8118628c5e16acfb4c679d1ef7f8b1a3d9150975da2232e887fe4f15ebf2facd5a33a6e80a899069ad96025578cdffdd463df0b88051125001b70d63595d7595deec99ff29c2093aa5dcbc0f82924381ddc8e626891ae05803180a64afbbd2e50604c95d6ca42e31c9f4709b036cd5fa55fba0375e8b408a0273896ad00661b8d104f03faa7fbbc76d440d4f04cca302bbcc91a1144133e083fca1481b5362003edf44f28c9571d51d23b845db014f12a2f400d87a98f5e35fec42510920960a9f9006eecd1e9209bf3acf8936d09ba0425023242ce1e79a3a98c9337f4bb4b526f65a61903afc71a6de91a971045c72d4c55d0 +B = 1082c0641174a2a16e4997fba9398bc9b384a2f748d6623110ec42f0df582fe9f391198b4db07b7caae5ffcde200572d85a962bd3f91db6fc318279e16d4e863039d98fb3efc4088b9890639448c94230571558fa1cee119aeed99a5c1b0af1bdb4683512e40b93df0cb0ee42ef873976a6769e21984f67eba44b8403550e7a4f69a702cbbbeb23673beda4d71f4105766fb148f29770ae372deeb5eec480a6f7bd705a71028f0bfe1dd2b3131a0a3a6d79876d642eb57461c1637ad3ac82c83fef2c70ef9cf0e0e7f188faf93b239cc9af2f2916c9da3802e1a02693f940f9251386f3231174db519cdfe74ec386f1df4d2f03ae518 +GCD = 66bb753d8c7cf7582527c0578ee1dc0082301dd423651f8f6e258d37562e88cb0b7ec75aca3ea1dcc95397303fded4ffee648be4d3edc749530a4b30934bc44d45970d84685b49949f16b871546bb6c2c3653f7ba0786691b64c4e90ea7f3f5215d7003654646f622a28d794485564f813c6e68f9227f93ba43ea8 + +A = 620604644f880d374995edccddeece0096be15aa99a6299f48a811eda41d6550d820f23aac58f576f399fdcfc2baff7c2be3a0efcedb4bce05e15a833355507be9fb6046ed475acb5ad43be7541371868ab5356ca5b250de290c21f2cc35e1b518d67f53af96221ed450e06eea7e684df31629406e29ad9263758b3ffb7edb41ba0356f0db13b7fbf2b4e0bfb08a70bdf2c133e73fbbe7026132a6aab1ff87b7bebc3ee7b5ebef294aa65928a157e971267bed0d9da98d2bb530bbc10e759fa28512a8ffcf603a09b4406ac1d28b3198d693940acd463a03726122e2e65534592c78fb80ab7e29ed74173ca970114a60a71f57ef8d1c +B = -611ee44ba8bcb8207f3519d53c8333d60d0d526f7c5921895431dd0fcd9be0c7e11ac6d69dce8492f9c22b3b98cdf14dd4571b751412dd915e3c6ab7e18867ea88b70f6c660e63490b809d16d945203e20b09947ae189a3a75f92954f5dec36c3415403c56dde6bba648d9bbe646614b9ce6afb2c1b47265e4b260b64beeb9443df63892fef3a28a8174f3a2b15c158173a05c2a296b8dfcdef4707bca0047f330e7dfd51bd14a69680f2c95505caff1c2847e45b4c3641b0979a1f3325bac6dbc8181a63c94cc3cffa8762de46a2f4546949ea7349f8fcff15650f0f5fc7a710112808143fe70651053f11b119ef4af4780c678b376 +GCD = ef1d091fc6959b2850da342e0d3b20a0ab96b7e1d651d2d4904c01d4c706da1f271893a718bdd2d15b6e282313e1bfd3fdb4a3241ce427ff849eaa1148669ac719fba88c92245936c61205949a7d19c09642e7ab74c9e887d37e8892d172b584dfdcc280e636096190d27212585aa2741548d4a0fb5f2c1daf3962 + +A = 14996de930ca62e6cc5c6d9fd60cb02712416170fd95bead3a84a2ea2e953ea210f41038800c1b532d9901b2cdeb5a7f4867d6b1e3b5f269d1d300ad4f637162e62da04cbb6c286ce58c9dd3a85acc43d68827510aa45f9349227e2ffbe29950cc0e9e41f0d9a46719e691f605694b8a8c93a89731bfd9264e5f95124ce740c5e6d1fc0d66b0b2c8c5ed37244fd901e35a21c18e9ea2ed052b72129a344dedae884d9154c8702138a16575bd0c84b5068fb3252fc0654179387d3a5d6e11beb1579f52ade7bb99ee29d45cac6a3b57091c3570aabe58538afc4e50f27c614f78ebf25f965ac0b2bdbceea3c8e6611fe98a52cb0ac672c +B = d374d1db5c5a34e428141401ceadb25cfbd583e15a8f1d8c679d3fde17548aa9350010f01c4f21db0aa29c8d7754f71dc315b4af4fa8cee3a7fb2eb0b6e671dceb3f79174f71f5eb5c5dbacfd13d1cc59d95a22abaff6a83a4086e1bc526c774dae63b05d18fc7acc7ea38c36c269f75cdd01c9d4fb5fec8063d80a1c83f0ab47269e482c3821dd38576f79d5c4ea98abb52291878edb71f922c583d194a399658127908150116670db363dd6ab8d46bc1d369c498e6c88d20ab17c88cba7f1b60c4e6a746294fae41a4432490cbc2d461c2827159de96258978db6196a6f6eec25dd5ebd9fd4bc14d300ce5245bc9b43b8e44fd197d +GCD = 15faad650de43b7b5846090c058e476891f8a54fbcbd2678d0daa7444c3f80e1e8e30d6796bcc805b64417b8ad7ee9ec7111d1cbb0be221004b2d900464b5d4e141a4724beaf99287f075d12cce0b669feaa6849918788a88a5e72ff2b63aa98c69469db513539e5bdbfae63ef26e24566e9d079546994783cea659 + +A = 12b8c832937b80cf0dcf917736905c35e779f5a8e30ded922d7fd15c0b3c29ddfb3ac7bd462cd0773f063d0ad3ad4071242e3c38ddc0586de5c352397f235c85501c649afc9eeb559a1263dd9c53cbf70af9bda593162dd42cbbbd172202f05d02bfc5e7d36f6f3b4a7a5abf46b9f338125a95cc966ec461837c8e2884c2cd7fe25c311d84324a4f811d5f99403b92a8cd56dbe5d64f94372f224419d864b78f4fe0527bc74fcf2ef6f1fa073f49e4123e4920ec2fa8439d8b63bda06e075d3a21c0d300ff365190e428725f9c1521736652df0c2243b3103d3ac3be94c1d89b2a8d8a7c212863fc709ea0ec24f67755ddbafea7814ec +B = 46db9110246dfdd0b797c12445fff0d56a0630dc0daf5d5fee918b5eb115b944665bda3569a9bf4a1619e5b8f29683bead704836db96b5d599429a1f615e205a7e8fc60156cdfcea88e2ff2e9e9953dbbf8c920d860da619ccffc364c6dfd75ace87bbc2c4f819f5d164336c3bf9e75223c021cc2bd10a82bcfc44e8d55fd5cc6c0c6de6b5026e6efe187f83376f9771020b0d46f68b8b9ce5ba7df42389a05239fc62f5f207bb0246a4d899fc6011c69b3381f65d776b89b4dfa4e0a821c8eac5605bc7b4b522b72d6e1500560e8ca63b1a0d5035d4333b6e9f13394e9d6b9cdfe5e0b2a300e47570e7e6bcb98ef4028c8e2c00a78d9 +GCD = 29e6181842b41588d1bc28d9f5ad68e08bda98544926c98b3a8a12ee5139401d6bcf9edaf8b0dda1f58f4da4c987b2e39bbb2a84c02af78c3c6e62debf76cc5f459e102882941f1f921dd043e6ddf6d89ab4cad742325746c4e4d3a1a6b800090e294a8659b49b78edf598035b02351af351c3dd77596073ab84d31 + +A = 427fcbbb101796dd6c979821197254a4b595f54f08f93bac183498ebc5536ee8917cb712d2b00648c4aa79f5a05e1680e42e3d8d0bda711c8373d11151845af88b0a5cab9c363a5502b59808570b94398ce0d8ec3e15df6330a3cb3752704774e70838af0ed7e925b50b5bfff0aeb26b6635e1c01ccf42bd7938a23072c9ae41a7357df6aa8d582824fe9812fe824023a148904005b7eb5ad26a7bc6e7ce235c85cc71730ddedf3a9982476609fb206e32449c7d081af1df8b918667d327215586161409b85cf662f374da6778f5350c21c3892f67d5f7dc432d97ecd2db44e4522a051feb3f26adf19e2d781e7755c0224a38b53921d +B = -79a88c16df3d5580c9ea20533c5457884cf17f8cc4319081b563bac995adecafeb446910da9b6d3da2563be5684a0052117e904adfe2d414dcd542fe75ceeaec5fae62df29b566094525c9214adfa3e07afffd42fc8bcbcaa8ba7773823a733a1fc3110d1d34ba4ae8da8f145f48e0b1c43ec4c45d168ad760c125b937d8bf75c7e9a6e30d781e1eb6b68047406d65c18a9c351c43f46c06e66565b27bc2c8a3321faee9444dad5ab79430e5fc8f345186a8b741b70b041d320a10ea6dea29e27b37c532123c3b8a04aa2977b08ec73590c7ea6e40bc89a0f34184c9b5414eaa60128e518aaf0b992a3d02af23d44506f90a77fec3323 +GCD = 512893917572477a865e5604d127d3e6c85d65761e2483d4b0a03cb890c745d1743645fed873890e8b3d1be655965e01cf83bcf1335c3d8b4e47e34bd514f1142416a6e44cc4f9d76d2d1e95cfe8d6cd76b01575c38e33d475b0996dd236e182d0292c60d401b88d116fbcf9bfbb467cc4e317b7639b6a659e28a55 + +A = 16cf56a31493c21efcbd611e77f0fbceb65bdaf00220a6ba5ed99bbbc354756081a017473f2dbf8419166e8276260361fb9ac79343ccdfaf52142f27069f7566abce21c95fe06fc72c389f2d57f3f14aad0cd6e21f732428b5f46e2415345c2502c5229887285a96c1bf50c8dde04a9ff552a8542b72d16d9ca76ff6dd56b595a7a91db6c008337658d817191ed248f8fe221268ada212706b1501ade8a73626ca3b8c3db4460ffa625d6214f5490a62a9646e7693f651bf8c2c347fcb6c1975ffca9224354371095e690e32ea159ea7784a0c44953a9c3852dc18178ce48e306f2e77ed2235374cd19e62c0be21509ce2d6fd774977b0 +B = -60e7856c34622eb4aff6d8688873bf32cdf8893a831ddf7a0b411cf466f373deb8dcccd7effd3a955d2997de249d65ee9141bab3a0e17a05d69e9f8f6756820451dc0430241c133fecad26e22762c26b658c51d8c51f122bcfdd3ef83c2145bdf1c35fc588e6a06e0749c9da7a158f6cf18618c211cfca118e5d3233055ca294a9364b30ebd2a9d76fe7bcaede8c9946fb1bfc24557d1bd2720d60db0ede7f8dadba1c0d5eebe74f7d92078aa890f96bacddc11cfdd02d3a1db2d4188a1c3ecf4c20084f9da1dc95fd06b67cf1be41e0a02ca966d7c6f30f4cfcd81a391b8f94f22ba731f155762d23e5f17f14849c0730d9d82ddc8436 +GCD = ec994cabd5fd90689244aa42eb5443040077ac411d9cb3c41f0fae8eab242130bf77fac3333eec704be32b4592cd5336bb102a8defad40374783c8362ee55c7d93f38948fb0b378181a803053ed7fb96be3f7083c238b3571f90d0c7da9457e6ec84a2ce52cb05f071d6bc904c611075e75154eaec134715af149a6 + +A = -c76821cb56fa19feec6de64c6d73da824bb9e93fe695985680ec3190d21b6cc79d29f9a6d0ffeb967d55ac43a501b0cfcbb53cc060cadc0fa5193a1a898a12b7b8a1bc3e14beabe4a8a2b9278b74e9484474c9b9652f8ac7a441610291f9f88570c40c5035fdd5191f4ae4690c47064b0e237871e22495201906e7124613b87ae3cf64c38b2955fbb38ed93355a14def279ff27fb6cd80da85e68c60da9294c863227e6e072e53a1c650efc8862221d7179e2863bc25c3941b82c90809bd47fa25e2764c2afbf03f86b8a2f6aeb197063c18db559e5715e744a1bfe7a54a66d26b613bb6f37f5f0bf5275319c4fe3e6d58bd19c793977d +B = -1ecbd66c42be57dfa52acd2ca259595ce9d601616c429940a4a7189909b0d63d9de2f5e60eac9693340b7911ba567d6a3fc2f3f937df0d883b906df4057f6577311a8d3664262eaf9e59968b873edb4387c3c7c6b60db6dde344ab2d128b9a4da735a07d4540961a113cab9e1cfc437a206d8f2e14992df6fb79f3cbfe5b60f3088584e73772d6e3618ed6a3bc4ab5910e5fee0cd9d1b2c4b2e3b73e5707e44b4eebc8fb27b9ee136c7d9aa00604317808784ff15a0ccc6759078aaeab09454ab9a3896061687c21be71ff3671fdb17df9c9834bf5c63674e6f09ebb8663803c13bbdc80bafef7b6c2c5b3bf5055b96632ce33d720a7667 +GCD = 1fb005228170361e8b951782c67fe3acf0654ead7c6597029b1298c7d782c06a41aa2d71cfb3cac6c580d801deb7aabf90d85e497ccf72aa373678eaba3865c798fc3da6bb0e9e8ba741ebc3c980c4cb1335cc1d83b5dd33b0eb4a91ca3aec6f33681569b7c12149fcdb3b16e8c8017c2cb8c711a1d96d76faf4deb3 + +A = 437a2c2fa137da861036c4d9c50d5fe39be5dc00a6f8cc0e4a0b6707c9c830b6ff19b6fb614caf965b84619185ad423194d4c046637906a2903b8d81f8a8e85bc3d8e98638b4ac9f670acedb49d2a8c412303e91dd853d17ed570df7e4de88a929389d92790d6911b042867ded73273040a4d0fa78dd83baa8b34eb24983e948494432695924761df44df8fd26c05144718b90560927233f118414cd56930d598b9b242a4328df63156e07194a703908d6743f0d0fd37e5f35a0dc01cb3f7593bf62afbf0e59735f09f57ab3023ded4c7a76cc6af51956efad253dd7b41a96613955fe02840e48b8fb8b17d0f35af633d6c170f4f9b6eef +B = -51ce55b7c836028118d2c8af455c7708f8a87a5e8c5a5816da246120efb0b890205e128c98151c02910379ce36bbbc71f49a7804b1e588b3a50654ba85751949057fdef186b1c9091dae02efc6ead2cfa758232404f0daf496a1e9c454ae3f99db3fdccd067a12a654bfcf66005509310efa7f7eede9222218a7c2ce884d2e6d268e02cb466b3b1d8cde94da8e844869fdf8188e37dc5ff633ec45421b424faefaccb85b5f766b6eff516711e1f2824c257651bdf5c3faebc25daa1dfbb6030d1b8b6253959630f9bc5c83d2bfae6efcbf386c008e1f63b137b3651a0a954835980ad572a91b96472d20a6f554a67965e62ea2427d26891 +GCD = 3301281f6cd418783dd371f68c4e896dbb8ac070b44bea3a37297d613a2541c3aa72b80d23ca0dc747f65679014874b66bca6fbd8ade940b744442db95aff5b714a1f8b9b3202c16b43532dde77397b4aeff6229fa5664abc42fd5b96386f41adf41000a3b261bb62139b4d603257d1141bab7e43d55d57929ae2bbd + +A = -e2f3b6f0f996be8c48baccf202068b8b351ca086da7b77339401a937c58ef7f2397d4a5dbaa3246ffbb6a39caf8af14801a2b2096fbcdcc9ce7e7cbfbac5b72086c7c8474398d32c1e26fef5cb30d5085be03cdc0936e99fc8d65c992bb29d9a3b40363610d6aa37c1a6d9cf527de33333fffe9ec4377b54f451477837de6f832c3a2f9f714dacaf7ffb753f2056af4ac45f4f393a8efbff6a051e37d7b5b8c96e5c29dcf707f91a600279b577458e77eae16974c08f605cdeae415f33e4ec04dbf73c806f38d371513a0919cd86e3ab55fbd000a266ff556177d4a8682bc7b9ba0d8be4b56e0074c4c4d984d53105a3a23e216c4a625b1 +B = -56af57e0b2c7c713508f859342dbbf56c25696c492a9fafea04f6e89f26cce17f139861c5c0179fed39531647eb9feaf2040d4745226f387d2bdd913b7e6246417f7893618bc52daf2ffa9cbad83a4756501a0af3c3ff287013ed540733be09f4e2b401d610a913f5539dfd5a291d04bba1e83e5e4ce4d2cbb5e358f5e0312a58ec5da4f43431aa26e77d572daf5ebad6b619a7e468511d57782eed5e4c4880cbb29476c679db0d5f2a2c4eed35b0408c6b78eb1a337a603ace7d16cf0c30a6862526b47bf44ec45277bac7baf1bd85c642c08a851c2c15a271e3e14c78b2a97ee0b431494701dbb31cba8804dd198382e0d26d55d00910 +GCD = 2e61134555a6cfac5c288ad9a47377b50937eaee240aeb9de35422c3188d65f90667bf056fcf742d3c92e2b7c9fdc71b0de465712bba3229d8419d559da2a1a7835ac27d25f4d61f16c1902f2b1de60de63d08afdea9ed959503079e994a04a65a85b66b51f085d9cc4839f1232748d6881823da710e1e1ae8cca0009 + +A = 3b7c2d16177b27e39430efd11ee929fc2710c967fe5dfd5a6f7f8176734fcc6209ed64d551b2c31be45b16540d11d2bf56b75d0151da5ec2e1299c9cb64558cdf62e158cddc57a53de6a5afe95e528bfc129d16b426a20d48dfbd3c8c2d0e5c6469b0de58f6b9cf56f1c6016a7a4f8f0f6c086ad2d0491ac49bb93d24f64de4fd9a024fa2ff09b9a22b9c18723e118c1db1076e270a8d38be2469a580e8d92781e51ddc40c8f420a64a169b6951f38000be1344d5decf59a0033bf55b85ef695d77aedfec9cd6abfb3f7872b73dd5bf98e817677ee610a673ce0b3936b331bef4854fb801e4fa702d929f9033a0869901abb80200bdb01d0 +B = 476e3ab9dc271c9f5ac231e6f652417cc0d188fb1e6fefee3ec18d13d86bf880be0c6ad97b01d595da187bb412f320e07b7ab385558128936c014c8f9825b0d6157a340f2bb02039fb09cdb348af58adb9b117d9c2cdc36bd409e514bd1a36b2f98765883b85decfd123c86bdbf1360f76cd8dd78d15c9bf026b3f85b19f5ab6e641216f42ccdac2043c15c299ae28f338581b3d13310b5542f3776ed581292568a90dd3760b29aa03fbc90026c8129b5370922347442a9d4558651856d3af6737986cc18c04c6ef70c75826c20f6319ee6e8d24ee14177cc92046525e2659221d3c8eda16a02c1c5a83cdeb57e57b0485328a06128a3dc +GCD = 86da1a48125bd9b5ff7384207ee9a3be82373e991581e003cebe55f2f3373cc880e17b3c0976ba7e8f6e52df44e712bbcb28a4c5a70950c799acf61b9f1267e13227813a64064f9dc7ade122fead8232019c1f2c4c7cc8858db581353b8a8541cc193679c622b7e73e63caec0b6ea5c4e0b8d25fa5550fe585565204 + +A = -5c233d0847d3f2c90b25ba955d6bc532374a49294198bb81928fe20fcec48d09998a0cf303e7654005bf827671fbba7a870e722c3a3cb7f6500071d4312030249930536654901bda17d57e87d0e66633bdd7e81b52d57c00c1e716ba7e797b80d42ca68af1a70690259d27e97bad149dc1351abe8950693d53fab7b5e249a832e2fbed627f39bfe30397c964ea6514d0553aa015b996a9c8f61e2d72157e6ee6d41e321a226aabf16ff4cf18b82e844525fc93d6258fd33add533c20890ee81a0de4969dd87497272f78b56bceb7679186e777bbcbcf66864e6672cd43e7f29bde658f134ed8a33540f824b1656231a6634a011cf321e38d +B = 106687a163800fbf94973fadd9dc06a81616f086a26adeea327a31e6b6afcf9a7225d7f2b9a90d839498681bfc857914c972bb1cfba240f7f09bc756174dcdce83abb32862624162a7d28c0b5a0eea6185ee8cf36f72115ec97f503da98aa493c7741cd96ed023b03ea765dade214a2e4614c56afef4513c6e0f2d29895e1bf79c34a99ef7a3aaf5f298b55fd4a194289d92541ede8803576847a9fa42cd183e33589e02bc9b6840efc7825b876cc39017e582af93ee5017bc1e8699141bc4fbfbedbf45b015d58825aba17a8205efc4e21e9987bc0844018ff82e4e17a83bac3e4685dc1e6dcd8eb220a70149ca7a6b6a94c81861726ab3d +GCD = eec8d0379c1d4dc604252b182b510650e291b7ea7d54cb9af8156284792b9a6cdb9761769935b50d525c162c1440d0fdc34d78cb6d08c069f17eaac3f03d86071cfb61b297acbecb2265f2f24394f51dc50fb8db083b129ce6e61498197745e12e4f23f2b11b22e3880183e3a511e9d5ee3e4767f0aa6e193e4cf23d5 + +A = 24b297b90586ce1632c35c0bd59f54bfe141f1490922732946cdb0c4d6dfadcdfdf04e59dac3382793eb43ae8870d16871778b7de20a6b15e491665d9b82d96418b124af95b3cb3b56c96d9723e247f46aebf779cdf968e9f070af14d67c8e8b407d1b32e70dce00f60cbb4e2090cc1c7253f1dc25376575d83d0d491d3a057a5d85914481ac1125542863c557732624839961c8bc8c7fc9009399023a91daad0432af4ac11a6e6c6f401d464422af00d41818393d9fdfbc963e000bb7a18ea285b93e14c74d5438bd364d5491fe340d58b39b1ccc22491439c049cd7553406f055c8e5a7a9026a60287b3a60b6b6acab9a6f50671d6f3153 +B = -2bf37113fb3ccae3ab5b8be2493520bc293c1971ceecabeb9e2ff0dcc7c7d4ce773729cfcf55b29410cd1fb73e8a3394dc6f5c1d34c54f3c9a33014e0295b669dbca794914b556fc91ee57f92c8e0c13ab69ee4b763c55f2fbfaa434075a6c9e7d8137dd4ce7c85ddd016e0cc6e6eaaa1ba381adb1deb77343fde7a43d0c86eb6f6dad0cd5b891dca5464c75528563a6db9e32415d5c9c667941cb3faf8c72c42c3a45d81a469b66b0b855d4407734e7f0b4fb1a00299e6c874f1fc4b42677c703fd7ac5541e5cf82efc3d2d71e890a20cc361470a23dd1179676a34642bc0fa4fc181171c704c31464f76802fcd009e34a3b2e22e907b98e +GCD = 366296f2cbf8640863130c575f97d7dfe071aa717e2255c3472720eb1e24ec3771e5f91e5c9042abd43e1c885b520767e8ea931892b42a24623a93ecac3daff055c12b3edbc70126110919ab3a89e1962080a1deb242c4bb37f981e14bb0b45dc3b4476021fa6632621f095391dd9e62a86bca19f7b3f64f8fbc2aa4b + +A = d8e8e8200b8e634171208e8562d1a5e1fd7a3bcce95cf4ef276671dab8ddc3a1d620fc5bd2b6f62a4847d7b003fe5bbc9dc206c932ee7d156798e66c18418cd28020e9fc6887d22d1dc4003eed7b281045e083fab336bf85c79db030b8c0146a03832860f49abdf1b56ca4f2a4aced560feb7a582d1950aecdae54e4d3842404a10b90887b46396fe4976d0354c18060c1de5e93c7e8eb112828af35b844a5fb17410852b6071930633caa96c8f5a9c3c0e5f24964d43067b3652fb7fbd49c74fcde261334f3f18741cbb265842d21b5532d79bb2e21b954575a7609bb70fe3cfec2da53c7532cc7691d0876226cd4e2c3c33c3ab67f1ea00 +B = -174f98ea12d342c28988e3b6cd60555172f1b19b402ceb2f2b3fc03f8c0d310df5543dd4f7ca3fc19a4cab9de9f37d79a01cc88b09e0fd3587947397c53c1c92062323ac5d56b27da4a979f56786bd0954e0b79728b2b0c2c3458311efe8ecf54f4d354fb295a83994106a4f5343a2626681685fef69d8f3d81b06072a76dea2ec650342b67a6bf17e73fda8ed233662ce298f257e01116d94a37edc0d66b26869478888195c379fcdab50ef63f2d372e5fff7c36ea41eb95fbd8956b4a4a7c60e254ce2b1f86bbcd7e9cca7c894c5fe1d6a032b94f4cd2f8fe6b82e1b98971c741da9115a9374be711a91b47257f0a79f6405ec1e62911b80 +GCD = 6e023075243f3f8174f9884b05b0067f90c38ed87e45fc1d69f1a68b33c83ff47ec9af956121c2579332037721570c5e7d5e59261b9fcf9ef22b63965662614e0b47bca6a242b94030f291e53c8b7210b5202fa126dabf5fd14529e53600ade873057c82ceffd2d09e0081bcf56cac97070267c787e4b2fb55100fd80 + +A = -43fb1e1cdb240d8791a0287039ee80d6d5353315e87312539aeedc08b1620f76fe55202de1f762dc3319ebf440e3aa4a9edef8913866b048622a428bbad1752468dba59d167a5ed4a483e4b373e32d137c1901afd969b1ca0101827e7e51571fc1297f35a2419c75e33bed6d82581f9b62dc01bf5e6fbfa3efd14b6d5579c015bfe5ad71adea276bab05c33775ef3fb6fb555c3acaaefef1be3d0221e4e2c8c43a170dba23cf2ba50c91df5d41a69fd8d94c6f2160311208885d07259e90c81c1cb1d0ee95dc5489ca3fa8c9d621f2ad3b5e9022fca04d97772e413aa036aef9f852fb9b43d9c06f8c77c0b9c4dab12663949489e8f89f5f30 +B = -395b2b91b73aa230bbdad373b25448d1b2e931c8ebe6429a16e3230c5fb24400f71c6840309a7b950b493b1fb745dcf85365cdd65131ad0d382ca8c0a9a764cf6f91cada266a1a39626e2eb6f83cbfa5013e1ac7ee3c4450428317085f8d7df15d9c6f1a5744cd6a9913d00e035bf23644f6956933c32bdfb8ba63f467f4b37aa0223b6faceaedf9c17daa7ef1941f604c261c1018d5e832f3f88c983525421d1c8d268ec826660c7a4813faa434d9b0c12f7114a4e4ea97f8761365b528940a932523cad2e9b9c3131f5e1772af9667b1a27a8f31ea034150f2f90307d221e270b46bd474e6b107e2f16ae856bf5e60465d8e0b42020d9888 +GCD = 153ad2a1f0e751b235d0af57a8fb1f90b11cb628f83812641a8faac3b06040c6118fd75760b26b94ae163112a455d042df4bab66b3430ba2b42378a86148bee151a9b74e539d8859eb8d06cc89ca6a9a1d810662bcb272081741cc38464f97cd8e18349ca64362f7e47d08b6aeb8f9902681259adb6c56fbdd3fa36618 + +A = -1a38c2c3dc10e0ce1170fb14f102f9757015b1a08c68b182045c6b733cb6f54f48de89f703777320e666cc8ce955e4bfe6bde96abb7a144496cdd3faefcc41f06e599fcdd0a487709f057c9ab1761d0243bf938b9d26b1caa7c057ae0e61d4bd819ce3d87322d1fed97070c0d6d83f5c64352095959c5a534662c7cd103f1f05fd5474e5cb3efeb664fdfab8ef75a04cd8a5c615abd58eed63945db507fc2d066dd00b8823e4a4ef51747bc3ca88dd82c8d5841515ebe9505d78ed2d06f41db3c36a0532ecbb1a022e398aae2136890e031aadcb22d8740b2916bd1067e4b3e72a30942478912c39533090bac35ed3942d44590f382933df1b8 +B = -cd6128da5517dcada7eaeb3acd1a0cdc0b3a5c9092ce1666700308cdbea645a9c6510fbf9b151289ff6858c3edb08d935dddda192db4d0d59a4215dd6012e48b9ce65e6e122e0a88e52d2faa74eb0a3bb602772261f8a34e611f439202d0cd53f2aad75d881cab93abbcfd6d74d7fcf02162eea1ec2cdb8bac3488190493366b5ea1998b1feb91335b9bba8fda20d9e01d8223809074847b9ed8fafe9183f0632f2658e6ad2ce6e5349095df6a7f64d802c1eca18622473aa04143836887156a072a32490e8f1ae088e9e473726c57690be60c1b2be1453d954bcc35d7c08ca96217d64494f6226d8496a6a17d5748843f3c98c59d529c8000 +GCD = 1ebf297c8711087fd27e2cdfdf8a3e1558fad2723eb59edde0b93839e6cbd509dfb5710334977e89582802b2eacc6d7a90f250819cd239086a75f309026df80d42e7b83df99f6208cc90e9776847a72cb9f000abe93148e003d0751bf2f2e4ece6d0afd5de554ee526fadcd1240de2e11ea95ef62ec640eb648a4620e8 + +A = 3a60c12381b876a884530caaf9008852d95714bebe29cc529c87c1cf7c02c1b033629fdc878b8100dc30424accc68bb03ea76dc61aef5b64633e2ada58eeb6b59d9cae96836995efbd73204ecd37a5b78ed580cf947124051367ff69c41d680b463bf60acb0576c3160f7d9c4c4bb7df99cb111f0cd7ee9fa29653870ab98f00ef67aadb0cfbc9641a294da31a574cf60f36501da3a5b9a047f6cfca111c9074781d3baea46871a859425e90c99bf3c55294ad3af646d1608463ce4442b8ba0b298c89fd17538082e2e94b25365592c924c094d3d3347575015259e7e1ae86e5a98e0bbc0e3b8a0cafc640693ba9cda727d79b5cc75397f1290 +B = -2c1812bb196d3c11e74b2d41d3be69a4fd90f4b2ae94c10d20ea45347a34c1ebf32d916d06d658c2594fc56e0458eae8c8d245ceb58437f1b9ec1a079b012f71833436c79b085f685414b71559bc4f23d225c8a7229c7fbdb0521823778ebc48fb7b8107a3f0117bfcaebe102d0be73985f678946c362469c3ade21cf9e6f2c7954d2eb029b3905cad470fd4c18006f79c7398096a375ddd50ff1270c1d39d86a0745b702904a8d5a059d290e0b47c8a3fcce23d9f7cb456713325433e4cad5e676e509f4fa576b1996e30406e78bfcbf3a21a2ed8ed0c0a5ec93ffb5b797ad734a02bffd15faf348df263e009f1fb7be15acd24f81ddd16a10 +GCD = 2383ea40aee3b5a84c5f299f7de0982ce4bb6e78116ea27572dbecdd261e7bff6d8fe49ab783c4777e359701bdd7f855db7e386c18f76f521ec0ac2e4052230877c7dba2b40013f7cfe0678702bf604a4f19e70327d4192a9da27e61fff9f8bd5e7bb8f3bf848d3e3656d17c681811da5520828c6d55dd33d9bbbee2270 + +A = -810c4f3a0d42985382437794719b3775eb46507ce1cf463699eda8cc39052e8c37fafc770b5678b6007654169886bf28b9ed4ce1d6084d57dad947bb04ac5e693c9c6d7daf30e919a32d089c6a9e1fef351971335326e1c70bdd1fc90c639d54da784915f8294607eea06f452a6e0119fa427e5838abcf3f02bf13401e4c0b50305a1bd3212f22f43a9ecfe5cebe4aa59175b21c4f3cd210449a5a193f880a55cde9aa982d529c7af6f75bc5adbc6006357adacff724a723f3c061c19826ad0cf78dd80495c6ae41f89483aca3c00dbfa3675e5a20a8f42446f831dde044b01de4bf87e4aff9953a6cabcc2b6d07917b82505f6a1d8f45c1e6 +B = f7925292bd9423ff9bd3fc5269c44468fe187750289844265ea6673f29560cb35e45b0387d81860941e65045888690770f47b031b382f440612a63d9e2000a852265a15adf5f740ce5f04874acc4e6d535c0b40b33d4d85906e0bf6b01d40dbcc2a5f9e39c65d224fbfc2918ff51085c1a596bc96451e0719ce0f9254ad835c92cc154e6479866664ac30c5f19a15bd918eea00962529ffae65e8aae7c3ca4c59b1412b3a0cc0d4aac5b0a0dca91edf122f9a8d998a6257494d76e0e1dc25670cc1e054957928b20c9448c7c2c8526039c340443e4d9ec6109ce90c590ca4e3db91acff3d02fed119ebce973aa19ca28b65984c96da84b0a8c0 +GCD = 6bed8ee5bfed88c05db1395562042900eeec9df91c1a1c31a3ae436d89c8df84650d46f741671d37c30bfd9e39c12fe59f4f7daa68d962dbc2ebff361b88d52a300f14f460855e6c3abbf6e0dfa3f0773fdfe3ffa0f7f8a372aaab4d7598ab5cc8e75f783b6cb7ed5bcab37f9ad52787da39a9f20fef0f8d4b0317e31a + +A = cb3ba6d6b562d85c2ca514bb46d7f2885cae440929c5fe7c9bd93918a456d6ab00b0cfd9de95ac396c307e11a94e43945273bc6477d7f40cdb0669a4021e4457a382528f94184dc88f8d88220ab74befc0055062cd529333af187c4650958f88e159bd5ad0b22fefead6dd13a31bcc047cbb058e9d7935cc02c3bbfe3a9b40767abfd75966c5a2c0b4cb20947b67ff2932265f99311ce121ea1066f2e24bb9368b9d95419ca62d2d4678d05816455283b2d3cf00456039767c8003d0d88a49803fd6fdab65b613c758c3b46670c9f25a15fff3e53404b07fd67b8ab6b4beec2840e1ca6fff0920cb251ebce05912b70dc9682b58d846371b72d +B = f7274714312e12983bdcaecf7b89534a3e84431c6d7412603e7e52e60d8b5ea29620c4257313ea8c730fccd8941659835f60f8e83300c5d79f5b31e6dd8dae76c03f684ebfd3ee982beb54456cac8e5b6d57334fc09888b6eab248f510c582a11dc75e1bc1fb1751563d7ccf67eadaf7e389ad3c84fdd5e112595bdc54fdff22d873e6a1c84d5daaaa7256f355ea9421a064b043877db429ec8b9cc927bfa0ff8961b06d13707117a0207affaa0a7cea93167aa0fc3e1402ea06a133767443f845bb7424ccbb01fea1bfd4576675f1bdc7693993e759ca4848a826ee3a5b97ad8d85e9e23fb4aefb02ddc82942d9ece28051656dadc8ab4f73 +GCD = 9647d4e8e2ed5e97b35eff12b62aea2cd969525059351419ee6a1c50f6f757124e25aa83893d7d52edc4fe93d31bf217f50018209399e1b483170df20f4cbdcebab2c1ef375955176eab1dfad10e578cb3539a22c23e30806d1bb0b7d296d6932946b7f319268d7ace05c3c10b2ae7bd7f64f8b5760f6177ddc7bb6a27 + +A = -f7e7052386dbb5c4f7e1b4ce05303f76b4ae7eff683a875a64ef7991f533f7a22313b06a1c0a6a719db8fc8605182e8b327910662175c34273efee4f765b3088e4f3abbda45f72ef3557a88562a873ccef2df5f822376ed050d323015835e230340667e24652c7988e890481476b83bb102487a60717d67125ce36ec703e1029761db10d0ed7fbfa2ca4deb98c3a6bcccdbba32786f4048cec1501c954dfd67696db790123e72fd7296790c59e4cb1e9c10f4eca026d216172c535c60293c6dcd8a2db98a6d832e004dde753ad10a84b5bd5b21b722aaa83f75173d5621388e7eb4e1bfa5a313ab172fe2a2d152bcc9846f3753eec88931cffa1 +B = -850ce1823dbc588918fe52145302f42396d98dfce857d0c8b7d0293cd634a22d2c42899d89f7ea98c50154d3d035c7b31a07e9412a5a6be238312738161451bd312c3dc70ed866afe1bc302348303f4427717486e82dc9cd2707ece4c7829d542fb804a9d45a90310d5964f29920031c7fa6c780d3bce2d6a78d7688f61a9c60de28101fe12b7cb728c63bc095dbdb95df0993a2aeee15a0210a540d3e38242937b31aa736886b31a7a8fbedcb6b026cf31e09e979785b57f199e0974fa97682cbc05d0eff648cdab4799ea4e81cfcdb1d46ffe346252af5f2c2b670127e17bbe0ef0060a00feff840560066df531f8dacd8163e4bf882294c70 +GCD = 14563bbc87f212e3a7255841512c03a9377f720083a8f0b6eea89e23cfb25092272c89db386eb0069f8a34e14abb5c690b0396e57580fb2e15f74b02427d368e1d199c639284a1083dc96a0fcd904aeca705ab939a14c8faf58fec37e4b0f93656d8e10d4417af9c7706e9b7dc0d4f0a945fc4d481f1a64d80b87d1455f + +A = -5b41cfb43547a86715f9dd09d281fe10ac08a2695843d073c23375ffdee9402de37067507346861d0fd8b589be1205e27ffef3e7fb9119be3016889eb0158d808990c410a740643f25ca66cbd2a513d1beadaa69336b2a54382cd7c79c253082c03953644e3c3c1517f62e63227057bfa9653c908df32118e018aebf7cfe55ecaba8b312aeb9a6dd7fa02db1972b616f837b53abc2afa7ef7658eebb2d36b3c32425f079078c7545e784c4498c4fc4643af4792c0be12ee01d8da36d287bf5ba0b4e79906b2cd13e2e9f576e7ba6f51d195c308c148fa01774b863dd96b40b91ae2d6b9f11d89269a6b3c9e3116da567d842e1efe3f785638db78 +B = 2b763a718d77ea5e538bb0beed96c1920e7330afb617c51b90364cba5dcff6abb197725f9ddfcc6af89808c183fb4a84968f2b9ce89662441da9491b4da4c4a268c26667b0e548090b035349691b6370831a07d69bdaf370b072494f21d705639419ee02ea0a288594d0320681531ee87dd92d21037610a437124cd5e852d1c32b1e51257bded9ccb7b4247497297fb1dbc6e488d3d618c781fe14985a41388be05b771862d2fdfb966fdc200a4ca8f94f37230c5ddfcf3259584ed284f4be8923b483a74560e2fe1e13b7b30036ba0e64e496851c1e2a0944e4df7f0d730dfb4cc08c04a64d091921b1c6c95be3d5674b98748c16f1ba73d0da0 +GCD = ce2c5be9890f6ee73999e1adcc248cddc5fd7ed739cad873714c99c698339300dbd7ee7f7bf40af301fb8d0f29d151a4e27cfff1321f625b5db81f798c5c423d3a3940dafd9fd76903882734292dc74c153a508738a0c5b50361f75a1846182902b8e5ce0766e0ee8ef58db0cee43cb6c5dc2b41588c7e928223b7fa5b48 + +A = 4c333fda7185d0395bb4604cb89b0d369d0ccd87fdcebf98dcd4264089a5b7993434f830be604146286e529e8130986c72c9271966b911eeee5da67a6d579343f49fd9cfd45f2b405fb4f8b4a7828b4b1451ca3f0d0110634d3cbebce17452a622e2de5a40e94c0b199dcba1f1d8bf7a32f2fab56d44d8fdd17c30b15b38d51f57b869e47562a0e35c090ec4cefebadbd3831aa63871cb4b9460c2683c8d518a5d093b84ed19059c0073fbb19aa7f0d60dfd0ad853e9f05f147069ea351400012f217ead887523c5f5fabaae264d2c1ab5b9d3a5baefceab630bd6c116d5a00f63d5649cbdefabc6d6e2add3eaf3c492d9a1e1d1fed782e81ed1e +B = -657d9476c32154321858a20c321f90c1f359d63d1cc3add45f348186f9a041efea0be39b92e56297f377a1b7f817092fe4f5bd418234bcf4493b9362154f9a1c3eabee938d441709ab66b01863edcc451c2b0b837bd8790157d602d86b3616385be19632247195a0bd7a786ee5937fd93891369463cfb9dc8f7f5b5470fbf43188bbf90d25a39f4b459cc3e5681ecc9e80bfdea05b79529231fd35dcb3555e2afa5b973fa713452f26a3bd49c49e625c35214f26d6669b48b97d64ed905b5af6c59f509c9f74baa2f1180cc1c0563bfa9e9703ca7833b1b0c27171c34e3e69019447dfb2cc84eb905d5ba0540d8f01fcd337b92a1c7ff686b949a +GCD = 487e5e7f8eff78fe755316697b182e1771aafb7357b90d98772fff9db1944128afe9d261cbccc716d634efb9239f7990ecc14d165197c6aa56f1e20728b05886b4cab923815c39a9c8e7abfabfc5061ecebe29fc7956c7c2a0bd1120c13cb416d58f0764f9647ebfcc908f9c6d3bdc18de837a3a1e594398c26031dcb26 + +A = -29e8fe95cb58e50a3138565125f0350558a33e41824f9678eebfda4418e67adf0f04af34ae8d0aeee48d24c1d7d1e0857cc57f86e9c9765ec9664374876ce23635a0678335a448e586e8d2ed2ff5fb7ab3e4e199637b0dd17cf276e0dde4cc50110c55249c71618164709436340de9b3f36c86fd2fc8f05b906bdf45c48d12617aa620d89af7141e6b7abc7e73a0f339d829290acc3797991f65ae97de55faa1040950732778e8f7ec1bd11c22d13dfca305378c82976690244f3ab65a4b0a139e7d6539044534cdad042546e8cbd4c27f3666a188079adc867b2c3e13d2e03ae5bb2bb67f737e1ecd3e2dd02c2bb1d43518495038aa46fe85efff +B = 36503c45de4fd1b1174dee35b245ff8c51bbfe36315688119e1a952cd301d986060c30114870d238ffc6b81e037724086bb2a356f956507f5f334ae8532146969405af2e3fef139862df472a51b333b496d35800cd1258c0687eccfda1d7d1c6267cda4d999a7433b798c4c8aeee409b79ef507ed4871ec6a1b5356b11d9aae2c702b6df3d7151ee6ac29a7b381adccdfc441c060f82ab51bf27f8fc89a17b4d4a08e54312638bca6fcb8067b0d66c4e1656afb56f87c2fcf73ea7bb59a6748753ccd4157749a962bab9847b6d616a188625ec539089f13322ca87f3f06faab680197d955a46ad5b8302dcaa53f69568ad3c4d6f0dec476bbc63f2 +GCD = e47827dce4ce75d7de3eaf561e2b7fa265fc494f375a1b56ff3ea2dfbf4738f5b0c219fea1a411e15530240de3508767741ea34e9ed738078ea6b0e5d87d607c20be517c65c1cbf2d47cf6a170c54cc235b2ce79baf21c6befb5e40b8b09ad0d312dfd90e0d2d4d508b75044a47f04537a6d4e00211be9d6b6f1a80db13 + +A = 364fe56a3f151a386ac3fce6c73c036a2e376a4f1a6c5544ca68d6bfb59250ec4a99557f41c50d6b0b100abc2ab464ab946877e74a0b39ed3869530bb68252e986e8302744ba5be333e4b75189636708683bed665a235b960d7670a75c9977be943cbc4d5d8a4f7ce7ba061bf32636f1d68e00e75e7dc97b68034516dfc7a36dbfbd9106012eea8646ca4d1edd6cfec26f69504116b2fbfa30ce1cd920773076a441b2c80e9aab2c664d727e381c02cc36faeb26cebd7fb7b0c459abafc6d82178dee21cba3504f52892d5bed65096fcf7d384d734c2f2a98ab327916c6c6de820f6dd30ad14bb2fc36f5f3d1390bb0e7a58e96c135e9669d238fd +B = 14258be7d92a407191bfa3404a64eaf33eec47328c1ece51c035684c4309307892e7b56d687ccf3a6cb3595615df87708628b9865294725c80fad99481b92dec8929bce51f69b74edf2377dab4f82b4e8a5fc668e2918f6255f1a3b9f7f61641185496e2aeac0f238da8886a3e575caa4f9f773fddecd8d8be4703b59834cd6ad249fbe6677e7e5e729963f725db5ccee116722c7df5da84db569d791d9910ed7f1737411dbb4731da03fc330ddbd860cc94c56166c88cf097c11be40f63e335cd3f9d6aa2640f9e5e2dcfd2463b180aaf4506e170e8cd17f6c02eb47e95d62c2524569a495d1bcdb0edcc03700b78bb3a9c44363d0a5549b8e6971 +GCD = 178532762bf4fca54ad2759f52f4e90ccff079691eae2b62c7c0c12b4e7433109524e644f0bfebe49be19750882ecab0d14738ca03b1dad124fb0f544cc970f5073e9d37c32a1edc271325158049c49641d49d5e4dfb6273ab9289ed3003d355ad8a46a910e5bb66eef4815f80b75ea232a3205516bbed5e991a64f66747 + +A = -54591853cb9d22aa52f313bb4a590b21fff4738590be6607498520c9efbed68e505913796774f9a04c6cc623353d66318efbf15e61184574b7b3fad7a4a7ced585f031d1883e676d3210f4dd0dd41af8b14db7db4f575176aa0aabbbc019be7965b9fd2d5f9a30b9071a8062010073e157089eb6a930e8928420f404b103a6b4e617fb34b208a7274fa1c3b7e9bb0a1c72485b4f98473fa227691e94bdd328ad27165af6cd554060d8694692a17fded10a5969ac340531536dd6ed1acb0589693d7e941b5695267376018c761bb557c06dea2b47297c62e455532d8f3a12889dd19329893e3905407b5cb72d69552735b12b6a974546ebeb8980490 +B = 67462b36bc44fc36701623e79c3195c421bdc0cc729f304de09853bf298ce395eaef1f939199371fd1978bff49cf6fdbd6c6032a57c1aede2a1617c69e21bafff4b27335012ce03e6900d87641c76f8d65c489a2b7e384ef35ae6a79b5769b67be6289116f4b63d3e9bbec74d5a109de9ad1a3268fa176ddc8adef0b7ff54b1ba2054860c48716daa93f9bc1599cbece223f59cdc3adacbc4f3f706cbd54d9ca51d56a0ac78a723c781c75749b923de9a30f4436d1422cc7e9aba819d153df53a051cb22cb80352062520c88a75873294a736cee191a0789a362af0e0008d72a36f3a6340203e71be92a73904ce127ad9c90df3d94ebdc80d77950 +GCD = abdbcecd245602a478419515209b4634d4b61214afc09864dec017a2d3d3489337f49e352c613d567d49d2a3814fb1c9b63107525f73076cee0d59da82b4e92b88cb8d39a3b654f4b4f721572d5ebee134d77649953c0206cf3a123ed25b2a8fd002cd52edb314f4d3004daa4eed579ee7988fc43aa85a0785dbd84cf450 + +A = -5ca3d3caa9c2bb4c11a489a97dea16ac08744eca0d3bfe6f98fda58a2c85622bbaf6e525e79de8ce28edff3e2b48c7df185e883bb74fbf08a2b81908678098725265db7991a5f109a5f09d8d3065fd1d7fcac927dcd0a8b4cae4afe94fb441a1e060b5cc12808bd50b333bba611ea780911570817c62a87c28f7ea8744818f6eee020ccedfab2c806e186a05f76e78522adbce9597aced45cfc05262ba34b340aa1fb165451f785804d2830c04f106b6ca05f8c30724166c936bd25fa1ecb5dd8c9910bac776cf1a0c7bcdc96678bad35442630bb55841669bd48405d77e49f88e19c4fee4d22df2c2ebad1859f9ddbb252dd88a5ecbb3eb917959a +B = -11c01a8e72897ce99f746b170a38d05f252cd4071f6f0276ab83a1c3e74945740a3d2e4cbde6e25cce8830147f3f09a776a5ddbcfc0889792f7285b940fc0f0a62ce8fbebb6881bca8d02e7a1aac2b911e25809af39b10f7ef3c3af61ca6ca0f3cd76a7ea4b78ed29cf907eff9c2ea57067b7db92ff23dcc7e5e3b1ffea31d3c54590c547da6d59e0370231bbf0537715aa0786ce71bdcd3739433f835c5726778a6f02dbd75e714fc625415b82db00921d81dd2df7a043949fff3550f7c9163539cc96dc1fdf45c033e8a505238b64658bccdc722fb3d6c782d4b65244a8f70ed18dea697ff0c42f6b46c0e241f3d5bd139ae972065c5be2f7ca62 +GCD = 9caba9b74673029828beadedffbc86d58827d9f8a9bd6060d54232e837787aba5c5728089cc06a111b0e987299532f0e664a8491198881f276510f7077b8638029250c78162328909c69441feba6ee2a58886773f77485936d05027b2f0fac2531d3ef2c0323ff11771848eaf424258f1acbe71a0fb0be386c986df2d67e + +A = 3c85eca05e9bbf46f0e89952d56e6927e1c8bd815822864127bcecc9c565fc37e82548962573db82af0c8499fc54b0a6cafc902a181877c394493c354d7daf9fff8e653009018c347c30cd5b066e14911a162a1c79a06b3d1ca2bbb648aa6586f96c64d70878aac3b3779cf820d2123a944dc3d40f5e20aefdc13c624bedebcb35c09eddd2cc8f19d7cc55e892574be668701f86088bf46f0ab7bd33737e0a987f21bf639b8a8755fc253d518f1511b99901a2654c658556b94d8e6178e82a217df45435dffdb3bfcc0be3eaa6c269f46e3a0b5129bfe2e3d7034dbcfbfbb740aa2386d912f87b9ded687b1e70b8e54703feacea8bb626a61a991d4d +B = -1add0b26e9b687958af83ddf86511e17c29457b772a5e345f8bf8dadabe916285640bed4c4e5f9f336789918423beb9737f7413630c6840c6b8dde720394fd542a2539522f59e19dd60dda517b6a0cde042153fd9b9b36ed517ade3f24434ffec7bd675f244e0eb10619d8e31ed25aa4fd55146622f2ad648e1ad8b11b270fbfb8b1db0c6cd00c631a6572521c803e6033c24221418474d1b35a6ae72b4a47e069515d21a77e32e1e988c2e842324772a4108a8500f4ecd5ad34637778d40e2b0cf4c0e5d91a997cc484589f609f20d5abaaec93debff5b2d9654c7810d9bb531028391eebeba74e2fc52fed7d3d18f4a15b71d3b1b68f7ee9bebdb +GCD = b9d5c1d9f2c94760472596696b42bf1aa80a23eb1db9bf9a91bb7193709751c6d3c1a98b463ad81da903de4f788dc20cf70e8d6587be878c2c32b0d4af741fccc896fc0bd467e6a12f90fbc5bc35e4577cbbbf95d61dfc581f5cb2008801c333d9978f5b6f859df98411d00780f98e3897a369b1405508e63bfec80de727 + +A = 10976e10f74b6cef7dc42b7b97c8c41d20cd8f65381e699c0a9599c4e468552259f77af2cb819564cad6c01cc9db16eaf0b0225d9fcc6b4380b2ffda1fdb20505a452872d4c48c1a6bdcb7bc33d60d8b9bf181d0d91b6404a2bfc39e596e5a581d9df57e6326528cdf8ef2dbe1c45aca8e0850fd419fe8e6caaba74808edde2f6e24b2d590cb26e1bd7abf5a14cb0583e32ad36f0ca4c1624bd78765b186b7b69bd79d7afd6b81b3be9b6b523fbfe214d80f37b3fa561638daa9eefad8c2547ae177a3d166d0c7f8c7c8085187c64f49a158d9979da48596eb3a88e65d4ad87e6a96629f33157856cf463bcf89c1edfa91b0c27b566b8a191bab12c7b +B = 27c7ba62ee49fe0f0a66879383431209da2df1685b5d665df1e53595caa7f666e51adb8c2fe8be0c241056ac1ba2377b60583f7ac73cbefbb32737eefd1fe407bba2f270347dfdf24c3125cd5f20ac7461c042a37fd744608f80e324ed277a772ecab1928f4a31228b486bd5843c367afc2595ed0ed2e48d31d35c09ac6565a996a68bef9dde5cd5341bfef9a5384ba7c942dddd3d833adc3462f54de47e82a95908f03dc7e1c0e40b29d0076ef6d24ca9b214ebaec801a662eb5f90e62e58ad8a2740c86402eeca2dbe57b1cddc121c8ef3ce749c8fff7382fe8861e5df07ee465c32efcf49579e4f60d002a695641790a120db14bd7f671f2aaa8a +GCD = 10d23ffdaacafcfd9a481699874fd91036cbe6d5650431124a81518c72628bd0b08400d893604bf5cb91406e4a142d5652d14a816d2a33c42ac6f926208d3c22efb7041943fd42d278df0a774692b97b26cf7103e53fdbf880ccc2be0b67c6516273db60077e73185c6f019ae788d7961c82c69c726202b27fb80bfb5249f + +A = -26c6e43a6ab963dc0d4a63602e05d6e41a18ddb20fdd99519daece7c064b31a087332b43c543a80d1e0c8134ec0a00aa2a48b9858b4f75af44a2f3391a5b3b694e4288ef83aef02e4592822c0d82a09b85183cff21e673895aea3cc266741f6da4e0a1422c0f11c62ff01de78c43c34bc75271839ccb736084faf24c3c7e0a9facfdf94306b2f466bc2da2928c5b7f5888205263ec1fba518f3df25bcb4d99a1471a26bf1f2401474a5d2b6ec9a652de05e95fdc0531401ef61b0192f55590670171da0bef1874e211cb487daaedd78d9342f6b7f4e7a4018629b6f2928b85014e3bf5638744f6be525eb8e13964513f6328eb522f40333f6dfe1354a +B = -59547045a76027af29eceab178c00e53218a17d859f64dfadd1b0849dfe15a84ef29b9c19881d796ee3751a6033a6cf8358bcce35534f50291737e097e4c3ce5dfd28115d7feda48d6dc586927b77afbe687199d18c427382ae943ebff2068bc0f129c27ef99152478a0b576de3fed1e4bbd3534353b9c432e5b66a3dc3f2dfdac04db230c21ed046d2bbb0d670e919550eb8cb896d989c920684cf856090b61c7de364171fce03e9af8e481a900b3cd63c305a556b8dec1caa51e2af20c16a40d7e9f85688cec02691306ba0daf1af7f9e315087b256f0150dd9c685134326462fd9bdd93f1a53ddf70f35c9ca1d1181a915d47ddac09804673995ee +GCD = 11a8396758a0a66b022cac4bb51219dd30c79dd0c8631019bff67fc48f2dcb76cf837e32577d148de45ee9a4169e2055e2e1e9aa396afec4db1a393cf8cc6a1f1b3bce7fdd5538486120e8a7f897c6a3ac81c998a5102e0d7208cca8acf72867d8d3233c578aa3a8472f3ad8377eee1df357a343a9c56a957d66bd7049f7f6 + +A = 1618626eba95e4576b267310c93aa57f4e057c9529bba875822baf8385ef8ee2225d817d94016efdaff0537e4c9ad49cb1c1585695de1558811ef7fbd4d028c935be8df458a7c49e8d51c45f0db68084488e0ace24f7d396d71dc3b471e0c6aae03671c67215b5c03fc1556bb1775eea131d7dfd54e9053f18fac01aefc5f6d0ebf684da647112596a214f3f24ebd52fafe7a00a490786030a2b4c84a84b054589244bc6f2c344d70b432e6d244e08517f4f28346d3f37dcc8e6ab7efaf819245fbdb27e07ac452b0a917877e42abdb90f3c14bf57b5befd34fe731979b05f4e645b6364bbdcce0e62f1e4cbe2254d065c1901e60f87074518835e1820 +B = -193f30173ddc6bf69de59ef20141273a3d0476a962ce225ad415ac13184bba80878729cf092378aedad5903452434535f275c09a4b1c01d245c5451a9984565017ce0f5d2c7d57136ee03a717d209a252c586c21b4ea1cab98f2a000781bac254347b6911b8cde726092d022322de5721cd06b117d9f3b329b6283741fa3791f00094575c26722606f1bfe1bdc6d5ffd00654020731f3d0f4404514b2de525430d8f0c577b16eeb90480906838e78dbf2afa90646ad9df7d7ed23c0cb87e3ac1ebff039a968df62bf3ea5bc7448cf680fc0ccab3c21fe298f89b0842f25e0469db4b53deb8c6c4e8d327ea1e15d3aeedb4a533a7576c390a926818520a +GCD = 14fd868582aeca9dff8f0010a0bc36bba0c5e20931ba5d9deab02584beb41a06d5a74f0d299dc6fc8399163e5f1dae3b86f09d334692917f7b02dff899adefc375aa9f282b73d4bf886df04ea04d78c93b793ee0d120d98c05e916577b4325ee352d07e10bbe3f487fa29ba402f499a0c415ac1a8ea1550b410f09719ba712 + +A = 61ce4d75b826be6d9cb4f2df8bee18701855af6f2b69004f15156f026bd0bf067762f29631161294fec2a72d0ecedac4aa56c7bc5a7eaa8c5587299c04e1f08342a0a6ae2244e90961ae4ed086da0ee1781e1dfa0f1cdf66847960e101b87ff2d6a0d0f4bb1a5dd4988fa9b2ea7f85082dd62f5ec4f4e90725e264633186b0fa538b2a4e2818fe894604851c72d1cc3326e6b0480547a7f25cf352b90d45604044fdaf840c96f290f25476dbb580dded1a7c88ca3dbb686aa1c0cc1d9b1c44c4d4d0fa2f1b47c37ad73792ed004f924bb7e53427b1d680024c9cd938ebf259573732081f4b2db84662340498dd886dd280e2343ca89201fc6ed42877 +B = 3cde6dbb22f604cbed4856a852d8c9d0341e05f98b5c49e4c5baf499fdd9657e40b058d36d930b73019b7a220dd9cbdc833ea2583ce7520245d5d38e2ee8d723b1498ec1ff9fa28a697affd5da6cb966e4a2d4bac3c98143b4f92f1f1ff90a32c08ae4001aa25f7e05cbf112d03eec1c8075aaf0078f06d7c21ccfbcc8f328196ae1b8f6ff2277c7eba7dd50c62cd0557a4447b435966b8b17495062806b878747dadc75108329225d13fa7752101cf7f1af841d4c728ac0f0cc5849d5ed4227fa95e20f653a5f237c7621495f7dc55be440f47a93b265742b57c18794039ed37ef27d4beca8b92b32cc794f2e22143b822b181a2083a03b0d5ec20910 +GCD = d4d9e617ea32e621017d190bb8185cfd688cd3704140033a28e09a0150f3f88bc6d98a331d24fbd440b62fde87abeddcbede601988fe9bf9a6de75314981578395bf4ca25983b84e0bdb55983c4790430e02d22d103d96e9d07ced26f7820dff2ab2b6043237facdb64f0f5fb983f09d2ac007a9501e0c5792cb8538c2735 + +A = 43e3d75c753e93c10232d0023f161123917d5ffc57c892111aefd51202f765d1b61d9a838671f705ef5a1e9a8bbb8306f785c7819d4382e3e1d31c88016d5c18a408a2f620d9eb040e56d8c993eaa5cffe90f80f5a78b3a6b2d35cea6b22c93dc22ac13231b054cd72d042d4c2cc59f891e49481203e605708eb7fda1ff10b89c063156c8520d9bd004a9301e47e68e22dd6da5710851780af104bcce0d157afe4ebefedbabf7a19a7f3f91321cb7ca9350ca3ab28050de50947a6b1c813c12997cd48fba7a70010810ed4dca51688de1d247960e998f21686d6ed929dd7a2f93a1107acc08e7920b10e1545dc6185dcc02edee2302e2e6a6d2c6577e0 +B = -4be0721e6f5e653c3247b0cba80ee5f13f674b015e6025fcd59e67ba9cdbeb37ff962d4875a8155e3a7a02fa720e49b19832ec245012ca5f3588abe013f07e62e9d486bb298e0800ef4fa78b6a43783f2a5298c4cf0139f3c3507cf5f76a83e03a757fd163c45d45308367beaebdfd80ca5eb73654d7664e432db05fbea2be9e23bf531c97d2833c00683621c38d8f279e86508668fbec72377f3255b23cc039c4353ddfc1ea591bcb7511cdfa24505b32446e1fe321ee5838d2b9d32275b2132764453d725b9aefbd5d72f4658b1a6d6ecec1717a94134a2d35763d530b881a0aa7a61269d4b68b96b5972b356995a8e3d1a500d5cf22d50b273f4846 +GCD = 17cb2ce9fb7116345f17f45cce621d9dad7b5d9887610976904fa204c757a060318b492a71290f6326d72ed69a1fdf06ca98c81526b4b889cfe67a71d6c6ac2f47b5b6cb01db4272b8cab35155674fec0392785b82ab555ca93db29e0163b099eebb83904af5e522416bf53f81cf3c5ba53c0ef9608c9c0167a4fc57ac9e5a + +A = 9c0dd4526642fe78ea9e07bdc7129d90966a962f8ed38d16eced6e95afcdd43ad016fce3369a928aa9bc65bad84f35f3e39c5b3d080e1e6f35fe5da2af5f9867099ee8f7a683ed4d7e03b71b3b9b148470f2917c27871f4b7aee6a948757b149902f65c31cb62725672ce3e33b8ad054e1878f2720f33ab9a6ec732abb1a6b5bc83017ad9158e6b52eec37a8dd5c804ed4b40c63e1c22ddd7efdd5969f9255b8cbcc0db157840e73b6a4badebc990a9461cf128fd8bf4aa7e6510381f7f7bad86e07d5d13a44c688c3f6a5dce999328fb1ceb933454fa076cb3e3b8fa65498e77d685b2a4c2a4df99d769d00ca9f7551588d973d82fb4505779a9b065 +B = 7314af78aef3b7b2c1502bfbfc338041b4a48c46733d853d5103d6c4de9521cd97b8a0655528075f9dfaddadc70b1d02f0c412537af49c759aaefd5e2e20a55a277779caf9b014ff93f3c71827c8eb96ce4a4b22de69b3b0bf560002b77e66e4f59a3167dfab7db8372328204505fb656d6cc222cd7acb30517b47e1cff8c9be61f46d092f8b99c8ab6d3b8051bf3c35d6492b0c75ff5bf7a482bb99ee85f9440a74fa95a29e69be36ec7d30c7d45c74cc979c935ae30b60b5719701d664b5f38c4d83eb70482798a24c8cdac93d6b4a08603129139f62bd57d7ca45c5825836b8b6407d7149a1eadfac2bc22a178d40492dd8338d3b683ecc9ed573203 +GCD = ba5e6c0fefaa102b2412787cf5fe8c86a49f0194581813d52ac3cf0e42b0433e7dbf808a3170ab105a794143e31363d9f1810a653bf20f3a4859b474802b2dc5deebaa2ef0a3403b4741df8f2898df8cd17e01bcd9ad631f401a3fe4175d51868ae10954e8880f690696670364cee4cada6b2cbe8c4f6383b94910a283690f + +A = -b1b583848c790a95c0c90297d7c7160af8d78ff34e8fe38d407745891d39b30ba01f7fa48fd8c4cd6c9e86656532039bf5ca29fd3848441ca53a7f043d2a808bf2584900c8463ef721d5cfa25cc67a0d8efb20b2a608ad9d46b96e636c5e4acdc3a2954831bfd4cec0843d5b0f65bd0af9b861c97d8ee5ce0d1054bf1a8f5fd77a1420b7f14ac8f7bb9883cba205a2a1bb370011b7e5e5be963f41c2b25d3b475243fadcdd1289e56ad79791e298f80596e959527621501e85776ba2be88a33e8ec8a17a6be37fd7150f19acdd62978f2956fb8192b1eb3a9397cad9db1cc1a572d404aa99dac82d88a41df8c42db063a8e198d8df24524b2508f84cad0 +B = 2e8a44d9ffee95f1167c210688f7c8d71037beb506f84978cc2b19ff8774718a28b42a49a4d7f5d54eb72819bf232cc37ff616c69c9262ce5739fc1aa605036ca6346c4dddbf33c52403e1967885bcef716cd332382e043e19764aecbb2556073d45b0446b63edb3f396d1ccb927e6a6e6deb7a3da8b00d7ae86cb9c6ef9f2af5d789b69b1606b8b2977d2cb45f04ebcdd0274e6eb84c3b4a663e78d98c4db4c8424fe0239c8d2c433774222b7c722e8be725beda55a2c3dbe131e40f9946b0554c2b7dc4c8568b46980e70ecaa5075ea1a3a7f61e9e76fb77005af77e010d49df0b08a32a332599a86f6528aee63fe5b5155198f39f85ed96e09625e68 +GCD = 46fd5bd037c89fbf2389ffa12cb8afdd90ba2678c6092dd51694944de5adbc5032998ba41ab6e0d2509756ed97e66b191628f1d2024a0ac686961ba904332467af8d3a957a1067b1fb966d944f8a3b7991ac0c68e7fce929fd6edd17f8e5b8549459b746963ff3133c4974857bcba0289d5144faf1ec8bc9c9c11e088a0c68 + +A = -5e0722e97367ac2cd30922b4051a878138be5f3a3a156a654d3ec6c6f711571eda12b32cd44291e35199df82074644fe12f0c950792caf3c7f577bcf5141afddd67b394990af0621e3866ae009760b5cc6d5aa4c4d369cc4c462ca8f50cfc2d6b3bb4f931ecd48bc30d62f0d4905e3eb5e0233b3eb558056bdced147afde5f6dcb0e29be3a1a04bbf3e14772c51d4c127eaef944523727eb3c0153c92fffcaa09c873a3facc3b7b68173b109b028a83453fbf88db6a8765f6f5bca62fda9664cb99fa1cfddaad91dafdb2334eeb571f63846848c8da7a4400594d42c6d799856dd23a5f91e33be24be0da823f7cd13f7d76a57351be5f6f143c717a51554 +B = 38aefc7d052f121d0f0e72b63d4a1bf577f707a1ad6c320e8717e981afc1fbb478b12dc8abb83ab6fe2527592735bb844083bbe2b2b9867251c88a6b42d47f75f96adc5110c5ee90b4074c137791360a6b13442f5f0cc519a1ac69ea92c05b328e19c828b67bcb9dd2b1f1b95aa5d85ee3dfa938fd962af4dfeb85e02f1c75c71234b6c8b8cf3766b236fc9bd34d930480410aa2a453189d8f3d84f57173a61a6a150c72bd0cde2d644c43a394d66d86264eae1347f88277e76badb59c62460692be26a63b35c4f2d54b4d190ff403ee9647c28dae718bade00151abcb1eeb8b566e4e5be772bce50441dab8bec1dd602d7bac2e5a9b74dbe2e5b86dcd5e +GCD = 271439c61c1e75d7bb886c53b5d44414b63faac12ca02f399a38b53158945bc3b4592abeae070063f6bbd36981934f739355ef8b12b41144cd5ff10436bc9c009fbfd62fd9c657f0d96a5799a2bb0a60f77dac2f8c6a17f4ee9fbb7fd169bfea5136aabf0726b5254be32354e123d8caf4da9e7c5fd1a32c67e8063962c9316 + +A = 13ea42ae8b28dca79e5904aa9790b8aba2f12ae46f3c818a90c63a82deda20194cfe4f7e8ee9227c4ebe697154defeb8dff031f5ae0d9fdf439dca2e9cbd1d35a6a22b053dc1e1540c1b5e10a2c8e5e14c42c043410ccd582abcf9146d82022d813e2050f7cc552a0ca475598c2decefd4f84bb6d353835bd9f72eed2eebfc90a66063f14b5d61c6f99bed7046b086b0aa7c56cf37253f753ee0621266085d680800c21e25476dee2898547e47ee75829b914554ac62f9544be44e0f3f270207d2dfb049b5756365e61814e8ad579cb505023989fb71986049e738a17cdc7f4e6175e0921fa8c069b9fd1745a02e04d5fec7d7192649edf18b154819bff90 +B = -105fc092502bab04e958f290226a2ade27997e77c8fa69ed2ba0354f937f7ca30aa66f33d883d488b05295270fc827482896151c774918923cb03b250a8829a9247324ee159e2342117fbac08a1c45cfbc65f7e949c18bb441aef26e03a7a1fa9d831406e9519bfaaaec9b99f225a9d1e7ddd91387b58a2777e5f3e2ae3c73039b51d13186db16b46072766f0e68fd6d53299c41e7c5dc73295842b67f085d099844ed596f2c3b3dd33b564dcc59a4b55e4ab318ad62d98d093550a976b448062c91baa1e96924354fed8fd8764c692d75d8cf8c293a5eace3bac69a8a46b3985f9e95eeaf6adef9c5c2440c693c41a81effe50160aadab47fadcbadde074 +GCD = 15620ca883a07f0a470c7480c812304b0288a3bfdf7ead16f01725c90e68a647ccc0a8a3d1c06162416cddecfc9f0d4009149b9041f72a93b25f564c39f6fa50ae419135b0d6065d2772bcca444d74a6deed6822823d591360149efb61c3e568f6de7d53b591830de609d0e690b3881c3103911f8ee00743c376e4fb7d21a54 + +A = -32df35e05bc70a024fbc97d2f869602d7ad9667801790207e8269651abfb47931eb3ca99d7b235957082d97f43d0bea44374acfcba3e1b4579ab4e8372405757a187f5208dc4c921bebc71f5ecc9ea9d763a8d447c6e92b8015f3beff11961ed764dd13ea33675eb174e72f970704343edf777862a2c7625b56ada136577488b11cd47d1d78ac7f770cfcfa72fb2e26acf2fb7b54475df03d6f822bebe8f0b6b5ceb4ed8914449c86447be9f4a0823faf7bc010ecd81734c7497e73c533fde3658928451ad344cb4b866af6c605a8154d15f09ac02e283d83b270e3f7e86d9af1935c63555bbd8b00de88878c42ddc0cdbb2bf7e5b5a44bf9545a1ed21f22 +B = -22cf762e509dbceac0a038cc00c2839a6005f74d0f1b4e8d6e820c014c0aeca621b44155a13baeb093436c5bc4f4e5513c6b77858935305becfe74b0aa92aebd8819cbba924426be6d2d11363e7ce3dc841280ed5f8a147914521d1865ae1eac0bdd31fa7c2f55b3c318007c58599c2a7226eb7ba522e784871110b55fff1e0329a1969767778af9ddba955dad31b2bc507b41c5dd45368f7d9439611fc6d3e1c20ff38899bfc4fce2b1cf094dd0a1b80d0de564a4abba64484886a5dfe3d03e6f6861d60bdddcb227044b9ebbcb8f26daf74a1a971e5710d4dc1d266ddad023c6a160594ec6e58364c9436ba2119784c2a7a452e42633686d2ca4380cd30 +GCD = 776d7044977143d3ece1255814b946e6ee241ca46945648f8f676c9ade014caf504c1f8ff2ab5fc051d7f4da7f713b1fee97b707756100f39e8d94e5f18c3caedd1b58f00a9ad46d41485537affde4691a7f0300b4efe71adf433eea7e726a26685236f0b65910baf0f970ec937ca6b9b22d688bb60f5732834eddc75ca3d82 + +A = 6f370eb62b979ae0f73ca116899dc77bb181fabb60f3a5eb0be087ed24a73ea137e2ed3c3319d7ba722bc604e10c5e9113452aeb3e489a7d20b2fdebecbda7b521168e0a112b0d2d30d261fc78dc98cd4ee95af5e3f4f1eae49413e275bd904084276a2f7f0e95552225f9bcd0aaa64abd1692da78a21f59fb4fc527b37fe8a9e4c18ad38d434ce08dda473a516d7b5da184ef91a781f229607ed3680d771c6faa8a268a1d94fed758792c0f456024b50565943253ed97ab16700ca412d370ae0b107703eace5efb3bcdab2b8aacdaa7fa9a1cf1d075da51e773d85266f3a88ab5d4eb379db8f136cd1bfe2801e11eef0c74dae979170b7d4ca0d7c03c4fb +B = -43c28b2199c4acf51f3d867122aff0fa7b1c068ca4704f877ef9f8409b888ec4c4b8a60fefd7064835e2bb25c46990ded6e9713aa9f8fd15357fb24219a28c8cf3c35e602b1313cc938618494946b7c0555913df427abe356af8409565be403a9d4e6e87851fd42776468fa45579b07cc00bf40fb63286bae31d9a07a573acb334a9a16e8859106744bf3c9812ab3b7482e7d6d4ce98570bd212654ba3aac1e5becfa4a7173750bbb03182eb4a9f96aca0c43887c4a6f13ef664d15c1f04bfab284ab901e43aa3940b008f03a4a6a6bb2c8b62079480ca4cf8d55ad6d0bbef64265e50a28d8139aabbcd5b8cbd6aa99cb155e448e4f3161b0e9d0c687270b +GCD = 5d85e455ce6f9597289c29f0b1eab77198831e5f56b6b8ec5f4d459fd24317abbbc5309850803a0dbeed7d5be676e1ae590e6770383b4bf4823b240d8a716f6762d4c1b05936f0423186ba2904891d8e83ffcf2804ca0dff140f325ece510a8fea35075469957354d723042a359c9986aa4f06c964cad7614df775d098d94f3 + +A = 343bce97d8f2c3f5aa83d4101c3fe5aefd6aadc9428543714c2e8211f89e3fcae7cd798f496e0c6fb3e618a98a65a6e5dc36fd229394947106a50cb5dd08886da042ef5e6279a8403cffe7623f1c16308407c15acf21dfe09411919ee962e18836da0a6e218a9e798deff1b6658c8467b07da45ec1b28b5a05886d3bf1f868995355b0b325b08bd6c93adbd2d93baef7eda56fcc075f73586aa72a271d29a6a462c476e2c3b513277253d2e78a9b302218a71775f92f6c784ad7a625655c89155c4bf7b8b47f9e9d66285a00659118e091a418748d1ce7211c578c88d7a053919d9f8075ff76a97c70120fa179b080d4ff76ccb72042c467c29f756556f839 +B = -1adfb111016e8f56994b63838faec53ef88a59c7cafaba219127469e50cd6503b5d819759957005032083cf72ddfe05d302e0b6e2d5ad5c1a3b70ba7cdfa3fc916b1ddff116b6f690d828746f22c0e10da814aa7c482bfdd38d83ca8abe7154b92027235726332d7b6887e9a53d4557a5d500143cdf91a8b2ad05a6b81c34493a1983ed3a9754642a0a51cc61e8adf1c6cdc36a1bcbeb582b2a1043ecf77b0812e6927c29aa7d476869e7be287e859207b1d98ff67ec1433f76c7a79c0de56ce51628a67eb2599d8d6e9df3e258ab49c66a6435798ddfd74018aa7d07a141c3681cb383aa4876077d267ee459b65adff65386d5378409402e33cd56b28bdfb +GCD = 99c6b58bb8c1e01bbf8a75ccdaf5df74639b2832f47517a4ce10201f0e863f461c871692cf10c0b0828570f14fd06009d4adb049ec0231ee19485d91ff45e24287c13d3a71b3bfd7917c480b4af4ec31e6073a329f811391a34ce32bc1c233e8828edb25761763217b4e0050bb5aedfe262bb6b8349996a677caf876ca78eaf + +A = -12d63c94ee481f3456beea44af3c495a4d072745d7b02348b266978c7af7ac9191369734b0cf4bae3314a358b7b1048d2a6e8231e812c6ec5b2e9e1f549bb3f2bc3df240011398e695ee7205d71b2ce1b2f3baef6910cbe938bcef5bf01fb6a3292d20165a8d3156942bee0ef847814c8477d39844a830e4b1e2fef916fee437340c36d85ecd0038cbbd21ac1c40b164360cedda48ecdba13e06c7991cef2c5622c5839e2706187f7cb9e5aa92f45fe18250c8e2b34a7a49aba8c7b34e332bd84095567ba3c067268ec778110001e661f440e0298c47994efd9cff7c0c16e429f8f8c12da541bd7f6e58eafb2a9750aeadebcf16cd84bac62f585cbcd464f2 +B = -81408e8671c0a8458c3fbc5e0ce88ce3032f2c674b19cd41a69b45ab3269793233783bb14625ab91e6764c22eb9737911e30d952c2a47a775e8dadb1ef01427375a54cb49b7ba5faf6466ad30f9bbfe13457dc76412db92d9a84c9f475ba1e21581f76c54908ecf3e14f54ed87ec1c9146b296237bbf2db6879b968414407a1b584eec438f3ad03475b6125ff992749483d66190ee118062ce264caa4fe3110f0801500f46dc1cf5e8c9f7cf2c6025fad12e8633b3ac283546771b0cbb091cd53fd959566c453b41f06d85dfe5fe7d9d2e7d5731d57646cfd7a0b22424c50c602e5e619ed079472fa7399c9c76d5e7c75cf0ea9d473ffba8c88d4867b8d19c +GCD = 6a578439a083f05c2edcd293c34cf167310b33edb30d8fee813e056d374a558a033519a1e271a5e52160ea4370607e019806923e080dbaf8c63824157c99cc80d1419c15beeed74cad27db4f9af54cf6f0ec8ec5cef960831be79d265715694fa7097cef5da3f1e4d7c21844aa7bbe1ad6d1dedde20ad88766094b1438706896 + +A = 2d70c2484fb4239b7be2b51c8d816db7607939a721fd1108091c99a6ce3f7b5edd687710303c7d824ef71b42edaaf93495ebd7e0dd4002b325a81935aec39f4044c370cacc4f099b06f3c4e7dfa63c3beba9182a358cee1b367743b4e248b8f2f34b1ffa01baa77ec2039be7bb969e4d1f4246e89cfb93408ff22d616acfdf17c7a2b41d1151e6853c2de04574913f1bfa63501b60a0eeb1df94b4e4a9fea54adf35c8119817c5cb498e47d9aca746a813c9aae5877004fb1661636cc3a17e4032db8f31bd741ad253235216ecdaaa42cfdc16b4387e0a28189cf147811546a12558d15d394523abad5327b6cb85452b829ff61419ffb66c5a9b0af6a11816 +B = 4ebb703b172536964ab4a8583b4bd579d61952083b712f0fc26019a0b960a5fe650612a1bf95401010c41e56e2c185c4b16d65306eb9945b68bf726f17962fd90436b88a1b897380570cd008c7397ee34907296df75a2bf405615ba50046c630388ed9f61a66a8756c5a447ab4d137791452b4a9bea297497a3d8a2d3dad91085dde290d2bdf717124ff9d7f2de486625b87574bf1a7610b56513b68e012fc25a8bd10251057c747153db7fb16d97952f88e191ed3213f00a30efefe98dd8d35f6631821a357915decd4db65276b244cec14ff9141f95f5b0d5bfd74a747aad9df25a7d482274ff4def5e52e1037a1d9546b44bca371349157c08649d2edeea +GCD = 2a82a48eb23be56359b3e5f315b6463a310a0b0ca282bad140ca37367a434cc5350fc90b64f3152949a59ce007868c5e2685c037cc57e2074a3b93444ef4aea3bf9291d5d096054fbd2eb7f5b915e8c1df0c89f41642e6203cf891916d9d40ba46a3391935f16b4a05608ef714a18b4510fde84bc457e74e81fa9cae067fa8c2 + +A = -8d8e49ee7f78439b7f11ad119a303ba2dd15f0e4f1f72e8d4d67658c18cddb296467ff31fcd666c9c9a02915e2f3eee86046fd5ae3671b203fe1c1d8c5ebe46db6e8f56ac6d2e380d333435279b557b18daf065d4df4519cb779333f7d612d10236be41ad4748989a06c2ced17756d8435e80651ea3e226badd39507a4c7a8d4b3c3411b5c65e56968be5d4dcaf2bd7e53d59bf027047ce86ff47265de652952c504716275efbe2f4c10ff2e053dff7f0584032226ddd98c4a2abc2564d95bcf7fcebc138124274eefd0262e19b7a384949ed7f50b91256e2a7bf7f9a6632f2d5dbf25be62b0fc18bbbee8dbb1832a7457e667a89088e54212091788cd29980 +B = 21c880d8d19cd58561207695df2ecb75c676ad8eb3a3c3d93418e25f4f8532a45d38d832a63e8218a1c159810fa8178db4624dd0d13fa383d946729f62c086a5d275b604c44c20566ab874b815d217d71725b8c9f1665986f5db654d19bcf8f7adf4e9363f7b1cd7cb52aca2c8b3389101e93a0195c00800516e7186b81d99f1c630574432d460138b96210c6963dfe6615ac4a5515d44369b3e9fbd7e151f63b467652912ef4728102dea2c474654bb6e2c4b49feb17e1baa6e89cf7d24cefc514b76b2b0d2ed0472a6a2776a6f125b4160faa47a5c3e7c78872e4f183207d4653cdb0c4708ba28e591c67db99d1edfea084108034d0040cf86f586936683d +GCD = 608cb28fcc93aae3bae0c987a43e3aa30686e1268854c792fd0a480fadf22ac38f716d22561bcaf84b6864700eaec9a0ff95dc92133703362509567bd92437b459873a6baf7f8ecf0127aef06f5bfc015dbf00fac69a2abc7c21934982bf2900a6d82a5ec44085c2958ae650fd39f945cb3ea6c3802cb07f9486b89a7f65cbaf + +A = 3f2ced217cf5cf5ad1cf3847e8c037321f2ee39da3e6677e8569f3ec4e4efc96637b9492e899e053089f256df8a7979e73c8e1c91b0a04b74349971388848997de4cc5517a7c2ace999ddd34db1acbe282697eac24e65b8c15a5f8722570cd84d6c7f6cf4d4f8723eebe9e27d314d45a3750f78ce96200a173f4235fc54cf9c3c6bda60706dc1264f92edf293dbe71f4a1fc8c5cbb59f0314f16f8290e40404874c555fa292868c3bbd6cb399d3a0e78405975548cd2129eb748f85d01205507f4a41738d5a30cee5da6b0bca2e1e5ba80ddaa12f1cb06b9f0f0e8fab000973f19d108a84241be744badbe0c7bae5cd8da4d7548e84d76a97739e42ec6e45fd3 +B = -45dc80f0970a8064c44aea117c846f9cc2edbe53a661b3743d9c66a28eb203fe02f788fc887bdd4a72d4b1d8cc69390c2d9f3ac324085bfd99eb924f207fad7aa78a5ea08454eb30f2603fcabb74800795fb718ee977d31edad0a8e7ccda308a5a5bf6284f6221bdfb4b1d1d8dae08587b58288b3a257842e2646e273b62786f2d6b2c2ee6488b732c510c3e678099bf49fbebb21ca28989b2b0f25cd94f80668a51864addddc4e7b27a875afc459b194c1b013498f87deb14d0bb1e30e73b5fa394eea244c0d6887a1ee950cfd2f6eacf78563c966cec78a3179a3c270141b63b7cc10d0be93af9513a64265a16db221762d1a55de12a2718fe85c2803cc3fd +GCD = 2d1af9e56799a3104788efc7cbe2482e23d3d419034745fd236d057aa42287c17e5570ac64c905beab44acc9e97f42b8aecea503ea2a3802fa4c1700b9050354750c957f8258153d52ff825a67b9bc9b5af54188019afce4be77b39a5190d57e8ccd489299012b1e7f528b5b7256feec8b52e422d7fd74c9e130d3576a10d50b7 + +A = 5d3d9f836b291d015d1642dbfbce62826e1106626276075a076b65760b22fa89aa775b834fa7930363e696c4b75eb71c18742a33a3f9cf7754c1eaff142a9a9ff049bcfbbae504779f513caa081bbd116867e792df95101b56198697a1f9a117ced81f45f6352eaaf094e8572fdcac58444a86c7b31cde18c82991fe58f4802f1386791143281a3c9c95e7d79e6b89e1ba3c68347e847105af0fd4bd730b1bcda51c229d27d0adfc1a4be1a046f31f5774e2db8a015b33733c04bc0eac32e4583d9e5410d16a17cbd594bc41f6db341f84cc981ce8c6d3c88b6477aa28440c8f573a53e88d3d8b8eda98bd2cf1f9ca6efd79d42470b9592c7d30553cbe05d112 +B = 1c7012c654e4a4ff773ef934c72d4349bc661cfd68c998cb8a9dc4f8e2ee66a550ee14995dc7efd5191dd800b0417f0420cbc575f7a84c203990099cd4a4f44b60cb5eb565deb005554bc3827bc0fb546927c0e07e40de514297e6f44924996e881cd738cb034f6690836c4a307d6f892975e90c0cd08ec335ac2253cc1da0ffc242a46794780b3304c8ea16d420250d4fd40ed83cb9243f5837d99aeb3d75e0dc29b29b49f9816170d4f48f13829221ac699088a823cb15e0570ce87d7b7e279891a6c6ba4acc6ba416af6d6f5fcdbc068fc0dc0c6c900ff131b368c0378c2d3cbb5f6dc0ff7904a813109501775775ae568f39cf560746ee5e729ded29b1c6e +GCD = 3c2ca5fb4d89f71f1c6281e70eeca0249e64f39a2c826bede8b8dcd2a6b0e477a16b56e0b60d71573714892d708cef230983710dc7514bb017593ef14f64f480ec2fe0411d8170936661963522f279a0a148f043a1c33cc9ccb5b63e0fd3dfb4bca0fcb45b60c088e0b3d58f7396fd1800bd32183a2ecc1e866babfde6ceafee6 + +A = 44ded5aca185dd694407bd38eebc9cca768cd27f963d9b5cefbdd98049ebd2831c80de83b725ddffb97b2ead6fb610e673a9fcd453a08f5ac0d870b345580e294825f396eb860de46afec56fb05f4f3b409aa7a1eda21546b3ea4eeb7e5323dee1c48ace3c71ac2b551139bb30a193335ae18ae50cfce13b091e5b43b68d59ef3da4cd837336e3cdf14f1721982e78ae29bc4c07c90f27783820fbe886fdb367a6b8e2effbf5a513e14bf08e28a78d186a74a397e272340e4eee9a9104a156096f37ae04d1d0de20a576ac8229dbdf8ba093d9519a7abf3ee2ea02c77d7de25a17849e66091e9353fe3a9b8e04abe6fbb6f9519636989554b7135ff2902124843 +B = -1f1c2fa161b604e95fea54f24f51c94317468de7e94b7b4f474de7b275939113092c49a73e49ae21e5c6f501089a2826ba562b9db28d9ff00d7ee600c1bd18ab57062b973c2a7b4016d973ffb54ceb979dd043e8d2af0b10bbc57db1d9190abc21e1ef4cd947f67c2a38a25b644615c80c72bf98ee62d2615667a842e954d7de3e68d03d048a9323b1be5d620b4a8a2c1df47daf567e0366ce5137366e13a8600192ea886bfcf4d56315b9759433714d0b8a092d87c92c9c9c2c6151eb661f2da6de09455d4086a15fc10d1b3afcc0c00a9241e4de0823a532ab3afc09d9f5b0620bf1631ccd3a470999e36e54d33964988e23ed9497e22687747ab00db8c432e +GCD = 22a354280da7ef2e3499f2a7766498d49782f43277ea6394625497be1ed6d04ff9dc5158af8ea751dd5ce0a0281fb7b1316d96cd631079485e7689aecf2ab6ae90e9b19fdd77c14bd7a345b37c24a28b2885f3664c2c7973b81469026ce27885c251bbf021b805e22b587e6dcd2e14ed9fc443ba63a44f5809c2077305bd4ab25 + +A = -1022e5ed6a58542642d4b171a779980552168e504f5917d606f2925cf30c84166dc864f4de6606b4d857fb30b7343d77c57c732dacb943685f1d0648712c7bd83a070557049764a9adca35381882d3622176fc41dbbbcace10d4804d17b2ae0e8873336208d2b979ff6a91dbf3580e3feffb99efa19e68f06587ddd81c41f7fdf7af7db856b03a41dddff08aa3d0eea9cd0970d5120a8006de36953c11bde001f11f7025a8c569bc93062d104058e77e9c1e0785f03a8792d4fa39a038af04b53f0922975c8fbe10436ae6d0f21bb2b133c8020a4e03484483e796e76239192723754093ebb308f9e0690e99cc7f1c15698c79899689d1e39e1d74c824c2280144 +B = -9882caf7b6f0eefc03abbe274a519c611f4be88253cfd371c204d22b72bdedb3d6c0424e205decb797611d2836fbe5238b7282076635299b4164cb4df3904c24b46ce4d14a624a88d525621cbfaa9c8d5e3508dffb3333d6fcd923a39ebd3336e82acd6441aea23bb98e293fdb5d2a96c0bb342402342960cb77197b454af97050d50839b63a03b4b4843c9b9a3e5d52c5d6232d9e6fb46bb5c258ccce89b4e3f3cdf9a4c01def7a9e2b1ba59169ce8213fbcf6dbfd1f55a976e1f88ec3522c26d96f25c1fe85c243c0f7c12810732f80287f706988364d59bb3177fca0fa3686efba90467ee81aaf42ea43d2e862fd941a679c18058ec777668ed8adb480d268 +GCD = 6e3d9c18125d761dfbda9138efac235d55f5099154f1584ec213ceab34c557e773e8b57ee5fc6346722b01e7ee7d653f5fd04df80ce2f0fd060bc53616eeae5f8a81644bf5285fd352aa58e05bf105c3d5e511ac2e8cb470c9ba6f1e3d904d7027f89012e0fa0d02a3e8c289a691e6009abb4576663f83dc21541f96093d15c9c + +A = -27d092935233ad95df5168764e57f35c82f2ec39e0675dfd43701ba2df99aab5bfda270c85bee01c388b1599b58e290eb03bde342f222baee86cabb639539506b5e40dda162a40788e67da48864763f55ee1f3fe88c4dbd8ed14e7638ef99626352053bb687c6a09546d01de5898d62e6e07211536f918c3d2f3b15b9d7624ae72c3d5f46f620c1f325dec121ca609ae6d0df3e191009b6ca824d1620db4653dc4f797b5a6f9512a73442c610674fd8fcbafd40d5da36b1a3e1722af35a7f67c8c5127b7c5eb9f29feb2544ca2d84e39d8291fc9543a5c3fbc3bf8039e0d318949749039a22b07a374eab5ee414ac1d84cedfde0afa1acfb4c4e4aad6a5669ce5e +B = -22771f47b6835e4be04657a7388423bf339803cdcff3e92ef4d00d988c642404ac0e81e7a3c048e1e22085068fc33fae70aec7da3c15474246f0b0190afda06d99b5b2a728afd3120da6bf986fddc623d8cd9c9838cc68062169e1da5586ea56a5e765929d2e8b9cd7da7388279f889e24fc06199d6d3c0498b97fbeafe6cdd56c8cd74985697f5bc0b21fa9b076e980561429638fffd6b46bf17046530963457a530e98fc7be10cc085525b38838a380ce10e73f1d99b1a9b3d4e17e903904868a03f915c35aace842caea138b23dc6bf1e5f9843e4099bf1a5e52c14ad190fd2d1dd2d8e06725cb88c8dae6af357a853ce8a201ee0dc6167ba9b67e309b92298 +GCD = 8d3294371baefd04e1fc6f1fbaf5113799ef022f2c89430a940a862a3d3ef1c5cb3e68fb2c860961ccd7b399e25571b55dea36c187023274333059c780f53944ff81dc5e5bf2ec0dc488716deb59044048bb9b619fe1cc9635b4f687bb36c89b899731e137db1f76958053f0e52fae11cd3cd34504c884ed7edec573a1c031e0da + +A = -122630249adbf9a46c2181cc6a46e0016742b5c7ea1c9d971d77a041172bc232ffd8ce18d3e0f4f6a735099a2dea3d4b4bcbdd70b20bda8cb7bffc09b0536c4c7cc7ffe544985302f08c4184a96b5f67c3f64badcdd2066d5822481e806193b7d83df0c8f832ceb2f0799be735a1028ca59cd9779c8cbfed1be89c9fd969da81bde4de41847d50405a98d273f90a8478a41b0d31fe631a411b38dce71a9a0016ff2774492bd62a8ec70c44ebefda0c9bcc674e7f4b45c17a93c52b764bbaaf28ecd2a1fd73c7505c6c302536a362c6ba02fdb794abe4265960286b43ddfae23b713d6f0fed51ec7543605042bbf2eddb756d09871a64e746bd7a68053f0e74bde10 +B = c5ddd85066c65e1369dabc68278fe3ceb033d21ddfd3f7097bac56775d93c45c98405f79bb0e960e6e8937de324152adb152887c51fc7e8ac01d472877fb507dd034cd4c662db8e7ce5bc23db34056591c639e52e3c13c0d68ec6aa16426947f79c759974f956f0cfebaaaf89c29c7dbd5e8d722fa35c5a9587f70f4cf082a9c992f35a768918e2fbeb20ceb717425208bb3c20747daa67ea9e9708a6a4a8dbabef958fbbd4e47fc7db110b49e36e758eb92165a6283d8ad80231c08b277cdbaa87c549a8f64cbfcc1029658bdd5a24a21702b1c37c32c01937cb808410144844a53a347d787e36ce14fbd581eab309673a11dd0b200d0041bc102c716ea273950 +GCD = 12f0ee0c662eeaff462c1baffb25684c415115d0c3dca31f7138bed62a2ce98f0f7a83daa113a2ce50c1f3317e22f0962a01da9f1e2aab917f12cd9b4cbb8ee9113ddaf1080c9dc09cf7dacc27308d6b610a3bb64c98357135331be3c146c2f9dd00bedbb9f0863281ce1de58186bf9b968d79c31216b6ef331af5bfceb44a5ee50 + +A = -3d296bc6206930c4f781b1a438c28e06751278e472fb1d57b49b5587ecd7bde36e4aec743ad9864b3a91f4b448d996fae6cb70879680081ec2c6b95984f964fdf7c811aa09cd6fa0b15dcaea0500022e68fa7c39c04c46ce398d5c72cad23d18e073bc2e2e4fe0dd5b333f2637b4b26818ffe8e41fa5225c62e3d04bbeef39556ce4f9b6c8a2228bd30a8fa6670a212b2fdb64e28dbaed715e55261bdb7f03b409b0befc70e225e9544d0249efbdaac7d2748216b28b941c415f4bdf2e0e04d7f2f2f278ad4c16f8d3591259929d9958369d37ac1ae57b940f0f67077d77232c8452d71c5c5e833d0cbae77799fc99cf2ba698dd698f133096c975cd5279cef1a3d +B = -3a088c5c237b3073fb015a3f79e8f10153fdc8e92a880615eb2ebaa10b99914ed6c29cab2006836ee9414bea85883a627573fa2d1b3ce3f3f776264951dca414238ee0b894220ebcfbd65c94e6ea7ba8b98d23151d6d936dea1708b5cc1bda1fb39d781eef9a2096855b32fd96852fd9e4e5589bbe6dff7d9d05023b9048d789d119b94aa2b0d6c1caa3b62b7798db1f60ce7da9d2331143330a5057f00316d433e7a2daae49a4d129bd7b1633dcae32944f1d0237427887733b2ca434c1412b21db5672f32cd52982d832283172134be29bc4184ad3b983c28d9579bee7183566aa1010c929b0d08769779fa59739f86e085ddaea2bdb951c2f8e5e62baf29a8e2 +GCD = 24c2810440f3d4773dacf9f7a67b2cc0d03b35c059bc6aa3b8aa0f0a5299954061259310493cb1940a2dc5b62537ae82373b82ccfa115413d2d3570ce4c4cc5475102991617363434b0394ce891a7bb8cc49035fc9eff2b4df6a49209fb441195f9ad7334ecddf78f2dad78c50719081f1c88d5df36e0d1a2f6024239b3eef8de1 + +A = 880d499496e6677c1f1e86c5217bcaee036ed513660813c1b2f35fbc7bf500e0cf00a9643623b8849e1a5b78fb86ebd873061139a11ae8b1ea482cad5b69f04a6db0bcfae5c8944921b53ccc7c531c7a4a80bb1368f81a04a9bfbc14ab1d7b197f5c25f7a8ab853023a9752b06a35a10b434b5fcf1f5768c43fa7ef9a9555283e019d22e3a4d8ad2218670828e7dc06f98dab27ccefc42fdb386830245c3397838a18d59e0c232b2affcb4fab7965e67fd103596613c83bc4898c710ccf106853329acc1f6d70283f697feeb0e1593cfc69c0e86e58829cded2a928b4410efd5f1f9484c6684207dd8ccf18394a0118f5c9e668202219dc09de8071ef9845044f70 +B = de506155c2408beed4de5d031ee47d882806ba27fb8cced91fa9589357d96a96efe68bd4e35632ffad751b8dc384d563031862a612998f79f1b06beaf53e98ea881f70bcbc6261b1c4bd2579e12b370d4e01a31dc5a2d3bad7f3d2595e534f980ebbd84da0d1dc23f479d9ce7c9657ddc49a4845c2652f05a89607468c27b1342c2b8e04032b035b605a2df2af7056b0ea18da94e3eaf6c7f2201508e31a94d482a9f338f5cc58c877ffb589bea816a83db41071f71ee254bc257edb76bb955887971490b52ecc1ca70dcb61b5bdd9d70556bb18fb51bccb0410b204014064f67d50d707be0dcc9d56ec6e6a84e1095be1802318fc8fdd049070921c833dceedf94 +GCD = 5999a34cf31246bbd94d697000e4ecbfa9b2e6fb473d0357f6cc681d40d5bec39c2d063727dd36bf3d6d38386a09e38ca13d967816aa5d9d2c3f0edee4b7332e0be284d959055658bec645dca93ea2cdca8419e5f7cab41b85f33d46663bb20869798a143251bbdc3805c6eee7ef27d3f8a8843844863ef13ebb48db7ed58ad214 + +A = 42664fa1ef8ea6bf4a3dac8e6498f19819f3fa02a4aeb73c712b43279ad3a807dc7cfea3c4a8f563b61ab3d63fcfdaadac5a118461c7db09dd17a44ac35c5bf0aa6103e6285326576cbc94762247bb3272b5a447d194e4868b9be85846d55a64d5f0f6384d3016bd139682f966f98b87b08155547295bf514a16c94f5767594f2114a3231d05ac9d672711f5775cd2db0306e517a777d3fa2522078f86636cc1fda0c6f635b6380764c9cae50b16878e5b028ac91aeb51cc9925d47b23873c82e7936233147347504650fb4418409c7b4e6c6ec4cc3d52fb6a9185965c4132149968342dc623dbbc74cae5ebcba93756a5e22e4c24a3ab2530728b6f286f57a8e616 +B = 1e129cbe8232716ec69adc048bc1dd118946e04f0e981bbb948e561c0151e78bc5b4981d0b7a1b5741d4a41685049395943fc01516f789ad0c5f6bf504aea362599ea73c3be6c3afa7f468cfb993be3c33eb2ff951c7995a93c11b6de6aa44cf404fc5000b426f8f395015f2bf7956c6612edb9f7f2d5dfaded21433cf069f51e5a1361a1eb370bb113f43bb3f52ea2e3996a8f0c7c238169375ec9a45ea5bd554609be60d53ea9a0327fcd893aabf00b9879ac539d94ebddfc512d90bb6e235d842ced85024c32f1299a1f5be22df6bb9870de6abf0809af043b2bf68a02e14da734c91cf786772ccb856610e0c4e66dca7020ac7f455009e87b7707bd43683f3c9 +GCD = 9e8648a4069a067c5c165312402cce4e3c2afed8203a3902daa571b57622f38bdc2c1df7c9936ad61a65e5d58b1c1119df5be38aeee409130683fd0f4e3b8d10e94ed7e95283ce981147863f656c7e1f0c94d8f6804822554024c7acd77db03f02062f5a5d8860b73aa2850a2b11b443aa78ae7feff331400ced3bbf8274ed3d41 + +A = 8a10dd2d80ad1acf6f163cb29f6c2168deeffb44cb71f8a7a97ac991f330781d412c12cf73adc76b45e1e4d78b3c68215de81a7b991894feb6b1f40f8996028d0194e03339ed1170f24f4c3688aed8bcac8ab19ef47f33126112c5df2feba5517668637821ce68b64c8efc2cc25785ac41b5f181e30dd2a90b4a7ec5bf166d5b9d756f97c7415cf45a501d5b639299043af483a310c439c56cabd62af455107bc74e6eb36c16b57ae1298eb81189cad56465a691346da1357e8043493a13317c009177c096e6e46d78bb18ad3ebd289f15dfaadb58227ddc765c7bb677412713b001c97b64256f5dcc99d6828fd378be65f6fd0f6c7f5beef034a68a15e16cd4e6da +B = -19be28ec2cd1023085e3b5e3eea13ba07762d251aee26fb3856b720bb3e8ba4cb7ba97f768a85539171feb7204125e8230f0e8a62ea510000387ae5afa395280f03ead685c2209f53519f8c6a3642c8e5af10c6b0321d8a47a53425896ea87b64403aff68f1fa0e29f33e2f178be38f92f8ea51aeb1cde9005328ee6dc8360f0d516be9280bd3d81bd026222bc510d58400094abbf9fe2f7ebf26d77682ce695e716abf2a3658d242fc693f0b2cdf16487dcb434fa2806bc407ca39e7644072f40e2ca1d692d45e2a4093bb5d98c6d085677d4f268603e9f32864961a3cc66a6b901ce63b979f5bf96b1257c7994e52d3627f9c8470dc62458cd7565ec027e74ceb64 +GCD = 1e637995253db39d550bbc2c64444c3730f91ad9876f67538abd456e824d316468066ff63e3ced26776270d8114c5aaf0b9b59c7ad9c9e401b9753b9ab01df767629ad55b56bdc33ba6c92904703503dc0b786d537586c7403b9eeb6a2db13b78e4e781304f9957809a0e06bffdb70c5e665703be8b03e350dfe45fcaee026e96ca + +A = 3c3b7fa369023905f43b24f1d3ca278af92ee61bf3c075bcb7d93272f1cd2e9cf341cf5437b67a06aaf999d1afec6c7d1843e9a37dd779da0418c414812e1ebebbbc30aa55960eb733062feee5d2feb4e296d82e49e1e8ac57989b5e22d1aae76213f1f4086d4e890f5a9a85b0ed7826df5c755920d964f311f85e50e29268b05c4af1e2cbe43763f681d76262d39627d40c098216922eae54f21d5ac78629585220ce0de6d4ef46525d0167a923c459f8aa63cb893e09ba15e6730c5888a8f70e63d9829d732c172976492e4053f377e2a616ec67d0d3a8db390e6aabb233d7bc361f0b33f5c934606549ef7aec4b8cc089bfb049f6f8f3f28452bae47da1797a9c +B = 1bc847100c03ef795bccb3144b3c4d6f76329c06f5ffd5cee5663989baa871fe13353d4ffc9cc7cfeabffeb39646941682ad3d17cfb4cfebb578fbe1319dae9136e5b76ad41442e00919f52da306e4221bb9e8a8ec90e34dd632d7f5d1753a7d69b8711a004d51e3f625aa8cde54cf425ab7c494a67d74caa85faf58f5f1864348ef305bc582e7f1520f1fc2cf0b42debd992278262244d0a111e61ef942ecbcfed603a126dff45968ba6b29b5161cdcc36594419f121a7d250862fa99e6ef6e2cd06b7385c47829efd298fe4a98d9dc3574931787ff47c5fd8e1127c173854a621c4179c90359e411be18f9a4d9a213b9424bb1328267aa3a5bbd89f93f2e4e69b8 +GCD = 2ed040b9d16477eab33ebcd47ee9e4ff1adce5df52bb02413990b1753bf475cf93729be096caa3028d2c93685d0f46cf22f424f80fad643ccd36438221057fbec594d90a6a3396e762cd04f2367ddbf1d634e7b9323aeb56683058fe51fbf05554035d07d896e935dc7ee43e35f27d36500b15249892ce848dc9be63dfa96d6d284 + +A = -62a364660647f8265008afc2974862554d2b2aaa942fbb0407be48df89442645d7446c505b43007c85695f7577b72819ad502ac4eaa4cdec4c530fbc7b92a8005822516a32c18cee1d491c29b16dbd584d3b0d9c752dd01f11810fca4e6aee381a08fa97c3dc313a36bd8ab1e37c88111dab161fa8736ee9a0c3ceb9531d03b3f0b8afd57441a0518ed50785e856ee8c5791459fe1305070bfdb736086bdaa2c0902134a3361154d5c1ed7ddd83afdb9c4e5aef5274b2bae363e969261f75c289e19f2d758a04f26903405d8bada8d100fab0ca531fd1166a7427bc76e8360ca86bb94676a75fbc5db11bf74c39c387e222ca34aac91e5063d1eb00e78fd990b53e87 +B = -fa9080f1c8e490a5d50ff202b8abca91cbf9fab150716040b4618b40c61d2d970494d9e0a4fac37a23b27297130c1f13f6621cae045bbcef5018a20d651d62e665283d3b4e48fdbf2ec5c7d68e18e7215b3ce19570d7722f6826ae37241c7e2c52a421ffed336377fcd97ccf962c007f6bb027b7472afaab4f85d80a8b0a389e23672e9fe4186e6c59f68376be6f602d2786bb23d2a55d30cb2d411b35e6aa36d7340b85112f94cf6589d2b798820e4febc0b8041c8410ba0275d89e6da0ff109659e4d3649be1c8ac6b9e92694af53e1ef7830b96d03b201d03de4bbaa2d05fc8dd588e543f0e08bde0871eeb59ac940f109f05c89312084468bc31cdaadcff33 +GCD = 45c6eb6e4cae3c81e071c3e72827cc2ff782d8c135276669162099d81667c07c499d67a7a7344c99cdfbe00af5a10d90cce05a751b65f6aee02a39f88f619e6dac16c944807a725e300070474e72164d514e94f5399bacaf1695f4b35649825bc272cedafc5b76a06d5903e0c7aa25c1e653e0dc425cd157efe4ab07ed19d06bc43 + +A = -1b296994fd79cb769d59e51311d5e241a9822b72c10a53136ce55dd3c28340abd6e4cdd6ad72a905fe96a7a8dd8e5f2042c975d64137124c6140201292a98f095fa7ea978a0c7ba97ddfbce7d297ae6e23fb48590355380419966c30edd9b6b29bed9abbca475e80a61463e388e0bd03b5169928142d6a7612935ba934eab59159da3cf586a13d803d495f3d41ba3db6ffae334175b34a50e4f6b7ac66e5cfb2202f2b8882193744e43ba17bbfd53a5d865014700d6a82c99b6433af33a1f3cc33f04afdcd69b029f3e9bc9a9bf40b5361c0003dfdd86449f69cd38bf5f30bd625f87c922c4e5d6d55080bcff704288deb17ccbffb915a4720151d5978fc9e11b813a2 +B = -4947c29f4cbc4414cfd65b8b7838f4e74ca1594687ce6aab36168212b8d77d276610f5addca1c8446124481c6dd2997e90e1b6b53d9b643e08722020dcb6bf51013500616f7239d55426515b37853cd22135b5fcb619194e3a373cf5a7715f4817d6809bb960066463d522b071ce9175a82385e7ea5390a49c4735c53f9868374ffbe47be53e2b5955c1f09505151c2a3b937c593b02b8407d90b1c8f25e8ebcd8ac3daaac6927cd664ab3de61d04eece2629e6924e7932e3395e20d8654e03beea144e8f16c4bd96a2e17208abd0fa4ebdf8f0e18e96adc86fe4ca9d746bd3d3f0ac8c13c77b30da5f51d60f9ceb5d7060ca623b0bfdfbf50eb8dbaf2ce33867f1e5e +GCD = 25ad2f69dfcf036d2059cc9cd99c1687be6181bd59e3a59350ccc4d1eb76fe35be9df936ab4936cd6f898862de133fd7bcce05bc6c72d4f28276b3e8aecb34cf2a96b337ea35c326eca7071f010710b58de5d13ad5252ab8e92a6e7966876a5cdfb6179b0df7f81b82ab2c6cc83813b999588794a42fb82e9d246cc17eb31c385442 + +A = 1ba30663617d1371aab0e7874898f6e4646ccb31d3198352109a0680587232ab018a8ccdc948a7d73a2ac51e9625d808402b76ecd3135c10ba05ca89b14620c6c79548bfa0a429fd96f5df7e7c2e923da33bd99ed712a94ad1d2de009b286c9c8f0c8aa2859171728f49d93502949d26ff4b2fb1118ce8ea3449dcfdbc90444d8c18600e71ed278f9486852ae84d53e07bcddb3ea1136c0c1e0ae54b55fb6348a83b221685bac25fe461ba06f191f6422f8d44644f0780b2e2567518f460b4e2dd006a697d8b9ff3a6f476cb338356aa8c7fd601dd5521c81e9e1854b26baee4fd13aff8e945bb8986f9aef8f010c5bb5d82ccbb12eb3f422497544bdc538a0f36281dc +B = -96bca9eed1024052501e75cbc0633046d577dc3ef25282194a844e7fa3719609168ede72cbfbb4f4466e31211bd76457bf9e8b3bc784df4aa7317d8e2ebb346d2ac38aae3f765fc9e09a5acc30b05d67a3335727b4a2db5952545395147412aca32642c3a3bcee8bc8c8aeff88522d13f90269f2e343b7fe6210cbab1d76e57c87738c14226965e4c1abde211980812b236211f707b6d0056116e7b8254da4b966db2fe1d0bcbfeb3eb1b270c946558cbc42a6229aed6ee344507a1c7abd1f6cc942cfc82226e64c658138e1979f2676da1dbcbe3e483339ff1e5eefeb4a92e72f69011f73ed351e2087b2c003118327e05006761580bab9ff28ff3b15b32b18797db2 +GCD = 1cefe3ac66ebe9311b57f32ec15c00327608abc08c8e0ea3734fa823cfd6a99d73f10ae00d571849be753a7645bc9d0d5f3f964b27e5e87628c34431bc928cb2f1930e177f76e340aca6b4e18dce426e2127898370d1211203ae043fc1996b84e99470d1a25bb0750f856122ca32444f792c6683386108d0474bb3bab0e971750f8a + +A = 478a5c3fb819ee019af7530797a6507dbc6db51812cab82b89b88bc8a0ab29d9964314304802b82f590af06a77334a569b3055b6a9d5eb65e9eb0b2c8f7c402668f90f6f6b468cac6f1cb9c4116004c192b0266c07b5b23012911944900b88ac5bc611f082e01b024bbc888b43e1330d8864ef89225c8c378b0af4c3db8ea4f6f16f35307b33450260db8219e1852285cb28396f3be026a7a49fd09c80d803355220951f67a68b906e4fee89c8c47e6a2fb465be105126d30bfc7f9b8801db3e79ee1ca8b3d0c00974682e868bdd3cd7a07393b26108fd73679ad6faf539b6cfd0debc51cf106d37b629af53075b9aaf52f06fb3cb1ead8d2438c41b0719d1e8152cf00 +B = -273fe1b7359bb865c48ba7b76d09d47e6a6e24e5e916cbe0fa0f16ee90497f498553b490df54f84e4f9948c5bf6056d7e1c4abb5c34576fce390775db49a46184ea8f0e8682e480261ed987ce9b7017c30c80229db8abb1ce1a1f0686071f88cc90ff7cd134bf5eb03c321f8f714f680516261ba86d0a752419423be905b830f5688496cc498e35e571fd10d8820cb8d19415b79bebb16a0f2d78fb42e5c6aaac12910495b0d7a84583667ae6584fed3f400c76783e24031c6a9ba6fa06aefd1b456fb721ed0db24494777bc9fafd74a0d4f86bb24c1794f2ea38a618bba57422650159e885eb81831e89c51bdbdb14bada21d34d9a9a3c3158bdd373531b44f8eb5f80 +GCD = 31ab60b9fecca209c50eb632233a509b83cb4b8e99161eede6d02e6a77c7fe9035eb3afc9fa10f98aeffaf736f5cd9a8cd1f039c9c247095bf2bb9f42a07ba0d661660fd165255958018c867585f2dfeeafc40a9f4bc56fc0f7b21e5448294c462850b5b82c0ac147ef399131bc3d649026fd12d80e75e8f6b6e6e0821b7c32b6c80 + +A = ef4ebbfb56802a5346ca57ef6b20ba3643618344fab5c3a8370eb1788ad9359c6072e3a8d72791e344bfe64e16de468bb2c11d19f401401e175dbd22ec2282fc93f399dcad1724f54fef7790af83bdb43804bd68bf2bd871da73d5fe8f81b9c444130aed1e3bb8ce8e81773f96e1c816035aae1f16e1a5b36e1409086e31a60da720d35da7b0b73553b9e01fd8c75104aa371516e699e86533567465606d3a6b7bb2bed2841754151174dd1213d2ba7ce73f4ceed9ec50f219a18a9e53f667e8f9e0b0f91ca8792802d357b577c8c39bce244ea4219e080606f33bb333971dc3af64e47058bb5274d31327c38fe6ea0c09696398fc13a220b6b16549d5a15fff28cc88c +B = a586e32cc2143ad4541ba9f1e50f3fc43abf06e88b1df4121e395f0929e8d5cfcf6567ad1213810630011e48872cc27e3f666912eca9d157bebdbb77d6aaac64f0ea31eea1f3880d2a6bf236a0aa9fa10423111373d641f7aab4ffd7404e026b6e1ed2c7cbcded9e76b2b091e7049b70ff140cb02014444cbe342e86a61c064466e14ff77606deff5ff09e28aa4560fb2aa3f726f3395ef3fd21b7b3bafc0cba401ff9802ee9c331404ef30c92cdc669fd958096437f9c0eeadacdba4f213001377a8dcc1b007abf6d72a50e5f0d8003c46606f894c34650b7d63152e2b07257b61f4b78d681052eba3399fb94be715f13397d912794fe41ac221a81637b59019b803d +GCD = 639815f214c4b22d3b8c2b1924988031364d49f42b049474f385ca466e87e2b78a7a4f1a3f598c6dd42a35438b48d3ec303851cf8527392046b3e09fda9fafd93d7cbf80ef556561dfc3d29885abc8309c65504963deb020918df5337d101c5fd6a766feab93d04f7a36b7f2811cb6896b62c04703bd012becdb287b83cf735da987 + +A = 660aa07b71ddd146c1ad4a96fda710b8bed1ae67b1291fcb476e41260a8ab2b9f7ff01db898b6a75f1441a630bf519a08dabf0c0925a6667f3ad986cf768e7dff357a7f5eb86d5f61e12796b5f8f57949df590abb98c130d5f7d6ef45c80dc2dd757822fa4b55ae221a64900b18a18c586a5825d5d3821071f123d2ff5acf335cf5f7aee7db76f14525eaee94a134799c848b5a7436ba962570bcb092d4295f975696f952f64d9dd1dd3fd4a749ce77eaa1f049a8b8fd0865e0c4af34b6024c532580a05c397c1189997cc89601a6144d75916b84367186c3a5cbbf4e2c6dc1a8989205511eed59e14098bea69201aabb1e91580911b94c77d21b8cd5b8189dda506a01c +B = -6ae5047e9773d0c71b1d32e7a00223e99fdb6515327ef026c494c6b13b85c31e9374353afc16aac8c2569e0186454107b2ac0ced76df60b9fc6baf85b2a273b05e33e319a3f9f2175e99b1995442d10ad639acb76389c2bcd3796e0969dca58ae45ae6bdc70208339447a237d6629e316ba5a0ea6ef1fadcb0f6d686754a4d279f9dfae41c1e96c276e2b984e2ab1091bf06b500181a64b53b431b1be53678f16604843b13f249fde546c92cf92234e477f096d73390496032c9725cc15719ce8162f51fd69932fcac4efac4c6025b1344a3a2dbd0dfea936c6e85a4521a983feb787f1f0f508b81c1c88e2a9e486d9894faa042c8495bb239c8af4cf288cd828dd0bfd2 +GCD = d8c1b2d84dba1ababe689df7f9f002c334aef2497dcb45053248ce402ef7eab27e74ecdb1ed308ccb540170dec9a51b50ab96e10d57d89e63b45a0412a010d7540b39300e65b5967f2c054195f6ca1e783f455991c37924d9fc043deb534615f0f48ece51c20ef0d813dfd288da02677c8af8338b054ee9c0971ac8abc56f3d5f826 + +A = -6bd8bb854e44382cfacdd6dc062fdf5d6d568e895f38f36c8a9a0d63a84b2c3d9facd6277538331172701e818029fd17bc320bfd4a6c869e3c9dd2d03bffd29ad9f4a0993d70228b58fe876e7538c66d541cb832352596bd4c89c29d3d8cbae8225d32a2ff1a28e32b1645256425fc8134161b86d7ad3f91417555e138e1b65ca1a78fd08192b5f9903ffc2d8c8fdb4003a0eabb51f0cb4c519d53f7e8b55d68e9c5f2caa55bc7cf881d224fedf71c6a40614e83f65331aca2d351836159348af6c1d0accc07a175ca997c82a044c2856361c1acbf97fdaa7411c52c71e640f50c6198434c4810a83eee537e261e18bea5a2580a7e34361bfd8e04aa06a6f3f0f47649e8 +B = 82c86e23ef4c129db834ea5da9e3953fe3b35fb0adacd2b01c4a42b257290b53d5532656b0f66808e1a3b8a194febb9fc4f08702560a5c6bb48c05f4a56b6862965d49a1014b8a317b3487f23b765fdda605d7322d4d5fa5ef2a245367e7bda972fc0ad4db2bd5016c5ce639aff7f31ed4968e79aea482de806d156fb74155a767414e23ac86afebc70efcf657062c4cc1a9938faa1bf90304941765626fca23b4091a6a82eac33d3aeb4f279c437688b00c08c2aa65dd955e6e0daf81b1c80ff34228a018ac0fb475a8b0b1b837de37b6e01b2d30177d65965f56ef60a8f72fbb47646493aee32963e7a63fcc0b7f046e1e4d32810889634a11339c14e4b827cb320714 +GCD = 205328dabed1a58b47f878fa4d310e2e1a18db441ce371a625c10149852cd14c35937c50e132b1d3f16efa56e2dd088d8c6cd6af18b2318e0af5d0aad80e031e19a28bfb88fde778e2d03737a8725af4bb6026985a789fb208a5043db76a62f618b12e8cb5dfedc8753888160fd74df134638d44a5838ed9246d0b00521b953ccd22c + +A = 45facb489c84e19e182f255ce24db33c49e7b12a54b71181c72c945fa3513ffe20e3d9e752f65c69e7175150dc822d7f8ffa85129da94224af72a1f2c41827aeb36ca124d12f5179eb5d31312b8e0543f73cd78bca197aa019356995bb16fe9ecd143edd4550a7b1a99f32592e89bbd00356460ded590a107497acbeb5abe2b75c5e1bec98c5d3e998323101bc920f90b64aa114e8ebe81cfac725466b5c56f607992c55d8aaa473de9cf1e75aa562d739172a38fb76f2e11948ffec7718fa8301a5d77688ec6edc80c23e866cf68e33a957f3c82532abc99274899f05a0dd47a44b147686eccf797e72cb5d7caa6ea6cec8027c8fab51b5748c7703a8c9d1fae466b5018 +B = 4f3bfc7c390e4b2013529f43cb855675e9e375e6f394d3a25be8e9f137e8083eb62ed60efd901e54ca601d2db0a04981845a1f16aec67a1c35d327659c4ec55b50e3de0506957ca501fb8fe9fa7f90be30bef19e14f156b158203bb3998343a47f7a47d91131cf1c8d927d67bf9746d8d9dc3b6c90d61b9ca4d6bb2b50ff140e93d226134999eaa8bca183f04a300fea185dbdedce4bce79e3b015f8ae008027f6e4d89dd1188fa03d46e6b0602e8c656b1fbf81ec8f9560f4e6df513e4bee6ebbc2059d5366c3ed7b71c78f96df5abf8e40362d17169f8939e34441621af836da20ebb69bc1bc6d4b2f47468d49228b97d42a9f15e0e84186c6f3aa08006a04446331f58 +GCD = 56814ae30565d9ea5d1a77feef3072a708a03d4f377d20abfcfa0aa72acb0be911e0f929b760c357ef76262a6c3e947d843364430409acd6218a5919acfca9d11795dcb82f78307880c0b5ef7acab1c01f1c5532f38247d34a3dd845e45c7a64daa88c6b2cd33c4d8ad3594c7255008e693c3dd3e35aea1810c02af06f0ee52b60f18 + +A = 170431c12e5da1d0e1aedff403f2f7e02d7d2df4f5c7e70b6ebf12f1993de5e289432d006f8d3e239808b614fdf917123da677b092f595f6642df5b2db8dc7ebf7786e4a062f52ab777986ed8d7ffa05a54b6ee27d3b69ad8c8956f9d8fac2610870d45531ebbe39790466e9622a80f31b6492e06d1183e0933fb15caca0851996bd9e2f1fa8881173dbbf6f65969314f83cbca9a7d7488964071e75a85ea50d3af88179d0c8ac818a062856b7f12dc58a0478c9bf9c4327d0a45c2b185183ded681ad36678c035b914cb82151bdb88fcffa1f488f2554b1edbf12d16c58e4a792a489e9147d5d84f20bbf5741b9f1cc52794cb53207e31cc146be6cd6e78d55692c8bc0 +B = -b5c9f28d6abc091aa453dba450d01a7bd62b60d71ae0e2fa0f35092afa53de49c77989ab99c71684bff7578aeaa4b2eee3b372bc6a763b9a365eb94472b9f4a83166ef4a59de9db0b6e84090a8b9d7270639f78d8af981d070102db58534b6544a35e80ddba736ecb036740733fe7b436223d97d3b3939ce17cd1ac0e2a14846328011d6621ef7c6f726451e5e2344ef5e12ba9a5e9098e29c67af968dd8b599cdb785a9e43fa0a0b07d02f2a35e5296097726844c70e8a61367caa7257b6a22616116aebe1946f2fc2506ecb32dd43ea02bdd5a3fe61f1c6d73b5be3e9aeff42d11d5f7e0835c464f9e688999a2046d4c32a8ae501a798152baa6633d5ed464865a0360 +GCD = 43b413a30d57328a6eb27e1193168df76da0c4b8b900c859ed7680e8fcf2abbdda4994a0710b400453582a86a0dea35812d19c07889b73040a754b2d4d8df7e0ac7d388ff7219781ea0381f4c1322e207486b0f4e5231078b11cbeba57375a71a11410037546b5c24829aa7ab85d87894c3ed58a70642eded9edd2fda2881cfbbafe0 + +A = 362d093b97bbef2d9410894bf0033199bfdbdb8b452d79b997bb0f614eb51efaaa1499b3a91d0479953ae6681b337cc19fb14bc8753d606f0880b34ee9e7256314aaef9757295581b1aa83fcd9ec9e3ee0c6b2fb4c13b4569532e06e86e480645ea89776ea9217c764bb5ce08c5b686f96752af5d22e705b38f5566a0b512d362af51c004318bd744c21beba52cd2d4d45cf811fefc57dc3e5694b7c809a08e18fbb58094c5707921fc8d96b7a2b90453cdce7863ab538c183d43ccdf33e898f424e2e88fa0652ace337770bae72d8a47371d466510ce432a05aae11c3c02481f65fc5e87f2d5535aeef52bd7d242601de8602381a03508a643efd1f8c6fc28cd4a0672b38 +B = 14673926e6be16a743a789298e4e882675723c475ca45d7b85f5a62b9d982079f9618a7cf825ec7c235a6e058dcc2aff331510fdc29034f29aecff663493faf7a600a9cc4d130c994be02f0300529e0256940541f83f849f31b13bbe07112768e032f2c92c5c37689b6622dc9321a4ce726858b30274b18a69231712864cdfb29f13c4164db7b1a2ff640d7c32ac4f8b7181be6c4e363cde63dfc1232a2eca9f58e3e0cc7c466a6c92c70930acf58f28929eaf1c64804551cd3793e4fa629ed7ce4cdfdcb1753621c9929ff81e889025cdd8b67aef79a16944f256dae8e3a9e2762563b6072e29d3fc393aa6866851548a22d0e3f5188a844019dc0e47903c99213b0f94bc +GCD = 31090b46338979b42b5c3690f7f197cb566af32659baa035e884bb6601f99d2612e3e613ac8c31b68af42f2bf52c9ba9af037e96c638eb62fb921658e58d805fe4cfa091cef37be5be7cc1aace5029f332519c3e01d76983616d9be40aaf0004fa9949fa89a73f6e053e0d18dfef1c1204a16e8776d64810ea3559c5fd0278a3e039ac + +A = db63d208a0633a246a89fd9031611b78bbe9d4a52c2df17383b5fff064f593a517c7a77958fc2b9285f961bddaafc19c989e73f6f1ed507013b084309467eec3381d28414330506b18150ae4716d09e383994ff3bf96fe36bb22a905637574257a63ff1efbeac747a10edb159ff7f8cb81a43723c76a29f647bd282b5429ba09b33894a46e8735d510865832e73c4aa5dae5ad288909cf300fbe50a52bd0eae44f368066015c5bf54a3be5f8b41dbc4a6b3d4a231f8abe2e39fc2227ec6dfe52efde320a5a1af5de37d0d45d63bea7eeeb05333c4baa7c73471c6d6c76054f2792bf6970e31bf511cdc98470d82029bd997ce7ceb463d40c4464c3306c425dfd40acc9b280 +B = 1728242ff6b69959114e0f9e81f58ce433367dba897d14fc31dc13806df4e482b8859f227a043562e93b72f3a701f508202885caf7767e69c24574dce94ceec8db32d495bc7e827ebdd0ae9eb61184673613182b12d7663c0756a91ae3ce082795c449951cfb965cbb5891540dfdeae9f1e31074d5ceaadf01e7fc91789eb6d953f56b5eef7a5d58ac5c1d92a2b7408bcd9b92f391bb75ed527115c81ea64b272ddb20bfd557e20a78c8b75b2993939d45ae510922554bbea25232ba0e128496b9762c43d1481314f044104092b3973873b0344bed20b84db1e31e843b67209d114e214719c7dc22b51bcf2a3b3fb00316112cc08496a06c4935bb5bca797ad88ae8601700 +GCD = 3cc6bbb37ad2151ca283060f19eb9f038565a1666c5d0c207374f3492a660b62f4e9ac0f28936e5f1c4103ba5e0101b8fcd29ca5658c977a2e1c930588843f6efca205efed539f19829348566b608e9265fa0ec3e64d34d830b1a51c2150d9c5285b2b1750c4411358cf16b48f9aaefb2ec1137580b4e3088de545c6bdf09fa0b74380 + +A = 59d18201e2c7cfcfe4a2873225463a60ef53918afeedea61c689ff19208f8023891950976204be6258f680a43d6b55db9ec4487113a5da1ddd4874ef7db18b7f7e36b96f533cdef63d0ef7c038f50119fb122d9f7fd6bdfe5c9da8a1c6fb3f15e4dc8ef235ee15a419137bfa0fc69587201ecd18478d1dba6e17124fb73d59eaadff001760945dea6de751e56f954705fdcb51281269ea1abc984236caced8741505cf27dab022e6c61467fb7598d3e171de5584f7a385214a43e1f13a4fad3deb294617b1ca676519e3a326619ae873e9d8ba2bcb4d90c9ec0b4032c8fb6d603b70f565ae3e4fd4ce4ad07ba52186243d1c10a1b74150abcd4539740e78aecf830552e6cf2 +B = -60d2a3646575577781227cd11feed4b28ba36b7d4a225c4961b566a00dcde2f4efb0178b5e88c873df721da4ed42c15dbd397e3ced5cfd9e2281f3cdfabd00c7350da145db0ca82858af52f8fc8f122b32c3cf545b9dbbadec8eacd2d8f4ba5beb465c71655fed57f0161eb5d9baed7ad1cdbdeb293ccc1c714e5f06510dcbd8d3e58685774e598a16d58bca880583de5c602f717ee080308c8b9060c298364f6858d4ecf467177e26b912015d6a9e9a72de2649096aa0591ab3d139caa7c5a59fb7e9eef5dd5786ac73db2e2c163ca85f6470531f8bd3d66b5972644465f725094ab9cdbdf742a83b05768a539ff48a8d8c4c717e588d7385cc55abdf563785b4543b6bb04 +GCD = 26feb6be47b997cba858b3f78200fcab6904b417cb9ada8af0b2abe6ac40845905d8fca55baa7397e17f2be24952d05076ad3bd617b07ea259277b1498a46c782e5d92d69aec722e38515e3a419fbfc899c62e445b0c0f3ce08b4002ab67e7888a59381ccf167f276d9c1df96ed25554a42a5e3ea345a9c3ef5e6a2236bda1fa95f3dd1e + +A = dfd87eb1e3a63116912102c87f987c39356e4030597e06493468d36f0a515c5d2baa8fcdbc87ee38459c2dfefc897b2f4fff810c704940aa7bf3222fc66422a156772b48d041e5743d7ae2d683b4cffaba49fc4d5dc66b40b091d27c7434a5852a24c0107b776a197d7b7a4bf4995dc94a0ba1f4cf52e63ec641422a9ff7f3f00546788a1e3f7547f44953aedbdac6bc4d8faa6c999ce8f5e01631f37c3338bf9c32820fa630fcdb1db71a58849d827e9145fe31c64fb8beac082c84a222594bf093eeef8b703466f3c93c9b7d3571b49fa9eddc6cfa712fe71bbcef6d5354a8d959faa109d0690d1ced14e0f59ebfc4ba099cdd983a4aa9ace7220be2606945d01fd4b3d42 +B = 81712baf4ae40cbc70b89a1ffa2b72de9c9ad78d7d23cd33cd0d866c83f5666787b664ef7340142e4f343a7bded17d12528c6eb210fe0714839d16e54998d2b378f1a5c589864067d2e0fda24ab671b8aa8f3d21c21238419e18959bdbb777aa7f52a907e03ce2eebc0862b0ccbd9673d32b61390865dca7b937192bb29fcaeb8c5dab14cb53414ffd4d3107b56dd2f10324592e46f51ad0ac62e3f8c28ce1e5b295d77de5a02971d7a0ff28e492b79ea66479ccddc5351e3c10afbe72e7ef7a85222b279128cf4ca257506f645f687e5343eb7fc1f5792310ba90a9dd4e0480a965dab9b28d45e5ec85d3e0c828a9c22616c5a2eeb354ef1318272250911e03b115e215bda +GCD = f45f95fa28fcf5d223f22c9892695422dd22173cfb042e903579d73f48b8f6e44e1bde303586d914a9f7bf74232d8cfa71187425d4ea32a36d96229d9f0ad0947625400c50162f661533ebe92ab0f73958e5138107354a216717f1338042e866d3c7d0450870368f09c17449b52b19df50dccd58cae0920199041752e3f06cc8d08c4a + +A = -50ce4256ec71d69578521b3d16707eb6094350fe4abeb6001e679c0c3ec553cadc92e2e561da9504a4b522c7d9b6937aa701c905ae89cb8f993736d2189def1c9966ceed8f25e415f5a7d4a2fa777b51c32a26f14861465083eabe0a528b947ee7ded60ea68ef46d1b9b0e65bccb15c3432754d302ffe1a8277ddb0c1256bad67d912622536a9819efb7ef39ab2aa0552b22ca258143d90ffa312daf40ad669e3683d4854cbae04b858b40272529e24333ab91c3be2033d6242648038452e73c8abe10002b8bef0b657b5f36881042e417e67126e6c6731094d784a2f81f7ad4873b53914a55b1a786cc6220ebfe54b8e92173b790ec973ef9a290111d948b289edb5391bb0 +B = -e1a6bda5e162be758a03884738cbf5a6944382a20f29eabf23e462765c4d0c7aaa40267f45295d43de8bad61163e5c730124f227dc811e63965209220490918eb2ffb637446d21950fdd3b9949e9917f9a51231db8c4aad80b2892e2f28c72af69177dfed32d0b5319aa88cd6007390ac38f4b822ff3beb9fbd6e0631b54030fdb78fb54b520534dcf7559ee1be33384dca543f2bbe3515cef09481101f40b0676fa430cf4b7422487eab50c69fa190bb048b712a50b28f416f799a342df9d68b22675d8ad36002234e103801b229d565d28b3ed1f41fc629fea25c08bd4d5aa90ec06f07b2420072bec46e9ca146f8a188e75b0a6d6cbdf49fbacf5680d33585dad60b912d +GCD = c54025b47e09a9cf36e5f2cf3ad8368899a378558f92e81ea9f2dfc0f91dc0f93d2bb99c7f3a49147ed0414bcacbde459f3915f48ae8c462ec286360eae10d21907535debb1edd7c5be5f6043692909961d4279511a6525218e359cfd9b340c6be7860de954ce7f921d3c35daa198dfdbf334f0e14e565a27d76eb4d5a93fd67fd0da5 + +A = -18236182044d104142b78e76443a4119391bdac56950d697e1c95037f4ee8138a412b04a9ce583c1bbffeea5c89a61fcf12b0068d49b4b1b9c925227f3710d3665a75268153e26a71f66d7bc184c68b9036d619bb81ae6f18178a7d45d0b75d6d96a89b4be1caa6a311847d42b7199138bea22404e964802d89ea8ecad9969836181a15317fe6e52f049b0cb67962d03f25f3cf347d3c76afea5b12a13dbb9af4e2356390fd0b6c779354fdf630735724f5cb3d14d98d38570762db0bae978cbb719c08420997ec3cc09307fd7ffaad6c94ebb03926696c82de2fc4d0234b513bbce0c74373387b44dfc10d03611e08033e64c9f09573fa39af07188096b4677a21c0911230de +B = 959ea6d3db86c81db39ffd1046120f9802d085290b7b1d3ce3934e7ecb7b5664c0e918e3cee3b16c2ebbf91a1e0221ccb62371c5e609af54e587b19e71c52bb5f101d80e9c841e993cf1d3983f736d638df1683a870d878cb7ef3d3ebfd8759dc6bb73a3f3d7032488e32d91cabfde7841a8147da3915e94951978f4dd0391708b46122cc718a49333c685f66001a852fac7c76b5081a93eaf9be803007f2f0fb70a3134fc7652bca56ab105db1c3b095917497c172c3f82972d26d4c9fb85ddfd9876bbfe120e37e1c650cd2ba7783d13ac53bab52a668a2c632b3283a244d1de59c52bb59d84665af89a48b02fa825803ad180dd5d5c924c61985e3d4ec975982bbe32dd5e +GCD = 18600a6700a1c58e78a0dab77ec2e7e788d578a105dfe0c125bf7d40aeb2e03a65b6652edcfbde90af4672b44c316674db8b3174cb80d10793a034799a2628d8c978e4ce70623350a738b62ce5cd83c576a49e066c26d3a419119075bb1af2f3766c74a59014266b3509e0c1883c3b4eb69be0dbc72b2225d79ed32b31eac9c3d5d3c2e + +A = 3e48b78a6816a5946a5d1c79f43149027d84b27589f8462710cbc47b874a70f68b6301ba3f7e70ca13f35868d0b79e90ea54bddc035e4e98c7093b6e47f62887eb0802557c12c445f73ba3f5f801cf5b698d735cffeca747d35e7d4ac213896ef1dd5a65da752006d9a555b0e715b9a0a0a7e2c753426f344971bc29d514829c1d337ad4f4098aae1560912dc3c64eea91491aa2799db50b2955d9b00b1ea5df2247a6aaea2e6d15925cbceb055f2af63304cbe251a1342f2f3942aaf77d2c34bf03bb1b664bbbbb82f535bfb6678d3ce61a475b139b21f3341c12f90608e2586c07b02b169e94f8a235a0d69d2e8eb5c150aef90dce19a7c26a9b07fe3a14d3861774d67e6a2 +B = 2761ab95eae22a289564218b9188dcc6267e6c35bd3100263299a1f75e23d11a932cc3a790988ec23a7c3e8026508e817c33b7c8691fc0b3b331803a5bbccd813bafd3172055799aa0de0840491629f6efb3eddad90426f2b239be9d69547d43fe66f534b2513f55a9dcbfc2f670469a65a15a2330dc0f56e3eee3ed3a2e1a5f253a791ba04f6553ddb4268bd059ac14dc11d2786a824bcfd1a428bea936f32860683d6f6287af66d2e8b1e4417f1e5de5e3bad464f4c5e06e05357744f181ce05dcb001bd078a8e1c1ccd0d25f161f1818b197c311412251a7bf7d23274b45705ed0f0e9419317f063499826d6661bd504cef5089a622ea1413b6adb2a30cb8a46acf602e38 +GCD = 603d924f97c6102eca531c37ad42fb269645f78672ebfad8fc58f276f6c71cc7d42dec7e4fbeceeeb61a4f291b69b5dd3d859af901924e46a0db605f7e9ff203eb1fcd48456ccf9b23c31bdd57cec06c558fea920576263bf513c06dcc3df1b55a4b69648b6950ffac92b945388c05409128166692c5d6fa9f47fa5d77e75374f894406 + +A = -17631d528082d6a1c150926ddf55fb7c6f17c227226931cf5f20a8bb42108cd7acfa284475fc6ae2692eb881d4ad4b705d13775f8cd838522fc99e32d721a8aa9eb59d85612113218c074cac2869c77aab0db610aa01a5c0058df81f98b71f2a70357ce6d61aea9acc60a51bd56b2ee906a51989e8b22787b2e6dfc5005149a5c25cf379cce0f86a5f5318b56fc0a1b42f7a9ed3273fb07db498685936ca712b374d41c268d894bfc824c2a234a0d76d1b66cc3d13f3a3c9c35c28b45de3f039e4660d3c5750990eb65a04a2ce9aff48c316d2a716a4e1fcad706802ce9af852691d244f2b16abece67edb1a3e9dd9286061f43e0861ded79ab7294823d5a97c7a219c79da489 +B = -9f1667dda719bee10b08419e8f87a0a623eb3b56f0b552a7645520b78b1926cee28b32b67c0ebc162165e551c67181813e6db559a8f07b6c920294d46c60fa717925e17765f71e0ac3ca5132e83b2ac3e45b679411c82850c676685ddd9fd917c7de8a3cef6dd75a7ac5f22aa4921b92e52d88795e6801afe6f8f5e63113422fef546fcd69155b58b881e4d182bc8b0c0c76f48b4a0ea9e278c68d101e31e096ee51cd946ee36ed3c8d27cdfb94b58d81a517e2f759cc9145d98a92da35dd26a4200ecae511dcfa3a1bb3c845ad7a95d539c63a43bd5b5d938eb7de55774f6e3a7e43abad0a45560a4fd327571b6012f26a36898848a1aae374fdeed4cf71c4e2a84330a25cfc +GCD = 7345a8d4cf2f8a4b36ec54101ee13e57e0aae443eca251206fc0f0e714756a759fafbf36b7b3134a81db28b715504020b08cc9fdec5795fcb41b4ade0ff63b52b06f3902296abc3bbdd6589d0dda3ada2e75e41ef8356d81fd55d8cde2240ecae6054e6b0603823d45e3fb70935da77730260e1cf585f84556c6aabcbc1088d9db919cd + +A = 450279860ea9c8c58694bf377e76e78e087f1d6376f248fffc7a41c274bf133324798b103fe8636362070fac1d1afc5cffd552ac002dab43a81eea58e41ccd90fe05fd52fa50194a9c6ff2d089af872cd48c3bb10cd2dc9628115fdd071ea1c66d5a8e5e4856423ff1f3de87893bfbbfade73e447f2e1086c336d5e0c8e208212f86d3da351dd47bb4dda499ea4d19e96e57ec2bc5a81154012b0521dc49acdae2e238efbf48206f03da1fe21c93477849edd12ac4bcc14766470a3a4e1d5967421074eb6cc22e35d9d4ae5a2e86a73708bd45c7d450f677e922f6563ea598d1302f75c686f56c27c5b51a6a2df3638d7576212e406fc6d97941b8258be32b7541b46aa21dd97e +B = -28bd9cd2ceaa870e8d300cbbfa75696f5850dddb6315453748de86d02d4c2da2a47b011af07e16e1c89faacc09eae580e245330f7c48d25ceb4ac00c4a49c61b837ace3b5234298f7b2cfb3a19609be56ebee9a1818b718a393f702ee72277578a183a4ac7be7f8dc786af0658c874349afb582397d06eb9ad1df1ad8868692bca894a6fafec9d9e17b278575a3fe06786d4bebddf27be21c4708bedc452008a7f2073ee5d38a3e2066d04799843b5df1e1350a7623c3f931ca6a46361096297b7b603d57bbc2de8233f6c70a58e892f5b084664074fc52d7687d5cfec0f63e2cf51ea54aa8120728e5095865fd97dc7c3336433766e4b297c81993c7e5548e61aa303bd3fd4a8 +GCD = e491ecdcd0c06790767d804f1c030479baca750dc5f21008ebc7a2cd2d81d6da34fb91786a45299d90655830b11f9e0669426c27b6052b220393a001f5fd022e0105472561b1a64b340362eb276d27faae59bc9499f8729061d5b66302b4675ed53e5b53837371883a245811d669c130dd3509584b727d551e719d301e06f7b3a85a3be + +A = -1ce80382cd89418a201901888938890a7062b5755837c09d92acc1accb0a4ee3394938762911e39b0dc9da36662fd5dd21750bc1583a35c8f132d36b0ac12b40c1f237ff1a12aa8bf763657971e75a352d56d7b38f6000f71322c65cd84ac43e1ab510d651e5b3852a54911dfb7a7e38e3263045a3e37e9c14b335ba7639865bcc6902ee7c061602bc16510188ed1844b386b767947d9c172eaa55918be776d85f9a81f8b9b90d7d820bf8a931878c4cbf8b3511eaff9cd6a66ccfae465729b7fd84b1dcca4450439bc47c801669681c54ac3a3cb2bfabf8e276be0ba5cd8dc5ef6c55c4408b3d5a1d1d5da8015a659e82bfa383bdd70b1ff524c56ba1a95eee1a185f28276c03e +B = 15bb342ed65dec3431cc8f21a322413b25a344ff38cf283b309d6959c08e97837e21fdd9b1b57dd3701757a392f1010fa58a790b6c90695888a9ac8898abc9da04ba9c4a6a8248c8c81bda8b266b42d4d924801cd291e5f4b737989467b999cebcfad555b0c528e8a29cb632dca090cd100f0222e6ce289af4f924d61bbe3eff3fb5973ba3d4672d8d678043cff5bf993250ce7754cb64b19411b643f4426fd71f1b115b241d85c28e5f93b2453954c5f0a99bc28df80242ca6839c65718ec2df8a458f4bdf8754abe713469cee35a6b44b97e6ae324f8401ad0723da5b27e73c93a43ded6e0d06eaf708477ea7c5b292ba1932d6ffb0d544fb8784b123232a9fec5b30e86846ea +GCD = 39d5bd8a23898aee733c4094756541c3833a3cd2fc1c520cdb91b541437681ea04959330f13f0c4131ea2d48f2db52ded4726b49010743e7d4f5459485a8ab3f0bb26bbafc7c19c08f84ed9f466eb1eee30d3381f87c18f107722c52fe6b1adee89c2ad39794fbb990127ec80f9a113bde1414b90809ca915de82e27823b0d816ccac6fe + +A = -7bfb811495141502abaa51787f4781e4bdf869f2659a4eb92735ff3c865101da6dfc129bc6fcf4c2ef4905b82730c5b941a40ef7e11bc4173ae9c4ad56b2d0882345d96edb828cde86bb090918858d58ecc75d1a05bfefcca1fab9cbc66f18986e2dbc95935cde461574930da5e15d0360501c5681e90afd5eea8075cffbd14f0608f85a3be886956ccfb6c29c636f8192645ccbec6f536aa523918711c263a07d6c2c790e2833a93e1528eda4714b8a48be27c7848c6f202764d10bbbb7c3f0fd670adaadd69acf2dc8a8247aa824d76eef2cc70e8f53a978344934768f40857ba3b1bcb69744d78106a86cebade2ea12c2635e2a31053cd68673c48bf1d42f7ef5bf9c7fcc67 +B = 3c09c00cf1a7bea3acb4360d7dd5f47f4e8349fb8b3aa03bba35bec038431a5a60247e9f3e61598a9c6ddf7f04926b28d673ede84388f75ef31c48d13a8fe4f57838babd5e8c7b3c85c64e72bd9c6dab589d254b932d835d266634f91dccbd12f56f615d3b419f28c6ac6f56a490dedd94a55229445f0892513a7f273dab04193a29b6fa8cdbf7452ea8dc25cd43d8e75b602f5980f90ef54c79f03cc8b1b720274adb4740082b1f821b394ca0e74c74bcc2b5f7a585ba476d97a12b9b0b85aa26bf76aa4de7518d12dcb57c47a1fed4783e711f1a498d45c11b740607d7a0f82d105c2194a0b988ad04edee0ca91dcac839ff5125c19146510c3d4e3a43b62c0dc3d3ccb465971 +GCD = 669906cfd7f14d05a626062cf68fb90a666f7328cde6fc589a919bf105cf5342c006ef3da8074c48f4b087fa91cb7377dfbb5d1ba167590163ec5f145b299fb51e225efe6515e5a1e272013b671f6defd4823a2ddc161464fa4f05b607bdbc94dccfe92cc64f85adadce47e96d0942ac1c192dab5525961819a2005b5f33723b1aaac55b + +A = -d4678ae5cb88ce55f3a66e623a7a0889986b1bc96c3a186c74c7c803d10f58363eddef30e5e275dedf210dc41c2bdb951c8af8d85c17c7fefdadc37ea73afe8dab4c83e64eea676c82df92101080d9490a0500a770c6fa23d641a3162b49f9e7a1db24339ef8e33e9e8c38ad150795d78956212d0461fdddc4dae220cb80bd738a9490abb457ea4fec31ec4240e20c9d0ba8195b25b341d8f3b67c0302c938f2c6b226eb3b3adbafb896a6c08b6f0561f75f046d7248a524df1871ba86525ffb7ee22c63ddbfdc8fc54a75ecbaec125be66668a28e5bb03f4207a26f3759425e2a745bbc4e0789a9941a23122635e235f658f0062ce45cbcda4e82ff81cf82f8220194637612218 +B = cc67d33405eecbe1d3fff0a229406a19a85ed02b217e700e10f0b86f8ce194334202d8d7050b3d7dfbc2e0b9f1528235327f56eb560aeb39e364d95717dea640158d18e171259a0d24184db0a94e9a4a9ad70094aa250a350b8b09542a22f620ce4c8ab3d8f64f0c18c5f46b0bbb8c8928175090d55010ec8315d159574e7d34c1a0143d04cd77df3bb90087d09297fc89c0b01e54544e8f33f83ae7d3e8fa21f58440c369a259f082f3a891459f23bfb98ed959cdaf23a9e322a8a2f5dbf547540ecdbe18fa4edbbb30e65ef80e9a143d1c22af38696e4fd21ed832888437208984b5e67493545e7736916c65da14ef6b6b6135a20cbeb1e332f39fdc7af9f2e1338e541500de8 +GCD = 20bc27d10879a749f8731a43d12b91a27efccbceb90b23544db8ecec9a3ac2db2c4402ded97dbf6a03bac6344bca62fbab91344ac557f8537c04cd4c65812199fbe1a40aaa1c484851550735314f158273d1c927b7dd516d5a8e8ae4a74ad6c27ef8f735cfc01dbe39a6cbe2c4a5253d4cf713ea0df14a0d63847f12b07268f16fbfc66f8 + +A = -359246f2eac8ddcf3c38f520c0bbac164018d3782fbe37acd9799c81b6550e5ec9328f9541c05602b7e7434660aff0eba05e5fa16b826f89547fd97e927a84ccef536fed4086abc03b4b8280e607fc9cd8f0a1bd519ce2afccc024fc916793e270f6089c5c1073695c25f34bbe20373049121b37131a1d4aebb288de2062e3f9671a1573afa852a782bba2190dd3fe6fe56c7d6ae8c69e2d760a908f7c7f568e0a762e677ae4b678b984507ffca8b74bdebde1bd69e474de634dc229a1a58d3a4340e8c96cc286a9ddb672504c6ac0ad26085f8fbc1e817794c6bd5cf81010854534919b559e7a31de5f855c6ef65981efd80111a6e2e25ef07238e0950a61745f1d42f29bc93231 +B = 4953790691ac06af76053bc8003afd5ce5a2bcb15b26a026c80a1b2c1e66ae2ea4c8ea1b6714f60bfe86f6dd3c45318bdc12bca557bcf58ab2c6dfe984c17ed5c87529438dc927d7871fbdb7398cdcff8e2295f986e73a1b6411d518ab1743929c01d0d49fc0d16f7a7f6aae4a2267bae5e041598011c2a915e46f3c199975b2074146fb1e9a1c9ba869a1bc198a4bd612ff5b0321e7158612bf6507827319315cf63f68d97b02518c42d8ce26f91ee578db9007b23646596327f0aaecadcc7ee1e3d35e1db23558b3aee2f8cc0d6daffa802d911c2ffd7222bdbad3e36e13c58c7db6cca38a5a88a080476ff268e372613b6e38f8ae0bd6e76899ba78cd9d9ddfed56573dabc07f +GCD = ece242a01c0b2c4daaa38037d7b22421b66e321870107df8635723a9287c30dc81cc42e80cc2a14b62c23a117ebab6138d8cc5dda2e3dabdb29903b00b5a784b571f83b62bff71237405db944b32df92d156664712e8f3209f99cc5d94513c5dc34043c10c6473c13ee2ae9289a506df1bba78d3fcf72d5c9a73c40cdc5a4e4a435e27ab + +A = -a04d9eb9730f57284b12d00ebb201f305b4d30638162b089c28fdb75f737c48d55311e3171d64c06297e08421e3c6a6bf26ab82bd6e2fbd1f331c3a02f561f5659c5ad14dee297b0109ac2494cd526773bc1ce19fc2da5a7c082bafda240356d2e6737f18e96ea7a3aff1ed1df4007efc2e6dc6d06c87bc35aafb2bcd15f9e09570b6d689c4fbaa6124cf430cf7524e2f8ea5459c344f586ee190c327abf097b34645a61a5bdc69be8b44c56322aafe675e006888c33c2e908af1d0cdbdf594d10b7356d1b71927344c42aec71a206864ed527c43ac7dc0968d0c5511e157f297d79c47bcc2525227ea0358eda3c7609917ccdd08f7fe08828ce185d08e2b2675ec22140c808c820 +B = -800c2fdaa0ba8d01e191496ea282dcca877e0165de2cd7d86ded996dbabf860ecb4c80f8ecc69493a38cc56956da5b3fdb91d3feeef139ab2b08fab8c9544e0ee12f837fd045d226b942667afb952f17bb9abea344de050f9776655c62b3f00aeb364856cf929c9962cf5183dafcc6fa3cb28b313604adcba41738844523a856936b5e3e9fff898c634ba68bac472ff2b591b14ae70d1a36c410fefcc38a2d7c03b94f6277299129ba6e94953992072633e77bc4712fdefe1fbf4c76668f5b43358e94c2c8b6c55637b6ca840f034d5446ce137c006bae422875efdfe134dc04c199d4b7de2cbbb71e66626a5a7a0b2af88c39f1cb558e99b29ea926c049197eeb5a8171f68c5fa4 +GCD = 8e7e3e423b1594da5e562308c2e1ff35045b92092cf91cad833a0f64a015aa3119770011029ea3d6ddfa9dedfb7c50e761329f50a81e24f6f1900121d58e5fc38d74a54f27256bca7a2e953c6140f1e1db54b31f1e7290c8981c68623a043553e4bdc95db4bd8ce38b9d00a52b7478d918ab867636e865f5b09ef3463a752d68389d0c04c + +A = -288c00722c67a90bbd5c69f7790f11660fe134629607f12bb665a59d4f6a0a23159258d320dc2efafa1f2dee51538ba795c2d52a54eba9b8786db79c34e4928e3cbcfd96c72d5c480039894b13f17832187ff784ce3ba8df628502c28ef28808ed29ebb55f0e4a52bb666b2777220776c5db82b070d9cd37fe95e0b23bd797ae54e8ac5fedb7d0574bfc029997f0ff13757d0bccf20c7d7b9c007cebabfb3172d1fb1c1ffb1b1fbd433f151592fe2181b4c471e84a3e2495da7f100ce76cc12e7a1c7c0d17deb6719058467d109ae8bf2148e6904c82a2a6d4c151d4a947ebc3bc967e485ef47b95a656cc665c74035568780d3df278efaab910c0915735eb992af2f1fff3526666e +B = -5183ae4ab00b06337a82e8246d5552a4d9c625b94674ea59aea13b2c9e289aa8ab26b95548ef1b24c275510f7cc7b752313ff568bd3d1d9d6907a0f1d4fc6876e99b2d6b07dd9976525368e0f93261baa7e8d9a5e166d9f84fde2862d3974e5e468feb0bf991ec89340cc3c609cacface3a3f30228b094bf480f95bc26817bf9dd379fa19191a3bc9189e1c6fed5fbbcbf8561e210ffa2085a0383c4287bf20f84b4b88f2e316350a48d73d0d4d39916d6c2a28e3d44a0486430ca1dbf46e3839bec6a859ac8233a90624458a53f096739c23ea0594c7e504a8a90478c06ef568cc85e45c2f77b84fac31b960fde82020a603cce8f49725380a00769b7c06b002982d1bc4866b1ffe +GCD = 53333be01b3e2bfbf04d1677d7b059e069551affff56a6a25ce0a78b2b4bc2226b538cd30f61a8e0ec4ae2e28ab648d6c16a5eace16898f4ea9c69de6fb618a83273caa003ddc6cc33a5165416f6374df02f8ff3ca9467d38a8bb2ea2c4f89547cf14d5e1fd26352c3b7b5d0946e3ccf7ba658d86d1f1358bf49058476a89d22b518cdfdb6 + +A = 43d6dcc73cc475695c33b6cd5f806ee120cbf72dd0df3f40a056dc1d90deab0282a09244684b5bb764eb6d4def935fcf23754b0cb376e7670bb703f4871d7464411732383b8b4ed8834821bb4213b23776ea16c462848ae5e34f77e347dba312767571c12699a8b1fe239673640675e5bf7fefba62708678d74b4e8614cd4305504764575d3abad7887817d89aceaad2223e65382d6eab0d03a720a55205a8329f5ffeade0dad46e680b840e3867402e68e120a03dbd0895942cd4cc2302da6fb58859a6c3192040b1746c4a26f6e5a4a959883ffafd1448fb64ab5e9909df0991c11d71e998f579d60074d85042444e8cb466837abab0029819def11761fe6a8e0476139ebe85736 +B = -a8387576996c5a7e63059d17bb927b8f5751aedf8dad083267741a637060c1f8ea7d1ebef5cb6627320ee372e271613bb95b8afaa48c3e60daca22e27fa3864d944f386472153ece6c1a70743f81739fd428a17a876f0f5db6d18c1110e3faadc6049fe8321a6223c1549db6ac1d3e5bab32f4570da672f1b60b279ad40ca61285afecd076a8a9e9f330fc3b4e533b44a1295fd105ca90ed7b190db7b939b3a53fe28968e44de0f6b983016301fd1d2136718fadf0c36b1c557c098ec1f6b580c9abc9df42fd5adbaebbefd4330a818f33c422c2d54104e25b6c31d7ffa88aef3da32cf962884df87a0162f48e3b74a599ccef03cbbd20ae67c0362c96bf248d41a652f040c10b93a +GCD = cfaf67474417ccb841f307f55e471037ac53c0a4cc8131e4d288f829f276f93a3dfbaf51ed3028f29e965dd380926426a2d110a4a141f046af0c951531813773359189d2e717560e4f16e80e4bd630a8922f0626a5d05f5c4bd9ec66422ead6b25b46017d1ad636cf9b8e7112a33fe66bdb9d0ece338e56b4bda1c877200eba011e1cda86 + +A = -43b1765ff21cae14f810af47a4599ddf4ff257c5c36e38138080d0c3a0cb22c7151c393133fb97754962379534e859ab5a3c5138d3ec769c809149f19cc89cfe20536b8f38ec476a70a21a9a497c49dbfca5dc2261708b65fadcad68fb59575a9dd29ef241771b905511ada66b8bc0fbf3336b7ce3fe010de13144e9c5b1a2d0b63b2b6011db36881fd880079d44d3cd73f8d9cd0b22974d25663005465416bd2ac5caab054ab7134259527ef90fac99c771385ab68dd22177ae3dde085a38f30f1e1b3fac99f8f16cd5083601f1f1c1afd04510124d4e970f9ee410256aebb9ff43a4769fdd32f2d452ce1ef2b6c8f68fb192ce601baf6be1d55c75cc521fe23be00230e26b945308 +B = -43c70d187d9e79f1dad18ee1b898e949e1df6cfa49cb9c2a9b1733ac2bbaeaecefe5d716f151204c338bd515539d5f01523c08194a70d07b60ba1f1525f011d5d7aea402a8d2f266526790228b80558f029a44688577547d43b397d87d0f20587a0f55ebdda11cd1d1ac55d7c87bdfd24023d799b4aac3c681b799ec16d0ee1d28f1b88dad16741c063be1133e1f90d727f64c10dbcaeba18a61c6e56c411f4e856f5738ee59231fece9d0cfa7e8577f5bd34486defcfe0ece976562fcd8ad8b4ccfa3fdbd60d8fd80584b56b16ab604f4e0413042fc41efd98e735f83ccaca3b9023b124e6014997fdf13964753172da6698d9eb7e30d65ba2938a8af05512e7055b984719fd0aaa8 +GCD = 1c316c0d5e61fb4eaba8b5bc86da1d78b34c76107ce50b1dd6e38519ce8a50b4c04d5791ab9af772be819db4360b44b066734e8a7744de11ad75d8b7b8723976fb242153bf15f4f4cf71a15e5af6a98eedd89596a1083e4118bcebe7de4ce492361fb2dc8242bbad2f81ea0e0c76a5520cb8ede35be10d7863cf8b898b04a5a8fdb311e818 + +A = 14ee5d7fe36e16531dd89969abc3fbd6bc45fff29e3d363a41ca6ad5b4271522cb85c72e260def6658cf42988d76dc32089df915975ee73248ca207d11fdb8da81aae4d1ed62ad53c1696f1d5912d750f05ed82293a5d116fe7523d6530da742e73e6a976942ff52cdf7ae146ddc745b5eaee01d63e12c492f4e7ac0c1fcf0dccbcb828db06d49dd87ae2d1e3b9b1dbff15931b6dbfed01a1cf55528bb62f3f22a0a1c9ec283205b06607afef4ee59aadb43882cdb18a60d0cf7a4ef1eead7dff649382aa2f450efb47936f50564d648c80142b107cb6520131bb2c2db2c54446cdfdd5f84aa1b267685339d3e09dbcc02e3bd810340cecf93ef7ad3718e9d0999ce37e831a7cc8a352 +B = d8a9c1e97516ce24c7abfd34e20b367082d2e85eec086695e8b95c9bab784ed721ff8c7c74493ec85a2112170dad1848a43282bcbbce953541e4d7d4496beb1e3ffdc719894a769a5c437f2ed3ec7260ecf180c1f2736ab728ebe994736f0f327711408a0777c0cb33b170e0f4f6aaf839a0d8442a26891456eecd65ebab884c678d56d35042f246209ca2f4a9475f48b15c385e68318715cd89aa17947850eda3b1bd29a1bd95cd683fb9268f1f091ce528c4287a3a27a3b8353305a4384244ffa8ff98c7eb0df6e0f07d693d3487dc83913cf3027391e022f22065d9f238cdcea6e47dec3834a56cb02938fa44f44ad49bfeaaeb1fee50e64a9baa2170702006f70b53551fd54d02 +GCD = 1216d48642c32e8dd3de1abd62b02603c90b32fb8b6ab8e98cf00fe1f5806ebf933e0d5b34d7cedcbab33f8cdf74f8869b4ce321f72723c390b745cdbac65b47f134eabdf9e622ef5690475df063111237263d171bdcd9b7f80f729061b314904eaef91562a3287598220aa6fdcb0d9d3cd3a6847046de1201142abd674bc3e8a82ba39a7ee + +A = -2b327f24f4f8ff92ab8b3137c80f7d28c65f76f9d2c2426db47c1ed4e1d6d12e716c8e21d13c0688fb30fc47d306b607869e2a97988db123cdadbc357268a8b6571e1d66953555b039ac234b574573038a6264211c1e2594ae0d9055379cb9e4f9504a4c3e90d1033d8545c9cf2b5f763351f99f8c0f92edc4186bb78d3232074613758a1d4b915d7ec3e666de52497a54e87ae7f5854a9517ba3d43214b760aab51731014b0b0f2164acd8e01d04802ac11b72951989cf5fdb95801a81a57558d1d3c0f62602a493495dcf4f99e8a47b29746c6ff281a6acaf6353441bbd8330815a480b277ef40014d6a67e72aa89f1335a1648e7d135c47da25d4ac42959ad00a1337522e08da1 +B = 428651f337aaba0b83f0d52b60953200ed562668d77a6a1fe750438082555b4d7191ecb9d15efc8e454ce79afca63c09405c7b4e47927d6d5e47176644d71af3348cb157cbdc8a1fc289328d30b1779f355376787e008f372ca4f13b54f583ee71c5839f86d82d8aba253de43412eb00b029f73a99e87a60e112ce39437bac479e02ab662bff1c7d7e58809ad1546903155145a80a3b21b7e487ce854f6e40d1cbb7113f4df8ee9f2d4c055816a8871fdd1fceb6cf34538df43150e54393407eb2eeb9e92b2f8bbf8ffc9f76dffa318b2c9324f2442a29ab2af7de49ae2650a64c94a7f22acf0eba12424a38ac776f5165311c51f54bb8fa8098c18eadd7ee3a3964e654b93f5ad53f8 +GCD = 2b39e5b72535027a27e17a7b9ecdb73373a641f5be8ee8ca14baa8d2df49a3c3c20ea4a7493ad866c7f52dba2d3b2076f218e0395dda52109aa4d2a48505c01c8011cf9d6418d60802fa1681f573506a9788b77d341d1794950a9d686f32b470bac1452ef0334592ef9d389119e9b13c4e4686dd51709374634afd7a2da2d07a87127aa479 + +A = -3a2c95f50db9dca8db619568d3742bff52bec29269bc9fa73de925cb1e6671dcbae8be1f0777cb76ba224444df1fe7121255bb67bfade578df0dcff07c5a8b0d3fdec2d6c8edde5fd8bd74576f6fa48bd8046acbf273727bbba30a885ba2780464563586f9ee0ea7b92d5e65920595d6915d75da634c70bb35e9ef96a8ecedfe3dc17be2a89af472722f3cd7b5aa45eb0293069bf4a6d7e26b1657bd7c2cfa86062385383844661b491fb99ce7d30d7eb3601c1a595b91c5aee23c9d66581edd0e5a2b6aa53ff56b1e4bea7a45aa97481b66e17a4ef778b2f1ebd05b4a1c733c79eb8523dc5a9b9697b74d5b87e30097b0b19a3c01b00b5978990199545b3932311ce4d7849c03b16ad +B = e698f97f39e0aa713b37d17dc632904c894381b1b99a0077ee11c61b084b7bb7401e5c38245fab1b58f8ccec7f5de08af6985ba179d7e15f6425fcdecea7d03f14686b07bc714dda33af32bef3b8234adf94a3b2caf91c52cd74b877d4befe24d27be970e7197171d29849294872324ea11ab399d65df15611d4002005b9202ae50c1091c6f41ff46c11be9e76692cd7823df2920958df5b3867cef7596a10b587c91d70db5e8bf0be1e469a337c6dec812aaed55e8b0c04047a5bdc4deebbc65994a9e95f047618b594128e47d6b7b04d4236d113de8fe88394e8d01eadd657aaa2d358cf488f229d8a07b24cfeeb03019296443abae8ab266e16b2a47ffb36a3442eeaccdebedaffd +GCD = 41e538e08a930f0494c72745b80a4c7100cfbb0bbcbcd9b9c6fb303b5a6aab391ca0315e383e81fa931adb42449613e77c971cd4df4759a51cc77747d47e7e3851bd4eb2d1c0579d43c27dd2174d29d87fca628fab8bef005657036eb3a2859d04a27b5efc87bc0e5a16f96d10107ae232614659bd31db9a0715d07aa995126c1f7c0b0325 + +A = 3c60ee228fafea3bc50f5f94fa3776dad51086048e49f9e59e52ffe7758a380cbe46e82c200a9739c1af13f90e2e2c74ba6202ffd14612e7d1f916eef9dc920140792b7b6cde61b5a3b2543cf7b2f230fdb4b509ba08390476a3a17c3c094be07518dd6ba7c74b1a1f1d5ac50fdd3682e3a7bd0217e8cbfd5e983e93ce3ebd2d9a56c6882ae93ff1bf491748b21edf90a900a470af82cb4ed9cd474caae3f8bbfc70f9ec7bb8aa4fdf6ee7365c57532f3e86a763028025caabf2bf913b808b6a7f581b7485bfe03d27a1f3a2fe2bcd1bdc224c55ce5e779619a28e95bcfbf04764f579aa24a57685deda25b80c29a00b0ac9e27543db9700b09dd7c17379c1674416577b2323d52dba6a +B = 27fa3d4297b81beb81a0e7bc11dbeea5bd6e72dcb24fe8bcdb6f6cd5b249a4bab93538974c5fa385d8441679da2eae4b773ae85b4ba50dd2748183d483b9668a810a1f7551640b0572e9d98bccf1033574994d57b5bca946ec3585ffbd7167f24353241d9e5d56affbabca7015150567685c3c061f823f25b2c461c719e2399f1b34817a5badec396dfe013b996b09f98132c0a5ceb2b4344b3d184bc8d311bec363b8e97f75ece3fefdf855bf8926b73275219ad56ef017f992fb548ca91f43be23ba12ad090d5c78d771d03ba3fc5ad0b5e193fa5fce3fbf99874e72934d5a25cbea17daed8bec6b8c9b5b1ddca4f1848f00ea4446e84ce6b6f9bb5edf2fbd800c3d4a4d9c463a1084 +GCD = 14074e50d27d6938af1ad575241daaf9978627245ff8cf4416945013851cdd441052057322f3ec45520dc2eadccb83639fd8a17d9dc51133c74f2fc87429b9f1ca74f6204cc41dff4f9abe1cc28d95fe4f3eadda225453dd551cdb43a84abe586a1adb12c53cba7286352a36128d1a9dda87c6b2485a7334966ee645be5d882d969539906e6 + +A = -fe47077a3fce7a187470c1516eb8aa6988430d4574f9eeb739b0b123267bd555aa05eaf313b0393332b0f73a6fd0d3c1f6714ebb9f232ef8f3a6d3f62377baa93ecd3f8e72afb6aa519a58c219f7f4e388cb9dc09988f214e0dbe6f0233fb39ad802a6fb36bf83048973e8e4d99d9182b4cb4334da6828b1d845868ed7eb1b485803247add993548c50addbf150ed451e0a102dadb946df65723fd8c9b84ebc925e6af7171dfc5c208ff30a05ec338bd30832b5acf82a53e97d1c7a6f1c449d6addf06184b2ab78976187c5f367a09faa107ca24ef55d8d682bf4fe284069907bf40472ee9f8ee743bc7408a2f1e8bcc09a7e770e296838ea5abdc6d289d9512a2376da8e699fb878c57 +B = 1272170c011a0c7574d6fc213e110b51ce1f5764e249e302853523678d991b9b4ae44ef7db13b26f4485d7bfd681c22a2392e80a6cfe506ed0db27ab9b255f6e0afba57e6572935976121e7d2b35eb0a7521f33a7cc1ddcbb5ff7a5759094aefa54e90e97177c5fb5d2ba262bc94d0782449a74815fb1bf16898b38e9e65e46b062b12666a506b464d92274822e9825d9c25308ae0b8f2fd818cac8babcc56c1423ea4e44c880a3b9c39ef60813f614041a3d3a2acb5f286fc52a87060e8375fc2b3d6718be6798a3937682acbec39d4a5fdf76bf22e16962e2399c8d45b6491c859051a4a9e84d6ddd5d0601785d9c2e9d38b4d0212bfb2395de76a2c3cd607fa364ca109ea3fb805eff +GCD = 1ca8143c210406e268b7652a3625b0579604e11f46bd37d07c19d47fe7156c5b26c86f22822818ad8be737cd832f63f28a8d29978de77f92cfc38bc07d88a5ed5faf668bdfaff5ae79ee721c2b9e16a0a1a9cbf145cf1a8c0553b354b5b9a2eb3f68009ad5c66e7bdac8e5ad1e6c191bd08974039e74d67dea481bcc16baa431ac35a27fd0d + +A = -2f8ff241e07728fdc1d5e40f36960af699c76008e5a7c6c9332b68a6eee07d27cdffa0c3457f064e0ae95c12a8276048a71269740dd433e0ccbd0a8450dce85d214245a1b94f4c1a30af588bc66dbb175918b0ebf483be567d816c4ccf646d70e39dc3bc41729681a92719c8b08fa97c87b9123466285c58d54e171f7692952e14d1aae4de27651cc7dd0a5c5d3d5e59420d64fd9a95fe2893b2f251ba8ac92b0f2b7ce8375376559a5a30e5418712fe2263b27d516034e9a4e5f327ef928f8836fa9ecd7d6b39db40835890668e2ba29df4236b26936e66f638a34a7717483e97be9a5c2c18f102655f8ec343fd4c41cf9a37a579ba2d45a6fffdef448380d8d2abe9fb7435196494d4e +B = 466357e65252a9f0eb17d4e98cc43775b383d63aaee61ebfc798e3d23b429d63b2f7e73d2b8916747605c261aa757d1d715f784b2c0bf4e645c5659a606d0b2d5474a110b794cefa1ce5faf224fd157ed1a435d101bd3ae0e7da915887ae5fc6d78beddd80f690c310c5acb75d2d04de439fbd6b2d79478714cc8f46236cc146beab071f1b304b056cc45a17c029748c4c34a026aab66c5f615dcdbd452edc6f37b46ef7454457c435eb997b9cffff9fd2814344aa9981d741bc5daf81e74198a39ae24da2284cf5613cd725468eb9a636381ae5f6c0a0255acbfbd387973d00d9945b1f063c28c96b4a40371bd67c343987c847e553a2dc3fd623d409e5f2889d459dfd2995d231834ea +GCD = 71e6ad248b6d7622e69a71549e33d39325f5df86c1f397b2095fc6c08d2daa317fb71dd643f647e1738f59fb1c18f695a540db023f60b047a173ba7984b528f7c44167f4469bcd7ad8995169cb7b53c00c6b09573f695264805706e0f9b093affb72357834b507eff632321a9fe39dcdedbb4c62039a8b20c5f7e6e79b13abc3be351e13676 + +A = -dc757f0e9bd959c4c14334d39192c5858653b3b519ff9f9f33844d1d4a19d1b95b85db433b147268abb45eeea45557bc609c31823b270d6bb2f0b8a93f4b01ddf6ffbac0080fd86b35f27b2e85dc055af83cbbcf7f9440c6de0c5b945e41708cdfab31294df29ef1cab9ad7973f87afc4a3fc8713523e9f21cd6df3daba26681b52190453294b5d31f4819ee4e4d9b4d3cf0717fdcc55cc36e473a7804c22e1d01e01812ee28a81f0ad45a37cb7b6908fdd77cbc59475f92f95729ee88488022bb7459ab5510c9b53a9f8bc5d48914e6453813ba926e44a80932ac8d5ddf14b72bc4b613f72f9d64f9116e7c863c7dfb72db4e2a2d48574988d918a4d0d46dcb582d79578e19253e75625 +B = caeb70d03d8cd985b8acfa004d209f59492f18246242b177dd91b11f3c37b763b385f2eb5456a707cf07aa96f77661027cb6b53dbcede76ca6be5831dfa1a069ac72dbfaad0eda73bb3a5277325b285b21b52afd2688351227cdcb41dfd99dbf9b8c0fb10b30d7322ab5d86eb807cd20943590b2c96d90101e6a5bd04a961dfcaf8bb128ed282d537cc240eebcef853b83f1073924939e905f0fdb78d252bb9cc994417958ddeb0c3a2f6ef0bb1da86b5b1f67143820533bc932927d1b9d96918b111c294adac1c0466cfe8d9937858e6a6652ae54eb968a3da0280e132c8693b5e815e91b041db87c6e6dad292ccfcf2386bc0baa0ea8ee125e7a542897c1f2046b0943cdf57047cb1c2 +GCD = 5081931aefb242c7dfe51de3b37cb2c1f9ec86f10c814a4e033ed1e994fbe768f598c0229275de9042b68687b2b08de512225fba6877ef62ce2752f86cc61f49c33d4bdc575771d98334521af506a724d6dca751350d8387b7afad95d2cb172a81aaea644d68b76f9bc0aec23375c10174b79beb8a0f4e6f41f07eace82140228e34548711d + +A = -dd1ff48cfd49a2aac8100334879743e715e935c7b2f51ea6dce1ab2e1fc99f5f9430c0ea478543b82b05f599cbc9580405b717eb1daa1c48a85fc707f34e9098b807c867e1c8a85343592d5e3a3f018b33a3b09ff58db1e5f29e55c99a62bded02e6c102e84d985ae17fc88cb3331294045397e1c233655f122f9ef3dd184f77d991a36d8bf5f77e7f20d993d2fcf769c19a5ae98956d1c96061b1b7a8683124ae7857c4650a55e89983f0d85e894d3cc6bf788dfba6fb9299a863507483e21e3fb78335e1b353be27f1af246bd13886be209e110e453b3cd279f6ef7ae18f9ac136e7f8e81072e076ffbafd30cb70048be9eafcca7acbf1c0b028241319c7a6c393eaa724b4e2d28dee0 +B = 755a9280fc761896d919f632d050bcfb6f1b6bdd84944413fc19871a5c9fb3652b6a38f3d067605052c10d60a3ff094abefe1b804c2d9b360137f0928fbefb9dfaf1f5b6b12c010e48ecc580419d4d40f31c7eeac94bd427bf5821aca27f2bcf74f44cea4cc02de5daf3f687aaaf5e98e0f31a0c9be1150f6da94ad40b5b4bf5c9fd814f94097f5d0a9baecaba51aad9aa70354e7458594a88f6c04341b8469471faff6de26ea08fff1b43779e4218598bbd6f2f0b2f46e0710ae95de47ec784dc60cadf4be6b0775470b61082ccb7f2c36d5c05fb070dff97fb817e7ea1f4682a38b7b0bffec7d86d9fff04d11dbabcebbe34b30e79a20e2a8fd805c2a3feaef910b7e29df40fc5200c00 +GCD = f501f2f3a21fbfe4b42be488a48557c0d5d3f0eed66ac01a0d2ccabc3eccdae9368d8689e57d6012b370a3a17ede6aad46ea1efa7ba0f3906b3dd4f2dc7b16f4af54cf7e5c316ae6f93104c6972fff40a80354189536b8da08884b03037dfcbe058ffdb8d2a8ea640e3f98144909633c8a6803b020df2df91a2e15d8c743ae697607a59f8e0 + +A = e8e471e62d0cdfeac35ce8f2024c661a525c2be69e9251dfa6f2eb700e112efbdab9cf2e7b01d768f3118131aac24deb2e3f74d01063b274c2348cad62d823ed9ec525863cd26ed08d10d7a37587b85c3cca83165d3f7980e039c64517259dabc3553c5fa661c8d4254cff9d13b0f0fe98700e96f28443e14f8a71d491fe566702feb4de546d4a959677f4f391873558c30574c95778a59d0ac984e54db93102ab9112bf1f2c2fbfcc6d4055faeaf23b41cc1cc27e0710ca1eee528c7fadd691e6f5628c81af26a960d17dba8e9f5dc1c6c6ef99a8b905237a7cc30850792492733f9b96aa397511186026df7e4aee5f30f436ca72caa8ee2d0a27d6f62312ebe4b69925ecad90d20baabc +B = -100918241880164275553412f6e1c786a90e56f2eb9f57ac71e13978b6edfe8c8a4aa5d3a14af71c4db120919c510258d00f87d3d20d0afc651c15edf737c5466f9be203634b5bbdf1027981041ee140b60f8b0b42d6b6760bd134c5df567e5a5fee3f3646dc1d6b3337186bf48b595d2d4f98fad8f97b49787c2e26231c35578fda58414979ee10cc3fa581c4a5ccbf28f93d4dadf83f37bd4a9a1b6511202ae3ee7675cbcdd9d6a5f1a0eb536b2b7a391a76ee5f2f5c8cbbeba5cc16b37e2ce2930bb0cd9d6da3072b763b137b03fa486ac6a85de3c54bcaae5ab22275bcaa249a1ed1c2a7a9b51137198e5f1c21dc3884f8cb904e89a673f9fc9bed34fcc2a839fc25b6768b52d278814 +GCD = 6285c2ef35040d0c8b2041ecb3652120420fd41b3288c7e3501618bc606ed9ec4938e02de51bfa938671e2df7cb145387e29b6a613bfccc975e2a4d53049b87f5473e4ad696fa698a4389d972ac6fa4898ed6965a02982598694c748827bb89dd120fb72f026492a80ad900444fa15dc309815aade990bf032f58f3a65c718b8b68b3576dedc + +A = -21ee7d30a1f4864f8c7424e1d3e41a0830ba0ba5e02954124b77eaa7ad0df95c849d1fe52b012f637e2de145988d9e5dd02c55bc4894b35c405f0adb6589c8b4e976e20b7b3aa03664ac88595e53fb3fbe7c7383bf95dbd5ace4ea186d969c021319fedfcd02803adbdef0a061386173a507d76c3b5fdbacce16624ac9df4c71d270da74cfd0fb2f490f34eaf26d974fc5d724484f9152630cecdbca7cd97605bb26b31a7a8a81a29a8bec5bee6e1f33d3f8d24eca4e6c12a0bcc881e944b443dd90646114adb67499ad87fad2f563449e2d543082480e1a3fd9504f1434009f1619947119d4e66a7eb0ac49c244fc6af09a3781e9215d02cc611bc638ff9de8fa7026801a904029fdd6204 +B = 2b16e23c0c7353c5b8da923fedc59ff6890e290a4982ed39bfd9bf02dec8ac5e60536f101fe5ca3a2a11392ba2996057e8c0ee462298c7f5a816442588ff9e28708c6f2158220a1cba2fe2e62f9665b37f5c6fc0eac4e4cfde0ed6ac215404535b68ed579b949968751b21ab96062e10644b9d74d9df98def6156a21cf955b1dfa4cb0292cee914c627fa83ce60529b12a09657c7e40e4065ee13d3095e335607f1e146a61ceba5038163e54a86d22e90f6d6c09ee68d1d078ac59fed7ba5c486a8174b9ae2683ee61f3792e107debb0edac53db8ddbcbced97de930d0e134f6c29b0a07c1d8b0728a24847da9398f9d5bdb1516e817aa7da301bb123d099d38fcf2e27ad6fcd5ccddb649a +GCD = 2e0e88c449605357a8d4ba914318d98187f1d945aa8aee2280d10b6cd3c6a0121a94313e281d22ad1710378c607099b097c99ce39607f366ae5403aeefe25ada4c50c642deb44774b9fa0995ad3782456521114579370691a679124cf8cdcf70a59744d56640ab94ea1f5b4302f87ccbe2039b94367ed8cdd003fc9c4053f844de46df0fa9f6 + +A = -1b467372e79846807747663ded1dd3010b777d1f98b5ebc728d8531764ef57ad7b7e8276111394cc4473faef9096cbb3cec8666e72b52c209a7b0495edc6b4493ced65576b5491837bc4986876e09b0b526a4fd8144e0c01d6c39ab96f635f4c8a143e9598b429895b58072ad67adcd41de4acfde80a986885f881d99bb58484ea49c40673b532a1dcf3aba4f5ef56302e10a88e04b693fcb4d89a2c86fa41a4fff44ef3f59c14e7c547150b97470d9abfc6ae9a4a8545422634609f2bc26c955493e1d124e58b26022819316a55ff933282b686ea36fbe59f81641dcdea326c07fed68440b9f0415253a12a56ddc40a8565e8ca53192d15a8cdc152817a16455d21d725eff93a81177360bf +B = b9e9a85147faea25aa0cd2b8836d556907d288ad420134ed69c06e46bf070b4a46f4c6f599c5962a014b8031a8d9da2b91bb271c72c08b2050cd482eb5f89ed38cdc57905dc51ed09f22cd55b663a96ba90c15e531efcaa02d3a68a3f3cda284cdbcdf75241db9d42002515daf7bd6d6d2bc5f8d07f22d1e9e4fb169b5b1ee5d5327d466c371ebf2a65f27d233d4bf331ed1a10997d8eca020204644671ab956e014b6e01e636dd8c4fdcf765fa17bfc87de62d8679b2f2bed4d78d358dd3ac7b008836c1f276e0b984165f9968644e4c9ee44fc2cb00247ec7ef077e27e708e68af892ec47ebeb6486705b1e8a29e7887d3e2590372140ed54393b4434c59758d3383352ea571e20e095 +GCD = 7953b4954af555caf5278b33990826784f1f240affe3d05c5a14f0e425b3d20f7137bd9e8f86c2cadc8111a8bd1e5a0cae0ddb5cec8f6277f50c432b2cd6c0e82c8bd3e666535e6ff059ee44d50f94a50fffeae9e5f0bc480350f779e606bc1e559c1f9b7046142269b2d4a54bbcd91d0e489aef9c5c78dffdecaa5e447684cd4e76e8aa52c3 + +A = 301fab800437e00e4e1f76f41da718b0c39715edd614b31d825c1250dd59182d70c4edbd4e1899b480e1c88da4419d1b782136d4f36f18146cccd64bb8873a0e72d5c4443c35c69d9fff6c860511200e50289737c6e2ef4ad9efbfd35b99e1b02bd7bbbc7af36bdecb0be436b04e963cdf6614156f5746a2242cc6b4877f2c9416b4d297e34e032fa6298031e393a7e59a82b9ea3ec5f3b791ce64e101df21ad1371201f4cb1a261c281ca65d0ae5b6fbe5d7ff37c0a540d624d7e993a8b1e3009a438ee926937e4165bc079d13a65f499fab81aaa19a03fe68280eebc099064e5a7cb387429f5fd1632f901a6f85dc466068fcfe0ac68c8a11f2e1cd8e1f077128731e256e5451439c9d369 +B = 4640d50a88fbd42e566a5a8a35e77f1cc5ab51da7858d4e0bb38f13ec258a310c9ee878249f9c40ca14b821d7382630fceaa2429a8d6371e8ce341bc77381d557f1de98f118fb732e78f43c27682c998bce30697c29b26964bbdc8b5978040516399e7ed850e5b95306aaf3f070230779c647e086d44bba4049cdf0bc6b1937ca15c5f18de91c8f48cb5c95b48113596e0c395f99c613884dce1d9de02771571752ee275f78fd5593c03fb50984851dcef67c83065037c1086cf9a1273d43ae59940d220407912253f100df63a93dfe00920ff5943fd43ed5fc6eb114039bdeac3d3cec319d86b7d3d7e13ee6d48a73772f8483ca40e2d0f54724933e001937cdf0ce3be5af8662c01144afe +GCD = dbdafd5d80b8f16e14bc37a44c6063adc1684dafad76584f6b7a2effd1d66791469a0a2c1bf1a2ebe54cea60a77ba399de6bcc59c6eb3fba65d87a2fcecede80730e7391f7fd70ce03dfbfcc891664106dc8276ec7245d60f5fe619f35e8af1841367a4cd0ea692d0e46957844baed6b30cbdcb4ef922413c9b91c8c09caecb6103bc85e026d + +A = -a6411d8b4cacfeec18b8011472665de329990cc68a56df08d76cace8ab675c06aaf76d43e726160b0021702303026fe67f979a2cdfa7aea084b7911fdf29a9cad14b31d750978c1fbdacf574112585f9d5617803b5d4386cded42ea09fd412870935e3986ccedfbaf394145cc51067da2a6a71d40c4b87a3d453721fad9ff0d12095fc3495427466b8e13eee53e6df7b196abf1130a43fe9a7c9d23fe6a7f2e679ffd7819bfbdac1d08a2e21aeedaf9e7613081aad7149aefe2c3a7431567b1a2c478c88fea646b4d2272642cbb1c17137505acf3ece85f92a70b52cc0bb41ba594794218c732f784600b6e08864f1a886df9443520332bdad652cb2326a32c17cc093cc6b7123fb8687204c +B = -7145db96f1c153bed1003420b73be789e7362379b0488dda2b6c63d93c837716854fd14eb96460ef0a46ae0af8df9c31d61058d14f46f301d608e9ab37e9ac290b2ca3e72d2febf1d27e51577643a0c1bb3719519edba0a796f43fd23b865d20645fa4f02a90214fc33cd18d6147da0a7879392d214e4c44cb8e1623192d5f31c253d3a030a70d24474c862965431a7ab96a3681dc42182076bd532730ce6d4d9537914f1a76425464a34ba3efde35dc11174b24ffd9caaaa17e86ca46f7d819800426568908658b3b7cebfc9c0fa730dbdc48e0d89fafb32cb93d86762a6d71a52bcd785645b827db4029e17f2b4abbad524548a19a7b20060d1460cf00a688850bdbb0a932e7aa2ed9f112 +GCD = 14729f8a59c351782121bb434c363ce47e30c961b42c8222c9cd10742939a993352bea5c5874813c6d3f4e5f546993029cce710ca4760f5af8b5e2ff4cf1cf03b154f054c0dfcf3e604f0a2da387e9f540ec9ae94c59ec19a30f7272b912047451a6ef1251ae1b0e4a9dcacd80d7772f017d2a9a4163d82fe1da35f5d31d9d27163a1d6b7f3ba + +A = 3a0f12537bc676bcb46be8fb49547b5a901fd6b66886d6289a04e047ebf0ab81b5257b15c97f305c33a34fcf656d61d67319c1f7014a9043ebad74e557b00b5101acf830dd3162f3c8f6b6f028824d9d62eae3be8fb8fd5cf961b72dbafe4eba8ca4b8e13ec89564b782daa27d3eef31bfb2c9e4a19d9a6b2d26291694f7a11c5f1b6b5c99cdcffcd7f5d72e53d56dcbdc6a209ed00b6d9412f8f34c05ba0564d8c63b1124c559d7ffc736b864cd78e8b6bb65c9673331095a6356b0add4709683efebede3ac0205758ed5f7233b1fcb5f78e430cae962b7e133bfd0374068d488f1400479fd02db2219329e39e79be2329f2ba22dfc614495cfb583e5d86651f29c132d81cad9191f59a5dbc +B = -5e6acf3c9ddc3d77ba6665d86616f4533bf1df9b158669daf15a686e377d433314efa9f9bcd51accff0aa6c9d0eac3768a4cdfae63ac9770bcd5aad18a4abcd8864ff8f97456f702c52326b6f93892ac3a4774f8a540d046d4113fc2b0e93e3314d3eda815457723c81579a0903a8934c4e422dcb663b73b1034afad7077c71fde0fea33d2c7822b87c38c355ec586f6eb1d9675f6eac4247864913c7399d783feb965714234d1d03ea27a92d6bd19156b0d09d416d681d597fdb25b4dfaacd5213dac605be992253283ff7db60ec77fadb2e5b482610b4b4519d463ec52e279a664c58dda1540af6ea16b20d971dc93a2fd3c0c30c1e60d61276d4af49df5b4acb879fa1e74850f56084ca4e +GCD = 3a2c5b44a5064167641c19592291b76459b504f91153c6d2e6ca1f57a69ccd1832ffb2e85f4df74937297eadc669c6a2cdbf01dbe43ae20d136fe9fce459962f43039d24213071e484ffa4c2ec5fa80277b80dfdf68b490a90c13469883de9130ca625e41115640a9813614a68fad1d2c00dc31c8a2128062c062f531893a2747bbe187f0312a + +A = 10d4de652bbe8a322997784cf5bad12fd2e2f9d9b7962c6861583afef9c14d3ee4609db7e1cbd4cec23e1ab39ced85f1977447b4f46aa6cbb695e784fd6524dfc9b737a76d0d2c33bf1fa94fa2824160bddd6d212d1f4a756a2f43ce7493c77ff707a54ab26d937a554e7b7a854c7cdfb1bdcaf85726e01f48b8af42b1e33ffc24e6503211c24852d265497014dcfd143b5ae5c23c0ecb6c88f6ca75f81ab9f8c79db587ecaaf284a306b31a9981d58123ae9ef0d0bc99c7b5eb42c5af035b2823a68cb16f1e7cb1e1a33dff094c6c4d2d0d18f1f97ed93e673e3fbc3337d6ffe7fe64354f892e3c5167441aac34739493659eaa9c044c65b99a867fcaabeaf7082b520f4c7fa5c48e83ff3609 +B = 15da2d6e0bb4abe2884b7999b53d877933084aab1daf634a46b51fa37748f5c1e4b852454c8e4af673a18ee4fa063090076ac153c0a98b15a5bdba88deb33c6e4b86b9b5c5ae4c0333a6fbfabc27d8bb088f34c3cfcd176756fb7f10403f288b2cfe54821d0047498f814b712d976511b132547f26e12e255cff9b7a2498fadd3aaff503ad9ee0b2268516c464ac337451448a19f248680d6e84e3ce64d69f81ed71b57c86fa38edcc6ef869429da9db4106a2058d17d426a65b2aca2c8bf9da7717ac6f9d855f7b1e0d9d5577154ba5c03e9de0fa635fc52d0a7188cb3651a4978c6b3be889f69658d4bc9295937b6456c86c2f6f7ce115d0ef74c002680438133d028734115d9b6017157383 +GCD = 7bba9e7b68d528e59057364fa2c407ca821c04b42cd57212890e2a50ac83390826d2936c4ff3257d1ce399142beb17a5ffe3005208c9c5afde2e4a539db8a47884995eb282ff0697e43030cf497803d0b0b5a9f74035cdbfbd82710a1c3515d05a11f5f4b46bf33c4706a199ccc13324705be9faf653357adcaa60402963a415d4e4ba9677e65 + +A = -2a32286d420694070f785810eaccf9faf3c402fe9a977602d0f3362a17adcc0f051361b0d1361a3e43d00f0f241ac16d6ecc3baeda126d1bb799dbef1ef3a53abcaad456a53ad591080e9692b5e2f051c786b237b7bb54ead6d22b189c4b48a5bfbd98bcb2a045c6fa8eaf2e36d15ac449baae8e5f786b64cec976f8bbee72990af2c42ac5ff5d7d65c097bdf7065c5ad6567a3339705c4d73d363ec6f73cb1528eccefeb485196379edff9bda8bf7204bd4986880583190ced58dceb5911534c2d223ee5f98981ed798da5e889c232db0a8de0289326edbfe5dceebbaecc7e1a4671bca7685713a9025cd72b2bd0e40b0e63ef7cfd6fff265da67351e9efe2e3848179e5d4064fa0cd21ed1a8 +B = 18051960929d074624777849a7142e48fc75269fc5881ebbe6fddb5c9c1d0b5bc728270202fc7f3f9a73ecf79339f44e936be83a4d7d2aeb8861630851b5310267d7fccf92c0d166f6434ea01cf5c4a78e4511b95f22467b4736ebd30186d804e133a08a2d8a523267a9c11ff629e6756fa24978250fed9d8c475f107f7657ab342c58a96ca9278b238f0b65e8b4167c06c244e5d7579c8f45dad21872c90c0bd253cf8316eef49cc4dad73cde0a638e4bd694b7ad701d01d0b55edc6cfb13fca9d8ac6fd803e231260b0ee0209b2a45ef19d1f55cb152661528ff6b6924ffdf572e81180eff67723700ea9fc2314dbf2b73ad9a6de6abc45219b633fde77985bf800e861910c3bdad9fd9f87c +GCD = 891fa5ee53d287ed91eaf87f3136e9aed12e000993ada8b756d5022fa9138d33c86400e68887ef58d04ee6a42dd51d2562a55f456dcb6ad3b118fcde4f80a44567ebd338b225a2214c2feda5390daca6ccc4ce55a6641acb71912860db28cc258fb854ddc8095a854d4dc1c74f525e313c8726614ae26e290657176cde169584b82d83b2979cc + +A = -5d7fa06f9475db9b54ba5674cb1d9c4d81ef55e9a3743b2ecc5b000855451686b0aba10cb0f764603a9c0b69928966629faa1dedfc9b6b3e3919e12207dc7b9213c6e7b16751a7f7c3d26f1365b726fc0cc25e341ff577d58a31c5cde5c535c68dd72fc81cf0a848a3d28c4a4199e53361fcb64d80fef4ee54124b7fa76789fca70c4660de90090a87b2cc73d1ea4380ffdf2a9f9486a7cd62e2266753993773205dcb982e21fe27d959533586f868ae01420314d37d66bc0a466b67ba13c535d97ee4a8101d568218116d090cbe9aefc2a23bda9ba714061d83607a25d2277f16a34eaa6889b7f053e20e34209fd34cf8423886099720dd50b4aaeec71278182f2e8cdc1d081bb0c6c38096d8 +B = 17eedf5062d82945024e10ecf121533dfe302c8012c6afa237fc0eb51bdecb5848375c149c51fd81f79a80c5d1ccb9aff7b872d895e5880f164c47f8b40b52171ee894b824a82b3e8255498e8c0ddf9f1f466b6fe5342da89be535ba928e99e72c5c51ecc1bbd15aa4a221f14d792faa85ce9b19a2c979c5ce6cbdff1d6e62a4ba9aaee1b706a89afa4c7b795391b494678f837eb587da774d90561712b9ac7c8a95010ebf60084d20d1bd01a91c72a50a6b8e4011c57378ad7a20f1274f5a574cab2ffdd83329e5b33617d2ba50d00e0b379d307672cdc1d0b771a8cbcae92a27044d4d2a43e2bac44bda083a02255a26ac3acf56201ae79b0f231fec51782a9acd75e60ffa4e52be0c11cd6f0 +GCD = 1dd8ba55606f1503b6d013645e8d0e119e057a7e4ee90516eb08343eadda2eeb39e2e9fc7999be9464c8769bf5de5b36bf0807ef3b44f6d85e666e79ed845cb608165abace86e6bdfa1872c004c2a4403a2b71ef09defef17045909fa30b7e26c43f26142877f1bf2f1b5ef8cf07b4f6f88d6f5ecb6e4e946811334bdabe05cf1d0ae07a4554e8 + +A = 61bdfa4082551ffc776bbc80587b0612c9ddd02715e821752cbe72f7239f5b9c2e48bb23de9ba96a662ed4f0e4526fbbd1f37f70cdcd81e0e6c9dcdb7fc74788f1220a1a71b73198fc2d0576d5ef6261453617018f5a3d51ad386468c08e18bade2f5c6488c7ff0668e5ad765df4d2dd837096033e40fc93c113ec071abacfaffb8121dbd3c9aa87dc5bf9f5770d4b300adf6b43cd8009fb75e7e426644f8a1734b701ce4ecf385621c2b7193f08d9cbb86fbc80896c46858b9ab3cb3932d435c0d55a8fd2095922a1300c9d4e6fce1cc43e746881c06a222a44d184e1cca48cd394fc1ac6a52c5c22d435898dfadbacd7fd7d96c272f3ad5fe4f8a3ff2801f3b86216780051fd18cce2a03042e +B = 1841b502a53c90738c124ff1c1f0a0b25cbb29f462ca883769795040f2063c860a1b606902a3cf56619326327625972bf562e9c495ce0554dde38aac4600b9102f17838afd232c39b8f0a6ed74c46dbd35da7e8078ad5b7a56b41a1d89e89fdc28c678b71131aa4dfc2ba207cef2f44dc8e3b146b03d8b6ccc5d621054bd3a7e0bcfa6d59f78d738d359477c4853773bc683ec6b8916a757d0e39019b8633f9cefd56951e312ad130482a2b502c246eb63fd74d3a1e1f21bd3a96d56ca665f065f662f8b9d45f0ad8a9a564eba4fa60742b273471331de14399548ae81505af302fa2c3c1b457a5227fe6fd6e008379e99c3b2dc7e3532ccc41a560053e922160e2c54a3b1338f585b82379c411 +GCD = 13d301acb4f97a5deb2bff5bea432736aea5c4682f3b26327918b67b54bb8746ef6c498d7556a8ab5a443c42a62ff72379e6924b441fe322bde3d1505d65236edc66674009466b21b70a14391926bebcaa9b820ca0229c9599bd26ee4d4050f7dbb4298a87cf6811cdfceec16130fc196ffa41903fbe5519351d64dd028bd76858afeb81170ecd1 + +A = cbce54a50d627638d68719dc2ad8aa9c8bc25ec2a9171f4ac0c891ce70f0cb0fd4a7f4f79869d8651eb355520ffe2c953be20963054f8d8989ae5fe0c2f0d48eb4485d6f9084b59d718fe10de0fceef4b2a9866931439ed5b0f3c4be53140c1e87ef3cb3e66f7a799790e31c7364c2a98c556d40c49045e953b7cf4153864aff6b8c552dff0332e6e7b402d66a19aa430a9ea09c2721ce969e6a5295827a88f5a631f8a96d37ed4c99b27554d3aeeb7bde1b4e1cf8c0acbdd21ab32397c0dd1da9a7eb6a0cb466c67744623cbea929139ae145ffe5643f3046d7f8923c053af9b92a7cc5f9cc0652407d1050b7a31058781a4da322032ec2c112c1511e96c5d4948bf6de83d4d3d60d949a612 +B = -13db9562a14aadfcfc42808ff5d3b8380bf95ac8050cb6c0ce97ffc3762ddab501b512fdf70c6b806d69127d6c7c01dcb92f22aeb94f4db24ce96339531c99133daad4f7fea9d079f6dcee9fc9e901a777c2b1ebeaba74fb017d3bcda556fe2a8c876b4888457e5235d2625b13b97ce3dd6158c127bd8dc32255b1c9c7545d53d51e4e662f6d22d5f72009cfe2c3529aa17347b322f9b9ecf6604bc6a31251960cd9126fe97b0e90f976955282834c9316f801298739dae6036c8ab90c733dd4db24db4c4ee5575f41ea9e184419a1ff34ebbd9ff6b04b63740450fb027f8a00015dc69ea4cadd475205b70d1985a36daec48e4070169f005b21a4a4864327499313a0dd24949e5a1dd053a7068a +GCD = 637c0719e5e2fdc4db6bafb8fc01eeb160309c12014305e0ffc8b5deaab31ee00a2e899809f0cd1c7b13210f77301958a92133116274f5ecbc96dd604d7b07bc243804823421ed0699a9f846796d43f4e96a674772a4b4ccff5b1d37e5d76965a790e3f5594e4ac32de6a62b4ae7bad8e972acff07c6cb59ea0b6627623b527894a6718a9e9d7a + +A = -41175f3d43c5b5df8d77847750dccef392f59908527d1026a4fb1b71e5c439a6b60daaf146bc6c4ce000e3fc19cba776209655bf238db056a679714dc9186b014fbee234d9f158a55ee5cfd5670d7a0501e351feb43f034187bf0ad68436e9202a55720ede01fe166e3dde88575af35b7149219ccd824515a27256edfba2a3e107913f9aa9979d4a6aef9530db1a4fc399b8f06f9f33c4ef986363b10766768273e494624a7cec1c7d7be0b1e9aeb568d3bc3e4cf01303ced63b7412722e3d1f6e91263c6f4e9d8364a0f3ba56a084c7d5a9e41a930397c6706e0991dc1e9a6b7512cdb72a12bbbac332810c85e35ec1418681ebbec32419a907c0514712ca50f9e69d5be3cc37f1ed50298dca02 +B = -454b6acfc90b59a3a0743bbc296b2bf6a9570602f6a83af372878bf3ce46302e3d4a878819a9b886559175a06449c5711b6f165af543001f85971a60ed526897dd2af746649f598a6f5c3ef06a6562d97716c4fedb2875dc13294e3f94d720ca91ea04150aa336754554ab6074881e52e6475d5cd2513347af8c7adb631ac8e6a7c3302202bf81188d09cdbfca0a3415c3434ef8f863724e00447847164c52a1cac32f00c3775ceb063c296926842f435b0e7f2059a5f2da1b44caf87f8c236bdfd9ca978868dd465129b25f988a1f8df8e905608423f00fca26a43eb8c0561b7f5217341f3babc032b47e717825c337e36762c63f08ad018d902d974427594be8fa0b86ead421d70e13a89ae925 +GCD = eb681af7393b187f21fca2198ff863011eb1c6d99f6e0658b22489a9b8432b533a00ac70cd1daa9a2917e9a3e1d65a0c52874be3695934766a8ab1482983a616163f9c49a6f8cdf4db7de27b607b123e23cca9072355109dd024412467402f2c01c94921f6d22463acf3264c19a78dbea0ef59a777cd19e03e1b2040c0e5d07b3ef5f34a5d6a01 + +A = f858558cb1db4e261cc6ee60654f1283ac97ddce36507cf5ec6b24c0dd9caa9c8ca7a937a5d13bc3a60bc630045d7fd99f4303eb6d477799338ab37a65cd313379076eed330a255e17671d6c2c33114953141977fce29b40beb0de6c0c79c83476007f0ff87412a4cb893bb9f68a052dd5c7bb1e7c362ed2f7b4c0984b3d34a70e8b72465eaf1b9d982286ad65e45e37ec1be754ff07efda0c9acfadc358431ab519f16af812a99bd041558808e61fbe20fcb0206945dae9c6c0bbb07c81dd35501b5164e02f64a7af234ae130103bee9933454e32ea4652e0f2f58d1fc7eea3ffca39d284113e7098783f41b12cd7ee1d74aacc0a90b07d23fea9cf9953b95a8e84948b309f217c17c8d7d5ce2c +B = e738d7c21b448b5f4604ae919d06022fecf88fceaf3c24c8f9cb2629cdac6bb9016ef26f73e2246b5672fb3829ca4051c33f7d6e2e5d2b6f63c779862255f551b625843e9c10f15024fc047fcc04026137ecac41e4e24d0924e1018844d3439996e3c040b6279fced710acbf75433cc4d5a4b9d208b98bcb901c35a818fb54974a09ee3b2dce637dbef2312faf938f535e7d78d65110b2cae6bfcc47ede122247c105119f0ef5bad8dc8e7efee283e3287eb91e26544d364ab1c31141f3f55b5b07f1860eee83038da17dcba83c265ad16055ea0cee46a994837e4c5fd5316212c993aa772032cb83bbd863421f645f9cea873e11d42c3b82a5e2407fa615cb40ad189c0f837c07dcd0a94281b51 +GCD = 1288a82d090c30126cc52961274d35f1a3a0d393c54274a1d5d10a9b9bc4ff7e64867e6e21557c21d3130d522627ab7100f1b72bd9ac73bd2119a1164785b791a4da66fd4b2aa8dd8e4a7e7a1b72e54770cb2de3021453253451483610a2de66a2d2c273f736df753ce774b1d65c0052080f1cccb2a238e1bbe932ece25f7463fd42f192f2a46d7 + +A = -a34bf19c4bf4dfbaad2ae8c769541962518f36596897ce9383d116dfa46eaa49a2faebacaa5611b6f27f1b6a5ed321641d3c2d09ac7f7ca64fba57b592cbbe091e43581c6a734398fb2737c2714ebb721aebc37567f70da1eae034aa7e8e825b0602895d37554c6f95d01b843860500b76e87fd20f42feb339cbdd90a964ff0cf11b645cfa23691d1f2ba11d54a24d8dc6c4836749527498029fd38d5b3bb6d3b2f32c5b138a11c145b085bf9d661f9d1210919661c030575f141e965b2ef7ffa6c5409519795d5a9eac22fcd9ecd28ce0973fc71aac5cd148b5ac39666453633ab9683d42682c73b30af741e3623de73172a2351a03a19e1f00428c851cb65696b59fb63a719af8e6b939547784 +B = 21ca93267d72bc085247c0b37912d5aec67c94e28ef0db16466762df92220a1742e63766e439fe9cd505a098bce1bac0cdf6a1bb082d0fe8337ee86e5c21690e2a724a83b3775782804ef1d7792104da5d5db9281c5723a29da8d4eec9736732146c8bd3a390fadd83b06859b1d7ff62786bb8af4154d36042bb11c301d67f08a445afce39a321da4118cf6cd265d0cac2cfccfd4c5d1fc9a66b9cc2d0cab919a00d9f13e8d5960e25ca1012bf16a4a00487038c249d502dba049663ea693142464845511961196788b83298878b3d76d96c42162e37964a52d2677027b2fe8c996ea9160f9738b407e5876f27a106b615be5a4e4429b281e9d969c13fd90832d2f4853af222af1adc20e432b48b0 +GCD = 23c1c49b6c10736aea82a11344480c57c6f3e899517880498748c436851fc82f9bdc27275c1ed6f335e6fcfc91f8cbb517e297af3075534062374446e46dc720fcd4bda601c5dd6de2eef63e41759d7f5cd29e78bf602a3a45920b7f11fa00414e61ee99f536ab63a45b6e4da04c2586ede05f31453b7e5975c30959e9ced265f4ea7b2054c14dc + +A = 65943a57f03a50300d421a07be6932266e09bf72e995632ba0277b8fe73d12d9f54a7351a500ed4c9ff5a91eb6681d84c30fb525c3313e017dd3169666df1636f260d2770e72a0b123d83506ad0218b21c4936dca9c76cc761a44fef022f76dbe33b700e25408404bb932e29158635da68d41c4574051fcbf7a8ff9a4d0b710845a88375929685cddf2548f532634326023d098fef56c5cbd257cba7defc746b6dbe32a6f7070e1f9a83196d152715f551ece17cc8413b848d4dc5a2ac704e538ebb1710f62a2b438d5b73a296eb2526bf2412ec920c9eb59f0138c4758d62fe589e876fe990e2dee907aa401480649c8ba8c54e8f9311929ba804b86c3175cbe30dfd258a71f310967cdfdd85d3 +B = 16de50e465c619974e0de401885b864394396dd1812bfb7d269e0770f72d03ba4a06062d3ab44645402ffe4ba69455cfd4bb6c15d601b642600c3c2cd3b11efc41b5b4791ece7f6c423785ef9c21a3589287db7b15438d740b08fec883314920bf351341e14abeccf18973f6d56ea686c47b8a35adf9b978a150316e2b2f2ac6469e1b88ff69361bf91ee9a5977b6e8b7cb4928a5467fe6e0af584fa51485ed27cac4d1e83f3367a39fbf3a9561491061614d6a09f3b55b214e032faeda50fab9c3b6f70602ff12d382c038094755ff667b6a5d396ea2251cfbf53c683e103a583443b0b34b8d2c94d3bd6ae6ef1efb06a8331cd7341a7fd0b85a240a1c9e2f7b7a38feaef40451c1ad614813e422 +GCD = 4358d21e8819bdb7fa6f4ad1978b9ab92adb4cfab6251b7448db6cba6eb65c98988128127a21ee50c122041267885332aace74e716fd6a0dd06ff2a2a371ffaaebe812ca919ba2d4bc00126f79ea1d6708187a105e05e4e23e07d6b45786a6f949a8b7f38b6f610daef78127255aadcdd9d958e8622957c4d8a939bf99393ce1b254bbe8290810f + +A = 4433403140ec4f8028ef0877fe83deeb9cc93f5a9cae3dfb8cc1b55ca1890dd06cf4742c45300167e473127eac953f54d2a834151ef50f11ce926c6d4c3d5532e1e35258100d7ab78c8a4cbfe80940a5ff6d203bd24bf4495e20876b756475d6fb8191253dc557182952d0c3b70d53771231ebab1be2ba3b3fdde24ac9a0de9678852e38fe0ba436dc3f2ccd0244e623bb1e62934eb44d3b37449a33bb7204bfb046b3b4efa61712d25afb08872346c126092277ff7027756b3536f3152eef2460a60c436056c227ef58d5f181da45f0a07a5ca486e9560bb2c49a7b24c8b6aa5d6df6da60521eba751a299b8bb277aa878c8609513bc0af28c191ca26bb5533299230621aceb7c06443af85ccd2f3 +B = -31f90dd532422ca4d6fb167b35216a0c585a34712a14ebe0aff74ca15ae9816d0fb1ff0c292a5eeb694eaa43e40971d7dfdc88049a9bde5fbfd4607302d39c7868da8b9a8b87bfeb9b92e62f8b7947d378978394c82a0ca79d85a20cf757bcb420228542dd04aefe0c83ec75cc97e6c2d91f38c979638a9cfd498519adaaa2118ef7048f8ca6250c62e6a3a25b1734701161847ce950157cd5fcc869bd596bbc16a2e5c015c71458361cec83344c410824154240af4e844b8db36359f445fdb9acb6188c59918b6965d192e0ba731775771f46a6b2616ef6759ae37934e1aa478b5d02d64b3a00d2db22455b9cf8f8b138693e2f6cc9cf39a7269cc0536ee22146c111d41cbc4a5a890611e2829667 +GCD = 929fc56193af43220bb8b258caf55d20dcbf9b4c5a9c72b0151fb2e676b7fa942d294eabc38be689d6dc4f5e1ba4e441470e81cfcfddbff7b4e6d66414c3aa3f1eee18f360e6bce779a64316bad7a1914f4112ad0de6301f6f478d3e34079734ad2f510e212863da53588a8fa05d2239c4f72aa05e756181e61d6086ee3050f99af82dabaecb38f + +A = bbde1c851190ba2a157615abe5f4606590734b2da23eeb9b40b25ffe9154fde0e3de53eaf847c18bcd68ec474b2ca80f34861fa77a93e550aba514ae5b9ba9d718dd0e8667925e7a59609bb2a9e7f98bf1175cc0d5b75ea328e480613c9858f60ff1f3878aab1cb346a69e0a10ed5882f3f37d9a78ae647b185044b44f3e98a4a1cece1d50806a39f56229373b8281326d44f196ae7e94f2b0fa9d3c3ae091baa2c42407c5306bc2b7004462d17cea7f37b80f69af8775271958e5493644cc5eb11bd310180b74053c43cfb3be85704bb030ed64e1c84820da93d759b02dbe3e37294bfbf04e83bb1f4a46d22de31ddbf0e7cebe1058cdf47287ff0831881991572c846954ecc70af72a65a18c58fe +B = -c436bb823c11242b634e38eed617f460b6ae4d34058cbd124d1b5e24614d68172d13b3dd61bd9f3cbfc906d68e19311b72792139d1ba0dcb555d476037c1385183d58b89440ed1f7e57c93740053707ce4ff09286f5287e82f58af471cf6289480451a1d61836e111584a1a3b262916e0e895192ed9d45ec24832d3c9bc97982b167a4fa09554760a3927227772bc7d58be6ef80776ddfc60143844e90621e537a41250a31a95ee700534aee6b490b9b708a803bae8f06286effbb8f2e928869bfea564893471eeb27db6ffbb3f203b6e163e0d558258496b1ba171bf84016b1302f8f0f18a2113bf5ef6918b77a065b4831526b3ba70e73d768c25d6d91b791aa09f641a5eaac9d25c2b33d6b0964 +GCD = 1184caedbc857a571e163d9db99552ed498c1a6eef5abfdf0b2f655dc8e5f9538d9c9c371a2fbc2fadb2ea8973066364f8b211ec862e94f1d7d15242bd5106a101cbee70b6318ad02ba149c1fc19cf34c0e11f7d99576840c1ace56fe31e35f2f33d36285250a90f1837453d7a89729406829462ab55d7591dc00ddb06c9852814f42e2682726482 + +A = 13229e6b4023589b758ab6b1b54320380e7a611c80e48b87c0800f557e58fe6efbbad12ebd9d9597956737d8340cf26ca7dfca35a14d9dfc33460eae6b36c71ba0976f9fa8cba07d17f2edcbc83e73e2f2a34db103eb6f5a9ce73b6d4122eb8705e88e68d67c3d77bbc1d395ea33e70d605a9a90df8553e953b4625ed108a4556410475fbf14d0da6464aad4b4934b66576fdb0c9f85c9e04f75c92ef4afac6b5d38258705d9831c791940b6e5426275562969c64cacfe7235bd0fa566a2def5eeecf32bedbd0eb90cc335de21a0649bf34d5503cddb8c17fe334f65c47af6eca7e5e2779ec4ce6711efdcf29ea699f4ac86466f5f40277f9cbf6d3dba662b62e761dc491d26f81c26e89a19c69e374 +B = -2932ab66a01411c7ed6ed0942eb637e7bee470f1c36e26a2a1c957c0cd16e770916421bf60c665dda682ba26a3f31d10efde61cf0f596498f0bfdd8e45df480602d0dd8eef5dec44fcc2686d3c99b2d12c0001b0a1a5eab96b14af69f78a03920b280cda457606a7f17ba86fb8dbf0eb322ead4522ffdf57b2374607dc96323cc5c2a6ca81f37675c381d693b8dd0abb6711f3bd1b794d8d2ee4b00a34d4a4853061f0ca86fabd98b9070d351c5b27077b99ddbcfb61e67bc664b58d7a4d115a782c48e1c6ab08adffaad97e334ce506dc0fca0c85b7608a31cd81d24423575345d05cdf2b10616adb367ae8cab299c2cc757329cb2796619eae279a2f345d898119cd7586932e5ba38f585335ed89a +GCD = 3176f95620a041ad21ea85ccf6dbf566d4089638c14017e351e874e39cac86aef060358ecccc11845f179f498b81842d776d5d79db0268a8930f90b77559374567c8759c5e9e28d95bde79c78f51787052e7c67280cb8b17aba50156f05a681ff88dbd525b4f78ee324126f5baa8eee83624bc38df080a8d0bcbabcca7098eb85ed040eeb65d16f66 + +A = 81ac8b57641306c25a78440e4fb8f1a8301b842bad5ed80b7d59f708cf57040c4596c3f95e89e8623d48b2e8c73015e32d039af51232cecc95aee4157153c404691a3232035d9ec5b53f3b1261772cfbb8414267cf92341339c4fb5f3481cddff4b0cfc725bb341502d005d02005542cf734a49302673f927a2665ff7f8f1b0980928cfdb1a9b06a6a41613e07c892ace3a94d1ed578e9cc057196851adbc6274aa4bf76930764d05781a4426bf9d92823929e065a136d4f38a3f2037f7d833ae4c24117f0c63375ec0f9bbd87047ab778c2a632875990ad68bbbebed593dc95dafbfdd435929096e66d59bb91e405a3da74482ab7a37173b142ef88def69f5830cfdb0fc096e8efea7e826f1fcdc13 +B = bacc4162130805583c89d287960658dabaf4a6072d05f4b79c6f2d152b1bc088f3ed7dc3ae3d366c8bd55e6d94d7b4bc8bdade587f98c17fe7198016f4dd12e4807641920df3015c647eb749221c8acde393086f5e83c0d3689a199d0b8ba228b439d80dc12a124b9d3e5f610357fe2201d42920fdfcebfc2eaab09b0b7b659b40983d31954302a8ed64285125ff214428a190fb9eef80c2853fc42d2ca482133ae4b8b12e5fc384e0aedb95faa9de4395a42fb5c7c80c9356a0b093a9f838b4be305d24c73c216a4a832f8bccf0bef1e2c1924064198ded63f57c874d1bf6e99395d35b39f87bb25ba229016d4ce3a285b3e981221fa22f6d8e3f9647337cc0c9ec247ea902331f362e8fbce4c6877 +GCD = 5e8e3ddae831f42ae315136017111624aec5d2c4f3ad57f5c408ee94dd7f2033eb5f48f21dea9476db60aa02a141c39e45dfba7ed531c85745ab2b7d923abfbe74b382d71099b26ff5988dde70ef696a2621fb369e369f6288f91c1c1934a85fd0aca79a33ff77db1f698ec095da36c6f722f9746844f8554dabe0250aaa2edad199f79732fc4cf1 + +A = 22d40cd71e86c8760a19cc623fe214619a71947f93e618ad04a8e2b35a34c74da0d3fbabe2fee9e0c7ba5b6824b524332d4dfb4b292d8921f5ae59bc023cab10c4e56a65188cd673a994f53ebe7609dc32efd20d79c945dd766d9024d51af8ab9345758f4f8b0a56d624bdbfb0b63238fa2516daa5056913c68cc77b3a83296c10bf9887e99db04992b46da9f1c989cc9f9e5ac46e6bfabc7ca421d254a5f02fec1f9ecf13a90090ee997b099696ed84f7f1b2fb3129ff4a8cbe16ffdc5ad1017e8efe332535332dbca34763b7d34892d8a4fe4d21cc09a4458c09992428a5d38a99f54f1c3d20f9aa74ee8745f91fe6691f98c952924912870964cda20ba6d10078e00c82e97a3a0f926b00d7d088c +B = 46a015fce18c8f9dc8873479cf61171f50de48f8bb5abaae95920fe57f7a3f3569da8c9b0293e7c66188635a316ff28b7226d911ff9b0ec050f0f850cd1a0c50f6b5a4bc1220f64651d2195f5c97f5edd01ae849b14aea2aa4ffc38eaed26a74b55b090d86da7fce05d0cd29d64d846955b63452ee23311e7ee98f518dff48042dd4bca7cb2aadf9afb69b5340ff7e28e17fb926206e1ff315a6f6aa6137d6163268a8777ae6e7f59986dfff870fff98f54f43d38ffbf9123742f567814426988e494ef43ff1c21c73de26fc16745b684159bc54be81ed8bae9285b792db16b816536d1579e653a0d31b65a2bcc85bf8167c3c0908ee82e8a20eb806552976ae21c523015885373cd14cebf4ac1c5248 +GCD = 524ac8b2820605cc51b8ec2b9d1f283c8df0e639bdecf4b670c30a68a3273dd08e9963e964c5bfd1261b8de70eebc776ab8b02f5cc141705f39e7637170c283df86e90003e35bb16828eed7fb56a8db2729aab01efd8296dd205fd9f0d3946565908c70ec148db9c1529810a4eb9d9e10e14c8ae5bf0fc861a29b41d1f3ebef0e3399700866e2933c + +A = c3bc1c27eeacde663a096a178a1c56dedbfa5f5860eecdb3b848f38c66b9d96b0cce7db956fd9a44043bb7cc83b4b1c4d2030d9b8815d6a1eaad93950e9c084bff5349ea60128568a7c51c123251338e087dc75b2ecced7b67676d37ea3a801a49f5631debf4f42e2117a54ccf57e22157c2b772eaf41065bf6dcaaeaefae847d9233d34fad1e12dffafadf0e22f052ee2f9329b150f5739017011149df395c856892620cdf539b472eca4acfadd353d84bc72494197e95c1202a2e69c356e41d4482b78424ea0796f35037e2739c9a0c98201b1311eefa955ec0ad9563dc86c46f7c04f5b7c1d468e30eb02daad35d5ca1dd2771c8ff4590c95c59c08d58ba56f2ae29f0a7297fe7cddc459822e666e +B = -1e46ed933c3a6e199c42e47539900ef253726f519fd4be30b11056d2adeecb3137e76576babefc6251a80548f7badc138e1b0df7c52c8e178ab128046791ff193dcb6e54b170b9f0f2bfa7d755028b59b87b4bc1da3564e22f8d78f37dc6f35f27f8bb3a60f62a0990aab45b1a227bd01372d2e443f13f355e9a56e60d064471774cfa06821aa47d8a07daf3fa30696160a7b7ff4acffd98301e931d9707a7c9772a37925787f7796fdbc21215a4a8d77afe94ebe8503ce198ff901d685751ea6fdbbf71989431ee18d2f6c1ddefb73913b0612a4202c4a43250bf0c6c7b16ef3ea258970f08594edcd478962314283b8d05ac90c7d65cc76c85ba3a0d7b018d2f90a06646bca1d3b394ce8d2538555aa +GCD = 1f87a51efe5b0fa59caf2cb864ecb1b2b1a00ad8322085d975f0bf8fcbf73f195c58f1cf1e3561ec0f7331e1f214ecf913d9e9de76d8fc6402948642b785c1cb36319360cd7ee27387919cf36080109d1ff9777eed5bf95b7fe2d174bfbf67bd3dd81ed985721244682176fb6b54c4730107b16fe41e08105c2afff1d4edef299283dd9e82cc6cafa + +A = -190e2bc8d27fdbf1f10b9b43a6f6ef631ac1aeb1c57a802f73de8624180544e3eec2d09a796ae97a3b3e01943e26aae128a7030d9b5a0514cf88dc2d7054d1b22506650fdacc18bc4932b8dc3e411305b73061a5c7e3b3feacce25f3d6ad42eccef4bdb2c762500345c6eba7805768c72b03706975bd09849a804a84f1e8307defbf6ddebcbf9e81bce8f313fab1a6a7cdfb9a8107b184f2ef6be4a905a2d3fdfb439b20308166b4aceec4c24ce125458d5e3b7d322d107bba4bae060e54f4f4ab0adcdc9709d1a500c426b3369eb80b730ba9dc74b5e73d66d2938aba6ccc472dd691fc989ae8e6a27e8e47a3b358591b2437991f274bf1a8c16f2d8e017b0caba6cd984423f06c343c6739d3ec1cad9 +B = -50d6bdf1d4918bdd8e5b8c36447c6ba21b1dc52ebf434c69feef9303e2401a4dcf36c1ba935dfd67ffe108cb2f21cb045ffe041cfc68a0d463e8288b51dadad10344241e660a7ffd4e1539bca21ae2da4fea1aa10287188bcdd4e4946a4eb1744db38fe3c66ec542f1d79b36416f660a0ae6c230a21a90d972494005ece6232b99c0e758e507389a8e9028bfad47d0e97e4a09fe69a1775132b005453458ebc5a066ec5ae780cd549228adaab9a0427390e1137f535eaf1d468fd043be5eb5a5fe1e6df48102f5681e89f8c0ea9a9973e9755d424697a1c0b5e6629f1b7e6a391d360b670f51adf89a615aa09ca48eadf4266482afb7cfc9b1ffafae6000f386e9f55df77df85360e5888a606cdae5a96 +GCD = 384d8cb23deb11876000a97f36c0935bee4d62203096f0ec7f9a4ac2375f66829547986e3e08870a0ab9f96acd1b31508a4fcb0fc657a644917aad211922b960dae44f406f05fdac72e1814bb0b61652edb8bc07e21b7ce11cc8ab8e18898836f21ec94266a4c73988c76c79820164335d1e4e014abd9be600140b2384afc6bd5c98d81d249120569 + +A = 3a109be74dd5ba2b070eec2a49725d499fc2d4f23ddffb288a7ce3f459643237955ab1e0196fb9edb59feef3298a410cf712b3e4211097d2a28b87b514a72c9927dc6d69bcd794f304f30ec0b85d56c0f8a4a117e9660b5d5e585e19721db6281e0994a81245f0354319e03669e7651343af29d63a78a8a32d3f9ded1fb9c3bcba0298840dcb707b9d71203e4423f65311b8aea635d85520adda744567afeeacb6ec23b0ae219525eb618e896ee572973ecc3b6e53cc54b5a64a8add76ee7f24a896594175d0637947ebc330fbee8a77b8f4c1afa092efde54a935f18b991785031619eadae7aab9d06f930210dd2252b53009214f232e8db7d8f2e740d0de2ff94472da081c13e4e4d35c8f907eb3b80 +B = -132fecbcff4a181f2c8d0dce9d6c59d3539ac5ecdb0cc3a844c55c64904df3e1e37a6d6db34f19d081a516deccc0ee5f8a1648fcd7f9b44421660e504ba3ee4c680c7ba78535d5c892fba5017644d0ba860fce39d7078c03ab902ecfd9676aa24714e35fbda79a9770f202bae311a977f50d86398e8e3ae5ad47b5c2f72e90126d01a554bf592138b8ebaf838157303fa3b2c3b0d998575c34851666b0d6325eed741d7f1ad4c99b930f702167acc3b3091169a31740ce87d0714f5eac9cbbde8a3e81ccc12f809d18b6f3e5909393b3b3449e8b8bc5d0dcecb185b4e0abc5a9baec3e381367ea4196ec04b5a2ff8d6da984e3eaf036d14b8e3c70ff879f4308a3e20818914b9804a691062bf1a966a780 +GCD = 3b53e7230757053e0ad86a2ee8dbeb49fe8b60625e77dcaf1599b765083c6eea2addb26d2a8a421de10574410f207f33a24301d412eae3f6eb08289b977a48e4e6f8b3041127fb7bcbf5a8e2f4e9b2c13e5f0622ce46dc8dc9d8e8697a50ddd7a37d9764ddc1859a44e47d184dd30c7737039216cafe6931bb4c8f5816b3ab56dd2fef1ee219959380 + +A = bd88fc5ba0cd6bb11e28ea720bb5b3dd3b3fb4d795934cff5f258d83ff90bb13f0d3ac4954116f668ec3f041f4647006b308eb2d5dd9e903a610c788948ad99f12812bafa89a599f424876ff6b5ee6ea17a1e821d18682f8e028653f71c96ac328d8cacf620e37ed654d101b6cab7b83d02a6867fdbbef746ac07b7449dd9380443a00951e28d0bb62450059ba69c06c487b3fee5184a559940551adc7867c6363db1df203c42708d81333a3dc2b256deef3fa2f3598f924d8be811adc0508ae9f826e84aec1fd243dd385f0c20c27457e648f9624b97ad67ade150efcb5230ae16f4ce42a0ad7b61e9c8f4b041245a8678b5d545baf521cb73ddf555ae9fa2481f1fdb817872472dc8ba6bdbf49458aa +B = -3ff6520cb83fa7df001bf2f8daed79b497f6bb34e7edc8cae52c2f94159adb79127f5130c639ca55e605b76d24a4ef54e53ddc7c5696c6470a89cff447f0fa0331f41b7f2211449a22c030071dd1fb45505018b2f76e2536de44b06bab358a4d42a1f71a8153e39d62549720d28dbd4161eda32e6eb8867d3c02b5caf0af66a5927decabab1a73360977afaa0a65da7c275b85216fd71dc7d9875331e634bee302bf970509c788e3cb4bfd8b35573b8c97cba8b909f781a2730c300949d788c6b98044213dc7c9004c6012b9307206723cb8fbc95608d501288b9a5eabec461092c9ca76a3e10b79f5718fd56944ef859b32ef429509e2d242720c4d2d46b10dd03c869bcad2c8312b71dbe18b29591f84 +GCD = cdb6f4e9c29d299805159a1ccf5c4cb64dc5e3977f9f60743eff5f005381d4a67a5f42095ff7e97c82e68c46fd5535d5f36091b6136d4d59ca551983f2c37504320d3eb72bfbfc449da9577ebf4ef2088e6b1eb9b2cf8024c8bb6b1252f99d93f5435258d1f65db5aa9f036f6bb0166f05e4b43c28d2065d49c779fa20fac69110a69d1eacf253c86 + +A = -4ca1aaa717d6742adb7fcc95b9b725ac07e4a0133daa94aa7e6a5fc0ee3aef231982b6fe699379550167ac315886982515a4007526629457f65078479db3efe0913105a4bb476ff2db16918f3763d80717cd42c65f7034257a0ab1eb840236c8f6a15814746cd12cbe3f8c5bfc771971b4b2cc20d231e49b1df10fe8e3b5fccba169d6efdd467d115fd706edf16b3730c3b32d44403752ae643ff79a20642a6748f2413bd7a3298c4bbfd435ccef4cde649cb101cbde34dd5420483cfa0b6be3aed9b3181c93a1507d77a3304c41694c0b2430d24b3fa3c7c76a2c838ef4bf59b0e5b9d78ffd7c91df3bab1797a5000529c18dca21fa12a0ff6c4281acc9f0f63ae51f44b04d6e4952e53288033e40e908 +B = -6831b24e29ec0b9923389233d00a0af26d0fd2b9f575cf63b06c0af1d7ca36418ccaadfd0dba06dfa2c6daf59d0d6fee6116f7a9d124072e50301f3a4549a3f90ae504af55eabbc50c836728de3304a55d8132831d8b14c7024cb3d8dff78a98ccdb4408595fcaa3c358b7a6919c7ca8157deb2e683a81420a25be56bb53babeb3427faba3904b811081d67790c14122be5af04202f621fb17735f66aff5db598db15f375172c285250de66c011804d93782229feed0f06c35ba05d9d95c67fd62b53c0e7e24254a474d94ed7e147490f468657308d30d77731c416d78c5d3e4c188c431ceaf0104ad21439b2639602d5e336bbb86eb502b61dc54be1111a45ad71e05aa945f662a487841f2e1ad23f9d8 +GCD = 185561aea368640f959192c8a920128db7ca628b3d1b2cac30a13a1001b29ec59b2fbf2a489462adf3bad76bb66d2f5a9b7f0d075034b09d80ce602639e923778ad60f2640283d64328af605b82475c92ddc9c58cd92f792b2ca6a602e7c09ee7bb20487e673c65a65067d4c32aeacd91ba63679bec224769295a926d4381b9d72f80a8948837bdad8 + +A = a1d7dab703cf1fc6ca78483d9c6da86b19d3b851a77b2e010c36aa5e86d4327066cd1ddd345178f13a684d0749999f84f08a851578143cc7a51638df265f4bbbd7d1b47311bfaf23debf953f06838c033d72bc36bcd7a4b187a51eb9a8db7c235fdbca91ed07596690cae6f9717720fd41e31165b804d0de690ae4132265192dff8bd9d408c7b8786d2f8c18af9af4a3f49170c5ab71b0d3566d4173b1ffb0234995e93bb0592018e6147398d09fb2b298d7fbfc7c739fd88714bf2964f5125108f9f306e342a072bedd28010690ff8aa7f9e9fcb0f4aab81a03523c117266b546dd1d9a54df67f6087c8ac57572994951a6ad86278846640f260a3addea1e5542f1082bdca58bf3307a1f8b1b0dfd11d8 +B = 11b87b63d1d4383776480dff9baa0227f9711b5dec6c2336e7de596071de513b4c12edaa10bd3f410ed019c6acefbe129c7813ef1ff825f6f7ae597795789959304ea72bc1c3fb5074bddd2b218e6d1c6cb099f7c7b8d1321aac4fdedd185b2e29c34b5856bd9bb4ae5028857443b7ccce87d7597387023febc8095d8a98c31aea2eb40a4c84f5a89723b3008c3c0e00ea948a4597d5b1872f4710e2759a74b37341035a8aa105d42be89970534987638bf89890d57d1f47cee2ce1572cb01ff3af6b8c6ae2a8490399b349e607e01c441defe3817b4fe8b030c956cc8ef662fa706774fdc20816c739ae23d2a2045d6409860942010e726e2d77833ca108d79ca0e53f87fdfb121ebc337987523bdb7866 +GCD = 22c04f016b106e8634db74c3a7537d70fc17a822ea286430befd67bd916620cfff9510599ca31f139ef59f171d7c11f7a59b0fcd22cedc93b06281c3187217cd55e4d98c90c3da9b582693b67752e7d7b13bd0db632aabf2daab8a27e49f14fe3fa4f7915a2f34981edea0d6819ba022633b3e1000d4b0dac3ba126544265bff870f0bc47326d924b2 + +A = f64d903668cee86d1c0a84098bfc6a262ae0fd69128b8f825cc2397797b4aea27de896b629550ab41c5ae8321ac83b872090ec88a0fa757b505f3cfe96584d9763945c89101921144eb930f3ce7acc736c410b6d2a9dc6013b9d748632f7f178a1f62328df55a232e1f9b69efb77e7ccf8a97ab38f342175eeb304ae3b2a60b81aa028f8d7eedf27da90bf1b004d8c037302cc55be00d7b1829230a57af5a5afbfe2949c4d8749f9ffb34482039bea4988e10ab1ecd3be4efe40ede4e6217bb4c247dcbcd0b6bbaba4015f445d8ce86d9eb8a63918085ee8c1e3198ec0ede1821dca33754d0067424b1a4b6f4e5a0049b1711578e3b96d9cf43f0888ca8f1bb2a8ace00b042b60be38ba7df9dda7f55f5c0 +B = 1480fe598decbd5e4469a0399bc4b10b097f661113979e091bfa273186a357c955703584a32b6aeeb0400e67cd4a14865ae082fde635c372fed76b8f934b31e4a957e4ce399fb56821218fe905a14ffab644ffe30f4b5273aa94bc857d8befee283c6be29d9a8f2bc25bf9cb9342d4d78ece0e5a67a8c9344e2d47d220555a668343f78ea0289794babbb8c6ff68f8dbae079efb221869240ed123ba3b28c3e79a84b7f76a679d3ee26414b6c36ff2c86824502f0aafe648d3a1d45f99630d45f8116d565553fd70de8a696c8ac246d5adfa0757cff8043fcbfc560e89cc7eea35c038854707106c79b0f96120bd4df77fba3ecdafba38b1e483d2ce4d40dc19a2b9e0d5777188bd7a995af286fb361bcdb8 +GCD = 59824fc44c1ae92ebf3ef5d024c6a890d3ab4a8a6334fc7b3f645bff451b54d131fb13059b57393e76cadeefbedde85414eca7064643dbdb6d9e364f9cf7bfe4b88cc0b72e1958bf4086fb01b01293d4807deb6bdedc03270e405d7c325e0aa2820d54282bf389d6340c55c0ef2282faca675faf55e160e7d1f2097e8a0637753e365b03b87f4bb7e8 + +A = -7062066f8cfc03dfbf0b39a545306699ee6a06127b3771b964ef67c1008b7781ae84349e623f06685d10ab1f0c5ac968a323a3fe68e33f2e3240e387f6eb86810c349db309c24a0e07b724cef46afea75e8e0bcb6d7a80584df4bf4ef6aea5a408da2a33b4cf3a2dcdc77766ed8bc560ea8705d1052d68c5270ce8ffeb2b2d72aaef25f7a9f0c8a9682cedc8620cddc16f5399b0c09d2531335427a448c29d5da1648c24c90edc7155ebb0d2ac38ce4cea93bba3cf809e0ca4361ddf4e018e2898b0389afb05adf8b73b973309f7ff60faa6ee061a780ade7fa6336c41e987937cf0d1491a8b2b3b32808093c7fb4955e70f85ca10bf15221a69c55670b5d38bc224914872ca5da591fe8bcd80ad3690a06 +B = 4337fb2388d1064c806c9f1f5516b3baed5d8f9daf964def6a23538777cc309b4c61cb2551f191121db65f1be69f07c366bb748c1c8ec594e7c7f87efcce3d0ddc2033f17f30539fc28cfc7386dd9aa0e14db03038da12eec38a3283c0f4253d67beecd800619056e5f8e990abb2731d318bef4adc1208396a568474fefcc4fa01c74228bf730a04abd9883604429913de1c9ad64dcaf6b83998c8cc5d1c1f53970f76df098dc9f6653f545354dbbc44b852b52d8c19e45f02c077264d2968181e620b8ae2f6eae3b6b258f11ee5a33d598336328c5fe2cb954371d2d3b845dfddad1cefc909fd668719159b8de473d1fe21ee723034048000945053be31c64ba50e75d9428dca0c58b13f9dda3b226c8717 +GCD = c2151dc3983722ed6283617e44a828d911ed3db448f1e78529bdb7eb8585b77dadeda19ca05586f9ce138c5c68a854bb0ffed062471ca3c8d4766a49fdb777a329dc1719f2f615fc356f97b0acea290d4ec1a0cb692b6244040f20851392f4fae804a22860f7982f4bf18d21ac5824eb369b7d81b68b9d0098ba9ea71d42c62e74a7be1d71b7f29455 + +A = 39d191e9583c5502319c3fcc538b2fbdd533c6c6ff9100479eaddf38a62f7df2aff6f8184dea01dc5d48c2c4b5f74be23fda46afc4d9e440769ee25f75058ffcea992b79fc3a2822b556966591f46524b78e3493ba9ff599f2eb28a4efa60912d97835c4914f32fa948aa0275f3ea39ee7a65af10fb77565ce944be8606fa07a92bd8dd4969596a0280eb9f748a05de2f3a6dda6a2cb265b9aae0d0ff20da969a087596aca2b2502b294eee8509d705e75c0e740c36667df30b838c113f2892fdfee5c472015632ef9de79f4a64b5d787422c2ea467843978ec008839fa09dec06e25a54449823d259a7363104eaae27605b1395f030309c34239a263941958ea7591b6deafaa4d52058c917c8fa5f3c3ce6 +B = 18e6463f6b3b907d6366553fba34937bef1cbe8d231ba2339112023f34c286ce3122dee44f895472edc991d470171b773a192df044555eb166ec9f9d92d417e9e1b6ff3d4b22923ee0842a984497a5c99fdb960cffdba06ec49572ceed281c63d9ce83f4aea46db1dc46e84d893f3549de66eca124545d50895e2e907a356d0ccd54383910df2e400f39df61721e4eef60a9592ee961d0a8e4f1a6a87c9cc793e6cbfebac5266649c647658e67faa0afffdf481ba4b0055db3910431e7de19e1dd95fd9710fe70d8030868d537c4b9f8a3969200fcdc5c5bd70d21e24fce19db061dcf9d545741b96caa624be1b4410814ee224fb0ffdc076fc081ea76e6467413ad8a8526611d4eed34e1fc593d35f1a100e +GCD = 19462da8985245b5f0234342ed254102218663d120c7b7f2fd9f9d1dddb3d03d4c126423c53ef1262e946319d5dc889f6f9faed4abe7052ac1127c84c9f99751de247eb4ecf89865da9ad962c1cd599c5c2bd7704f37e476a9790dacc7d9c94339e4f6e1fa25c168bf72f168c9af402605d714e690da4ec7c3782ba87afe9555499edb2e825bb0b443a + +A = 63bf1efc0fc1548233924e41667053b2968832fbe1aeaa8127b3fdacc07f10a889ae46cf5c846160ff088fce54d0d9441cacf786740e6fa064f9f2879131b185e3558cb654dc21956f702a8869c23ea23ecb170c22721326b3a3f336685d837df67c2654aa8f1615f639ef022aca63372b2563e1d20461f0daa9c27fa1bd4878bb439a729203f2c03c7dc785ed2c58321afcb51998aef18f6d8eaba05671b6034861bcf145464ef4bc3b3e16424ff8f4f171bba79e3537b1eceacb746d1d20ce5adf52f45e8c30f883e5bab9efce36d6bf1a03cccff228114c1d833424c6088ea1f76ddfbf84347870f45667c9faafaf5d47742c37564eb7071589f51cd0c5352ceb2eeb9f255de75a4fe10d864fc9aab0809 +B = -ab66773f75ee7a492648bda7c800a3a1a6eb83bbe012a29254aac4e9fac933d2e94b623fa09404bd1374fb64ed96e0ded036e6ac1a8fe4bf517f0b479b186b3f3bdd300d11d9df3514572e967d89f80e3b0cbb969b2c484fbce9660a4115bfb6a57a2a1e191c2356db361ca28f16f59266b31240ea61049a99e0763a5220257644bd9b8480462f93406ba4e3d29e8e160d8e39b60bbdc9017bb0b0ba598a354d1e04167888d7c56258edab42d5f3a24bfa6b711594fd5a95e6c42bfb75db39181706f0f3daf8f42e5a82f2faa0739c459d09353f1d16b7ce8501569e08130dccd39f46356cba20ca61782c8212d36524924e017641b49189adb09d21c4323501650489b638a087a8503ef9e0c9c5c4f8f43 +GCD = 33024f5087d06c57e1e0a1ab0e80fd9197b79a8a23b052dc13840e96620fc09100cc3d8b5613c50e4e2139704a5eac581854a7fae2dd549ac203ec5cdbd3f8c34aa9a403e4e26e64dc656f0ac8fce6e23778d96e9cdca38a61a942750d42d99f546ebb06ce33f0c79620a2a48c23ca74642dc33b149f329e2701ee24fd00a3c3b7cbb54c132b9f3aae7 + +A = 1683a12f7a6276fdae1bbcf7d3758af624bd34dc8db139ca8c2571dd169a5d1c370877165a87404ecdad08b1a0b21f168d265d0a1e3841955f1ac659c818e4b8f2dbd01af6c56a6ca19f862e443754d756e9b2a64d57f1352b0c49a4ee1e69d945616354fbe2b8ac1eb4c3ffd925fdebfa79d7b55a8b63c0605df7f2097c440b714b99f4498165757c558f283e75df7cea0f642429f08b423810581bac6debb8c84bdf8c0b5b4bb430d7d1dd6db6486a3bad5d61bdf5525760c231539fe2c6463581937fbd7c85cf5620c6c0713a91bc7cb8293a2dc411c4afeb559cd04a204fc15c6c631847b51bd94db0df91ff088652750e8fb023ed73d408c804b0c27aa5fca11dfcc9ea78fa6970d9a2838c773438e932 +B = -132f8811888770a7e5eceffa9359e7cced76a3444d39236a1a3981b85c754644fe18ed271cb97f37c3ee3a938f9be406ca7851ab3e8d17f5e66ba3526f5be09d9f9e9ad5cfdfa3b566b611ab16e63ce9300cc56b5f21f93b7dc881bcf13dc0f13d008d74e86b4ea6143e123df693d2ef44b2a0057da98b33d3d172720533eb13185f0be9441c22f8cb9b9fe68d18f943fade223827b4786630eb9ea97c3df5e9c2156ebfd0ee3933e50f3b8b463c3b2f8fb5d26deb901f848db2a4853ac48921f5d53ec58016b78d2a7089148a90ca0fd99f6bd4b918ebd0116722d458db11b0d5ddeb5c3ef0ef7430a74093b66c25bfc16173549eec82210c9685a2b540053ed73e2b25068e00181f1758d90bf65cd4b9d300 +GCD = 5c3140e5edd044d33799aff3d29be00220d86be14a0b20cd585bef447b7be4fc4c6348dbe2dd615b47e64ac95c5d1c29911c58d06f7334f38d7e9010e404a3fa756600f2706242c5c7aeb5224c4f4b52d9e3253457161f30dabc123725098a145f94da649d6961a0d4f9fd8d16a2f89a64dfc4e0066da3a12d2abb341e7bf92035152bac699feb98202 + +A = -8e96a6ef5cdeab379fd8d7e5acb3f4f36aee7006de4ca37d8d41067dd023a4a2e05cd0849dc4a45445e60c74baed8b1ca084e9f2fcd1ad18ed797b0e4608486f29d649e781a22fc6a9dc76e12695edc96ec3a93288083eb0d7514e65cc91e9974e8736c1899c39cf5d7cabbf5ceaf983a1a6f676fcb2fa8c5a39ca06a9dc5143a7314c2a04dcdbc7eb5ec1436a3b06c71421bd302c80881da3aaf9cf97554564ab59d7051f374c30c066045d997027df4ed82c11cb7f9fd3fa3da8977b342d7b5295e6f15e9478f9f19de0758e61b4ae35d2249956af412672c27bfb42503f8903bbc23e5fb1c1b23cfbbad21f0e0c596fd760daba4d75d14b6f290efa81b53cc0b7b8102a854565ef0f3b72c0402e283e34 +B = 22cbbf9702f90aaa51185193937f164c39f6b01fd58ab222143566d7ff357c0aaaab994e41be1df885b8799b88b0e3b1409480099c0500cac43fe1fe9507f6709180e0ba373294a4856cea684b4e91616beb3f894ae956c5e8eeb9d2c008382786fc34874f19280c8f4f711ab0408a4418cbf7541ceda69274a6ac7f2cdc63d1aa46f073d37f5ff85b10325c8b5eccb52324b5b5a01ea995c60bae746e2fa265b4fdb88f66d213454600b59e4e77cc2f9a84eeb49681215b57c390ff07440a4e9dd5853b75a07a02f7aed4d75e62181a8e5ad1637d72c6ed8613312b69208b03322c37675ace92302d83bffd655b6a84db7b6c93a7981d8b5440e3d4b51c116ba4a6f2189cfd4b52f315146843fd980dcec980 +GCD = c168035bd895faa92bde660e92181575c809c7b64736715154016aa5ecc5881ee7b5b1802d6f306455858a89fd8dd9adb15c728a93813e410b93766e6b154ab7fb08971dc8928a48d47cc95280c879db374b113382b36fa1596beb3dbc1698676354550e55c9b6e71abec679070d3e7f54b6fa8a8813ff475237444844c46cbf47f3bf660dceb647d5f4 + +A = -40 +B = 30 +GCD = 10 + +A = -50 +B = a0 +GCD = 50 + +A = -360 +B = -1a0 +GCD = 20 + +A = -fc0 +B = -8c0 +GCD = 1c0 + +A = -1380 +B = 3080 +GCD = 80 + +A = -8c00 +B = 3100 +GCD = 700 + +A = -17600 +B = -14000 +GCD = 200 + +A = 4c00 +B = -4e000 +GCD = 400 + +A = -7e000 +B = 15b000 +GCD = 1000 + +A = -2e3000 +B = -f34000 +GCD = 1000 + +A = a8e000 +B = 26d6000 +GCD = 2000 + +A = 9d7c000 +B = 3264000 +GCD = 4000 + +A = -1a3e8000 +B = -1d020000 +GCD = 8000 + +A = 8d6f0000 +B = 2e6f0000 +GCD = 10000 + +A = -2441c0000 +B = 40440000 +GCD = 40000 + +A = -f4bdc0000 +B = -372d40000 +GCD = 40000 + +A = -b48000000 +B = 3e45500000 +GCD = 100000 + +A = -539ba00000 +B = -a065600000 +GCD = 200000 + +A = 10fc8a00000 +B = -1f1e9000000 +GCD = 200000 + +A = -72afb400000 +B = -e41f0800000 +GCD = 400000 + +A = -1855af800000 +B = 18483b000000 +GCD = 800000 + +A = -33fa62000000 +B = 556e8a000000 +GCD = 6000000 + +A = -6d3a74000000 +B = 14e25f2000000 +GCD = 2000000 + +A = -bdd7590000000 +B = b4028b8000000 +GCD = 8000000 + +A = -1b352d8000000 +B = -2ff23760000000 +GCD = 38000000 + +A = 2f952200000000 +B = -caced3e0000000 +GCD = 20000000 + +A = 25c48a380000000 +B = -2f83b4b40000000 +GCD = 40000000 + +A = -6b0a38400000000 +B = -222e02640000000 +GCD = 40000000 + +A = 10e693e00000000 +B = 2a91159200000000 +GCD = 200000000 + +A = acc40b4800000000 +B = -ba62b3be00000000 +GCD = 200000000 + +A = -250800af000000000 +B = -21f913a3a00000000 +GCD = 200000000 + +A = b11e010b000000000 +B = -5e6cc495c00000000 +GCD = 400000000 + +A = ecf2f9e4800000000 +B = -2230de92800000000 +GCD = 800000000 + +A = c55db0985000000000 +B = 31d033ac1000000000 +GCD = 1000000000 + +A = f4c61e0c4000000000 +B = 1fcde4e65c000000000 +GCD = 4000000000 + +A = -10745bc688000000000 +B = 77683c192c000000000 +GCD = 4000000000 + +A = 200587969d0000000000 +B = 3d7ef4d588000000000 +GCD = 8000000000 + +A = -1607532cc70000000000 +B = 8b7ecb6fcb0000000000 +GCD = 10000000000 + +A = 28b168914600000000000 +B = -3856bf7e6760000000000 +GCD = 20000000000 + +A = -9b383bac7700000000000 +B = f393c8054b80000000000 +GCD = 180000000000 + +A = 18018f46e9500000000000 +B = -a306ac669f00000000000 +GCD = 100000000000 + +A = -61e6a75d0b200000000000 +B = -4b50bfa706c00000000000 +GCD = 1200000000000 + +A = -e450acfaf1000000000000 +B = e291575d62600000000000 +GCD = 200000000000 + +A = f48a77d4cdc400000000000 +B = -e6fff9026b4000000000000 +GCD = 400000000000 + +A = -494237471ce800000000000 +B = c8e850e6759000000000000 +GCD = 800000000000 + +A = -d6494ddcc4d1000000000000 +B = 4c0f47d040e6000000000000 +GCD = 1000000000000 + +A = 30a9130f3dc90000000000000 +B = 2fe7cb6ebc7f8000000000000 +GCD = 8000000000000 + +A = a7c3b70949b1c000000000000 +B = -c5bf9f182cc8c000000000000 +GCD = 4000000000000 + +A = 192222d38083f0000000000000 +B = 3acad956338298000000000000 +GCD = 8000000000000 + +A = 70c733a418d460000000000000 +B = -371eddc44a7670000000000000 +GCD = 10000000000000 + +A = 15f5b98bbfb3820000000000000 +B = 3d90bdb79075960000000000000 +GCD = 20000000000000 + +A = -1d6f559687dec40000000000000 +B = 8e5e98dfa1fff40000000000000 +GCD = 40000000000000 + +A = 2f1b28e861447a80000000000000 +B = -183860fe42628c00000000000000 +GCD = 80000000000000 + +A = e764c621b8005400000000000000 +B = -4677b0a1fac61300000000000000 +GCD = 100000000000000 + +A = -3d109e5bd79873e00000000000000 +B = 326a517d52fbdfe00000000000000 +GCD = 200000000000000 + +A = -4245e22e4767b4000000000000000 +B = aee0858b9de47d000000000000000 +GCD = 1000000000000000 + +A = a61b15b32c68f0000000000000000 +B = -2eb0a136be0c53e800000000000000 +GCD = 800000000000000 + +A = 4913fda76b86739000000000000000 +B = -631996305a94305000000000000000 +GCD = 1000000000000000 + +A = -63c81b10007b886000000000000000 +B = -242e79463abf483a000000000000000 +GCD = 2000000000000000 + +A = 4ebb2f398c6b1c10000000000000000 +B = -ae1cfb1b1522898c000000000000000 +GCD = 4000000000000000 + +A = -372396c308f698d08000000000000000 +B = -39d922031014ae40000000000000000 +GCD = 8000000000000000 + +A = 6726ce6e60d72f280000000000000000 +B = -14c44c6025dcfe090000000000000000 +GCD = 10000000000000000 + +A = 3b46a068c908004400000000000000000 +B = -4a065c89a28bbc100000000000000000 +GCD = 100000000000000000 + +A = 328b811e249293ce00000000000000000 +B = b8e5818c8cc09f280000000000000000 +GCD = 80000000000000000 + +A = -e012c46d945baf0300000000000000000 +B = -3a8bb06a27cf2357f00000000000000000 +GCD = 100000000000000000 + +A = c8b9bea266a64954200000000000000000 +B = -755c05c1902061b6100000000000000000 +GCD = 100000000000000000 + +A = 15744df72897c00c5000000000000000000 +B = 5279559d30bd1460400000000000000000 +GCD = 400000000000000000 + +A = -44ba631c302f7095dc00000000000000000 +B = -747f3cfcc387f41c1400000000000000000 +GCD = 400000000000000000 + +A = -1ebd7fc6984135ab4c000000000000000000 +B = aa79e2e13827aada9800000000000000000 +GCD = 800000000000000000 + +A = -7ac09ad89f79a1bcda000000000000000000 +B = a43fd330aefa16d157000000000000000000 +GCD = 7000000000000000000 + +A = -155def35220021414b2000000000000000000 +B = ce4382769da41909e0000000000000000000 +GCD = a000000000000000000 + +A = -f9f77fab368fefd99a8000000000000000000 +B = -a101321d762b4c01a4000000000000000000 +GCD = 4000000000000000000 + +A = -a1a6ad22c56079d9f80000000000000000000 +B = 1559e6242c1fa61eef48000000000000000000 +GCD = 8000000000000000000 + +A = 2e34254b68b7c9be0db0000000000000000000 +B = 77128985c832fb347a40000000000000000000 +GCD = 30000000000000000000 + +A = d8d938e7980da47f7120000000000000000000 +B = 253d7b1df25cbceeabfc0000000000000000000 +GCD = 20000000000000000000 + +A = -1f348f3262dc6a0ef4140000000000000000000 +B = 3142783711847a6393e80000000000000000000 +GCD = 40000000000000000000 + +A = -22049f855665081b11600000000000000000000 +B = -1940220494ed3874e13a00000000000000000000 +GCD = 200000000000000000000 + +A = -4d521db201494fd7706c00000000000000000000 +B = 6387a820186821a8782e00000000000000000000 +GCD = 200000000000000000000 + +A = 3aab3ea97afaeceb70e7a00000000000000000000 +B = -aa68548666cc83be088400000000000000000000 +GCD = 200000000000000000000 + +A = -5bd02ca7fa07b72f9199c00000000000000000000 +B = -dec0777c0384ee1b92c8400000000000000000000 +GCD = 400000000000000000000 + +A = -36c76eafed39512ac1122800000000000000000000 +B = 3334ade886f4c31d00147800000000000000000000 +GCD = 800000000000000000000 + +A = -4a427c54c5e52ce325bd3000000000000000000000 +B = -2752e4305010c661f62b000000000000000000000 +GCD = 1000000000000000000000 + +A = -2564dd87308c0dff902752000000000000000000000 +B = -177d03a64ba0336ad8469c000000000000000000000 +GCD = 2000000000000000000000 + +A = -89b7ac648e188cb046c53c000000000000000000000 +B = -72c2e4fee8cdedea38f58000000000000000000000 +GCD = c000000000000000000000 + +A = 1a050c1872a4d5d5404a750000000000000000000000 +B = dbbee819b9a75ac460ef80000000000000000000000 +GCD = 30000000000000000000000 + +A = -10d69f2e208887798fef8d0000000000000000000000 +B = -fda80c69223fd86ef85e6c0000000000000000000000 +GCD = 10000000000000000000000 + +A = 28b01d6cce59fd4aa5c58c20000000000000000000000 +B = -2eed166c8eaa15ba37834b20000000000000000000000 +GCD = 20000000000000000000000 + +A = -5e33185bd74be30dbd477800000000000000000000000 +B = -90175dc8104ecf4d81b5ea00000000000000000000000 +GCD = 200000000000000000000000 + +A = 3ebda3062e8ef2b196480f780000000000000000000000 +B = -2687453e2ad494d0a87afd880000000000000000000000 +GCD = 80000000000000000000000 + +A = -4e1ce2e8e2bff58cbe823600000000000000000000000 +B = 7f36708b6b8d09a8e0aaee300000000000000000000000 +GCD = 100000000000000000000000 + +A = 2c8969af424187b908e2890c00000000000000000000000 +B = -378c0156b6f46e367578041600000000000000000000000 +GCD = a00000000000000000000000 + +A = 828ad918c0a0e5e22bafbe2800000000000000000000000 +B = 775fbcf1f1b42890269e799400000000000000000000000 +GCD = c00000000000000000000000 + +A = 161e2b93c33b781b50524b9e800000000000000000000000 +B = 3c25387b0a008605f0ea99c1000000000000000000000000 +GCD = 800000000000000000000000 + +A = -9f2954936d4b82a0f9435e6d000000000000000000000000 +B = 53cdfe93d4f21a1648a9bf3e000000000000000000000000 +GCD = 1d000000000000000000000000 + +A = 8f883752a3660d243f6eb28e000000000000000000000000 +B = -1f3d9d82a559fa36739849cb2000000000000000000000000 +GCD = 2000000000000000000000000 + +A = a643b038a1e887ae0a03b35ac000000000000000000000000 +B = 90f6efa766e06737a757cc8d0000000000000000000000000 +GCD = 4000000000000000000000000 + +A = -28eae938ad87eab54ca2487978000000000000000000000000 +B = -2d60ad0cc9748cadbbea2300b0000000000000000000000000 +GCD = 8000000000000000000000000 + +A = -1cb97483c93c1a12d9bcabad70000000000000000000000000 +B = 1e35d9ba7a7bd12ff4474e0980000000000000000000000000 +GCD = 10000000000000000000000000 + +A = -3164f9bc827f429f8b87a269d80000000000000000000000000 +B = 2d9acf86d4eaa8a631c75d6a340000000000000000000000000 +GCD = 40000000000000000000000000 + +A = df5dc5365119aac6d4ea9dd5200000000000000000000000000 +B = -ec5b8435cc4fd54601e513d8d00000000000000000000000000 +GCD = 100000000000000000000000000 + +A = 2255062a91bb17b7b37f880b2880000000000000000000000000 +B = -3785731809b7cc9bfa0b5a071500000000000000000000000000 +GCD = 180000000000000000000000000 + +A = -50058d044bb0860a34988fc16b00000000000000000000000000 +B = -421c611f48a2ba32e072c99ed500000000000000000000000000 +GCD = 300000000000000000000000000 + +A = 641a23bc425858946db6a0d1ac00000000000000000000000000 +B = 18905e23596541629a15f8f5eb200000000000000000000000000 +GCD = 200000000000000000000000000 + +A = 6d544b776658b9a25899d1f60b000000000000000000000000000 +B = 7ed23e078b9947f34ffa5fb1cb000000000000000000000000000 +GCD = 1000000000000000000000000000 + +A = -1b7ed1e8f77b52543b4a826073f000000000000000000000000000 +B = 2704d694092d95501428efa2137000000000000000000000000000 +GCD = 1000000000000000000000000000 + +A = 3b94302aeec9a3648957d28fb12000000000000000000000000000 +B = -ae42ebfa53218581eba8ababbe6000000000000000000000000000 +GCD = 2000000000000000000000000000 + +A = -350b65e297e885f157f90acfe680000000000000000000000000000 +B = -e268a405ea72f181770ce2b6e0e000000000000000000000000000 +GCD = 2000000000000000000000000000 + +A = -8da9c4a3b032fd6de17c69e0b29c000000000000000000000000000 +B = 576acc7443c36be3a511970f684000000000000000000000000000 +GCD = 4000000000000000000000000000 + +A = 321c2ca739873e897095e7ce2a498000000000000000000000000000 +B = -4869bb803aa26c2cb962e7f28328000000000000000000000000000 +GCD = 8000000000000000000000000000 + +A = 401c67a2f811ce7df32b12a307020000000000000000000000000000 +B = -487f4eac43168d62033f8fd773bd0000000000000000000000000000 +GCD = 10000000000000000000000000000 + +A = 10426d1ff29c013f85beff319838e0000000000000000000000000000 +B = -12ce3019d94026f2b878c8f9cb8e60000000000000000000000000000 +GCD = 360000000000000000000000000000 + +A = 9c946e6980886bc659ac7fc112f200000000000000000000000000000 +B = d08c89702463c9e4aeea3cd42ea840000000000000000000000000000 +GCD = 40000000000000000000000000000 + +A = 2e8a27db4a3da8838c4f54b32d17580000000000000000000000000000 +B = -2e6b62fcacb7997ad6cf0330cb11380000000000000000000000000000 +GCD = 80000000000000000000000000000 + +A = 4e015bf2dfe803df203e17fd8de4c00000000000000000000000000000 +B = -bdd8e3c306f3d69a2a6305ea503b000000000000000000000000000000 +GCD = 400000000000000000000000000000 + +A = -14e3010ef700db807d8a15078bd2d800000000000000000000000000000 +B = -26ed488f2fbde4584afa5723404d1a00000000000000000000000000000 +GCD = 200000000000000000000000000000 + +A = 3addf16e96d4f5544ad4232ada5c4c00000000000000000000000000000 +B = -ab44ffa06f1f65dc7133dd5d9c20800000000000000000000000000000 +GCD = c00000000000000000000000000000 + +A = -3f66f37ffcd0f38a0963b51782fa30800000000000000000000000000000 +B = -7843ece10ca9825c967329820c27c000000000000000000000000000000 +GCD = 800000000000000000000000000000 + +A = -412f766841c72e133e4d9f1988afe7000000000000000000000000000000 +B = 9b9c85e517b60c657039be0dbef669000000000000000000000000000000 +GCD = 1000000000000000000000000000000 + +A = 3cf0d01057ea0d91716db93e3dd0708000000000000000000000000000000 +B = 278a7e815475bbc166ba7ca19f03572000000000000000000000000000000 +GCD = 2000000000000000000000000000000 + +A = -e1c51a0ba85f068797ced9c387fac40000000000000000000000000000000 +B = -8814939d264623a52dc84a9d38fec40000000000000000000000000000000 +GCD = 40000000000000000000000000000000 + +A = 17b5ca5721f414ffa8da27e587c80a18000000000000000000000000000000 +B = 8c2bd0e250098de8e88aed8f18b5808000000000000000000000000000000 +GCD = 8000000000000000000000000000000 + +A = 8c751a332822b3e8debb1595c60becd0000000000000000000000000000000 +B = -8b790e7be19ae6fca63a08cccd4da300000000000000000000000000000000 +GCD = d0000000000000000000000000000000 + +A = -338f3ab22f6ef6115ea0d777cbb050aa0000000000000000000000000000000 +B = -133f29bd9798206fd4d3049b442220580000000000000000000000000000000 +GCD = 20000000000000000000000000000000 + +A = ee299e5647dcff3e6e029b661d066e680000000000000000000000000000000 +B = -196f98023c5b3cc12a0ccfe142b7aeec0000000000000000000000000000000 +GCD = 240000000000000000000000000000000 + +A = 31838ca3f10f1db7dcbf54196c320c2c00000000000000000000000000000000 +B = d0adda2eff2509465f0902dbfbcad1e80000000000000000000000000000000 +GCD = 1b80000000000000000000000000000000 + +A = 93077bafc067c86fd6258fd9bf9359c000000000000000000000000000000000 +B = -4b2e822e663d6931ee0fceb5b6cef58900000000000000000000000000000000 +GCD = 100000000000000000000000000000000 + +A = -aecc7171cd1da55461691235036d1e0800000000000000000000000000000000 +B = -208316f273ab5c79aeb56cdb6586d003a00000000000000000000000000000000 +GCD = 200000000000000000000000000000000 + +A = -445e5c8f6343d7fb36292abc0487583f000000000000000000000000000000000 +B = -8c627443ceb8664c42fab6f5130f7e58000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000 + +A = 33ca53ce986d7cee7ca377bac0cef916d800000000000000000000000000000000 +B = 334c34e04e1813a2da020f37ad1e7b2c7000000000000000000000000000000000 +GCD = 800000000000000000000000000000000 + +A = -a0c07b8043d5b32a50180af1c9504f164000000000000000000000000000000000 +B = 26ac4d054497c8ac5be97f8d5dda85dcb000000000000000000000000000000000 +GCD = 37000000000000000000000000000000000 + +A = -12304c391e9a1cd168f812f346a794a46a000000000000000000000000000000000 +B = 29bf2b48182457ae8d69d317d3a2fbf074000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000 + +A = -debcd7eed81fc3472e75ec1841bbeafd50000000000000000000000000000000000 +B = -665258163ea6838386d797fe6385439964000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000 + +A = -17a194307272e596b6a2e76fcb57cdc7718000000000000000000000000000000000 +B = 236997cdd22b1d751b20337dc631efa5270000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000 + +A = -cc5967443162b205d51a9c3a727672a5c40000000000000000000000000000000000 +B = -f6812ebe0844385f946fdb16830e0807c30000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000 + +A = 3251e7eff252d55d9eb5d727aa231dcabc80000000000000000000000000000000000 +B = 2b79c8b59f0e4556f4724a7c625623419500000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000 + +A = -17696c299e662c98d6b064b85b83e6d2a1c0000000000000000000000000000000000 +B = 2fee90da5ca697442e418e011ea48b650140000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000 + +A = 18ea126b5c4246f2e283c45064d2b90953a80000000000000000000000000000000000 +B = -ba0f40849f3f7603be5b2cd9cb67e2e3f380000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000 + +A = -fc937a91f7df232a48c9fd1fa925538f9df00000000000000000000000000000000000 +B = -b7b058bc740c55c99cb168287fddf742f0500000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000 + +A = 2fc2c5f3f4bf5b1f79441c4ec3dfd5b24ae600000000000000000000000000000000000 +B = 204d71607e258c2aa1784f31c2722640ebf000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000 + +A = -fa99fa9cdd6b959806e29cb4c60bdb6a001000000000000000000000000000000000000 +B = ddca429d34b063d822248e9c728927b4bb2400000000000000000000000000000000000 +GCD = c00000000000000000000000000000000000 + +A = 3c563270d66c1abec92c2cf77db9fcc596f1000000000000000000000000000000000000 +B = 2696305dda274f3c06e1fed02f8a0faeb11000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000 + +A = 79543254b07c4c0a422b79ce0282cc7b0ea8000000000000000000000000000000000000 +B = 8aab3933f6012c1dac5fd1b21b749c771a31000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000 + +A = 3c57aa1f45046a22a1927250168f07ec39498000000000000000000000000000000000000 +B = -19440c23a403a8785c750650489e2da5b302c000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000 + +A = 5877bbc53bb1d89758333de06c0d54933600000000000000000000000000000000000000 +B = bc46e6788e021c1162c6982930f2897d0659c000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000 + +A = -1a55b09371366814ea66e79e224be58d4d4558000000000000000000000000000000000000 +B = -22b8a45e70787335d5350f7ae281d2113da490000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000 + +A = 7b7d5019206af67a46f74b6939438ec66e680000000000000000000000000000000000000 +B = -e0d9a95973b3d9101630f3073f3cf6d66ea370000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000 + +A = 75b0123b720e3176f16aae7bcd56864ad89280000000000000000000000000000000000000 +B = 3fe6b4c667116b7c249d4bc3fb4c23d18934b80000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000 + +A = 674805cc5f1abda27cccd43b7d6a0e876e64940000000000000000000000000000000000000 +B = 8b359ee0bf4e94c01e16fc47e6b74aed00ea440000000000000000000000000000000000000 +GCD = 1dc0000000000000000000000000000000000000 + +A = 3f1a1457927f83fd583ed3e2a71c5e7c27299480000000000000000000000000000000000000 +B = -127b7271e516c4320bffd052e4490fef73ba3b80000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000 + +A = 175f1a90b456e62c0dd81ac8d7e35284c4876500000000000000000000000000000000000000 +B = -80c9572b89ee869f8630387a66851fb9203ecc00000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000 + +A = -22b95eae624a08375afceefe017b7915c49b3c400000000000000000000000000000000000000 +B = 3d695935a6844f8415e841cc95dfd86f42544d400000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000 + +A = fd74c9ffba5d348190be52319be273f972daba000000000000000000000000000000000000000 +B = -f5552c2f126a1dbee6361bba508b2b28b73bd7400000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000 + +A = 1be43f43d2598cf8fb8986a25e6c645a1525167000000000000000000000000000000000000000 +B = 87b054f3eb95d39b6b000bf51238807c7b7985000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000 + +A = -a4117ac05d856573e0d6e4befbd19a38ac3bcef000000000000000000000000000000000000000 +B = cbd5a243d36008c3a6a98eea3b7375b07efbc02000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000 + +A = 17ab52c073d6114433fbb724f7460286f6625050000000000000000000000000000000000000000 +B = -bf366d0a15e56c579d5c4cd5cb4635082d5dc72000000000000000000000000000000000000000 +GCD = a000000000000000000000000000000000000000 + +A = 19f3e96dfbe39797cfc204d12279dbab94f01d04000000000000000000000000000000000000000 +B = 6d95037e51dfe3036e31473bab2cd1ba9f5519e8000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000 + +A = -1261b5a6da70536fd2f643781b9ae1e7fc9c073b0000000000000000000000000000000000000000 +B = bc3ee8e9dda7dd6fb6986243d0a3eaa090b5f4e8000000000000000000000000000000000000000 +GCD = 208000000000000000000000000000000000000000 + +A = -9e2c539702e244988e4825829576155b5b0f68580000000000000000000000000000000000000000 +B = 716108c3394c331ea6b51a22e8f752ff46e6e47a0000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000 + +A = 292b8e145910756273b49801be397a137929e85c80000000000000000000000000000000000000000 +B = -39113550b2fd4fb2b65bb83b78e3070801fee82da0000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000 + +A = 5da9dafdf110c09082407eb9811e27353520ce2540000000000000000000000000000000000000000 +B = -309e91319958738e6eab49b1632ddcd344aa6e4ac0000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000 + +A = -2c4b69ae900901d733697cad86ab9983bea72c72000000000000000000000000000000000000000000 +B = -2dfa34fc752ae4e4435f1af67f1e388f32da035ae00000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000 + +A = 4e5a43aa186ba7c877d76e9f707fa4518f1cd9c5700000000000000000000000000000000000000000 +B = -a090f8c743842066da1d6e642d4098da6a2ffb62400000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000 + +A = -e600887b9a9d9210143e0f13363bea3ea8129844200000000000000000000000000000000000000000 +B = 2f072f38bd75c4501c8efc1ef6d0ca6f7fa421be2400000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000 + +A = -ea8898f0494f3ec63b5a9731b6e221ecb71421dea800000000000000000000000000000000000000000 +B = f59f3215d2639a11201d45f3214f7291cad85d0a4400000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000 + +A = -152f2a6bc29e9740b1d87e0fec30cde5013e7859fb800000000000000000000000000000000000000000 +B = -2f35b5beb74deb007a816fd110813f0c1c48c4744a000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000 + +A = 26600e1e189d9c21ac0f223388c13e0c5e6ace9a97000000000000000000000000000000000000000000 +B = f617ff2544c2aa4ff63111a9eac7f159eec823ab1c000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000 + +A = -27f912561cf637d28d33ab505c028784bc2a7cff3ec000000000000000000000000000000000000000000 +B = 1b2a8f9fcc0c88a3ed3df0ec762e3c1554ebce81c32000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000 + +A = -c260705d539aa727814b56bfddf8bcac71c34016654000000000000000000000000000000000000000000 +B = 1dc209e15f674ad2c0b87897d466ab8c97b2ffd09d0000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000 + +A = -7fb7e0c8f2cb96b06cd0cde919dd72de94f604efcf0000000000000000000000000000000000000000000 +B = 847e0701ff6ba19cbdd0dbb14cb7e90288a08951c80000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000 + +A = 7399b6097a7a752be239b5c5032e6b73657c2d234c50000000000000000000000000000000000000000000 +B = -12061bc98ecc5fdd53a5e15daccc6bc0e7ccdd7e4630000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000 + +A = -fe59ed195a5655dc3c342540863a7c770acaaf1e3060000000000000000000000000000000000000000000 +B = 1dd42c3497adb05c371ddc110b3348a79d7b00ef232c0000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000 + +A = -10701695c7b48a563b8720d1f6751e8f4e8444fd3a240000000000000000000000000000000000000000000 +B = d3b66258304917581fe1df50e6178391c1d3f1af78080000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000 + +A = -3348718913c706428d5200bc2aa12ab72e0b01c14b2280000000000000000000000000000000000000000000 +B = -38b56ef8091cf98c6592b58cdc72bd2c374014ae923a80000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000 + +A = -c5621fd5516d572ae32e4ee6b0e0ff3679821e276ee200000000000000000000000000000000000000000000 +B = 3d8fa2400ef7a9480216f87385c37323e4943a837d700000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000 + +A = 2205c5e1ee1b55b1207cdaaa5e48855896310db99fcb200000000000000000000000000000000000000000000 +B = 9e3e40b865b88bc8b8f1bee6b74e7646c364f7ca2b8200000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000 + +A = 1abb17518df28b80b6567803c2ebbfb8eeaebb3bf3a2c00000000000000000000000000000000000000000000 +B = bc3422ea07febba4b6b678b258f494d24e6a62ef9b79c00000000000000000000000000000000000000000000 +GCD = 10c00000000000000000000000000000000000000000000 + +A = 260639cf93de72a8027a6782b8c10b5b7fee7825d759b000000000000000000000000000000000000000000000 +B = 1f435dda1fcf2950dfbed5709f449484584a142a5dc9f000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000 + +A = -35642d170268dc6b6ddf5e358be48b6979772a19254d0000000000000000000000000000000000000000000000 +B = -96f6ab2642f10846d395b8bfc1e14bac3e67bbc5b72c8000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000 + +A = -2ef8fad82a3dddc38e6ce8c4879d249757355d99d8ab1c000000000000000000000000000000000000000000000 +B = 31bcc349db0d5e6c25267acc2b5ca1c400e757cf2eb334000000000000000000000000000000000000000000000 +GCD = 6c000000000000000000000000000000000000000000000 + +A = dac0c7873411bdd732faa69b7880ebe5e05457b8d24dfc000000000000000000000000000000000000000000000 +B = -e2792a6029c9a68db0a9a3d8dbffe81b38b00d339473fc000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000 + +A = 23ec252109101aa038ef97b7c1cc78862b71f40890c1fb0000000000000000000000000000000000000000000000 +B = -3386c16eb8098d00884d28a740cc4f9f45c4a8959d07568000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000 + +A = b900a1a1b79792c52da29e0c1a4d0ab4e5ce3ae31d06180000000000000000000000000000000000000000000000 +B = 1d3c94e2d6f852b956af53562b246a0756a14db8fc086e0000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000 + +A = -35764e9c59bda2f0e26a18cc6bb88e22532536d9c98261a0000000000000000000000000000000000000000000000 +B = dd542a5837f1b61e40facbd3a0a74526025021bc24a0140000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000 + +A = 9d9341df132131a10beda342dfdac37e90f0f75f9d3fb400000000000000000000000000000000000000000000000 +B = d909bc3054242ba4385e9ce86ca4c9948ffe0506661a5d40000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000 + +A = -2c9744f2edc9842fbf79cafefc73b96082f1d16158db88580000000000000000000000000000000000000000000000 +B = 3594eb2e4525ea28e77c3900e98f1f736d81f9bb1ec82c180000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000 + +A = 4f0380b7023f532777f1ca66713f3ec4ccce8b001ef53f500000000000000000000000000000000000000000000000 +B = -d4f481f6d7e829e7f7878e77797b185d99c34f6ee97fa1400000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000 + +A = 2c1fff8f18fd88b6694597e5e175e49b569adafa53f541e200000000000000000000000000000000000000000000000 +B = 1b4c4b695c8940882a212776e21f3cac7d84eaf240e5211000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000 + +A = 5270eea57faeaa5ac301763a35345d663a7fd01fdf2c6b8c00000000000000000000000000000000000000000000000 +B = -71ff575f38173db436b369517e314719e72d36aac368ed2400000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000 + +A = 29f75eba92c077b740592509ea945d282c70f71b6bb9014b800000000000000000000000000000000000000000000000 +B = 2a73715f6358d26232d2f1f7d285168c6226b4d1e562ca4e000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000 + +A = fc852621f4c19197765ab0a228d7b82a287dfaa91ed3a456000000000000000000000000000000000000000000000000 +B = -f19b7d2096cb2f974e4bb7a9e9d45d823839d79f20f2d265000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000 + +A = -303ff91df0e496effc31123636d8c8edffd3dbaaa523f148000000000000000000000000000000000000000000000000 +B = -116897261d06df8e32d2e989f8e5339018d48568c16fc3f6c000000000000000000000000000000000000000000000000 +GCD = 11c000000000000000000000000000000000000000000000000 + +A = -b8fa326ae0d10d3a0ef0b1e54fb10cdac7a3935dafea7cfe8000000000000000000000000000000000000000000000000 +B = -1af5edae1e10c4d53e297d557ae3d18eac43590c4d6f33fc0000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000 + +A = 37d08c22b988566e31d14aa34565e104bdeef8227ed4a88640000000000000000000000000000000000000000000000000 +B = 27b1306a178a1ba404f26b5bc6cceb06b6b7b746a12d6558a0000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000 + +A = c648da88817879f3d3b00b6b1a96cc97cc93d8de64a28033f0000000000000000000000000000000000000000000000000 +B = -b21ead6580678cb3516cf813c032d106550b337025fe8430f0000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000 + +A = 105db928be54803e351b899ed25dab1d93ed64ff9d907a31100000000000000000000000000000000000000000000000000 +B = -3c0b25a15ed0858aa89297c2be53eabf1c21dd704995c3157c0000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000 + +A = -f50a71e683623285b964b182d5936ba615f30411c27e298a140000000000000000000000000000000000000000000000000 +B = -b84f81fc6ac97b3cfdbf9f26c09fefec8168b24b6c8fa3d1880000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000 + +A = 3689a92df7ca547e640e14131961e421bff4ad7ddeed2c4ad600000000000000000000000000000000000000000000000000 +B = 4511d475ee00c8232c86c6b79f2d7907c6843949ab9b8027f00000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000 + +A = a64095c546c229daa3fc5a8e2a7737c2b0814d9ef630d3f34500000000000000000000000000000000000000000000000000 +B = 5612a2ea517be7f8e82ccda780b33b43db6c24af9dabc8d4fe00000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000 + +A = ae983123b24582e24bfccb5766516409d8df8c81aaaf6574e00000000000000000000000000000000000000000000000000 +B = -39411488cd427611ecb996253ce4b834a530afed08e8a3eef4e00000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000 + +A = a69b9545be06f44f9c7317d955c4d0aef3661ce10958d5dcf800000000000000000000000000000000000000000000000000 +B = 665b3c29bf5092972e9ffe8794cab8def847dc6ea3f98292f0c00000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000 + +A = 194c8241a5c25fa630fc23837b5a80b27d098e6eedd38770429000000000000000000000000000000000000000000000000000 +B = -3d6ed3500d2fe5e19a0eebb5bd9dd98e5e30885cfa24ba5628a800000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000 + +A = 78b5787b64436708da73d68e6f37e1221e0ca3f2f0f1acae0c7000000000000000000000000000000000000000000000000000 +B = -85170bf9304fb4d5ed9202c4c56d9d18ea11fcc6e0fb7e5916000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000 + +A = d82fa4b830254fb2bbceed1c6cea06d5d6adfc43ef52ce3f5ac000000000000000000000000000000000000000000000000000 +B = -36a00056061db1ba516812ed0a8fb3fe7a593b05e96751455408000000000000000000000000000000000000000000000000000 +GCD = c000000000000000000000000000000000000000000000000000 + +A = 617e3c103e98e2a94e416dd94ac5cc2cdba4757b99cb9f2106bc000000000000000000000000000000000000000000000000000 +B = -eb0e6693dd6adae2f0ffcef2b0cdb2e089e4fb95df6da3b64f44000000000000000000000000000000000000000000000000000 +GCD = c000000000000000000000000000000000000000000000000000 + +A = 3716b9e97174e7a9e9d21b816f6b7192d181044b305cff4f3e3f8000000000000000000000000000000000000000000000000000 +B = 11428fa3afc240f22ee7a45315a28ece8506d9f53bb7180ca17c0000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000 + +A = c68286e0fd38f898d3b9927a2c865fbe207e9af108ded61dbf00000000000000000000000000000000000000000000000000000 +B = 4e04da8108c01b1fc1043141001623f11cfad13d663fd7ca96250000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000 + +A = -157a345d8f1a57042de04d80575e189bdc5d66967b2f3228b17b20000000000000000000000000000000000000000000000000000 +B = -2790b2d96dd0c991731d69dbd7417822339a0e332c5a4a96ec3060000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000 + +A = -9985ce3a290f2fdb2790a9f8188c6892443e27d829d0f4b6dbf800000000000000000000000000000000000000000000000000000 +B = -dc29a9184d398324f826334d69ffe01556e3b283f2b686069be080000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000 + +A = 3fb0089ba23f254458b62ddcf13ef920a9dfa44fe99311a4a123a00000000000000000000000000000000000000000000000000000 +B = -16bfb0978a2fc18cf8c20ca9bfda3be3a24b2833e7136a96dba8080000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000 + +A = 2ee4017a3d07c26377807ce39a2a9ba7b143c97e41475fa96ce4700000000000000000000000000000000000000000000000000000 +B = -2cf1552c63d2f6114c2d99880aa30f1fda59968ca84a2a55eff9300000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000 + +A = 269968caab42a13b8053952a95e6ef222f5ba45fc4d92c813300d800000000000000000000000000000000000000000000000000000 +B = 3c055ef547ec72e5d2d1f109285590052ab1be675287de759da000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000 + +A = 941e9ee74027982612505f4caa149bc7aaec395c7ee9defbf5e4e000000000000000000000000000000000000000000000000000000 +B = -ab4ae9e3a8bcb781a075bab079eece10e4a4ab4664968d59f88fac00000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000 + +A = 91f4199e4fdb0726f8b6e72a4b49974295d5f0d7389d49ec12ede800000000000000000000000000000000000000000000000000000 +B = -1bc6b1f4744a8a6a894292d69cd82057fca37ebfa700bc8571560e000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000 + +A = -dca2410069ff44b2ce97b82987ec40ce22cb60f7a74533da8423da000000000000000000000000000000000000000000000000000000 +B = -1cb0e9309db6a5d4f65eaae98ea56fe00292f5336d9af3492196d000000000000000000000000000000000000000000000000000000 +GCD = d000000000000000000000000000000000000000000000000000000 + +A = 32c61b5e8aad9b3e3dae15ebcc05bd06ee4fab43165f4f75f2e988a000000000000000000000000000000000000000000000000000000 +B = -34b8cf5ddeabf5565004cd9f7db5d70eaf1a4f445150733c7861370000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000 + +A = -b6ce3f8712a36932e4e0fd81d9d43815fec6b43d9add51fd842630c000000000000000000000000000000000000000000000000000000 +B = -4a96b6247c0b255581870a232610f0a49213b6740e21cefff93f948000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000 + +A = -1ca58f0ce100d4bb83f20d78458250d498e65153dc259ed30a793c8000000000000000000000000000000000000000000000000000000 +B = -324b16b3fc2761e4e9767fd2d1db6a36cdcd3f433b20bc0bacb4d008000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000 + +A = b1808eccd148b0f0db592f71c8392b6ce40eab010d06a19392e34f70000000000000000000000000000000000000000000000000000000 +B = a794514d4f6e7dab41bdf2bcd88e168bfd2a777524acf1a558966da0000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000 + +A = 1f36b03fcdcbfabb8502321046e10c5565885cf5c14b8defc5ecf06a0000000000000000000000000000000000000000000000000000000 +B = -23f6d59be786b54682d94ef19411c7f7a08f0c6059762b8e9a9387720000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000 + +A = 312c07959f9678ad701956b05d8c1f4c1d8a0c92f6494f99273d9cdc0000000000000000000000000000000000000000000000000000000 +B = d80601f251cd588d78c27d7f1aa12d1c835599d9aeff8d6506bcb8740000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000 + +A = 274292b9b9e694a82957e50b01d2548afdd4587292eb2c234cc1167900000000000000000000000000000000000000000000000000000000 +B = 2e8a0036eea2bc483bb117fbdd964015fb776f46496e3206f3d9133600000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000 + +A = 7be6e3ea49e0a4d79a95b027f088bdd999bbba41e6cd7bcfed3c848300000000000000000000000000000000000000000000000000000000 +B = f6f297d14eda550587b3c1a5f8c611520f70541eb8a75083822951f500000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000 + +A = -1d7616e629be37328793aa35d83bc77a225f1900e997784e5fe1d7f4000000000000000000000000000000000000000000000000000000000 +B = -39e4bab54ce6183539d7772a369844e33e3ec051a8758b4f97e83347200000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000 + +A = -80b78be51093bc446f1878e8ac0ceca27d7b63d78f466ae441dba7d1400000000000000000000000000000000000000000000000000000000 +B = ef5484d711449eff57945ce8d8a530ca31ce893a59ecce964c1f844ec00000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000 + +A = 25aaf376d060880084d3a7fc84d9ce95454ab0c9bae41af960c58eec3000000000000000000000000000000000000000000000000000000000 +B = 2fa4be2d9cd3ac1900661ee77dc9321eb80a4071e23a53e13b33d662d000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000 + +A = -6cec0ae09d636ea3cb3d0c3931debd1435e57e4a53251bbbf29979de1000000000000000000000000000000000000000000000000000000000 +B = 9b2e64573ef799b4c97d3a5b5e4d3176f93b1d75ae170a50b615a36cd000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000 + +A = -d182d1908a4241bbd73a6177f833bb8ee3f952b67c67aaf5feb5ce8ee000000000000000000000000000000000000000000000000000000000 +B = 315e20c8535372093139049e38b588bc6fee72836b779e41134d08c91c000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000 + +A = -ac41107ac9671d7c3667445cd7b890b3d25d80bf6166980ef0c80db0b4000000000000000000000000000000000000000000000000000000000 +B = -1de8d5bfc31bdd7b1605a11199eea5a300fcc044665ea13b2020f75378000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000 + +A = -13f8a1499f01144769ed90e9d620abc1e5beabaaed7c70c910e118b5f78000000000000000000000000000000000000000000000000000000000 +B = 1fe53a5add2526b1ae223a9aaec94af7aea15e635e099ff3e0e65040ef8000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000 + +A = -f47bea5a963270813c5a2b1fbce981b3fb9611c88db75553e08aef649c0000000000000000000000000000000000000000000000000000000000 +B = f4296227656efb17ddc2481f959a516fd696c74b55d2f3766395b4ce950000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000 + +A = -25a3b4f8fe551c48c55ddc329b2bdc02f2436f84e59a7e0cdb3ee3ade700000000000000000000000000000000000000000000000000000000000 +B = d667f0cbe6421b4f2b29d359334919134c1efc91dd328c3eecbe2460a0000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000 + +A = cf0b9a281239cafd203b19d92086a229b58133ef6eaf8bdf0f88adef5540000000000000000000000000000000000000000000000000000000000 +B = -e1b0237bffbd95873b0df106a6c2459fb84d3cce0fdf16d6e168481ae900000000000000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000000000000 + +A = -1781e494df516ea916d08e53c755f6053ecba13fff59ec4f4b76453f31e00000000000000000000000000000000000000000000000000000000000 +B = 36278316b0a8e725e9b72a26628a902e78b446a67cc58caeddce4ed81b700000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000 + +A = 232def836a6cc558362d9f0090b5f651633d768f4749fa06ffb6204d6dd00000000000000000000000000000000000000000000000000000000000 +B = 2cbeaf4e71c1134b7f002a58a9444271d717036d8191a588efd96d2990600000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000 + +A = 20de8a5e270605d6ac2e74f003c532b8deb0b9313f3485567373c4e5b46800000000000000000000000000000000000000000000000000000000000 +B = -14d214ecc14cc1d50dbf12230146881b6dc2c0e23c167f53a224bf6f1f5e00000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000 + +A = -cf22d2d6d3d6d8a4a4cee97d92fdbcb1fb6ace7ff4648716f28d7e2ffc9800000000000000000000000000000000000000000000000000000000000 +B = 40e496940fdcf65a7ab08a9cbe74f187acf2c81d95efeaacd526b46ef0bc00000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000 + +A = -2eedc24cda25a083ce21ac16d787b0e3cde5ec73785fe0b270f0a9ce25ab800000000000000000000000000000000000000000000000000000000000 +B = -2f363fed3e53a7f4afa99fb76e7117462671e47446b462bfb36f37b69863000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000 + +A = a5638b46010d5099a1bc8217620501679c333a1e8e8bc2a9110c5f087658000000000000000000000000000000000000000000000000000000000000 +B = 6f0c64f047659a63bd7450770746c46858f2059f6b65e0853a9fba2e4a98000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000 + +A = -cf83fc1803b44989b2a118698a6500880811fb02426c0c9ab037e955a3ba000000000000000000000000000000000000000000000000000000000000 +B = 3a65484959c2f5e4eafc7059ab4d917e56d62607cd5e40b6ab229f7e33012000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000 + +A = -6ec3bed80423372c9f5969ad9ef6a4b0197cee325d4492de2d0497625a1bc000000000000000000000000000000000000000000000000000000000000 +B = bce0f040f87920eaf776baaf066331ae30334618de36c89657b84dca3988000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000 + +A = 3a19632e88410e9b550b0edb09f60e611fc6423a81715dc6ab0bf49967aa78000000000000000000000000000000000000000000000000000000000000 +B = 3b2161a02cddd1f666773d04984652e5cc53d39f5b6ee6ca15d610f0a09598000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000 + +A = -d8d412d4c7ecd6de9892912039fa148b125656fe9e43ece9c24566042f6070000000000000000000000000000000000000000000000000000000000000 +B = -3f4e8037e969fdecbfa2513101ccc06b9ce577b23672467e758bbe7daa23e0000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000 + +A = d5765f39f5652a8373c2a672c239cf939102eae550321167858b3873b5caa0000000000000000000000000000000000000000000000000000000000000 +B = 19b951fd6f5187109c7853625b9215b0cd2e2dad19af0b08399398e121e1e00000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000 + +A = b4683383b08f572f4c341f5e0c5f5c47b5b45747bdf557f50e525ab4c8f9280000000000000000000000000000000000000000000000000000000000000 +B = 64e6f98e3e1fc6a1dd9dc54ddc6c23e0edafed2153b4d5ee22aaec646853d80000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000 + +A = -1c62470f1768a7643a60f33f4f02f60423c9b45a6d91e55d9a615b1c5a878800000000000000000000000000000000000000000000000000000000000000 +B = -37b36519c07f3ccb483ef9073a58714d9d7592eaef3586534fc756fc0074ad80000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000 + +A = -ad2cafc186989a34a00092068410444d7add3128d60ecedbab07324daed4700000000000000000000000000000000000000000000000000000000000000 +B = 1be5f45e51c8db22a19db44a6f24633da7c9a437354655716e7f9f576a26ee00000000000000000000000000000000000000000000000000000000000000 +GCD = f00000000000000000000000000000000000000000000000000000000000000 + +A = -b0c32b510943872842f04d92f478cd9e3e6aa356ef45d71e5cb06772a9f6b800000000000000000000000000000000000000000000000000000000000000 +B = -9c1517ceab0b9b4f7deccb9a682fb40cd1b8f25cbeb5c02e3259b2748529a200000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000 + +A = 2f6e884cb66b6ece457cacb8980e0a257f516aece2e10d4b22276d462854cf800000000000000000000000000000000000000000000000000000000000000 +B = a9efe48c93454696ec81dea21a80431d3feaefd64072b8268d3f0fc9d6906d000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000 + +A = -35d345d5f3b09c5c6b5e3a8c0ee4b62b75d33eb9ad216b1afe5c06b1dfde1800000000000000000000000000000000000000000000000000000000000000 +B = f0d13e2ecb84721870f5598fe984dc6cdda625257ea0cfc6bcb4c6160a1ff1000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000 + +A = -366f787d461e84db7dd6c78187057aa63161056752f0184c7c8b7269ddb4988000000000000000000000000000000000000000000000000000000000000000 +B = -608342055904dd99199ded355d90ff8176016aa1c01a61deaf917383cba8d4a000000000000000000000000000000000000000000000000000000000000000 +GCD = a000000000000000000000000000000000000000000000000000000000000000 + +A = 17e0bd33093dcac82a76230cbf259422a1dde5a664a6fd2641ea2e1a3d6915b0000000000000000000000000000000000000000000000000000000000000000 +B = -3cb4f1b8ecca3211afb467690da79470d9346a5f07d6fef0735f3d5233f8b87a000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000 + +A = b6d42870aaf202402138b69d0653f924e7bc394eba9abf6977b3c8f91becee38000000000000000000000000000000000000000000000000000000000000000 +B = -c11e29ac4b0084e8e1e2d641edce30fd24d8b40fe3bb7017e3dd9c1437e821b4000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000 + +A = -2b9908965aef333f7a69b9611ebc02fa7918cedf7c1f54ae5c26c361916375470000000000000000000000000000000000000000000000000000000000000000 +B = 5ff09037286235d9c7ef63a0ed438031ec0ada0efcfc3b847b2714ac4ce14d60000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000 + +A = -a67ecd61d234964ce910de6ab47bd2026b1fbb102a31f49de5e7d5208ed2a33a0000000000000000000000000000000000000000000000000000000000000000 +B = -379decda433171077d157c2ecb2d4c1a092ebd94d2a1287066624b25114132fc0000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000 + +A = -3bbb67bce8bbca285c494bf6e1e15095eff1c2ca7d9038090844509134be15b8c0000000000000000000000000000000000000000000000000000000000000000 +B = 5e40a789f4ff67eeb14de00ebe7f7476015fc6850f71628493514e35ad8bad100000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000 + +A = -c894ace9d6cc4f8f7a0ef8e8d9a2e69c55bf02cc028c788966fb8ec273e9b5a0c0000000000000000000000000000000000000000000000000000000000000000 +B = -bff7f2fb8d4afd92f4df0a401ad9b3620bf5ca610b276303619ab9622f975b640000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000 + +A = 53564318ec432c30a9f5b914cd542db33267133cec6f121bb075d4b44ee12b1680000000000000000000000000000000000000000000000000000000000000000 +B = -584ccf1cdf30d796a83f382c5299f9fc45435ad60219e12de87d454b128d0f6e00000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000 + +A = -a875628ca5208d211d7b4810a70c4b6012b614027747eeb837ecaddd0770563f800000000000000000000000000000000000000000000000000000000000000000 +B = 808647ac38b72d828b90185e07045a840af09ecf82d7bf1d614ba86ca960b539600000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000 + +A = -72cc90f561bc466ce15e2d9a4ea0893dda75a7df6c998e3e97787076c53e8caaa00000000000000000000000000000000000000000000000000000000000000000 +B = 6f2ff336ce8049ea1e7a43891caf58c704500e342a998dd41403ace39d903ee7000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000 + +A = 5772f939718ae5b84986c5ef86926ff784d84f3ee0e3afdc657c6dba098629dac800000000000000000000000000000000000000000000000000000000000000000 +B = e845a7bb64a0d5b3379ad1b6e27bd885636cea8dcd331c50d8b209e6957741c44400000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000 + +A = -238ec37e5f2aa3ac40a7580e135d64b4462e2d1b3dcb0ed2209b9f45d0fde30f4c800000000000000000000000000000000000000000000000000000000000000000 +B = 3ebda919b6d230ef6d990174ff7329f22e12ff527f72f9fd230c3ea1ed32a1f289000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000 + +A = -1d2d015724e5d7f9c28de49c9bc66ac25bc6e29f72afb2cd10ca1adf41589c820e000000000000000000000000000000000000000000000000000000000000000000 +B = 7ae8895af0e25348c76a1c9cae4536d0737e3a49f9ed3908f4b2345aa0b5f2b05d000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000 + +A = 1fe78eee2bb343c6f7e938fc0c1d58a4334f051f5a7c4befe909a513d27ee80102a000000000000000000000000000000000000000000000000000000000000000000 +B = -32aed1613e74c83beefba13a1bb8e7210668b88c96d14241f7a938cd805733b3eba000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000 + +A = -3493c45b156a2eea76c94b03d286dd11ae414d8bfaf91caec482aca649913bf204c000000000000000000000000000000000000000000000000000000000000000000 +B = -510ddf29951e66b6eb61b65b091d252c0858eec9e802b79b58c42e03631af88b520000000000000000000000000000000000000000000000000000000000000000000 +GCD = c000000000000000000000000000000000000000000000000000000000000000000 + +A = -3a9a161e75b8b0819450f7033a588350466fd6817699fd0f6e60cabe3be7e00e5b10000000000000000000000000000000000000000000000000000000000000000000 +B = 111499dfa41ab6bf37d80d2c57b3d9ff8978cc441f9511b8827c879ea47518d2e50000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000 + +A = 92dacea76bd085070a807d3cdb8c31d464db98f6c8dddc938bf3da9678c449dad500000000000000000000000000000000000000000000000000000000000000000000 +B = -76e10078bc216dc46078619821127efff9002adf75d16665e37acd43dc2331c7fdb0000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000 + +A = 325fa6772b3af91d5c90329edf99dd87101dd65b50c5eca00a83249f2223ebc97c2c0000000000000000000000000000000000000000000000000000000000000000000 +B = 25f9e7aa32bf6aa3474b0022a27587de36a6c84ba39dc37680fc9920bf9c179837b60000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000 + +A = 9249461c2a7da5a263cb923edb548e676d1a64f57c3c923214492ab7d2f79ce1bf3c0000000000000000000000000000000000000000000000000000000000000000000 +B = -ad2b0e2963c4c3dd495e774164d98a12ace50ff933d9d0b5e479d150d9579244cb580000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000 + +A = -23c73df6ecbebe08eccbe255aac00e42e3ab80fefdbb1c7b94221a3e2f54e81c4f4580000000000000000000000000000000000000000000000000000000000000000000 +B = 26daa7165efd7a4c93f3feef932823373be0156224810434c33aac1d749aa839096d00000000000000000000000000000000000000000000000000000000000000000000 +GCD = 780000000000000000000000000000000000000000000000000000000000000000000 + +A = cf2c56ce276df23b75399c41abfbd440cae5733fb3626385179db049e3e520f7ff9200000000000000000000000000000000000000000000000000000000000000000000 +B = -29bbd64bc61690ad968097015e9f0a3e5db132660e8d86a0c6122fa033bfa2c1324700000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000 + +A = -6e80995a0295aa364889dfe4518ae6301d2bf4b47ecaa4e451b8f9b5a3df73abfe6c00000000000000000000000000000000000000000000000000000000000000000000 +B = 1c2f8938627b1cebb4af248a398ccda5e1a6021a4b80c822e49e1890439e48382fff600000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000 + +A = 9b30e510fea8e92151daeae5645601fd7413f27f5e45b839836e0291fd994def2536800000000000000000000000000000000000000000000000000000000000000000000 +B = b0b9efe537b9f862ce5138bcb1644771a864c4a1af36d986ed3a94c2e630d8297a01800000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2800000000000000000000000000000000000000000000000000000000000000000000 + +A = 3b3175eefd21c733ca267846e39c9980ef6cd229900b3dbc975737d99e614d9d92f91800000000000000000000000000000000000000000000000000000000000000000000 +B = 207599cf9023171fde89be6b48d555dc64f72c7e4096d5ba32fb46ac29e47d5b9c00a800000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000 + +A = -b42d06aaaacb45d6e6c3edfe0972b8f213ab45cf6ee4cc2c835decad1f9b2c61522b0000000000000000000000000000000000000000000000000000000000000000000000 +B = 65f733032d0cfed1b5769b6b6c1392dcfb7ab34e0d38d19fa3c38e9c7e4a3d2ef8b51000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000 + +A = 12073418c52ced08ebc1ed6f4134918b4657dc7567e7fc84b4e39b2485e4a69cd084ba000000000000000000000000000000000000000000000000000000000000000000000 +B = -31b6debc980eb097f4adb9a9023203d54998d62bfc4add0e04b2987604f74281b9b12a000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f66284aa162ee1c3c3d4ad53d4b6eab1030ea0748f6de1899bc722a5fd8456f2336098000000000000000000000000000000000000000000000000000000000000000000000 +B = 51f090fb43b903f14f81a96bfd11f4c6bda571fef79649e7def633795210d36d299100000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1746f8eaaebf001d9fba4345a7c778483b2119fb8c08cbf49e1f33914949c2896e84c68000000000000000000000000000000000000000000000000000000000000000000000 +B = 285c10d98ac4e9990df3a06d2f347862452666bf7e67113452146ace61276c8fe97cb90000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c77cb6dbc154296e9d7a46fb2d3e5e520de910bfcace4d5cae36715652e9c5e041be800000000000000000000000000000000000000000000000000000000000000000000000 +B = -290f8ad162318a0075a2c0148153dd36849e57802b7bf38167e930e28a672e77ee07ed0000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2cc1d18861c40cad056bcdebb3bfd80d1356e19ba6fb96fee3c372f4047061c7eea5b40000000000000000000000000000000000000000000000000000000000000000000000 +B = -22f69156c1dd1bc2f7c08027392fa4a3e5a349a99e241edb935ac2a3d6319f85d2fb3180000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7251cfe89fa31c84b5f832d5b52f8e1b17a5383edb03c8693ceb87ed01d2f619284effc0000000000000000000000000000000000000000000000000000000000000000000000 +B = -aec6b8a40a58e86ac734f487c64dbe8c03ca4909b82b3f383f8277002d7ac6c7eb381680000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000000000000000000000000 + +A = -174890c84552f03b584c4587b28b98e8d9bc3ca78e7f66c283e4478af2f26e285a0287400000000000000000000000000000000000000000000000000000000000000000000000 +B = -31dc2323e683fc67ffcc2f6eee8dc861c37fa9c84aa92268a2cdf095d554abf132a51ea80000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8196604c2380dd570bb9d424b5b73368dc33e32a8a49216aa0c1c774067e1f9702ee7800000000000000000000000000000000000000000000000000000000000000000000000 +B = 2854c0c615fa784672ab949ffb29bc8500fc0c76fd725634bc3180a023f5cc39c9186eb00000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2883595b3da39e5ef96e10c81123d5058d4a2396c579ba585f8b0d4e76f83ff0a7ac13e000000000000000000000000000000000000000000000000000000000000000000000000 +B = -145d46c227f78ec8bb86459225281dc58e36839a2ae05c55c97c6e1a1096f5c296ff4a4200000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000 + +A = -d5475966b6c79deac4485a0bb4a53392fa9d1f228a7048044b2c862a1bbb4fa98d99be9400000000000000000000000000000000000000000000000000000000000000000000000 +B = e5d94e8f68d56cdbf3d270d2eba9f2d16d3cc31cdfc777c302a2f1fecb8f6d392323bd2c00000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b93290c6dc5efe19618fb0b57b2326ba50e4ebf747c4cf8692e59c7217623cc1e17267e800000000000000000000000000000000000000000000000000000000000000000000000 +B = -39debba8f0fa5f2827c0d6ac31315f5da1199187581f74a7b46e27abbe8b569902955e2c800000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000 + +A = 647dfeade3cea8271ba696f0d60b8709cd51d66a5c98aba8c668322c37e234b5ea5066e6000000000000000000000000000000000000000000000000000000000000000000000000 +B = -560f4b993415146ac43dc46520663d0619a088f6aa6651ad8c0492a110ec60b4c6dc86a9000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 95201d4caf75249169e82f2618c5d2d11ee92d576741cab49a090cf32226302929f4dee8000000000000000000000000000000000000000000000000000000000000000000000000 +B = -271788bb47b154b8cfdfa45e2ad53db7ff339fbc0c826bd0498c8231b5d0adc3148aea20c000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9c5d847f14699d0accb6f2031bfb5add139d274c7cb8dde9a5aad50d233a3a6112fbb6370000000000000000000000000000000000000000000000000000000000000000000000000 +B = -72325bafe60cde9ac4b74be76f9c9204b8623743bcd339b5015608fd9a1cce3a88b33e284000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2f37dde309117ecc7c93781e97ad8d39194ba3b2d664238b8a3774661d89f6e064f7db2010000000000000000000000000000000000000000000000000000000000000000000000000 +B = -186a4be6a289ea413960cae96984614b4f8845292e990ccb9d281f023dd860c8ca8d99d008000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1577ad348cb7eee734aeb4b0fc1644347e650bac208301e18484e86a0ce8f53e02295ec8f0000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1a5c495b55e9e01ac9af9534290b0ab0d666111a0ffa7591f118115973b3122e534ffec1e0000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -958f3c096939de2c0a007ce1a85058c9cbe2d080843317246119f69694e632c88fcb704440000000000000000000000000000000000000000000000000000000000000000000000000 +B = 29bdba3ad1fa40cbb955bc50cee72c2ef9043f5add3c003fef2297970fccb343c9f38dff540000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -821272f1f8fc44ff65e068f27bce697086f00a4850e76cfb692e916bfa5383825edba943ac0000000000000000000000000000000000000000000000000000000000000000000000000 +B = 34512ebd519a16466e83a86c7cccbac9bd92940f346ae7af1c0de3aacdc9efbb7f3e4a4c80000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1025c83caca80bc22b2f8662939641a3efcaaa1624056f9f1e816279d06e7b3d39b685050a80000000000000000000000000000000000000000000000000000000000000000000000000 +B = -58ea8bc7b3e4ebd93bc7fa85e20cc41ef140599e1f5a875970c6eea3bf6e5b1b52a7f80ab00000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1444b6fffcc1abf66fca58d7776d7d9861c0ef2d70157b315ad5dc41889d7b40180e3fa09b00000000000000000000000000000000000000000000000000000000000000000000000000 +B = 960b6e6001ac53a527a61bc4e4466a9f929616d3700bae77327e7789dcae6d1c691dd535e700000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 140154532a964dca1c7b84ea513ba6ec8e3e9c24c4f69d19120fa104ec72269119e12921dbc00000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1b8b5363cad0815214bb507678e2c20d8d51793da699ba8880819169c011258269b03ba1ed600000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 582d15e20675e0a3b7a43f0efa930786a874651daebb750872da985f20fd232746956039b1000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c664348e983283783e65020ef0612d3b7d938e601c07ace8f9e9019a6d9ff49fc0451e8e4800000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1f1d4e2fec18dfebef5bd93cb225d51ecb69d7ab8ce0feaa8e1c5a84954259ff0a941f0304a000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -19ff8931cdcab3a789ae13fb67fb704d4be3b44c404e5ca30e09931c6fcb4de6fdc3d6727b2000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 688e477ba62e29da1ba3b1ed0fad94910f048801ae58f360347628049a772246127e55232c7000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6d4dd09715cc7d874d693acbca821dd54f75b5530bc8ca37651b153b9cbd3b49ff208a8838b000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 188e1fd967282fc10c186b4eaba598cf319a4215624f5ee6f9dc87f389cc39beedcc7d091fc0000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3d0f048b2f99f5a3e5ea50aa47e810dece1bc8b7a829d71d2c83eee1fd0cbe3502038ec08d62000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 26000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -391c64855e37941d0eed0bf52de43bf671eb8e5b3b73695b791f5ad79c14aacd1ba3b67bcf90000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a2453a85507ebc7b95ed48966f9065b4411f68419e5265d9b6b42236361a799d625c35696eb8000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2152cb78708c948d1540f808476c06ea96aec7b5567fe4165f1239c2d9bda0aeae559583b7688000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3f315526ec906aa35e10acee74b3f6eb6a95cb1e950323619ddee6ef7d3d90283df23ca96be08000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 141b5a100f51a8ef67434626ddd417b1e6349b3f88d5cb2c113aa50a81c8b6ab0469fccd3b0e0000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 68a66ef6282e4a0fb9cb34fa19dacc85f7d05565d60be79e74a6147bd6f8fe691a84ce5d1d190000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 332081c6cfb22e1315fcebd0e0281724b41a66af831b422ef1db9cb026eb7396527f019c1cb280000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2106778c2e12f6e40e369af74fc1b744ae6950aab15177d72ad561b4bac20fd504abc673450da0000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b1065d0e29d59a70172db2943e016ced48a0ff0a73ced97b7bef5f87252b7680d3444b19155640000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c439f89db6f12cddaceaaf161dea5adee2b80a183c99b1590671f05c05703eeba95bc53e637d00000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1d5835587921ca8c7c03b5a451aaea4579f174ac66ebce5b2fcbc20d3c20289237cd8c4cb92b900000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1993512ce0c634a7c14e8099a73bd357e72390880739927eec3c480759958011be3e8e077e69480000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -de6d806e52508ce1317c341e9638b23acc165f74d0fb7dc407b99767d9c427e0ada5c8659fb4600000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1ecce5d9478f7e7c7ab4723699b625e7cc3ef0362f1c291e2e5a66183257aae4532c1dfc70f9600000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1edb9e2797174899ea287f95b8f58b885f3ea73abe62fc1fd63824a812b685e9e9127cd39fff800000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 350ca0688726b705fc5677e4a77a65aa60b859b73c47637ee5b8ca27aa81e54d6e4dc927ac27b200000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e5afc34fff877e4b3fa38c39a016da0c709b6aba02429ac3a2a094ef21fbcbb64f18c4f9bbbfd000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e9f7e1599b890c45f06db24bcc4f0be7fe07612b452900b4ddafd8ada86829cefe23988a1175f800000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1800000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -83c017f5543ed495f0a0726b7a95e82b135e381ff8ebe410b85dcc3a91a765b1d25d2e169e64c000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39b5881482d531eb97675a788c787a8ddd9790a5b40542bc70f11ef0d854fd84c2212a16425c9b000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -59d12844ef5cf8d0772e9da694af171d97062c3c3a11c13e50f007ae159b5a2b40c45acb8bab3a000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b0cb15e3a75b6d52469a0260be456de4de30690c7ead8c91f1307dbe6d55a5607550ef6f9af582000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3a74ff25f61099f5c6b48d0dfd0ff2deebfd35126e1ddfad86d304dfa7c41d0c38149d022f731c2000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e34df7aa7316d55bcf39eb6d9fc4c77121653d5d8b5f72c5d60304c28ffda59f52718afe1a91ae000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9fd415b36e981b73eb18cf869ac00667ef1f8a8f0636e25c6ed93476de12a025750845b19213bf0000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d19137dcb5b46c2a77b2785b50cdfff666972b02fe3aac06895e0a064fd5c0a81e0a1eca330ce78000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 78000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1290afc6859ee575e06ff6410c5135ee8ffc537385394b6cef95f76a15da29a00fdd69e049492178000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 165a886e610231043572364d875af03190e19c88acb1574f0c1c9a4fb3e288244b1ac2998be4dae8000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 7f95f72fc5ef05254dae26e7d32e03c68d737b12666fa20a6eeca1bb4d55d047247ece9ebc08ff90000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 28ea43b81639afbc4d5864c99759dab61a83d65a9bdb3894052afced51451ef87031f84aa3123e60000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9941179294d92f3b76d9caf05c79bbf3477a996c0b7d03fe6a42bd227459e1b9fa38474f07a2fb40000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 372a0e30fc1ce25b816291ae556f40bd912cadba448c0c7b431539992a875fb54a76edbcdd09f77a0000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -faa95c366815fc97b0969e1659bd6a02257ab17f56dc3a7652cddfdb97d0cd3a7059173d6fea0a240000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3d1e6440c4bd6b7c5b2d1c79250808e716302ffc2e72932719f8959fbfb88c2450c459ad9d6d2ec80000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -38b706f1de731e442a402fb1ae98dbe1eeba724c8874c400712850494da9598ff453905ac97c346200000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -26c29d97366f85fcb034cf4cbc51883ff92dd97c020908ef1eed1a45f2e672eee3aa398bbd900cd600000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6f2629e222747e8b58cf5f5645fda3780d40148fee400500dfc2ce4daaab245b7d44466eee81a54600000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7cdb377fbec367899d49ddaff12c72554281d373acd1c6347a0381a6cf30b50c1586ccd8703a14d500000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -35f3a218057039c22155ab0617b6c3e676e2a11b9661f72956474a974db62b25f464c5abd7e9349e200000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6a09d99531c328ee974782ddd7837cb571833af2ad7f59c3aa3e74836a5b08fb4359e538e085534600000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ad7c12a88969a3bab8118c556a9d83dd1756f076be08041a0203279f8a00b77170e111a3e31d5902400000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3a5367aaf0e697be9dc3e0e5dba63af17686b34c1faedf8bc387fa5a23c624a7f7687cd1fc6a117e000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4da40cd3081d23ca87a023f0e3ad289b5ec2d3dbb32b2d25a7a15188703934d1b40ed1d57af4b734800000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ea6071422dd7bb5bdaa7aa30a302c62c1c9991f7ad0dbe2824012799964c5aeed3bc3084629bc5fc800000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a1b1e18758b640e6e453fe98a548d344340d4ffdda3f65725c5531b4922a74f844eb6326dea28fc78000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3403c5ccbb984919a2a891d053cc47b5f38914d04dcffee9b811fc933843757b68272cf701425f065000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 230514e8c633dae3571396cff6f441993df9b39a24c539109b18825dd1f36c8394d0fd4a1e54abfd68000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -22c00229513502ba7b80b9e128285601cda047b90b75b9fc3bc6186ed22141f5b0bee9ddf376eeb788000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d00693e9419398dfa7e4e9d6998d41552387fed25e240541d0a041aa54224fc17def39358d1144aa20000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -42ed34771876f07054ea280fe97626618f0d9199c6f86469bf9b1ad3fb19939ab1399775a444958b00000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = e0000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 15c173deed253f108c0bf7e404b71af80633b86414a3c5ce61f3dbe756e3e720b5fe11c19d3a8580ad0000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5951e97bdb1fa9389c439e473eb52b50bfedf71b08c594a28207b5f80ad28d253b815b54cedd135ac8000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = fc9554bafa1d9d981035aaa702a8a371d1a06c130984fa2f59de1479118d7cbac5d2c0067c067cc2df0000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = afb18d13e3094bedc8bb29282fc01b33dedd6e66667b5db73ef98927f5b03ad9c29736c474068ea2350000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 240c91d01cd58574a88bb1996ebbf5195e3f0fa2541d1736b2e277a2ce3c5cbe6322621ad273e9a516a0000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 24a5cc6b1df1f7a717d8a3dff7a3c9b9b996f8f30f25097c1e20665a47384fe5791961531351794d4520000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 241f724cbc27a196fbd9e06f4ee55f8d92a184d56bffe5a12bb108ea0c9fbd37a9efcf8fa7dda4af1d80000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d0839ed7a634c5c1bdaa8b6acb2158d061b00ec2f2759a8a6a2b423b74e545cae2742963f1af521bf940000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1181416485aa95e9f68495867a95457a8c8dea9199387c42b5f7206108f5248f15e0696b542ff84558300000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2cfdae739f63fd936b0ce58629646f1e2144604bbee7ed313af556233bb94993dc9633875ea78d51f2e00000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9ef74aab8c0bf652281e906b68c65c382e4857f70716971280b4a2cbd63ad90752f774b8cc0d6ef12400000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6f71a3e4934cbceb49ee81747149bed94256b996cc0ee6489fc74906051194568206409cff00549376100000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -25fb8fe3efdc62597dce6bbd5ea4b2f02c9e584ba828c571d108e1e9e009420821ee4d90cbc5d2c0017800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 21660ffd8377ee1f809ed3ced359745f656e552316301b8cd6dbc723d6612dcd00739d713275103275cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8e907201b1b81074992749d92787faabc565f39ee49fb06c9da719aee790fce0d4f695d7e2f1b3f2ca0400000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e981aaed594eb68739d6b7b7c2e8587f74f4d5206c83135fef5f5041f1caffe62815e6537007195ab8f800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -23ef01da093b303b48b4dee7cf2a40ce642fa4caab1941c9356852dd5002e23e9c87042279cf611f4430800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 335d6230a1db138f8b22030c7e7cfef25115188d6b6472e82dd8d89f7aa910591a2a0de5d5cc5f5098c3800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4cd5bcf34ce219138456818263fa97959dddf4be46b7b4f2a89fc83dc561cb7a14a58e1285720118dda5000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b515b4b624e845331fa2f933558307b9daa75f4e3d0144ec57c41e1c43d5ca71688705f69aa59791178f000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 350edf706d4ad29619e989f2742377f35160bbb9f0a87b0dc7f99d54bfff8072fa5f47f77bcd541d5eac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3aa5c48b4197dd6915b580dd9f17e387a1e8ed4d353461db81a226c8f741f990f9ac72809b9657739026a000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a8f4937b3adb1c1376ae2706bdaa0f856b85249d321901770adc0a7ba4d7485f54419ff3eddd4680cdb08000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 527674f7462341f43dbb60310c31041c869bfa5fbe1cada3e00001d686412474b96fb4008f8a6d51a542c000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3f56e3c041e3dd859f1961181e4afe55ffabb39f93acc4a3138f2ee27e7f1e9f70e4e4c809fd4ec1f78470000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1255f9ea2c0cf8d49a351579d49e1c4fdcd5b0e5ef4a4f667454dbde6b4e33b2eadcad2044e88575c101e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cebd385e950428979754c10d25301e87d84fe783c3bfc26da1dc9d19b752dea3c627fdca745adf6653660000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -60acd49e9cc00b26c22179c7eac922c81807a287cca898f6f0b0b95aa53b222feb6f555457e0cc9d6442e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3813086699261d758a2b6761f34041572fc267c2c085a869db1834068e73b1dc1478ab0d1b49cf158dd3040000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1342f426979c393b085a1d73887ae1ac921cd13c98bafb7f7cf2c492dbdb8b8c76481fd9cb40fe232542640000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e92ae3cbf173edd390f605eea8c6ba9a49622014fca4a515a390cc701aa6a748137b5504e3c25e65f83c140000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8609296213fe3b854f2df1c21d69c2ff9c721344e7dec07ac254ded6ff94b4bb7c38865818dd2dde2580d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1947756348fb288ab26bac87054034ecdd6f0b30b50aa953dd0f0459ba83e9f6517b743151488f6030861780000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2fbae78253f33738d80b3440153d35e6ca18f36e1074659a223a7a2ba0a59bc3f6619f37edc989d556b0de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3c307613e235b45fab7d940eb12272f5e88a64db4275bb2fdf2447bbd9799564c69fbc74a29727f88afb7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fc0c7fd87ae1c5e468b9edebd0e838ec602da42d82fd694af65eaa2f09bbd50176d4da32d5eee3e6f3f42f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -14513e4f561b81872e379e08f915731e58c34dcbfd1031a39302d93c3b5da670dcd4c691a29cbff47e858da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3c09cac45f8edd52c7191a0d64ebfed9bea5ad81596b9215301d17b0a7c56ab04da74289ebaa2d7be5bf3ee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3041a8ae615e5098d0540655552872b00be6fae7421043102e1d6ef56fb77cacac82d90b8a36d23e822bb2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 20456f8406b740aa2e7d04da9e46d065bab12861e8052e213c5a00afdcbaa0c6064e942c5bd0a03170b5bac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 24bc4fe23155ca187127648755da3b8e93b7d87f1879d4d1aeda2631299609e966ecda0468f2add54c45d8a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2287b1449914bb4e029f826715ec11dfe23c128ad43a108dcddb4bbfd4e71af400d27129da2b79e3840643c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4d5ffd2fdb1dd2b35b79f1cf6185128aec655d8ab465673c347e1f9a3991c7ffea978d46dfecbe08b7756ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -20093a2a97d5065b55b5e884accc9bb800c43b78d6cb274bab097adab349a8fb1eade475674e206661f7a36000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -39dc2630ce224810852404a8dcf1455d56794690f04033bd8e28c58cbac4c982d1af5d2684505d439f387a3a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -10afbdb72d6e83aed1f8feb6138ca67a4149fdfbe243614321ae39415705589a1a3b64d072748775b7ef11c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 652179015683a45a8108bf061cdca1c9581177d247f4a6fb5982efc0fb669795a5c2c6275fdc792eeacbbdec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -926f732df849004fef37ad8bda6e9c53ef204ff95111782f6c580a75849c65529d3004cc766c2f4cf19c48a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c661f708499e6802ed3736543ff327b90b8a17d5bc8aff3e05dd68637aeb71fb94feba186d79fcfda6102d28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -364335a19d0534cdee6a98d800582d471965f12d80c1c2a9868e5cd0e2fab7e260ac61b3ab0789b9213774a20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 371e1b4f542280ae1bad791971f0f0e0e30c427b6babb6fa80d5322c402c36ea6fb4de528a130d806453b29a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ef43f80c69a5e05e18763c8f7d1c1dfe0a9d46d3fb08ca529b7732ee664f24d1719be76376b3c907e72d5f370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -17f9a3ced2da274ff55b74ae12c1634386a0b522c6cfc185ab44c6ca09ea4c4fe5ace8fe4c9876e94397001e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 31ad1d9d6c5d410f03479f3c8b4018cd5a927f3ca1327782c3e053b5312e3335273f747fa26fd4e7d8a3f39260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9140129e032845da414d04a1e547d917f1a0741d58ce7a0ea9ba7d660d9dc8fafedceddf425f708a913621b0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 47c86f36dc3301ec6c5a874d3b3d7d0e44155cc03739921c919b44c8abaf74add57d095e44b0e60442b705ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8c20a03383c22d67b3a92fe7e1b9a613eb1e1642c91b8aea20dc1cc7c8b9a4fe18831c34066f5e589f1107d180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2531eb94c7775222e8d66104cf1dfce1735bef9abe443d827ced467bf1248596d34255de2b97526d4344c8c3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e214c332a8026666ae815bdf7de65c7c2f260a2f1a66291bc9c38d89e6339f0da276cc524d845038b4f797a9c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ef27a51ccbf428c7aa06a669cdf1c4c1f72a39c2ee907be9ee27d966144465f9995ab07dd9b01eca20de0c0ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3edc8efac638a20c14095039810bb5af9edaea30ea145e6224a770abe0e10f6ec6c3fa7467feb838a4c347275400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1d83fd1b4c3f5c220135878586e5ffb57f7e8be630e41b1837ae79ec0df7448509982105fe7f44ee66f787b56a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a6a1e8cb88ef1e8541ceed32dad47bf265b25f67f2765ba7e50203fba2eddf9b56bb6c569ba8f44fc572084da800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2b096aa496e3d23f77f5fd83353fa23b87be1fefa9a3d5a3b61f6f101d791f3c6a314964f8419d0dafb731da6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2b37c703cd8f42b0c3c59e0f6ea5cdd552c19df0b3ba6e44538ce96a13319c1f78e714c8aa88912908a9c68b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -26324033d485cc4ceb6c712a86963e045debcbcaf8f9db49082daa3dd777e3f2d7975afa8bc55bbf3d35ee6687000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -27242e87f77928491e62432c83784957380f8c98ddf83c1569c9c6751e5ec1f2fe53f889e340c078841b980dd5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e7998ab476393b8fe51acc4012c1b2b557c19f0fddbdb6b177aaf14c1073ce5b5024c2de35301c6a73703bac1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1fe059727826cac35f2c644c5acbc6d557883e614b712897ed24fc5e86124bdcc7f9db8d9ca0e8e7369e3b2b746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2a35653d48a7401de2af0a23b84343faec3b6fe0350de251137084aadecc232423650804d0a5bbc73ca9ee23e68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2e254a5c58f04c8a48eb4336929cea559019394056c9fbb4ad8e9a2d8169bbbf59b5c34708925edf886471c672c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -11dd02b8b4b02fa4780781c380a7815eec5c965c135c7fbd1974d114116768100c508c2b37b330f7e934b0d3510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -17322ad680c539c17aaf4f75fa429858d50582017a810c15f88d5d314b2bfbc662586ba2fae425da9f2fd3f7c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = dd928374f275074b60388cf584b52314505202eead2fb851d6540540bad426f508366616eb135a7e911864ba168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4f3927617490d6c0d59b6665cb2b37e7b9fe39ff97e6c8481f57022ba306aa45a74a133eaf1cdecb5ab785476060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8991a85418e1d51ee1298ca96d944a76e695f20734670cd71824cb413cf85f97eccb516ee5d32e7dded7287406d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e8682542530b67653755ddd1793f2c01da11899a157c0d23145559aecc5c8120f416d48b9b1e284063702d39ad60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1485300f63970596284a2317e04e9cc924e2ad891a476abdab354b6c387602e3cbe19fbefc590a575629747820e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -cddeab073ebe9dfde5ad4b2d9252de55fd9316eb814fb89ee3b2b00913eb1cc60afc44ac5cc62e02f7ed2d2dfc100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fb00330430e3960f76524d77cdf33bfa0591642c7e094f15eeac8f15380b48464c203e8c46ed7aa6e79756fcbe980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1a14b3330f8833ddf4d2857a60168d93367ab3ebd192e6de76234dc8204dd641f14104fea7c6cec13b91be73cd0980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1c28a5a0f1d05058373b0789d98f2fab619fc34ae9b161e192176428f318809ec7e9ee68d03acc3c5a35c1d3482700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a4fce79c04e37242536ab86989fbfc45f420e670168c91648bcc0107f4ecca39c9eaddd62370062d886ca2c3e84d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -48b2e479318d35bb6af09477f71aa44c577aa2da6d2007dfc4d794087dfb1ddd684362fc5b459befb211355b240400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -307b0f95f6cae4c4eba0cd6c6ddfe277ddc90cf050b55073bb8303cd45164bc4eed2794a020c8f6b725698c57fe6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1be152a4159aca8d9af2fd2511e5684850dbc9c2bce73e59a095edcb77ab92b6eb2c62b02addf8bc4b580ec5b917400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = dc1dd8aadcd952eb3cb0dbdbd38d9a843c429d4836c41e70b419052f1da05132c41d934950ca644ec10c9c9f8285800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3279fb74e93723754e9ccfc59e74d5d363de01c777963cb2788c9e3308b74ee3aac80b275d347e3bde48e54abeab400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 12f99afba8bd42972528817a876666f773f03a325809c20082c49bd10d2b246aec9cb244f8a178bc1df323139eb6d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c1ccd22e05df3ca39d2071c517d8432b8b7540eba459eabf7834a4fd68925b7b4dab8b2432326e96ab94690244a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d94c6cb4fb0d88f6c7d749e6fd277efa5336cc554cf7375de7325662c047864597a7bb0ed6bea2ccef9bb58dfda84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -fb422c297f913db32d0a338267fee3bb11774632d91d98004bc2d466af46ee138642932a67b48df75c42b0af6455a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -69d05e3d1dffe6ac3bb4c79ff4e4789f1fefb1379cbc2d9b97008a5eab8357f44c2eaa2c678588311809846412ea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -294a114c84ebbb4873801d67d76fb0c56a3bd4b5028983ed2653cbfc69f2b60e38d8c077344a5b29cd76339ab75eb2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 854c7c862164a36c41cdfe7feef15c8c90148dbe5ad2a8864215737a40f2504557ac07b468b41f33a2108650488510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 14b81e2e4033f78e2b4edf99bbe3fd4996b19fd939b015884f26bb1b0467e0a45c074e3cc6a79eeafd9bf05925785c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 124ec38ec3b78cdce4aa8731b609044eed441bf6ff3043418c9b03c7ce5cf8bdfde183457c8c657ed249e97c58be9b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 130835fe70b5b458d1245728b1ee3fd26355fbabd03214e0c22ff2feb740cccd3d5e06dabcf49dfe2d745a50b8eaca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ec6f7ab3b16d66f8439d905ef765524b76d08a7e61bd0814f7d2d921e6f82cf5467cb5e67bd35bf03d76e68468b0be0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8ff2a9b6bb3e02edbeb2b2cb3c31ffb2521aa5426fd308ccf5c412ad30d08ff326b9b01aef71b5e6c1a11efd4c609b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2102b3334758f61920c922d277c663405664e22da9aff33f62a348740fe437ecb898cf4eb99f03031d8f478eed0809a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -21170c1ccab1f49c0c4398c27e70b415139d99875e5b7922bc9901a9bc9933f8491c4dae54788da90c84453e26ea2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8e756dbe0b3c71be7060e5fe65038f3ba7162895fa0a43d56e1ed15c673cf3fe09066d7cbe9fee49273b7072b1508380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -37e0446696db8c14c955f377ab3074fdadfc60a7e0e0ddeceeb9eb566ae7f2a9bae71b0cd0c8293f4dbdaff04fa15d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1cf467bfe6c13712d15a9a7d50073ee04f6fcbf58269b3a9f5b3aa903972917f56504002a098550ce8ead2837c5feab80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -19830fd8ac160304a4da4ee9a631af1e11eeadf3d6ac62f7847e9166f6ba3c837116821f7047f2d50ac1a7f14abb33880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3a2dbc0b3acc06a4dbf764199185462bb62d406499a9afc1602da6c394c7e1ebf1f0e7bfd60d8c8ba9a29204233235c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 33c006e0348f5cfa9de96f05b74a081b63042c393511b03d0b3a7fa681476636cb7e0e55399865477906ac342200c6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1651570cf022eaedd5940ccbfa8e768f9e9e34c47eaa117f6d9bab2925e5e6b45dad5d5c56c6c17740f73c2c8c34401600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1064051c3943f180052b02328b50d793672dfa9d5b06f7107689c4de81ea691cf0289b96c33161ec96267ed05c48089e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 11d1c5a84ea9fdb93b0909e1990162ee2a36d70d5556fb65ea381688eae30dd82aa3910f3166774a10b30f49defbf7a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6837413d83947a7d0a192fd4a423d5493af84d94ec47bf550ac783e6e0d863d2eef32e8a74ea518af6faadcff74b8ed800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e2233d7423ee38570630c70f75f2eaac3aebe95e8b0a5ea6b6f413042c1735778255b7e4df20757b79c0e4336418b9e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1c410c961b2ab35e8457b0700e4baab4085e92ad6582cc5f4474299310b7ac0359501e50c44f06b049191eb70526bdba000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 98c2903fc0357305b52adbd08128b5602e322f0d64fa996c7d250c79bd8a365f765307aae3ee1b278b1ca63a518ced6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39b31a16f51199d09c8e7b508b84d3cdb3af37114aa8224d3de42f6aea8bd77b697d881b51d9d8d3d989e359f888540e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -282fe736dc0d2d4647636f74b280cbcb0cb024373b0db01e42cbb703873aae2a254269f0a009e89040ee0b975a781c71e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 246d37eea4013424bffb473b962445c8d11df2991b7aeab386f1ef6c74677f490b5cb9dfa192c49cdc0b8e2e7357b9518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ea5dd04715e5341a22085353757cd8d5d1bb30543f9489b5c0e837d2343f4f59d7988b540e8445addf5e3137d0ad19e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -676d9509218f6be9e45d6770464447613feeb9745ced277dbf7ae736a57331af2de73f3066f1599bda70b500fdb17637c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6bade001a22cd5a2e3791eda1291f868d0ac2f915249b2f87346593a472971a3f656692ba7db7ccfd4acd7bed294b7ff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 18af9c999851c80d8f79712e4a010b4444fd7931b61ec2387dcc22843526624fa803175f8f418ceef9621ecc2747f0fa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fed943e98f18ace1f5f036ffbe2d7233d1e4b3b842b8a0277afff12a68011aaea1644ad3f73b4e84cad57b9b0fb37aa3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b6d17c8a7a63501c257f0d3f57b05039aa8e4b8cb947f24e2a3627772ed7de7f398b62eed66cb4ec57d9c6a56db39e74e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2acc4132409102df4cd128c9f12f622bd978a4cb366fbd558363f6f65afe7c4999bebbd0ee758956a2fea42f1db0a607380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -301972c9a8d4d6269f68872b7ede48d32f924119453460d2bfe5f6d4ba317422ca550269e6435363370c2ea5c073b7cafe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6ac00e41b206588b14b64c24fb326bfcabf1801bfe0b98aa46ede6b39ac52ac4746e70bbadb1fd6176a96a62ac98f7bc540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a093a78363f45090d26832da116b21c5629b37b3066141100e7c3be6053fcabab91e1263b805b506d86938887b5694bc340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ad4314dd81d9122b9915a256ad6146b419786fec3eba40273b7f8b42663ec41c9b99afb7f018dbc3161e4ae85ed60104b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3a4665679f910bd369cc6e0d1fc1fbbaeb63775d1d282c850a3b6603c8f45f4d7a0e5a7aa07cbd2203d8adc6d032e6b82680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d1af57f0074a7f54e54a06111359a80fb13c81fdbcdb9824304bd5e95f0f6f659338e8f3f1646fb4344f195f1614cf3a1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9d9cb0029cfea20a45e20f39cafbd042fb00626b9ef37f3a51d51b5f90d20638f390079dedc49dbeb92f4877d05ae9d16200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3f7f8c1af3c2bfe944eaa8a87a30defb3c376e2f09608e80302958c529444f50f419971b06b568755b92df7a341c2a0235c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2fcf1abdaee977b19b9290a64ef964032e3290a8d5afcdc337777641e5a1507771e3415568cc42abdcba9bee6a814f5d57400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1e470cbf4791b48008aa27fca23d3ff38cf4376ed222008c512b16e1d32f86f6ee93dfe85260ccb90a55c420517cb6c136c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f5ecbba8af69bfd4078444e440d42ca0dcdc7efacdae3735b1b6281e12fda186fa78ea91f760acf778977fb2e34c836de9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2a1e087a3b5f55538b58609eb94c9cc1ed7fad85cd072a23441792d832475c11a87a7513df1fead996fdef9b6c25b17a7f2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -33d295fa352017ac6de428bb334e914cc01ac1ab0bb03b6b4d5e3e100df9ddeba1b73acc4770b695c545631da0742deebe2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = c512e1a27bd66a7f91480fdc5c05237056e732987254151412c77b828f398fe679147c40942232ffeecafec3aab94d1f9c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f55d0b760e45214cec64d08a4afc6ee1b111c9d2a2eb18df83f26fe9ac56765b194e1950263ea0239259061b2d6fe470a91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 138c24a76e69273b7435ca9bd630512ac0fcb8a6f8c4c3fd1365f4100600fc2bbcc976881030fc27ad2c17ee32706265630e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4ea6b8808108ae4c9a1b89b39b566db49319e4b540ad2d459cc0809cfafa6224e2eb7ba0997dc344b2fe6bceb064fe9f316000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8b4fe99f74380edb445aa10090558c3058a76155e682c16c45b74839e2605f97a40947dea3b6d2aaa08363517c804840a6e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a80eb7adf3237c54ba6ea96261dce81a5ee247ff348fc7ede7165e1401cfaac9e8c087d7be34d9709e0da844bbe9e20d3b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 17d4ae83724c6c5399f423b436c89533e0847ed090dbaf67912701a8cc2604eeb132c64d12efb941f9d0cea6b8fee904bd298000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -22b2d5b78a8036bdfd99d3ead2f03a4f650755aef8fb60a501b9a5f8d727caaf14e82064c9631269c6af03158ef872193050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8f471eddb6b49c99e73df4a6b9dbc6417846215f700ac3b6ed2856cc7476ba2c70b08f9092e867958b6a62885efd0ca45d6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e6f51bd41bf34fc11790ad62c664c0982e4a69e4110e4fdc505efef238bfc5e7529b46cb04900cf41ae08318219977537a930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -194b35c91d18478b81904c92cdd7dd1540eca9844f3c443964d8a760c7191b750719f97fca6204f7312d2fd00e3a2163f0bce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 179da11e3a581160555c68e11f7fe2db8774142c9e7da3fe873c5858253ab63a849139d196b61f62f60d42b66de35f83946820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6dfc9049e88ff41d5185c1bab18fd76cd62aeba1b4a545d3bf6e2a441d9517c641f0d3d18d178d6c7f9bce775f82ae3e8bd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 882035cf6da203c7b5781e64d70b5f2cfc06ddec556cb62b5fa7e1e07b63a8698074625bdaea5752767fab901822549bbaafc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -54e49be210ed7aa8129d30b081db6570636ac42e8e9cb481f0c07d7237bc93340f41cb05c32b094b69469be1d0e6e1dfd1b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9fe3e6e57c139c98b8e9dd90d4e4874620b53b9bfad29b8b8a3306e70be5503f2c2b5c99df23d15d5d43123d1a23b184737d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 958d476232f2222f7a68f0093a67043d70f60578eeea0465ae1a26dd252ba0373eea6499123ed583fcec8c1fe619f702e80b500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d2456c06e4c04a9d31e739f2e3ed5413cba17f65fdd1bce2b070cc95088349b6fd63e7e6b0545082623d70bea0cc97a4bfe7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1581703500f07824e4f8f7c364f96fa8b5dc82d6453fa7e6732516b2193b88e92bfc96954b8bea88f8b6c664aaff9459b34e3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -330212ed7c4a5318a3fa333744ea8eec4974f5046e49bbe5a188bf1f83b8b1182458752d657a8b8fc65caa5dc4001a622dc83400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e7658e044ce7ffc378e38f3465f214369765c5272a1a72782521892af48b89be9e5f07a11aa6f18e38973f565123de83c8969c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f43156d81c7b7917054e40f432e084739f666c9f5a763d2a8699775a1e9733498cf45b6dc8c2b4833873c8569966beed75179800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b654d4669be8c827ba52a896538b00e6337c63692b825f88f860143687b8cfbfdf8cfc7ebcc2e29af7939c5a9946326f9498d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12fcf9c041f91414c846594a5207381ba784c7b48a9e77a4c013d79b69c9808534603aa5d2c0e0d6773e762357e686c4c6577d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8bab5fdfad182cece36305fc1d77802c499f42f40ccedf7b0e5b0b2d90f9166480093c90e1bc1fb07211883884c78bd75fbe9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d86079e99f55f6795b13d0458a0858ca85fcdf06d4eea254df886e9fe65f8c9a175b43c2a359e9ab46e32d40bce1b71013f8df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -311ef54a66aac5a28513e6da7c3d54a1ae9d6633862fe5324716521bdc382c7f676d318bae600f11ca07bcdfbeadb0dd1ec7be4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 19f25f317d396c65c33fb47f6ad21b937f6cf7b7662829da46df7820e00a637b25ce6e4e3851212e635248937d098177a2d0532000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -50d9adf389f58db50113428b6378b0e8fda48edeeb10c38bbebda38929fb5b3ecc6a9a719129c834a8c158dae6327fd72d33640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ed90eb403352d0cc9040374baf5fb06ce09ba122942824d368be8aa2a8ff49a6042bec0a902fd018a7a536c526ea97f4ec2c960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2965734d214245bd7932f3ffecc4e90044a3609e5130e5748eb44d23e2df143c121a153686fac129ddf84b5350dcac85e2dca0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -327e6e2a02a00f520f61bcaaec32768c295a920c54143a9d759e588ee2be8ba54c3f7f301bf6be3fe4ebb65621bb31a3e52563b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6f23c91694263de0d4073fafbcab2d345906719c82f7ffcad1513d56aa08c6a66ced982f99b98edc5682db84f7bf620f8fc35000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e10989005881611bd1aa21928cf9e737efde8a0b5ec3848c85863fbe03725415a883883307a17b4dae7550cb21638733d16d6210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2dd1bcae3bb97e35ae06487bcc759faec26a3be3318239c238df3b28ce510438bbd0a8c90f8da7d8d7176a9f0d8f4ec03989ccd60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cceb0a7efbb07bf151e0bfe2c33806d3ab558829413ca2359d0979e05ac1cf358031a172a3d4f22f2168cfaf4e7e6f6e03709020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e4198c176dd9148aa1cf76ac0e4a4191cbf5e4b501e47e54f380cd5db9fa18562e3eaf9ff04f2b677512a3424daa44cb201c8bc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -57c6067d4294d4ad6bc68f3c00798c9d133638e6f66579ef80d802b9c797fdfaa1ff584b027d24d97b6cf653abf98c1f3202cb280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 11e2e13f3bcce80fe92dd8b24e5b2f17dd3d285670d9ccbb1d7ac790b1dfaa07318c3b74e41ce636a2f6bb39777b456a100175d680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6b0d65c740ab0227e1ba732c98702e1c5cd6ecac774ca6b3546250e9f3c1652f974d7463db67782dbd21bd1026045f6964506e580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1dc8e0151daf411d192c77a87195448abd4bfaa2a1024d5ca69fb3e11f53b3d98408af5062d3d11c8271ff7fa56aa426c94568a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ec9df07a52e35157aea6555373af2624a810f2cc60310753220148259d7658792ffe50bf90065864c0a4244a2b86f6cefab9f3a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4a7526ae3dda5cade40ff517f691b22230b61f8f78b174e6ad1a405eefbfd8925512b2e74554dabf1df4ffa7c1495faf9b8aed7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -195301ad6ab2db5c721f94af0816386f3e7faa119a8dbf04f01881b66405e669eb4aa6d2cfcbefe22001206b04526ce1aa645e64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 24b2bdd6a06e918a55263cdf7fc579c5f8eb7a63fb7247d2c0c45a7a06da3d5dd64d6ebd29254319af6845c30105ace8861614e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 73a5912ad60ac9ad9d8a527cc48581efdb725c4cc32768f58ddfc4375c65b0b4e68de95c13b9fb0154f8ede094e07fc37b41171800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 23d370286c9222bcd14cff27dc613fe951e37df44473e88b024c3f2c45e3c7cab430521419e6796bfec87b1a0ffaeabbc4afb40dc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2729b57e76f3b7bdcab35a888fd3697f8d111ddcae2bde871e8747d8d649fccdbb4ade66622a4223225f8bfaf37508f3101dd7be5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a43009bc110acba7c6abd100862e70624d10b7f7eb1d1b2947fa64e72737c59be425bf7ba9b2dbfba60d8a76a8162a15da4264b9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3e413ca8bd8abdfefddacf3ca06913423ff1c33419b5b34f6ced3dc6b00becd148a5fdbe07af06edbb4148f29960c2f355a0d25be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2ed4fd5b5dffe6d38e905ab03aef5c8431c82bcdea7320daf887a9ba83ca3395f434f6e82870e9a6e8b739f194f2479940e40f9c72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7d3f04d250207912400c8aa6cf4f0508250e70c00f626629d6de5609c0169b39050164df8e6c17192dc7e3ef8449094c89c1227c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 944460808522b6f8b81cb51ebfe567a412ae60209efddc643c15b829f3deefe4c1b7a5223b9a2994a1ffd38fd2c904b4a4d6cd50a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 83ce1fbd1060478b0b565d8fa29e66d3d0e35f8ed5f5f6dba1ffa7f706d544a7d9226082791d67a0bca58fd0519174acb4f560accc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 82e61ae1d8627f2ee2fbaac1263a665da181678e47557089329027d52399a91892b854e18d1b0ffd7fe6295cbd9a5462cfa5d75db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5ff76d333dd06c73cf8966d5d87c5732bcae8cad41972b2b5f17806f0c5efced740ee1da8c765a49aedfe9434bc86003638491ab48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -37e0a0076fc20011bb270fcc5641c2b32afcbaa5e0eadaea14feaf30317b4a72e02854c1a738188e6e3dcbf403850bb8c3e6f8b7630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e16000ff2e062ff557581c6b1de878e90c49c2e1c548c38ba6a6212d92c994eaa6a47f809c526e39c65fa8795330353647ea78935e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3b9be8e7c92df3cc568694d2f7dd460d73ccc0e4c86ae74cdc1fd00b31d969a5acc11a8a607bf6d2a8cadc7820b9243249c781183fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3b730365d00e743e9a2d920a4fb14769447a88754db96ea1cf1ea8bed9a38d9045340ae49ca0c34ac886385160edb2e0b5f5a817c280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c0d9c4ed0414925abc546956ae50da7f1b8591418198b67e5a2f9ad5e7d447fd905062654d3d0550e269d08840406c80816688bb4640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ab9690c558b46ec921cd898ac3b263765f3f9aa91b271fb3bf788628b673f2506ce75476e1cb75a88e34857b1233ef07c4f9495a0ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1ad1cd788f58d624d8e0da103bb403d949625e8b4fed472d3b963edaafaeb11e617df3cd703d10501ec32118c68312aa0ae65e7b40800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1297949d540eb282c7f3173247f6f5f5b760b8bc1eceb588760ec0575cdb8f71fe1c088c0c81dc8fd04c9f5df7c343512a4b6bbc3d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -df52543c9949e056f3983788382c612149b179cf885c30bee2f5d41326a63354f69a75e8f7e4cbdcf73d5ed7003ba3f4b430a5ac82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 30ec298815f8e9d897a5ada0b36ce663b3f0616f7967f99f41adc2efcbf19d4d6b509a08ffd1adac237ef773af49ebb591ab734b11c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 267b5594560e0601fab746a4a47e63852401d9e7e18b50c029b4fb238d796b1b3fcae5f44fc761fd1cb5f039f0f918e968e10c329b3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -257550bf80c1c70b1f4dc1a89db38406c46f0dd64406243d286440c84302bb227cd314c5e69be7484a40e928cfd8a48a0c1545e5c6f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6a490ced9378737d442258c906738ea6afbdf3ce7ff1892a36927695b33a55ea214a68c093f039e79e76d9712c0ef32f965025c6f0f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e96c8416d3bcfdbbb7c6c476b2d655a1837b56a458e3beb365d6c5bc93cdfbcb8876f9702629870d47fc34111334fd672a6ad543890800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2a17a681eb6f0932c21619c6449aa538413509ea46989b6ee64c298ee5d7d9123d59cd76ba4803d3088142732562b8366b657c603e9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2d35c043937c08c99ed7639001df15aa363c0962d7094bdaeadfee8e34537b87a8998592e08930af04f1b41160da896929a8c626d0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9b048fbad603070034ed736c50a5fad0e886a5141f23b0bd9fabf996893c6dae327f79fc367767c0c7dbce5e8f36546392f15b41d62a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5da6417524be6792cd46fd0501859d43e8a1bd671d3fa4b29a9cae9a8ee8f067b391c6b452cafd47082258452547281f0cf6be85c8be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 208e90d58703ab23b55b2b01e1f5c1049324661e1916d50981dcfb0bf92895b41191450d9cb635075ae51c0bfd85ab2921709d5df47f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 20a6bc3ee50ddc723e7b20fc48f685d713ce243c8b19938f375f9c2e018b86e6bb1860f8fdfc358afe963812d602e8fbed66eef074a5c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1a58f7dde625bd918fc21ef8472db72356e9e111465b9bf88288b14044057fb8b9aa053eb0599c6274c2f54186c580e27bbc216b8fee4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f60d4162c50b0b1c0a33a552dd518d73738f70a6353bd379d85a5f16b2c3d5bf10888585887906da7d181fa2b041e8b045ff0a5642ad8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1fbe3b860e3479cca3733a4c4161dbda335b5e98b300c76ce6518e1849e0438c2922214dcbf3820d4ebdabedb5f59242a740ee3a6f2358000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c4d1e0a02c04321bbcf34846dc28fe8efe8ca6e21c7bbe2a8a3073d7527bcb8ac9eebb50bc5106d097c232d1efe74bf83c0af49bd4660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5e59959398e8df61ace92301a6ec9586d2c76530a83724516ba7eef4c5bca45b15029f4d19ac6439038771e4547f9b7318489e326bac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -74f70a85eb5162b10eaf8e77d5f02c5efc84b7d8c059ca78ad6b8348681b7cfecb49a2da56648159b0c9d297f8635cacf146af2afd3a30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 16082d32566fb15e2f9c670d23b01fe4bbd9be3ee55926da6e50bcd1276f08eef649f563949a94b7ec1729363026c812aa93f07ab211c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 31fe2973d778a9a03d0be238d07adb77012ff5ae14ec7efeb0222953e30c58040e90b065b9fda7a82954d6e3065bc48d79bcf45b5fde3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -97fb3b3be9fa79e81a8df993c145744f3b07d21c65df8325cc255206b36ef286b3bf3d380c07a948b9b461c86c8ad82d8fd6128c4842a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -892da4175c99696192fbf5ee2a38dbdaf634474ad22e51c3a7becc2e19165fd642615b8d517311164c9d01a146a59b14f69df4f4efde600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -363a3b278df2164b2be39acc0916dce62edf49fddcd50bfd720178f14ee6ec036f29ef9ee69e4c907e5f524ac51770bc050797652910700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 26fb54165025c14b29ad1e68ef821882b7fe12783d03ba762970d075a091e519de2108a0d9f7e6d472e82a441f5732eca0b6abc883c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ba71d99aee749a2ca2854e9e709e41858766351cf9d03783aaa550151323610da2f091bcf366b3ff5904bb3255ac6dffe4f98cead6ff4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cb6943968537a36b323fbbb5cf16e13974a9a510e1a4ba28b53aaecd41ad63904b3de54c58aa6bc36ed640c9b42311b93bd2e43e1c80cb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -15fbad668e356cdbed65299297cb9a00aa3847cf34a0f206903145eea8e13bc2f21d17b8df451d3173db6094837e7f70162e2c073bb5b0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 19c26dcb74045c8383eb2f843402031777df7ad1967b6b135db778127dda9cf68b64e92aadc49a5ce2d645631979c8009450d110418ef0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bc09adcae91952e05e87ed4c20d862c7d6eae3b0d4c796e172ffdab2e72a9e28f232a93629554e9df545646cf121ac19bfeefea8b62815c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a4b1a564df345bc6d035baa9c3ecc3285d538a79df8382306202ce8ef0cf5eb2dfce424a097066f489017734809259935029988ddf7610c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2922278776b7f43a4e574478892cacda00541526acf1863cf2041ef24b49ba4ff0ccd77457804842d2f9aaf6f47c23de61db9b09a458116000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2d1d896d9963e77a5cb57c8670c0e5c09047a79f620fe5071825b56f1f405cc79c6364cedf1a40afbb9c332263ee97848379f58111bd145800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = faf78dbd28f462715b6eaedd26d587323e29f4fcc7e101cd80df87fb329c9e33bfbda8fb67c1a306d0d9a798a90193a6c46a00f452c6bb1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -aeea244fa89cfd16309c6fdba144c4e6c005831d24b0c5cd2c5fc425595489128238bd833a79aa9abd4fcd7b4d95aaccd6078354f734cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2df2da3abf610152a19c56bf482494dbca4d30088a41dd8849aa42a422e3312b8249d074df493e1205093dde7ea559d64307dbbba360172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ee70f764499d52ae0806082618be35732bce0c76b621a631eea1f8eedcbb63c49f05acfe02868e2ca79e37d4c4bb235c8caebe27035ebe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1ede350481c5a959b3b08a5eda4da1d16fd0c34ccc616752c49b47d12eb9b73494b573045fa9e7434f5954f89b2eb24c80116c9b81b14f10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e570159be0df0932915fcfc3e4fb2ff4ef245fbac2b28fa3f4fa59d38b4ccd203092a82a5b02c19028a915730e7902ec98bbaf0840d67380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2c76cb01011d9cf305f8c300651ac806b3e1250826c4e7d0320a8fe20b4e70fbfb9bc95585387552f6d16c0be81756c246ed9286c779af90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3ffbf542f9a809b84d77abef4f7b5a9c053537e880e51d7d3091d530f4a165a854025a903f66e6bf0030d2501da877ec996d614351a618b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ae2f624ec2d2b69868583373927b188ae50f2970fb4ec6edf4b29ff2d0c13549c06b6067d972efee7545b678acf43a08449b0f27d116fe270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2cf78b9e68ff2042cde8eebb99a2e82b59015fe0dd86c79647a8b88f9a1e80e369b66fb80964ed8b9af9fb0a69ed88e06f332f7bd8c10ebd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -34a786a37fc6a8bde64f1eaf945b0099e4f9719bf9fc95d0b79cc9cb9285313ea530571e9f4ebb38446964b6f193ff9ca4387873393ace15c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 10cd04ad0b00c658cd7bff4b865e61ac6d5e4b8df9a55e140e84189187437f89cc4647cbe2e2cca368028efedeafdfd109271123c896299700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c272422435fd24699bc0681de381e71059a882f507df8329912c30fa14f047511cef47bad9b09e6ee505d4fd034df0a914c458b423189f9b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8e2b70ea907cb490da9a1b252bd90c22c1310d3327fcaa488ba31aa2317310858e132db83e8f30c67ec830404633cda100452fa83a7beab900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 516f10e222ecf6434c523eec10ce9d229f3761ee0c320ccab1f244afb0b3725efa93678b196ef0a08380cbbadbcd6f1062b60f884e392b6080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c262c929c796fdef0a4d44c2dff288174e455d54d2833f49e077556b2550d2d8ba73ff8212b27e91bf9f0d3caa7a4db058da813cb92a32c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 7b1ce16fcf11492f7f256f4b5f238a6f9d86e974e5bf58d195a722100160199d4eb888cfa717907173a5248a05184da7e8a43ecbce717ef9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f8818107ef4996375a8ad5ba7393e4257b64e46843591f70d275a8a2e43ec8c3aae8f8658508224a2549ae960ffddbb9537e306db044a574700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 551951e8aa1caf6cefd8199134590aa1ff0d3084779f676998daf3a3ed39b7eb954d13da7b626c77dcddffcbfb6b0b0fddd13d09ac99588ce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2c3a5b9edbc2dcebbb177edb590d9d6effab91c623d485fa7c0c37c7c834c96e40437a4da133d143c9f1a3eedadd05a31bb2a6105b9a62980e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e231d3b4cdb6dea59d14edd59ad2e0f311c3650ad0fd4ddf2fbd689d2d90375003241be809624b9da910fdf83f6128980b4e605bca8ef5a69800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a74ef9ada673ea5c05f0e4b2f0ffc46d60d0989fab2e4c8cbc06af1bd5f9349aeb2096b935aa342235bf847820c305f8a82fc17cda9c40e08400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1fdc596ac22f1abcf93ab2a504ecba95ac6551abb98ba9a1b524c5fba7f9cd280e3030028ba85b1975cd0457beabe0391163dc8962472bc772000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12b29feb62f1b4d67154855bdfead097ae3f37950b02a51020a5306bbcee040fdc23b8f487fc152e351bd5ef9677054b1dadbc874636fc357e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6f2e0c745045f388a465a5a1b13592d2c123e7df0436c6456f0bc7dbd275400b1504de33b22a4ff4b52206361656a5e56b786b7f2ab6de00ef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a89abff8e197495007735a9a1568cb2e695c20ac580c5a22dc03938f64e0d1e7acf6ff18850e7b5c74a992cb29bece06492dd8c852103afe97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 32cca0221850c7ecb158c64946632f52ed7f52bc412075b5b6ddfa8dcb85e9bb1cba14a98acd4ead55b58d40f9696f151f3bc18ae56b35da6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1bbc808f64bd3b93c81f0632f44175016f7a3a544090b6bf125551049f2c70408593f01b8ed54a4bf8453bde6a88c0794935774f587ad7627a2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9e73909beadecc79881a9749624e7cdddc6ab102f9286db62ff117d2f46d2d17bb60e80709f116431a8c019366cf419e1a34d23ccf480077018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9eb040d4de8ba6f2637895f9a58bcc9b5609427e7131c9481653d2d98bcd7d57cd6550ce688f4a9b3a53915d976a8e8a4c34c8f7edc6ec9dd70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 63ef6154081b32aa9a54c6fe1288dda73d2f5d4659b8f95fd78f36fd46ce7814520c6a025c7e8e4fdce83bd4885cac77e6c5c9f1a6ab89fc2c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2270890a4d3ad170dc0a1f1c37b4e76241daef0d9414da48cedde4234d779e2e5ca782469a91abd88a08676c42b4418705adfd1f49d53f637740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 85ec1d45235227b6813e9b60099234a943e22eee8d53be6de88ccf81ead5c4962ae8901ea91bec0633831641dd3f8dc6e8a98e40c8ff6e9bed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8d8ecef6e4a2bd54b92e0f1b75ebeab968388bd1439951ee041619e95df270d412bedd79f62f60379dfa630d8c4bc6c224cb28ab2b124ce72040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 353135c72e72678d03beef64446c9b241edf7ce26523b03b3914461694822d3569d8b998607c31b666fdb3a91aa154474727432762653c6103120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = bdcfc9910518ccd75985e212dade91844a80df4dc556d00ce25fe47316f215daa2e227a039047f0dfbc06dba0df4608c33fd962758e19c472ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -96d436cee6dc8bf6e2763131a4ab60da5720e94988fd76e106cc2ba5d92906cb6501fe05af3288b7726f8be3c531f8400cd8c8f66681147c98a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ecaf35c0babbc192368acd7f10e065b5c71db207d8372fa59fb0267b11782c7555e67b8ab79ca4f4ac54221a123a3ec235f108c9e08b9e3614340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ab5b5cff843f4dcecbded74cc4f8c25208df0db32fcdfa3c44174bb8475576e31f65dd19b765f1bb1e6c5242f02ac1470331a8bcb52f1339c4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2a24b9da3ab06853eecfd6449e96100d41859542a870efd081ab7bb5f48ce6b94c4478f8b66ebf53c13ce34a8df6665eb1687f95d7fc74c90ab000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e5afcbb2249cb03ea1ef4e40b8017223f765c03b849cd9f7b0784a849ba55af75ff9bd0640b655db156402041039a84f9ffaf22d3c42fbec7a7e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5f4ba47ab54e8b231c153d22810c12d61d959ad3078cc59a4639444c48619ee5cb62d3268ef2cc34be1b350f8cb31b8bd0631d49c7538f367d4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -29e1a91a71611dcbf2623bfe7ca7771c31cb777e5f8dc672536ebc3033d7983a3f489975037fb95a6f6bd723630bfc054a0e13899c02b7a6526e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -24eff5d780b51a1b4590628ddf97122092b0e5ceeb4c50fe64d9ed0380211f88d49a1db2f840cda2dc645ad06a43e51334533bf18387649a04ca600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fb3bfae230ba49750552d047c0f9b255ea611f968e81a9a74a62593a4e7318b386fe22719e7a2fa13ee45a8d1be8e65d277814b8e877176d79bf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 59e9b17b209b41ca1a436009587eacf69ea8b489b9a66b770512ba745a25cc75f14fd37546a0c38868a9a81e0f4e0d326573794a573769a1369d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 900a7318487dbdb6b334efe8d79029fe03aff62a14ff18959727bd04127049a01a2f96fef02ddd9435ad0eb550a1d3dfcd8dbd9cecbe9c3a2620800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 34fb3d29cf790d6ff696b70b2de1c5d6d155503ceab6947f7fa83c68dba89c6b3b4f1688cbda4ce44ccf1fa3f5cf72515ac86ec8f6f119fd30372800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fd338eaf9ed9e031df47f1685d164f8ddb19ff004db5e4ad3e07be735cd38f46e499ce5f9066cf50004bf036142d392e0955f62dc77794678e279000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e0af0809c14d94c337467149b20986e9fd8a98134ddda7c994ea5a474186af371437d0e67ee80e3e3e78e3db418f5c8049929f8b1357b11b189bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 223824d224548789252d3cec152caa7e571637ad3fd8e005e93d1588503c350adccb3e8dd215bb85238129204fe413c48fb6c7704a19b8e7fbe2c2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -32571ac36f5eb76205a260aa40d1b240189dafc8721fbd9624cad7e6201536bc608c40be1d0d14aff548017808d2adafbf747c410a407945d33cd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8731514480331e60eff29b617473e8952b4c89d050110463405721455d99354810766ec54b59f7e7b3b2255caddd121909801fd92789afeb1335ac000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5bdee4945da52a0d9c634dc0af9f4429d8b1428c84d2196cc0a64dde3350686525a0254b0830d53b7f9192a07ce5842c3194b6b93e74a54ac0a840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7082128e57fabcec7f005cccb225ed3ae3cf7027cf41f2f96b6721856180a49dcf8972c20e996971e677671a7ee279c16779f5ca4935820513f670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b4021152537e9a53d96a0c9a714532821e7aebf6a7be45b0fb9ca0b76aa227c5bfc6595b7937a9d71012b86b697f5d672861f4593bb3855bba9528000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 331e9f6e41932ee23a2bb7879acacc0eab97135ae92bd6e138dd494ef3faa652cfd55ffff62cff1c1bba6a5c937d93072de2914ed3e8c3991bfed70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 390af362652bc43f8950febf12fe5195e024b657a2ce1be58e1170f75ee0b8482dd27652eafc27a947f0d9e2bd89292ed8a3f068b356784fd6c3720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1f83a1797554f26c691fdf5342bfebae08143b990be1bdf8d06eac9746cef9e56aadb17582a01a3621954900789c1426892ac96af75a250b67dba980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2eb2cceb5c264929ba59c9a5260013dee53fbcd17d5e13b0443d055ef47a1eb2eed4df5b2e0fead20cebd187435f70c759f6eb177b9f87d86310d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -da1c8854613f6e8f475f6675d71ab726f4693d5d4e3addfaa4399226409c88cfafc71b312d70ce86a4c8c8da7d230ad5c345e359b10f9996a3d7e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2f99abd9ffe6f66f50badd207c8eced0852103fa4cfaf89da220f87dd3711d876bbd642a8679154bb8574ec31ea31d7162335bd729c8f2ffac5357c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2dfa9862f144202e2c362171102a6ef69795fc63b02814bd0e7c523a6ea5fabad318e9fab411a8ca95bd1ccda6089cbe4a425cfd95a027a5bac4cbb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -217d292faf2a779fd290d5dde5bbbc90aa0a6a77bd6751d923b05515db8658c390ea9ef20f98d9a7456f579fe43fb66bb8bf3158227833de9816b2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -247cdec3cadbf66a170908d0bae2abf207be70dbe14c26be270fb094d89bf566b4a27eec596316ac97afb580aa30e79277fac190c4826d96510f6e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -850febbed2d7874609a42abf0072b94d10bc4cbed313321c35706789e7a74864f0dee6966ca1b9373883cdf41071614e25a13099c2e00954303aef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = bda57e6e09de23272d33322e5048d2ff42bcc5e976af53be03c2830fc5d833c74eba8d866248ec7d504313f14de909bed17cc5df8c3d275e0c85eec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2498e6383a8b5ee0036d8f5d5c76f9aa75763907924b90649557b2b2075a58b29c2518ea9407c67ec41158dd7d2ece00ef9d96f36b67805244ce97ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6f5cb41649c1229346d60a89cabcca3c4ddbe82e0ee0428c9cbd343298d8287426fa90354d4da84e6cd737e252bee4dfd69a8731588df2755add77e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f6e7d4f18c22b78a0a83d8369988caddc815ec9e7166fcebf2a0daf998f5ec0d5848c693996a2d4964f32e7d45d22eb4db71366c8c4890755220a4d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2febb3efb022b1d7911bb67e1837c1bb7fb6e2a834f48e74be377b7b06b9a6766e384c8db9a0433e3abe8a545e02119f8dd31d41d694d37c1f7263c8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ff9ab7f3e2fc852de1e38988899761914af5992c76a555d1a9f64ee63bc13f6b071197830c794548d3a53d9973babd7a664142515fb13939e3060b0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -838c2dffa394d85bc7d18f4873e533d3fbf67bc172200de210ddebf1e35ff1bf6ab0e2de5a211615e0036bfaf67778ff9dbbc06ca305496a0433d10e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e1698ff1d48529480e5b0419688d4db827fecdf5bae444205121fd0d0df4233181bc0afb4416e53cf76c10a7ab93b1b9f21ce0a9ab0344ef2712fd1f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3b89f3025a43d0e3f21221f2f5c4905d55f14739c01e8adf34270f56a578ad356189c1b38dfed105eacb14c618bba2e3cc7071967d774b42bc097c742000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 19c324a99f067219f3143e75c538cf3b9d1bcff9af69c8f44d2bc14ef026daadc84ac27cd42b1a491cb0716621844a551dca1b4dc8e80aca5bb0f561e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 7fae693cef00499fce3a2dcc5fe727f2a0d22cd25579fcdfb006fd7ad9b60d6ba1f050c59b5ec061827f09d17a8e674a65e79790e939fbf7da27ab5bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 388e0df3710760d3fcdad1ab1d31926f0230fa4fe17f8a0e63b68828b3519197a9c546cd8165740d3b85e74c673c2e1cb80b657dec8056ec0f8096a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e26ff64667dcc8c960890610a8d8df7be42c2d6f8b2e4e00a4fe260786df4bcd24141893341e43a319862b2bed8c71fa170927c4adaac6df4556db18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1c0d3ca8395a05f1eed8e218bbb1bd8f18e274e7abc609d6f21c72bc938392fe7d7a6079b48cfea405553be8af9838793e3397a78ca34dc61571689078000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -513a22eaf115ecf79666a081e16f2dcf8f0eb9275e64d08d0b7f04cc62e98e143a9e4b7713ea56b1949fb42f24cd375221c044fa778251c2b678b322d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -43f9f88bced1ae081a7c9a041c171aa7232a188c0172d6d3ece4f8914d154046d85708e2485d43d4b5c7f52a0928b4827fb8d0b33531a5f0c6a48a9bd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -923356c409d17a6d511e7e818f067a177e47c0a7f26ac9a76f0cae85c429b01fac2081157c109227d46d11cafe00495c5509b8b081aeca20c606d75900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -37aa0b9f5a20583c5d2c6518ea54d6faf0d63a87a933f52fadf559234acd426c045144bfe22eb8414296637255efad18f20c98d0d68bc9ba27769d14360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a02b58571edc9bfb7453a0e38b6d7918b126111a00d5ab1cbe3da59b909439a0ecc61a25588d29d36bb6980f7975e928ad26b1175b48348b0c460bd8340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d0cf8c65d816be77cb215363ce328c1088888960c5460d1278a747357d7a44df8cda8bad480b5ea3daf5655014eb253116be7b8e9dcc12fd40edfc37800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -23749983a144d147bc35becb5720a490fa0e8e3808459b3e48155be953e8682166ca720a2984cd86b6d4718646cbfcc33ebe2e980eff05ec316d0b2df580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1b54064c43406206860d48998ca1588d6c16a6424652bf14cfb8d13669e713310dd52a70f0d6e0617d78297f278e485c3972f2bfae5bcf706555c9974980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -32b14914cb086d8e626a4a1eac3a5b1470b02569e1e6a0db352605216f12a79f245d0e48c56d447965e693ff22ec727bde075af266896c325825a5159700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b3b3c629be94938448a64c1b12c86da103e32baeb54a6ccd48a270bd665cb4d2427f0499cae204e1f49820aa60ea5c128f50ad6e97690b75a6075f617000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = acdc472ad8e9fc8cddf53d62a4571a9b6fc2f673a11f3e6e35a1a699562c9c1aaabdf6b16263340ef352a65939cf7d2f9c439ede432701008d99f76b4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1759a2cab2212f21ef69b13bda6c3b3b320a29c9a62d0334ea8afd6d03d3f689d96a59380692a44a3ee12f17cd1a88ad1827224a184d23d2006df0d8b2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a3121ddf0f3a7980f44064c692e446d8e08b2c654247bd08ea5af98cfa0cbaf82529f628b75bec4785fab8198242736c6ffa5014623b0919b95c53a22c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 783ab2b9d58c4c0d4e62267bd1a85727eee47acf43d0b2e66cf87411ce1e0859ff274d86566d731bf4bd424cf1933917e273466a3104dd1f69602d1d15400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b1b92c5352d499ab0ada9a2ba2bc6a667d598cf0cca8ed7b6abd5dbf8048cca2784f0ee72d5e729c5d4ff20fc5b2e11f4f30ba8d4fe902a5235415ba25800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f9a17755d773008e0ecedef2df7666f474454c54b088e7183926cde64589580fa74922f99c8b18708aa19fa5dd75d305d7efcab46f37751d5ce514b942000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2c1d4bfd7d6a6632a3be43350ad103743f3ada663c758628e44c92c70e3579f4213e47b443c1431885813874e743ead363d1e4785342849109ea24c15c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 48886413df621440c0241e1aff57d898af8b2dab0c0de494d46296af92245545edd820c8905173b2c0b944f576b95d45e26bbe297942d0793ac01c5c223000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2b1d620368293edcf80eedf8b7a0e8a775b40a3816a583d69ed235bd061d5ed228f2a2de50ee4c5703e537de7c2a10c9cc04c1fea7149d9510649fac961a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1cc7c1b3102eb0bf43e2c1c5b68d4d62fc88a311c409dcfa472553858002363653a8352540dc74232614a617b8026b9dfe510fa6b8f5a26c8cae4af86376000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f59b95ea8789e47bd3841c17a237a02fa1de1c01e698ea1fd52289aa5349fa43f0d09268fbc23fe6e0ac320b18282c6151636dcdb29c84e4925e2013505c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d3410348e3dea396514089406805da3d33506e2ae685c99754e122009c0da127dee944516c04af8f0f5a89dff36162a6ecefb86956216cfa6e772f65ef94000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 92a7ce1f54f94a00aab996ccf53137e531f199c79e1fb114af6cf715463ee90272e01bf18b076374246db41a51e9648465d4a77800e4026671bd0a5de228000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 163548b1a1ca23c4c2e1f12afcc56636b96be88b452a392690ea716761b1ddd4f55708eff6c04a635e32dc7c1242620e6de1c3687c5c5597fa570ae44d598000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8c276618197109d128694c11a3c785058d7c88a95809997aeb553c3c1b0755cb395935b9f0e51111a786c2125c6b8a29aa34c050ebe2a6f218bcea899d190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f993daea0136f9fc35de26a675c7bab421e5b833d701ea93a900e7e952920a3f3516589b4f73a56514f69dd0b27fbb37dee7d7390736955e7d808a7b8d3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2af073c61f0ee9eb6183ad21edc610d4a6c27a8b81da22cdfed1f61aa6ac1870f644b9b806f2a1866c43d22e23a20802e5ad7fc3fddc544162c5c913ed6180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2f90776995a9729bfc9b68c615657a8ffc7a31ac8ab6242712ad5d7073358a59ba8d9511951b26747253a1b8ebacc4c15bbb9df59bce7f6cfae61ad321abc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -16f26314ec7d96796fdf07980c6a664e13c3b81d8a84393363f6c67b0f6e22a4132107c41678296f89039f168b7152e3cfcfe0d5513092372a3f331f60bf40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d8a5627cb32d8f63ae9c9eb3f147f9bf4306efcea2f10eaf63b7c2d9fa7fcbe09b847857d4f60e7a91b081cc60fca531148907ad980f486fdcf28385acee40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -36f0ac29cafa342cd9f00c3b83057f0df4f1da417c60eb7fb7d1c40393e2d99ab8b43a97b5081015139317b04159ceab7ea6e55a20d4a5c28f60f98fff98d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -21c2b20eafe04c06d7b23591154857a17cff6282b9078d03104513498dc77d632c23d7a99934e8cb5ea05937cd2376ba105efe0018ed780775a72305ffe3980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e3970e72b0674529411b7458ceee10fe9d549f19b20e164fecee566ca836c847399cc7866c81ebe9fe8e73e71715e9c8844e7f0f4959ac395878dd64178bf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2b1ec2e4c93b8e68a4c5a0183e2975e7b56478b98d6edd8020691bc0fec3fe47e34300ebb83862a51beb444be8103c1fc3504eb14423205a2ba6eeaaae9dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -30f7f6f577f5e4310c5dab7e2c90e040eaf0d8bf34137a4a04bad7b4cc1db45fb1482c3ebda69b41c107998db633412cdb595f69d0cd6783c2dc029ae8e21800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 26ab4478fb0f20ed7bfe05589140254a34e7b1b0af2812e393d8fc0838642f42bba70b847d4558465388d268b89a27ada2273e63c1982fc14c0e24891fcb4a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e230d1317d3447a0854fd4b2149f307b747a84c6023658e04a2b9596a8b210e578e876abf84673731ccb679901136d5bdd72ede2da6ddb1d9957f205cd85a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = cf1308a9170df766ba6499e378e156af0c48fd538e3d0588f1036e6e0c2743c12efa020972cde23420a6e67695c971cb5914bcfaa46c7f8f50830a28b2c01c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f4bf3edd5259df7e4c226302ca06aaf38631d07c6c4bea94b95f0449e6e869a62631c8ea4af398b5ffd03bfc9906d1d744b82eb0edb09df99fdc04fb5087000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -32ae9c6dc645a78c2721713cf4f10d811c965e390305e04f003d05f0ba858e3ded6a9000b0f30b3cd30bcffef520aed751845591ca734ec534ee36ca863d2b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5e196e54ac7cbf4631a29e29ceee01d2b5ca391c2db5e8adce22e3309346f378ebe5de45935d728544498e7b19c06f0ece20aeffee3a309fc97506fc83e2b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b0f4fb017ca8286f4df6114bdb668553123b42f4df2bccec96a3898c054dc5cf772add17e59dea632291e7fcd993b0a1d22a7b8f5bbf83dbb5fdb587a9cbcf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1fc7c7a7f7dfd1320da030dd37fa14b85bb12490d799e7ec7976dda6cf128c7427843dff3a362ca01eb6debfcc8483f99447e34686aebb581b70c274f7533fe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 69708076c441b6caf5495f2380bcbafb78cedd8fc8db9d2f6787d1480832a6b60f1ac99befe92609052116a767024f881781646e209cb33135bbb40f1534f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6760d448fb451b8ed42544eba4cc95bd6825c290631463bc9dca6a2aa14e6ad3c220f669122d795839e1c8bb4e992224acdb59d628bb02a5aa0cbe3fc089150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5d6dd4fb5bcc605d1f9acaf14642cade815b8242bef367e3ea78898f3ea1a36e34c79169cc827578b5f15d4ee71380c59709b1becc19adb2d3fdf6b0a365eb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -38254c89b4d163a247ce6896d681f9de0466ac6fb1ff64f63572bb72abef752710899e1f11beb8f1afea33bb6dd2a06bd6741cacb6f7e8ea4f2c921faffa9478000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1678fc0cd096fdf111b32d187012e03b2231751fd463074574ec2f11fac435fff827e51bc6334f5a678f59aa5f5424937ca43139d2b2f71212f9e08d72a2f2e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7ffc62087e70288057435e7d2882b6d326327c5eeb54ba862acd05b5bb96a637a0f9a6ba1d1d888cc047935c93ab119aba1ca11d7a54d8157aa9345dd89b6e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 44b594ee4cc298a222ddf63ea7152ea82afe72b48e84a6c1292fe32e83ed99ed79af1464671a5649463378132b024954f812a10436064107a78515adb4a2d730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 118492cd8d0ed2e25eb9b56aa2e6b82e5dadc4da71bac1f55da5eaf021252f5e77e44e97914136d81e344f522b16fb42f6399b1ab2cc8de520e6fe1e6e96df8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 22738b08fd31410b159d92faf7edc0eb3d155abac0acd00b22f2e57ee3656f9fc27368369f1c039f6391a2194b6e6f6f2d646c8a5762e3df9076eb1bd5971f580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4382aef6024157d2e49b0c619ea6ce5f137b7266d4e6f77053fc60eb772a00356a335fdedf915b3917bced925ec15fd0cc49b88dd4d929edca11616d62505a380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -20198569e7654650331a55a9afcbb0a55cd3eb6d16c0f974fe51a84822f8f26a7bc764e535353e837ad2941161884621879e25ec00d4b3e2cabfdead89a1f4c40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -23f54499fa6e7541d6ea8b8b5d7b67fea02515c032a242c1ed9d58d0f246d5f8d5f6d8597f8c25d8b79421f6f059bbcef464539bc9fe86e245312b6838127e5580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1348577802b4a1117228cca3d3be0aa1c1982dae31d98c7e7b81bc58f210a02312c8c9a08a755ecd137c03ea70c6f340f9f7f5914577f5cd73fb06e7160712b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -99ce8f3b4939a883eb043bb0dab55fed83d521a4f25ca5455873e88449bb1302ad94437649d30192dae11c1a5ead98673a52adfa05a979592bdb79a05c9b5db300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9b099ab2b2514ba7da6b4366807b3365dbe47b5f6c9568527c4a2579e63c1942df4436628cd49ed7a03b77254ad56af2239cf4db6610255cf3852040469061be00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3e9bf1154d31add35e65c42a7b51676a202e00b735d142f0cd0ed1329edbaf44954ed27324f9e4e8c28ef9a43562ad7d1acad156f443513d0559d7db5f89789ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -665047a9ece503625deecdd474c25db4a40e0359704863b17530f46e3ff6772e5923621f5531d7119672587dda42ff1024dd62a51ed7a44add62f6ef545d5caa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1ce3c8990c306c835de054c4653fb5ee2b6505ed960509bf0e32abda3158d567a2312a931f15e35cf66d6dc4262c1d2eb6b5ad524fb88bc1bd87643faba267bf800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 160fbc927dbf087ce08170188382dd0e51dc55e0e88b67f18c147bd936bfde3ada7f42ef560fb4c2a38cf204c35513cabe7489cf679ffbac0e2e6bc75056d01e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 11e0768d4cd9ff290f656309a1aafabe42beedaea17b21dbeebc4f94158af9d70c4550aa353ec2a989af469022df73a4bb69becf48f2f710e2ebb11142a61ad97800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 28181c50ccf79180629227b3e026d738ee286089453a17dcad8eab0ab1aecfa7a26603ab46cf111bb120fc50ea43b5d9e22815054a22bb70377e3b1e02f3fa88a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7e956b5052c0ae2ecacaf56fe1be15e054ec5aad0b9c1d8c3fdd84af3dceb3197338d72b76fcc9ecc5c5f4404ea1ec263828719b29407d4faca3886fffa92a19b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -778ea399fac2aa749e65160be226eefbfc02eb4b674ed4d295cad58ea94975514aa02500c20482eb98a8a63447805698c49b78927a48136bd54380e2c8c5dd514000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 28e8e5c63b5afa443aedebb74b2f137bc1c7500f3dadbb25be89845f0917af92e42cfc210c817bdb100b986ab71711aa3dfaae61c377ca1aaa3c2d2f5f571ad24c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1f904e03dfced1d3fa565ca17d03015ff80f4cb1219927cde8b1c46c06243ee8672ace58d58ae75d50529b47ee870a5a6460b7e2df4b5c6665d3e71aa9776c160e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 288745565edfc017dea20cf7ea538e80454d3edbb2869405b623176bd587d62b5e42c1e41e5447c957801c99190d2ce898b7bc5b31fec8aa3d1faeaa3341b13548000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 7cebe71bc4ac92a1f6a4929e8f85d4ba9a2e399e2a92116c44cc006b932cd93e201ced71754290754d3989ddadb5f65d4d4e914c02d6252136b02113fbb43ac368000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cf152a7c7b566d97f65bcf4526ccf0b8432baa768be2ce9fc58407c1b157fe18344b769fb0e4730e5d97ed1090a521bf082746d9daeff26af271528e0217e5fc28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12c0c20a527bd2ca2ca4f15dd07f248d3d58829572e09ffdcd17974cdef864264b4532f9499b20dcb50b3090bfad60e69f07ae45f1e8934989bebcb9d2f0e46fda0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c0c2a12f1ea3e4f4c5b28f2ddcb438adf9663b36ee2c39e5a93d985910a3ff41a87490dcbf36ea8e7495992dfa92aa60c6b906409e73a71a682270e31bdb0e8fb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -80bcc1fc4b6d26187523e3dc5a01cfb777070cafea95ac54e24b214ef47110ec0d6e321a0841f1af178fd35dbdcd91311b77e994a702842e06de5b87c273187e700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2252a0874e6fa6dc2407b75c54701be3d9baa4e8d1ba3f6913b522a965639fabaacb9a774e4d3ffeeb3751d27aaf24ce96ded8e747fb0bd4a10abbf0c7d19566fe20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 18815efa4f4b4e5809be802135b944f64b894e560da9fd69e05f1f60c37b3078fe39555300153d395b79320a253d017f7d8df4daf3c06566e8222dd6f911db88c0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -affb6582a587b5e23c2f84d713f72c42da09d50d698883ec470d8549fcc6d512b04d334aab7b4051f4e73459fba5dffbb16951a0bf554282f5e9cd32623ba538c140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 25f8e60615cdf5a2a2234ebc0914aa747039e7484b2010d850c8fbab93af72673bebc3e52b753dab4e4ddeca736d3fab7187b45b1e45a7521fecfa705941dd8595c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1b7af3032f5ff43b2ec05f7f55e27c5c7299efcada3aec926fc45c2303ec1e2ce40df3fd18b14096283e9b6213b39939a61519b97a41d394ce81b892bef0a58396e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1aaa12303f8e3982eadf6767607e48a7cd625c4c25527f7d09d5759011b7db7988d5f5efbb3f85a5c80d307e792b44deb93255866164a663e1e7609b62879d9e8af00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f0d0dfb567eb0ac97aaaaf9eb082c7925f5dc64fd5d818a8b50a56786208155e6f0b713aa9545f32edd4a9c7a5bab91656dd66dae4f6ba8a1cb72b96ccaf17b493700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 36b636c0e29b914237427a6560e1bdb6a3e71b9e6a98fd917e29a901e03abcdbd554e3978d906844926a97700de822a60847beaa51c9ec4850c21d6c7047265c83000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9108ed7905975da1e290bdd613a17ff009c083a2bc0e95fab7c38ea5b1f0b055a677f73bc163b302c66543ccc1794ea7f37485956b563dec294d7235a7b05d8a85a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1feb728ed9ecfc0a44828777c08aec0cc964851597e9014abeca8983c780d3f4fba94750889d47853373342f4bb0b52c8874635de671ae7c96139e6a0f616349239000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b3351edd9a73a4bf4f3fc29a7ce664aabb7dc4151c828a12e4d46d4ca4910ced0411ac5e3b4202f8298f71cdd4b8d8187c1e0c21c86ef8e8c9ae5da58410b5fe9ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -fc5a8419016d2a7be170a574cf83e3ef338c46d21b0e20b824c1404c002f77b5592fb9838d8b8df17d022901593c3cda0265b19656f1bd4a7eb744b31d8c013d662800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e30c0590ac6a9fa20d8a313f2ee1196cd758f9241285f2edd88af1e885a2bd50ddfbf49414f445838b44997bdaa00ea7e0b99d580eee7a5b48a397e68e9e156ed96000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2679ad0c3078e4518b83359b300e7831538aba6e396e6cffde171cd83d5cd4d2e07f7caa650bb0e946078b108fd162d7bf99481a8d470e7259efeca79855f7554168800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e7d769a1d9ab7667bf28fb2882d1e026319f4b8e06520308d8580419569edea344166c01d31c49573e7ad7d571080f22a740ac074102ae709f85ef86f285dac0bc11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a3c59ebb4943e99803b851d73ab9eae5d83ae8570b97ca72c7770e6b4ccc6ab265aff5459e05a71766d8886bd286a33eba3ae4a164af0543fa441b327276dc035ad6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = c1b3bd1a0fbb17f47d0888df16843c3e6d30e0fcd6379788e37259fd1df5a639634a74488f0936f2609a2715b5a70a094ea0a4207b5326dd741cc5baf986a39b127a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 21a8ac6eb4b76550d3e31d28a3802b03cce1e066b43d0c76b03abb7d2158099c7f1f3ae97cdbc9461f0083e493ecf768ea4da463e59b32749cdec861abdba31eeb0be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6a5d7f9dee5e115e59360f845e48df06fe67b5766b1a9fd5d6f023b183f14f1c809e929db086b13f38e1bcbf8d60550dfcc43d3a572efd6575630c6690a494a11374c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cf927ad55b20d854b6f399abd7d437db93cae5ec89d567221c0bfdfab583b92f816d2e34da3dae1a71ab9851bf384d0a889cfe1685abc352184d87cea6636cd6b79e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b22b667b98670e9f21b7b2848d6bc484eb5af058cffd99f9a22065a4ccf25f040d1b03e8328b28a409557ab2dd7192d30d25067f3b6462e600847630c7242758397f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -32e4abc7ebbcdd4958d18b3e031f28c3d5dc5c98baa9c87ed3817bb19cd08af256a181f0769ccbf796ae1a20b717d2c405d6f340ebd53912f855d8c59b2f8e22af1128000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = dbf0dce0895d45f91d6dd1d4d2d6512b3e0d64d609f4eb3a4d155ebb07790fc707e3b859f3904493420d9944a3a0ae4c75970e7577be5a109f867e40046bb9cd901360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c625309d00a1925c755a94493e8771b933224b68ce19d0273330ca1e972f828303cd365afd690ff2bb86fd6322d704fdb487682dd6eaa9fe1ec2f46cf6d837df3486a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 295075f1e58871ab36ffb030aef26f8d56efb0a64b28f9b6afcdc5a83c5cb487b4c25989b1b6edf9169b86fc4407a4212444f6fe5f828039e6963429d28774a24e2ff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4afce5aa413a164fa216875f7f9807855c0067674b4889cace35ef764099b0c23861fdc8647a80d8a0b5b8e39b57c57681bd47bd43e79cd7bd5cf8cf28d9d50989200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4a19ffaacf689dee2ef81ab11ac8816a1f16aa937b9a9529364c67b1d75af4d7106ce95ecdd8a17b5bf59cc429c2449e3c1afffa3e9fda48e83a7aba0a8aa660de236c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -41b8058270aadf4bff9980100b3bbcb38b11e0f73f1f53565ab8cce4801df130b5725809319eef07bdcbe87c143a272162602c67b8a9b7e0907af7dd4c176ceab334a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 180e9dea79aa76d6ec0be979186553279882be2805885f759580749322253bef770db6bc6e52903f328a306c50d7832d6e7ecf0e46c19000843346c4cd41f9eeab6f2b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3e12347f609a12cb34a269f346af04b8c7850e58ea56607ada103b11972d9aa38893a0226b4abfdad12b7c474496faf5ae3e2211995d3342f17ca59732a8c788f7cd3e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9b39e01de2adc1dbc620f828eec98e2c52c0ad9408cebd9246b9492cbc44184d0287ec448ae9e154622f6b71d0b1d644617dc5ce45813752a4647a8848f73769eeb27300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9acacd3f2e77657cb12fa0f37d1d1ef46218fdd66b655c57e34afaf48870d6123ac4a0a62723a9b37c7e3fe57df5e6d5eae1adaad9a481ac9e38a868ab8fa8f749209200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -14809f99f79043e7e8faf145aefb298080874305bfb32dadb14d96e8dff98fd3aaf81fa7673f35608025452bfe8dca32707b7bcd16cfeb3bb83bf55f1f7759d0ce9cde400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1fa8d1c9aae763fbab93c3bfee133ef11f03cbabd46b1a450221a9970ee80de126846c379320b678bdb5ab94af0c805b034f5d5376eb8c3d7dd4f5afb8bfe340cd29c1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c1d7f3758fdb9f444c86c14dbf589ea125fcee0e2310fe91269385e5e47d2cb920b78f67d47d795ec274e2f487a798a5619f531e6d878dd9c0b9de3621a6f4559cd1dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f2ef96b67a682360dafef4683a0c36f3772a63c8dab54fd95223c1ee443a993d6d8aea637a9215eb86b1ddf34c10a9b4d4d0fa17b7f636aa25314d56118d16515cac8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -17d3054dbd1235b6b7467ab5ec0b925589524a94c551c9a1c67af55ba5be88179a00cb9df5fb7a0687e322554580890c867f6005a3bc008b82cc5ad6b00156c36188847800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2b767c295fdc9fbaed6cfd45329ffd791b51b40bf20d0e50db7fc214f8eebdc6cea91ccb28cf134f4947afb4c6cd039fccd61c877d5d262ebcf8413752c8a9072343ec0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -55e977cebabe0f9a6681cfd3a8d01b864ae8644d5e54b93288cf5dc6c711c6ffa0535e39810c39ce2bcb396363a3c78a9e24ac24e206c992d9244914466e76df4f1bfa4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5639237afcffbfbcfa6efd84e0dfe959ec120964bd350efab916df6779ff2932c94ce4195b71445eb6062abca4d12b3145edbcfee3198ef92833a7b47925cf36dbd16b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1448c178094d085b2e88c6d594f9a3e4f283a34d63bb0c255aff97ddafd270413db01d10b6a332f0ba09fef6f2ea589df7afdb31e0c02fd75c741bbc2eb746e46878b8a2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -136e2759b393dd81ceb6d569e50833b4da1ae16eb952604c1a713755d9a76b3946e29ec37394f8ec93d3c9b398cfd277a98f278b63e0fb53e4869272c0aec00fd516fe4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6dea4d9a634f1879a164f7c93e3d0b878b8ef6ff49afcd4f90f9b498e2fe3808612a6d98c1df3e0051ea32cd13f680bf03aa539d016d2921d43209e396d305fa8471d18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -783dbb7e5e734e9e529a941de127cb954ae9d88f97f33a2dd2df7a9914305c6906687578aa1510c0be4e5929949a3d245dbb11e7b5323871edcfd1fdd2d4add3944b2b84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3489112b6caf64a12f1a007d61c4e5feb9e6eea1a85a3dc2c8879c858e244a81ef78ab4492cb1feb75277a48920ecfd85a1e96ff63665801cbe5b4abc714277247d7822f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2d6b81a56bc3dc0ffce2901670d6e1d8e3021ca2a2689bba640ade37aac38a52b1004e98df749a416d699725f16ab9e30f9c99180472b8c98d978d7b4af629bb1c8e53c38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3295472d95325e6bc0efb21cccbb1a546ba95fe6a6d80269b8fa7da9034c8c5018010c412b3811b22f4c206db41d8f7bdcc8b9f6cd6b445d5da432f1264748c1f79be6ec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d6d06a2885cebd9b1346a8b89feb4dd02cc81b82be3ecfba2586b5cf9123b4053eda835bae0127c1b7c947c9b4baf598c8d72941da1b2bcd3e4167f022557244524a48970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -351082991e88cabaad8f1cc49ac6952c5b2214b0a72d9592abff4020f9b7c311164091383490eff5bd804be4e164f55fb8d8dfb81fc5a0b26fdd9dbec8693acfb6c19e02c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b33eadf37428933c2fff3924bb8d31b4ed4c21aafed1b6b8c8f816c24a093e3a68bcb88bd0e0dd1d3579eb504bffd0c38263746cdb3d8fc44bf36fa1a11432192118c86a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = da140841b03751177eb5ca4430bb409cadfb316a40adffaed826d6cf4d5ef92757a727eeab5754e6f2ef8cc029cd1c339321e38f5da03e8096965cad6616350c6770ff7080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1f6302078f3414043c023607c4a7294c751554cea7ecd6104062f4ca153608d8c36c2db671b35c6b5cd6b49293ee5ef40edc30208d1358c228c7731f91ae2076e7bbac1f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1a7148d11fe366d6b5fab74072b76a4aa690015734017aac49bac2a3d738d63c2be509f0d6d63348a06b39814778bd84b0a4206db11bdcf2ecd6bbe1403b8f27d7c53c9db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c1a96171d763f927a46c5833a5a2ba671cb2e3b89bbb64b4245b0cfe17523f3c6929b7c374c59a84d7d6424a8e3863d5a79686824d897a3dfed9606550366c462c30f52580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ba78600be661666866fcd91dd5ea72286f7d3af064c873163c3f3650cd6e22315b5f548167eec50c71cec69216351dc61eb2bbfbb0081e1f9085d93a1e1f454a980bd5f9d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c3b9bff1345d2fc68134c7b13e09194a4466341aa7845133c4293754648e5b03e641522b643e92da37c7cb745c32a26e8253da823959171f0568815ab3d1397332caaf7e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2ec731cb7359d0f8dff70a867cbc41fb962cf3ff08f3dd3ceebfea6218b09d9f1bc29025a7e328e9a0cfc4d9f2d2cceed509282202d0d12c50b0ae48d362d7b25b5b25eca200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2ab64e4ec8a9defb5d76b3898a78e5301e1ae2a4d885e876577bc4b06edf247d4c6e15bef819f33c01ce1163c662f8492d9c0ea3bd931e82cd45fbaed5fab14d5fe904fca200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5ee6e113014974927c21f715adaaecb42a18997865de2147d1a4cffb616b1030763ee6cb936166221886c5c2b14b59237dd2bcef4642ddf49acc15544aa96a03957d7898b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e66d111ff788fac4efce5166cf173987441e6c30e7b5159f052a46810ba84f9bfdd415ba2b299301443ff8fda77592dfca4966bc0802044efdaf3d187e2081d064db0ba24800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 250f805869d5a3a55f3211faa1a50cfb02c01d9677a7d59b27aebc8da12b96a3068d9d450a8d95387cd19599364bbca3b74a94a2ae154e80670b7869f3fb0cfa6de814a5bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 80b4dc39150382b976d880ec95fb87d976865b560cde71bd6dbb55f8aeeba51477332835b3b38401183a8cca9b11a72723a0411ea77d7dd5ee43b5d86204f7061dca5858000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5c19c420c0faf0c6b28da5ecefeb07a6e898098b4a2d782a672ba8288f36f775fc6d4dcca0a46d39122b957188eee10f518a6b722dc07e27a4e2d84f0eef058d694f7bb7db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1330107703991300e2b0e9cb667085015f457c19276903d93ecf5239f3edc4cd1711de633ec8488e7c6825bec8cf5f737c57a4b00c410038af1a7e11bc0e129891eefdb102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -107ff77dab6312ff12e0df30bbcfd129228f539b9098961cf3d46ebe155b6aa8d6009eeda4513328c296a9d14fe68f619310f62885b8f00be3e7345083efadf9a48c809772e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6b45f44d68c4fd7808b5d4bd9430840f88b29be75ed13be089988b58fb534af75d5bfc81ed44c9d9a83c029daa2439c260f658f4cdf3f35fce14c388211d503b7a88aad844000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f83dd9e8f2b08778ad3db0d4ba57320177d9f3d0d7d5732b04bd5ddba7712149ce5cafa880c4a8f1dc301b262dd16c5c491edc3711b80821ecc9417bce5c2364d6eb2c02abc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a60281db3202310465c7d532dc7b6e2401ec1ea028219c44049baaedb47cb13d6d770c5e995b97996ffc1e4ca821c80829c5306c9884d60095969662cd9f14db7521aa852d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 16cedfb0f0876627514a5301619abe3742ed5d0d88d806b58f09372ca0b26f7f00dcec5339dc3fe545356ae96f43f24e85729388faa4563a85b3fa378998d7b370c5031df4f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 23943a41618930db0403e2e314db112efa19e2e7d481f0d5f1903d08998e0473c2a2948e867a3a28b53b66ca8c03f4f38a3bd44cffeff298f478a1a4f373bdf31d59770cb3b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e1ca924b3694c28ecb5412542175efa184da15c947b5ff068212c4a8ddfa6813f6c62bac2f8cea20c37b0389952af6ef88d5e05f90476368055dc39f87f65aad6663720f9ea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ca7427c2f9574ba00a0904dbcf18be5cac9ba3b4fae6ed6f73b435c59f0cf284b076be7e2200a14c22f7f62a378a16d4c18e3ff699bfd69dbbbc1aa5ed700731ab9e8bd51400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9da975db852f32afc04bbc8d9f8915f389191339b0e5c5f6dc0104acc257f6a0912ba8c388e0bfd3bf647e7a8e135aac45721e3875bc8f1827f3a1afc2e2f3f81fbe609fece0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 629b3cd5370c769995fa8fe925a793aef5279d3de021caa1f887c65c275229da8a8ddc41c3cbac7edff578b50f1fef3da7fc262a947cdd0754d7d4dd14159c9861564f0b9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -686de013e6e6d5f3b5c5461b3d6e0f4fc1fbd6883bd747be21ad48196c955ce6f788d8f76996a9deebfaa3590b58e9132a29d78d9be45f87c601eeb0da3ea8cb93f64c7dd700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 78312f90b110a6f402ddce36b4e1a0f61640fc90b6d8ff0f668c2dd90b38ae6c4ae28c6b541794e56288a959f17e662dd49db425015ab982a7a46a52d6e7e68ac0759a4638c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2b529d665f5425d7415dc293a97800da79271b47907f8bdda4bdacd2cb70c4bb75c7cc3cee7393d85a1e3545671815133ed4afa7aa4c7dc6024b20414199e14942c1095635a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39aa0aa7c00560bb16c8e15eea885c9b20e0bc05b6c3fd76bdf47d7cb5c2e160d95be47a69396d9e5959939c60a8067a2837d05d86b41ec2d69278e882cca67f70184394279d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4790a2f7a20e298c1a8da49cc47be214fdffa14621ae49c630e094ce7b6a4ad313867c6d550f05c3dd0b66bfbbd50375cba7240fcb8f36733aa7eaabc79b4aa3b8352b9a4c5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cb025913fffab193e8aed2ea62fc2a5b03fee4b214242d112b3c2d5d6fa1b53934fa2ce0a0f7e12967a6ee056d411c9e5b17a874eaf286454fb929eda796013f11b9c86006f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2bb87cf96148492e4c0759b4ee81775a4c851d560fc32f07b2a9e48727380ebca6a8c341e52a3a528e599e6564591f1015e322fde39c47b9c080125aaffe65be9caa830b648ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3e4ca5b3236779e4d2d220c12edeae8e925ac9e49ac7c8a0f0e0f00f546a69ca772e577a36d408726ec22c4d76001b34b2c2b5b310004e88bb046886eb75ecd8a2cb282a1d3c200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5277d56b67ddf63abf468169266983e1187be5f871a36195c90426471b1ba7c8984d993163459487fb4f71d9d1ea9ede81d8620fee702dad92a466779e7ee6412edd6b34db7d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4792e5a7ad8afc3adc0a5f2e851471b9428c7f6a28764a0aada982b89db2e46f8cc2b6be9f622894f7a831d33f906d41dc2005878ad1470c99f766d8eb73837d50c109afc1f7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2d6962e372fbe073544223f50bcb028b556b454e938c065d79a41e48bc70676e35f4bdd7be96a5a401aafe60b31f27b09032bf69a74106e5a77de2430ed5eda515e02529b6aa4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5978dc9261771ae842817bf5df722ff2611a228ba85e60496097f2c089ea5c47c242e2c74e53739f26962836f2bb39e804f869f8334a00c4aaacf18efa1241cf18d787aa5465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c651dc669449eeab7891b1e12e02c95d2d8e9cdffb98849f4ebbe1a47a6b5f98e4ecfdee9e27e654c4129d56b3b8c1ab7d35ed8a611065d8be050da41c0d8552ba9978a3340e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7ccd4e2babb3c56e1d280a7dd9283ee7afeaac9da2d82fd7154addac39ef2ae69f471532410ab87f1f9ed80bf74ce9ca4ccd7069a91cd0a73e473b8cee3f4a7bfa68d5e1bfe04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3b4e67185baea5a158cb21d8192c9aad9f885ad54c77af3c114af737ea6f1d80d909969f3c657a06deaacc2ed5e5e310f23a97521896b3619ab331a431da7e751e5041bd3d7e96000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 34f608a38e7d90cc7973ed23763c170566d44a57bc279bfaa29c0b5c356f5df34c04c7d3a0889cd94704bb17fc5c13f1ba18fbd4603ec773bf8776011986cdf6d9f1057c5093e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 799e9faa64cc139f28e8bc10d861a3b5565bf2e4e8ba8c860dac6addc68c47d21853add5dce84779c9d3cf5d6ae7f06b111f72caf7bc8cd89314141c1f2cb85577cb6d04be9db8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bd2f4b3782ba0e2662fda9138234ace0ae43dd5823718552cfaae7e19135a32a4a9534300bdfea4b746a97ee1002f475cad2f5289b893f62bbe29944484fcbb2b0659068829600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 156c81093ace55c989716d33b8a02ea545a044447bc325bd39d8c8522b43e7086919b048c2f41bdd1ac77597d500945ab708885d5607d4b9d0a80cf2c9182634cc63f47728d5198000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c1d329ddfc5c4961ac022cc0a3349dca96bf5fa48792e7c8fd29e8ae5e79de3c603f82b3b3176078cae1daf8d50669f61a1ad05fe7493b67bd1d8e7931a9bfa85aae6d073033d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5eebd504cdd2058d3c24db7c240e1aa7427adaab2760c28da915623c03e53b3871633a6a753dfb7a7157aa803d1daaba642b581a0b1cebab4ac39f7a5cfd7d8b1a879f4949cf4a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e8465aee0bb16d6d5c4f04dab98c0f9a17b36e4e2465a150f813448c6e5374c2de2e12b818378c89b9111125975be5a6f7e1e54d40e730ea3d645925fdcbca2a8a6dadfef0287e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -21aa19f8fec866586d444adb427d391365a09e10e3531a816d8ca0118e79e76fd6a7083313440f7a624539a438a4c45f5e75d6c2185c22a98ad306d0cd3211e652933efcf5f007e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 210ea978e0f3004a8e1845571e2e9877cc4fdc38b830dcf13f6f8524dd62a86499e5d2ed70f4dc62cd2b44dfca5ea1871b207448eea701b9ec845d50ffc7d00bb4cc2dce638950a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 195b9ed718872ebe7d43093f23f34f1ed46d083aee06ee14453ab6617d7bc075a01ecfecb1bf529f06ab55dc784fc916a02951627178564cb0028b518d8ad6f3015fabe8bad3de80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5b9f73c8a65c3c7856d21abcea5dd1b134a442ec26af0a0f11235fb9e52d7e2942e040aa9a5cf8e6bd1a89811c1d9833b08061f54dbf0a9ade7c8252c1493da67d929d053a75fbc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 104415d55883defa9c001238d35be5e1a1c4ebf3ad6324688854acc432e8513334399f96ed3e8eb8d8c4c08a044ec85a843093174e63616d726f55d82bfd5c788bf9b5bed1af11d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ebc9fb80da94d6583093aeb4151a2471442b666b86b904bc1f6da70bc40d860c50c922dbba010ce9a2e07a9fd1e4c68143d088f6fce2e69407ebd473c0eafeb0ea4775c0d8b4ed00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4a74847de1da755048f53ea435e7f26698f160942eaac2644f6b77b844a6a9c2a43127aa5737a4d59a6b2c67f52bf7a7ad999ba2da5b5c7be6cc96ee658be59b2e9111e8b44445500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a04c8690ed005a74f635a9e36202838e2c059b90b52f42e1c77143af69767e4a2a2dbcfb05a03bae1511600fdf96f58006af2b73651eb09fdeed454ee9e5306e9fda5e2339f600600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2dba7f59276b8a6cee44ca30a9437df88edd74efd96407e09389ff427f1a359430f91d298411c8a9c8a6574fd460ecf4d9349f31d2a974e206229cfee722aed4e680a01e72d6f61400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -34f469c119f731c32d9601d45f30795fbda09f5608bb942194e2bf62b6aef94a8b9ef5fa5487353d15af9e7a346ab6a89ef3c6ed4e288f655d3a543b51d6c6aa4762a33238f7de2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8a8335bfd0934d96e10237e17679f0dcfc807a4435796f6a853bba4c78de7c7ac93da876b1b9902df48f98092ffaa48d82781dfbf92772c7cc5cd0ad8617543d945b0ba8d3cfe7e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b0395a79949741918a4033cd1e6396ad4b21a6029146a742241eb6c30c472abe43fcb6e4f45e22e0a695f9264a3142e82391e8e3260da4b2d212ebf69f9fc39e5a5eb66dad7e1a7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2cf68b635c366d71d4f444ce4afbaa0f9f9da5a7212dcca1d33512afa4e47f92d3b720f6346baa1c6816b55dc40bfe3140c45a8153e22d532f9ed05b46fe14da30371cd3e038d018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 32e2ae89b6e134b0454fe7ef58d9436c9bf2376de028189eb9c2f5c51260fed1a47930781e64260c45f92cbb9e3b5e6da571be7efe35af9f076b6e9e57a05aa2b736497b656c2679000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f0dc356693daa13538a76ddecca447dd4e2dc93f8d78e3f941bbe8e92169dbb72705c48175ce235289b05a7279b08534241d772d156322dc29978e717a080ce9ddc6e699976c1d68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6ccad296b3b3f2d23973bbdb09bc68ba103db138239807f343bfe0f7b49cee5a1cc3ee02de50b7ec55f09263d1e0b8834ae9380ddcc0c214051b4167c7defa9286c7621b357a0895000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1688605fb7a03d95abcac34931fa34178f3761d227c5e4218085fef1039c53e65da7c39ac92e6c39ac1fba34d1256f3d5119364f841a268de97c39c65e28e0096f6b740c63ef04ade000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2ebb06a379d4dd885036724104dbd489b0464d86c956c9fa17d4ab202844e217ed766ccae180e59d429a7553dad0854053f1986a588a64b1cd5bb48ec5738b47e610f14de4370167a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e50b63d6d2e08ba7c284c27c76d4dc9ce98742ee751f7bbd7855e04a4bf5d4bdcf911653976ed09e3e3cec2e873b73d1c1f86fd659d6eb68bb989c26f0b6609e0812c632c29e730b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 472e43f62fd89b37324beab655f45124424322f123406074ac6810e972c6a877e5c196a16708972da0ce3c1c4253ecafeccc5886a6130e2dd2d9f045ac11eefdb0787c32510c34f78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b5822caf74d99885e457d0b2f244c2fbf605ad6fa6ff13f4b7e810613559cfe6f03a2a57d5f4853f5ae5647885f6874046e3cff68f79125bb37a68920963e187a1060e79fcfb7ed90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1b0d79a27bc72343fc8abc1c3a010a303001cbe87402f5bde15c1efc5b1f5d7bef437f0aeb49e3147647785343e285aec43cca638247724f764828bf38c3bfd7cf2f1b03a7434e1c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b9a6bba2579cefcdabd37541ed80c6c9a7ed16086ef4c31e5f4767157ddcea53e4d043e53fe0fcad4ed233fa262b9412ae079b392182c754af516a29c8cdb8eea808412c7d8a9f240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bdc7ac394e4759744bf4c4bd32cfe99cfae404348e63a06b77ac4fbc9f9493d60042502853ab924b026aaf2a2a0c71f4b90a0a1862da912f4e9da2469ecabdf148667b017491f858c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3827f66e44556951e02901cf23f1c34243c782ba8fc7854fb9e29d1be4626a25024a3b22e4706080a4d70e9401ef1c7ec4b1d22a1ba2bd06682e8c4a9586db2aa40dbaa41ca670f77c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1b431f24fb6a72273eec6f17a963e2a9669e5fb8a8129c5d4a42c8e27297d369cbf55adafee9e47456514b3e155c06cdfdd75841484b9c7231dacfce750a8efb5ff55b6d6aad58f1320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ceb5b967ab82136dbb948712d62f47f4cc129d7cb87a90505e75ba82dfcfdb6abd9aaece8109487cdbbc989b86773c3693e4350af88b1b9bd29a450291a287cbd23b5baada488076300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 4c7ab13d15e098c4d1dcd068bce3c0999e42fd24f62c829a83be09ecb895eb9908696e5a6a61814a4a6e8e839199c9c3fd859d1d1b6338b8fb2ac8e40723eca21d46480476f5809a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f656dff6c082d2bfb9534c1230f0abf78802fc15a7cf5075fa6c6b20554b33eb4fba7d99b7d7cdc5c2a7a3a0df7623ad4e74def1ee1c4381c8d25d55597388ab4141925a9feb9324600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2b2f9772164b866739c6703ca209c2c7f3fab556625213aa7eb9075cd9bddd25f6e8532816992d92637bbc6c415e356186390e9726ae5a2d4a461a835450de22e36c84c1297d1ac99d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 71c6b111479be5821e62464e45bc22899e2b665cd75e9f1fd961b8ad52cb446ffcb6e0e9c928437d02490dbd5c1ad464f65132d8f2d01a5e6ec257462f61c87d25cff9e318b8840cf900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3a53bf17a2791baed62a805ea83e8390c24b63b715db9abf9238e50bbd8949b1f2245dfdabf0e277f13c355d81a47cf47555ced8b6a6c84e26f492e92ccc0edd48ada95197618ad54700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -326e48ecddd9dabfb0d77b9cec0a16cea87990196aef5bc2b3dfbd4df06b07d661cc5672f2a0a913016b256ba44675553e7f6dad7b2c1e8e974052c0106e5ca65aaca62e0ef1d14f47a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -26f1a8998d574a34cd12c3d424a2863f52763aea29a6c6487a43ca219787d0994e27f593d085b393ba2be6d5c235f2209b6f6ec0724a2fe63bf0dd278dd7f6fd2bedaf2cf213ab9d14400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -10f3e1467845c667315575465b1e4d22b53fa819faa47226b0e30516d6cedc518b5fda240f085ff9dca4bd9e111b0d61502520c9f0eb2d0b8eccd7bff169201b2116ec6c929d763406800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -77c24b252187db6b1faab4f7b06ec2ee9a2addbb94ef7dc0f3ef715b27560b61871cc1b13c76a5f6fc2a17f05fa575ee1957cc0a78bb3d815bcdeda635b3c347692bbbc26cc060c45ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -10a298a1fbf0000ab661a322bf4440d0e40c1c0029c73deda109d9399d2391ba474323e70fc2918724205714b19ff94c3c83cf5ff4a39ccaa56e54c1dabd24ce0fb41e48b9c40c3765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -102b981700c29897d263a831f9a3b74dc844f659d0e750c3c10afc44e6f8856de057d609dbb58e25f7ce3c81f589e7811ec8352eacf8e52e253f77a66e77df5af27077d0c2693326473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ac412fcfb459b63ca2ccb116c34d2d924101c5e5956201eb7e499ed5908775a766e22e285f832aa742128c07cd98217767bf29ee0329a1bb74e43f044b77fbf58cae1d2701157c195d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 96e8706cc05189e77cacaaded20d819db4ab7d169ae40cf384d31f38440d4d7acc8aa165ce2d1317fb2b539e026644ab0f1ac409a6269015ea3d136e0c201a1488d349470e690783ae6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2ef3d41c66ee24f085b6ccaa6c746143efc9e68a338b4b18586498759bdf38573fb4d344bba830861fa30797a5c925a6405815f2b45248d64fea87d5db5f2847615e84ad3f6eab4a1044000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c7d7892e5dfa354626c60fefe8c3ca85d484389680fe0a0095ad6a87d85894d906bc645860a7d4d2ee2cde7db8f9c8bb47b899e5879e6032b0d43ba5b8069ae9d64bd2f15712f89d354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f1c970941277c410275c9b8f74ec7c38556a97a371022a770790180cded46ac784d688abb4a08876031ec1fd7fc2e1d5afedde492dbc95e4669be2f4718178193be12a48310d4526ee38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d564e66bc5f8870ba72070ecc2d7e33b8345060ab255417274e1f985b44e145e9cffcf7f01583c1b3852463bf599c78ebb84bbed22c3c80497160198207964794a8e63edd4cffb79f604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d68e68f0c79ff18b7684deecb42c0d71dfbf33d690d12963a71ea7b0eb761ffaa1c06ff2af71b901906ecd2fbc5d0d1a77e07b1b687f7d5cee9d2a32d13a5c23448daafac376c2d3dfb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -22e2bad4ef3548b28f4025ca79bd71b66740b7fb2fd22832551501e8c0169038c0bde07d83152287d668d04a62e8e8d25cc754cac5481960ada5198a5b1fd017d234176def75a21f070b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 898bccca01e5970734faf2983a09067505324a51bd664f751c027299c6eea3e74dea5f4a5b114100224dab29aaa9dccf8e3e42a6108f53e27f6eeb9dae52d4a48ff0cec5f01994bf18b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6ecf477a99c7960abfbf7271716a41de9e86c75d911c154a36d15e35fd299a13266763ac8d41475bb4a2c86922a000dc25ea1e7a6d28d21fe51fa3481b470289e3f213d7aa16e465d1890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -39f938a7c470afb364e73ca8e882f16df063cb3cac62cd944b960b5da516d4f7ba60ca4202a1db4fed5ae3e18c96fe6a7c5d968c7cc322f5278eb17e19677900896debf21ef74778a233e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 124ca0bcfa1e758714db681eceebef38f55ec09e50750fb52b8443db8da196a7a56afb8a5fb598a27646ac20689e4f5f16cff1516e99688d7e8169c706f3cb33878884e0c1baafefc7acc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2f23ec3bc3037f8d09d2103c18fc0fb60ca0b2a741c1721681bd039684602d845ceb56bc5a4f52bd0100b01544e14dff643f73c6032f61e3ffe32d80ac1a1fea9642bbf15e56fba184480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f7fe71411511fc4a1554c027f21a78d91c8b455f8de5d3d14b6713ffc8abe9d1d9b6f26384da2dd70c9b96b8fee0d7f48d7f06ecc8a9b1195caf7b548b224e2be739f2764d92a6057380c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -34aa8ea6bb27a7c7c8788f273ee7a97bf6248e0a18c5aa9bd60c4abaaa8b8f9d891cabd2e66893e056a54a2c4a764c3e46d39643e394c9c563f2a86310f072cfc53c72e9377ec43390e6f80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a7687b89a793558933c14d47d2724270b5b3e15b914b4d561ec8b374aad07cb043ef0ecc03bb784c1e7b3ee4d7d40cc22d8215fa05672fde54fe43f6b79034e69f822b98b922c5bf49b600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -201e5e4df48331949c92a02d7e187e9f985a0eb7af85e8477e39d0c0d3fd6cf8a3eb4b1c3aaecbe928c5e775bdfa6275eaaaa3b237ad5e8a7798af47e7fd8ddb71be22d5e35b40d9801d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d8842d928f85bd7e87586cae8db0fb7a2f9607e53a56790ee80cec6dc9bca8093504aa7db5fc4cacf7c518375dbebcff77b7ee56a060a91032664f3eaa4e20347af4b65e21c4540391d6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 192851f6b8389a76d81a55c41327c3db88a1e56fc5570d72b99ddfbed5cebf41e3e568624071f21af907e52a8bbe5701e8219b00d223ab0cbf240d80c769d98c5f19ab39a0e1b1725460e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c51f0e24ce9fd9d8aa57dc0cabb002ba4df8427298fbe7dff181cdc7a21b81a8022f1ce3b32a2b335ba9bd7e70737963c4f154333e46338f0b57b79583b0663f2f74ef19b2087b9b89fd200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -cc52a0b091a32ac87ef968adb3175cd0410b66c4bc0bfeaf0988f9e49a68c7fe5169bce9ef1e4789aa4930135e5434a8e8975763d803cac108e93ab87033f0c1fddd6677ac8029fd82598000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -37af4c1b0fcbe6b60a1d7e1307f66da7db712956ee34d070accdd676f6e5ea83913e4afd942030af4b008f149986270c7d0702bee22d8187c363720f85d3c689ac881e1d6d20e7b04ac23800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -14ec17b74e3157719f586198898652493d6358e6d8b77939698af9b274aaef2c0409b118693ad62aa4dfdfbf549f5e682a4449826593bff662155bf132305f4923fccc73b0a79539848326800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8ea20c9658a7451ac2fca5437f16604e7a6b13d1bdbe1cebb3cf21d08148790ae4d5b2e35c79d249c96d46ec9ab7237001c02287c417a171e12cedf229cdb6929951605d1b74972ab701a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e6b13b3e8d98cf62435d9316d5a3459eb4c7593c953efb7d889d6382c28506b55b11f9dd04e19fcad5594a0bfc5900fe6a402cfd9db6aaba9180db70bedaad22b3bcc998ee26a5714216a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d9cfcf8260bfb63ab2c8019411c3a754db9df492e93852a6f4a70a349f3ccf46210acbfcf557aed7f1951de28484624f772aeabed897fb7ee229ac02ad838cb394b8a5b16e82df87fcb9e2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4c6ec221b98a80c052a35a573019d8f1c977782b5d880d99afd7f1c1acb83d749a4738e0e264358f0419745c52af7b0073a5b9ce164d812144c291323d3cdfb9d1b9a0f485cbab9682bb14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 38560a04b2f93f5a1ed1b3983ed6c9693c1f00e2e3bc560f7317f366ce9155f39d17f38df617757389dda7f0a03208177d19d8f3f831421872a96dc55ae8c54720bf1675735d797a54a8138000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 818b788a417cf83cc45265217e51c28fc4eed3f69e728347473ee0ef7ba97c2d833218889d1ef5c419ddb3ffe73a6a5adc1743bb7e634915cc3fa02c26ee4dc3ac039015be7b106d2d7f110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c80ca3c7486deb375e6167b79f1d3baf2d4b32137671a283d3e5a1bda696f25116eef09e986656495c0ab9d000369a379d614bb90e3af9f241ca9be181790784d3910877a6768582be3342c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 128106752d9b8cdca7b6b1b04a8ef879f42307116953e33da8efb95743552dea6315211a162358d9dba7b89bc40be64e362bc14db37fa582fb389e0ae449d90d8a4f8eca265a0ccfa68ef028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1e62fd23dedcd375b8edaff88f6bef17ab4b14a5b0ce93f56e06561ec28fd44c465368f0bec701c02838f43ed6dc6ab0620e5113bbb802d33327fee4e8d401b850fe1b19571fade342305558000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -45d72f15e2a370ae0d53fd72129bcd6d935df6aecaf2d1b73732d8fdc90ae75223add4b43f4de34f5b7254dabe83e4620133eb8d8f80b8a33f4c92f66e6d6044431404c20a58c49b29874640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5b262a4276313435f53dfe48f032ef961d58ddca94bf3d32ee1948fa94943f914c8ffcba1b13326a6b3e1207d71cb5517cceca54ca722233aab85e7a1b0e2e6c159d83fe0a9186122da13430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 25c10b467ee260ce06ac75f100d778f9bdc5b3bb27b2eedf36054023f2e441b385d0fcf6a61eec2ce5e2d8cac639790b30c337ea6d52fc1324afaace745e424e8ce7e2c570509dc77ca272de0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3f09597fe3bee56b66cca04d935b2702e530ba533fcae1e8b360b2e537519e3142c8893ad74f47070d559430826c885786199a9ed87d71dd417a76ab6ff4f71c33d8bc294e6a135835af7e260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -964c14ac2a1a8308d3449071070558bfa87f369b670592a6713ad73558bae7ed8a0a9b5e4870fe28cb3a56069605751a5375a82e34ad11d9106fff94c1904981f0b516afd2a0680bd9e926480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2a5957dc1f3ff0569bcd986534614938b6b9da4a795c1165b263f218cdfd17e600ed650ea52b1d57c74811d2e492eaacfbd4922d8beb8866d10b7a9ecb7d6e3f5314ec4b153ccccab2972ce80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 320b5644cd781d204bc8ce7d72531c8026c40c6cfcbfc0fde6be6992de277fab8574b17c8b1f5956f0e2ec4c9668d94ee2bcf709fd54b5dbc180c805cac7a9b6b608f3c4c807bc064c49f5d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c55dc669b26d3c44fd6ae05abf8dd6cec67f6565635b51382655ad77c1a55aee8403ef0992e7321606265f1260e9dbaa78b3a7ff1a3316ba530c48c7f0808b7d5149b6d0d86649095fc51e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fabd2a24d083912d1a7909b73627d861123a665a0b4768e7fd4793676a3a4f6a9981780ce666d3072ccde7f51570844b43fc46dd59f0e2964aa9d3715032a3b007979752e4ad4d67a6eef7b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8e605262746a3b3441023494e1d06b2957b33fdc70ddb6406f40f8a79aa198024126426139e6573db55624160f7176bc7b9883627d458c1c52dd64b228fd54185b5f8eda2c234fbac2266fdc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -150a6d472f5038981e0ede41aa4d1ecad56cdba9127b1553fdbd4088b354c927cb8e191ca0b6b4664b3c72e5148692d2af6fb2611a8f4e749a311973c74203276cff67d1af9b767d4129a947c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 654f5f97d8827f46f481504bea489a0aeebfc67f97478bc769365183de8a769d9e0375c0d940b2f13005df3b0633abdba9fc6d8af7705f55cb9cadc195ee3bc0d513802606f8c002b8cd367200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f8323dafcef2c0b873384108cebdcd279580c8fc23216546f89d9d6f7418eb22bcc10d674953f1020c07fa77920bbb9968cbcfa13443f6f9427ac41ffa8453113b12d2ae7d9ff54a5506c810800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c68d97fc1916699de0af674abba49642c3a6af6c213a083d529883691b8fc7ab460ae5c7a92c862432e316c687bf35759bede9c0bfb05536d96bcf863afa4eaddc64cb1caad0cd6c07f56717400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 14e59f0d3b0daca2f39bf240f0bf077a1c1d0d1a0fba0813bea19a32822fbe6e70a58e50d5d88b21447563951ee0d92d1a907a25b979b88cdd24800fd99ec926ebf4688fea4099d5b05ed1829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -31b90e3a192de6bd857c0621c92759b619c30ffa09f9429e6cdf24a0fb8447de49e869447ed0e0db045235233331782db6620492cb0fe64f4c42833099e70c46ada6d549b0514ad00ca7665b7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1aeb5cad51a3128a8179e84a7534d849a4da06833568c9914278efb43133811a083c4938fdff6a1f85701e6b83b8ee4339748513530b1788217297fa24515d8bcb9d0fefcd0cf62fe90134853000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9c5859abc02609d48e54e4d3c56852cca1a6442f78163c55565ecbf1f27e02a39a1168b8592d64aae8c1d77a60b1280fd6cc181cce26de442a5cdd37647871d49f76d3cd83e704c1affaf455c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1226e14132e4c3fb74c05fd754163b7d5e9aca93de995382253409c32c2066bf2504f8b1b229f8ff70f3aecfa115f7c0bbb176fff329675b959a877ca704fc86cfd18e41e1a8f68c2ad485cd14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 29a1cc5855fbd4791dde1d7e0bc3bd02425902875f4346235f0643e5577bdc303fa962fb76787a20614ff5e2ab2695393cd8c141303661de0454291037beae466ea184ee61330c0767e0082476000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9473716304240a9db6d2e0831fe333b77e4c68b216c57205cd50f3e4ca07cc7ada7dfaec57c34d4e725f4ec23a184264ee47aca846ad445278fe886824b7cda06bbfa6ff12ff4d07b3d192f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 43ff941d0125a8bdcc0471f531213130656d25a17f038f6ff51ce542d4660fbb87c6b54f66cef8728609f35b26dc465f78deecd9d67555fd0ac3b644d4995f03cf665e113ff41dc2feebc4c068000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 21a9391a03832b876f3fc3dc567823912cab836403af7b3167a11d5ad98dc590ad1129c19ae623f919d28c6e44c6c646e63d650b7aec12aa964ade8bd7aba27122bda8d5e08f0e03f77c6839848000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -181e5d84c4d9e3bd97342df38adb3a5ca1322be8d49faac09a6fd965020e1fdf8c36d94c7d46aa05f1c1cd92e7368e7d2f5292aef720348355afef612798e816e5149697a5e8311638306c85d70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = fc3e6675aa8413f378696e9147deb2832b1ce2010d5986dd8775379aada6e45a5493b7f471aa4cfe9d3fa397c0c2ecb6b6d4ae6635317e9923c3e5c1f5dae798fdb90389131caafdd84508bc940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d5b28faa913499c442206a5e8e4a0f4ef1104de2a7c2c5de9ab8c1ba23f64e5324751c26c6ed0433aaad9609499b309ff0051ce9a839873905a5dbdec4ce1d18b00ccb48b6258a3bfc6e5fd0be0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -22c2c940899b48192af2c4dfa9dad7c7a92c391c52f6ebcda16bc2b14972e2604a9c0cc52a5cc62fdf559bb8420800147d159f016ce5c4f10cda1d892cbe787752bbfca7f289c4b506df4d761380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -17c5761f1f2d80d9a42e2de2d64510c8f8aba87b49a8f8398dbe3dcce7ac8d06ed3a8e27f4f555039e8b1cfab465f9352d8c616f80788dd8bcdb0e69248a87d8e15eca6363942bdfa12330dfe160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8232d26cdf0a272682abceb8aa2c1dd729306bcc95e94441c32bbe5ac99c4e9dc0699257cff7c1f5630a0edc8ac4521eedfcb80cccae3570ff4ad5cc6f470684e718c662df0d7b7587d94f8b21c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d388fdc9a907488e9ccf9c2d443b876404c61c16d67cde9f0bea89ba503e39487d3a232a765669e64026bc0ee1b26209feddd6f482d5edb83c79aa3ff59443213d6c304db2cbf6d1ca42937e8d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 13e865de30a6f8185f9831085a36c90c47145c8975d22baa5581f13fec020a07c82d0df82cd5cd08bd312f563c19628ccec6187520665156c81d54cd78a2294e2b3dd7b6880aa7582a29718669f80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 202b0c892ec4c29d5ebc54a692af434d8baa95c9dd38ee07c87f445d89469253441fcc0905a87ed1573fca424b4b4fe29f95963223417c1f69fdc55522946cc776e86b54862ca811f3975188aa800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2f4a68bf084fb138f9db1fc0b68dd2c47d45ed8e28d083e118fb954341e30a67976cc8b5caf42b8aeeb54a6703360421784e0b2c888ee52a452fc83628e2826d8bca44b03801177349df764d2dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e4e3f0a6fcec71cc6c2573fdc2bccf714c02fbb906f5e1ada510d07e1f868a5bace89f4bf7b4947ebc5bbc7a07654e940380cd2ad2a128858d6157995640939c7f8985a54987e8fc27c106fc2fb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 14f7390d80b0cf7f05b9b515f057d2c6d5aa21e4716cac54d9b7d174412ba1516fda05a8c19ea6381d319435d3f51eafdde14ae16dc4264f058ab564e3286cfee35fd0c9551526538517a6395b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c7d44f4de01579699066ca6f4c435dc1029470bd2a9a5d20d533204bc8b802fb18db491e06956b88b2cb0a5857be6df776f6dc33f19a0a7a4e75141379fe6661c48ef660a01bfad624372f3ed5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f45b05e249216b7055597bf1d608c3b04f12e6c37dc483e271281cd186d7138a2bf746306482debefe2ed07d4c09142b9e67e3284c07abe4a97d87d1e7482c0e9740f0cb87d7734f6a753c84c89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e0e641acadf688457e77c93aaf971743145e8c5a96669e63d707800556fdc344c2595ad7fe9c78e5ea5b08112efdd2e1bb02d0ab47d247cc7cfe5d3276a6840486917f0a9e361e30027459f70fe400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -37937604fb879937a4c5529ffd5202789c7c7f223ddc338cc2b3c082612a13ce1838db3bbf8c71182227bac47810f665d9a60b968d1a1980204965f10f05b3d251bbd7b93ba3996d98be92529695800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 13229bdea1724b5cf7c69af1db9c8578f5a084fda87dfbec47ab2531d713545ccfadfebbcc265f020095bd002bd86429b8d5d5022d2acc7097603938d66448dfc700c5250926eb8fee9d072c43f2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ed861630d1590dadaa79387f70f55d797f0b612a387864dfe2564a6e6741befd024f8c9ea92389b4f88d0b841e0c5a73ee043d15e2adddc3020858a3baa30f7f3f7078cd134f5944b13911f16298000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ff35449d8727d731a693d8a1bfaec12ffa85ecaa23d36a4960b50c36fdee1336b485e37d44023966004d3d21c3ca40d9ba61bbb83b606eccb88fada760da990dd3c02617d7b7261c82e18953ae25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -28b4209172dc81a662726a2266cef47c04accb1dd337ab840856d9723c18104675388ae1f5dd551aa8e83d101647305ee14cbe47d346afe29ec43a0c9dd8f8f65e4a30a8e97aba61ab103cfb58d1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -10693e3636f7c37b958bc5d6ad086137c0e34c4d3dd8c3f8512152266eae6aa310d7f05af55f85411de8a0afd4a994942f1d5467ad7c1d20401c61f7eb0dfdec9e74e95043745d8008f5f3debc45e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e6a9d9d735b63f124bf4bd59ef215a99ada7487ae32b08c96723f227fec1f68c20b61dd0c0628e13c0da6582bddbd97748cf2c088692d14d5cb9c6b6b361e80e7db7bf66f7c5697d195d80090390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4442e35617df3071009fb4d9a7473759107813714b022d026e807f9ec8f5733ea2f491d0a35b2ed7759ead21faeda2801acbe99ef76c0efa114fd7ccf1e93eb97824063d6bb51099195f956f3cbb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 10f32d60e2c46e8749a6d12d553c4fa27db4271187157a1fb8cd65fb9e167461c18d49c4c72656179a1b2ad971113a61cdef05bbfb8bc28f56a764aacefbe5beb5a44c63f1ac544941819bebd4b478000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -21db9339c514b8086cf4592b84b0de19197b1d4df0a53a9cf80485e1008963742092ea1ad55e1b2d206eea116416af394e2383fc8fa100e78e3241981b13cc2bdf979c66f97dadbf944b98bc83a468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bde2e4428cc6ab40df660e1553c2213fecd9e490c9671d1795c5239f4659404d074e84191fb28edfd0f05ec9a58944b980eed805806510f5314ecc75ec561fb71772662b4db7e9251d673b65926760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c24b977db1e32bcf76bb631a3fcb02dcf265e522763335a071f8ec936f5e536c3b882c671c446e61fad2047b339cd60337e7f24529fb862d8df007fe920ecf4f0fd70f421f0bd5c79e1a06dd47000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2e966dec3675c7746a5233ede1340878b271b97ed2b938ca68281fe09e09e173b5fda9bba02a2372a139c4499a86cc9b0c3c2884ba480b22fed620f141241a6beecc60734ef06186d3df9a6c12c87a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -31d972a7bcbae8bbdd35489259e19b3ac8429f69c88dd7c8a73e12e897d8fe6d9881b8593107f5b31275a1255f77f249993a0e136b288114e46f1a9387329d3b345c46f5a1d38a40d46e962dce9b520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3405b06fbce931933ae8761c77c9f435926874d6e117c2bad3846086448ddc84c2f977e9a8ec14069463347278aa723b3c2ca3ccd89ec8b7bb7c6305f5a6229a7c9695a4d667aa3884fc6d22c2a8580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5d27a9c302d549fb9074e6e5dc099974f2ad29f62629de79df71314123b00d965b56f298d466a3074ca3f57e9e0b0230a12e31be008b46bfa5e2b1521fc700402c9aff59c18e07180a4171788179180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1b36193b04942306cbb5629460966e6ef97b242ee90636e43502892ec0fab6bd42629e8ea9be6592d3f3a8fc4e95d89a0d33f64fb4ae3c84b85bce9ec99c60771b6ea9972714aa178927c7a31e69ef00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2b97d2eb83b9ceb48e07b336a276a9b71c2c2a4858cca60aa329afbbeef222acce1ac99de226e9f532109a0354cf15f64aec6995b4d824c856c0da28dfc5a00800ee7bd08535b8b8f4fa02a09c363280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -792b77866e775b0a128f378746472750b8b59077aed5b750eafa91421d83bcb17013c214b867d6b2394a0f7dedb9b07f4ddca7470ab43c1b3bb1d018db63d265085485b526ffc47a32eba5e277698300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -85ab2e39d5d92fb5df765662cdb3f37d1acf0534c1be067cab46404f97ed1f9b6a365d823743b2ded1aa8bf8e8291af6624c6a043a3526a8e1f0e5b8099afd355b4bcfc857d8d7846277256fe240c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -21b41187b815c1ebafdc5c08ebd919541f261612553818ffa2c854bf48792ca3db31020e8b685e7f5be75e74be2dcc8bf350d2b524c38a987a7d317a9f0ea41736d23724dea2f40b795b71c4285c98c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3128cd486a1c10d663ee9f3d51afcd123368372a39ce725792034c52462dcb0df2408c12285ce01a94be169843e1f797060f658c58e09b06b02fc3a20b4db597c7d3e3fc6680cf2f029b9a295f11c0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d28d32af6d81cbaec4ed1974ff2e6dd1088521821e8b5e104a4635cc4ae2879829cbc089e41f25638c138521a995b487255b36e8a785d758a8926d94972e722fa5b8e47c694e82662906003893a78400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -be5423e477e82ac78260175ecc97bf62e1decc141fefd8f54cfc7bb92fb2936b212c72c17714880ac7395c729b58eb2e77d207d68299b7bb0e930c4625de0524d6fd49672e8b5aef5a52905a812ad2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = fef7c0db96c5fce2e1e68d93ba14cb1fdde3d10aac3bab3ea3799c306a072828dc19129a9b59abd36e19e8378108bd59e12e51d877315e89d7e8ab2ad69caf763b679d3dc62fee69e5263b9cef2612000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d2b961de879e2afa8369124704c0c4e4082aa1bd49549c8210e392290c476d84b64fbc35abb96ba897f17f33a7715cfe5cfc22ba9df656dcfe872bbf78fc64b2ea2306a79e81bc4d640bcfb17dfeb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ce0ffdb7b7ec9e1d3c7290f31d0337c7a199552114b01156245cc220cbbf3964d87889b011b71108e56bf277be9e425d2cc3ed43c2a7f8b0d1d68151b4cd7db3ca3dc2fcaf3db161410ea29a985a79a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9535f2a54115d68737b7f3021f13c14e26b024dcb3f4407f5b3c4009111b9f3cf77ec4fbbba0beb595630181462a058c76797008fe2af157447a9177746f88809b238deacebb83146b0c2327aa4abd3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9c946fdb992e3cec54a0e347d9925b5e09739702f9e3e7016c940a34ef4f241f188a2d81f0a6dd26cc3eb318f7a15c787c40cde74d9cbc189230178bee0b5f8785def78a8c64ff338ec94f7f70e428c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 26bbbfb4ab38eea78671c873bd532a8194c330d2ba42bfd9dd05af562c6164c85f174efd85e0dfb7e0101c4dadcabfe76df613f15888a011cc83502d6d52cda2fe03900616c937989509a15395e79e9e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6990a3fe643a595328a3f093d83db2df0e1ed61b52eaa561429ab30190a74e017bd151bfc78850ed96537319ef7c35d9015609f1c7098c5c00d85ff2e787869cab03b621fc6082ec45245135bfa6342c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6e67e3b592853a21cf0dd2396a4744cd6717be2fded175bcd3d6bd6a19566cfd73a10b406f8031a77158fdc6e7b897555ffd4df47c0bfd86eb17c39225664aa6c8729c9ad7558761a3e38b2a5d102224000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -10bad5333a970bea11265908344b71a33d0a04df6cc98e7f73baae5b45d19f05b563a2e104d6b11b7fc695470c64891c4c9bf78cbe0286d48eb81ca6723760809ac615224c9f51d9f21b012fa7b291610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -185f7ecadd8650caf3cd254e4c24f543e89709dabdb83ace62a52e085de34c8b1df15e84f4cf4915b15341d23cc2ccd2565af4d339633dc2d7ec072c5a66d89b01fada5cbca94a05285a2ee899f817320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a44b2ef73b6f073ba33a1a3f01deb6f2d1d933dbce7808563de6114dc75855f6743fe5a36ef6762c9a19857ae34dd8363abaad02600ecdfe718c96ab977d317b0bda73ca96e6786dd2510121dae5ec730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1c59f51f2ee75e54591cf6d073af0a963bea3fc7422f10a3b108a182bd58bdf645c6e332509a67ccdf831edfe7782cb677a9acb605c54c2e1313768e469f2103bc5a1213d24af3be77e4189f175b59550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -379e8db19b3e55a2b32b836eec8197aa9fca066e9c117b96462cdb696624a45a0bf3466f731dfc905ebec1f29ce1e6db78072b0aea46d6388ed04772d19465317106a69ecfc12034f664dcedbcbd6f6980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2566d2226793aa39782152c5dbe7ffe93044de9aef633ce53396a2753a242788ed13b8da4b9dd386f8c02fdda25d3c873dc3eddaf80f9cba14a246e03771eeba3e71732d910b10fcc49e205c7e272f9b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6c095e16fa70cb7fb22c83d9b3e244d4597a57675a912c597862e2dfa99f0c734b0470a7328ae471c94684ef50d9f956b2994d545ee6119e93727479c3dd0382a3588335e60651f23a904b58b0b799d680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5712fc0285df85818f5f3e471ee947ef323d0a205a17aee7a635d85f57083120ea6d18e445ec5e62798850bcc9916086c1095272300aecec9b40a85d0644b756d7b7abbe3edc26fc00b2629c14cccd97c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -37035ab793c6db81a0ae052363a74935ded723c4168689b9ba489893ad9b4ced10f94a8b44500e5898fcc63242cea815561414816d597ee2e44ec23971482a2ae0d412487d55da562a3c7cb910c3b5f7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -da79ab3687e8a0f4dd528248b29bf6f7ceb0b9b8cdec8ed52a2d65616adda74891f6552370603eff5511ff2cd0bf73f0a5b05122eeab87dae9a56548d54cb0f9dae23592101338289b086fd99a06c95800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f703e850bd65d424a71cbb505c6853b3807202a9d4aafca93f43dd0a548fce74dabead8e16b6caae497ffbea197be7c36ee41594704676df87aaf1f9a1e9e73485ae51b564cd777a7650358041b37278300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8bd396e41f00ebf645dd0454e27bbaaefb383745cdd1e2684baefea51665b2370b8203a9c4d02df17c4e526304879e24665c2ce38aa183d6a28e606f5d916407010552c4f936fa0cb7ebfa6f4ce4cb1e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ca605573d4e309932959a4bf016b7d9eead1e12a0c215ce79dd2179d3b5894c919c4ca54c58e5f6fc39512568dfd72ca6add39ebb48bb0e9da9902bbcd3569e971f2421b70927877df16f6c27cd0f977200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -191397fbb1deaf5a36ae3445037f3ca7a603ab612e9d54b1ebe1b4db4a3948f478fda87eb80cfcf52495485b4a16fb73f9734be9ed772aa9e3c63dfc5367f64324611db0f1b776b3b0b3471239d28d93400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3cba1c4359d2356fad4b4614e12885917c0d9603425c131ec4c90a98f35f1b441ee1d1bba81726a7d42b2170ff570afbacac20413b9b4ae17784b886fca8d42c9fe3e5850543cab015c1bf7528ad76f91c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 64e5603de6308091cdb0f3d46d2f6b8d8837eae94a2c0fbb236737b9b105a906919fadb6f6089d557fbcc44afe2260f4b9ac95343e15019cacc5a66b3e6bf394da26a6cf72b23c9dc8cf82bf92fb29361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b274a8a39d493d0ed601635a17cdef58f393b5e43bcfdb4e3100e02e5a48e5a7b2a6db122c789f42b624b1ba43b1849721f806fbf1add3647c37c9147a90e2a923a71bbb0fa378f5f16f6f6d5dc79a2c3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3751156368e1ba83bd6b7899c77caf76dc9583a443efa41465ec9cdc406bdbcb58af4ce17cd1f4ee8bfa8804f0273a724c15d81ed5520f610b111ff6e38e57d785c6320397f2edb80fda894a65a65c64ae800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -828888dd3b05421dea8c5d4d626b851579391d5427e6304eddf3a30f4cbb86ec74ac0079087124216413796ecc318e50edec9d324fc211a92ed8729cf870c610ccfdd3eec1d29a199badf5221b5e11fab5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9e403f804b0e396f368bea2c591b169cf72145fdbfe88613e0a3e2745e373491522672ddf1d4201db227f2e42cf46646b5732274e7f5b3610377b8cdc8cacfa31f924f69863ae1ac9051584558b5b7ae64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -28375812360a88cadb4dc6f83658c12b60ee4ffaf73661f7b8d8a295332d53449f48725d3f7ea5f5716380c5bd4eefdf8f1d90d57f7580d2060d73b5eee53bfe73a5238a9a8d769dae166f9ade9d29fac0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -79a3862c72d914c6eebdd05cb8382a1e2d004b7b716019898a059727b47321fcb1e8ac62a2648f747d0634389268e3bc3396a45663e77ecded8c789bdbc72baa30e7f61f460bd4badab01d662ddd709bfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a053126b1b8dab9c3c6cf9b8b01228afc4fa98803c54660b79f5973756b26807d0a1a3dde6048696b34fdf5b048fe1e965a3e9c8376808e6e822407c1b45be9becc488566c9208404d173b50c3d5a1e5f90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3d68e79b16ea874a903970fd2c710fb49949a8bd05b95ff894adc4684d0f596fa1565b9a15b8258d08222bf62c2fa8d5505758e1d4da8b8e41263ac87fed3d45fa7658fc54916469c9cbf0bbf6799622a08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 11cfbbfb43f5acc5e0c87bd2ba8ec451ea3cd56e2e372f97f0d67c964db090a16e7990b1bc431cd04b5ac6e07212683195934f4f2e6edab76a22e827fdcc955943b3e0cbea9086df28bb4184301baa999b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 4697db048ab018af7d8ce18c422d72c2567bcbb693254da74ee6889402eb34f724087932fdf1168bf67e2685285a775c6159c681a5b82c56fc252e3c54cf7b2630b44495f13af95baa9d610200b20902f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -40ebd3f5348c1bb02ef98cdb234df81624363f99265b0846a5a3a2662e68a6901418577f7bc0bce001c766aabdd0740ae7a86c245349f7ab580f41305c937dee585885feb7423a6450fd8869218844625730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d23c2cb72542c48ce2fb62f0fe7c19981f14fc640b5425462ba6ee8d35cd6c60f7a1248b491d1ac5012bffd10c37fb0c376283d3a6f4e4466e0cea765af64ad21035a9e08a00ad8f167a59928f9477193e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e3e98d7423da28418d0b4c8ea3993ef568b07ffd67e9b7f5bd7ccfd4cd15feabab7cff7b81bcb53d69623deda7aad2a79f50bcc4cbe766af568a79031a653c0b5dcdc2687d1679433dbc253c2e2497f0a380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6dce81921e119d0d2357a311a593e5a161157e6f40ab944f54829acffd7bafda4b96a4dce256cbea5a43a668795662e0055b64020b23a468023bdc6721c8c14a9fd56f141fc5631a91c7b7a153b27378740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6e7254ec6f83d8c0001ad3087207a8335d8c7471eae26a73ad67ad4b1e35df2dc6218d492d00809840f72e63a3d6dad89ad9856258c097e0f64d47e23eec6bc58e978154dbd56c4ba19341ec48da43d2cb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a310ea78595b5cd7a1667799baab3a13cd97b89e38dea707c5063676962a2ee856a105926bcd7fda6e82853b08a7de9cd0aa0e42c70ec36507b2d87b43dfc8e2dd7ba4a4ed6873f24228136f0220bce21540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ba063c376d3fb9a8c5622bac9cc708aa17d37a40c93ab5355f773af7d738150cf8349af1d92e7c06fd5a855f3fb759a249f6d44cb20cec6d560734ed6d92c1090b62e5461463598f30cf576c04c8a27845600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b0d4b4292a72cd5b0fd111548f9357323564f09d3c7cefc4f887a610d57212f4130d63a81fa447d53c01a81c6efd85d808407662cd8ecaeec7170ffdaf7a176e9639d62145be96c847f96a72df7ce6ad0fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -deedc3cc5887bf96bbe49cf236491f2f72c9a8424e786b428b9206ee2c33d7edff931c0f999b51416970d342dce77af955bfd325442d71ca7c928abf860f5587e299ff5d1c68250a2f65a60a05f6f1eb3eaf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39f51e067769458934424f33a66d7db94c63d35a24b9090a79f6caf77cb62d8f1146f65b30ab935bc11c8d0e4b74337fafd6770889fb4647796e4ca955f346be8a30c1f1dc8f0acdab3d2a6db4ffb759b5c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2a8ab41f26a008f282f2c5c56b704f9f6c942941744af4e5ceac569696e5b2e893478abc1b4a8ee5e45862fd9b011b1207fa7b3c979a2c5d9bf8aa33042c9d5131d99952b6d231e03ccd10058b3d7c284afcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 11b3f99421e7ef1c7dc0a0ac3c76b7abd3d8264a328c93fc8e094eb1269b52a61b7dbb33c6b5474c2d09ce5243ffc37fd2a96277b7f4384f532d66b4040a077d015699971325af009e7b7a52afb9eafac1ada00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -307b3c24701d4c961af6ebf4c70d63e47d5a53892abbe342c63983121037e26fa6057ec15e9186c632b68fe5e4a1cf9b34c3509bcb15d05377aa9c72b5c0a21df98a19167b709d53008cdd50796aca21b68f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -80ddf4e00403a985e318c85646be7eac53c18be0c0d721e1cd8fd2990294c672277a587b77841e3097ee15a0bfa18de411b61e7b902645b04e5f0b0693479f308f5716fa173dd98cbe52758b57f07f9f7f2e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3878a3daad859d44d3bbc10bc8bdbc4306acd319a78892e5b3e9630c2dd9d0e8bb23d8c4cc39be4815f269743e84f455456651af163933b644f655c4bb1356560447a0db6a99f358724631a0d5992b867f785800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1214456e8d4e7ef6881d6b38a1eeb3ec3d08aab51dc41aa3cc0001cdfa232c966a572bd91999efd53979d7049e1554ef1b9676fadaa12a3262d10a774e9e726021ca9062fefa916fdff7af968f3bf8110ed10800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e1a0484b318c7c9061eb3ba3eaf1018e6c7b5cb6b022d6ed1aa3cb40b4b3b76104a0e259a3cc23d3fd65dd46f42ccc987b75eabecc99adb47daf04f127b749b7072f2d793c855f84c186ec46bc7b94949daad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d61b57b0b5b7a23f7e98b0300bd49690f45b4570aa52b426d08aa7ca3ac0271b6569b7baa36120eaf4c85b33e53e1640359f8ce92e23fdc0aba467349f69cee0b981c7922787935648f0c304a17131bef8063000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 354177d72d8ed98a3b5ce83e8cb3270344b0d6678850a67faf400adbd1313ec269f11683f99636b5389ba017865d07a82962bf4da03d6efbd7cd0b32bd9fe5de9e84dd28451e75548f0f199eb418c07dd111ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1c869ff580cabf37d1ae8c053c6d08b06be8813238043d658bb7fab7bba49cec186b59a2b2fa3f5bdb6bf1753a600f2e2fcccb6118eb1da860b93f9cb393bf4398013df0f18c9ee09fd91a4e5e7bc527b4b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -aeadf7ecaeba086bb211f9b8d6d974540e32b89dde3365515753d219fa2268f904860ff6f8c2c21b4a0da726916897a39dd22a41d41b0bd7f9ddefd4f554ac6848b7ebd76fb22db55c882a778cbd62c2bca064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 91aa466bfcf5fe847c06caf54ae43517d3c8368717040e73e7afea78a13b813aa19c022fb373b324f0a8bd85f635ff00918be0581a765ebd545804cef47f1c74aaa89db7a797a0527e4b002d8dbad3ccf1ffc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 110b5b15ae60fccfdff6d14371d7885c62b9549d6d9f1538cb372385e5c84144ecf70715d59336539ab6ef1523bd12838a66c06b8d56340ae708aef8db89819612a4996192816f05338bb5f9ad0d307deb08410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2d965ad7368c742f34d5895c745f0b53c6c328c781ea59584b10b796d4a797f85bee3532e8e1180eb93d85bb7f499daf460863dc89ac4c48cf85eff336007a0fa2c44946076a2b9d0835c1661398df5e62938d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -99a3ac5f2416154846591aee992f5fe9babd3d95046b40c8fa74588efe2e45999362554315b1cbd555b14c2c0944f8f9edcf17744379d8e179b36696e3ac335538a233851ed473a2b85a491681e5b016346c240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12af32d95e207d78e0f7b180f19e12bf0e3c142c4143cfa778444b3761579fc5ccd0611dd22071608a7ba0bd4909786ec9852910beb196405e7249af80119103b30d8b3ac66260f3ddbf3151ccac6a902d15a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2fad99f0b65a4b04f04638538c27dd7f9f9d53d727b7438976a235e22e87063c30c896d518c5fa6c28d203772dd2761dbfd9a5c3b9643689e248ac9c7ed0abb5b4ebb5e4359b3c6239d89bd076efbb678438b980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 33c4b7a3127227bf3b9309f319691a44388bb5b0c87cd3e6132f8a28d96494d80ded5dc334a1a3424c87cabcf0656f2456691dab1ea2057100c04b974d78aefa6c3bf64b0ad7874534a2562a3cb5120ee9ae9b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6d4cd50c28e62be4e4b27103a4d87f0c45db31edfe07c99d8b54c78540bd7e47d14bb5aba2ff24da6b50aef0f140aa4f98a78c4360b609d3f95e5cb82585bf1946dbc6041df4c8752c491a0339afe2e9a9dbf180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a913c8f79a3bc4ac8df5f316e08644e0585844190b6752b7186b2dfb9d329713213f9a9447d25a8314aca96207f1ad9b13192443aa2262e7a2befcc0d965a1c3f7e22f76f54d7cc04a6a8027a68e8e76e0b4cb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = bff09a4b84f8a4594582a6addde20fe529f15d62fec6da61b25832f881c938845bd3a43227fff06fae64b09e11579fd326dd558b48c506efec35600f37cf6a00d6c60b11f533b347759eb2aac3955c891c16c480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1587288533ef6e089c2376f8d2031e4224bc787be4706a1c851e138571ec4935529d05b861af5b9cdb8856c0c16841b2ad6a10a496039371debbf5032a3c108ec0caf5259b7512a5c35399967527565d89a6fcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 65b42eac4aa8a9a0b572918a6e0a45dc8a61f48ec97674c0cc9c183bed2849bbbbe5380fc7751ea3c1aeb1dfc1f58a537b32e24db65a6c3d6594845dffb4190bf0e717329396e2807bca2fcaa7f86693a5105bf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6773409a5cfac5d1486639c18ddb9bf5f6682fd05a71bd18f42f51956cae3a719ed94300d92c69f69ba0573be5bf5d26dc80284abf080b13ceebfdcb198fe936e1d52ce7523082af0c56a2caa02dc35942cc3c700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1ea9106601ce432ed996404ebd1eb14da09fd7997050a11ae40c9b9e785dfc2e7bec6b0fbbc5fa5452bc51e5a1af6b16183950a624c35a00b561469826370457c33eebb1378ad406aa15cfc8a6654ddf844a6ebe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -102f0ad55a93f9cecbaa4baa81fb0a32f725ebf442f215368a96b3d9cbaf4c601950b6f86aa869f7be48cbfdcf29efddd6049ee197acb0433315dfa501b8c1bec1fc33d841c2ff3761945d2143601ef81bed126200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 50fb25fa83450783f62633e986bf0bdad3e30e1647f8b6aad52d91ee8b6abe6fb5842d67e2600fcfac461337e7396dfe3f265f5385840c1d2ee81ae91a594360cf13ddc6faf24ed8dd5341ecbaeaed687ab7dc7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 49844a18c4577c8075c99da0a7f5fdc7c8cab48fc45ed3afc12560fc49b18dfab7cd8007879bc04d8d5f1adc03ac033aae23889ac82f6550e6510d85123c564a57ad67d85dca126564315b952b3562a26fa43d5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3d8fb635d8cac518d62b0dc3a3397147a0ecdcdd7d9dfb6fe645719518f2ca13c776d99d10218b11ef2ba0e386e43fac0370f929ddc397af82bb9d5fb911817a3ad00060b16183fd3fed19a126ca2623bf19605e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -374e7608fdb77d47042ade7b7548befdd0e73207a76225b9be53534ee66f9883abe58798813d708f28e20f466feff1824840db2bb639b2e3865dd81780594f89fa6c97882b6e39b6616387af7e471da06a6fa087800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = eae308dc8a82057c2b71873c06a67910b9aefffd71fd9ccede1ace519a841f23af579e137ff244b53cc2e1c5229a4499f507666507d63dfb0beed8e3e5dc8d4381ee72ad0ab08e95e9e7c214037efc4e3dbde8a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8253a4167b81311ecb3ae4b5ba35e93d942b1d4b85633ae7be722d82a43337798a6fba82c4ada7dcd0e25e642bd317307a7ebac393692e2542bcc399045221ba4203d382685911a674aff9e9d7573819f5690c7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3329c13e0e73df5f4ca0e22bc7ebd9698cb33aab9df94c4e025dafd1f278c7c44b5def53fcd1c7b164ca977f027903ce88c77169b7b9d5392781be85c8da65417e733c7b4c84bcd01c923560f079fb35d8573472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2e301315fdba8e093dfcc7a39d2405ab730ca6a8e066037dc0ccb837e9447a08070774090f60cfcde7729a3b896a9dfb2ef852fc6ffc859b82ee4fa2120d1a04157742b8157191830ab93c72d9d6b4afafac5c7a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bb351879413ecd24b6654d316043873190dbf8b93fee6ac48882039785339f84854e0fd681ff93cd6305115e565b5bda7d0d7dd3f84b687bf7342d14daf2c516abfb9a2b8cf2d0c0588bb405710e93bfe5a535c8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 529d126927175d3effad599a0fd559c60317d3033b3cc7900835bfad69815aa7bbc40cf5857f3008854ea4782147dd4bdb1eca386bff45615e251ef86fd339f8e8913d9d8ce5e91a46f3f5145bf4d0d1c3e622f2c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -13f9b067e97d571024ecc1fdd02cbb130e6886c27d23dcda086c15c8b03168d0b9442a882112cf0aa84462886686e056754f448997211fca2817259397c688d1d410e31ed4131328a5609e57a86f84263955dda030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 94803c8a8df3568c1cd0c4b7616d35769e4384520c43e27dd715e8cec0cfd350054fdd2b67fa430c306affb389c370445eb2274cc8c903a9c0408af597042432fcf486be7b5bb458ef58449cdc8409481b79a4b48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7e7d19558051775a4133aed906444dc1ad43c21518c3e5fb841e6130b23dc243d48607ad2f123a67c0ccc5d9698cabe99ad9ada5e000810b22d9004e9bd8470ebe5ee605cb7e4eaa10f6528d2ab24c05940c252ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f008dc714f610e3c907d801db659b375a37abdd6ce9c109d91cc34d72cb3a987b7ac5c81f9bc3361d3ee7e0a535bc3306027309bc14d811e96f48c2f4d56d3afba5f0b59faa66fe77764c1c2efab387b8c394539b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = c57b0ae60f9ec4495d604d5296620f6d80614fdc663c4c52243ef1ab18335fe608d0e451eea7bebf4d1b0003b3e4303e746256883bc083ab11b61b1721fc92889cdb15b5a8792ab0f56cb9bf2d8483b89fb6a7d2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -35e3bc3edeb83b9d3beda50cd864ec20d7d7fccb09b60dad372618cfe32eba29d39d32c7cb4601514b69a91e72bc9a188da89a3d4b32a6a57785b2ef948d4660a8d893f05d42768e1dabf76a094d437c8343b868d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2473e2102550c6567f14544713548c0c13c9dce7abeabd9a3d716a32f89eb17ec7c26bafc08b4e8ff474080816e66810c03405a158063cc03a9d4e6e78b83f8ab535fad271a0f7fd98efc5e892dd7a22da741bfb940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -356491ff28c5d88e3380266e7d9a87cd8df8bfa0523f58b57d423a7d596133874a3b4f886032d6710a0eb83450b3bd7ef76c94c11ee449eeabc195c04e853741534acd6739d4b16ac0f1144819dcfa4a0718fd46940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bb66b6105d5d905e38c36c20b4491df8c7df639ab7c66c12a84bb36fed7c32798488c30ebe1352d05d2e76793c4a64dc5f0dffc431fdf17dd2e5354683f66a39576e0ac0d92d3bc88c493f303e2bb9ea11427608480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -28ea7c3fbdc2457f5cb61932b552ae30f65d33ff182717f39878ccd598f6c70dc74d07cbe22ed6851c66eba682fe25b8b23077aca392c00be8a24eb7d3ff8588a27f2011a0c09ca7aff8c2a5c62f133cb0f6ba101400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 47678704967d48a8d5d4538ba077df1f2cd9c17d69cb68fc6fbdcdeb13b07385b5e9c2848006783f4181bf937ee55307f52f95733d3a9a41874938f3b1d831b7dd2a2ee46fe3a05d93734c8b610e3b9ed18856bd9f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8090b3a39e6299bd75518848de71e35bb06b8250d2c76487728e4a55d35ebe13a1c790650f741ed237d01bd9409e9711d086d18ca73a3965a57aaf407263e6ab21616e8ca559207c932db832ecf35eb87b1efbbb8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -52620f6c2f8732b8fd31982c85a51a125c272213fe6e347d9287bcd152f5b3021bdd5689ee44f3d246af8924ae51fd48aab32769547d23d2c109ce12bbd45ebd109d907a7563c03580c47913ddaa8b0b8d7dd4235a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -30b1d15e13d4d5bd887bb4d9434689cca544d9bd1e8a0628407161b61e85ac8fd31aeeaa9d60774ca786724d361aa1a3affecb7560588ef7b1c53b7cbc7cfa1faffb3d00fe8e2d544590c0108bb6448bd35287ecd4a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4d70e8a340f5d398dafed2952b8cf73a86b57b7b32f799e94197c494ef73e589d82d4de60eef15244e436eb6cdcfc3e5917b9b7e90fc6bede1be13cce11b9cd48d50f787375eba58ac358394919e59b14890db3865000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2922d6938b75653b211264c5ea010e01b4fa9d439996564952e4b9009265354a6cfce5a108e4c30ade296cb66d927399194308288353c099d43e7291b1ef61b5d8563d3ce71624d93730b2858a803f3e489e2b7138000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b9676e2ff418f0a52a61db6af59c2c917a4736c9a47ebc85de4d23650d8d0a3e805aa3c040b8a83fc0b3381306fa44fb81af687b42643210414b31d7ce1ab72a778a7fab27b2f6b57e2d0d1948e395aadb15617c6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8e79b30ecdb9ff276887f4601ad7acfba372a3224f19175a383e13725393473fe135bdc668991bf0a51c1babdb4de04a79acaa62ed771231f4330375657d5f64db5ed8f6dcc41664ff4b071fc557e4e40168c9ff71800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5d12700486f5bf33b09070aa2293120dbce01dff1938746dd44263488eaa284cbb0d8f5ae7bd322cdd4d8f459df5a2162ae237a2355cb35dcf2011f60ad2a058b6e52c16438dd49809992ee492462f88bdc14637ef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1b8fafab62e79a2fcb14741ab3f69b93d22e36c6c7a7c30d0ef28340af3f3e3b3b3f7f5830fb9dde221ef228e83e0296c8ff209155b765e758dd238becfe9b7b6efe5dcb7fb336f33ca2cc469d63e32be77b261ca60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 373d78eaa714205d05e8d1cb92328ea8c989feb89b5a91d5610329bdd55caa3855b5e599bd8b449cf657e9a9648dd4e96ee23f924e2c438cf815d8381da79693211a6572c852a40c9f4ea093415f8294ac2b1be5a4e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2553f6c075ba9ab1a29bd193b90b1082ac12fccf0a820cd4a1c9c64cb33046c9096aab72a32323ab1fadd2793ba1489747142ecab4e1a6d057aeed6538c830a0c6fe4835df9f8c1e8e4008c940346d9ab2ba41b810c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d9a29f96534062ffe0b0eef5e88d906dc12ee95e07836d4a9668aeb0ba6fabcf4d35140e6f750777cee01a8b2a2730d2f064b0163d21ccbcc156e2be71a43d741731f77159ee1069ccb4e5d005adec2468eaf4a0718000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bf8d532307236739a10ee6183d5b146fc85c52cb0c9b73b966608cad0fa6f6c38bfa3d89f95bc36446cbd1212bee4d8cbd48210ffd64602986fb911a30afe88c6f503e4720268d312b295ecc317acfa1f2fea6d5d638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3bbfd53592b98b09851d00156e044a6ffa7b6d8d2db884c542650ec7920972906892370f1ecfee76a54133b1916375977b324d5e58badaac5eb2ae1f30d37ada4ecbc0a417ab7cbcb5f9c3a33ddd5e517a23b515fee8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2dde93139f4428e2d8223ba88c5c8d58f3b87c67b816ac6bc9381088d07a34a7bb1a7bb2446d346683d1e92cb833d3f4283a3a8a4086130eba056996374bd737dc7e6cd02cd6b1862d45cc84f00cc665e209f86148180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6aa7efccd5de6028042968dea5438dafc98ad5769dbe38e4e837bf76342b060056a7b80d2d38364fd34849b755bc9d0378d8e3b981e30c3bc06f523124c17196fed96833e20ccf7a7974ff47cf593f39fdbea8829bcd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6e9a9c3b31623a0b692ffdd15edadd959a6e5ce060e032c40cea3e3f961d09b4dd197d67653de83fa01b829655b1187e25f44273610698f4479fad75d061fcc036dad02490aadb64465c3de8580f30ee78d6ed7c67d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 7394cd7462e9509d6a8fce359ee763e9e385c838a6b16cd770e9bb80ba418cf86ec7b6c9f4c9cc1315937f2716994469d0b196eff78d7a123788b621d21410183fe45574d9269d6c89536e4b59ca0438f13a6378762e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1dd24834865964b50cf58dcd5cf46c098b384a9b6028eeb956a8a443ad43a14828c7c92676e6f7ef63c4c5f2cc8f99e4062230c8652ad9092ec2504681164af2d1432b354177e71bc184e6b8522c99f515787b305ebd20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 16507f631d982ec900df349e020d3f9e57475455e7716a2f6f2dc484d3b6e1d61b33696aae2ae3f994bb5f36d9e2fe1f73b5d8230cc9d03a3db994a5518fdd6f4ceb160d2c32e7d10ed9a0c0d7604430e95c0fc9c89cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6aaa1c5dcfff985d9def276f56d0c9ad406614469ef5bc4c73a2f233fab44442309aaecbb3764e3ddf35d7cbfa5f526cbbe9b5100728e169821f9ba5ebd0270bfa92f80e9d28067a7d5d67fc911aeb2810e3434d072580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -138881bae54de0424acd0559ff2e63bf4b859f88968ef50543135f7b8376dbcdc928f55673b83bfd266bcb6561de1d8996a83f50202ecc49b3e6efea55a469eb6fa7db11565200022c0471b8e3da7553327590a581ea200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -249a13ac09651f7de34e6a8a302fb588e921cb105529a36df666348a66dbc98294b4d6b46835fb70b4db277b79113f686734c9c0d5a9da9da5bcccb18fec120734bc5d3a4f104985778aca40601ced9e4ace98ba9859480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -be98cac1edcf987cd441d237edc4daf1b57c9f1b50e011be93330846275cc5d26f215f37b58be75b9bdbdf440eb399907393dd7c1e8cc42e1647255bcd9b7034053e561156d55781169aa94d72d633dba26fe25a1796900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2f7484b05f2414dd9e210ef92271c316e07a18eaa419d4c7bd6cb90fa20d300a4dae75c3a6639a2301d6f0b6562f2c1cd68990689221d825a3f602ab478c99d35bd603ac759aecac16686e54d6ede79e2547e85fe426d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -245c9e8c1d735f3715411b60098140bab483be2ad048383a09d1f014d6c2d57acb490653bfcccde001ba89eb6a865f711034562359243c7250d01791cec395d63f51193f76b34f81c5ad5385de9b03cf180a9857d5cd6600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2b95d2f3d3d1a53a05453c9a0911320cb2c9ea97df2c36534aef2b26e3b4356432213edeaf6b36e2aeb98fd7d18171a76bf57bb9a652b03574ef853eab3a5b6b4e454519f547b3c914720b4d6bba242b23c16ee105500600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e3d475821180f325b500839b0aa4977ce46dc38aedd987a6abc0617d749497fe482e7897f221c9d0412ff86c5bd8ed44e7f65565e1f8be94f4d0ee3642ac6fdfa919f786f28961df56569c96beaf66f5e682df6c10e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ce135c130d080b81953876c1d1358c002692f7c1cbb6fadc13478f54372e37050cb1e7adbeede5577b03d0677131703e916288a17c55f9e0734bbc1556b46a1c41bddfe1af201f55796187624372a2484106c1d222443400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 13ddc817e8da56185590f0595ceb1c17bd0529db635decc778616444a37b6bd6505659b4c5f13791427606d5d48a2cc8a7b1f3fc826e79995f68a00073b239875c7e07dff950f5d0b957aceccd8f3daf529faa554d51c5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4c120d967912b508ddf362911588a0e2f20a1dbe6c775d6e85e53eebc3c82e7b00155828d1762acecd3f7b61101c2130b26cbf87f25592e0e72c18665469fc77b986ac29dbb43c73cf385221c5f1100b73d5826705ce800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bf87d80ecfa743e30ad71c2b4bd5b9f30ef99fd92d7bd8697e13de0f7bd9020cb1d793005824b858912f9446c91d840a5b069f5643ac1a3cfe0e9d6015d62a763ce2dc5801800d11c5b5f9b0315fd13d0f766d61714bd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8359c0a16a774aa758706606f1a757e327a8b7c6245926518773108ff49f99327168cb77efeda7a5e6e5daa20bb6a2bdc2475645f00b0d55edd9f640a4567bea32f7078879e0e5f6c7742d712036129fd1f59ad1ba2319000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1af1170f831b1d6df1d541930d4722cb5acff2aab852ee65d8fbfb41f405a51bc53923c7e9d23e90653750b23ae57f72a860bebb62885271d366a09b1e276552725b7714d1766d7256d281954583ffe88d261c44883703e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6cbff5902b5e3a9d27eaaca0b5c6e3f0a109d52e6e03f4bded3bbd90a3c9863a24077540e08c1d6fcce57b8c959de5ce6b9e8ab6b2669a7161f692f641be469b78f5eeaacff0c483818290a38bfe4b56fda79058f3abdc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 58ab783f2626df3b6b5ea8905be02d0dc399dd94070ee8f78e1f60a9206b8ffdc0e7aad2ef2743c98e5130cd06ab42420256042c71268e0276c0ca236968fec3ea157a0b62ee413f741fbe1e92d01c7577553406c063fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39705b212d6825490e688cf40882909d44ab287fbc4a68aa65693caa41817788e125df8551e314572576eb11f394b1a4454a13b19ed94400d844792f8e8477ed5494c86b4e4116169ebc56b156bfceea0ef9224cc5a8cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -15e7d0eaeae0d84ea497197b475e3409f19d921ca5a62634bf91f844bad33db1f6adea5ac767bc138497c5e4cdb370764ea20e5de01e4ab757fb6c060b21d830415bca22b31fdab4f28db89c174336cfab15489b11ca18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4b9fee61cd0edfdbe38fa31364ea859a39958cc0e273eac31d350b341006b26766bbe69396b3d71f73c059308fc8c7baaffd8caee7a44cec6b97555ca969e3a1165950af4aba5a119b584837577962e491166fea5f18328000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ac58036e4d17768d24e52e49cbfd1d3a909368306586d302cc5b1358a5ef45d7747293f6b37b847431b7344af2fe5487d5344630179ac9a77a3334e91e472bbc73fbf25dd1ebe0d50d2f024ec4a9d02d18868fedbb8de2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5d1b1996e0a9982609e92443e310f198b04bd7c50fd06c0d81d232ccddb97b2ce7a0f280a5803dfc9a71fc3588b76aaba221d49438e499ae9ca12d6eb390014d3ce471ad0b6f54c80057da114b100b56a08fe97233904c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1abb0c7b0b7782edcca259569d18baa90a60730e526ffd73d1ba61a8894cf6d98754ae47f633c0816bca7e6eb6507e13b5bbacd3ab5012f226403bfdc651375b7fbb196673be84799032adb9496df0605cb0121d0e2220880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -36c704039a22cd123acb30f3c65c7a02460496bc2a0c074a62f0ed8d8ebe49841b00344e9ba0176237cd8f7678f75f9f0fe538e9aa3292957b6f5861a89469e77ee873509b44545462fc7cc3b3377ab9721b89ba845105460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -97ae9f7662b66e3787879fd436f7bd3491256a4d5c770ef771a7d879f54316ece26708d6b32f11d2a582a84a0e7697704affd505c72cbe17134a8f764fb3ee784e84560d61a7e32f8615c5d4f816c5a1c84eef4aebb8f7b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2692b9dea6f4699c2241b8b9785d1d91b23cb94029578be122ebead429633e8cf3d31a024a19688070f1508bbfe6c45fbcaa40f28e4f195bf1430a9958c210dd707f66fea0128807eb6a5189a60901091c7e306af3d13e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3bb8f2553741d64887a10252471fd0abafd5507c2c5931ec65483cba44c3b308bf7bd0226187a001b583e6065e6524bb2ae605c19a4ed5b74c2101c0ee6a1849096f666e1292988a6be056ff29faaeb52b452e2edaaaedec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 26195bff1962d7095654161685110b3b7c98d96ec68a0d4c61e592aca7d1b7803101a152954006142abc41a30fbe9cfa862a4809bdb5a2e643f9fc2ea41ee43cf97060e05f907ee22703852404000a68734edbbd223c336d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -dea436fb593295ce6ac1f98dbe82ddfebebaf7053bb605dfaf1dc4190d72b4168b6c0a89c4739db0b5f152818963a4ce4c4feb65f9e4644eb7c7bf4a94a7f86a3e89c336a410d45252f679faab0220f284ec585fe126906300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 7ae8150ec0bb43509d44b9b227b1a6972ac317a0798cb685a498bc6d81c75f793c64d0cc7612103dafd1fd25e419e397da3d4289cb2fd78bb328314dfb3000c1853dc53831d405292e3e7d061404b9e940c4bf5bf921a8e700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 572dff70f9565cdef3baee92b85bae80a497379943b47a772cd05c02cb70086aef3e8d36a04cacfa25f2df3c7860a3c99a67f9bf639607f6da1ded03c0ada90efecf76931548f565178d61bf0e7739a9b5e4e3bba048e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f6a4d15ed8c23f200f38b7bb6a7b164383bfce93a140943f0b8fd33f0f6272c69ccee7c5f0a583d8a01d31eb76d2bce20b5f7790386a8ce1898580dfdd82d71fe888f50a0f5043a2ae2338d3f9422090a0476f10e9ab516e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -87943947a84725ca5f5c55421c8bc6deca1208a70e544718bf65ba0c1e0d58c764882c40e99df44f4e8cfe8dbf815a66dfd164fa8c4d31dc440dfb335049f5055eb1d766a596b9a00be5195891b609746d9815821b29ece3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8f7b4f38c994be2d302ce9f40b6acd27cd65be901d06044dd618b95540fd75f031b86cb765989840507b9d34e6a08b968b8267572981fcf377ab8b0fe4176eb4c49bc10c4efcf341e9e875dfa441456fbfa91f96e84b6895800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 37ce28029446158d85509d9fbe6f4c2ae891b70697142aa1da15e418465ec0e7ef5742625a4ddaa01eb80e3caa6d1b890016b16a6236bdeee46a2ac5aa67226286696e1abb2f9eb43a4c0397b92f3e803e381520ed1278389000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3df0ae605bb5ca01ce32946837d2cf32cbfe538951d0c2c8fcc5066e5607f07e44bb1417c33eaccef4444b2d9ef863f02f5f6e86e6d480760cef96a6ae117179dbdb65f3e933b290fef056d4f1c4f8e497eca068dd9a8a74e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a975c5b5967997e6c2e0f6aa92708ec0ddd56a6449dc36302290c005cbcd4add07cb3aaaa66fb6cdd6d7098818d786e30356151532f320e47284293dfeb1324002066c38f83492010f2550d8155e9294ca5d216d5c759d4dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -acde76463f45766f150af1c277e208b64978adb81b0a4417bdaf39907206006006ff63c83a5e76284e9e17edd4a1fd6bd3335a2f8f790708e6b978c7fd74648c80d49a95718a62e3d31dfff6c5148bdc6ff55fc51c067e248000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1a8f950d7b4942a19b317f7dfa0b2fde73b0f76c1925974afc030d571b80d59463ec04cc05a19e999ac1d459a79efe8b6d9dff2987ec242f5b9a9e743cae516a7a2ce203ce567737b0b2a322d62f74b4b81a043cea10334222000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -112344a9a2291430050576f64b2356fd166d3f744e07e01d8ce299204363a992d9c3a031cefe5aa386a0038167a6eb678e4ef471bee816b7cae170b77eab8a816a7a44a5308ffa25d779056482be3e6632d6b561ed09661dd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -7fef15bcebad90c173e70d9c388f6de08c4c7faf327d4024bdf03663e5ebebdf9212eb87fee654767f7db12253b886a1114aea52ee64cd9818f1f2c31ab4c01f8d2974d30b70af171107eefacc62ebcc138fa0a380e4e91cac000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ffbffc4c5e59201892b86b5d49a0669e9577a70cdd02a17cec4ccf70b14eefa8a08123f92f0f587b33355c7259e829973a625ff507a7a69aa5ca19a25a2070504eca038a1b41fbd8bc1c44c4914dea68ad06f509efd0c85d54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2843f64b7199cae744006ced88703dd09701a13e195e1d19f44270fc8e9022040f83d2c2e764eb3a0728bbfde55be98b62002cdc5f8968a05710c72aad6459ae264147127ba82e1d5ffbce5ed1ab4aea8a9a871fdb83e5fbe88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -16e65cc197373cc8d78b87281dd7555043b058abd9c46f3bfa307bfb51024fbc4f31cba7fcd5b5ddba1cfc132a02251f7d708ee13a1f265ae37fba0499f49b4d533d9099e59b01fc7774de46be34a3a81d5b6b64046dee710b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cee30c89fb65152e2445c72391aa4f8050f4d7e70938d16e433732e412e97a8c26f215a1accea3ea16e6507e844b203260d3de26ae9579c2f963ea4c7f3235ac94088db12ae540fc5efaa13129ebda722d91963e2ecd80b41d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b42cac9e32f6114b3ecef52cb041e4a0b758991d73b56943d8d33d48e7b682a1a2a923d502bf2ca80106a9932b45c54bd574a0216558df261a669461a16e0c03ad7b9562db420297661a9ab2408a019557288b7a165973759d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2e2d22c028315c78aebd3d5cca19332475e39ea58a9040ebc7ce50476acd753124b8b7e663443f64c8d254873a621f9ec356aca49cf9cd7dba8f14c6dbe6e481b612e191a59318a0f349340a6ba7755530b1621e4ef66ad6bc60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cc3c3dc8625c08891cff45f3d5c006a6871e537b4ee28abccd61551922c01b26a0395feb78b740fedb2560fc8b9682954108c2005ea5b4b947b3db508a216a5f0672603df315dfa060bcd3d1d91229ce72f8725e3b8f5684da0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f9b816bbe0d61e668e3a47a3bdca69a72358ab50386b98d6307721e99c5ad006a8617f84234b346bac7700627f16633c3797da2ac8bd29136d02cd370d3aca2bb6126784f8f48d39d596adb2b6083a26117d0cd8c81131b66980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -14186360e8df6ad149bc49de5ea2db1b688cfd5270182e1430239b423a832fa06441f30166f01c6cfb499ae4dfd406b6e05d87c3c45a2d3ea79785cfd8e037977f3927e6fd1c3cf0fb7f84bb1978f140417fe688ab46d3b8b500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -15a5b90ce927a66fea4e650bfe6628adfeb2d7105c1a95e7f3d07d782cc5c6b7cb6ac97052dc2af4d78b950f72fdd203ed3824800ccc9083fa3d5692d4f50caea96ae1fa4306b09a14bae4eeb8fd8f6f63480d7a5556d5ec89900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 15c139a1bbe42cde218547c5b71e8dd8b86dac18a689b30fc595368f956adc7c9aac0f244f9a183f9ddece78cfbf97f7789c4a41e6e1e8db99470ff722048811ffa715c684411086b5b744e785137a35142174c4327b742d3480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -eb1cb387acb66f79b377bbb47ce6030242bc0ca9d1bd9d774f72dcd790b780570e484e4f0510be11704c717efe2074da47eb5e140de31986b79251ed7a2db5532ae3ddf07862d45dc83e51de6528f796058d07d3b83cf02e04700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 889a8926cc6b66d214394227d0a6ef0319444d40e73016d078973a85b531d1d0df0bb11de23171504a9053ab470321f790ceb3d991291f97f1124e2c5f3363abb3766b191cd23505378892160201f9ba1effb2a627121496c3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1f92ccdf1d3d5356cf034a859829c2706a269a33f858ef1249a34127fee2a4caa4268b6d07a9750e8c8ed3b0eee64fd0d3e8032147f95b7862475232dc073c87087bd365c9e420d4336d5a3343cc42cb4a7916cc06878da8d2e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1e170e09a01ec4b8b507c267cd4bca815e6728fb6a8b110eeffefbfc861190ed74ab9b543e47ffcbbb1bb191c6a9ca3c5c94d9a98b35dd059b1ebbdaa05f57a014367e7e5268ce851055d154396891f3ffecf31ef3f8dc2de59800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -627208e084e8299bb03b108a3e8bafa70921d532130e0937038272b5cd10ebc93d6188aa652cb2fdc1c4d43d7c5191b4e6968e5a14be8b8ad860acd7bc20a399112c6ee85a0f09bf2a9c7797d582e4c5bbbcd4f9ee5bd6d29e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d96fc314d6f99c46e78db480e8c84dd0b87784fba4cd728f8dff97e130848c7f06ec94e2fecd062987998dfb16ca01d86e0a6754619614183d36489cf2727b190382ae62f67d5604b2d87548f52c4269e5da46870cfc30cbeafc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e3cb0e0cbb78d540c0c9ae6d429fb438dec839fdc9f70df4aac779b39858aadc80daf1cea3e9cb1d3f896fdccbedbe2b25415af50598753082fb12415106ab0b8374b2cd671a16e7304b1f951ebaeb782c2592ecc84e0fe5e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -176f0062bfc95a26f7031aa85daf62298a4fde27d0d2ffb90b5b905b7d64bfb4d730cfa3ea8eeaed90c515f031f8896a2c6cfe791577cc2eb51c8841ead1e0013957fe8244474a491cc3f11178c160153f3c6aa985d3b0052fdf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c7df65a155ef27b17b02580a3a8f9b1ffaa7528c563635da28663a05b4b0f0c70dcd49c29acd0e001e3b9686f628fbbf8dee731a5ff7624377832a6f20d04cf567e5cd29a452aa72220d677729a8b75d2d9a7206fd8c6daee4b2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -febae8905c837bec5a7546129be98cd06ef61ff3fa5cf34b42de12c6fa5928b122fa8bfe2153a0258d6706341e8ff5b246201bba55938b3cb718dbfff4cda54bd4b64c1ec99944d67252082eaffc56a7f15c6bbced8333293b54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2ebbb333cf867e4655ca12e0ec9449cfdb74178c81437f2e4706b4dd67c988b077bd0c66d5fb68f0d4fdb010a1c056842b71e2d387a19fd7b38fd7169397b8b82d2a96628bdfdb0bb8d8fad429a88ce52608db0449771b2052cda000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -32020260ba3987cea0caa6c3444747b0cfd1887e1270ab0e79e3835108ea26f41daf43af7d30ed556a8a040a736587ee85e080def09a8cbf2730c15655146b169ede7b205524e6359b3481156fde7b47f97b6a6aaefe0d371d15a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4a93ff1d21a66de2a3120d08383eeb127b3454c42c2097f7f47c29b393622c61b11435789dee2b94f09f5e802457d5f6050dfb33c9170f2462d1adec630843a65c43450696cf756f87898c309349874c8c5993ae0bb6709eb2050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bb4e921069bb3cf5362132a4e5fd01cd4e12b511c8e548dc5e0fd3f08ae4df7987fa8a57f4ed4db0e8c916d7da0f269c015053316cd7d4cb9794b835706003d5626a20437c3c093fe3a0fe70caf00e5d8f6d7f34996d17738b3ac000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1ffa481be0fd7c805d24e606a7d2647dd279694f2511c1cfd433958bd0935ab674fcb8176b690486c0b3d33b2886254306fb2076ab964c1f670714a337d16d6e7fae6b2fbf7ffd71de478c0a1ec6eafccba5e5082ba662c932bd58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 11426e23d21950e65539d2414ff6fea641073b87686387c46d03caa1fcb8bc498dfed8ab148d331408a55f8165e5978835477cc3fbdbf793fdcf2a359f42dca19a6d57d4fce09ed3fa87b2bfd0d63a7360c1042baeabc78fd5de88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -cb62ff6a8cf2ef4d976493dbf29de126f94b2d23b6238e1ef2d0179026f118887bf4c37f7c87716d3be20c044ab9747ba6857fdacc4362a39e7f7143dc8191a0af69091e4426f671cb8471de9ec8766711f5bc591f9d64ef2f7350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -39f4b8b2e74c218d7159cdd5e2c16e322cc95301664a6922db4cb2bd8d8102439287a2f22ee2da3d5c6b981ccb8f90cc29af5ba5a84e262007f4bf8a4f0179ee406f1a4e7a4b9c0e839ae495f3bf8d7d831ad8b5bdbf6dfa5e5550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2620620f38849f532f38aa1c65510d73ace7ac221c04ccfb6047e8707196d39c24e56a955bc3dbb6c9a27f145ebda9ab1dbbcf868c3380a8cacdc411561231d22b2d7468abf1daec419f733fd0c48db0ea046c6f7d38abaccdda760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f041c21e771ea661afa8ba9d888b038cee66b41934f336fdbf842ef4d11f1f169a11b0a82e191e98c0bf8c87e59d6852c31a7ec9ce77d67264527740aff2c9c71a66e78e1d4a48b3f782eeea61eee6d4ebc23d700b863f84377ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2e250ef6ee22eff619db0bd810f416a76a8c1066b53002e8eac726e6a47062c98c25af4350b26a5d339fca9f2b995d9c1221c50df5a4f67e169f48d51d1c8fe829f9908d9dab948f6424e8c4eac820a4582d1b67a141163a23f6b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 708378bcfd51298a2044d9d50b69ea096dbe731de46bca73980cf3f79cb03af9b048893f11a39ef19fb6c22e998569b1085e9714bf61159f443ecf13675955bb298c468d6684a90cd355b4e9374b59ba0e2ff246c51f228c752fb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1bc12653bec9e2917504928d6e84dad306c5d86e49ce205fd41b335c0506b8f4e0da2b4a50198a657e40ee0a7023b11a36cba876da2a3f72c69d85bc3599cebf0a33594bb04674acf8f6ac821ddca68471affaadacc4ffae10cb9d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2f3c0c4cfd5d007bbbce12ee00cb238e4ecde1b1eae13d23874b760afcb369b3100308cd2dc455888792a055b588aaeb5557a7fb49631c796b3bd111b68ac5237b0485386ccb66183e23fe3996315a838fb5c4c4ab8050d6df115380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 11ebbfa2a938a95424587f8ebe271952576dc3f8bb12193f09b6bb146cc7ece4c4a374a73d2f7513f451df7aa18dc043bcd6acb7d67bd8ccb577c5957b8fd5d350e86f1dcf9b3353c6c0fb04b06d7d37885a4477ba060a3d1f939200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b6e41ea4a47addd244c02e8dda63feb1cc86cd91b70a7aabd810a32c29e0f9831422076d7905fec4f42bba275d02120f3abd034ee07fb4bc020d863b6a465c578fadd955d845fce11443a41d67b3eb51ea139a3457cef6867bfece00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8a2beb342e1d946508affd6c228151271f74a5a04124267d75f1961108521f12863c60e6074e0c9c3e15453e59a1ba55799d714f06c44e8f175f3ea7b99bac5637a31742e842e731805d348fe89dee2a82ac2e6e6211380162861e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 98e164a711700bf6005248617e7f472d322ef2c589231693ec0b8530b823d7d1a8a2e8e622e1931f9bbbf7d3b7679e1e5e97f5e22c52702ed43d08d7f432d30c94b0cd0f51f53f0cee97424a94b86e19f57652804d4760878a6b7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ca101640a92d25c1314d5704af0c6d0f5ea0411ee753588f524bf2ed4ea688949b22728ae314a7e8bfc6950b263e1c2ec1dca4e48053324cf0cefd00a3edf389ae5da607d26102e46803a1a28bc4f2f7ae6e3a08bcf8743815222f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fb8e30e506f5ffb975b52e71d89d1ff913865c0cbefa64054382e6c350a292e0353a1dd3381e9e9026ab5ce3a6881d90927b6af0dd9d21026b6c6fb06c4b621d6ec9f5394ceed3088009a40d9eeb6b3ef27ce24933b750c9a1f642400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -d91f8ab747185d491f5facfd4610fdc22df921af3c7cdaafc00fbff519b2e364bdffe703f327a8fe26738c4f0f95ad9c72b73dc15f47cfe8955743102d16e5238f18b599da8f0c99518523dbe0ac7fc1367b978bef42733e554ab5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ad5e2e124deaa22e82ec0ed0a9a27f29030acd9c9706832a6e4e87d5cc3eafe3b88838b47a640b89df4d09fd377d6eba37b0c4a93678cc2fe026f3deb5d1607e4cac5ceaeee376d2857fd6774b11e3e5f9fb16cbf722bdbb3c860f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fc79b17e262031dd15833c58ddc11b8f78c450f9fcd0a6dbc0d2ce62ea6e6c893763c08fc3caea0a6fbb1814426bfbdfac5e5006fb02816558ee90a200094dcc6871e20dcdb36ac7d09fb3699bdf01020ef4ae2859c09b44c82c932000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7653e247187429c972fc90c5c5517adc96e8b678f4e0163cf02e523a99d4857596a35e793b83bdd474cc26ffca8bc2539a0be5aac512fc537bedfe5fcca23cfc5d6e8bfb20ab8ea2b80963e1114967794132ad13e8a67159ed5a1c9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1754baf85f229120dea62df5784c7363dac10075f1c7ece808e530783274fc305134290cb2a88b96b9513e68a471161182a78475f5c5e6314f3165f494bf7cf4aa45102be3f8df43f9ec67393f77c3814a6af9ea33f3e970fa36daa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 731148a79ce8882c1428cd504a00d052609086e5dcc6e6e527c503d4158528ca9de4ed17feaf46255d3dd8333988106f6e4fe251f9fd602a5353349784bb0056d75b7f694d1aebc773703597f33ae978bca206de125a4ae9ee5cf1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -229bf27fa266b3428ef8aedad88fe3672b99f8849fc3792405a4d923f7b9c9675a98fd7bbf75a81901190a643b8fd8e190b342ebacf7327ab366ae54cb817feb850e4305e98dfc66deffaebfa3a06e6071e8bebf1572d275cd080ac8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f4f82601548eb91b872fd7dec3ad9099121fa8631994a91b2be70a5bd4ef4314ed882b49916180fd59e238b8fd5dff78678bf29da1aaebf5160384ff83fa23645a34edc0f0e396fda4473c243e77e200b0b0226eee9836b72fec5274000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e56a12c7078c3419e9ca3467e09c5a6ee178ba2a8e30b10b6e02de84553968d23d968f250bd75af3de6eb2f211b7172a2e09ec4e9c218c053e25e93bff652d55098c188d7d3da8bda5b7bbc7e0317548de5f35f328a14d66936a5768000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3bee937431e052b1fc6383143ef06603f9e581455edce877d90958c4d2d56152e3908ecc5d5b39c87b6c3d0acd301be1c542787d562a848b59b8b73f8da2a8a25fedf7ea1d72aa349166ede2cc7b184cf133e2c04a4522f64e5827e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -703e9e75555c62240043f9374d0e9fcc46693300ad11c95a3b8e039630046ddb7dafb42548d278fb5a09869a14dd047dbb2f0c1b9708b73e6ed2e7669771e45aea54eb9409f7f25edc46aa8bd08f5833ca096b808fa36a7bdbc6ac060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7773cbce560fb51696b12b7f6fd5698c88f9dabf6b5bd8eb145f9e5c36bc3aba573d79888083919f0de7929358ee73ed37738788152a0c3e1a336804594bb66f331e32973cacc43a3e8b303a689bc14663e70bf9282340f777d42ead0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 38b2ad54f93f849a8bd34cb3755e74be5b935ae2d418da919baadead7826ff5a9879312d1ffad923d86e47681e61bde7f1372bfcdbab2306bc6ce19ea07d34b17d069fccaf90186e4f7f1c20b0d4c189b2bfd7e8f6de86d07c202157e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6ab0cc3d6696557965ff494c3e51d280a9fe85ed5d3198baa4396d4aa659140d3f82e0644a0f1fedff13263621054fc5e4facb7d822cc9a57d7ab627f23cd5f3a1ef481fa212ffdffb72657d28e4445b4aea06f0f80aa5da8cbf1e880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 44e5a66dc46e93893255944e55621049bf7a3265aa8204b834f94adac8077eab79d185e2bb649e9e0a34978e02f4f60b73d4d2f0bf4f288fa34a87752f12cacb0ad4a2bc20c7385df96840f3e296cf134ae34fd48a507abfc879514ac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 559f5791eff4084db85eb844c7bf704d636a1c9d58f1e5eedb50a89e4f6b47696e9078a51d2a1c70449cdd2958dbb286808f3cd25897f45915259a3d67d29fb485ca1d5ce1e5b78d5ea561af84c2783269b971490365fb38bf45ca6440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3a9d11d0422329dbaf948512e81a32aabb908d9a7dca7df031220d7fdda6ab67a4058c25687ef11f1c54559a0097a8bb54e4ae2153df7dda262cd4cca1d3cc57735fd595eb1efe00db9da6877e06cf6e4f08186c4cfe5d686e2502f4380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 17c7e15f115823be8651d7eef9c13f5d8d5f88fac433758aacc8b7ecc11e3ec0bd8c1f26912aff0e7ab07c7bc0a155030a33c2de333217dfd6d6c9ae4b8e554eac22bbdd02c754ae5939de23cc73c307fb5ec6e2e8f435b5b1686eb1e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bddeea0c88e4206a8c0e563ebadecde651dcb3b04e3f8f61ab2a311336bcf21b04f2924866820cbff5df562082da3a756a93d1bbe914cbbb6977cfefdd80f87b90f39bb73d73a094a3725415741501d40aab14d07e61bb214f59a7c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5bb59380253af56d1ddf3b4dc715168f7111908c51f2792965b42d47fa616969bc68aae34935c87d09e39bcc6b0536e71bb50ffc0a1b318883b21a670e9e1b183687df277b8e765b3470141f26a754d341295f6d08ea3f10f14f0bcaa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -176ffba30471a011d4a21a84d423199e036b2a222e6077b20b1db68c3b2c36348c9ff95f81f642422015e41f671c3eadbbf7ed746659669144337e7fe54ff23d5e7c279caa850e27abeb06a35326767ad0223cd576b466dbc37c449b0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -244a00acbd15e533b66021aab67949020e3a8601cafb722ebc55d36127081a8d45018f722bbc47742ad82c84bf72b7680f35678dd5c82f2d9dcc4adbcc2033b0434d26e60d3935b93cae072d804de7b085e6154f712d20e69c785be46800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = dc5d667da6c9e85b93d082a861c5c5d975b5ed0e98acbe367682526e49fce5a01b1b2e2ffadfb70fb9084d68e25140113d24a291590f1ace291ce8a8f84010f364b028c9d006c1e885f4985545ee36e81ca00cea5379982119bfa77f1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -fb82526eec274be217e93176fa83f324634b1d9b2286bdd0e7c4aec104d8619ceae274d55c62914ed2e74fd80a9704c33aacaa3ffec4f68589d03fdc6caa0434055cb09e408910c70910023b1d82f724412837cb2a094bd1309cb7914400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2de934ad05815f20474756b3c2f85717f1be00847c2289652d637d0fbf38a73f8ffcd00aeff3233a49c2c585b4550d39d10ca70460e0ac7029c8d239b518cafe9582da98b645abff7204afde09fcd27805404ced0b6417d7c9bab373e3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3b6f1c0348d3c0a4d0c0646f52b5adeaf79c88f61569ab369889aa6c5b731d1d1d324ee58fdb87a1f87e5ec60dba0f55d635e8d9fa857776920883aacc9ca153ecdf15595c5a0ea971511303d503553ecf0592d66ac22f6f6aa48c885c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b6c90f3e40d7a466d41897f7ed3ae6ee78d710c7ee3e930fa401de421c268df7e8d7b69ddad045cef6c5284fedf866912dd410055c581e6aeb5f3fcb6e3ffd939e61700029b18be4573782a112e527804abf08ed4eb2a42d6d698dbc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cd3f2ea827e1f8eabd900e0393742414ba74b46d4bb7dfa0dc56d7de632274c65ce5a0fa48b6e4c996e6fae90f945465360fe249f2104d3dfff771054bae384fdf331cc70db6a956bad54695eaf99f5b2c001a7bca8164a0a72cb2ec7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 30e82e706f0273a0e4fb7ef1e9821b1c2e9f193f4a28c834febc4e64e5ed1bcb17afdbc33e6fb85128e64343c5609e800f0109d500373f9f92351a9cd6b2c2b63e61169a61c2b11b8c3af01089d42be8e9675c9cee9e567159eacd02f2a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3c492de6709eba41562d667c39f3bfc03429d3581bcd86fd0116110d7376566ee6a4b68228f56e0b14506a8ddfa2bcce6613f46b489c179489edb05cbbe46ba9c43af1bf7b1b8feebed2725b16337736734449b6dfdde208a0f74cda7ce000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -71583dd3c2931b1a53f012d87718b0845f1adcf635c15068ebaedb6b2d5ba1c96143456d80f36cdc6ab0d349f732cfcee630eca6c2e74b34f7896d5e432bdca27b523ed1fea698d761560e1961438e2372fcf249895c290c393c2f8a284000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 58ee561bad40160e1c25a07509627f6b2a2b216a6aac780dd6a0b1fb96a952c9a1db57c67e68c43b31888745dde4cebda2a7238382da57831280b6e8031defb4c8037964a8ed5cb6f883193fa6bb8d8f2661a28eb22bf7ac8906268df2c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e2bf4577765427a8c262efb64728d773522abe41edd099b2f48c48733a96489904672c350c032d141a5acfbc17b27982fd5bd5b87612347dc6f4d5ca63f9ebf44a211e67d7662f0e041d072d95771ada24c663fde7e1176d494aaac9020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3ea2ee00320ed584667b69eb3d88220349466eaa49eae784461ee5b9036d03c97f72296de6de636ac473155a58846c05e30a00887c87dd0174e21e63014fd202c5d964b19b9ea460cf1d3a95b2a314bcd845cf369208a6db4c27ab019fb8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8172ecdf5c96c559983fd7fac55c7cd22599fbd75b03fd289b53056a0184d4fcd13993c7b837018e11569387f63367c8329c7555fdb65296484eca7e38ec55ee5f42b21d9add1f719413d490620d67cbfe3aaa6a942763211be1f48f95a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d5cee4bdf06728b5e1446bf3740872596c1af5782617b07de9cdee60ca8124b5ed9c73b56ecec945c10d0b8845bd84c3313a69307c54c3337c811fe69dcf238bf77ddf04629ba601f08fde5b8596e5fa7cf8319a06ec70144433a7dab470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -12882ddd0a46c88727bdd74b622b47fab2c794b3bd40801cefb5f351b910eff4064a2939a7bc5af179edf667879c932b5b1b8ac74729f6b445fb429b0dea5903ca003cfdcdac0f0bc31a59fea22478b3d8f914a4bb3775ea6ae9a7311a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3def49ad3cea35f7baee23d66a8e106194ed043e6d17d2470f02cf0a6a387f23df88b5a4f13392825aa5820e917ee24c391e5da17a2cbeea000131693f2237ecac8e0c03a4a6928d532797b9b38c5e7c6b4fd17183007d156f3489522fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -bf162d1ed11ba1efbea570f36cb8204eadd08c7678d8b1c7fe97aec1c9d3372539e14715e58c5e174a6bc239b9a00970176e1227fb4293910f2aea5fbd60a3a9dd330730c4f1708e4de6dd9618da59c0a9bb68b76dbecd061f93476a13240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2245c0b428bbb83491310f6dae37f84f1b1da1681338bfe7133e11b731aad31e75887be98f72cda0274d17e121f2e740e11af0fef50b4f557267190b2dbe26a1fe3694213255044a3efde98787977606bf311c06d1f7025a5bbe3bb0efb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1ac8774d294a39567592998fb574044219817be4179174d06d19756dde64e762d9ce6293953492804dd1b252f0860bc588af89bec1b55218f744ac22a3b2bbea5df38e6601cbdae7cf3afbf1fce2da9140b86584a9dcefd3ea32f63a7ae000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -29fef7e0ebd48a9139cbbcab9417b6e983195b50860c61a1992631d48d4d0d2e5b44cec6022fe639b6a0ea42bec0e863684a5ef5f4b530bd387e660a532dd1d740ee262464c7739fe269ac071632b1bb64112c75cdd5ce0ba37c4a3bf10080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9a36a56c7b285f02467b76009a67065e227595767b882e99a4d6aa5c92903bbabdd941221d4adf55ec4200f58f6520c2b33464e17fd6a86f94eb3e5d86da317b3e0fce355569e42190cfba437a47be56ffe0da27ea023e39eb0ffd738e6200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7ee5541f016350882ae0fc0ae71cf61c318e9b3eb0580bb4af5ff5a4d5d9b99800b203bedc038f2f5bdf490da44169fffe9f5be750cb1a36a382cee7ba91a8b6b75c2ac21d3bb259aeac762f704919737a623ecbedcccbd1f0a25277d93300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 32de2816039a3d1c677ffd174e2fa9241bfa8506d78950379b9d0e169da53366626c05efcb23954bad12a6e5b692393154d06edfc893534fbf999e451d3b2ae02442ce7575293654dfe4640a5673620b98e1e4455d1b253665ce7a353a8b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -187268daa035c61e091a8692e884fc19c4f534e125922a3ebef4f62128b7f3ed6cef16212299690ca0a91c61310f13da059fd75f706e519d237ec3713cfe8f4feffe377ed15a19deb7681d2fd3483aa7ab44b74f96205d42621c9b99f6f1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -333af4e0381c747386422eaea109c3f9af33e9a1240dd93ef9be946921281bafa54585e6a02185c61fa80cef74096c13655c1c512c11bb699cdaef0f2feedd6b941b89ab7079f4e1f3af86e4856030a1670689db8dc9a63cfe2745685626c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -20b445877e2fdce05616c4f870c2a6f2d99cc0807d1cbb280e30d73b6b5b0996c8dc964e29d83b70aa5c1005a2ccaf29a582b1f25e3ba51ea8a7cb881cc97a6a1319184f35a4f4f504e8fec3fa441750c771d5938e3cf31f49df7123bacfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2250dcd7e20e07d81f659baf791f73fb9bd74b8482732694232a81baf27e141854512e3762cf50782cc5b1cfa3bd99aa19b73f10d388f6d4e6f7fe7ba5ad740b42991ad3e07f5d4d79180657d005368fe51afadb02f8dafed50f5402e715c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2e07c7331d689731a8e0d70a4064345a24fa3a35ebeb312b5c46fae9db03de6246b42b9ddca2f6add61511470b8dd9cd40e47f501749c59b52b39acd45b433f0ef703d1d01468ab8ca291b14df66c71c20b624bc4b2d1b4770cec1cdeb3a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ed343bbf0ec1abc725556dd794248a92fc6db8866660f0ffcb0cea3a67bcc1fc71a4fe5d6629848e587bbe95ba83aaa2fff2ba9472d8d99ad0bf72cef0ed1703b2d27a507ba6688bce5208719b6c15a9a34ff08af5acf5ff944e1bf8ee3eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -702a435e8cf5159c586b0527f575f1b4c4949136136ad991a82361df0882e47893d1b2b7365012f9547a9a9f4a2ac219b0a240d420ce6c170de472e90d87c96e47d6516978f8aece35dc111c9725368b792a5071f1cf523bf1d9c127c69d7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 290650e83ff7e5914b0f4243a4118525b8a83b7276e012607b7f83ef918987ae51938338c590e914dde3297928ee78654da94292fedf680fef8dc79a079c0b9eb690def3ffce21103657e5e91292ef4a16f6bda98e46bee70cfeea32012bf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -13570081a8543089733dab11992f71ad6850ac82e52188b4925fa6b78cb57aaf94627b14a1a79b8a62adae538c0e006c19a727a690143418090c29dd7df5a8e34805ca0e82179414bd20df2ccb276fd49d4955e5e139a0164308a871864ea6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -def1909e0def73c3431248f36be6f531965e32c79c3ef2719db948215344b610decb9a827af3dc9cfa4bdf915ce15e95822875b61bd6423e33ff2941da23342130fb5f4198278cb757a0784d3078178997c4995bdda25621e05de46c1fb18c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2c8351c6706753b037ee6c6c685c5f975d6ba8fe0c4783560881d3e1d159dd902d30fac3b1069f434895d5940e1015e251f453ee6b21f52b007836c489e581f430fd51fb5814e16fa81a01b36817ac0152ba8094e00b06d6f5957faa9b6380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1329b68a55872c48ea22489a8521aaef8283eec494644efe905667265d09592165f2b6923022b75de6a5e2d3e4e2289adb181dee6b0e8f494c750f4d2f465f251251c0cb0c6e892506523ee4568396ffd4e324b9d789951279224b7661f6ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = dca26d8c4282945ba832242622391a7227ca043bea0637f867acc7d9e7f41ba1e7c1d42b9ddc8d50c65072442d9ad6ebc32afb37c4e4cebe9dbb7be6848bcc73b2b5f039590d42700c37d33746bc140ec2e4601557da2a69cbc13015da32b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b4c4bb4f85ed1ebfbcf6ea868d758b4eb29686aa6a1b019a879f591558edadf182bb9202efd1c7d6fa996557268b164abfd9acb22928ec4ce15d739c5205952462a603a852a5a095e52e04c62d630d0ba0f84db159b78191eae9f72a98b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 856be647b6fa7d68b7d0552288444365cafe8cc086ae01ba5b80e3e1cb421f7403c497565fb1ab1723bacffe24072bb558ce407a7e94e8750de9de44daf29fdd5edb2a683fd21367b253da28a95b7e1baa5dd9d0b2cf29cf0c9df981441d600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 233c3251498d7818e8b5d65493af3cbc3412c815e424f57cc3226dbb541365e0aca544a43063300136100f3c1abf100d31ad604e9e497211d82bca7661feb36e771b892ba11a607ca6f49354ecf24bfe2b679acbb060de0d1666e57e21003100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2178dca2e0da42edb48cbd8f58c4b129b579fac0dd183ee6332c12a6843c6da7b40a3522e491ae6c08d1a9347aea875a14899ce91ba152d06b578d766cde8621fa2d4665373ad77cc47f2947e3261e1f0a81f83c3b3236547d18b844acf0bf20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b4f2db6a7ac2073b01977aed81daad284ee32f6a03e758e7d7e4ea3eb1bcdbb1664b59e1fab2eb71983e6f23e23b8b65b7172434c32bf5ea9e0e5fd71141fa6a8636dd289a1bdb853be1414742d2fa144de542eab756a5d69569ebdb20c1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a407ff572bbbe22828152f2153d8834546bcc12586838f28e1ed3e1ea56e2498976c6b71fe9660b0377b02beb0c14fd2feab71ec031b4e032beeb51273c91f456859254c14034ac7dfe3814bd504621c7db5c6ada5fd0dd3baec77b9f65b0c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 90eeeb459a2ba042d5c1fd87b940bc298d46cabc7acc7531e87769762e485a7f1e75d28ee85bc8268903177166d4cd7ab1fceddddbe53617d7a71c53c5cf3a62ea3cf67f09743c5fd9b49104a1af2dadaba267681e6c35e9e6edae3986aaf900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c103c35e896679c6fde7da632aba294b2598cec0c61b6306a810db9be464ac456d78cc996cda3636f5d699f480f370b2694a7c25d324b6c05f2f0c7406cb56d4d36c72c54f1355693541db3217dcba0702bc290fea8b05edf5a6733259213680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5e2694ca43b6b81564b4ab089e48ce9726ba3d02c89bd3ab7f36d96fdf9325a56c8b943789f69b20a44ede9d080b8b23b90fb5a258eff30e66cd2755132e82661b6b88ebe1d67dadfdff20193dc9415b7cee66a0df6040636aeb340c2d7402f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 509c9e73fcaabd5753c757836328c571321850078a8fc8ce515dcf0233389ccdc5ad89ac2b58282c8f62efa6205f33bf4fba817c88e519484b290ad58ab3b48318ebf292ca7839aa0acb463d89bf4bcaa61a21b5742e1a061af73d2719ff08f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -12f7116a0d24dfbf36c7f27f1d781584f136e515821d7138f3b0f7beaf533ae94f82431e97b9e663eedc754688ad5f4ac1de137cb70f465fcfca6e858729246030496e882ac3cfdba28404fb244e8f05098c0b2847aa364d02307722212d247e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 33218cc50eeedc8a2dde01644961fcc0eac3416243ecb82c9e16f36333f678e149628a33fdfa328c2a2080d4fe6f959d99cf7e55649ea595c9f4b4e2e2d1ccc1aad881ca95e8bf4467704229c16939e0c39483d82dc7fec7ce73ee025a579dca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2ceb0fdccbbcd8871c04bfa3efecc3c2472ee6c2da6a2c64e28516a78276a2b8065fc5236eb7ed07d18fc1faafb39410a96bbd2f75826b727aa90595b41e19e816d57c6ec7f0d5f2875a028261a9eeb40a7cb36948fd8e557b1434bb6ac5340800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -47b2d10570049ce8e8e2c325d95c45b25997bc9d44e25dcc50e0d36284f85e42c2455ace24ebfe18afeab2260604215be0cb4e21dcc0d6720044af7541282bfdb8f0d87ffd65f1dbba77cb762902884f285a75521d7942b8e7341cdc4c1b0c2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 15945870417135141d87d66c071ff64843aef977fc78972b461dae07fed55cfeb670d230c76f361f02a4966864aaff5d4820ffb0322e1fa761dcadcc50b00092002decec03f2f69fe96586ba3ee81f9e3d52f6b1b559b9a610631e95e33c0193800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -369c4d93f4809951579a687b29ce5cf80b15b8d01ba8a80f08e78149a78072cd13fec4647bfe23772b5f3d90090d9687e3af33ba9e64e5957ae52e81a50e997cf0cf8ab8ecfd5fba4af61c7785097b32e399b0f29f02bca56aa4d3c3ce5df6cc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -37723924cfa663c4a474d19ae45b8df78a144f121cde1a8a5787e89dafdbe1e6d569b66e2cbf279f24aab934ed1553f17c645499e4364067f9affad78b9cf034d4f2d8ca3c8de40ff34f20de5435817f0639fb3f29c414e055acfa0880f907c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fcd4c8d320b3cbe048d6af90bcd249e4270834cb9c71325dbf9ec912586207023c7ab2a7bd1ecf780b8f565583b502e8e30565cd8cc51e616156d0d21e056e7d94536123d7520c4de93620c93f3e9e5493d64bcfc07774bae7c366fdd94bd095000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2f31962b30cc655d1bc8f94f1cb9a9a52891555c5c2f86f750d5edcc501709887148d0a3cc6c598812e815e8329c48a90f2fd2f914eae22a0d7da3cd0751930a16c3246c906827d80ce6df7b9ee89b1d9e1a71b5be3c60abf89662acb58863626000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -eda66584390f93a64d7f37a2aa0a1d0b037941a87f240a0d4afff2e1c36e64b5f395b079d59849f1dc010384c20538e760797d578a862cfe20cd644fb9aa59bc518dff95eee494b0161c7a011cd22fb3dcbc80a15ca11d3e84542fa58b4e9f48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6be528ea05e074191f330b8ffc0f1085a69af967815c66d648e4f761625e0ea3222951cc05c4ef7e9da38db78c976765cd8cfa4d67907d9305713dd564f82e7cfa4d3415c6f9cab781f06d37d68ce02492ebe0c98964b14ff09c420f6322818bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -701ca238852c69f883c6bb2ef22899f21fee5c19833f0f17ec560d05c90be499669a80ce040ed937425354fc6026c0a75494dbb21a550e9b6a96067ddf69cc00be9391cbca6d2e12854930cc60b9637489c7832619682e3a8501288eb5716c994000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -348153335172302f58f7e0d039f6d0746dbb8d9149c1efc4318dbb4fedd868955a69d119e9db77645e9e75eea76e12553fb2e7454d5cec83523b70d2d390e44492c74d269497338328d0b36922fbd36aa259a42879fd5b6fcc49cd366101f0ee78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3c5c339ef9655e870cac0e565a7c99be763afa874d4ea1a902477044880a048e5302064c0578d01d851b69ed314a84a046ef7e246b4c8422ebc7883cbfa61f8be565468930181ffb1812edb4724e9bb574bfd8c5c08ccb5d33f5d4b47b180db148000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 174778c27031459d2f0183b715463d3f432d77c694b5946daa208e881ee0c6854dcf0c16db37c767246554afc76ac95225b2ab99f736e828d45a08469ca9f839ba63fe3636cdf567a578ca4f363f05e658144a8aa9250e37aacf7004716eac60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 85d10ea08ec273fd8fcd400f1ed35c85a76adf854af66df819966b8f77ecacb97b8c7d6e789227727f4b14e543baa0355c2571da5d68cd2f8fa4a5e2962b4dadc9de001e3ead8d93a8512c8d07d9da31765187837ff94589c86d949b92fb3a1bb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -345c89d5b89fdafe9e8c160ec9d54677266db1382e561cd3975c428a6639e9bf61c6ea27e19cae37654c392b00cbe8be189be4ddadcc17354c4a4b26022246fa452b1532e29ec25900e4abf5c0e158211b4664ec9fbcb23e4c6f4235ff9b08674c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1060f7849fca647cb08732e04e11f9e896208edfc2df7d416277faae0704fdacd41d262d1e0aa4cbe5b871e1bb5e7f58c07a32aebf77ad4b3bfacb723147cf13376d5598759fd222ed7ee96a87f70d1ac617f10078d41e4c4caef666a0a4ca3840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -528a2082dbecf2380373e2a4b2e8a4c441fa77bfccc72a0d33bf17ebc6ad195b1096d85ce91b92743c4263985e808a8f69d8a595f3eb49a3150a182c3b3bfcbf90bd676664f4359700c19c4102fd653d9178e84148d439ee575ad15de39082cfc40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9ec51cbb9af1225be617cd1ba85a91b51043229a51f3d373ebe404c9c0918fc8c0f64bf27a4a9eaa9948af977e2833a6e08af634285e2a815adbaefaf71db314e49ae54c0f071cdcd43858ab352f468d8fa76ddc29a048afa14ded9f42026510800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3c7367bd9ec918898e9676feba4ffb1f53ada0be897c1200f737d3dc9d5b0ac0fde887bb3f8b6bd70bad1e40f1b729938c09b55cf968c65dfd9ec07c1d6845e5c9cd9aef2d00ab04df04ed5cb529df88fda8bb7318f2e207027aa419d403dab65c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 76ad939070f8da3e64545fa153f7c4bbdd070bd87910f493d36bd62b89e3d633d3fe8f4e90a79a8df31889706e10c6d9229560c5fcd9bf60dec0a8fa58c0d1a33f82a19008f0f106b76c287a997ed7fb6c5f44dc958d0ad6ad5df0d658d61eca280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -182bcabce488cb1fbe0737d1cec48010216270e17623770957906cf8eec670aa888b69f38c066ad73fb98c44a0aede069d149c4d567000866a305cdfa03e8bc1299574bb6c62075f6cbbfdd9c0e17c6cb148e9229de52d709d8ca08d8485be740300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6290e3354c63da4be8a01844c08c8507b03600335ef1d233bc5be8c7204e56fe0d4ec0619b670970d3bae8c4a170f1ceb7a10cc18d5a4abd41f2143335cbdb9be037815109764019c514ebf6914d9e445ed4b56ec0cf6492504f4349bc1882e1bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 358fb85ab0c854becb2cb8dc040b9e9ccc4c79e7d2237211aeed6bef754c7c37dd400dcfa41ebd2694dcde70e143816f4d157b6da38f0a3fddabca0542768fad3ce6d1e92d317c06d35952f8829388b2be73532e92833b6d46feae4b88b204aff1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1841e62e10b52e10bc4cb257e6a45c50caf8534902fdc2e37821dc9bcc77b998fa4d3a878cf92fbaad180e0b151ed68d190de57879a5b3dc66fcc1db38d78628e833aaf5375bc5d66c9573286a84318fbdcaf8d331c7b2bfa9c7b9f45d5a4d81c9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f4644715809c37f738e8cf78760a4b9f09b9ba0ec14b166de892874d35b97d4cb9ae5626e166a0c96665e011403665099e0beb1230c8bb9a08f6f0cb7dbc33ae38208e2ac278ff02794676976e5925ef898b0bf460fa66aed7378ebaeda256e9b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f83db7620a649a31aec030e1a3224693bdb81e9f513122d338ca74cc10baaa5697236a36b4f03f5bfa4684c3d0a18121f8a845041411e8443c1c2e27df844d2077b4b5d02220d739499531d8c0bdfad31621f126113380b6c22e7457b02c1a4ea4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3db77f11a1fe3d39f2a2768cb803c6ba90fd13fdc41dfdf3d119718c77369f0b6156f4799bd5098ecf8c2019298269488e4107f746a884cdd78b76359894e3ba71e37c4f7940b263517541ac18ff13f440be430ceaadcc4e4f2fc402443eb8c6b43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a8a2322e8dde877781c34540afbd57080cac39e603c6db37722a89d2c8a24fab5feb42f36fd0569ba8a74fc94510f27bd24a9eda05375c54d45d4961c3b6d4ced2788351c8daaed59f1d465ca3cf269b0f7e6afcc61a68d56b925f5239e928c0d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b6a299162e1d87469fe3cc592330fcaae818eab17c1cd26c3424165cef08d46c6f21f89db9ab2544ea057713901b0a6b84a37da9233ff64be7a0b71710455ba29ece4078bed3ef1ac23f8e97555bb2e15dc83d688a7d10da7091a859775937c5e46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b0ce32ec7a0bd9198184c389a30e643395618a66871d3bc264afaee7be6209902fc11e6524b09bdc4800169f2130f410e055af44ed60cd9026abd6a194d5f443583684583d73f3d0ed4bf26a10e150149022c5e6a576eb0cbeda5f98d63ec6fe6d3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -239c2d4b65f1daad4e8d4fd63b791dc3c5bbcdde63bced68c92db76dc6b1f526c19db38c66fa90755520a64dc0c0f73188dfcb6bafe6ff3b35a3cf46055b5ad00fb4dd5c6e8a47170e93be2379b0696de9a4c78830294dba7ec7f532afa929c74a2c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9dbc75e308a087fc00674d142e62ea6106379f089edc55d652405edd9597210347366034ea2c3c613d281a28e8979a4f3420e2f3fa67fc0a1390ea6b0ea5cb247d371209da6a9b76d0997ab010f64a9e9016839982b94463308e2cdcbb4fff96cac000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f5f50796d34838c9d4284f31ba55a6b61b5394e1a964d913069873577c1a6ae4f07f156bb01393391c4a69719ff0066d070c9394962b1419dc50639ad1bf7698252822df61bc098ebcaa665ca841979f37ef817cf1825bf5396369ce90e6cf22a9f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 72a9dacca5d4c46b3d5e2904802742af901c27a9d964d10f2533837c1772b133950b48beddfdd65ab67e3c5e3b37e5d7d3aa7c3740f786b3628820cb6242f45c9c750d80df9f52a00f1e3acc5a6c07bb99be3da3106259cf75a6c26e03a73a33a6e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2d99dd1ba488127340dfa74e6396636381c3d5cd35c8def1ba0887ab4e7a46e4d316f12d426b535a2d0908110a38f8038844461122183883f0b130be2bdb8a73a20ceee467f9757ff79cf4e3b851d2b6a6cb9d7aa391117e51f7dd4aa397f188d5390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2a2fd9977ba3d1fa68155b53aa70168bf10bb7f8c875a30ecfbbacc05d15bd85e23c788c24c4a551c3f66a3aaf40695a84c4d6d1d2bbe5f8218162beede02aa50432cb19bfee7f2abfae44762dbdae085500884c014d76f613a625e2cf78dd0576f28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8900168a6b2e1a6d0f765da22d603e19355cccb9a093cd9f3aee4d0e0342c12d3876091525f080190e6adc4941e48f202c4a4ad1b2b638f5ad7e88221835feec0cc2a509d36108c484133d405e5afbafe99e827f1f2142fb56e0623741a2127a69a50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ab7308b2da2035eb2495e92055c060034311eb7a31136f22ea94a44857ca00d89189b58de23db3f2d52e8997fa49e725aca8ad548c55a1198b5a9596839af0594c26503973c4114fc431cfb13c85884a36323070f10a57dec788bd4205235f5a98c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -90f7301ffde3ff2b6c946950a434bd24d3b79815d4a8349921cf9102210896f989fa37184e6a094938d25303c7943e3d28101339bb0651762c7414321cf03a40a2336b730f0ef231b55ab1f5b911b2b3fd6d299cce372589c0b7fb6f3803d221ebda0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = aeefa1431f2fda3b5e9c275a5c8cc9d15d31e0ba5d074245ec5bf8582950c835343b104ef7ce8fe3cf2dc02904aeeea117e6ca72d00640209b89db3fc626d92c37de97b90a2d5a28630595003ddeb1642cd64a7dec8b27b418f69dd7cccc00b247ec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6218b9908879c620cba99e46a3963b841c6b5666d4258d40cc9a115cb86fc9c72c09989d470afa3ff623edf687ac9a04e07f04e7c27efabb85b1032e4daa939d0a7d469f470e1125594d9eee6beb7dc3652379069b546b1f24916180d9c1b0de7c7cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f92ae6ca3f155b7adfffb06ec5438b3233d621c3616177139e0d04e7c82f026f9755fcbe730f84ac30288e73f66ac2f5f23add77baeb96af01dc9fe9e8f3119a2825b0567bd3ca16bc14fbdf619f30e64fcec1f095600d444f5bd6a7677b5d037065c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1c11650033fdcea3bf95007aef07ca8858744536d5666d5efab80521b378aed24a0f95435b48613326563a22a18b0b96db436d86fb460a84a52ea26fd2d6b1ba38df63f07fae533536749c59ac046a1de3c1d3ecb8ca441a7237049de20ef5c1956f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -92cb76ac6ba76c702c314dec921969b56b67c00a2aa81e8071258d3b5b5e112497e386285334ef32d8ecfd0469f39462da7eee0ca138d6ee5c4785d279958718cc7ead0b436a2c1f7aa95bec896bff95710e3cf67da513826c06dda0dfbe4e4cf67080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ec33007430ea1267e10db2b92ae44554cb966759304f20fcd5b7dde74add21f729153558fd3c348f5fd4b2976c887b3804903a5bf41321fcdc350566434d93cdae0cff37ca5d6498a5210f81481d54b20788a8f597b6018322a9380cb1f139f076b3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -388dfd9df4feed4d48133633636e409db418273ffeeb38654d749776c22d0df13f692047c744e7d3fd97d795b8997958aa59706ad4a06e2761a2b855b7811117ec59c4baaebfcfe95a095984d1109d21170aa6e52b01e91e6af365320f631c94220500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2229102223164d17c824174cb30f462346ac439e8901a28676760b73764b42b40d404f98c07271b62bd56da28879510af609121ecc03643bc5a48693571afbb17756d2976cda1fb14b4d87ec307ba69238805cc347b2ad386cf10130377e8e75fa068800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 36255773bcc30d813acef3752a328978066cf259c3a125bb3d302734c7c2cd3981e6f17ef88c1851dbc2fa9bf1efe18bae8e939133811ea230c57dd0333da63563d217467b75779366801d9a7cba984bf71a9b3646ad4bccb9dfcc845518eed4a0d17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c4897af4a02ff65a0dc7b1ac4b63940e48bce3b40a89339c54622d3ecfdd93c87f55d88d41113c1271694972396c68e39bd81d7f93be7db24be0110eb395ec942335f7fc5fca0ebe79f0aec418009fb021fd68e920d6952d8fc4f9da4269a9f1b9aaf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 427668db6b7fbfe0fd19e58b124d64c69bf7b2d60c2901eb51d0c8bb7dffa8943b01a01cb91b8f8959cc1d32e1fe5102ce4bfff05bf0f35807b9b19a85127c8491622e5e3b194b62373824a689f82c49c3be71898b3f3458b29353f82b86dc544a7b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 96183d0ac2676abccf2ad89e8e3e1013175661bd88504372dd67d03457b8bc21ea399c9a288afeced6714a3264694d20711467f960ed710c396fda8b474929da06e69ec50fc611e7d86d46dc4e4215917b541f90ac9882f14adafab154557e88ba8a1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3c230bab6fee63ef7ae7a30c3e3979e420164573ae42e98718c7c3dad0a68dae76c7d166a27812adc09744ebcc14e366374e3b224a77ee7f77fe1565573616919fdb9c8c2852c988f6c3ca34097bee43cc484ab66d8e2ea87e43d121ea0587010c8991800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 27ca8b71f57eeb9c5ac9f5652901bfadb4bbcedd802efc898bbb7958700180f4263334be98b73483de82f619aee3906844f69ac1a8bd224aea6e3c0af46d0ee520b6e884a9c1cc61e7e76910976bd7b1ad21d9d4f1821180854f1d8fdda1ec32a55f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bacc3a682bc63ef47ea5f8646944aba759d2be73e2622bfa78d8c06ae2015f5ec5688da4b4cba07a4693323954b203062bf4ac3e380558b3ab47fdb07376aae56dd469ebc6522a8d17311a411634a3520da55b89dc3efb29f77c1483767774eba12e46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cf5107ad84f9f26f817c3a41a9a5745b42979a9ce43cec7aae33d753de7b2122afaf68320a01d296d3944b59baac9758b092298e0c47febeebf19146f5808721411be28e3a301f8662b1ade319ce149dbff9e8aa829f76ef31702dc2bde6e428ad5eca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -35bdb1fff23a1b5d296acd34f0695111de9a672a7d582e8428eb078d9aa6245da95798777ce60a7396528c402ba9f884857444c14dcb0a1b5b87833229a2097ddbf83089346074c555d69a3b8c72287b31cfede717a15be5681ec384201de4b4dfa7862000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c82f082586d4e512568eac540269d9f0b3f44f1acf7308640532c93f04ebbf656663c87005477b9a32242c47f769f7379f56329b4e8f7603421fb591e501e6e095fa5d3eb94df1f87815c8cbb359943cd23233e2d845961829781a863c33de0b6dbb754000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 4a893fd44907aa2c3cbbee27e1c3a5064c3b05316acbe23aaa6b413867c85e3da702a25a7f63b8c880d2611949ccaafb5fb62cf71ac961310ffc8baa6c929ef58738ab5045ccdae9b281f1974a9680e124311c1de4160a3859a332f45417613fd8c8134000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1b21de02e0d0827df44b23604af7594a7c14dffc0ac43abf0d886ff4a24a0b0f3610366f5ed0becdcf68d266592474934f243c3a09ccbc3152b0274d422e9c29ffbab5c2eeaa8200ff98dee295b552a7c823cfae391209bf4cc1eb8e021e8984f943abf8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6baacd8f9b961f37b77a77d3b78ba19697fe49ad4c3be55160682417d6077f8f784692c003ca5d00ecd33e2d395aafe45f261405ffe2450409cdc9b31be03d56ba4c29c2c762a1e82aded3d9b4f734e6d87f0ea8a71af5739245f8466e6004bdb969f88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1827a65803974cafbbe7e9096500ed68b7384a73a3ed589068dcceb5b7237e90b29bd6e6c8b71f642517a996f6a44b96fe8fe5823b09d8ab42a91fd9f2b2e6b52b7a7b047860f8ccf440c7c1f15314176cf32112d3344ab6f4a51b792b46419107b8a1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -40d2ae9e146211550ac9d8eb7452bdd6c2af764274154c0bd218c7af79db3edb250105538c0a91aa4996be9f28cf135eb75a7551fe80b2ad616cd9cf4d8c2325363f3025549f1fabe9ee5f1c1faa1545b01800f5ca2241985ffb29576d2a1761300832c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3d6fecd381b02ec5964e3ff5622f141e76bdaa365f661cff9c4ed8667fb5df6939c418aac64e45fb92bcbc81fac60c901d0f54ae5ab97b1323de87de13dec179d9535ca7dc02cfe19165de919a61913ed4d2cdaf6b273532c02fecd64625f3f24947e61e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2815dab571ab9e5105e4f155ac4515bd9cadace83520a699ccb1ea007eba588c25e8263416b2ba3bc11584c9df75d353a661ad3b5b4174e8649a142debe2123bab65adde6d163b1e91e2b569ee1acf470e9a9764eaf2e0c7dc3cc26652016a74061ee2620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -63767e6cbca76566059a5635257695cc885ec41d0ae06bb32a7a830e5990e59b946f89c158d0e7405d014b5d0b39dc727bb039c2ed49c822d95ef1e3fe144c9fb26546c075167885f79dd02b999502db28fd654f5186d4049ece73d1ad463cda9f051f7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9550b35017bf73abf5ef3bee12c31405706507a1618fc1c30b3fcbefadcb336d24b093990c69a9a5a3596d0726987d9b719be25e5f1bfc053620392d4aa68e634893a0354b3363253293b5fe8de1d686cf336f95e2a27beee0114f115e4179e00c0c48380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2c1549c36bbb6d17d58fc75116c5dabe06aad745da37f77edd9fbfdfa7b83fd679c7b2784508a56725d7b23e92df80c514d6e8323dff2f3cd766879a8552f012239fabca8db4477656526bf365a28d54f0547062842a9adc6f1208bf5e8d483925d7089380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 241f0a73e3c4535771f6d300636280c44a6c3187bc56599e42c5b7bcad11656be46ccd5a45743752fab7919d41c483995217f0c486b49bfdeb4b351568070c517a6a4309d2814a5613f1a390a21c4a4b714acb26e2e6a9b82cca2ed248b27b6b2d63015500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ac51bb5fcea7a2cece919a2b6cd128324b8731d67e911e2bb1bdeaf4357b3d0bba6d761c72dc74b6d03aa1185730115ef36907a9001f139390290ecc5fa9e5b600f23ab9aa090467ce686e6e344eec5163b67f7874218ecce2921f6f13479223b90d792300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9b42a76b8d607219b208303e0ab7fbda3e9d57392659e35c22ad3efadf12e5ae9d3da407466abea031bf390346d52814f7743e7c9639e51496b2a04c4db7a78a3fa78babd374b2809c443aa5db8951040a53e16ba7e9d8958b19e76dd7484c71f102adfe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 14455bcd859bdb2f2669e8845731b148ffae15ace680990c9b1ed6b7df08cfa1565fef003034278188f2c0476bb455582ebf71e2897fe339a8598977f7c1a8ed8146da608ee51e50569b6645d32365186a94ae4ab2b84ee86a4415f3d4099e6e8009365e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 7278d021b9990f34730a69ff74d6fd42c516325429ee995ba4c9eb2f9994e7caea70bf35c90225bf598849c77300f59a3cb72d472cfc00e7f5c05a42609c1b3dc81f895ac07e062057e61349d85cd1682e6bcee197607f0c3828a1ada4d5d34d5e9247dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b58b20f6e868514fba7c2ea38955cb9a434c9b65ac173f2333cd9de736258c1f172cb90b037bc781421d0e0f4e03c18b4cc7d572e26f49f4731d0e35fc60d1fe2fa33ddfcd2fed53cc1d4360e278eecb7f1a190094cd8c58bc1d4aa3eda09447e8848c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9f18f0984870e1f06ff505f4d3c817bb71c6347cdb77659e11961ea943aa82a18c7fcaef20965c12a510db349f02f4ccccf701b6ba022675d2922e5863160852f9467d1f8f7fb3411379c5ae92b8411a1d33fb751faaf012c3878bc5e952ef4f3d540c69000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -24591f36263a047e63e9407931a0e0d5c3639fd6d363a3cd563e948e7d86905e20a360c89565d193b0e0134f9ae57d92a511ee47dcad40a3b70c7d5dd063efb58ca04b0c48a32d8508e0db79d0f88565e16422308f6dae93ee5bc74d38bb06d52f02a1c40800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b2bd6a29e62b438e37a313cc688f8bf4f021b101620dab239f68577c75ad531d6dcd83d395c1060fbe63666f5faaf1bc86f431cf74a064a6cb7a245c21e65c3d10481c7e2a73743333220899d6084dca7de98d3fa0dbaf28bd65093d474fd0d713fe97ea800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f9002fc1495b75fc737f260f72a578901eda7fe42590cce518e2f0cdeac5c263774e35b1f5323dc96ee376c65e8fd2b13a8dfb73416fa0c79b4333ed0b9f539eeebc8a727aa5f46f76aa33f49bf664853a4e0c14bef19ca7cb7737edc560a3c3c64bd7d5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -303a9c25bbe671ae82b2d22d4986c66fa24410bf5821c5a42f68e6448d634a53ec02898970e6765dc523297100e13c39a5b82ecbfea974d47eb3dc4c57d629c76ab1dcda79ceb91d64633a5291789a9a46db67e34e900cfcf8943a6c3b583d6c75a039034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -316c0a67cbbe90d211a29f89298d739a62e56c12afb82a7c70f10e60c1ef798b8591e46fe099a7dc111616ccc8453b743fccec10602c15be98de04cbfd44e2a40c6b4ba25aec7610ddf8f4ca154de0e34640cb3542b10932cfa76f13df0e2038707eb1112c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b143caa2c95fb2b3053207a7a6eeab2e450a6ea81ce7e7c90e2b110419b0462031a4404bc76e5f74f266c0d3e11901cf763877282536026421b80062631ba81dc7f7149084d27f975368f9072eb6e22e87fcb88f521e12166b5e04a1b1c0686841f847f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e3399f452e38f640c8cb7141608b26bbd2a37bdba335c93ef3b3682c59b793b763718dc5235f395285c16220b867ae3922ec0662e45fa97b636c348b78d87f72dfec4e2a0cfb9217b75d51459d506e5f79a8b96ad67f0f7d19c8100f152926be274ff08840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a7f72c3d1fd9bf95fbd88ea9fdeb33f154364ea9749def1d2e756d60737f7608ba1c052d700bcf7bda2d62a0f2bdfb878ddb30b0bb5c8b4fc3c659c39eda3a7f5ef5024e78d5912995691e8e76bc9385bf01430b5ef7f0e6d864b7c6cc04e49b4f5119b19c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -108d2613ad737d4777012c0695576c50cad9939021a86ee0828d2d63eea1cadc8b611b3df9567066556974b7876a45c1506f0b0e6208f5ae40a4b2cebd9f4684cd68ca62dc3a689cd948222c1a1cd1c94ded0f547b7f4df4d7750f1189edc9b6d2b53dd9848000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1e05b1530d8bf7c2defc9e7e7629a930620ecda096f0e4d4d143d6cb309f7533fee6cef27f01ab528fadf155e765bccbb6ded36160d86af98823ce8af95053a1b31c9e618280ae4907392ae961d6bf334c543f951714249b343fd6dedfff3336b3a1f05b9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8287c6d78fc850948a8b859d82a952e7fa5105e5017f4b03dabe676179b35840c0bc46feaa5deaaba3762269daf1a1fc5f7dfd940c4758987386bc1adb248b71619da4983895dc9a4bb360679cc5c588f924f6bd9aa68e5f19946f42cddff71effe0ba42c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -dcfcfc2895cea9933f44155ac194cd08c758f1d782db2bfe2e735422a9fc1eb20cbdbbef2a53f338d7ceeca0602b97ee37979c352a265814afc080456958806b2af6bc57e0ad438d540a8242c70b363fe1b00092f408f4420c7bf71ef3239e7988854c35170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e47a407be0f7169fce6759446b0f493ec70e7092b750a067d1587bac5a97672d483f22a2202007764217f4d483e573f80e63cdd8e990dfc48edd60ede270027668a37a53352c4445fdb845238a4fbcd72fd269f091c34e712e5ebdb94ff2e253a5cc5230fa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 292ac25244b0f53b51ec7c2f35668c01ceecd26a90f5664e2cf6f80ced3a8a522e08989ec752b27c8fb5a2d11c6885ea34d05fbfc81a75f01b3eeb64a8274d39f31a14effd62078e79b80e288f7e03cbf0814ace3d1e44eeb4853867d42bfc887bcf883dd2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a66488b2ad4a58c69008db1d7e1c3167f48929c3e389ca3e0df34746e3b7f386497b53ced76fe64e58705f9b28885c84be9fe88242d9197f7e195d008df59393cf0bc016cd28d07a90f0c4a8ac509969557c3cb97f1d04a17ace5f2057f5f8731f688facaac0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c9b91dae70b1bd2a897ce98daf6ad404b1ca7c813ac24ce8e2603eba99cb50a993198e582797d6f573ad5e8904a60e3ed353384069674f0993cd85247f0d58de7622b38d894bbc71d137d04bb7f093ec5358b1e997fc116477b18d18a9695990d0b87c3e8b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -12c5391b1713cef8efb49d7012c9413ffb9675c51ef0cacf4e54a00975e6e99b87d7519eb3aff4d492a2955dc9c8b85fe35200dbdca2a9ed3dbd9537feb64aea465d1ae521c384086864bf0319e3a67f27740826e50f04f458b9cc3fa3acce84fa1c928496200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 32d1bf67427c0203ea32dcba2418476b090ac77f152fca97c24a4042c38f67c22dd8ca138a10714cc26112fb090ba57830257621cc404d4a72bb2c410977345c1f2d13d3063f293e0ceac3a272ecf1ce2ca46683e4038b0c94786385df861637b7af569104780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b8a33bd840c1c9f71b8cc0f6d70dbced1355f94b82ea7ccfcb40ed37674325f1443154bbd9b5e7eb468b0615750ee57cb6d413a3b46c7e3601719f9bc9b09808466811f58f5d805965e3eaa2b1789c9f2b85583fc024a9babd9cb582d84f7bf0548501c1d7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f7c14cac82410d704a8e393ed7675df852ba5ef876606236416787d59c2ac2f2015ef864bfc4a50950e7590e812506a61b64a620b8db13bba1f1c462a69edfc043102bc1e1d4b6cd0b98642602fd6b4a2198397fc64c6559de897474502ee0aa82153e47cdd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cb79e6c821a3eb0caf4b9c81984b7cb1bcc3c5f27cfec1620e668b7e3b852b8e41a592592b24364a088efa303289220b8727cecf418de1ee6f6c27ab0c5595417ca4c0f06edb0195e4aebab5f377869a1bd6b1de5a02566f21bcd9903a6344ffd0791e7f0f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 546d24303f14e36e51b6277d5177d38c82df3f2a085ed5c477ea335a3aadef96281362ca40df1a13e3c0769d24485ae1e94264af546071cffb6fcd815403f8083bf079a8b1c7322cd45a83dbaaee0ce64a7067becfc9c0ebb0be660777af4f4c9f076a5c46200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5d792063f8750453b7bd95919505f1f7249aa7cdfa73adb35fbd790172643cd70a7164167ec3cb7a2347012d88bf3de5138e0dfe1a14df2f8b5d44cacc7bd07daf1c75b5d482f5a89b6718069e2982afb6dfbcbdb290312f8d5f5034561ef4945a43aa409dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2779bbe6064a68c056c9147eb8f5e35cc4486df2c773d391356f0b5bb98eb2528388db7213c2cc0b1de3a0df94ace76dae5f07a3b7ef1141893994aaab9648277a80f4beea60a5a43d85bab5097a587256a47ba4debd41971dfb306989d343696da0e2efdf9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2d09c701cc3599040b108a5467287a92982450edbd8fba18c57e8d067f2965cc5b6928057bf54f7c2bc340401e7438af82cc150711ad056a89f50a6b2a868a2b3f8c709adc67d007bdac07a8566b13ae805295bdc71dda99eeda422216e04c149abf7a57165b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3d6f585d85d68f31bba0fdf03d43b609d0781e064a04d2360b73100ec2fcd81637b8c1b47355c53d4d8bc022c72d2d0c7eec6a5dcec18e596e687f7b7e37704339d0a9de4bd7b88ec635326e87b555a8973d80ffa9f753bb5875ded595cfaec781aafcdc4018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f0d6bf3b9d5e925cf8ba2f1a6d1fb5280610459229a5344e3105d9b0c97c23a0947699969a19fb443fb2fcd9496024539bfbe428638ad739a82022b36b9947047e343876bd29705fc614813d1000c9bf575a2b6f1563749c2be57498fdf2a3f04ee09c3c7599000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -39cd23197ca389b3d97abc764cfe722a5efecccedb0081d3f6b1b093d6586928d7cd7aa709604b4bd3bb9b8f0fbd78f8297bd4b1a82ee91481f6f2c2701cbb81ef8e2fcac9ee2c3e2138bacc1198fad91d1e655f4450940d71ccef3d7e220a8529769782baa2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2a5a1d307dc1802b8c100d5f3a744798ced9ec8f1aa5996386c8133a7ebccdabffa4c747e41b7732cbbad4b4440827e6b4114b585303839b2e37e57b4236b8965c2ebbf30f53a289b935c86e1ae6f26673a1e06d16470d62ce5504f385eadd258ac129335aa6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 27d309bd2065de0ad84cefa4bfdf0cde6e9677ee9dab8e185c06815ebb9167f2bc1d7306afb916293d12d077dc801a6f2de541c2212f01645b6ba23b145bb8c3716c6dbbd4666fa8c9ba47687da2b0f9fc6d68ac3ff41fa9fc8009e8f481c011c1299ada90842000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -47a155dba7a48d4bc07511d43aea7f21186ef9cde5a505a53a6d19b7475b05a4f6220b2d018143e82207117693643be117aa0267d4d5ee370bcd05e7f9d8006e7feb9db80d716356840edbfb7c98e2e21f04deb1c6cb5fe8afa02b2e6f7c859cefc29d2239e8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c006c6bfbe4cb7e98bd98467d59824323a7fd67cf5bac0e365dc1d752955ad1ee00ec610e9e5a726c672e6b08221a49fd966de9364e4afa10d8abb42ef310415a6729cf0ae084861fbe7e0cec5e73662fcbf7be72396194fd784887c2c46b11c5ef08ca660974000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1be9a30ef137efbddcfe98e216d66dae4fd854ed95de5750edaafee2fa55eaea74f347b6c544c407511059e8a0642303e9e42d3989d26620c1baf4099d8c1f8412aa49a3268353503b912b68dc49ec04abc2f12d329a12a778b472d0642b30c407ed3bf84193f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 145351af348641c30321854e83f0a8bd8203b6c5e337aca47fd3a0bef85f5f4c905c13b4eaedafc5349319616ebde6ff49c49bb00ea6fac55fb883831c03699bc2726d9605e108f2037b1d7d9b51983115b45bb793fa2cc001f98746d923848d89b93ec93d1778000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 7de115d59ee283ee0744a11f58fbb46bad7219be452738dc4ce4b2f5922d27d862ad9125641e042465ce2f0edffeed923175babecb97727522feba2ee9a0e85b1f3d2d676baefd09113ae7ac3d459f48df4681837235c082d837ddb24fea0b8d2130e6a23674e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -75a05703dc00042ccebc5c221b7c827561eb30b866670a68eccd5eb782d2e23c5a8247d235d4550085c61fef51a26d6b3faf36876aa728864a4fba6a6ce48141e614d506a3461e57efd9aea708ca21006a1f97d5e280b5f0bea6ca85eacc14f074512d6d44d300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -33673f6487695a596dde400e28f61d692a464592004b7b0125b2e14858ba92cb44e99f4e5e8750853da0fd714d73034e3c2a813ec16a76412aa2b61232d4e6955642a853b120d04725b730d853d9db40cf721a3738458960d98d0a896276243639880723170e5a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12da5d15fab87d1bd39875c099e8a4dd87204195d787ab0bfe47fb39af46e3a71504e3a6c1ead891066e2f7587f021657964141fd218e147f34608404fbb5b58935287485a5e2ef76b4afa22c45bfa3de3d47af6589dc2276e6cc14647742596550a3f6529fe2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b9673e319d9a47b0beac9e781f87a4336502b4ce71147e955fd4d22ef664b963ce2fb2ba480faa45e8ab65967767cb011b03d1312515f2d9810e5542e4cb6e541b866a1a226d068e490e4d7d2cd8a5eae6d13c4c0dfcec696cb2a5728c0726ed682e03ee9784040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6add53fe3f30b30c656844f7289209822eb04fa7fdcc3774f6ce5729021c8e4a4b4bf59326d35765a5f9fb22438b163cae61b218d9277ee048751859e0c32fee1ee6312f19c41630ce5cbac97d0d72f8b2bac796a59df56895cb8e7f0462e7e07b85dafc6d937c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2b62cf6c6346350bceaab2ee3c30da733ad4c9be74a93ee12c12bad23a87a95975f5a4b06a3f1617ac4447e87c016062e1dfd0f6934562abe458fcf5daf99b19f8e2d74f9f1fb76ebcf002cfc9efa729d42b623cd3e9a85bbd2248dbbc401e6e108e94760a4e5780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 14d318cd7fbb31e6b6d5c34b7deed20db517febf073ed9ac52755c0a0c41b689c44974ce2a332db390f9a725792fbf3c101d15aad4523565834c8c8965293b26b991b181f7db74f5ca4803fe0b7db069e811a52a81dc4273f71f52bac04f2062e0eecb249a558a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e18da8114aea706a97e718f71821a10d9bfc5205092e840a46ec257a6fcab4aae5b573d89716919abfb8d153a0e28d5c5d4555c5621d8616f07c9e8eed27e8db87b83818fbe6b971b5cd9fb13a66377a1d57486fdbcb564868251c5cea0de98ce1cd9a9ddfdded00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 88308b59a75180c5f57f4d5f113fee356eeac5294178ba9f7c172e16ceeb05b19f6fa15a1ad30ecb954d7451cf1772a6887b2279effd9414e0c25b2871bd92416b0cd5eae0bbf38de38e1f195806a236f257431d8249e5d3c81d559bfb5e795cef3d7308d4663700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1caa7db6d78c4124636a5942106d71d0319a0ffde27017b91d6957b148f53a76db77a6edc5cd24b2b3464f1bb84541e52f353dd2ad75255b42357484e3c37b2470336186a890340d2496011ca52fe6f8017d9b503e113c20a403ce6f7e23cd53e55520b11aa8aca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 18dfd6cfcbaaada22d22a3fe9f04cc1c5519f6882813274850dff2b7ad14413e72ff4a5b4ab11d0cd75301a8032eb430ba3a047525df31b6a992c0b75dc0ab11776fee52c87547d8767d947acedf4deb693ad8a0dd540741a61d5e66f0c0e837c244b93ee7fc4b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ab8051eace0993c123a519a66806d70571e035136dd4e69c292860aa13767ed5fd490f5fdc498db5c71588688d13a91b9eca9a9e3b80b64848ef34310612d134d1c1c0b7a8127cf84fbeeca99d31f2f5923e737b108289087eca01abc60d1e731c8cdabf2a9e7ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 52938400b0726f3899cba4ed20ad5fb861efdf9c5d87d8aa2023e62e6dddaddcaa0b0ac6f0be2590301a70be0e8e54de82e56e75f67b11518692acdb59eb981d89fb5e044980ba1711c99996a0813995a55ea4323bcf648d6baa81c8f9ff269dc0a26f0a0cc366400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2cc0652b3f9711e848d6cbb20553edc1369aa0c89ca637429f13fd0fd4b8545c3d98f40fe74870c3813b62b2acd54f2c8f6c887091e63a76ad00dae646c0de2efa6afad39e95eceda666640955d3dbe19673177da2ba149652a7530383c4f3b3a031f99242b2599800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8a4b175b197b70fcfec3f5a850b8268147c9570ff6fd8977f890fd69b90d054fd7d81b0d48cdd83cb38f0f6be753784534eb214c97f7d0358e5b6fd6f59d1fb1d8939faf310aa27ab857bc66fa7c91e50f4cd378a9a156cf82dcd9b6e74c154b99237f69bebfeb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5ac0f80b9981ba109dc14caa5c40e98fa2b07250624d97028a6c721f4eefdb8dee96205b5745794db4412ed2f0816453e338c60e63c94d18c09d1920813847c356e8ed706d716181427d9dae20d9154ff0c41f3d66aa5e6ca59d98bdc8ee7710d1fca138388f717000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9814ecb2d488f8231ff577eddd9d4e55fc882f35b93509141256dbf950ca6116ef49660ec9978dd1faba92707243a627bdedc925208cd41a2c9b7cce735d88aa4a972b81b662151e172be1a16496be4c763d335d85b1351639a63a40914e020933ed7051ff71265000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3547864209d307f3c9a833236458d9ed9bacf51a171c0b9fbeeb43d7f54893ecbba9f513115e1cf60926e2c7de5b8c3aa6f2868b2bc8a1c8dd34e132e2bb7d44adeef1cf70e5be8d6d6db2e04a239baf0ece95bd6d3e7d2ffaffe9dd82906106684376aa78161556000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a3dec3f7f6364d2cb70428ec1ff48e95b8d7973474db52a57ad8e02600a29dcf5b41836487bc6ef51b8d521ffabbf2a337fc54a4d576772bb811f83e66dc64ae7cbac70bb0325a20bf0b60775de98f5ba39ba959ffadee8504e8153130b87d4c523e9dcecee2bb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 32fa3295c80590c5ec9621838936a1832fbe42ceaefeb789813875c0e071eb377593215f82c114b1d897196f7a0c79ab07d9aa2f210e44f976e5b38149ef3ac2d1cf4fe23f101b90a7c502586fc2a676ca0555889f684a25243ace84993854311e898783f27288a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -eae220e96ca097be7d9201bdaeb8b2fc5585ad437f64b7296a95e6835d87c0df948c60992571a6b2d089b7ea6131567e550d951885645abe15f37e2f275a5b4ecc9280b23e0983e4d6d7055e4449980381b49bd1f7d6885a7a146e6e0b1de735d0e9d97022589234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a016c846c1de41b3999409d824c52e7e2b1b24adfb498dbe48715d3bf29a88a39ff9097f573cf2d62f0f4c05d03935cd791ff87cf34edbb7161553c2fdfb5b34c0505d22a3094acae35213b0eefd3b258af8055b9af2f453e176c1cb9dce7580b9f7629b42f06408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -24a4475f77bdce9c53145bf6d5b982d1e7d9156650c9b9a1d29f93bdb06ab1a9182d839695f7169116776d2bc568a2c5c94de6cd2d8f685166bc9075a1f143e2807545b303086485ce44e87fda55bb4f38e8dd0e2d9e33744a58438cbc2ff86b8347e8f73476c478000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -668a14ead996a59001795556417da97b26b23fb26f1284b1cc1bcd378ec623fbf083b8fd5404a7db64bffcfe667ddfb15c56335eee67e0d6b8d6d6002bc953a7b28dc8a2031cfbdcf94e2e0856b6600bba878cb80fee4ffcab79080f48f6fedc99b9a2158df0de0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f484d8d9a8c9e0ba06264a2673264b2d18e5463b5f3e094973806d175a9ed45e4c217e3831c63b7c44134ec9270d2f75802f9cde92cbc9a0f0a03b35720002c0e09b7ef4d473d95b224d08cd6e5b7b2a3815d877e35b4d136190f51100d9484ee6355af486bdcbf20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -172de6d9e654c55e04537bec828572b7e92ff0015adf2d872be9ab8fa527f720fa2b88f76ae4c69ff76eb9771153803c7871716c6806cca5c53359e91bfb75d7aa7d086b2a921d8823190efff01a1ba28d5ddc0b4de51c8e3202b7e181f28990468b2328318a8ee2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5bca21e9aa0894b59f787c05e91280db0cf282f038aadf9505290cb71ece7882ac3a380285f93e6b68b54cc7e5db94a426729ddcbbd65f6f152fc8f2f82420fcf575dcccfb148e1d3b6bbd303ce2dfa49fc61b01f63c3b10244e53ab4f89b502313234516c13ef7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a76a577c63bd8c9b280b8687e5b47b630574654d62b7848e154751dcac02c0091589610181ae6a2e7ea41c829ddc3dc0caf85e23e61870bed55c06e9f23db913b0ae67d9db84305027e25ceeca410ef6bae40ea38719c55005f8eb5fae95e2dd57f9182796d6d734c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6804e6939eecc434606dca268593675ef8d0ba1521cd67e7d91da8b5ec595aa7bb7d3d62d3ea1c24798dd624e36012a3bb09f3b01077411399bb22a7a4b8c3894f6e797504243837f1061f96a37c9a2a1ad447a041a5d82a35d28e9ff171752a5000c9b6bd70860340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -20928e92514f46adcf6e611946a0493f31fa73476a0ee17cb3a0035bf1b9089ed1c9aebfb750b35deda1f3fa531e1da0cd016cb6d73f8f5af19296a5925e5e0856cd229ce3a740879188278285f407ac37e224355eb7909ec7337c125ca4b6265a3643acdf738916e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2cd54b06bc1097ffbf7ad9f02559b94ab5d37ab061ac04202faa50af55f05fedec498783736bd4094057f33029203d101636f67e801e258628ebb8d24b4d8f73793a17568b957925168c45c342ac679507ea3e89fb7a617f58f74507c064cf372dbf6ebb6e96d48e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = bffe439d2ddb42d5b241f3d0ebc715f5a8ca911237cf7f7b678b43228c3c81ba5687b40f5611ba878a46f8f678e2b1a8f011768a7d2028288f737f76c8a1863727ccb9e45c876af48f8cf2c51980e186eade3c1ed19807566693bca23114625a6a888a1cd71feba1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5846cbf786cabe9ae1b79fa9b34c3afdf3eadd45cf60beb3fe1459c2d2a73ba5864fbb7a71fb42e5c701565e316eb3c50eaacdaf0f60fc7a4a8d27dd25e907c23a7555ece41ae8667cb9aea1c5b6ac6aacd5ab04ff996e2e23215e08d67225424af8fc9f7008c0aa500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 329c281ab4180d5b6bc161eed74ec03a993a1504195534d9d2b3111b003a3827b2e41a1b85037ab5b5e758a8a15e7bfab73964b4f285b90d43b669e88611cf98b206abb6f2e2b77f6e7640e00cef21c8e8952dd28a94698711c55682384a4c43e33348983fdd0a136600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 303e951d6231284b173d5f99a397941d46f1f84a9f8bb94c39f34a64e90fb480894e957e10a689d9b57a52bf2b151dc5dccdfd262ef21568c6b21e612855c043a848cf7e54be7dd666cad98b5dab49f14acbd9e6f53a759e4b5d8f520fb8c002f3c80eb7f3b7f1d4f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fd7444b417ca029184c080a97da0e36e1fa574d4464816ab2f1d35c92e1fd3d1fcc6b5457390c4f7a3ed72773cc97ee1512aa0ef531193e0c32ca440570d4f6e0345dbbc8ada8642336d8e680a97924e1a0abf78b29e4e69d39cd9e8a71dc51eaf3f73d1be529551e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f9c349227e2ff77cc87c849a2d8d488901f2b9d0c41ea69d594f15d93c05e55a48a4b2beb3fe9825668e3868cad2bd850f10dfa593fc32bfd8ab2b60abf081dd5f6ee245b2dff6c52b0faa8e192221e395b308bf3674d7e6650279861cb674d253111d1c54053a9cec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 19420a3292590cb896ef68a80ca089348ae2f1d6b731b7dacc22a6c2d9a9c86ff44d2e55470113b3f4bba3c3a2d5bf57b6120cd16e2ed1fe42d1cb2a7cff8753e89dd99c27df197e71678f9b81e066f00a033706aff0c13ea9f6da90bd64af70d320af4f09b0a5a3dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 38cecc011fc23e46d8add2c8e92930d804f8692487763b54bc9848b7833af1b76156ee9832ab2006a3b52a5c981d48b697dc7b1fbcf5697edfd883d2cc89e34ebb41e34c4ec358afcbd9c5625231db7648c25923886f97407021cef0d39a41f97721a1b87c9a9a24cc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8d824db8f2968f3c0999036ad1923da35899b24af620413dd77e0c9097f7c5da140ad2761a31fa0725c17b10e21966a7e9a68648602e3342b5169b2ebe0515798e7465737dab081e8a43d32d971368f43f0640eaa3f141e578c942b676306afc559f54e0dcb22da931000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = bfce8af7080132ed18a5068dacbecde603fbf6a4b8067e41d73c42cc88562737ea9cf4bc7868e99b06cec5d1587e57804552089fa2a395e242cc47d4130feb3ae256b8f91b511bc868cd8f359eee97513aae1057afbffea12d6c40cd041b8bc9ecbe820af053961965000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -380c82a166d52a647c3e02eddbf495ac62bfc4a7189e11eca51c5e4cf6d2bc8bcbd7b0601c0bdeb4bcfc46637246824abe4b7c2072dff9a75be98983c53f4a658bd9b987497bae6e81c6602623e98d091fa2eb85fa507bc7dd3a019b579fb2f3bd9b8ac54247767cc70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fccd7b313df02df309b9613228726ec664ea3cd382c2eae49dcc3e867973731328d880b686b643a4b52574812016f53564a6aad49aa315b6da3dcf6e9859580e7bdac40781101cdec50b4d20091beabba0d15c6fda0d1b5df53bb4c937bdcc1647704b81f15ad66d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8222f0be1808e2ac508cd3f424fb27ee2c29a3d190daf5aa01faa8465a15f216cf5bbe43907171f6bf28df1a82987f95a993723829735b2a078ddf50c3e732eab14259f5694525166a651e2f8fabbfcdb063dff5dcc4c5f6a3d42cfd177188d9bc70932614fe17ae7d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9f8e21a537eb7794ceb3116394ce73370ce5882bc7408cce85fdb0baf2600875de667182db9ff0485a284df51299cc1b2b2cb02dbc9f886de478f6fd9f35ce26690f6ed9019a763e43cdffdeded768c56af35edfb4443548201c7c18a2ec7a81bfc19629b6081af1d54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2dcf1833dc448a8b40ec5ef445bd985155bb85b03e03bf40c9eaf48eba8acd3c33efd4cbc8e42065b77b68a871d3c6249325d976810de86105b8ab0bb41163a57221af58ead9d42ddfa22cee4386c1acca48f1d2d384e3fe3493f79ba3b6c6a4a2cc48ae6de3c4e98038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6eb6239c6351dbfe3c1427a949e6f993cde006191b9e66e61f57a2155df3127060ab08077f65bfdc5660e38548bbc096ed1ff9f10e1e1a461b3b4cef624952cb80b27761f70b2dc9b4aeb7d2cc4735c240863dffd1720afe2ad3903c1108f84b7e2acde57adb6f100d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6e04a51bcd931dd4e5f0bd32483fbc6bd040fb0877158846e3f80dd4d6ed660dcae2f421f3bb873f7a8f44a1e32304d73f6455dac7c01b9b41f84e5aba565e445c638365d98e19c178e30a3800b2991dd165b12830cd03743775f3faa23995c5bc2913e89b1b8db4ef80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5021f02f3e22aad67c30b249bed4b68e8c041a89ffa1c257ecf7987d3bf1fb509f0747696de11c03a374314f37536f1bd497495b3780860d53fab9b214d7f1c31a8ad9beffb76621c47a99a2fa69f1a493796b6bd1a7d38484d4d81f1cbd0fad78016249d1a31159dde0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = c31f2bc319a9229f7a0f79ad99c1210073d695d2dcd5a12af981bbf5a4ae7bd971c1621ff2176e05a3d7f1270fee4398ac23d0c0c4510e12ed74a18cd46b01cb3b3c8b5d00280f632f46127c228b139c6fb1a95faad99a0d63fec546804d4a55c984c97c67dd0fe3f9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 390de50d178c7823203c08d0ac188087815bd0aab5304a186c56096e53e937adc05053eeedfd234bc6163e35b4064d44c55d1743bd4bafe4f3e7107262627d8490ac73f21b4d8f3c45f9d7670642e59c35fcff53e397eb51a59f67b95f97f8e1a7704da1acd516886a060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ee26ab8f1fd546cafaebe1914b75d113775ef4fa553fec3d605ddeecde0aeb474755473de54cceca8167a1757a353ad64932a399a5d1d0849c27cc79018ddc6607f331610bba7bbce7231f3b3e37e2436e88683f331180cba53ed374bdec448fa8f2b5814ae8d9f8d0640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -e92a0d5646cc9fd5e569404a3eb9d8eecad65b164c76285f01e1f1f58db57e70cb5dad5007adfdbbfcf0b9dbdbc1be57a316505d031861af02c5721ce6a327e6153b775d45b0a645993c7559a904904df8149b0e60a0dcde2ec076bfd6108c7c7f48cbc57b105ba15ba40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = cc15e46f7b6f80a3d2b7e89d952273d5fbd6667a29b03bc0448de2919d02a240f119209955eba18de15c4a782eca3d5c774cbeea0f4e911d17c112c10de205f97429767291a2d9343976ffd227050591bfdc7eeb91582d11305c850922fd5ad233a70aea146101fa74380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3d848e9c67ada490412f266ab542d6576ffeaf367f7e4071efb23f868d06d3b1248277f0e976c042a54a9d82b066277f5018f1849bdf49ab65e81d15b8d9d18a584ed9e108e084fdfadaed81d402dd87c469f41eb7dcdd7f770ec0fdaff1b3ce3c1463800d85680d06e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = b80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1841c1f36aca21c5969fef4625e95666c8b763c857846449f4215b7427cf0c0a329379851d9dd5c7fd198e3ab74b3af54094de58869556a46f46f1f936fbf0b8d0e8ead13f0b0c66a8519e3cacb4298983d995ffbe6e2ba06c0c47f8c4915e22b6021fefb5da57256dd600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6e6117fabe798f550b4ac89098f1ef357dc8a737bd25cac0ae130800e2d3aed1346b588aebf43ae66d81edfc04ab820f48d63242b1b976de120192b411608fd4297d7a55037eb6a3ff81008c2825e3eb72e9e78a24f8965642464f6b4e5c75e36755c74dd6ae0f5736ce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 33ea18caa8a278b8a7404063353cd63639f5bbb0e5f8c55ffa565fb6472844cb169c04b7a67b64669a5738f3bc12a3d158b049e7621c760fb0c2124974f924373cf65582b47ff4b9996db6e9465d57c36677c5e2eb146fb0325a69921c2e380452d7144573d3e4ae44aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3c602ca9b35791da9db25c665909f7b3247ccae59cbfe90287ce59d2808e8c7895e2df49f7019c4155e74621d89c4a664476f426ea3e68c79bbd34b7a7cef9038303da48fe06335fddfb522e70aa1e24f16643938d7ac98ed18353c075dfb94d900ca586ddea27395daf800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 870f613097cd2ce78e2de57b31fbee701c084f9936d6fcff509bd844c09e36c28f4e3ae0310e30b19b2b4afe7122b2ce65b1743c14c250181284b081ef07a1f2269c73d7205aa1881346a84b96a8900229cb53b2ff281979a6bc4e60f8771950540ad386c76c17eb382c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -db5013b62872ea05b1c6853473d92aec524dfe7c953fb6f3c8c05ac8bd2d4371b44f176e6ee46f67c5f58c1bcc2a2bdd91b708a80cc988729abf9706340a9fcc5441369bdbc958c981c7a07239662d69682d073d0d5daef1ec7e7b2320954f7daad800971b8f709ddb37c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -34f5259a545cb654d355999222009f6b0ed0db6eca0a4de326ec4a63f65b95f9863f52098553ed2b8fcfcc5f948781cfdb0c274c2bbfc03f2d8c497f08fa776621ec11f8b3a49933e8d6033380ce3903399ff663089ec05b8464c36a17aa641b9200adf074a38726aeadc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 87f377e98f88cf0df8f0635864ceed9abd472c98345b278868af687705fdf54b4908c760b6b65ffe79be336c78821f492937a8b9dee014a6206263dbd661118ffcab03a3a25e3381aec56054c15f11fa6f77a812349e2d3797336dd3decd4aeaa90de160e73bd3e82020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = aed6f4a5c6dec06710bc9b6e659ca8435a97c2b1d47267969d64ea3a21744f7c9f8bf6a39568758eb337627c02f5c7e31593a9c3a2628553a2adbfec1c2d041fbf42b4ff3944fd020cdaf6d321c759c650a33793d3ecc7d7275e610402e42fd4f43a86c008a5f4b235dd7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 57fd9149ed41a46c78b09eccb53e7780aa33e335f5af93b149fae8d3712e3ae9a83c6f29ecb8b4c474981e96f5fd68a03d1c8b7f4610d053035e9cdb156d8d625de94eed3e5dd9f4d0f4b55eabc67a126ba20816f8bc33f3fbd3111993eb0b4f72e79c83d9531f8edd4c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 13ffbab01385bcfe84bac46b0df763d15685be3055745eb75a98bef405b0eb24104f6376bb9fd844000eb21a5188e2711a6486d96e9f29f13ab757836de854ed12f168777f043b6bccd6d6f10a99157582b2ebc059ce1ea27ce0d29f87aeedfff550f7e13222c6a1cb70da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2fe8bfc17764dba8cfd936eeae062b5a1bde1ba4f5874d56e99bfaffa183ff47dc8a0f4534b5a74ef0cd74c8ec86da7198efc18468d215524e3260234b98966d256bf5758383c8eaffd581d2eab4a4067b05285ef8da044d0534f92cbb7c8739a0407c70ddaecb2dd92d14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b430ae9a33157f41d8d2205a3df0626a86ad2af9c96acf2f5cb7689d88094bcb5784a67b5f8f7dd697ef2ce6b5d29afeda608a239fe65ae2d7893079cf6226195b303c4336d960ef40beba79e2d00f58008e323293d6eb005921ebd7a293d1645e6670a2180caa20f9c14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8558ef648d05e77487358a5d99bdda5ad7b22acf7bf0fc407d451ed0699fbc9922e12143e5726a26c0f61e8e7845433aaddca6242dacb62bdbf7360234f9437cf8687becc2f31d72e9d6a5d514e49eec6f97c21dfbbf47244b9a1956478d7ae845bc69c1eef5cc08c90bfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2f6141d36d2055f8c624af0ebcf0e2ae82a83e804224964c8080b10f3c7c1100745964c5312b84accd6928e8fa1fbc2de76960ed79a1ad4998f3bc78977618603b589f6dc912a1fc58eea7368e31627f9a363ad1a361521070b265901911240153638778a32992fa2dc8880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2b2879547387b9a3001ddf81976442a5ae19e73754b209bb37c5069da4327bb06c5ef5702376ea679c5d7d4d0c751bd592803e0c5bfb39d315d68618f970e58d4db24d220a793472aad694343095dab3ad5bd67b30795e821f10955e7667b8b2c5111e1680e86111ade950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6f2a08c662c428615ac99c93ebb2d2996d96d3df1610b9f1d8fb097fb44d57d5107351e2c36f91c24596aba8353bce7c06aab6e67933f5f868f873ac5abf1b139315850e33a1f9edd1ae0c161c9ab52b8a2e6d1f147c575dfa53644163fe03631ae11c69ad4620d5dcdb7b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 95909e4999716d33d190031a08a3fdd9b32d26c411601d6cf017293c37d0dacb7a6578a5470555808b2b0f0ff05261db8ca90c53588aab2733ec89c41612130b4290678afa8fb22d0afcf0cc1337f6db3d37349d3e5eaf85b9aa6236a486561fe31064128c2dfb19e6470b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b1c0257b5cad3cf7444e7d6a316cebe94799965f22c23fad06ff5336ec2fcb4f31a37fbcadc759e32756eca7475dd7e50f83affdf6b9f1c1c4e2c7a921b49d0ccb681a0716b8d3f463703cbfec47255228cc9760783474f4fd9624e66610cef9f1660a8811d12890ccb7a20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -34cb938b560bc08e7194b32fe8f0a2ccdccab010cc25bbcf44a55e55deb351a0b1fa87715aa9ead09baea17a589727f81c4484e33d59e65ff98363e635cc31f5454490119a07c7a35cef4d6f1992c2f25ac3d836e08f34201429b8a6b7b48d1573015eca79854a54ee73b7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6b4ed0d217d3b0961a2dd257a15f2c80071c5d5e8ee7b0c76a4354c6696c10550c170c8938897e8d61bd571bfedb0fdf2551b7735d1c24fe733f3deb867f91ce945b88d88af151a65744bfcecb0844a80674cc6c57b0cb581492d080625a080929b0dd4e79d6768a769a300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8b44c912fdd8177e662db0845b5fbf9678717630e1a0df6c116106c56d3b0c1ecc2c5be0bc8632dff128dfb7e13a374ca11a6092b3796081929243bde8393c8f095dfd0b9580a75bf615c2287edb6b0d51f2c61ffc2620f116254cf729943035c3554d9ddd93ac41ffd66e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1170d18586114d4f8af92781ed5b4ba0d3d219bf4e2e265295a34d6e28b425969eec3763948e26e216675ef3ae4102d6b4ac58342b18eaae5e92650250a51b6ac3ea4447c746cdb3d6b3427ecfce96e97ced0d3d1d5f36cf8f9d34da00857f729be2275af36dc0bdc694fb200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3cb071f495c93d4cc768e9c19b1ca14340f2444cf72e868c248c84a6f0ee8fb5e70e824bc0f7ef30ab19ac1a7254ae51916ae0fe03dda742d4da21dfe3c763c05cbdd16b93fe1dde42df4381333756d5b458a224ac1fce9510e950c38ad5f9f04861d194c8698389298450f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b56b14609d058d45a11abe2e256de4170fe6c00d189ed86d9290b41aeddbeb2371be9daab826519b141f02656666b185ad720f015be2454158e4386c9a4e23ffe88008c72578ab91caa35c18e686bed31d6da3d73d34a1c0c142dc12931de569a7ecdf19862fb8444d026a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e6c06d71c507ad57f47997818df0dc6725fc19e1b0b0e4a9bfa6431c79737ccba7986d503e644615ef66c061cd2efa1a45b9a58c2deb95d9c13899242adad2c6b880601e4123d712819ecfaeec578b4b6b57ba12f1fb28bd894d481073621050f6614eda533da22bbb4ee5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1143f7c83d2da5cb41a830c619f22e13a9822c6d146e29ae949bc8098c0c2444dca58c815103e44d8bb1a813fc6b43ecbe60a3740a96672f16717abe0500e01d3ca3472ac989f4de52107a9d1f374939a1c50366be5598bf1e3454355a95a97a5470eb1b1bd088f45dff8f6200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3bc31bcef7da86bffe3201ee14911374be7dbef3e25dcdb584465c051735d325a3a2b7bd6f616b4badbc74f3472411972364cb7dd627ead4282a0e41c5f3be73493b81aed61c3b26b1685c9a12d18736d4556fccd473c5fb5bdcf818a55a603ff58150c55c40a95b4fabde1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8b7c2d94907c29a44f711225c57ba1b1e793eae4be78f2536b71f77c85628d00ffe71e3dd872052bfcec4bd0c3fca79696d925c79de35fbb1751fe70b17fb8714d911139142dc65dbc22e1d9b5316c69db7725f5d26d2996948462ae4fa51dab7052e28158ded995ff69e13c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5882601ff6b14f5632eb45c5fe0a4cb3ffa42a66a2e945555cdeafe79bfac2c8f8f35e5de00c9618a95e393f96af3cbe1bcf14a606c5c1b38a549217bee5ba50414e154c8de27d3adaee2b1dde6b0e6d755b36c889db83926032568b0810149608ac89fcebae99c9a53442f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -35292784c408a72e8bde974616b78bfd3a86876e024baa386466a9578cc57d210d8be27326e2192eec0c7c85e687f3542e39d3806ed30db6acdc93d58211db96e59fcce9ba12e3448cee1e41c2ff53a9c49bdc2e72ff437168c5529c770def4d7f73aeaf277b57893fb975dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 30f07c1ad4b6e014b5a26b699ede209cf9671724a63989d691fb9834d5e2e918c94431cc9ba0dc5e2f1beb632dde34b2448f6ece783902e27294d8a12864cd4a651fb2205623a7c853d0861a385744308ec8d1ee027d2e65794163cd1215a50ab2cc6459ff4cad20d089691d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f68cb72ebec0b73207f6267c0504cbf7de856bfe0f3c985d332d3d2de2ea141b952be33a49ea912281c2103346874109ef62389106dbd495a707a668ae69c4f78bf85658319237f8f46e86019af3142a4a0ab586d3718ba847cbf9e4096588a23daadb40e06f68b678bc92d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 7df3625febfaf2ec851a0a34d4d5005729e9bb9a1ab8c1dbd1bc7ae40074b27840bf67a92ba00ee0066e73c87f0c07193f5db8d36c3a3f8cb7edfc0e9e3889a8a37535a98635cbcbcd50d09794ec780a78bb417cab95d8df270f973af0d6447e9592b752081a2ab893b2ac99000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1097efc8d5d7c6f2221b4252446188a10ce6e1088ee0d668f465f69e6b48cf9ab838fcc5291ac14435d37e91fff27de80df864344fbcfbabe289b3dcc7bc7a04158e5248ec73ab789869b719b23500715b6b11d4c0d2bcc51dbc7bf8a955b914967c502ca810b8eb50d9cab2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 11b640d55832c9dfbf42f1f40ea6034998d1cf0d4274fcf5892ff1d5fdc7914aa039f4bad9957413060505985a55edbd30d2c8446e4f2ae8bbc0f0ce8f9c4d129d9597f6162040f4b38eeefe6ea7ddda52590a7bcf3d0c0922146e240e5dddcdd1985c7c9d5114e0501e4a28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ffb84b75b8f98489774c1f8c5552b98d2c896c444e877a2acdbaf8a11be79fdf3ffa492f9e14c0d9f78bc140c88d86ff7ff40d93cf8778e90fb99bdf320c157a192238dd1f22a1f7cd62ab0fc7fab95c7281ff9d76d2e5a96645a1a22c6b29fb5329ed1ae46bc5cbda97bc480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3efaacd682fecedb625abd6cf82d3a7c7348b2c38667ecdaeb4988bb8384c64fffd9842b4b04a51f841cb839db3067e4449f6bc64cf83d23074160e61236b3e6d705e0b75a24669f031cd81db7390f07d6e87f7b106db719a8dd0bbf1f8290717a512f7a8a5b4e54ef45e8c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3fa7ead587d431ef4bea7ab9ee6506b0ded4c07713597ff71fc1fdcb8fbaf861dcc74a6cad5b94b308667d6bd69ebba135f4af79cce9c38108f7b8193aa23dc7db9e3070fa6e4225a7679a334d2d7abfaa8596b8fc88b461e5eb20a802e8bef620596fd286e5b4127198603ec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -58ad3771d974596f172f5a032cc523b663614db0ed4d8ac829b389546606b9c2a6d26ebfb240d86c162e944f8f2e0995419ab72d1390f4051dc282a848f92834e2c8c3b94d3a8636ea6dbb178f60050be8b11eed5d57aa960fd895c6724e7d64ecd6db07dcad5cba8ae7d2e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 22a46669d4fc9ea8b12b7125a3f49bfdc45f1c12993b267a92a3959e129948496e4da2d3f4665a55baf27404b8691f1ad9c2f152abbb407d9ae0ec34d817586adbc0879dc780b5457f2a2763b2e7fdd9342499a9fc6cda37c670d5c7234c62f17921ea32398e21fb8740b24a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3f5117a1530fe19f0c72c3c44cd45dc158ec38a47c4c863ffa8c223a054e47fbff1fefcf39c513b836e52954ae6f1031d8eb9637f5d72efdd84056431c84b386236fad0633042d03a99f1fc5d1a23558b5d31bb213af80db4d5d0b356907e30911d626528d95ace77bf8f21040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -32be7d42ca5a16751894b1c95bc064b1d91e3c154c8a2ad502a66fe953eed1b2bbbf66afb3410d57e8477a8a64ba7d8a363c681fb655d577907bee7010f228da8c6876256c01ecdeb47ada1dc2eda32786b23fa3b2e353a1e13dc1bc3ad66e02e9f06e8fd15a2b53c71f036f280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3715598e36fb3a5cbd8d5569504b88f006ea8580850a6109adee24c91e9441a6543bcf793859588ed1e5a14882c3fd7ec2825bd34ac75055bedc453f71dd27400b2e12058eb4b864b1b70006b7d817bf4de10c7905b865e229b882d81c9f45992cceb270ed4865f4c935e1a6a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ce098754f6d29e77038ba195b27698cbf868bdb0f2745359c109de289dfbacc0ad3f205146a548be2a372521e54ffd9d29c1f4670b40ef0c6ac6ffab5f1ad37908ea7025ca03faf31b5a8cdbddefb0cc71abf7eaaf31efd29df30c88ec5fb6c3ab90372b4938d8f32efd1d40e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d899838bd351f021a5cd047daffd53ca086bdd872573e87079b4fe44b137fac826154986df5da52853cd0746fb8453729e1d46c329895e5202e45f6d9186b987bc13f50e5f6c4fa38371cdb27507a8d7a830cb1cc1c4e933c9974d6f08bbb457a2590d4d65b3bf09d7a3d98dd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6dedd208fbc41e34b6ce4816f990d4b13be69248f672acf29c91a5d72003aa9306aa6e388a57d4a4b54efe624a218e0653ca7a46f216fcf0215ac7daa8f6682cbac489877ed49f269e158e7d9d72e36159f0a4a37ea29032a79570686f0bdb19d0ebb6a2eecfaab6b027b1d2780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 706727440c4d4be63ed9baf6c34e771f1dd79eec668804cea01503ac6160d62b422f918405fbc307c48bc62c7fbccaeaf04cea5af7214db2cc34248c29e9f8f1dad5f1ac9df635b354077a7b542aaec51639b6d690f94c95bb7d0947e32b0049b67281c6b747cc82a09504cf80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -cd19e9c7e0b76b1b1735761340a8bbe2940cb9a3f5ac378af497a86f3b91461e322795b2ae5d8798e2f14fce6e2e65791dfa40a43b062b83d48c5e09a0a669faa29470eb07f1ed7634a973a2900aa8e4348056bd83aa7676345f47aa621a809ce1075366afd13e997eda8723dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f9081f5447a033076401e29a3f731aa70323bba1673c430b4100de929ae5c4a033ceb9de35d0f71cd7296381315c6a99174664f3c04cc16b554c399484017cf512eb7570b339cd4e17b86e6cb28becf18ea8fe4e91930e247e2981c33fc8cc673605e547650af01db1792c010b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 55685bfc3211c12e90f2cf115a0516539dc2a03fcf8a6e5462e63a86f3762605788c1c59190f94825eff2397bfc1467a917bb4927c318899b1e5e9f73cad67f978069284e3b3bd6e2d1584145ab37e006d0770ea15d836e9f741e9aaaa09ae3d2c569d5869e07d52d833c94d3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 136f384e7d2dba3847abceaa491a68fc95687e047fad1cc4bce16de4e7c8e09f6d3da84fabfd789ee0409dd90df1a229dc5a8051b420f4fd83cc2b5d6483cae966a2bf6a62e8fcb125932501c2182a9385ac5d28c8f3394e9bfebb8d774ebf3334cd68c1482a67121b41a20cdce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b02f6dc8ad99ed080ecdb1c802d8f7abaf01ab37f0a0c281395e445fcf1cc4edf2d6cf5b874b9766af175d3efbbd3f0f49ebd33d80efc5b0d24c0e09bcfdbf8da58d32976278073e3f11348799581bcfc12c3284bba71a06c8e12f27958e33409c426350dc513093923f5e38d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c3a99e0aae4939aac33aace167d91f2e7db0f7b486c26c95e947cc0bef3dbee74882433fc30bda9084ef795c7f5ed3fc11fee1e5a3ac147be653421eca5f581b41d7b4562c811a4f2cc55e95707ca8a9460a6034f61122d23314bb75efaf3b7435cee2da2e8a50dab14bead790c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2e14e0267631e868e8ad5538b27d6629bf61eb30cad471933c078015645659f479115f91c712e7337821aad89c0304f8b45b47b096a5a2e446a94d8100b266523f6a099c2f3b6052796455341431966551bae368556819b8a83cb4361bd689bacd4d5c6144fc858a1a5f55c203b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2d9a4a7ab6d210cfec39be3c0deca8c6933e60c990f9d9ee764ac8923a3930c1ebf7f67a65daa228474b3737d855595b446a31e480bf61927cdaf22f0995870ab9585ffb7d74b7c659f5dc73f7fd2161ca170e06c917cdecb98e815f310ac00d1a0b0cf49905813f2855fef040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -503eff1eaf2a8c6e37e50939ce2485c9033184fe64af1849babefaad28e1666d13edab60533ea9a2ddd0a5137649f350ecc682367e068d094e0376b1d0dc4714f6fbe6779ed0b5e14e865ae84cf5f800d376c5c3abe962ae6942b0c91174b6767e207d9e1066b100942e44152d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cc63f790764adc9a4c23e324cbc8d03dcc627484311f3e0dfe1fce55f7d8f73dac0e9985ef28ea0665d507cc09cc8b17be3026595034ae0985a1d5b0f0e88dad47c4d85fd1cfc3dde9b7b2fc44b348b6be41d6a01a39115743c48aabeb7ac8c50edb2d806776be823d9b391b97b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -341855a26fba4b48e589edb2a4b6b46d56283cc105b6fdb097f95f4fea5fc449cba749dfbd069b6df0c87246a4ab914562eee7f42636ffa0e819d90c6bafc7106c99dbe68d89dcc8ad208e8f99b3a0dfa0a3ebc81cb1bfe8d7f1320a4f4d562e51a4e4ba7cc2a3b433364f512e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2da609ffd63ca27be7436c6a65cb9984da5f90656c6de62ab532aa12373d9408a66fa8b37c1b5a99f1061de9def59daa19b329105971139b67fa65df0dd9e26e976a378f6ed7c840341d4f5922178dc16521e8d5591c38b0e3dde29357845b1fb928a853c4c7e440b87395256e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 69578271dfa7c4d657d98441588425262822cb9380c7549e06562cc17c64ecff1cbcf18516ca2c12f72aac7071835809ee83b49b17eb7561ee9680f3370a1ba2cde0e0bbb32a32792a330572f231043e03fd1a3da3ed893c5e0d9c6b7715383f8f84c2004dca17a488863236ce7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -88bbe80acf0da35fffc87a9e4de857cd735feae63b23ebd0ee854a018f3133bafa5dafcac09f07c8facf74dda40436e509def0bd8d1995f25b60134c53b86fcdb76bfb5e4a55cd400183ac182f22f352592934ecf495475723327a8c95cc99165923d44ed8a62848f7c86304ad8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 21e3cbd21746a9407f474b11d77d0e4dfccbb6b2fef7497784dc353c5fc4bfb54ddce46f62651401720a8081f95f42cfbcd4fd698edc1d51372a3e63f00471f3d8cf7025f2a2a98821c0c0bef7ec39b595fb18b21252724d5f8874e29f266126e06ecd9e58ad868a18015643f43b8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2af65c18e9d6fbe072449ec5fee414d933e358b080762600aab65b79810a6404870b9d6eeebbd9bc87654a5ff452182abe880a043b561eafdf8665f7c840b8852f30d439f6a26385bc98b65e952fbc7ffceae79e104460a38e5ef4b5ee5fd552466ff91d478c715b4bd94328ec088000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a777bc1867845c9f54f2017272a2eef0f206c02b71e73b01cd0525a03b148b3c36abfa0a304f621df9d7c7ad295d762c8a149f1a501af4a6c62eab9d00ac55d0c1d771934358763f79647d90ae4fd9c58e2f24eb1edb5d6ba1b369c4ec19bdec549367616000372957a93d0857790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -254363d8921c97e268b48478c03cbc63a7523c90811a31e348559b09eb1b532c042c12b4b0f9b3fde42ea605ca7a7495ee151ebbd7ebc26aa6781295fc7ae803793ca3def6a2cdcc7b57614045c31c297d5bf1ed3e194df32142c751261d6a67ef3c512c12b780b195f5e5dec9410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -13b79d423739c10b69e8ad87aababdb3c6f6e82d05b71e51c348f05e70c8ec88fdeaf4ea57f5ec245872f50b2133951836fdf7e67cd73794053657cb6335691790067eb66b10e795ccf20bf30b104e0f8dbdd56e2d07cd97b69a3a96bd04fc53e4647a9add7504b491fb1f2facdfa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3dca046e4285490ba3eb8748c7836787165ce9f692786fbb616b9f4cff83223afa52e9f82d9313fb72a207de1384b5e1f6a0cf951bef9236de5483eeefcdd256020257c087b693567bbb2a97971d48cd5e41cd5f84ca4dae227c548fff6fb2796a4f45fbcf48aeda042b75ff64d340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -85bea6624c09172e9d5ccd5c4acc1a207f451e909f1029f0fd17f262c994100d8e7742ddc22a19c7dc1fb0c432a3844d5255ad66fd494a8219570f431ea74bf246af96fb6f06e807901006401319510127a6881bb85ddffb1ca4708dcdfd431c90aeb443bb4a2907471b618133ed80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -6bd25d83185b63c51e1feb5985b80e525d63ce68580ab9a30a9eaa67d193e74d06c7521bb82966a72ab772c1f1280137094d2b97f97603ae88e232106167cba952c9177835a450f6f9414c01376c87921a19501c7359564cca84e3341b155ee09820cecff314399322f7287f607b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fabe09c5c0e823452480353ddaaab18fa0a34c43b85e70a218652220d7fb55f6ca5ff7fb54e055d6912eb55957a731e2246fda8b592b03362599291ea464b529025c8a0df3cb4c7c53e6c3f8baa19d726189bebd941936e454719aff59a8956c4722708035b4601d57daaae10cfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -287619516a25c887e1fcb586d6eeabfd9b34e67c2bd940505eb299bf14a35471746e5bf4f20c95318e9da7323b141f7094474462484e65976d72ecd8787eef7dc6d6839b5d5e00b45efbdadacb6c7547487619138a8a428cf5dbfb11301368fbcedadf640900002b17a26adb944b880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f1fde2a2fdf16d64c0fcfc13b0bd62049ce8885945bf1e3dea6c16e656347b2254a60a18865b8577361ac22ecf4cfcf46e1053eb70d0d63f029be338cf0109ffb4bfb0670957273435ffa32b5f5510f60000ee2dff380b316a351bf8eb0c1a963c29e5132d8ca9e6fc3339b5b04fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 11c7ce7961bab6728fc04983ee9b2de5ffd00b284c4b64f7cca262601e65ab57f5ae8d01abc95f3bd13fdc99cce5b605749b7f039d99ac820300b36bce0b6769c861c6c86422eefa77a7627e31a93afa53b47e35690af23b24d6c89af9607416d5501bc7f2a603efe20ddaadf5b4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 35ba0ab111dadd4b8e4ef4346bc5843a12acc704d2e90f503723933a2f27a10c0a32c45bc1c4d29166179afa2cbfe0eab946d384ef075ab6ffbbc6c6745e723869294c3efdfc82e90a5f493702e940e16bc3bb7ff1bd76b2c4dba865094563b52e33b4ae7909fe62104668217da84400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3d233ab84e5fc8da165be78697a57ea8714967148c27038012e2e3bd6b6d0748d25db2fddf9e3a872a2bbd793873ebb9a8763757ccbea3a38289a67dfb262306b2913b98699968db6203814a0cc428cc36da2db073643d21f5b2f40f1fe09f8a59ec7ae1c7b718edaab3a89599f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a7d0a7874aba933020fa4fead5d9533267c8e2265f5abbabdcb3fc94ce62bb9e1d084aa056ca762341671b7b7eff642daaa0ae69c0819a39000b5de74e30a476f7962c5556253cae090ea3307a161de7a74b53b96e00775dfcc2be51cdd0210cb57bf43a0f61a967138d4570be6e8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 81b4f227068ef68cd46a0477e457dc8fd33354e74e56643c58b28d0cb53d788143c5c1051e39b81efd60787b40dc63d30e7e422e9f2b6d64d70e96a46b4f2239cbe3776b06e6b5a46acbc09d92f48f0940517b1b556d57895ea5633fba65783d0f498f23936f612b394487c148e0f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1a3b3ac1bcd831269c0457e962d8ef378cf5fac5678712a9add50533823fb6e0e850213479a1ab65ee2a218503c482b87ff705e9f2973a6faac3a34a2b343d95c3e8a0e60ce984af7cc1902510b2d4a3d808616ca8d43f674807ea5f8c47e47e4c8d744e6764f8c179bae895f00069800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2b035f783d44f9c2be5e6a811959801583cbf3204defe1476bee476d8cb9d88802644d1bed1ece498e441c8a3d83f8477636762991d2f4006f6cecc5c286463e6632cf47405dfb6ded9046bfad2bd94eab421e15ccc538c62b3d5a834f3c09332b76019d25450965d1b4f372c5b0c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -694660426b6b90271fdea8d00f80f1f1a8ea1f65f8474150e3c7960de17ae16a39c333ccb2d46288352f6bc8b6427126587a9ca9cc2ed64fda88f639d39206b388a51492b96a26615916c68e7ca041fd4c202e244ca94c9fb20a7bb3c4f1c659f3cfaa2fe6cb981b88b80ffda15e2a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = cf34f40a9164f8ebc27743c933ceb28daa4f5358d1dac10c11c453ca4b50b03b3dc0b345460f07b4940cecc3ec6feb2a3809a164d24a62155b7f8445d0dbff56d1c89a985316da745e53d0fea6dce91406c97d3e5b01c04f95fa56a69fafe96074b68cead25b011a7fdeee0d89c2ea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3df056f148686ad33b19c955e5215f42728e718a7a2f4704dfda2b229e00a4c3c5edc97c0c2a1dbdb17c30966b759f08daa6df2d1c7c0664f6a6625a85f538f0cd94ec458f56141eabc51ce081358d52d11f4b01e94556958f8aad0b88c11e6a50754f1aefcefe40f7c589ebefe55e2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 25ab6b1dbbd72c52618ec9513a62a96a58e1a5ce9a2326fab8ace8120d0f1c9008fc197896cd8c5d8567c2c74a6e8fff00f1a0f4763b2c12e632d865786d5181430c82568f14f111bea98874747b3bd3d0991eb6c7618e77047737460ba23f3d8a26d0292fff9990c6d900dcaf345ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a35f67174c572c28f02e923b73018d35ca5d392214e54ef6f9ea5934a2a4d77f95d05a67d2344f71dc6ef90867e39037f20dd1e778fd9203b0bedcec4466f8ed7a53c7a9e294ed8a7c59d5c574549d6d8873c9852929c62df9cc1fc120e58fc4d4e513976c184146da98b1562b16a74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b83657ec6352e5855b5c118ff12f4b6006b574e98c0768616a32da714264215e2f043e95a2566c1171685026812fb1b84d3f2d43c8f080853e11e719c3e3c9da962a713babfc633bdb0ee443eb8c33b46c7387081fd1a8dd61ad226f1437143dfffa13d3519e17837b7b6c33a7fc0cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3a0c9bcdc9c5c109abe7f838c02afb108cf7449395689fcad9119f62a467628474e608ebb4e60a8bcb19932566483cd3aac5471d51b8702b3e08b4d6b205293a6e478fc0ef3737ca15c39896959bd2c4a297742e0570ac280cc2a93b01886a4fc46c4a0b8b581783b1d44101ed049750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3a4b2759484c73da523f34bb058990633bef76969c80f0efbc33652c47a4df82368f18c6c1cce72e632987cc65cb298eb34b59c51a020873e13ee8c93d2bc829eb326c80b9001e05356bfdadcb611f24ed0ea20db3fd6851779e8f1de1137113e1ddb0dbebcf0fc6e798ff6a2ebb1728000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 884f37222019cfd0b3e2674c410bdf6df0c7bd04e698670ed5008c07d95969e04ed485c9aa8819e4a0b95853f9cf4ba1a52feda3fc7a69d27d83b6bb4adad98bcbc5a9de08b3da6220ab109dddf042a4902b31c9fa2f53e6e9b8943ce7645dfbdfbaf3b0ae293240f4cf665f52c26b20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 17fc2227e83c7ab9200e969cf23255820fe87d42f94a61cd3fbec70c2f1cc3ba8514844cacb165220336af91e03f6fcaf707ddc1d91a0616d2a10250964623f805e64057676b3e99bfe36ebb97aab664c3feb0beb4ff840123d22e0f65019be186f555941e3c51315567bb50bff16190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2bb5c756aa501a4fe3d1aef04f7361081953eb3fbdebaa25f07b826a3682a445dd0c7f45f71be2976a258840cdb562c1b0d9fe58baa533f17aac78f62175637c31d698ae4f3f43de565661b33482e3043c8823658622d78a8c64f5aecc3fb5e4054b9f92ab7d264b8f284c26103697140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3e1c575a511c0f1ff2e3196833e608616e6c929bd0851849e52389a8ff9afe7b9eb7f0890a569ccd33f9c3c1ad92281fdfd2766e26e0860a9131e8db294bbcf7e59bf96933c7967215485bc68f92ddafb77401f43ed4683f7140e6cc6919829e2092185ed150e461203584eaea9ccd3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 64b55d9246d61e541fd63064e36f50a26e4ab65e040bb09dc45861daca52cd3252dfcecfb803404ad264e3e4bac6c3cf6ad40101563dbd852578e319b145de11b5d36c6bb00fa11f8e6e364fb17a037e05fdbaa5b3dd95de9e12aaa35d791c71ed0272c74d8425cb949688f7c61ba3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -14c588f2889f01f081134b02a8b4c3edf8d0eae8723b81651ba68278384e78138e2d72bf43a35242e1c19278c8c38b800642262b8c53a8f5349c9b451b7c5f6faa37ad15f8f2d8c14131709ee23d652198183eda0975b12773a0237f948ed4968164c6be33c64ebd98f2155cefb1ba500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2297b50e9af952e56ccd1a7b31fce8c950e12624615336ba3aefbac042061203ea1eade19e467e966539e64ed95ce928aa604cbb09e158ad7f0efc11d5ee7409b4a5e02e0425e6da9af8cbf7581687b7cbf13d6e07af909e6e0954b8d1da782ce558866400e7b0c975dfa9905b77e3ef80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1c7fd3a4b516486ecc20c1a2a8c31cf7c9e43b810060457d160131b9db7155416b641c732e852621750094795d5e9f3fdd03c1c6c26debf477243d151491ffdb8dc780eca25a5a5f9bcc33e71cc37bdde4c666ca9e45fe4de96f292d148348d18fb0fc73a41ee72acc4ea30de8513fdc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9d5f7ff2cd0008805bf525ece0bbcfe3c2bf5b421c15870ecd86825c92f3f6e2504e435f5bb5a818afde37e940b22f1e60512aabacf949f1c2ed58b7cc53b6261a7d8ecd483afe776ec753daf940f5a62a94b31599304a8d59e04c567a40ea46152b1af09c9eecb46bd322ceaa80d2b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 713d174fd1a6531ad57142ed52b13abe49a6fb4850e930e129cbf350aa29aabd42e83440384813c83c2c096c4cdfa1d449c6c916b85e3db63b9f3ea05f914e3d79a7d54e26cdcf602fd899f2a08a91cfa3a528009d11582f1307e2acb7ffeee79f0378b53d5843c842762a9d4786118000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -38081358a02dfece4ffa2c03accb9ca5788f6875dd89e0809d453d8980fa4098361626347c81162147fac460107129d6f080a0d040f1510a8429509125c7ef7eebd0f2211f375dad32e6de1e85387a1763a30c5c434fff798b86feaeb163f183c3d2964681cd004087135ee1bac08beea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -35f0a1e1b7a7260ab9f22c4b3ee9443b1943311022b7e2fb78a2fc4e52f91fa0c8c081418453aceecdfb888d8de4288b7415ec3f72a76837f68c7bd73e04b8b20876578bdd8c73b2cf0d6b7938526152d55c1b611bc7a50edf424e18d05a2962cebaa6a4ae28c76ebd6e0e60d5f65574200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9951eb91b0e3a0ce40f17423d04923634899fe559d45318392301c3cbe9b190b4c113e7ab2a8c637f95135f7a9d0a59cfa7697069fd3de01defce4c6c57179a7971eca850479f3e2456175537b9441c8cdee051d7af3d54fec5402d2a1445c3e2bcc54338c6ab662fa180bcc5efa0700800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -801a1d18d3a853a9113eb9bf2a60f6e8db7585d65f05254f58c720e0e08a160ec9ab03b1c20827bb0e1188380c6af56fc983fadc9e3417ed9806cc5b0de400576ed675f0dc63f5ac7d22bb6277bac0391eb5e5f3acf785758429ae234347131fa1461f1c36e59442fddf40570654f716000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2d30631576c86c4193b5ad32003534bd1c8b6b9ce5128626177c14b12447e9b63e9bef78d9ed53a343bf2cc6746ca819a0298d1f5e9717898ef3426f72c450e03b97a4a6ecb06e4b90042a9d6afb42b347a49cc484efe36181e6524220fde97de41f2273aaf77e234ee57b62376d3cce4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 274a45420b1bf947b2ecfb46b52450472fd4a826f1a4172743dc9b26f72a8d30e46db4c07975f3d364c022fb996af00d3d48035b22b8818a615b2b13db7ae17b820e3c526bc673ac12c25400f459580d352a7ac7a91ae9cc3ff1e3dc8026241bbcb100c06a2b33482b0b2cfbc6cbfc425000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2428df01a7c01127ba03f512ca700ff3901a7bbd9b800244d06ba237135d22a9e2782190e6ba09f23343c4a305edca56ca4b1f3862e893157313ffe65d18c26625a023e54cfc820f6f8bac8ef15db94dc233091cd3613bbcd4e7722e65858a9168185ff0d5e1e61349b20512303accfa5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5bdd2d097e0367d68722b55bd78e6cbdadff68525c0b5bc3d5e67ee546f4d3cf3d363d7a4af8857bfc99b37bb0dc50922f5c573d988dffb57ee6ea7ec2a26da565f992d9c8563fb87643463b2109e7ce4e32664feb7ccfd7e66e7a71439181fce9af817cc023355867d708adf8ee8319f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 372bed5c443e6273b1b14ef2e5b79fc1ef08a3e57cd908bcb12cb4f05364ecb55b464955a0668a52ddf17612c2e981a239734a0820107f4599efd67f2b4933b8ed9cb7e8561decd2ffa91724851e12f881136cfe72cdb139924be23294c4ce65636d22a076b53b46e8d984a7cf2fee0ec8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e88fb24f72c462cc60eded0a23eabce7db2e14bb25c7d16c131d5651794f83cd62d6223220c0c0cb1c5f55cd4bcf28b708dddd52228d5f0742cdd0e572d2501c28654bc9f924ef6a95d5188f6f5c1e2d75524cff5635a11fd1d49684cf9203ac42ee90593dda1d55d7303fc0f6c473366000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e2bb2a187a9f9bcf0c573b8fde019131179930f8eae0288b9e1876e71c2f054e31b49040f712cb7cbbbf857f27abf865f78ce4ce534f4f4d44d3b242be8f41fcca6c20636986349f86e820ba002b300ef464484a3c40a9675092fac467169b6b81975009a88d6838259b7cdd9da86bcf4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 37a81999bd2a12c28f10b8dc2097dbfe8b26412712f64626bc91820b5f2b9aa378d282035d1c61a9253c68ac3a152b1b776251d3054ff95560e0c61d6164bbc841c7c58176ede49ee31d84cc22965e8a6f6bdf5cc13013543740d0572fe786133bf4a71acf2a9c807e05ff75b52fd60560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -de0c99fd22d3c5da7c550f062dcd1d8e330af597956bca374c4cfa5c43a8fc814c912427ab35a28e6c5603cbe4d7e225f4bb90ee4f3513100ed05909c117214e6852087ad99eadec1cf58333613bbde23dff098deb924e2af7853274ef79835ee058e7766746c39621f019e11d415cfa08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 17914290a6c82f8b1ad9becd4d2ccfd341a9d8d54a05b9b6dc435a8b57e10ff9427edb9a002031d2e536979a1d04e9904f8e8cb92251fa7a18ddc2128eca9c87e2bfc2bb95e03dec1021a680b55bb074894f41e2f65330f57b969f66be4b11bbf3cfbab02754a8c36b3e4300b091abfe9e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5f0b25f0fc8ea180dabab4831ff4b6b548bd47093164ded15ff9f7e50bd1f5b541adee5c2b6e84b3cd091e805574592a67d687c633f6a10988a3276a88de805f5861a50a07241919ff7aed1da26777843c861f00ceb8fde83dc0d9913afc438b4a06f4b8923c0f55c753ef5bd96e16fe540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c4657e6509390bf6540426d3eed52d7b6434c8f7f80fefe90c703b90eb4a7802636d260227d81e7f2e8fc81adeb27710893cd081393c43fc65259d07026fddc61f74a9a56006139efe58cea17b02bbd8f7d9e025017b8b99b4f740120e2cb1aa9458d9faac4094fd0e037d775fc0b00b1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2986f6cb4a4de6734e734847b949cfa976042e5890046c344b764af38e16415acb81f9a2a0972f3178836ac8e2fb7a3cb4e270b021b378ec9ec66e98f5d324cacea09438ecd68395ecde493a219bd2167e1f64240657b4cc8afdde33dd7d98b9b68659b1bdb39fd2f7a072ef3dfbcdc261a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a03bf95666326fe4c78a4b5e75b77b6eb5adf857cf3dcb6ac1ab2fe75522185578ab3299ec049c7ce352903d99f7972e94fe396c563e710f9da5d9c05b02e04ea977c92799a22e1a7ef8ca43fcccf514dbd8835b17609834626e1532edd5adff5a33662d0d897e3e391ba8919ed52241e60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b0a0116618bd7e69998c40475bbfd8ddee377598b895f597f7634e4b12973d2cac039ac295644526094aced4d38c33d5d93b132438b28caf4f2bd131c954ad67b0f2850e0548810fa80a06ae37dc679b24077d398ae872cc8d7625f3b1d74aebfb476d76c97f7f84a3d326abb6c68dd4e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 65240cda16c4b490198452efba2c68ec80b124a091ec400258dda28e80f13eb9c435fb7080cd65070f489cea5e494565851491c44461d5b03e1d663cf8c1c9a6a7e491341a14513654e70b00f79a7581bd14bd1978696a33f8d4f6c9372e3f1198f7a972de70a8c528a5dd457ad69030040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3275484d39c7d7d0f1a2da40b50a70c9f63b5328020bbac6daa1a9acbfe673e891777a768b9bd8892fdf9ab821bd781ded3cc8430190fd107c9cfca9e6e68c1dacd28a35733bab19fa094e425894cf81f570c353be659ee9edf9e1ce3c83403661c9404b46ff5eec0522dc777886bcd842900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1c2bcf471b6ef6f7faa0369197318b89adb46ecda95e557ddcefa85045d13f3ff8ab7370249220203f5c67c1605723ef4ce54b7ff58e200088ed407cbf36a2079d35ae8e68ecc0b8ba15540143cc14268bb2d6c43d52530ddae74f143c0e11a01f663f3e81d9fa3587ed62a022dc65163bf80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ff733af2a67c16b051dca2816c3c67f0c6aef1e605828a20a29c11b96d84424ba668eca8ce909f0627912cc75115081534adbcc58f42d7c520cb9aa4d05b2426c3ee09e472613b17483bba64ac61dc2bf0644763d2c1970dc21fcecaef93f9cc081fcb97fbf76c32de9e5ce66ada52c326d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = c96a19405a87aaf53bab6cf7a953e1cb65072143f9a4f43cb07ef42a13cc61dbeeb32fc7ea6ed359d4be2f9dda8829dcf5ec7bc6fe414eaf93bf396940627f34dfe73d635d231fe4940d6149e9ecfb9372831d32544ec32f1088cbe440773fa5098a0f97e996909c3e4c0b96492d9bf42af00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 97120446c3b122c679a763eb3e5fb23627de6bc468fe025eb5f96e89c061fef575c095b9a7e1b8dc530bc37bd5818a361bb833f155c2e28dfaf811b37cd6c45ea3f08d6fb53f9f8f73f25ed9c52417d3216d3d87fba2be12398f700046d172dda93465d53e8ea152bd54b1b6e826d93046400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -320919c193d4e04c6488230fd8e39e6bbaee053d2b267555d1e6bd7b9aafeaabf1a476f4077286b4c60621703782d0c9d64c3fda3ad31d659c851497cdeeba59bbeca68ca125231244d8228ce02e95e577029b3de03a2eb046a2f437870c0d5e6810d3ca828efa1d8d0f79d1e26af24e77fe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9298578ab4ee24737a2818d0efd50385a588e0d41480a34a12623f067cf69adb5c3baa47443e4c3a371a04daedcd93cac586599a3a16939208ee611c1362dd2ac1de435f5eb5ba0084802d659fe2812fb419964e95f01caf69184c0aa10567a5918417597dc8ad01beccd468ef995073238800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -21d188d2e614c315a49b1dd8f69534acfc5b85de32c80fc16c4bb00dc4381263396af904eb9b9209c9d65b91665ee5657b73c71c8c0feb03405c07a0049b4187b1e6600206c545ee9cc1d151cc2a688e260e555af0642ab2dc781fb38ecd0dedb0f493e3160e8096cbdb512b5d7294f9f52400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1c1cdc5387359bb24d335e10d5c4cdd3cabac0af8b767498d52a71abc7b35ba9ea2646c5560ee0edd426beabee96b25028047f50000e70237501007236b4466ccdf3d08083619cca8fd5302684117b44449373ba40bf7254cd0b5078434fbb6f1637e58bd5a597e9cc63c2e1aab367f4c36d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3490fe54b668aea949e6193a1b22a212617b5e84573810b5851101009981b1116f4a6bc2360528fafd8aeeb5c8043b9bdff996eb5ea7f73d7c465b6959d214fcf3dc16dd08b107801eecaa0daa2fa267b935c156f173bff01896592e8e983e761469d2c6630a5a6f9ec1809e362fe68524fd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6014fed3a4c676ec1849eb62aa298aa44e921fb538ad53e1082ba89ee2fd3cc1b99a2e3cccb606629bbdcd5bc6b93b80388a935d1910397f0ca27fb479397a0210e6b19b1ec92ac008b07a2086d3c140f990d96cda45792201159b4aeee3a5902a525fad031dab18c0fcfb40cd5d8e28b0e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d709f9263f661afe397d0f0d6ba30c51cfa48774dcd4647c93c9639e5b3d5381a9a06e07d969080c5b881d11a7c8823eabc061c20aeb7e6fd42ac572724ddf4d0d38b81ff5e5479ec37d0a72c37c137ecbf8845cdcb74589495a729620269e86c29ebfb6376f3cb3b6713df4730e931a0973000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -146cfa6f13fdcfefc60307ae7d751e79feb646c2cbad3071b00673b3814f731e0ca5daa60c09f72618883f875f72a5139221daeec9ca87435fc4954174fe03e816fb5a505a3a686e5446606b12ced609d916f8c8c85339d8ceec23917b63431ed003318c84ecc66919eec0afda8cd6850614a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2a1f4af5f1598eb0b402d74cbc5c5b6a0e0e0395fc0767f9193089769b355e08425f8b00bedcb6bee19e0c6c87ceef2382945576e684dabd1a9f8b7b1b392de13afe312fc81d2295f46db9f3af473fff09975c8dc02469563947cae96302fb7a2291bdcbeacb5341e33cecfb2109ea51f99e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -659cf2aa56ab84cf8478cb4c42d5bad57e9934e3dcd19d4d1242e3c5aeb99440a26a158c15717b58f00d91c13b739b29fc02ce8c27ef2c8dc263d3331951f2846aeaeef05d3f5fc96c26ed74fe7cb03b083cd0f01f89f45f1f00b7ee15d072c479eb6aac20750e52838ab0856f1bea15c773c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2b62305d604f953fd7e02473286675f421d78de3f8c5f616a9e9ef721ce5f2dbf4f269b002864519454ab61f07118a00e16a8e59351abadeac0064acc5b38b6c5828a9df57b675ba80a61140a6d978468e4e7d0082ea5b226f6bbafb506e6efa3e50af3aa1edef8f5e7eb8f4188253cff53e4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 14f3606b3051632ae380c00ccb95aaa815182db0e69a94f3353bca39d1cc98ed95d65d61f56350126281acc1cf3ca07c25644ea55e13c1064ea208ffe4d30a38c30140070dc32c998c3c2ca57fa368603ef68f1cf19169399b4f47a65e9263c53d9f223f130537cdfd0da7685256b0f62a0458000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -35d93e4c3411e26878549212ebf134c0c6d63ac76f5b13195690123b13d9ded48e055ba404e559bdf9fa2097f46472dd5ad0ba8414b0df925181dc74d62aff83c94e13d7fc735cd80094a08c0f7a36ed91af47f81c531eb8f81c03aed911bdbb3cd8ae55e5e590a27dba30e22b1bb422acfc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = aa4851e2479512d8de8aa716891c259368ec9d926e21d97b13b7af34decbbaf7addf53428dbca13bedfcddafddc872e445a8518faf260b6bd54df9413ff9e5d0fbf50868c1c9a6fa352d7ce5d264e7f93f6a1efdd083c91a4947694329f4f873767cb96cc4ab86d937f1e812ba27715d432bd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 265e8290004ba28ecf3cb60525b86129aff11c7da89fd52b561744564917a640daa6178518ea6fa405e6c5aef7b0aa1d7946cd6779b3143044e4b85daf627defda93e66bb4d9608f54e9d20a1a302ba5afc75bb57919664fdb5ff186322fa07e371908a04538c1fbd9a63ccb78c4b6f4cd1860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ec84303600056ec8c0e21d00cd9f9e3e5ae73a6460ac00a4d316101e7ac7d99f0d70d122be51046f73e79934840a2e492ea39fd8c5eef9fb2e6de4dd0824337513dc2a8d0a79c1be9470f95006fd19a875546e1944ce04921f18ccf215f31dea647236f5939bb30afbc20a26e91d007ce0780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -286557f8db3e2fd7cdc32a6bc64ebcf77e68ebf1674cae863e0a316a6c3eefeb3ece6bbc72c923361778d510654549260546a5a9aba12cc105a058a6a148284c6656f6ff315062a68d547e17866d51f473c7a9a5d184780b283c46270b5e01ba097a3a97e867e5db77ac587f6b0dde7273eb9a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 17fc1295632514fa2a8b5ed88bcb60bf129f77e017211699f95590790892c26efc75c1c1b640a32f63197b1db4db79da460794eb08c7389133c17d378cf21009b466f79793413cf83edb9f7f63a0f06067e540f2f845c2d30784f0f72ed8c97aba625d7e42cc1a29584388492e84ada63b72a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cda5a80dd4afb7342538de960935541ad745f1d14fbad9010eb856ad70a449ae4695d8ed65eba556bdea29260dd85fa4c439e4a970300700601f1d5ce0ac167ac5476b87f1ee1d65972723a218e3ebe9d6aecc6d1003c4f79f27031ce3f88838ab51deeadcd89f5d9f8fa0968fff58b692f3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 12013dbf5ccc60a918cc531b5d3e61a8f4c310ff8c442eaf5e16a2e03b158caa88bce252a072b4c86d0407bf61082b5ab03f1beda91fdae06e5274ed4681d96d0202a77ea1586fa4e46dba4a50938bb2754e26bac6c6422249f023e5a59be495d5357096921d06bb100be99f533091ffa1dfff80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1a99d39171984492bad3ff33eb8905fabab5d3bf42b44daa96728d1ed42667999ab7b9ac115fa7159fa19d8d44caf455ddfed62e9719444fc2a72c5571108b218e817e2b367980e189784b07681791788bb3a95ed8eba2f15a3e40d858178d36aee450eb71240b6cb44de689883c3a7e7624f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5e8e70787f668041499c78328ada0c20347b32f76131ac62892e7462eefa28031e4b10b8eace25b86972340ab9bc858846a49f8771990dd0120508f41924a415895b54c00b33ccdb4da41a2ba9394a45d85869c9f8d3e42493ac765e65be21cbca59731d7b88a905a62c9d83995009c620143e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ad11a3936923b136189371716225ef85f7df3393a24b72fb254eb4756e51e54ef53db532c83bd3046cdd3cc04a5de6c993a30780ffee152d815f78a0d808824fcc8441bf62d7081ab91962f14b42e714eec0ab9019008b29636fbc192efa4db719dbba6f533ee98ccc18287321d8b9fe6605d600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ee3e5b23d03dc4d3bf84177b1cc78f6ff5d0781adb56fb997182bab3b9264655760059808a7c3f2653d1fd7c18ac254da4c69f2f143698edc2806d6a5cbf1b787c02162c7d1516a4975a83c5985a5fc4073926b4c2d0c3949733a324e398daf456224fad273282341197c9e15f2824708dd78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5029956d0a4dc03959e4fcf88af1317a1bdec986917fd404403120a030c8f1f1af26071791c06404a29c99292ad84b28c3c25985718cccc53fe73e3bab330001318e9214b87779feb1fe1c0c6f878578d357fc7ba63f85b189388de0688476aff9b130d6b7a930ad6a143fbd0945bfe4bdbbf800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ee330558d15d8cf0b8116c0a457d26dd2e1e7daf5b368617ed7eae5fcb6406ed568b57be5d1f843d2a0b660102d2abbe055e0234c67e470fb2d6672e31cd652ed32070c662b7d07da9a605fd6b6c4ef74e0776795e58deba5b2e3e93f9c49602810c07bf4f9d975bdfee6037888b5cb5a6aa2c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = dc631d3cb8cab205b6d6b9769ee98b4e6c2f61c34df5caf2b53de382d2ae6852792cc066da60d692c04ed9e1b8a34eeae5c3c9b17a2162f0396bc4e84eb790303caa38ab2cc455e31241ddc55fec90c335b2ebd0271080d3970519bcfbfa1831ea609bdd23ed8a25f69fb540330bc3fed590da800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e41eac4c282094e7c31da0eff2d9f62bf287250ab4b3a377dbe93f070eabbd8ff854297909739ca41c23c7e6dfd61f35b2940c22c645969e88c21b20f640db72b0d79bec60275c4f590cdc36fb1f6f57d165e994a0b84b906b5852bdce4d0f8850b9ccbec77537ba3bc750b4a031f5b10c3e87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9a16023c78565ff3fcdfbd6d8fc24b861c24adc0036c78456cd62273b6075a5d09aea66be10e88aa1efd58c76c4da6dd6f4d101cc8a5a50d7e1bc82513d062c444eb7c4606b494ca751e52ae04c824b1b981907f29735eb9596a4481a236e0671135713b1ca4c06ddbdae113e479b7df4762dd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5f21bd428e9040a481a24b3a5897f35eee28e8a94ecdde5610e8976f292b827b32de4be8d54b3dde58d22370590add08d0a15a19162a582c8170eeefa4594f73f31327307151c9c7e5306246c0f1b559cc324ebfcb91f84379ea98d3cff4a604cd23b6fee6c52c06731e5c69cd6dffefb36b7af000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -466c611713a53352fa19c1c871882d1b9e1374ea4e2c77c549c2029bba29fad65bc49593cbade826a0025532b03b29e37ba83f2642871885e78f5b29f8d09821d748ea1ff91453579c7aaf78cc78dc46a1951cfc5e1be00839f728a0a94df611ab50f242f12ae9824daa0373bfd1ec95e7818b7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2f9bcbc132deb760c3bfd399a07c0afeeec7f105166a2cbec75c38d01f35398126af657da847adbdc7f2ae1e43559b2bdcae82ef8f436ac1ec3957afcc06663648b4faa40bbcaba2f9106aeaaf18731edd88a1c49181b11b5aa75355a8b3461cbe63a7d7b9b87b502ab27c2013648d24420dcb2a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 30c37375c1309d2a9e08349587a0fc6b161f40c42279a5c5fb4d35a5e92441c270dd333af11854e1749c294d6cd0445f95aade2ddc6f1ae3b32ad2a0af4e0073377da547a8264c36d486d6901062f8663770ba1c125110902dc8d96c8a6c10e46a5dc262994ff812401fe3558537081af6c5fd12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 6fd14d0a85a78262e8bde0187134056e9a78a46466d78527b198a868820039d98ac9e5b9806e6afbf57a875012a20f1e0844874f9b966d519031b0b8c3e447e9d0d295b6ebb4014beb0de7fcfbd2201ddaf437caf1e6cdfbe7db4a4e97f7cb2a428b8f859b978e32a066fbcc60e2971b0050c654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ada05ce17e25a3fae24433692229b50f52af2e53269b2f43831b8bf117ece68df1ac16e76a2d8d82fba6f0d565f27589f381dd845be8fecb5ad80035061ccb0e9af411e27efbf92d7e76997dfbd2f2cc8c445fed82551d39ddde1c8aa05b6a429973a97809a70f68870c0ad213a3bdb4fe5054cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3c217475d27d51c2bdb05f35f8037afab3625fefb11a61d32fd2e2a02d267054f74da532568a6cb516cd571b65ed42580be32104c08eef5713505c7d9df17d9700f74bb94a9e1c271e15597bcb558e9c59f19b490ea625e8674a414c63b77e5d8009cd9e81379f1933c6a61e0891ba374a6d164f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -330e265fd8a58e229f5861dd5097ae8177b709fc8ec9bb6ecc4a9349998874e378eec158dcbdfe7a0e1de61e53496e5a71b53c70b6c87f42775c64c78518a4fceae273bbc44c62d7efd200f511a9bce1abada83fbedb899832a9ed482e24f17f4f1c624b3ef36436ffee9f02a22a8ef2b8b1d8558000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3d84b1b6b473a3a6053bd4bfadc2b193f8843ce428876fe54aa7cf15e161446d8dd3484acfebb74b1269f2237fda9ca552c8604cf69c77cc5d127c324daf9e54b38cef46eef6e183f152afba21aeff5bf137bfc5e9464f03ebe68b71daec24f5f9bf23ed6e722802b38ba15bbd77cedefcb3ad510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = da8486504def6bdb34f50a3ce30e1953a04ad9bd0948edbda8619790e7762f48605f09f6ccd29b9a3908aa77447dcca79a50385f41d1bc505b83705a9516ca33cfa1cb9011e003795c279f5776134b940813cdfc2cec4d0b7f93fc5a83b67041e49399a52afdfc833f41c74b4e5c7250c750ab6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5c4a11609619b6fbfd1c3536148851a3b0da4e741b2a47b36309d883f797886ee36686344fd4952505cff1b0441412a5cefa937cac87af6b191c98578542192809792987085fe2a1c300a1f5d55bb6715e265bb29dcbad54d1f85ceda923eae4051e4c2c4369e3d2695a6292e6b42d568868140e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2c5ed91d94cb102bdcc3516aa9443d72a85f23b71766f9861b76503b108510a8defcb190a8c982ca8dc398228d87abd0d81c40292733c60744f2eff02e32e355bbe764289728165cbedd70abfd430c594b3080caaaee65002fc14eb901da620d5ca86dbef304143d8710cd7fd434878872239dd860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -60c390e07d4d76c1661c2ac86292fd91871583e81036b82a6ab7388b8147678a60cb902907fa20b3fb66f85917d12b2cb74ad3b69e5f3935db9bf83d61664277f5872295bdcbf04cedcbf2a6df955234cf1cc4656c11591bc1c9dda2cd618b870004d4bf4212cfd956be2c504e68d45339036833c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9b23c117965f921ebdc3831dc12405f1d00740126167f0de7ab8a7d655885705ebd1287514d5b2b60b1a6844b7bdacd90af888d0e2c65f1b802e98d0a790a07cd135423175c97f4df8112db44d722db0f4da5e00b68ab9d999b7af0e4e6afb9019c6621c056f616b5ecfa40d74ea502e8f06ff67c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e637f3e37a12a0a830607a41a524035717d8dd3c2c236b6d6177130d351abf96a61f48eb979ba5f64feca9a83706b752ef35a42ee383f7fae74919b8286fbf975b5d5ad6a9de6dfcdb381ec98b513c36a4b1cf473e4275dac269c1fd760ea3efd6a2b7cda3d273e03153c434bac02bd481f398a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3fbd1e88f1eff9252cabfc46e509c958bdc1f3bffb522a45143f23b84274c39a63b1326f9856af257b53d2dddb55f6c10c21bc80c18f85f1eaeee2c3b389699f73741329ddca970f656e46be97bb408bf8defd98c4eeb5853fb4f1b1b5b6d78e25cc7c66500853fc9789d2e02650efa1bb1ce1bd480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9e64dae8adc674c175cd9600e5124a95e713efb7f1781bcb8359ad668893559c6c2de9ee3270fa2989dd08a57766b64f3af385c1241a90e8ca9071eefc77461d319e51c4a943804c030d3075e0d6c56e380bcc7c03aafb411ecfc9cdf27913a1a8aee4e32c17dcdc17d9c980164e3bb6084ad1ad200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8fde0746a79b88acf7ca2d177000a7413561cc664df8dadf37c3610fd741b7cb77fd3dce413ec984083af128a8a7043402a660337c62cebd14ad9fb7f25a859f6aac62d83749bba1e41815723cbeb6ec8f38569c3a022b5976167b9560ab15260744e9e9cf957e841e8d006ac239d3526c159182600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2c861832ee18ae3482772915cc1604ef91fbbd198c303d8d35ca1b87a385395b17fd07be5b4f0064d4a206611cc6e099da9054dcc0f95704a0213dee703e3ef79b6a52142f7dcd966bfe55dcd1a1ead0f2ca37d0e8a397199f840dd4a43a05394877580caf9049bc8444ef60296efc94b77065064200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2332c774c5f36b950b6550dde52e9187ba75fd3d7aa80881c42fefc794ab19c077912255dc08886eae35047ce7d43c604e8f1587546581132f74d6cae2a0700d6f6a29fec9880a0dfd3b671da6571566187ec887f37a8481128868ab1a139dc6c531777446cf1d7db133cd2346d29d26aad58c965200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b0f2bc50c4611ca11d19fc5ac4d0e46bba4b7c9c80733bc801245c51389d220a7350b1807b53262481b3a3510573a3f746a2ffa087bc5ea0e8df2fa4400d93014e5e5e157f086ace94a87f29b21c31baa8e53faf4bb68334685ba8a48df1c623f1fc85979a64fa7492a18f2f8c9c27ecfbf020a09800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6bcd1ff255f4071709767ae1c502d5905bf3ffdce3be1a4336d1a0285e3761d6daf163a3973305a2651e3465258f7187dae02c803d86c9b90442b48ba42271c96b6c3f9f301e41ded44bb3980e1af1e60e892527f16f664bdea44b374920ee335b74719b24a0c022f129f032f1b1f27d89618de42c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2a4f80acf5140b1ba71ecbc6195cbd0b78eed9ed5592c91aa605cd01e8c655d0e2e5a7b2d4259f81962afd98e2d94dfe73fc35e4719d8319526baa38f8665aa79b91f18a0d1c4980b8a295b6668c8aac09136f50ad17e0286c9f42f26f44d2eff44f3d06456c88d432ad8de9d2ee439c42b829520f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1858b41acc2a2dfede257fb613e56ba5edd34e3b28e77f6d0a7fd0a20d9a0a0bab3cc568c74d61aa988e6ee679f0ee8aeede27cfc8a40497240eb5cdf96719db3abc585d45e9c08cf5cf3f9f1165b1d2f8fd2d130de2c3fe4eb8f9ac1aadde0f115c5a6ef4fa6edec429efd1ab320e73437e9f87de000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5454fde00b85262a58f7d5abbbdf1c33516bf1505365a86b9023b28db02e48ac6bf429c09a362bb8497742b1ee782474d0334dd721137747124b110435d5e3cadc07781c74c4621e1a95e66fe05ca3d722bd248ac35f0af94cd1ec3c81e58c9ace36b3c6c71e40bd97ac453c7b45f6a877800662d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f880c2c62c56e50fbc0d99a0fa583c575e291d86d98cb8f8cf3738e86ca2ad18d447e778c22262b73bb8e7780d993cc92bf9815461d466cb7ce7571c2732dcba75f75177b6b3d413f336f2ea7e1df68eef71f375a61d4db0f273d4263fd92466f20aa0232c5e84f99f8e5c05e8413626889fbf52aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3955d62c51cb3e8cf4292ba35a10f24d95ae10cec3f4d66f9ea3758c6a323797ea764c85ea67eb7998cf509d0f02e037173e2710db34ccdd2130906f40974feeadda912364f044e2d91dfe50e8f294d103a451f8b5dd21cc7d6fb74f7c3d5a54023d83a07ac5553c518a09b5ed0c6eb60c9bdf2de0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -31ee34bbd847f16fac91940260d168e9e0036c2ee48c99a70138c494e5b72d7670365d7b41a0c6e62a3a7da29817a95f6f9799c8eba2f2b131e3943a860766ead0f3620cce998d4005c2e191d65bca9724ffd2df8b99327c33dc257e238eeeb965eb6aa86e558e44967c8429a9919e77aeb319102a6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8889ece67e975f51ced2f114efc005eaf08d3968bcc7fd63fe2955f91a64eb465279168aea5e1a30abf24766d1a6f5c2ebfa132b2cff996b4c5a5ecaaf0bc7514ab8f81c0f5e3b528ed665c6fe11ca9821842925a0fbf397eef244faa3edcaa116cdf585052932c5510ad96ef37818943d451567088000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5f41ff8d1ccc4d076dd42848b389730b43c2c86558ad6548ee91ab8d1069a05050f177c4343c75caea3444295a49a8de03c95f4b73f6948c640101ef08985231ed35638a9c8f11e95dc9b1c5fc0a35a028121e9a185bfb3c2be60c90896e34d35fb3b119ad659fe651b5e4a3eec81c147c0ae76e934000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9e4781f0820452ef4188198da7f3330c71e8a8cf7281afdf0b73ce65ede926ff32e8eac62d67ca8466a5a4e18bf2447fbd404bf9ea51eae9b92d50c8e2065d0b6158d7531649f702e9e4d1560f17cca6fbaa53eefab76edf973dea3f17dba35b02ae55bddb95234d2172773523873c99299f6d681f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 231efdcc3b444cc804922524cdd7459245c73ab1ad4c384b36efe72f62bde7820f90c0939fcbddfe9b4411b76791b712c7e960147019f5ce03e0d109b7a37f9cb7dbd729dedd499bf6f6516900589bd410e21bf998b3f3d67fbec7c318543bd3acaf9e81d562804885370eed0014dfaf88d585bd9940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -b9d51438901785dd53d81e50ad99fde8ed8ea6d3885719f5becd14f15b488e20c265a696d86e5595c25181111f544c70b223f77d410051e5f4809141aafd84f7474b160778a04ad87c8f7545763b76bba9742ed787079582d86580bee7f8ad0633ccdfe9e3fe595c3a4bcff3620821f6d0931f3b2850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2e2c585937a13c5488c47c13027e79d1c8fb68364b33d3c1971a6291e9f3bf2268e670b5f4f10d772383212b718bdcaf1a3ad8a2fff6eec0c28dd8990a6ec80e0ce5c787b04a66abfebbe796620d0b8ac6cb089d7b5b8020cdc39475267b397aba7c0b3261a5fddd168ff0ef63857b70d28a3858d810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -39246a962d69fdb73a2262dad4a2b493135564eba665eaaa51d017f9006c4eb5523eca002dea453778b8dfb37ac279037cb4e97db55befc99c89cf54f7621b1a4b68d46e0a042a7348b06a9013182f4179118e4a60c860f35b96fa22d8b4862b267619be0603c06bd8d86cef9d9a929a4dc0d2475b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2536381e765007f821ecc27ec66300ba313e79d244a4b4f728de03ea3822ed037a083e17b6d875a848c8e0ae853ba9913915d006cc8cc4faa088ff6ca8d6a68b6362ea75ac87660a7fe36d796034af47341047a8284d37b98e36ac19f16fe4188f8d83aa9743f1511f3d96527f642a1277df154d09900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4ba8cf2ec7b20f7ecad43a8bff4c544422fa81d2e57992c4ebb80aab2b432537c796ae7b8df2656818f3491424671c13007e774c6ccd0b390a56e8cfaa0c73ad966f37e69aa89f56e1e1a4d9b37dd6751734ac276b766c65f5deb6a8571469b6ab441c22555f994b07854827b00d92610a54ae90100c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -144d1297f2b90178dccfc09127746eb02b779fff0f26600d6c975e6b1d3339fb24c04a96e72d106129b9b2b17017e60dfbe2dd04ae8678d066ba690e32ed298708a95f1127e899c8213d766b3a8ae07441d63961e11192e1ed8c7438ab3cf1deadb6ec38b0059972713fc9b57e7151887f65a5f953280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 297311400083b0b5b6fe4ac529750931ce7ecbb7527d98324990aff72e2102dd2d41abd05de1efcd96484dd4b3b3d27221be2c8e99c0b90301c814dbc134c2d6dee664fadc83ccca2e9f96eb2a0ed2ad5e8be031cd7ada865c5345f009dec58c7eab9479ee23a986bed81f27da98f9a86ab8281cb7b680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1f9477ecc16664c753a7b332639c1e09e1282fa81dbcfe11106cb77c62c5115c94cf539a0f3093332839a2caf2329d57c1111a2c92041eab72cb33edb6f30047cbc71e519cba32a15bac44eba4926df458190a85029257fcb3420b297f31bf2b6ed069a000e901f9bfb6472efd56dacd17af6edc13480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1f1b40029b6226705ee3c949c70d917a31439467e906355b671f9520fd65e9e940892b039e8d32c1742e8341056d9df2bfefd057db9750724140848b85b21f9f98f44fd982eeb9777ba70e54197c19e0e2b1e6b13dc96f5a56a29414b41e1e7767277212ce3c188a555ae2b5fae185004a15c3f3e34900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -94e9028be7f53e05a702739726c7f3e47e7a2be62e9e45f43f9528d6d086c20ca78b5a56027888502f77957ded5a7633ab0ee479787f8db01c51227ba8d862cf772bbbf5192f33945b903adf40883060cb6ce4bcaedaf074efc76fb2e680080ec7166eb3a7cd8cb88fd11c6c0a2b0e50e68d09528d2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 22fc2b24abb592f1edb0035814108bdf0c28a3fd2e69d5ecbec57cd0075a1c50bd2136b2138960a4d9b4ab154fffbd38f7738c992927e069c1b18ef8ca4b1411f263ba4ddcb6cbff3d12e40e5d33358eaadd99b058e36c7230f74ada15b59b8b5e9a1c678a3988495952e1eedda82a241f3e4bfcd61f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ecb4f684d42737df9b1a6dd85d11e78624cf7828b35016a5a5d01b87d471f8c13c55d815815d559dd18183e49db00c9d42de9cc310c6a1a5f89f7281396a3dbf17f782756970c5f71e72ac2b60a6068db482c5d40bf1d2512160fc7af052932a51fcf7825951ed298b89e0de6e05ab22478defbb9b6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 216f44146c02d89ee0ccc1e4998cc4c150d18ee88b739f0afbb076330e6719896c73d7ca429eca2aed6a25db50779c2defb5e5a5ad1403ce21c6af56fd719a70ab5620818d8cb913a0811704122fb451181b4837263e1fa167aeac541624305c894c2b3add05c8ddfc44beedef83438c05a1728492dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = f631121c3cc369b64c24877464929d510d2f032f97234aa15e2ac5038ad530ea9213712f81b9229e37ab9e4656bf4cbfc9d613098c089007a4694008355e960cb7c20b393665eea8ef2a8239a928ca6d6f647f2235fc1fe791a29820445f765ea0892b33daaf550ae0f0193d761a6bf74484b49f559cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -24526bb53e783e68577921f8bbd7e396763b43df6cd6a99afce6619e40438dcd63456b3fe1c2ae1d603ecbbaa13720080d645bb838ebd013e027e612a7de15288fe6c76e709f9cb002536cab0f86d43ce863158da7f2f6d37727931d7b9b6ea08dea039a8fb7d3cd3c14f8f6ff1aaea46f188e4392ca1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3f29319510cd47869f96f1df28ed644cb015a3e90c85debc29cd822bb2607f38f417ae9e87109ab41fcf99e8edeb159ea1e3bbfffea3c292bd65c4d45dc5a841e8aae43d32c12554b291599e210e0fc85feb6d5cfcd9bec1418dc3bdebff747b7a3ba10cf77ce07123fa731fcc0447cc335ab12174a30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d9096dd3a080659669a2a069c801e23b747424934f0165fb0a77694e0f23ac433f0579b910b2d787b190675159fabda95c90f0501f451c94dfafa344be235347bea59e70ae1d5adeba8ce2b50a9db1798367d7e239d382e0584c1e950cf4ad9af2194ff1c6569913bf8a867739fdf43ee2b4de13efe40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -4dcd1248d590cf321b84a1bda855f94444550c4d3fe9db72c40f1e46455573cb43967e536bdf297b3cbb2380da9d283162b650147c1dce08e12231f6f8e67fb7dc9d876aa5b483d96ccbb442373fa658a07dbfc3e3f7dc121a8c8ae1a81da32d6148888d8725d125a8d19f31f5a782cfc0f5c6f4976d7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2dcb2bdbea86c4f9e372621eacbe901962d5f3cb6165a08ee5093af60b98242b05d4433cb76b22e609a16d9867122b2c24f835a4e145f9de0d5a2e29d7dc1888299f7fe1e119de4715503f04ac79a00a53c6d220806f3c373770b11161af2ea864a694fec5d417f6d22abb4b9c7e18a1ef1120410177ce000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -383ae5467a056a033d84b480520555525b26bee4679dcd5f8f1d1509ff86030d976dcf02ff39c45cc9da1e165ce54845ec5077e71a7286a26f9ef3ba9e26b4422cd9563190138ef8948eb9d238ac30c4d1a4efc228111323277f740cdc0f29451c685538601b18cf6d92ff292a7858c0001b3c9daad412000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8b18c4317201cffe6f75cfad3c1d27bb515a6b9410f0cf0f080ac4602fdd3724c9a315ed4c4f0f9d977be60b5261cebaca387014eaccababb80af44f56166a820614df13a224c68dbb8781c3a41b4d335e4ff8cc76f6d3ed95990b1d359ab06c796cce3a769f898f7884b5fcd7a1459166b10db5347c54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 878abf5698c1e59044a9a3b726b134c93f92bf14295a4ec207ac7b9907f1b770c9bd95576458b12112e69ec932eb7ea64e3736462fe13cd882bf10b035ef52b9f9e40c504d274ac6399d86b98fb7ae312f6579b9853768d960a4f7297b88eb3fb1cc98cfee008947a21e4a78b7ee7b59d1923bcd09c26c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 19fbd98e49bcb1d26ebf1094c5baa53a8fcb391481e1c48a5c4757bbaa8c8bc52e776c97b2773e0b59acad7d6cb16b2ad2e1a6b440a14f15c34d81d102be46c20e093e96b4fdc4fc029905da1c71fdc1f77bf3c095523249ee787096bbbe92a87bbbd5d24f6046cf60900ae1c02b31b0884369763694818000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1075534c626d32298404a07ecbbd7593f79e5a152f1caf21de28efc0608c9fe844471ce1ae3626b5616e6f6cef32b02b92839128c84580de3997e8a3d38869e80b3eb8c5ca4a447642bc7504209ed5a061bff4315856a3e686bdfa4f600a3bdc67bfba9679678ac80e2afdf020364b122316bf01208a1c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6339f7f0618f4bf29e97922730ad5452e4009c3066e043a32a59661e6b6720a7eb21658c79186f8939f25936161d54f9a71b4cfbb422014d104abb58eef41c2c659a7969147bd26321e13583123295698958ed73d77e088158b26b8e610f8d2de4f7e681b925ba79918d9f4f06ca5e97ce637a6451902e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f8242cc4711839007ca5785f9f82c6b8e170091683da65bbdafd0d0e1fa4d88de562e474c6439efb81f54eb828382b152985e1853080644845b63b2a14678d53752f8867532e61782689f8330bc55f98ca49428e6fd6ce5acef057a17d6320fa1209de0e1e894d6f91bcfc3a3892f15f8cadb04c3f425e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ca67be5b9124a1ff74bfcfd4bb5f7c81a4d7cbe490d3a10318c88eaa5004c09969f427708394c889e76699ec990b893436ed1d9c33fc8e8ed70fb43595011aa1850595c0e372946b41f2db58686566f1cd40f1f70d0a090dddf4da9b3418e700f2c6056a9eb87d627e9526b93a0f96c871026b3784e8220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -33d6dbdcb2bbab3a407a1f7d49baeee711ada1f7ebf669aa46aaa9ffaca0c698a402672b67eb6eaf57cdfcc221dd37caf38526d40d9fe0573c7fcb7973fec89aa9b10ab5ef4a692d4fba9d3f9771f75028dc8c3de233268636e9429f90401040df113915535b7adcdb09bc3db687a017899b10c1f79d51c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8b9aff023790e16422a9fdc0067bafff612df67b345fee509fa2bd14aa29cc17a28090830cad75d2ec5d97f8a99360d8da08a1f62902a4e50f47d0209e9933ab575f6e82404ad977c5ce738c0da80f8a6a34d1e35c1a0e7f477e5b2b550ee96a5038f68c188f924fa2bf661a7b01fba9541bf2400beba780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e695f1a9fc7c302858b2144b940958b93593c90c62c7fc9267c582d052758569d7494a1c67c523812bb48810308e45efcabb3659d771751cf2e4393ba5e3855653b5c0cc1039a1399007329b481e459ac02ceca235345631689f060e91da8e9bb41a0d24224ac02b59f425ea9d0d0e15d9d628a73525b780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -56e9a0028840b96fd0f38ebb95ffd1b540c1edf64b92aff104b9d7bf9d1cea05f58020840456c8da9f38a14a0b3d9501f5e3fd0b8da0bdb84894cde81c85f107ca44b17b1e92589a3b8dae8be37b6c24b1167024cd5412868cd3ed95d20e4fd9db5abe7fe08dc8f4b34560d6af28275aba46cbe389016900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -28a270d88b6cc7aeb028b331be5fb9d5560ce97f54c4dda9c4f8aca6f004a2d78ee998257b86f8262197f0959790128aabae05c094d8e82a65909f5d0e017cf1d9853041102758d6fd7f20b41723a0e90cdb875a7cb894a8e9af66255a2ee07e1050e8fa32e4e92ace4bd86d53c7028261479f3e23780ea80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f625b8b6f3c43b0e1fb9b665bdcb80d94b0ba3ee46b236000b0d0be55bd27450bcc1cb57fc581a92677ee52d6e726e6a5be4900c11fbac10dcc0e9822b0f64be4c373fa386a3448625e2ec54f74f83baf5bb8a8b23d2868126517f561d7870a0313c419e27f8f6dda15bd2b360b0890c888f0323129dbaa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f0828869220db53a9d0b71f0fcee806096876be2764fadd6d70774883af7088b9ca1f24a56f4ca084656dd7abf85b9de697d8dc9573aa2b5eaf6f627f41367832ccd6f8ddb62f8a07860a3ca416af8b365d2eac2cb620477c2048b5ef2a1a741512754f5c2cb9e4b7d3ab14a9b314a25d4bc2c005b0dfdf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1a2e56853009c4cb41ee5e2452a086b14b501a3f192afe41b902a9aae5a6c7b787f609cab483bb929e9f744f648afd3dacff9b77043a149d46187bb741b80e475aab3a439ccfd569fb7d34cb055e8cc3e913388eee1cc52f570417381b46cfa6970268b097e142026464e56969bd1b76e93ea1a8b199cd5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -132cc79aec2c5668f4e33a835444c4cb3a5153011c1c0bb20bd93c2f66b58169488222faaed7f0ccc2677fbbbd85889e4c54bf2f48c1158646cfae7e51a88a0c6d1cc2ee70d1b3de251abda662f99ed2211b9531d3db98d2295aad9d811989ac1485ac5e87b82b971f0d98d3674de136599bd09c2392e00a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -6d5cb6a784c06031f3bd3568d0278541e2a70c0b1c3bd224648e62fdee87110a1130d50dcc908e08a7ded8f62d245759a1e75ba36096fc626794b55a59a378efa3dc9caf1c58326676837f6e9748bed9e65b8651245591aed8bb66108b2f4ada085b47bf283621a5a4045c2381059ebb0a42b3cb3e49e54800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6a349d1491043c0f6857ead2be209707bd67b00a90b21f65fc49dfdad4af63a48ba6dd9d993be0bc782c3a479991d022aacf3ae3ccdad6a879865a06f912bfa1ef997663da88b37954f15e9d9386dc85a4ef8bcb991225a7e697ab91bcac5152c1cce2b8cf93c17611927ed909acdf016ca97c0746b2469400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -38c326fd395b254c83fe24b9e31e2c5764ede4efa5309a467fe4cfe3cc792abcfbae1a90781225bc538e12f69583823482dc96c6c01d5ca4c6486407606d117a1f2c8ec9bd38ee2263e714e8836d45beaec19e8f0362ef6d96c56ab10f85885ff94526dc9151311bb8d61f3374e6c0b2b7606919dd2e0558800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 183caaf2e63f1f4c91f5d7f20df80eab1cd470814559b6f72c8269b0e24b01587bffc8a970a5444e85d85bc6706d6e8b28caceea0f205cef1d85bb88ac1498964079cb30eef9d909a4c868f7f5f73398b5666cac4f19f070ab75708eb7cfbbc5619e677d3cbb832f0f586ed24e7de4b6467d92bc3f01e2c0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -484e2a9eb3e9f1b7dab570f3c8fa4a94e282584f39f2d2201c728886fb5ce3a7269802b528be893da6d1ec8823cb09ec3a8ea7f31d434e6de270da7ef8b2a82e68cd347165f09127e18e7316c10de7720c7807701a96db0670ec63bc626341f3db5fc416ef6f4576195a0e9aff56849ef816581da3774676000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 36ea685f9b5e16eed94fe64f1a26c9559b3da6013f4b1ce41cf5274785e90d153d9839faf0d236f7c9642ecccc8aef9dea454ef09e0ffc13323038de384c30f88baaaf06bd7accdb44f4330edc80d12e486107bae0a2bf0eb6e7ea9d5da2f4846c668170b0342dc60eeb5926296db742b65083addbc31930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2efca3b752eedc4df5a6b5f7ae6567de76ac5787abfacf3783a38707018225b98a6f7f6ae76bbab2812a8d981d206806f63638bc6e3a6a64a152a8cabecf8f578f0e0d77a500e849bd9fcedd53e43a462725bb508112bf23504116b3593066c2c620d773803b730b34324359ad8f6d730c76fb5562eb54ff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1d249453039e36efb68678e19185623026fe37256c9dabe0ff0cdcc0f5bf2f4f2cfa95d1834a75a4d34d37111d5467a9f967fb3287f3e9e5da33187da319fe8cb622cebde53352066c1e41d572832c243b5c15327dd712e94145fc948deb3b10a28b5ebb19e6ca2ecd5aed296dac3563b1a8e521894f4a81e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3ad7859a0d78109dd37e437e76b03d575f43ecab4318fa5bc0edeb7b1f21582afda9af334346b5c8d1b71ff859b956b629c29a594c9fa9e9aaf8f59e80a1418d0ac9fe53f59787c7cada79e17471fd3c8a2942566eb0fbb59415c1fa0171bdab9c3b9c423c362b06c9cd5a6d05dd8ebf72f588478dd31726c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -d39d915636290c75ea99a9b35ea8de378069cb95ce67c71f58c2aa8720fce19db80efe41ab9753fd5783c2a9fe0719adaa8d64a0338c915c420cdc350bce3619bd61ebc6421cefdd508c2a467ad7ce7e91ac31ab1f2fc83261f35ee6d5128205141158035de23347ec1b817b08ce57f3f133c1eef93e193fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2c31f2aa4ef83def0df007e9751c6a23a3f360ee8fdfd2c98fdf7e7e035b2b559217cb33bd3228b050d648e92043b8af0fe24dbf67ab86104d1b0dd54a4c361359fd8ca8d45152a596d3eff430dafada4ca642c92f1542b0c45343da0da0315f3ee96a979419adee1603e798d6971f0cfd855bb9e1d811c4f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6ab9787b0266f75188f87762fde6529c0a4501594934828a5915826af5d8cea2c23797ef3fc90aa6d9547b851d2a9df9f07da0314af720977064d7a6f731f3084be3fc7a7c98226e069538c4a14c1533c082bd75b64774bd035f6ed9a44e5a294c92e79e486a8011fe86e78cccd85151e179a9c66920b5440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -87d9f6fa9f2e2e2bc2d89a008a26b169c62c7d1e3e70c8c2616052e30f5452ec6286ea656e0b9590106fb978ba20e9b9d602410c913e1ef1410910e112cbcb84bb5ce9e10270524608996e3adedd75609e95502acf348be0ad708f6b3aebb1f6d6b03b09778a11f20d0279d7ad93b9936c064a5bae83400d90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cc166798f648983066a376c07db4e5e7fea10696b6904de8e1c7c07b0bf1855d9e230499a6b5a25cac7e33864de6a813816d5bc2e33946029267b3dd0582bf32bb2b21410b5cae6d4269a1ce2598cf7ac14a1533db688ecc30e75f20c48efb6f5e62d6d5cf8449bf9ac17cc9c29136dd99e7d0a7e789d56210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2229d76ae7026b1bf4c494d7bcfbfc4cf2907754ea77dc9a7965fd74b1638bf5966817ecb565261f1810c1997058cc508e8e61f9bedd77fc2fe70f1195f175fba7204ccd466768d78e9da06c01b955e2489cfeb709d9e7aeb801fdb0771d3fa189f976eaaea993d5d0b81b8b671efaf403bd1b9b6360cebe700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3872ba9a68d7dc2fe46446aeb3c49d17e76af1decfd9283817a5078ef6cdee80602f47d08be6fc95f9ddb4c065cce869842c165545c535c0e8d95cbce60ffb9be1c3fe67a7accd28eae2fc871c5b3fcfccb6233d26ce06d4e43cfd9fb695be8d273f1172b40080eff478ce24848b4567b6f6bd6d3b451c1f5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e629e8f1e8b39371a90a978d57418986c06c6521344202a67e42892665e5a96c29776b6d4f1f6c38d421f90c4ea7950438203e6503a5a051f0b2502b5fa2bb6eb8890a88e875ba8adf94cc64f75c5c9699fb3315f503b8387dd114525f6409c16700689dd2ccda86a70cba904b7439ccc3a471c7419e11108c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9060f2d28850bbd925f07f54339a5bdc8206be39dbe3bb69af7f8302834d040dca319672b80c108883e7856f0b792962582bd82cb9c55d741762af09bc0bfd00255c9728190aadf8f7e76b3a55c902ed7f9d945e543e84bcc1ebb93770520cd9767f7ae4ce11678f14faf4de6b3c1cfab01549f7f414e8a8380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3d044d97f5ba00da94205a02bbf53f5fe70c1f888137caa84c8492d4a91c34c8dadd2ec55cd8ec901a9b54fda6343370481ce47b249c2b7543676e51b1323d086eb60f11aa2acd2238d2d7d432d234b9cdd2ee4a640786177cd94e4b4c0aa9e689322b7880d46c8399dc5be9bbee62a4cb584c41642a8975d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3a86361c60a9473ffb082f3995a5b80486a71a39c37e55b724b24b0f2bf01f4110c1f482fcffb4c64294a84f83aa4ba0cd6123b6d7af4e9d2f4f9ec56fa6f865b8f82de069083382f5265797637be9fe2bfc36eff30dc1c734e5a004e225cc439462dc3e7efb2d7a0373da7795680fc3f34028231fcafecdd580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -925f5575616e915f9a0e4d0a37e5aa9741c779f69e0333523b432e3af4b84959e65a72d2072c3de90d67ba57df43df34711970647bf0fcb12a31504031d55ea68704f574dd8c19cc548749cd72ebbd9a1e30a21e6364312d7303845c218f01036021f8ff75034947c42bc7defff9f1a98a2413eaf1f51738e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5108ccf531527010e18e9c267a8497cfd103938ef21706742579fabfbe4a67c3ef5aa55b9273f465135922b6e89f7539968acd044fc4fb2b810c054650cc8f03f6c2aa8010b51dbb1f00b71f7119acd674f730a2314425f4b0f669fc85c9ca3bd40ca63e22441e7a6f7a8970da90b6e024af009ede5319d03b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2c258c31aad5ceffdf560e1019a10733c7f47c2a8e6e5bdf1d8dc81d1de7b2ff122e86ec968fbe90d1bd52d482d3dd1bf04b2e0f2d2861e97fdebc27e18a24a7f766f32318a4d3073322cade14ce6bc54d7735da0888cdbf923a6fb68bfc38eebc3f6b25d71cd48e7e472aa12e93d740c8c9d0144d85a55ce4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -128516c78d1d3cd91f8faeb6e2c59d83be9683bee9880487d1f92c315ae8a211c864d600aa911b2c4dea23145693ac811b99e114e5e7aa8f16bd6efd0dfa7b2a2a31d614bfefd6eb7185015f0a4e4a7d7d281b3fd730823847efd8376fb4f046df1e5da12a9ea0d9a9c7937f0f60bf0e86d4b731577d300681e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5cb0c1ad9d07bedef928e9cc98f2ff20fbfac73c7581f854dc5243e52cb12afe8bd7a0f3d142f1ba36b51622965611eaed4cf420449a09f1ab1f7bad5b59e44c03e87b3ec5eb9831bb19dde6618b02d13ed1fbf882dfec582b336582584f63570b63b8e8772d821a070d774a4a227f1c5f23486b640167648a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -23d91b2821a0e3d964fa8e69e8a39da13b1c69488098b83d7f1e8dce1c9fd8e1a249bf3036fb96c0d74b5c863dbea09eb2cb0d33f842ca1e2e0df72560b469b596df0b713bde811704d5a0628aa9a74637dad9fa1f633977c12c46da97ad0a641bf42f20273e57da6ab316356b00140763dc77bc0e7c8476f8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 25e0358ae755d33948981e61b4b395af4232f68f56dcf6df3dbcd33c811056340c216b52e17e842db3a958b38161b2f93d1aead3cd58b41bb66e11b99391084eb869b81298d2f93cca2eb1b74ef25f147928d50c85edc7ae7e9249d556fa58ab5ae21527b432980c5fc8ffc0a0fdce264c514109f41482c1259000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 207116c23f1fe5b9b6a108eb8b6575efe4f96ed462886a220428612b59f7d3938ecd723dbb714b4d175c7407f44a7473bcd6245aedc4fd6ed4ec702341a947535dd22fa2b48239c820a221c14f2090d85ecc406cc42f60cd71fa4fa6ec7249b05645dceb9e843d07d1766ef25b6560a06a2ab674c442564696a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = df9756eff9de913850525649b8243c1ae331b5ca42fc72270368ad13addfcc0907b850077b7a9136a0b3410ccc4c90dce2a613d0029c24612229d00caff9b1d20d1ae3199f719daed6cd0e4ef83a0571494332f11bfc68cd5eb32c569377f01fa25e23feb109c9a1fefe2508ce98c8120ea3a9d7a8c522c522f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 16cbb787f323cb794e290007ce479c1d34e50ae2d646b1fe034b8009667864572a43f5b68f4cc6d441abeec286f47b853137e1abc37306e02dd539c5764a60fad1d3a65f995e7167ab2331ee91fba1929a504d9e100f381145a461221293c5ff9c46837e2a0deaa95803ffbe10c4045f50dbe42287397228774000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2db0b66eb1dcdb7b4bc1c9fe627384c9cc753899487787020a94638e60c3da331e845b37b463788049f468e6cbac4cc3acb221563a9497902cc35c4962a6b65b1d9fde9d11e3172036377bd425736c5cba03c4dcb8ad51fa282ab2cf95021602bf53dccfc0d07154427c0a72d429bcda990b217c7d4af4cd7566000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6b2b028e94560b105c6876f95ecc06214a8df3cb2230e141ca3e9028c310ecce1c40979161fcbe7d676c720e45c7899d24d0720f3e3c75b328037e17ef55a875c9569725ec5adcc39c019e7e242f2aff1f0eb56b1397eff1730e8d6ddad1e0253d9cd43963b7471eec2713ad95156b15f99726144d4fab02542000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 638d6894cdc0c83e288cf86857f6949b81069bfe0cd04055111f129c325b21fd98d3bd57a1d61395395db75154a468ee61b42bdfe271ea827cd8bee6fe0695c52c654a8cce146dbcc5872861b99f5f0523923edf95d8ee128d2aef2f1122bef6c19db5377dedb0282d763e96293a54585307c6a84ecc4a1d6890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 788b2e25542c00390a7375f209f5f0b55b4cb79e03cdc226d72af8c8c87b192953e5c938b74a01a193c8fd38910f89318d4c1acf8572b0da417d0691b377390bf987266c5c15db27f90d0dba4a74f2b7eac965aed74fd91b0b2f1b1fc88334f8f24127db1fbb149473a289fd5f31d6f371ca29b485adfe0bd0f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 53efa85e847dc1570ada6b3a92c08751d4afd36ab2946674dd3ab9f41f5e026c533f796b7008b52833038216b3588a78ec80058629b1f5956b79acd7da34f8f4e53fb6cbc8a3e3e6e806c4da832f0974eea6063869489743bda5513aa7dc5498f440318a167786c8810757d38e9a7f1c368c4384c66caafa5c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 39161936e5a08fd9855f62bf98510b02d2d4cc5272a28d2c7d40f51af55c84d946e228d4d1e9293f0c1ac86cf46d378e4a54d410af83c393e04944e043bbf5dc83670650a3d3c06d8bd105aa8c195bfe7689ec3b4a4b1c4dab8fd7cadf9fba387fa30b01a8067d4d84a3757f5f0c889efb3e8ca1f600a3aeecd70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = dca9afaa3d395a39073157b8a50a56b4e4fae6a6c87174fb29ca296f0ba1c350823a79e58358b48e535699c6ed70ec4b72804c535196c39d90835726e0f01ecf79827b78c757070e35bc1987e5d919ce295415ff58d7749d146204339d6e352329fd63b448cd98eff676e2685e8ae267b24fd0ac54f5eb1cfda40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 725831a1cbb4ddeb20171346581de3088f106ce14d134eeff3f08e559f3233c314ad1e2b8ad7d76e07c8524bcb1bc169581813f17b8ccdc091b5beb6b359b6a08afb38d01c8d82f2ec991b9f9d2c2d0faabe8ddc9fb3b528f0c09dcf50a13ea2bed6495ebe50485bbadc92fb8e45e94a37cd920330bee87cf7930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -21cfbcac6b185cd6b600837555a05e429a45ebb20961dd82069758797dce2d321e8f63b34fd55d95ee1b6d4a73bdd7a000bd7d61c3d84041ba0cc7e20ef4bd27488cd1e98eee1a9f4e92902d934a20ab57e110dbfbfe1ee1e41ad4710610b135c04844f21d20d1de37092022e7a8831476644d18862efda17be820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1d200c729f21eefa8e49c51456717a0243a774730140d3613203eabd9b233b6e3844ad5de3fb7c8fd579d564e955b1b177b1b9b0eecca684a4053181d83e318fca8058d0a9feac0848f7bcbe3b942a514aaf05442bae062377ad5c542253fe8bdc415e05791a11935ab6fa9b3d4b6e6d87f8cc4511fc787676e280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 66b674da051c25f230547970bb2281f49562e4140c9758ff95c036002fe86c0ad47ac987fac2feba6f463457aa07c90f0d171917c9196c86ca67cb94bc221c9bb2135cf4269f520cc8d820781bbda2ab0659918f5ba6aeea1b8c42e16185a998c5515509662a17225e8f599adf791e1217f52627983e5dadea9a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = ff9a60d248d583c3196490317e84a1be1f67259449af64703e21fc79fa8d4c517c8a00dee4a170e53648a005d406ae37b213db5611ff74815757afe4195b6aac922c5b7e290b71fe98f9cc769ff3373e856dde151b83e40d2df300fedacc46a930e8912063c48d90498f6692c84b87314eb28152287bf3e646dcc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1208a6079377c1d43fbaf4bee4eebb1ac6af799d90ddd79d9d3488d9c1f1fe52349442a1412add946a1b2efe014bc9118e12c20630ec10620d17daf63cd3a8f8b4f81e94f257d86c6ed478a5611893456dc4077dbad99e05d912a7f8d6cf4cb4ba69446f62a5a56b836a77120b64e5eb01f3ad7b5d4b7bed431fb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b47db1a2bff7153bb0434fd23f9069c947fb08c88ca2b97c921411877c69af522f880b326dade953014292d05a1900087b769e831fb76b360f49203bdc52e4c1502fb89f5cfe92fd37199d94195e788491c398640db3cdf1139503c66cd9c364090f697630c94bde7cbea07da6b2cc08b227f46dfde4e1e8f9b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5d3359fd11f2cd520bacec62433e8db28def356fde9dd2cb78911ac90f57667b0f0397eee11a8118f9c49d169c584daacf142a3ab1af2cb5347286166a8b6e0a9869ce50a879ed97791a3f175cd12a39d7ed247f829394787cb2ba8c5ac7ac60b2d27428d242d9e4542d025e665ef42e2cb2594d6f5eb038d167000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -402e754313e09604d68f4e3ff730f5f7e7d33cd55bacf8b1e2ed82c0c0557a5d5e68bbaabf2fddd4ef596a7aa06dc4bc08d2a80fd573878a0ac99531c1af8465ad4ccc6e6d567c5d5d13a5c2b5844aef28c507699fd45482cb7fbf52df80fe7b35887e20cada5bb8d230f223467f1c54f097a1a54bf6d0e8a4cdd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -841c3b52156e6a3c38a11df06682f0395846aa0011ea0574b0b76c2c0fc229d6ce3c606dcda5b6ce146768b1833a0450dd52d1f62ecaa62b8f60a6417b4bbf798e875b08aa14315aeee9f4649fe00ea268c2dde5723c4c5467eea41a3b33f8c7a8a0da32fea9a66a17ec3ecf92d4839698b287c0a3d1e71f212d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 13858fb38886f134570e677c3c9f9d89e6f4fe8b5698e8c2e1070437c4fb9a263b861dffdbaecf814d7fc8ddc59f1e9a7da886b3929f272f21bd86482ae91a40878bb364347399fd4adbe83a4762ebd05074d648972711a84b21891364b7151dbc02915f0cf8aa7ff5312307ce02ae79f3769908ec443b73de972400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 76c6b2798c8748c41f86c0faf3f39d80638edae630f1090d53eab29771ec16500c28fe07bb7cab699f06927f7526e4781bbe19a272a6615588bfed2a46ba9d32a884b5d9506d8240fff924a3452c1ee97a9388d4b89b0d4ffd119091936616ccafdf84c91ab2397ce42d7c3b696df9c608ddf3e54d1237a703167000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 9bf59a255de006ff43310eeaf7ffeae176343dd8001eea6b5462accaf9d044672e4197d76d4bad38d588f1a5d2759f12363a3ae11d711284d9fc076382ca74d791bf2522f442e20f28a09813a885e02f5b6d4beed8fdb07357d51caba28692e3e5c31c2c3d49bbc5616f20107999e98f7a179a871ebbef407198c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -98c93c4165da31cd29abde97eda07c45d73ad51055549d1c7bbc2c21f3f5198ae163b77ccd5715547064eab9660ac3906d12aece3f15a1de981087543be1d555f62304a014edfaa89defba6e4b54b8ffd5a714c21b35129286af7d0318ec661c07104187a7602f4d20579af33857f69d66b6d040c09581eea32c3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3d179e36a1d0e4efd4dd664377ebeff19444aac8fb8bf0c14b1ca8a5201dbbbcf2967265d9f57400a3b5a8de22506918573d1b564a746adb7274542a76939d3de0cd8507aa42c21b0819a82eaac30b3e1a27d710ea0d2192b55272e17bf7fbedcc13b808b8c7419063dca827460c382e814d53d174063b46a3aa24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3b33561d2e57bb80c8650f7c37b56643e79106f1c720a918a4ef1b50c5d48064b74d45c8b6be850c46b91180ebd9acc348903982e344a567309c47f2148832005ad8a76a2c913c3c5318677db7715b34ca63e37de1021ddcedc8d97864c5fff63aa5305ce2dd9c5eb00ecc0b3ba6e0d6f9bb631f45b2548254c699000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b5ee3a5537881a82d2b902bc19c03e3452cf8c68b0d51b035cf407fa0401f5ddc214214d5e370cfeb79dd9a6074b5b45024e434bd496f2c6cb0fa43c9d7c937ac528423276a9522c7e912fb749c1b3348c1c16233689acb941620db2ce5c17bc19a5951d8ba03971682a8c6ed72bbc567b35a0d51d17c3cafd52d3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2bffe06c2ffba0c3433e151cb05757b3828f3ba3f0c70c2c5904c0bf97dba9781472de29926f73483b306436f9090b4b348066a739b20b8c2ade09129655e4ba5f881dd0835fe1cd2882c47981ec9d8b8e17a3eb118b1d140154d256267350220fb511021c44d6d5faee5c4f44e01bef1ccf650f17698d8121b20b2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9363bbfc49e25bee01810e26a43a6ed2fc656373ccd2150160077c21999f6ffb28e4ccb72f71d561e4c7e96f73424ca95fc0d91207390ecea5c9a734ba29d2630bffe0ca62cdb463a8f0c777f4091edbf4671c6c12084961fa1aa165d8295d07450b232a11ec4c623e90ed2509495c37df86191adb33a4e1f22502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8c3177856867469356b377c22ebd0f1b74c9bdcf344d3bb9922831f975c5dde3a476da65cf0fbd54b0872841142fd8a20ea6429f1080c21a9d72f6cf3dc78ab0201dbc97c8300fd7e99d2ca05aa331d5997d6186129e48943b650c0c540a0a1d1e41e23ab53237692ffa42f4f479b1cfc4dba982eb56ccedceeb47c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 4653d3f456f75ffdb2a5ec505c575711d89cc5fbeea5aabebca9076b81d29b387c03514d026f4bd7fed944317dfb67cd9dfc96c85da5aeb31c1145a751c5274c733c69590356fa1f8b84c65e90d47de3a1b0d1d4074c19f2ec32d7d954109312d00e187fbd0ff6bd5600a8d7fada9eb174e4550c1fbbee2d05554c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -195e1bde5432f0770e7919b938a482f6925066eb122053f37774ca6802f33d94e9ae8bb48f189a253ff709fd54a72800e0fe86ed6623e33fcef1fcfdcedfcc58335f17dbd231c30291bb0b71de31741fe35f8e917dcd0afebb9f774234b744bdb453af05317e517c3057802d2bb9cef2927145d5f7c2417fc47f8198000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2988e0d78037693085ab15a5cf1232e96f5f0cf9889582925e1c278317f9f81a95243d27aa8121e70c3aff855d7d1a64ab11b04daf74564b9846b2040054313109f5f20a4c54f2d915447f8742d93f63ce5e45bebddc42b5f106c5b507c77c88622e42f527596b3f0d615fdbd36c7f32659ec81e0a27744aa5a654a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -571c5edc3314c11f2037d8b6d40beb11eabc217d2c30674b642c44532aa713f6acf5124688efd83707cf816d48813c110e38353b2d93cadf8d10b50531fcd7105b95370445e3b4be146dd27ab0a8850322106f859f895870a86f555496349b7480f857f5248adae6bc6cf89e9d752d0ce53666945c085f37fbc42710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 7c4acded9db498ac3ad6a84603a167c1a1a84de344edade71019d0d2e9a6a0dd1aefaa29e9310b1ff3ced5a9a0cb71cfefc6a8bda0a5c2e43bbd5d87d48cb64bea99acb6dd5f3d743ac19590455207ac081a9a4b2da914c70666f8f57250ba4099b194b69c823212c1ac7de9cf2badc85ac8abc36816db9d74f31150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -742c0ddb8a791965f039bcd066ca51f498d2bd0d6141439b1d65882cf861216a6d55a32d24bd58f2f9d82baa87969581848983235ef6263dadf161b60f01173a240d32d7720fa91237f6438c38c845013d2bfe19ace5865d05cf01939cb677f01402db1337db5d9ad842d56a0e0c6a1aff0c1f12b17602ddfffdca20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 83547886621b70cabbe0c9c41d1dadaad33dad8b45e194134c2868eabbb9039696cf0cd28fd4bfac182283d04059a74cef00027bf5209e79ae967dacc373124f0e21149e42572dbd3071cd3f66506ab2f81d1a83f62442cd063520075baf848f9c885aff295d397fc90eebfdaf94f731d3a42c7cab45bcfddeae4a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 87b38f78888717ee891b89a8754003110f60739c503f05d0d70f19fc594061feac2bd0efd2ddf2711fa6a829436731dbfaaa1b102a6690a1d3099cfcdacd99ab516b8a4c0dc94db3155882dc31251edab8b02265ce7817d016087f4946ec45aa72b7a9794049e037e9bbd22eac07984698b4ae2493df861fc7182ff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -88606809e28c2f8e60ce003a807a2b296671b34b5eb68c0a411972f777d7a5cfaf17f99fd7b966e9aadf30c460b2bc15ee1662c8828c6974b899570720820f0af2ee529abc0c0a4b82ffb9ab2d222defa6e267c011306b1616af0f0ab86625ab461ca7ef64c6e88b76b354b4f171109d2cc00a626ea369f5702118e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3a75c1f6df832ab583216b36dc4d121991d98dded7211586b58e31bf997243ad331271c6257957da0c63f67e2dc7ca5994d9b8a53d0f5e541a9916f2b69f0310436042e74d1df47900a618c2731c354600d1ef5cbe9133d424c68964fca3f426ffb078d2cbf00d8affac02155cefd7a5f019a64a40e551571bac0fb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 34e7df32a6153f4aec68bb4ed7af88f31844996c4113566621d4e24799c5651fd42caffb49c3dcc2440cc9e778240289b9f137178e1ac3a4c385f9b53f690dd80fc5138bbe969c1e68d545ff2467798e079ee7a9ef972c80059352c55c6aec04678d5efb45aa1a3a11b80d7ae8cb7c4b56f1d0a08643d154b34164cd80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ff6d5a3da163d44edb4dce734a15ee42265a501a41e2b8640a1e14aa39355b6ae39a1e1d71dd4a862e6389d122948979b9729fe8eb4a2b353f5ae7ef8dae0c0bb71cf356af893a847b9454ac1dc3230e1427278586da366cddc693c5c2a7df1691bb6cda28d1775965b142a5430ec87cc6544919fbf66788509d943e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 77172a12ff1c5d696541c7f3357ecf66a182e2262954944f5e2e94e8802480d649682b5b867777b052d495263ec876bec84cc8223cfec015a77d8c24171a9c2141a2ca0547cf92d97d3bf17e11c9d308d86fadb8b41192ef0726958411aa97d86c62456220616354d6ff8772736f490d40f3daa3bd077a37df95eaf300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fd977386718ad7f5c903835c46f4679c1bb4f3cd685e63c3cffbb1499a7e7a024bee803db563c900b091e7aefcc3f2facb3a1a84a73d097ff5ec456331173d1711f1b720e0d5cd023e7baa0abcf1d86de25574642aea7a12518b45e9dd199244c7690d1d5dd05c85d145af3a4d13fb15a087380768b9c1433385873a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2aeb1afa911597c72efac3d62dde42ebf0a3747825f6addc173a496e0f2b0f3379b1b437ee01307237201a98b82bb7b8efc3c75b6c1a051abe9427f49a21b4c08da61b6e424c91da9f812c48bd34dcf7579409bcb57bfe229a45c85c3fe708b1dd430244e428a84d6abbdd6e6cf60e726ffa39b0d46d483c6ea5f3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -dda534deedf303e8c951cc8b22cd423c10a013cccb8ab693c714c8827951462ee941c0203fb1e44460069c85aeacf8ad340c42fd64a6ae0530b9019f6f19d9b91dee2f2421e558f265124fed3cd7315f5bb3b4a8740c116e85a330583077200b8e08b9dc1a19b949498ba7b58ad46a112b1d0e04313c31d4da64efbb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -65b91b20498c9c7c4855ba0781ccdf503885a5ca64d20932e9c77160650dc019ed758cf3b825cc0607ccde2475c5d7b98640b964547c4a5549170b703097998c5f50f1f50b590bf462c52cdd2c286221a9f55477bb2ca44e8d84de6d7a6a04411bb3aea1a21d9711192060cb13059c39cc95c42bfec648cc359a0eec400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2338a686a912fdd26744513a25586dd3f0a83426c5485c5bce03afc45c48dcfa45095e4bed7266001a698d009da9d8741aa192d63678e2ee3fda97c485988fffc438d2ad1bbbc0544316c958bdbdba3278b2a9b7878c3798229619c26b8f043eb32eb00ebce97395cb52e43f5136d7a451f452d7a5e1d1908207490cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -62763b2c80252956c6ba69952fd7a4da0316e326933b58d8d28bc800dea472df2f25773a74bd56fd085e43b0bfa8cc2ce0b1d2305c496a55098a63318c2f0c41b0c96d60f705a6651be9e749972db9f4e0f295c96dc7595873047dd4d3d39aec37261e674e0a7eb44afca9073abc750ef1b4ae4c51e43641bace9458000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a09a615b8dbbc4164eee173db4f7ed7694d4dbab39c616c166d8b7415b12b0aee07c167f25636a2c41dfe22cfd53e69251c92ed8b81840b52bf4151fbf4d4198ced5d04ff87bd6d1e62dddec4719e550ec68c7e7ee9d54847aec82ad6be66552d5f2bb6d1a086b1b8f48a76157b006fc1959c21287db125f3d6d2f94e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8019236411550c1a232ff011be4bd4a7f8a1a36add27c7473b211abbaa04eb1700c43d1638637942de8e2b52de8ed1e173f21e99c4ebb919033f3d5e81f5f9a778a3683180b9649129752f42fefa25f0473af01d5bfc171f1d23e0fb56ea17f50c36ceb85eb6d4a8536722d76d3de040ca8c008682f028f9527383dcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ef176cd0548f627aa68580c015508568474a57b351b79a72f5550c3af1721493865d0419884c94f0aac8de7bc09dc516d56b64612a6113b025d910d9d9c147fb6e610eb05ecc1f3838482b30f16808ceef35e888b881ec91e950992e3a6368991bd7d59d5b9ea8104d28b0293c1bf26583c2ecdad118293c5d4c8302a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 207de71220d3c498f31b4002f58c103bf0dc91394d16f50789c334eff81629deadf5db984e109f1b905a2adfff7d9eaa0da01ac0b369accf54002a1c7269270f4e9d3b345e1362140e6574199a8b1546f2bbd62bf6c44eea68d17d1a5962db43d464afd34b8a8d0da895bba38003916cb789e991720a0e644247fdb394000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = a8c8696c34af7c2564f341e3ebdc55d4c9bfc4340c49e68fe41aa2ddf1517147dd13bcb53358cf17ca9d0e9150a96425345d381c625c475e01c4412db2b2a4a9177973abb6032e60a7a756ba6d9944ec8b5259158ea7df6ca63ec53df886383cad3b376bf61127a501b5e929f46c7cbc7e9a8b377773b7cfa5e9325404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 618904aeb15733f7acd33fe331570964d2b90511567f90aded691b437a10efb80fcdc0f33295990bcf12ff9b7d805358c8672e79c19f278be5cfd45fa41f10af926d62c9e7db3a5aa3ea8cf6781c3758a0ce85bb44611517eb2d614163b1f29a33813fccfb2607c311524ae2d3f470501065f68c9c4aa9b281cfc1181c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -23e4bd86996a3c723a79419735a5680645120888264251835f79f2e2f27351b755c49bf424cdf9a076de8f1efed3b4eca33b1f7512d61cf1d1ac434c12152af7b56bbf5bbda31e2dcb8ce7f24fc377d1ef139d937f1729fa8ca13e25ef1d3c9402bdc1d585fd3c74cd334f3602ca7dcfb4bf3ec74e662ef5f7faca0bc60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fc4337d9286de66a8fc0620bb5eee0d84d0647ce7dd0750fc8d60477c4ddd17ea7cfb6e37cae51c2e910d8fd769688aa79375e8133aa88d3b7e7ff25138c2c0eeceaecdc5079e0e385f517f94c9c9fb2adf25bca54e07ce5153672a5ace66ffb6b59de977ca903728d371ccb4a2fa03b8088e3550065cc2be89b3d9448000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 8b4e5f14eef22c3d3875c045b834190e7c6393dafea9c7654333fa635c64454600b006414770d933b1d32b9b2a5a4c6ad45344d5acc6b04c8c1828b69216e8d84b56f289c238af5333731de0befdc3542859ef5b194bf21aaac2c65690ae6ce4a8b283eddf0eff36dfe5a47b485a72210fbdf0751759e64085c4d761c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -eb0ff79a51a7201ab35826acb6a989d227968aa9418872c2cfc796c1cb350c2e9962f966242afca44dbecf8b29ce39eedc6a243a3ea0d834c8b564e1b4eeec154bef25d92cefe0c0991405a7c8906d21a319340f8a68893b5c791b4742f668e03a7d320e241e39328c6dbbc1b39fb9aadfab2b9b45ae3a50fa8f66dbcc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2f688bb244b42b2d81a3916ab131cfb99fac535c09a04d5e317f2ad40e324f39405c786c9fda059308d0fe27e3268d08c1e992939b9b11d30c46e5bde38966df1a1dfd7266604d48646f27947a6eefc592e5e39eca15dc356b7e0167d1ebad1ab4cfe103054c346504679c9ccb6936ad66663f3018cbd9bd02b5f7bc2ea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3e075c62e753f95879405c932d23486d6f582dc9edd61dbaa3f922ce83cd9fe47624f050578c59e3a8938d51536f49d329b17f4b369bfb58b5e0621759889f4f106c5f579a34363c640133cf2a453289925662fa92a3cfa089b1dafd636d003ab4fadeecbb8c6aa6560271f55c417f933587a389f01b42f6f4ef06e1ffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = e2db71c0a47d30ffb02746eb1b82199e2f6f2ae5080eb757ea8aafaaf6a337415d59894cbd8eb1116ab23e095d7d3af6c5f7b7e58a06f8508d4b632741c4e587f2566faa0fe9c058e15346b075b84bbd7c9f29078fc084b6729e1bc34ef733df154b9e82e0a42cdc6c300ecb252bfb9b6cfd1a6db947a53621c2af916340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8bea87957fcb0be3662a250b913a7b8150b67a25af8c84a2a0f57d56b8b5245f548e616ec2631fd8e0bbdc474ef24b5a2ec59d109dfdd0610164d661616f2b7b383a955182a578e10f1323d773f25c8be307f810cef7f9cbcaffad301b38235af85019ab1bbd2a9ce3d0f67b06f3955545344b3d7008674b9bc48c868600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 416f8a67d9cb1579006b36311121f3bc5d1cfb602872a4b703041afe73fb8b8e57d961fe0cb8093d20d58f6b6c44e4f25fa499dc1b4f2f01af6b1864963f9cc58e113464d62271d401cc8bf5e47be0331fc2824e12188cdf3c9d7214bd415b6c49f7dfdf57071ec1cdd48502574a18fb9cf244ed5c202177929842b68300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -11871949c1deb938084b82205474233949354bbd2dfbe4b5b509a5c220f3cf071793911f8e935302e3e9886c41927690436ad08c64057a0ea080972cad71c833c560d98e2f2bf75f830d811787a542ac53000664905d3a0dd217966c8f961c1dae78f36b11a562d84946191aa3963549d0ed688d434a2a8a6ef804a113580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c97345c0f4d39fb5ef3e2a0eaaab76b63d32300d5009e627d1b25ab7daeca66fcdb66f3737cb4320248602aadf01872197d8db19453037168e83ac4befa2aa056a0965bee4df712ce0cce374d18f65cc96628b88c383afd0f76d23dcfab30950674eb91507fc0487839254e14d325278541a7de9841e1b5e45e7750c2fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2ce483f8a675f7554e931df7ad5a3d31b6f7ffb7bae0b442a0458827ca6cd3fbacf94e828c44dc54576fff5d8064478df295b385bf4a1a9b66f954b8035e921969d4ca5f6d46ab0314acfcc81c6b3900dacfa0d77c473bf66d735fabbdb563475200ab52dae57ecb9be438c3a4e35d6a46b258f7265bbfb9b7bff5e7bb600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -748ae2b7abf20ff1bbb704e0598529ca8abc66f6ba12ec5197553c73456e9690befdb624203a9b5d967ea657be7fa0c42238659d5a10c2ab207813013b696dd86a046b9d16876dd2e81519b3da2fdd247bae1111f8bce5faab675498ae7cfc739fd3c480b037c87f544e93a3d51858f9e84e1d5ded0e065fe92d653092200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -30fae4da020d1b96f25e28250e7dff3ed50133fe66ced7659dda647d0febb9a191b65872f1379e8078cc257d3aac4eba0d57010a03616cd55d7fef522822ecff283eb683c2cdb7ad9bdfbadfbcc75bd5a474098507774751adba349e72b6de4388284fc8ba1dcb2bfd181ad55a31103075db3f3b0a8b9b06a97cea4c755600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1527bd8a59814bd5034f332e1d1c1104d109feabfecf4201994cc15a953311f550e5fa6fb63dd9d49404efeb1e02669a8b3dfeb6c3f8b7c9239b1ade51a3a462deaf7ba1b21c7ec2d823ee2eb31449c6b9338314b938b5f509bfef1e293b55237810e2efc22d92cee77696933d1d400a3f23e79c406a587eba1283f2403800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 92b4114cd087b0ff8037873ceb08e2e4d70eced4de49f514e2e12f4fca2aae3b94510fe7cd4e277a3920c067d56de572df9ae57f3231dffae00f4bd2b08918d9cc71a32d20335094b4af4c464cc6860c90b6066439c8ff34c37c2206ad32bdd2c8e2546fa695f8dc4fd7f2b85c97c912a78afcb0ace03cded44c4a65f57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 16a43b210bd2aa20ddb3cef8c3baf66f2291b05adc0df2c35d7560d8e0eda5f19f11281d1c7b40926333e7f420a1aaf587c9bc216f2f579e4f0cce3af1ba5218bfe15c2b63632a0a006a67d6264374ec3927b64cc76ee5b5e9e5897f718535fb0d917a429ceda378b0f76c9861662f3cc9807369c85690578868dc12804b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 212d9b2893f14bd963373b7efcfb263cfc9cc95e345908faf4d283faa83e336548e5f257f8da850fa4645a9f28df4c36f26f3189ae626409db2de11a3b8aba3e2d89e95d4fc6937f1c452e916ce01c91bf8314e4bb1e38a26035fb33defd0be2ffeed1e50c046a2cde9d872fad1650d4f6ae82ad77eb9247fcc3c108e279800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4e48af5a539eb16cc84fd2dbd9dbdc6552d4992fa3ce9ec4bcb17cad082b73474afd59efcdd75720d4d198dcf05bfbfa9757c227aac4c0362a507cefa3c413eff54144c61f08b5bde17e8efb0e5ef5337b3dabbbae1fe34f96fea04a5c2c3cf24dc90ef0f14dab82660d2cd61035c566e6484e5b8861aabe29f0dfafef86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e8ca19bac0c67881165097eafc4b008206ecc3c58bc496344c0185e5d1f12cef44d856719d7c93941313da6ddf80c39b6320ac5f8cbec308718feff4d3534489b810045fb38b1bdbe761e465c23c6935759aa0a0c0ef551209e979c6838ba23988d6bc49fc06e5c1d0fe395db4ce0687f9c441ef32149e3f8523245272cd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -19f21057422a4f269fa2d00dc46669876b84accc161d198f29d840e936a2910a8b0b6593a54f1ba3a6b3cd23735aee230f0ba1855aab0d0bc9f798f46f89996bed9e981abde24e3b593a53bd9ca0997f25bf95743213a0cdb8051a245e3e274cf023e8486585dc602719e32a8754d7f4089d30c86f5cc995e08d52750230a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 36cc89303c9cb72d9fe47b167b9c5fa0ed0f2f326ea4d1f4f9e50cee4ff76912755f1f6496a634a18092303f9725c769504d9e5d1b4e351773587efa96b0fe5177139d92fe9b72d9e9d3adcd12deae96f59b493dda6edcc2cd2d9c7006ec639d4d7a538a0ef89f1bb010e5f0aa2394a0662fef59555c7ed15336e7cf5215c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -d82d5a96a3b2b457bf961b01030ce0fecc3578137b30e4eb1275ba2e66806fe90eae0468418d0f9629b8500414e2b9432e7e89c36cda2f1e2d25b96a67f12773c27cc5e8c098f5f0046695bddc5389f13752f41f0c4a79ed9406e916642b7789591cb9c3739af86a2a8b9f6942a846edc6e920f663c14036f67c2f15e1b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -97d0818ff37321bb5f193e063ed1dedab3cb2f5ae4fcd975a700cdbee73d7f9662ce91c9e9b7707801cb2c82dde73df1a1598046814200918c35df28396600b3019102bf309160734f4a33f1d7739207ed21f2ab006be5e5ef7ecdb50ba38570182321dd76088c55955e8fe341be98eb0865209d1be8c6e8cf252913abd94000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e5b8679355b539e6d72260ea0d7b989ca2be69d8b9116f5e991cd01edf996298b89181cc0ff0ef1cea85d721adfc2aa8f9d4e1051c52a73f74d76268e418800f274197c483d40163ea49e82915ca06fae6720c0dbe1d6c38063d6db43015afcdffe59db7eb69d387aa65d96a81dfcae3c7a41a94283d700a8a5aea5dd8c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1ca2347408940468dd593fdb32f7ec0469f699940a2f076dd51470f7c78fcc5df63a0fee855cda122c798947f41c5ba820562bfee3b0968ba03b54ddea35a65ad61707be506cb8b90ff30c4f738337fda1ba2efea3aa07174c1a7216dcb89942bf71bf8f4066da6772aa7656b19b543437a794f411b9cdefb21f9d3fa09ea8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -9b4ab9f0d8f2a5ca33762d419e2643b4e647060f7589c4b9db1c32abf78fa842f66aa49bed3545edf5451223c0b52278cd3a28cf17bb63b42afd17ab2d3d613dcf33066200e57265af2a7e32596d662be11b50b6bdf804b5cee16b276799a4affe483c21fcc88b2593dcac4dbb7f28e31241bf77f3278eab2e952bcb479310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = caa51572d208f08e44ba262e0fca15782e256793124453ee5e77579211970e8ecf676e6dfcf826c67bab08ac06ca271ad6ceaf0940d102fb08cc27f062bcb15a3fa3a66f87ea227bb552e2dc7a72d539761da2222740e8b484072381485a2623ee7fe50f91bb5e1127c7cd3f4caba5cbc12a5d2b2e39b59c79959547203850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -16c3d6aa23c80c607f3163520e023fe57e8305c4c5bd39e04445ad448a5bf4dac9bbb1711c96604bbfe72abbaae4107791dd6b12dd9924195122d6cf2a2202a0728a92a952a2bf0752fde6523648bc8cdd48c659b8a67530f6bc522382da8df2e0d63ab907ff4432a0f94f5c0fc88a6208bfea3fe1fea8d8c37dbd203ef5d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -20f95f1409b1de44509c4241637e838bb32639f548236b8077a11c3300a0df3d2bab1049ca7034522e96f49711797085df01a545a003131a9a018521fdf652d586e781bd4067ed8a5434b9eb77b5a411e15c95f78496b9bff09b621f47c85e05039f1ff4de842cda4204479e1674527c286abb940b233490608e27cd7787680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f434274c044a33267e8e8ba99b694b608637d4e8fd67ea9798f2e379904c901e159edf3d293510e8f41df254853aa48d373fd8995f64f314b7b03306bc7b90d0fc2126b35d67ea75f58e5b4fc59087de7a8921d8ae600203fe033d6a44b514cae149e7c683a3ec50c004fed9f89029febdda2b1178fe903c0ac16f0920b3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -8c9d6313f83e8e2a1b1a229d891dfff7cc8f5c86f2b2d535be5666e78defec8bd6282328a445c6c84083aeedfb3acf5f58976bbabba1de8686315119bebee7d58bb7109702238cbe64e1e6862b67078ce00e5feb964ae1db5b957d78127263dbfa5b474189507cf69683b4ea535ad8517fd9f9abc6b7228b439bfb1e1898180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -15d1b17b521be28ff2d5d09a62861690098f31c14e1b10349cdca17f2165e5c8ba6e160a886af85415bbd36754ce8985b3108fca9ee3fd1e81d47b5e72f557be693a02b0b1b48d11b8dbae02786590b7051b378c6381e88a76b6477d99028adaf42a7c55c50c5d2e6c58c31c0b378282c1ce838e5f53f3b931b34a767bb8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -258fc9984f75e7110e9bf47c3c2aec7de4c49d3a0d96c22ecad8c246847ed964fbd52f818c14eb1628f25f5e276ce7c676d653027fbf176c9fae8b01cff65b50da4d7b4338a82206a26e69db872ac1c7af707b69434ab976a0c627907f67e066310c8c0d97f5365b6755a4d5608898fb13b319c9a701c9c888fe81c1e3581c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 51969d1d27c73cd3cc789f470c91126e1d0e3796ea39a09105bc40ff4fc4bd00c2182a71c8f1d9e79295a275873fc03bf55abcaf248f1d0b845c11115f342c3ae765a9fde32f01ca796d12f34464e084c361ced775af41d54a58f4d9f0f827fef97c33bbea38510828c4e553c2eb9636d261ef4143fefd5075837e05ae435700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -eb1d2a6f39f18a1f7ed9527c4a24df32a297c6bca4e2becaaaace0a2da0873cca08e71704fbfbb41ae4e8ecfebc5d9c9cce1dcf06eb520b67bef67f4a21be9d09cd151b14ab0c1e1b92a7dc686cf58c8a0b8ee9e541f8c994f3589cd609eab345df5b7ecc9507fa99eb38901aa5f76a396b3e61ff6c5a1167777ecc298320700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3996694c79eb5603e105e6ef36844601b8d92b61d39fd369269c5d70bf4a15b3c30009ce5ce58e8ae9793558d770f07a2b788ba7f7d7fa7c3fee4c18f9b3a4f08b1b7f78d9d3822609d66698e5ce0da2676e47ee992fd7f8271ccc60df1b096523d028d32139243d17f37522987c55353506e30f616fc508df22d5d8092994400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1932f5d828b2c2a20b45599336e1a8d5964f74347d52d864486875552ef08abce10df7ab88c763bf12b51071a54c1a00f880c1c1022fbaa71724131aba4c17793899f8120db0e7ff6c9d1702648404b92638a10e0552e10e2c1c1aa5c72e9146decf31ba9460d02af93c97e407a828c915f12ec6877cbfd2791e1cf4db8b18600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4bbacd4000540734947206066144d599fcea0f926a9b4d23d761b07f5085c8b39702f2054f9509edda38cfdb42370b74eb07a452f888e8946fd319503220255b699dddc6ca53e863529decef0fe1d904dd849a6cd7f82971c73c1fd1584f348fff1871c8431cd0965916e61b9c3cb44e03242e748140cca020b10812681d0c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a0a9024b63e7fd73e51a6bbd469ea28353581af323e9c18230afc3cdeb4a2eed8595df4238bacecb4d108b4a935d18ab5e7b41dd9270f25b8972a2431f2fcfb3639c546b507a420ba2163070f949c81f2f9af52165b99dedcb1fd5c5ee71ec587bb03fe846bf68250003ab122ccfdcd0ecb1eba5666bc7fe42108e88fb13d3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 29839cb4f399406c6dc9a8cc64c8ea2416c78274408162b5db901ba49253606a0db14d03b7167e7b9fa0e710bb22efdea52b48129a8f1d049c3c2cacd7420fbc302b2f50cc427a72b58d70bcd56643066b74e41d38f212a6861570edaf401e888776b94fd2881e835134fcd29914f32178691baf6d5b736dafab6669a4d70e7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 370b69ee1bcc8faa1c69444c0f5b2bf1a7e01bde9813218e06257480bac2c418915a4de484b45a7a8bc4654d3bbbcbbf219624028e8271d5303ca522b790ed180cf8de2a821b6bacad2d16eeb29e652de2eb9a6fd4949f31d99903fcf2ff474c208ab333665687ba964ed519e5005bd787f244826497c3da8540d4c03c3483b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -aede873ec348b7b39d7ccc579b13bfb6317b7d72f0c10f3d81a150038f53ef57545db6b4e0a6a7b35b169787121ac988e232f515c73dafc37340b8d4ffce6bf5c6afbd25b68a1a1e9b94028269e2db55c46fc4732d2befb5369cb92162b9ab296e8fdf434fb58696d9b44bc0e7a3a48cc19d26e55e4e574a57d63d89428fd6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = a64eaa0c5dafacddf7669c68426a41f073019211f683c55dd4ffed1cad5867da4a654124eb1a366a78792f1b5f4703bc2cf5335a882cfd282df18d2a0c6c6edf0ebcd8fda28da626c0227c16ac40447f6cc6b836aad4c84f6701c782fcb403f15c2492c510dd3fe98e0cc3414fa881b4d922155547d2f50d05e39d9e0351e23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1b16988d68303cbd170200da70eae638a29024d6f448feb2b0e0ff00093c436de69b508a2efd72f8cdfccff523c99ec210080535e73da35bfb528dd399c82a08ea878832b39f01ebf96c9e0e04811538bb6ec4c55f64630ce7241ae75bd2c2d92497d3fb517099a3c6b32f2fe70ddc4fbacf1d9aab68b7499d5162ceec47fe34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -463f96c2000c90919a4ac824162532ffbf011498c1531416ace09ce4effd78fcd417a63c457ca52bde6b0c69fabec529ab7be77c48515558f7913695c9141315089339359cb48d5e82b7effd852f4f6051bd10107dcb074d7e265b7f45dcc49a9682d76d1e6976604ea695f8b5bfa3108f5a0ace9a3c021bfe645342b243960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -fb07df943d8e44a6a5d1c0f76b547e3ceb4ce5a8071c93b59db41bbf989fcdd7481a78bc077550e359eb1f7ab59fdf92b8381fb8d845f4eb2811cb5a41297f832a6b8e2031f7c6d29788f1006a8c63d3d0263892a088c19a69d7b98eb563502c3b6d1839bf22d8eee378ef3964869d14d8839f95c876769f7f2d23bb69b9d760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 456248c3ef5ae78efca922630f53f89658a02f4e8006d05eb23f5f4e85b68eada1270046cc44f0aa78edef24624727f6ae46da95c7cd0b4fb27229cf86c386c5cec9743e3e08cd041c2ecec760fab05afa5abf27013877d93ea532fe974aea584ccddb9f03468e277a5f670bd95ef307d778a726516cf21df00bde4eb9e28430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2145a1a13137a503c6eba1bf9bb766b127ecb4f73ee3969d57f0d30dc5b60798af3d53cc0b4848330567861789c4a7048aec4edb5848a9b9bdfee8aebbaf6f16bd398d091fd0e6ae5be5bb4d5f44d60768fac70ce4549515890bdd67a34eaf004120360a1a0e7c52ff9f6a3ff931d5146c8624f1e6421a3fbc44f04060d3d96a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1216b969557c239a99240144408a8aabf697b0ff91573bea4f23664f7c7bf7fe0f1408da1caa659899f1cfc3d4f0bcba78c69c1c54c5c4a385fe04065f69dd3878e8a23aece138df3be01bfd345184cce8e2118d53f6d22e7a7d397c3739423f4a4032c63c715383c0b6ca49953aff993d8b78406468bfe4d807a8e72547604e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = acc3eddaa918087e1bf9b9d469ed80c74ee5d71366ef21b6d13a2e0d1390b69c1ca673a850141ce5c5beeed3d9f08344b126b78ae97594061e2831aadde08096526fffccb2f0867b50a300e8dc6e8349301a229e2850005b790ae94ed399a860f8420dec999df0c9ffd53500a3ab9f92a884fa6ecef8449ea03577410165cf7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -76848b60f7cd9cebbe9570ab9f64d20754cc1b2888e48efc86c51079d18cfb0de410d9a64e556361ea9f0dd6845cbdd528489c65eafb298781f76b778dc33511fedcc2a6afb87e2553c63ebb9515c6635fde850cc7a00b6f8b5717050bed4d5a864609e4f2023efa077efca406ce65c8a0a3c0c66ccd9e3fcbd703933d90e5d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9066e8823853b1a423b03739ee64769b8aa449488b8a152926f02305e886b30736bb61140bea898ed28da305a51b5fe39a03554b46abf998e90556f10b2e5d4ed1463b41b591ad987870b074c05b0589136432c736ad813346291200c78e57847c8a03ade48729a1353b7e52e3d284adb7005981e9704a25e91fbff09baeb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b6a555f4918ea404fe273163630e859041439c75b14d68bb5dca20791660e3a9682b7a2d686423d80c09286e4f80ec08965f6b8c3a46489708d02fba567e7ff898e272bf55e4bf0fc27f7f407c19f5573d8aa113cd18320e506e3423bf709ec65de2e9bad5906ad0e47ffc61a38d98afd6b5875d0def37ac495d650051285cbe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 637919c5ed41184df439972049c36760a8d9a2195c246884aac16294924cc276be69b48bc9328522ae518c3dae992bc79b98d9c48724b34a36e04c7ffdd5d063c08e023a528cc475122daf8e2549631808bcf245c0583b9a460fcfd9806197d4724221e123ba87432dc16f530d7f786b3af0d54d2dae3cbf2fcfaead0f27e3eec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -2064bd2e441167ac18dd98205ce704c070663eef09d2e38331918fe0917e92aff87ab929e1d4487ca12543e61bee8dfa75efce2301c3e0c5fadd097459ffbca3486864487b8db614a94b0b53b91e300404668323a3c2df9e21419825d87885da478f287272adb706e7704d2843a4facc2ed891f0dfd3ceec2921fdb4fd05c1f280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3984d014fd7e7640ce2faef65dd2d3ebb375a5015622e20c9b9fa102dc27ae955d8c86b27f8b84a63d935ace035bdccc6f440a3bd82a15f8e5bec382e3e039bbaabb14212c5d6d40633e00ea736420841448f7cc923f983b38645a2a435fdc507ada1f44f2fdb139c0dd0f9f27382d9b3bd5e521dce81e94114fde74dcd8691e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 28be7e4d7d5e387bf81bdc9acea5667522ca0453ca57aff122cef74b71cef8154e3aa3217302eefba88d8608dc5e343cc4c2649a6e76ce9f049346266cc13919c7e6eac8d40e5ddb44a073cd1311e735c1280b7eaca8b3a2941c3b7a08a777a53ebdd8e93c2f61788a7fdbff73e340e27a9ce1464047043e203a32173ed36919d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = fef191d5831acf0c2b9ff953f2455aaf52acab805ccb3b726e82f2da9c155b8c78749fa6136f31988db9c2a2d78554b89b2f88c5ddf0e914cbd4cd4f59a1dc22b737a942c57be59f0ef92464a6798776779ee70c1d2ed98b5646e80935d35a08df0678ed6a91bd756718c68f1224808e051ca40610361527e5bfd3d0606c4c22100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5ee8758b8c20283579a6c94a384f1d8a726d91740fd09f5227a4337a62da2f4dcb25a1c8ad48ceb3bae7e646bac6326e634c2520ad7939ef4e9c46599e8d825b39d4bfbb27e1d13376b304bf6d7ea89447302ea014c3b3c4905ad2236245f7b2d834c5050515351819664c5939a4445406481d82f0bc21561809cf5cdfa0663bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 22111dace0da89e209b06417e8c07f134e3e44833ab0fc2b4579558bdf1b8a437ab9f22153205be7c735a303bd7aa2a7601dd24602f23c3022c0bf7feea41117179d503b797362806b64d1ddfa22fe5f949cfdf2c81f907ccd1746f5eddb591d5ef5e8c91b17241048946ce09c17fbeac9c247f857f202a34e24c093cdff4585ba00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2df5a807dc01a4067482b8524c649ab0f95bf24f99c4e9265e10eebea2a9571d801e994349dad0af51a02a19a4eaf15eeaac5883a7b3f8fd5414c0b10e7c809a5aa5a11767e10d2fcaa8171fd67d0b98fdf4dfefabbb8efbc25ef730c687514bc4f3cb0c724337de8b5f09aaafff2d8f982e41b6d9388d050773c714d48c4050d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -4c96ca21bb6a565ba3a99d26aa5c87bca4037aa3fd6120ebcc65522d483d1fbff8921812f433679d35a6d18d2c9717695635cb0db32e9abfbf0f7fcbf9cd18f7b4243ee61d325709ad4cd24f702cff21d08058709365a787c2c377d382b315bba75ac743277d0b0a9f2b4ec437e5242443e274025fec11bb07c4439fc4e7a6d2ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 59497b7ebeaac2c81a0b6265ec20d6e2143278f574dfde2c1664f7ef14d89c141796e1c4218e8c1e81b7bba80609ce6d7561c6677f4c53dc9deb358ffec6e5ffa40cfe4722a1be7817b8e6732124aa4b17ef1ec663f423f1ab8c2c7e4af073b38252a69e2818202d166f1f39d3f83d753e0e6bfb7a8c3e62d58b6aac5a25f3a6d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1e00c2863a6d918de2ca1925fe32a7216c8164ba508c7d38eccbb592aa39ef365129c398c7c1ae14491573c896626c6ca64122c894a6b48bead61b540508d776b93f11eeab9a665ef54700694c3799f5e4d647540c3fd5553bd09b3d1a3f27745549aa33adff1a0ee4241c75d9d9c5d1e4fd3103f614b740a7e4cb3fc1675e3624800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1241c5b30d86f9ca8eff910f3943c98233d3bd30d8626f4a25b5aea5c0c91ddfe303c943248b29c49788cabf9e6f77c9052e8e4f9aee2ec20c727e4d328c60f9a99f39125429fe0258f56f7ce3199e579feb965be6118d72c01ce2a072a0e8ebaa2dcd0bdfc46503bbb8ad220002d3829167a82ee2708bef14a3af66d719cb1061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -a7e5e6ac9eb543d5d8208c46aa7d7df604ec5a8accbb0713135a101a15930ee7ff23a18bcd368cf151d5a679cea86062b1368e8d6cec2f01728483b4e828e6ec418b3f0ebdab8ffe69324775232c4ab45d0fcd79f9b37d6abc4aa6dd0e7c2822a30797b353897ff2d347e1039443363d72f98bc966c59df6a715d3add86ecf419e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f40056d68ea45bec8e56855f77892c40cc812e7d82407df5a70acab437942b634317a362918f149f0ce3c101d72a54b9d81617a68830e746d0e024b597c629c97a0283b757ebafbd2553aa30ab51cf3e39d2573bc9c97663875b08e9820f30c498cc4347f26798411de5d81d36d92da8977d1fe3e3c10fd203a4f964ba45fce829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -579a6dd9fc0b5c971bebcf421a155605e268d0ecc17ae858ffee8aca2b425eb4772879cadff7c2ef29d274ca06b3a42a4a63d0328de1e7bb1297b3288cc2c5150213ea710588fc48e2eda02241611d1ecfe2fa46e6e72a9592baced5177c762890dd6b19ffc58f409ef5374489a32f2a13efa6e08165f84966481a4c948d6a777a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -10e2df8a8184a10b44303e9b9fff5ff161f7c96a474f6b5e225b8bd5fa15bf9d034a11c4b54c871fdc97f4177410fc771c484aa900f9be0d7449f46ab36798f858c9ffd409954ec42f1c46c7a8b2780179b43eecb6084731e3fed16fe48ebc716e4b95e3e257254e4456001aba5c7d244285ada0b07f4c4981dd5e8090e871658c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -91b0c39f217b842fc3de8a338cc1262ca84b281fba73ede688150e728f6614ccad4689afc8040c57e3572ea6c17c9ddcc468e9ddd3f36c391b043d8e068cbbb8993131c5c45c6aa0dfa72a78e58e96d5e801f60120b55578b4ee3858252dd2e875f6042c22167dbd87f3bff9f6d60958b0958f7aa191ca03c819f647757ee579a3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -a4d780393ea8070b9e3df83d6e5f527464e4fc9c80ec0d30a4376645879bb4135e8b5968b1673c45366a105101835d22b13038629b9f83c7de20c4985b3776c8f1128b8e3bb478fad9e39ab6b6743fc20e9787d1e7290c2040656dc1bcfe8acf9dfa4c925fd3c0a06c93f46ebd57ce775845a95602967de7ff1c539dc6f650f37c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 28abbea60cf5f40c3ac52d10991f0dd744ac5f87bf3138f35034c1686c358d1b8103a9a91998655ee29f38b9da99056c1388616e18ccd8ead711fd4dec7953d58b0d66cf03100ed4a89a3b448e18fea26bd91f37fa79cfcd58ca0afcda065ee1543f6f7d35c97196edd057ef79e8502f24aba4d8a4d5cef231c4cabf5ee9856abd88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -77fd04b975ad0abc97c0481d33754894f96e50a16f99b4d14c4eb84789228f8d45b7d843038afe04088e4873c59acaf0567dbfb57855cdc8f16d5dd92c86f10811274c6d4da85cd1f88c413fb57f3c145a666bd1e63cdb369ca58c9bb774f622d1f937cdc8eeca1ece27f0b12c1e0fbded6af6bbf4bfeb52d73ebd9e0bd248c7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = d642e15ace3f0f1444252138017dc1017d62b74e5a3adee4170e1ac886cbbe4aa572153217ca14a350d13bdf9d5f102b42849ecadf3d470cd30b61ed24afd36c0b148634d6726b7d58162328084ab395ef3774db1bae7b15219df8b88fee0d7f4b46db80970b31be19b5f5f64c6ed7ec288489944e22613f8fe016d943b51280abd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5e220a6ca70ecd7ce3c74956a05bb2604fa7a54b863fcfee65b19ab55885af7edaa84308e23efeb9f62de73c43c2b68b71fc406b19b172af57568044026f688f226eeff8a748b8ca23742b4a62d8e7ff9a2a9e661e1f0257ac0645d7a429740cdf6623751e009c3b845444b1c84016fb500b039a130139a2a837b2385b6a28aeb170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b1010fe718fb84086aa87ca3b823815316f038861971157b7a5631ee93910ed8e2ee15abe284d44a0d8d23f8ef8e204c5364933aa933d422b26c7edea2d8401b4f438c477dce93df131d7c6edd0c0a181784f7415b47ef53b4f74d9b80cec160b0500b6bce2c0f1411abc6eda0660e403dbc527bd549214184bb96bbb980f0d0a2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2bd0e11970066936256d0d659c83d969d26638799996d0a0345b89a83f18b4d4ca59bd9d53d440b84286c22ed5ce64426d3301bd039f6b513e72482bc0ffd3330db509d3a672723e0afefcf3c222f84f9f27a4a00b29f1c02a908afd01dce7d616c4663c3e6d2dea3443821e35fc9acc6feaccc340bb2bc987bc6934a3aaa94e2c7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3e6b717fc2a49427743e553ca63c186701e605ce1bedb7e80643aa5ab629336c155180816c74416a2da0c8767c3b6c43f16d276f8fb8f819cd8af9fb1189663dab07357c3f8ebb0cd0fd4c0280ce5902a442bd0b3806d6ae0396fb5b20c0a7340dc064b34f6395863cdae6077e4978c4a3fcec84275fdd81cbec446653eee86258200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e009d6e57d8befedfe77cc1e5d86e7a57f7ee83a9e77b7156a22d6107e4d033020754aae2c76873bb189075c095bfbe00af160b501034b4fa16cc05876aed9e0df31b24463fef1ef6c120199ae1e52c32fececc7abf373fa25e1b2bf27c754be4824e79453951aef3aaa58224ceec9844f953bfe1eb35ec86078cd7690d932a9d3d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3aa6d9e782eeb281ea33c26ef1afd397a00cde263a9b5333d5d829467e924dc49a7e927bf82782d0539049b1fabb18f9f5cac78eee46e191ab5173fb96caaf8167461415887fecffe113ab901dbbb6b5c60da3d343e53cad585c5d94de2fcd42cc8a804d667b63a8368bb2d346f9d50deb29f8261156e9e6e01b5a6f0dba093ddbf680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 32bbdd9582323a87045c80bd4599143b2ed927713d3336a084b5a8a010e81453356c4660fee832960cbdaf37afc22697a440c07ef8936b7f90421415367c41a8f6b205e8d7bfce36d70898500a8daeb15055ab909b471acdc4658e84afa3528ee8f1888f13d4981bc9b8b274d2c3c6e260d2012c4b4522bc976d22a0eb572cf6eacf80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = ea9e07e4dded1f772c6148eef99bc188d9602bec1fb713bb3c28d94ba102828efd8e65725609118075960da09695e9bb42a94d19ba5b54f15e1ab9eca7e59cfbdb5a65e76a0c8fa824e336fca63cf511baf8bfecbb6c25aa0969c5ec56974fe2cd64d8a109bb46caf45a4e044c6854d31637846091b99f6343754df8f70256abe82900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b3b083fa03d98ecd79ab28c9ee2bbeb365c53263c6da226b528b33eb5b63f967929488b4eec139fd8dd6b647db3cbd07ab33bfb113bc90fe50aecb8f7919980c28568398d0a3e5e484c83d89498bc67d23da5793bd19302625951987dcef2ec8b622fb8db13238614a24390a2bc8e37af38ffc7011196afb7f865fb184de7cc6546f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 221eb6971cb9041128d7e4498a68238fa07dc5cd7693d09b03523ab1b8026f1121b973fab312da0d46f4bfeecab155da0018c343b479b2b50c52c024528aebbc9eba803d8c7b02121aa241e7e69a25d8896138e1a693f6faabb90d1d49f45a2e573646f59b3476a0450d3b93bc56121bdd4099c706c4db287c8bcb76dcf24a1401f5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 19bb09ace014ed245c13df13e8005c9f307e6c3f8d3b6fb255b2f33fa93ff270b0972ca248119e64a3536f30c233fb29a135a9301429d885c2d43c75032307d4320a26c90a2832e4ba33d64b8115abe69677a8574167add7e441c1918a8e876af3d19a36220ae8b00d26f1a706ac5937854bda319332d304f400687a79b46d68dc90600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -94bbe82c7507658c1aa3521d38de789eac9d85d9ae2aae767deaaef7339cbf900144235b18dae17e99b79701629c23899702802a1a2ddbf0196625dc0ce5b84544c8408287b95835b7131efbf2c44cdb1fcc62f0820bf600e60eec2b43fb8f9d3fa1e619ca5e6bc16f0ef298803202de7719bede00dfd04132dc2ace7523a831a286c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3637aff6430b75003e31a7397b7eddc1557714fadf4cd0a99f30a53bff9f9460e1b7b89908f7513189810749d4d1065224f4fc703417d9e960ed298ebca64e9d322337813024dc7ce2dfecf099a57a3d039bfe132a2439fb7c58bc0e1bac9ac97221a7dbe086dca70750a700d64e772cc9d8d9e62e1b700600f99c1c45ae3cb2d368c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -12228d7f6a6bdf3d655db12535ee699ca8e797f4bad01552806f0a2e2f4a82cb56591b2455f27fb02033a776b105aba006380d9d60c54eb452943d05ac17b474a4be4f8058851dfce5a20651cd79ffdeba4f395e585ee2d98f0d606ed755ad585199a3787d6ef4d439746d6d97ffb97e870fb68913075caf03f2bd4772817c554e738000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 188acb32d7bd55c1f2a511aebe8601530b5343375ccab7a0b38d336c0e20991f8d1086e52cc5198a3d479236616e12a75ec64e3b4f9d2893cad884a63ba44f6d6007c0991669382004c1bb4ad78bd184b96c60703c5386786cb4c7bad062f93857c4ea9f98257e4e44d5601e9ff8135739dfd6b9d74caed202e582dae013bd618abbc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -c89f98f402236d785add1115ec1261387bd197af08f65a9eeb94e4b972c1ffbbb691a7e5cf2c2089efa5529dfb0f9502beae6ed7c88f1521ce437ec744bf317a23aa00f3d671fdc1721abce4a3148e0da6815507fa06a6dbf744c9d33c36a05e0fbbbcc3fcabfd0eb0a67d7fdb3e893519e42a0314f93933ad2650fafe57e59bdf936000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -52bdef22ccfa5c7bf272eb00e20fb6393e973c38476886ba1390de8a9317bb0b7966207e0a6fa78a5c0edd0b9f034d9a17ca692f965159d00bfb0727a162b797f0463c70da612a5901e6e630330ff630b9fe42c9afde9b348c8ced42f481f29e2104f84c4107d946e9fc84d95ef6ebca0052f175bcc36778375817c6515a324a4adc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 39f0c03b27ea3e9348d3dd6f1000bd87386895e3d5ae6ff3f58851bd07a3ac50091ea4aa54461eef4fc26113341afc9f6a08e6cd4c04295802f394f6cbae4b644b05c051533c25e09786bc9c2b3c722b2fd26bd6c8b863d25276e6cb06cb77292131bf3306cb37696c0d275ff60cd28f0d150992d4acc219a0d542b2ffff4259a8708a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c56b34e490d66ae17eb2922a9fedd71a9e3a1310bd373c25327404b6c35255e0e1c4854af2368b6a336fb9bfc35d337cfd313a9b866cad9a62b511b803ec579a1d1d6bdb03b978b03df63f99783e9d06402c12a4ddb4abb2194d6c737fd422ec0c4685e51d7b2025fd3c4c80522cd27d99ffb6115ef37f9c70b75a756be66df1bdae4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -ecd939e8af21e998eefda6afb3412e13fe3f2ed854f457fb0f9dc62b7ff2a548477af16c371322f538c551bb34998a4ef15244d4ef5a741d047cc873d432d38795363be15142df0c85fb084e16a1c4f8410836152988754887ddece6ae35540172fae31de59c22d3078d4d39496732834fd84281b5188ee5cac0bb74fce82c90c73ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -b1477e6625e92c5f0d9e550ebb984136b82ff9f6a55b1da874cd0a05faf13e8a558b9a90eda86272388cab2301fff1cc9f51c3edf1e28ec0408ee1f7a4dd550b3261682f10976f9163bf4fd2a0c21b45b822c162a32cb4deed5fbda47844e05df8059c9472cbfc55af00a2aa78a08c76fd429eeb494d3abc9a74f4fbf12aa2badf29e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -28d10de50fb99aeff90148a82cd57e6528764c7a09cf0bad4dca57eff1c5ea2a6ab16d12ec9c8277396dd67f841c35c86b26382ad1813ed2451c54edc7cfa0e36bfd7ef1cf8aa0de5f0dada2df21917ea541ba839e0e05aa4b239b0bfd274d3f730cad29b4ad18c5ed14766c922d199c2dab8de3126e26f4913c904d7395e05d94e6988000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 215b62771393b15022a82f7143a196f570de4b33b5daa49505138bee6af2cab684c50440ada17a0742213d72791bf00a960c76c5e539b367a664eccbc4c24a174979904d05b096335b102609b04fd40ca3788287a532de3dc19ce5e5f68ad4794fdf3f68817968c0eaa680ed239dfe88c7824bf4b3992e880c7e095081edc79a7827ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2182db8e300fde257d3580790969555e745afeb6ccb2f50efb129e4ccdb18b79a7808535dca99a1b3a072470f74731abd09fd40d5b8397e4f5308998da6cc1d827b6f047fda8b95bb89f6039a5a0469ed6a537006d5880925b752adfa3d3ffd4b681c9175878da26c1e583e2a48818ec0b37d505091dfe333c1e0167ec6f3bd4622dbf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -f44f591ad762137a5c7e10e0cf75c78b79f80645fd6a4966f4602c47a7dee5ee466755f9cb74ef1c1493d5c9b96e369f8b687ddd17281a11331555be62f532823619c06801e4635dcb387378fdeee6e5ceb1122a490782519c348150b2adcb45a6023f287eb85f0ca99faa7b78e3b6046cd6a6cde2a353890908c3a7e0355670c40f670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -17f980c3597df69620288e3c7592cd3ca68a3afb73aa01bad20677bf2267e5001687be358b591c45071119e8bf45c25e61bb8284ab8758c6b52959e2dbb88b55a3630872ecf66e35cf17b1f3afad6477fd2bfaa541e93d4206a20ba3934765f5b5460ea05acf340203b75d9a978ba8f92571ada898aff309b1da878802f4d29e09dfa480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -3782cb583f26d1a2a0b214b33c5ac0a64ca6c83899589d9aa7ccbcd52c312f9b071ebcb22369070e7bd907e30d9994f542345be0e15d66edc44c8b4af0e66274710e96578854a7bb63d6eff79061652416df3703e93f807e9c479099d9dbf8f72d6f09307f3c0dad5657f3e29c5011724da9124a53f7d749893826fbc31a71cb5644b760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 5010306f48c64a885f9e9286471924d2f3f32ca981cd6c160a30f3b4da43a6601f8cc1d94f9904b33cf4d980f784a2fb2c921a8109459c90456ee13e13431766c8205c49c9678866da906e53f61496b68a79d601b9f589ca0c34bbc2769674b2afe198a0e51314c0d1fdc6c08e24309a45a1ea2d753ecf67d5db443d0d66bfcc306fab80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 8caf656623c96af77ef576cd7d3785ea88d51a6c65d0d0a5246415fcd4df5aa753056f7c20c66fcf22e50738fe3d0b08ae145e2f0564aa3b5232853ec5ae298edbd3492c307a8ac6b3926869c5e80640fe73b94418c245c8e90cf41008bab45521d619d16e4eef95e1cf81746d9f7f1f3ebacef8b04b9f08c5a49b37a4189ab67325ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -11e6bc4059b8c0ff3597d96892d4b08d6636389e9e38e2b1966e0b29934925d6c174cafac69dee3ee983983159dd7122369fd1c37a422ddcdc27a354f77eb8a2a8b498f19e2b22a8f21c0df56e7b648fbccb80dccea8ed507155a94c548a069d21bcce80dd27a03769ac2569b81cf0af707d53370d2508b72fddc03d691e66833ceedf900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = e0958583958b608012e15d8f2410e1c4cb336aa1a05b4a26c565fb37e686a99434d41f25f14c8dc9efec9b9674aee4eb56a0923fc81dc83dd1a5f6d8a387483559cae08be32fbca1f83916359d5908493071b2e614aa11750491f4ab6df82337ecdd099dee80ad99e7e21117af459dd614807157dda591d1a9f83b84df229b38001f0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -8d4b01522c1c9939dde8b6a0a9a2864cc3d4d767aab28aae30a72b8e0c9d4024e08f9d7d7692216e9e9e4296b2bdd6f507f81a5e8b39389d048839a4ac214352b5af9cf6bce23615290847721550793ecd155b7b784c6dcc3d7449627a4072b1449949392e78ed58c710d5c690fff0fb4fd6da5a463c035a9239ab925c32453182e629400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -7e0fe63d55442e7dfb4658086ea6d8a635ce9c32924290d26f60385999ef8c1ba6394158781658cbc96090c1371e4ada8737977ca2f1b7613b6739cb7ce27dac8ee918bb73fcb1178ee813bf207283ac9e5861c9c555af16a57d8504b3c9fe31961d3fa0d25c1e6302eb25ca319cf3e3217a1a3dc3177b9993bec2608221bc39c36a8e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2af53d2c4585622d31a6a6b62523399edd48808f5bc71e1f9110476cbc5e025bd48a5ea82879cf28c2772df426867383366e72c1743a81300c000b1fb64d0fceb2d87233265a6318d4b90b4c89c3c0748dd8761136d94273e6bd5189944cb0339c90b4d7014f44d3ffceb57ab7896a08436459fb3e0d29dd4f6c0d6c9b9d68dc4100214800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -267ad7df6425bd98cc3bb78770e6ba7790025aff8d4281f118e0802fd352e2e05ac34e553e13571ac0e8cd9c3cce2ee4f39a22c49ceb64587a529a50cc8db45a22fac819ef5b7bd38bd671ff34f90b492a9e291e732a15f4d65e8e57cb32b9739e9571bb16c20eaeb4a89d82d753b82764c2e50dc475d68de153d800bf98d4723a83e4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2457086f74d8e667292905cec75655775b849bbfe75af0cc3211af598165a1c5e07bf173742c87a34be372d46f82702d15b5662e6be73db34a5cf61899f0a2a520437a3d12d0308fb9e028e144d2057edb33f849ede147e88f669b90af70dba4ed4ed8a5b4076b040a10783056c5cecffb5818bc76506dbfc08f634b85a48ff31e16542c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 50911d15f5cdfd9c5b66dff145fdd4e2bfcfac67c64ab063cb239a25c5ed410bdefbb0de32fc3956f815ede73140b93913dfc8f39e7530c586202c1140abf68772729d290276118548b5c823dc5c53eb85ec5a736639a70fa5afb417b72fc0d05f091e4c266a1fd32005b78314f811690f0e9828dfad735118df52b189da8b1191e47b1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3d441be9957cb7b35cde97827ee4e362848ead24bcf216a896f2aa8c367dcbf2ccf4c713d7d6e78c2f303b62c5412e84ea61528e46e837d2b3a9ef3c2fc7a797771cb001196ac455b8d83cf7d9ea094b39f88ff0d9b32cb537be8e74d3a81efbeaa0ddbc660af3c68f2b16a4f5344ffb8282f98161530b398930402733c20cc2b7ba78dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1e0da059b94a56087b24388e92b30bde14844418090b87b02eb04dbf625462fd4bf1b081dea30cba230948e0dc782facfe24a3bc3240e1d1ad1da2a68a9f0fa175c5fe73e84081071d81103946001a4be284d2260b4a2cbdfd9d0e152656d197e79eabe303e5dcaad1c34cb2023b6006a4a04454d176062f65887e99e3e48c95a061697b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f7d8c30b38fc4eb8a90cb37262dcb706f2c0171180061c351d177d32502bc3f738d39564e5873fd30f2d928282a16a3ff56cee7477dc06a17e946fae840c0efefb40faf255b32524a74b69366e9a61d24ed4d18e76f1220b8ea9cd96883bdb9a6e6815ddb6fe09c1e23fff98c6574da901cec51cc299ac4a1af85c25197d28d6d9bddab2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 340a08acfa88a15a2cfa0d971c00ce5173543c26e87448288b4306d84f8bf2468cd04690185b073dc85a76bf63a81ed5905043a1f93f3d8e7a9e182b8a3881fd73995b768ff4ee76de8aa5ea2e74f4a59dec315f0737d83fa521b5e786e56a5d3c3605d6e9524936d7adaae740cad6c067dcf9a4969365a752aaf7ccbaed4ab973795495000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1a7e58f65e3ec56dfbb10a34e038b660b3c9251fe9d8a9e7b55d6d59e88972391af804722aebb01ab5bdead4c8a6347dd7532591efe93dda39a37ab78459ab45c7f92a8feb3513236d70c89ed86935452f6495863afe6349723e7e1c716218b95d63b1427c7ca6d573ecdfe7c6043caf0ab3d4e5a22e0e28c3b58ec094977ac3780472f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 243884e10c8409cd05f4564c72c27ead4e6313baf322385baee4d0b6df83ae905bd5434223630310e29937c31ead20df8c5dd44c9f2953ecf12f73fef1d03d46d66cdc252900b66ede16f33b19c3e5e0640e10ce4ab6bf8ab5c9920a173c1ac278da2586b32e807ee65d67132041ba3da164462044a8f0613b3b2463c6325aa7a5ad4ec90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 107fb1dee04192834579da9de966a5ed43dfdfac75c271a444d8ec4e46d25cf818b1142652e017aedaa2deca46f62d1cb17b38f5cf3c7b6c9565db40e028d5bedd23313c568665c30d294bc7c6000cc26c3aeb97f25238e225e1290440e5a29327cc7e5e657d1a6459360ea1fd26b084acd853775973b12e082bb55383686c0ebe3495224000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -c481839908a87416a0739206d0e464ba12b4d18db8fe898b83bbac8154b5257c2a64c2d5a4a221d54ee0f7a6d4f339a90ba2b72703caa1e90af4fb0a1cd10dd6c9cff98b35f3d43c4161bea474774618e2e587567706eade88adc07ddce43e667bc6d0e1cb534be0a62f91654af906eec28847fbbcc98ea67dd31ffc1a1e08e6b4850562c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 3e4882c6732426aa7f4059bcae4512bb16465f7446bdce065ec270b92f846a23f4433c6f9d80fa60ab26042e57cf76309f457cef25e82fa0e58b5c0a2ab0a6d61ab8615bbf23956962d8620716ac8a0bf8f0a320d87ffdd4f290163a8a7bbefd61777db72ec45eb3f505c1ca7aafd0a03de0ae5e55db5372727d6eb0dfeb7c155f22af9d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 1cee9903b3fdbddee4ec95ea1035b19b6741a2671035ab86d2c84634784638cc15bc50faffbea66f973482999942be35970de4607f4993ed1adaf5240446b805da4f040293849c13a0200c8ab3954dafbfdd32b2a1a3a1277de649d719d94882d8c73f87197ab3155f6227da78af9e8d986ff7efa73efb2b5061f335a539884b5bed621bc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 44f834ab5659de0daa41f2c7154f27d3e8bb72c8b7d8b7f7058d9696fb0b80b4fe1674f56ab48390cd780fec6133f52f5069b06adb4c205d7fa80891becaf82cc4352646e090fce98f270d415461226c9648d7a06f6044d1509d1d6c69a44e40ae9c30f15e2d13860b733ea5f7112ea3947cb338582e84b4fce025b680a2b6f61e44cc66b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = fbac122f7b65dca81679274e75a412c1948bf781ff97c7762ca08db6a76a27c651db330f09a5c6bfc5f964814c7f8d0f78971302b86de1191f461d24c2e3901a1fdc4f68f541a01a49abf77e6d6c7b7b254d085271dbcd92201925dddddc9d90df604713aad172f70e6e2314b258c0934bb0a6cc5897f36435ba928c6351ec32ba081b84b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 32a60b538a5c06bf6212640761aa12bf3f251cee36154c034945d256c360ddcd750dc0fcb4f9e98fda007f371e7b524700da5d733fb6bac21c48f8f60b06568d6a0f24ed03b54de3566ee3ebed277cf5edf8e82e9e522d181a06011f9ac34e6f02899719fdc2bdb9d99c918df0da5f24dfa2ca57c5d52d71d41a8809e892231d32f13eaf7e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 3466558bd989a31186c12f1a077d8343a1fd7f8a0b8f85d1f04b7f6b3c97f7fe0d1071d6087726a46a848374453615eca17feee9d3c6e3d0a3c2698a493640e1a87acb1d8f37ded9887cd599eae75ee9a190e9c6b4c70ef29888fd692b17e56656a56945cf1a7deeee9fac867785d703585de05334f6896f8ebf03e0c7ac5d0b7d88c681380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 98c94fc7df02838f9fd6da21f1b30ed2fe624ff6b1f32a9f8b6f92e69ab201009b85abcd41c30de208b6062b2b5eb24f375365e2f9c96cd958279b8092792c8076a55d8c1d6509e2dbe51e7b7f8814f818f175184ae9b2c162727d7c078cb646592d5f7c3055c1a01a4680000ed43337f0a007f5cc1d85e9bf0f6080d4c876ba2d8a005da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ba9687af1bdd55f5b0c67494685f5190ac19d8e2724b19de94980cdd41bbdd62d0e43026c55eb341481dafcf91e60c605549e4ec54b5b4dcd341645961c9f3f29cf35d4eeebec198fe627194c856be81093ccb31e7c0d9913882a5fde4c0b70c0a1fd29f09f95e3d4c0ca9e48c78aac948702c4a4635999da3470ba5717b60d644d6038ea40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2f66dd1ab3bc65f832f5155b2949d7a479e5649c6a6a835c52406bcf237c0ac8ae4ca147b93ec9e4317b96aa5743ab8333abb700584f2b5c39827673095ac06f56ad9f5f95ccecdc125393a02c325ac69cff03b00024a32ce8a093a5c7393826be0d0de8eb0fb57319c9a9b71b45d7daa6dc2afe5c620d95564200213c36199461200c1a2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -25b346f2aace8bb0138f8ef717d421a9db974dae2e1d4712329f11145b31ec3e944295f8d116db6c16cdce1eaf777bd5568789473b8b493856aee14384bb1a08cad5cd84f8b4bc45fab36fb975fb1b1629c2014522bfe0ca4361f0de8a37ec0ccab35602e49b9ba4a0bb3fca79bcad046e923ce9361eba86c2d80b94a1f8491703249cd9d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = b845d7992aa6a3b3b49ab888562f7055801ad877c22693ec561ad9fa6d051cb7669453f00a3e593c2b7aad65d8a8777c12e6ae514e88e56a660f1cfefe955821fd4789c9fabbadef2bd8d65b08ae8eac2acf760a6bf0e0b119e27a3aa4b44a6881b20307a112b77afc4a8fafa59aae68d5c8e6078201c659554acbc68204822efeee10d06500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -5d54bc5a4a3eb8eb624a204a216e307f97876582b6de6bfbd94bf08ad81996ea5d1c3df6fede8c054ed0a28f73fe1bc90ea34e0a1abeb2829132612fd690dc5d740177264f4361f1112e5f7ff0d3f8167fc92022aec8eb50596428a95b714af44c8754526397223206cfe9049e9bb17caf777d5141f82ea6f1dcf4966801d26dc429db768e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -350b95c9ca1b99f025bf1b37e4b1db220969655c49561513a91f46a85d517cf48e509c0fd3600a2f51a32089fb3eb95aa5ab6d35ab39123ec8cdc356471769d7d810acd3452a5517841ebc6044c4d8c99f5577341a39472b502c7f8b58bc6efeb18c7187714215fd4999be7c20dc2d159d9e994852c79b635d67e926e18b6e0ebbcb4d56a0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -97d48f494b1b5e2ca92942c0017f1dc257e33dcf4e33a6a06284a519f59b0b80822f62f5bcd903fca6998ef2eb715ac2b6b732948ca139cf575bdd8c99d21a141e8aa21f903c170c5e4529bc9ddf633be49a2abecf3e7f79312e2c459caaa4d22723869343e9c977a90312a361d37be21efd36fd0cc9b704671c7c1f89a963657a91045a8200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9820f24e0819da26693d43a0efec9720c46de638fc5d40488c2f778c1bbe236600d6d77ebc4cf47733cfbebadf13df05abf6c0c2bd6b5dfc4b3e59d38334c66c290a5b79ea1ffe1fe0bfd92551123db35a784fb6ab5a5ace7c2cbd823377218a91e88d1b111f336205131d64a6625730b6ff834bb24f0f437347408f247761a4c68f4fea2dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 294b75a6a8d41d9e0f0c71262220750946fdea0b09e26b863042c40814c5a847dbe820de540d027081ffc8aac886898c413b6cd85d6c2d5c4eba85a34799b78d38cf2827194e2eec1ae858f157305626456be85640004cf544fa36115babf88a5d6c341135bd5243cfc669c6704651715eea5468c3e9fe19831fe051ad4a4bb4a597ce7c41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 31aebbf37f58d0e37eb71371e17b6d66026ef96346b82f28f87eaf12a5a688211826a174ae5379991c162049794ee0323f2d43bb4fc9b0491e3b062de6b96441d227bdd9078ea61444faaf5e09b2e07e0a4f94e8228887b73063467e7878a5c79628180a720dcb77a4a539325c8a8a408cd5322eb8388ca90e64cf9bae332a7f3eaae63f367000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -158acdf3c04dccdb554cbaa35c140e818b0256b7c53c0b76828253d5c69d8d3ec842c112298465e8730ceb0a505025c1d28245d0f8f21c3e3772321bd514ad978d78b50ad50e09c1bb0ae487c37e22746aa89897bed61e1d8b21e11dc4dde4707d6bbddeb40d9c7a5b058b3517e4dd6bdd5a33d1a3576a826a720e024383df8ff5e9505046f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -df6854990ceddc969330e6128699de4ccf7242ee32f7f3cc8541a321ec17eecb439adb6604761dc4fe39352ed352d07a52c23a478882d5323dce08a8804d14c29c45714e84cb60af2c0576c2ee8606c5f407b28d6c67681c0253d7747921bdb94052bd08e3052d0058b8a72ef5c6fc942d56f399d27c01c7f3a015a22d62a1821bb312a4968000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -12ca12f6a8859955dd8ee97985357a3ee021acb111aa4734384a00c16011744dea1230966df9fb9ad15bad60526176ee1226e0fd2ae6c86d1f9e15f2d8d34b1d005dbfe95255f307a987ba3be91a3a9d21456bfd41e91668d3ce8c4835ae38bde9d1cf2b0ea38679942c2292866ba9f4ffde4538156ce5e6d47016796e0657d3fdaa2d49336000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1dc3a30f745b41c365f8c357a5bec715b8996a40dbe068d48486d96faf0d84acac7d953834d6dcfde9a027f18d2b99c4f7039ee6e1b87da9f95355a3444b992c9aeb41bb6551813473aa3a63ca5859a3cadfe24784e840efd976d8a17b972f1dd22f0d97347c1b6a774c01cdd59aa70aabdc5408167eca4c2f36bb3eda4d82d7ea7eb601fc7a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9afee4641401e9d621c30f4017ecf9273a5fcea6391d6c4ba01cdd519679a2fbdd13ae7ba761434ad5004a4747f397265b27e0d4d3094271a34b3d4f999ace7d2523cc0c2386c8a362243d093de31ced55378d2eacb31cefac6f450d8de438286c973f7cc5b9745dd7d7d31c6c47b372e61ac072fe9f3109a55bb461bbfbcb7ae89da6315a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 4cf3cb988cf3fa5943470f5e1cc27ea5ae1ac2d88411c82c1da4313e42cab4116908b28203d00124824dcb9d99579e53d6ea3f28b63c3fb9fcfebb34e47b30506be00d8d8c307d1f8280d2698335b95617d49a2b98bd6d7d50aae69e5074efb6bc0def258ebc684144e54973c9aea9b44fe8116861428ac0b3026a065906c4bcf788040d5fec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -ffb212c1a9ec2bb12f975773d0dae0fad452519ca9819b4edde8856e37e978aba12b44eb5ea6f446f2035d88568a8878b6e041811aed0ab091e08d704b2eb677dfcb9d8a520d55a7f51ae9fe220cddd35adfe896811d3cfcff9fbbdaff1a68f50db4724fc813c27f0327a22d80fd2a1b3ab906bf44b785fe311a415c7f50b3a2f2280b5d9d3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 228fb062cc6029bda2b493cc252ef3ea2f6b351f3ad329735e6f5dcbac79303dbcd1f32eecd63c7a23d97538c44261f747f3dc8150291bafc999dcf25c412cfadab14f9dc385794485db43054a8d1cd9f172969397165ebc26f2d0d9f95381478fbb37ac5ad231ce8e834e9e930a582354fb3398e5821ecbe67b635a4ecc33660a43ea75323e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -bec47049220e22cf1f7c8abe315be29939e719d9f272e2248851627d4a68e46cec9c49fa41c732068a5a83b76c40dba800f319c81a6581369b3da7b66be7a42884937304fcbe9a7f0969890b7db6dd4a978cb055c24f9a08b701a3ff630dcbaa7f60b41b92532b3979b6676d0f06ffb9a138159c92c6c8643c3b64284b01784f5c01917cd6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -e5320d85610b4ef3e6a16c2f2cdf0ec7118dc72c863340ff30aae50447db80c6e8407ee3a6a73b9fd988a7dedbd67c4d87963a17c9ea56b64e87873d0dde1312f553ef3b17ac87ef2ec7e7516cfbdc7bd4446e0947b1a09567f31471486dc6f07a7c5e72b8762e18bf6511d04f9e0cac3384774b312a96b01ae93d343e5cf6c11ca83b47c7a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = b29ed1b6a1701aebbee3b484e90128753529e32be902113e057978a30e61233e10b29329d45600f9aa84ca1fb3248bb9d1bb814ee790ec881ab27b53a4d0e984c361de3fabc8d4db2764d3e02684da1242fa70f3a0a7d250b2fc1b5a444ff596218fe57d443f5510a8f71a0a0345e9d93d0ba5e0083dd2b87d75e1ce43335b10259d65720b50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 167973df7d7ae06da4f960ff8e66c0ebb8e2f7fe47bbfab1a87b39bf89a4d22f416ea08c5d52a6cd8c3ca8c392e67f7b2c071b6a03dbbe2fdf0465c845b445527700649353ed25e700ae660452b0b158f89ac21dccadf3888aa82989a785b14a22f9f81bf7a7c7a48943e1fac76f750d2b81da1c379979729096e55a6e3494a9f9b573087cfa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5e52b04dd30fbb74992491ee944f2e827ce83d275fe8d2a8fa435d95239753a8c96c9856bb4f663095b8d56ae2490b7e33520513576696138e2d80ed5651afb5d8e003b3ad3dcdd708b534106da729fc56641835123053395a0363670f599d398f2c09758a1923059aaff2c7c837de078f69c981c2be73086b6f6698bcf038f793a157474a7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2060bed776bee6fc83330be02efd74c2891a49c959d6766d162ec181afecd782b70760cdd1749c0f52b7d17169516bff22bb39f9e791dfa701f64c1834d4e89ab2da4ea8810c3fc1bd0a62fb226461585d7f76e150978509dcab411a42768a9dbcf7079b10203e64c6713c69525c322a374d258e9f49d0979737f180aaaa8f4da1f1d65feb9780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -72685f7fc7635781e05a7470846bd58797ffccbcf65e07b574ed16e2fe6d9eb8787f80b9277de8189ba8b3d5a6e7db557203fd1abfbe25683cd03ff21636c6ead30508019bdcc0c2c3b5c26b0206d027a376aeb67d5b6ffba1f2e1c8884dc1e4067160354794c1072029bdd05e3965dfa818b1a8f3aadbf49c00e886f4d676e5e05a59c1bc77c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -242c2ab5058e9360b4b1908604f790b156829d879a0fb37a15694207b6cad653c9d4a2ca8e2ec985e7b9a6ea56c59c0f0ba5e08d98d0460473a2036fb00dd022dd21f28cd4cfa5116cd2217aa9d276beb7b532665b0d9ec00fff5b6c51e13bfcc755a313dc3ba2f584bc5cffffb7b088befcc6d9894faffa5ba42da11c04ba6ed2997695332100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 19cecca56063e459384a37f62fe4d9f5feba0461d3dc4a21c6152dddd22371203dceec63f248064a529a6481089ad9fc874c27f1a8f725da870173966acc6222d5164763bb2ff00a1f58cc4e84cb1a37933fb355790b6f68c621fdd8e7053c6236384a02719f88988873dcb70fe4ef7ae87ad6061cf6df1fc8fe12ff1f52e108352eaea9dd5e600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 9991c205b44b632b6c68dedf26a76930e9d20e72694e02a6565cf2b397ed2497044153595541ccecc55822a803753b8313d3d092592d8e6022b80870d801b88e886c31a5683800ed1c55544cf8c886b5b0e3ca42c2737bfb9c22f0e710cb323c6052d5053243f37c0f303f221beb09b9958ed7b94543a595ee9d24e32d6c4856af9a0dc1770be00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -50f8ae53b60857c25e58b01c89ead7e716f648fb210022cae79d37a91f4294b38b2d0b23a58484b522d6d9622821e6842c2b2d4a9a444029e072c7fb2e6c1d3ff3588b80a98a86addf398469f52afa0cfc4070b8cb921d1b31ba075310c33ebb89ce2f7e38e1f0567886ad469407d8480f4a19fffc986a6612648592561a7497b48fca58012a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 23138189f339b3a8d5875ab2516a83ed98de5c3f5f6ae849e3fb922ae890c30d9f5f6946f395303afe95aa8b694c6c91456ce15dc25485cbd71eba4a486abe3e02b965d8ded6d1523b8f30df9b672ccf829cf6f440b047c3bf244022b3434087b77d673fb83dada87b1f461dcbe9d774703171a1391dab7989bce115162c17ba2344e40dcf0d8c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1cb821492a2770cc1834d2b3d47c6659c3493c7d3f9052f95d22d2533425aeaa3a70c116c8c9eee256a8effd4d99c72c8699c1d17ef7c4557d53f5c6115adad143ce1776273120f9dcdab14f9db3ed1729208978288d2832901ac72104d6b93cbbb699370d65ebe1de7b1f40d00acc3e5820d3a54fbe15d1b6cfa0d0152b31cbd92d59ab52a40600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = f81190ab08c1ae2340d91fe8e4b7cceb893fe3d66c15eca2515db8da30965757b19082d5bf48b8ea6845365729cbb668f3b53649713bbdf42a5a3ad873543e49cfc0b28e838edc67f183bac106011fd3bb7f61f4273b8c9a2c45eec9eed6e92673461210b67dfd7e69de8c4e519c06d0a84aae4270b144c387c3ca68eba94fe79741856e64b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -37c4d7494c237d4795813e4ba9dade1766828fa9741ac4a17fbe20b90cdfa43a656df93ddc3383391074914be91cee79a3dd7499ee2c63fdb5491c3aa8e2b2b43ebd15c410cfe8662da2e4373b936f184778d16a158a8ae30e0b19b6193e83d428ead31cda4ee8222001cd6b7caa3734175f11de3d8f567ed43160aaebd70a2d4054a28212a54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 19b103711fa30ac4e7b58b37a7d9e2b1e922fa7f6d4af30e7bc513704be043bd8bba2d64e86bc80d9085d984b8ed54561c6d6319a625297dee3810d090e4c1c068084e100ad8fc8caf626337ff55de8a8a389777b48eb6394f4b5fea3eabf1a97b49d039707baf777111d5493c55c2942cbe55533bb436c282465fe3e7f4b04b8114cf4bb2bdbd800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cf68f41f4edb1de401e5d4808cbe02c14ed86005b6fe84d061d966200fdb106853f788fcc0183158c4cf42a621a8f2af9a7dd71af223597df4c9606092226eb372668bccfb777ba494403938426c44fec047c3a6c02bcb2d9bdbbe54fcd6a0877931a9bc71c128a76822d5d93f302d1704ab8c8c2313d5105b915e22aaa796054e142822db464000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -53ec2bedd4ff80fa4d06e31fa6f726e1c2e9274c7ebb1377bc0dfcd5aed7e4898ce9c136abcd5e3d4250cd6fd8f2255c097998e37d0f825d8956350b2c91b65edbf6d81c5293d50239b298fdc33b5cefd82e6cba1147198522ca1d34a8efae3ca4d0081abb911ba5d9a86b7327922b158b31b4648fb8f0895de35c3f6ec799712b642699b17c44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -63dba43255d5b9e33fcb4a8fe2bda6efc8f5a51cd130896dfa6e7d09b0006bc18442bdb5b14da6a1b54e4d7d8594f9e7f68cbd9f1999ac179319cc28d01a17e3e46ab0f76f449b1fbe45cdd62069ab991e106797933ffa5d5f34462c49255f87eade4ceed11870644c6939736b6e32ad6ea032825a407748ce29063e91e66e1b24f569472fbd1a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -71d2b87df61bd229da950f7dc0195ce4573278884741e9e7aba666773c577d6759b42e82e2a6db0db0881bb13a23a932b8cdaef49e9d8734b15ffe4594c5b249de7ffb22f20336ade907585c9bbbd7b725d06711ea22574e1ba51a246248c89c33ba7d619a04ee8c6fad3c70781a853f504da81aeaa3c1e1efcd83f749a21902f7f83a95e8239e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -677ed3adea9e1aa602b92ce5cb436c57033c91ac56ddb7c2139e6cbe1367d5b566c3cee760167a0fc95fcb117ec16989882cfb298aabd96372cd2f506c863ef7c3f4f7534702881ee108c53f2d8458c1390544dddf74415553286111deaae1f950e58b7fbe774b914e51eb70434d07b9f1d5971c4713f44f4bfa3035070e65b44704fe36b5547e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5148b7ea383b1f556cdcc82b7c32124354d4d5ed7395de32039f9b0e7bc5383c0497cc9fdb060264b9bacb947b5b5b1b003b0e88d4617eb6e8de3b9a85e061a037716f565fde6e3becdcad07e9671930d4da3e5eefdeb6ba89203d9e6711e9feb49e72febd3fedd72bcbb9ed787df77ec2bfb90350e901a670d56b367b3d4ead4cb3d3e9a9d98ac000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 4fe28db65b6a1afbe6e35dbcb2158040fd59be2099d109f342d3bff7213516712df0be30bf460aa0d2566d3b2d6027e97b71917b024de55271cb0cbc9676ac4305cea51217667e9b3e235e5a52890f8d022d191a83f05ec5ffeac063fa368985ed4811b95ed491aa25e71d1b6a01a517dfc540a23ee7af85bbfa1e350df9185d27133da4ec478dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 257274e0cee33984a9e2b5bdee00321e6ecdcbd409dd11a275f6e5d62818dd4ce0a260855e14e90272b5b3cd13a829fc9c93fa69cfac4a26063dd1d9385d647938300c811429a73dd952061ad7806b073eab77b5b9a9ecd487e01bb170b292d142acb61ca9f6b50ad010ef411d690529345ad1c617291db66d289f2bb4e69251be22a6e55a4e11e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 36d9a45dfc5f480906fb7c5f021166c00ac662cc56cc4901a08d8c41406e7bdaeb22a77561a72d58be822e82c4f44ee5d42d4c9b86ab7815582b8621ef8c06441af4b031a83073d94aeb4cd08020b9f9e67545e35e4a1decd140e17342b0a3f2f96ffb16c851d4ad552b3cff46766ac9cf29a09fcdd61047b2b227c42e31049ea23410351a4ecb68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -29fae802ebbeb68689c705793a8c6b341574783df9e8f950a52e80e530caebd448470e8c50ebf39cbf5ece9f93b3bec9395e86e8cbbee6a4bee96c6b43f4959bde3454478d842de99b92448f1e7a8cad9071611b515fad1a211696cfe9778d8c925431bc202a0f286f74f285858db822c7d6eac0033d46745d22744e8eb941a9a3992f8a53ba00e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -9921a8db545031dd9c8370ac85ee39b96a86b72dc0efdf9aa0a03b3b52d18003410379aa2cdc1df211392c16a6202a57d1ed8d9b41e035147e3c8b6d929b3537403706d0cc4e046508a8cf443496197aebbb0a93838596bb88071759ef3a3c0be59f7c08a57181414e9474734cc89cb23a6c5499dcee84b82e7fd2ab2e8fb53130e52b23ed9522b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3da3a687c61f38cb5004885989afdd57565441fceef576a3341ab964f333548bcdce0950439230825cd11c5669f898b598008f42cd71706fab4da8abc4b4a6b9a08d779d67b12380027cc8d4f3268e715e55ed7c6f5792902196b91eb2429c5f9389b0f864062274d4984923595243f7fa97f15da5b75b315d9950d139d8a3703945c6ee9d63ff7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 5ac509893c21f2a9897a28e0f0c37a41b44e36d86b2fe432a2f2d2725ff1968ae440063dd0f6eca89fccb793e6d74318116d0cfc561d2a273d43e047b9d5f722b60f2d6446a0560ac3c7626bc04fab0aaed1f8d7e56ac923d6290f7dfa4a2b0128898d6149d859d1211d0367a070505feda3efec035a02ae2a167e3b0ed0a3de140356bf43f49400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -df01e5bee623f255d17acc2ea9c120b8f7b56e40b5cfcabb91001905d86397781f53500d79a905a1a5cd4d2520f9915b82f710c7b5c06c6f7dfdaf1819cb8164bf2db2d9e526804b937986182f5251873e0a51540b756e82be6b81095dc77e4f7dafaff0dad347ab1a9467f41e74f11590798cede17d47008f6afb2ae41de8dfa708d54088211ad80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 92a6926ffa4e35c28b441f1dc2c201c4591a692ab00dfe43033816adf1b700b92242862a2eeb2012155ff6224ed89de253c0f09173f8aef525fa0ccdd6174a3b51603a393520ca501abd6ea8066a281d02e932ad010f3a785c24bc04fcd90bb7eba704babc385aeb30e95deae0c020f2172d4897342a5d351869b18558dbf1c240d91a30322d66780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -5e00df53c4c645bf7f425bad10e002832e9cef0e0f2ae613468e7cb246be9c8454e1c2017d1aeae67bd7fcf560bf89ab9010a3af7063a31ddbcc2465e087551a054b2066d59599f78493d693720ef5118b262d5abadd639be2132d66b3b2758d39597786697dbee3f90fc5522a94007aa8ef909d5d4f45fca0c4440752c547e32a7bf0b9a51f6e500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 2798f27b31040c5f42eb5783275dfd5a3d1a1d3509d3ece2c8262d46386fa9aedf44701e34628ab9c011fd89d3a32825372fa368cc777b7204c167728ef469ac8d29af4a0839f161f67f8e473e9b021c769425993bd3ff97acc33a3b88b9f37803b9d8b59da288c9eb6656236e33810eabb552f72d125e787c3489fba9748b9adf176b62234fabf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -99978839beed5b0d9283bcee5e23bf1e74c5b0ecda51e0ea72c6272a4fdb1bf6336318890f0429ad3b77f8dae16436e30181b0a99a4e8c1a55bae02d826d5b573800bafbca2d0d8746cb5dfaddb6ba12fcf59b3af18aa860e17dea35d5c8b131014aa8e9f353c695398e0b230bda84de5a0de9440fbb6c16e295a80151ba2db2608f0608e2e9744e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -1c95741ea89d724075842d2b4de97e7c87f00e5f1ec1a73c31ca5810068e417a97a26bf76040826195e9d9f2b0c96435960ac9b4ea9dd153ed0f04efafa79b12ba80274b9dab878b755fa1e5a5c1f6aa40ed27eff95e42ab0a211a5cb537e138dbc43845f9bdc8213f3d69dd7a89ac9273fcc7db7ff517862cca58e6e61d96c8a6241142bf8c0d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -1d2223362d6eebba7c14973454b675539ea179cf6343e653c7af3239eb648ae3829e2fe112b1b568e710ea7cf593be726c5d11e6698a075f5983938de0401df8ca19992e74def6cba2c859666ec9086262c1b59189f5b72b1b205f82457a631ff68685e7a8f2ec39ae3b9129d7723d22781c688e4a89f945afc34a166177f136346ae2f4beb2707c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -135b3f456bf34fa25bee38ef36f8d939f35e03a674b1fe0cfd43cdcaf598a5105b05d87d08c65255f39a005bec9f97518ec07f83e62a78eada113336d473d6063c1462287a440c7de3150e09550a8ebc36bb4b6731c316e04e505937467a68e0f76aa552cccda62f42038d243acd3e57d43c788226cdb5d8dc0b901c9db8581febbd3319a40f956d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -d343e7f8f9dd3eec7a78eff83bb5d8539babfc7185e14e17273426bd3a350899a2b8009a9aeb5ef56ba929d134e274d3ff00290048a63ad44cd48daf3b0a71ff6a641965a4e45a7e0ef9b5108b3c5501865b3570a1dceff8158c26c58c6063472d686f2254d79069ccfd1d82f6fbd4c48ccb3b5954582f42194e4ab614e1906026eaf280095e316c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -70493777053ac19e9257ff94512179eb6a30812f32c7d3d66deb1ccaf069029e6a62d5e1f58f62a7fcd292df297ede0627d14dd599d0e9fd83488fc84cbb86d6c627d6ddbc2bb1deceec3fa2b4ad14b2db8b99d4567eab79e123e21197f7c98c078d59df5be88778c581ce5abe9faf90dbe5e48bba77d5ac7b66f6c47f5ece7af5a5b5c6971303d7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2ab06c12e01e3193ba8b909c61c58aa40c61ede5f91bb2e93c9251fa13419aaa80fc895755857713c1fb475028178a09a88498af6e97c752d0bd64beff1429d58e6a49376f9fed5f91e1b94f5841a6eac6af8a16c78b6fcdea0880661dd8c7f82f36115b2cc914f215a21e828d95f375f643c2d883c4b1f9358649cbc3095aa0c4e6a9de9a2db8bf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -140e3926cd9f9a1e6cb082036f0cbc4860106a66b2e07f86c33c59828b21b422b7a0d1961411ce54f9ecf88e433398a6d12fabf4704ccda8f7d45b5495c9aff6bf66186a331ff00da316c4f7f8adbd1e6da81a9ab14d5280eb9c051e58b9ff325d45a74b311d5a5c8a6fdab438e5c07e7d4842f675327510f976e6060f15da9903185cf8f3e25f87b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 1218e061ec1213c57c98016b710ea81483fbf3f771dd7e3e1b8ccb85491864fb3e746d64bf43a1d7f95271e54134555d3238fe8902efe5f7dcc07209d0e0d9f63a5e2c7d4d33b39d2c8e3281da2131ee692f9be2a6dc7a715b46c2c0e9f716dc4f847175333aac66a1a063f2583608f175c88d1d42e6e95e895ddcf5f36dc67200d33a561c8b8d1a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -400f75dbd3c68ce3caebf48b84fd068e3a7f740d46e22017bd6fba5c131728f280619a5da1b4b0cedf1f01cb4f872d44a1eb5d859990843f20353db0834ca20fecaafab928fdbfd5b6215bf5fd0b864d47fa98501b3a0974dc5b4dd194685fa74f0975d29cd8b548120bb341aa48612f7c964be017b9ca093e7e1acb38760d53826c7b36b72ae64eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 2b0495b246b5e72bdf0e45f139b3401b19cc816b5a06f8071a7b1d8ee74ff5aa22d8a97e1158e03256230494d929b5d4fef8d4e1f6dd8944ebf8c769da3dc502848f936b04355fe366058892a8e0e58c797b9c078257649646758c6eac6fe01b4b5d245d548810df18fe835c059f5d2089043eaca34d4974cf6e2bd1c2c9baa9fb396601e0590d238000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 31472510527a8facbe29495cc3c340c42bce9f52856ff5fd125ca90244d074a6f792e77cd50ee41272c11064b9c38fea186e85c95fbe67a9636a7b0a65a9ceca09928ede77ca1b1f7c861b0035d7dd9ff079f910777bf1e3912e257533b4f5f66851fff00e642ad3cb799dd3c57e1e4768f6df286099a91053028047354b837d381cd69c255ddf7e8e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -d8a3f716a4c18f97bc93a24740d467d08ac6cf0f9a0b2c732f608a36eb456972f5eb8b87420e6791bb25771c943147e58ce9d95dcd17c6abe059e7bdd6285f5351b54af95c522c199abc55496345e85307c216151c6cdac805f939d32a4b01ab70ad2f8b38c4f4ca62a284cc5301ddf65c9bb2e5a1463a329c984dc9766c55b3d90d6cac4d05a0f960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = d7ee1e2cd3bb7c3f7478bff4b3bfc98423fe41ad51a8eae5136b70b22a5891160e80c22fddda1e4ed1b20f95f138a8107dc5416869af9da16f79729b717216985f2ded22c6ddfff2f931cfb809d42b0c2e57b5ab4a52fd85e0d3fb8935a0c4c58cf63342305d80e3fcded20cd29f4d700f2a517855f5ac04e155bb3453063420f971557c30d6019aa4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -2c7c9d1fdb4b97520aa72b7b765cea45a652bc980627c30b66139111d262b16503416217b9416a26f2d741f069e1321d95cb1232b029effafe2c36b279f443f41cfaeab54caa76e8689a3b963d8361423bf9bfcb9e04e9db48050be81d01f89e20b309ce3cdbd64b95b0a1648f38ebfaed9d50c7ed429a7d8028afff81d15c2a3f41f1d58fd70e30868000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 6eab4675d1451faaff2b02b717cf7a762a8dc0609263e44a53c2d3b08f9ec4fec9e5955b3765859f1ce66be6ffa42c824eaf513d23c98f3330e354b24a3f8500266d69daed2571b2fa45b19250eaa0e8489f05715d04ac0c1bf4bf0b205e67d1ee7e6a14d2859a376654036b8decd54e8b68ae2d7565383f6886c9e8468f95e4ff11095da6611af258000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -f97e345003c91cf9da51d71a4328cf12544d935bd3bb96cc3ffb44af3b174c319d53d0162cf1bd1b6317116b747725b501341705418b2768188b27c84a7f23444e78e646282c509ba9cb4a8231612c9e5028dce70e894fa54e0989d3beef65d6650a663f5f1cf1635216c8c0c4aadd184151f0a5838631e969a0b56189fe7f4ea541ad24f542c13e9d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 73891528dea0b2abab1dc159620f601835fe4f1f98904effa6b8aa60f92b88c06b8bb6989d81520c2955c2fb25775999c3f35f50e90c566d58fc2e022c3e59dd96595a17c81998809451369f5a1a75ff6adbe2e5bc7beae354980cd9b74742d1bacc8d8cc331d47d5e6fa2d4998ef7761cdda0f135253c6bbf6fe6db0890d4dbfc22be2d2197f87faf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -3e5a0c89a0c761eed939d9ea124d22d72635291594221afd67112ddf417e1decb839ff83b10dde7f3e50f7041788b91d6c0a5e5cd7c077f3d15351264235327239b156e64a0244ec9bbeee046758a5cef0ac4f95d64c33bef1b8ac170defea24cf79fb6c60555faeded96586db80831a8522dfffb0ab26abdef2e3bc6c799a81d74b04fc2fb0e67cfa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -22ec4110e9faecf4bfe1d4376af3eaa816fec44fe4f0efdd19a1c70283c43144d3aaca24f4746a1a5350a6eb6e713a85b606430dbfb7803928b875463800f491e3474b9281a9c6489802b05e9e4e6c060bb2e684c946d95c3a4fe500b59c914f524b23d7ac4acd3820b10db7d4c34d9ce8edd2cfaebcf1f4c2dc84fa08703fcef677bbd90e37d82e9980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = -930954a2f02a8d738513302495a720ad8e7b36033c78576d96ef24651ad2820510a22b0a0bbc03d1a4596c7bcbd6153acbccffa544ab271ca280bd9396deb9ab4280872594ad5840ffc519a9b6316d9f3018de05c4770450d2c92114d17d6c717d44efccb5dea65cb21e3d107745de42628c4c130826179810eeb957a1538abea3247434f098622b2f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = -cb12bcf4eea6f10c9a7e9e9d67a6a6da60a6ab500d17f47859e8f808d72f5de30fb7f140eb55842080150557d517c1bc95d8e888dd41cd772d4be6a6f174cd49222f69eac3c363b46651bbfb10408451c7fb454cbf22f012f9acedf2f1e74ec6ae1b24b3c94073fed4ea2f304055f126dcebbef59323a6ba5a830c35d1ac3da487b0458648a990a30080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +A = 58b6214f1521e171d06d7e3c30d35f05bab6a3b2eab879284e28e7a4d847a1cbaa9f9ed1eec0a6e71ceabfccad751936c9050ab89be2952d73196c4ae6df4b876ee2534267fb17514b5494cad0c66a9d44f5568107be450663d46b1f5bf39bfde15a781f98e861c0bad9eb1e3e5fd718e35b1c04a7b5501bec2145d9e0175230cd6ac68d112b591a9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +B = 20d05fc0686051297fef03b2e53ef9eec2d2a0cd3aa4de878311aaa7f544ad19c04fd2b79800bbcb742732aa39a16a59695a0464a4faac7e6ce87018408e89ae96266058b0448722c5b04d8c30e1d619a2c644528afd132a6975cc1023dd2cafae93bf2d6ed9508a8832ed41934cbb11c3bcb51db4de08e934edc941d369dac0aa54ddc2eefa3e1d65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +GCD = 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/crypto/external/bsd/openssl/dist/test/recipes/25-test_req.t b/crypto/external/bsd/openssl/dist/test/recipes/25-test_req.t index 17a98dc9d15..cb30061fcab 100644 --- a/crypto/external/bsd/openssl/dist/test/recipes/25-test_req.t +++ b/crypto/external/bsd/openssl/dist/test/recipes/25-test_req.t @@ -15,7 +15,7 @@ use OpenSSL::Test qw/:DEFAULT srctop_file/; setup("test_req"); -plan tests => 9; +plan tests => 12; require_ok(srctop_file('test','recipes','tconversion.pl')); @@ -46,24 +46,84 @@ ok(!run(app([@addext_args, "-addext", $val, "-addext", $val2]))); ok(!run(app([@addext_args, "-addext", $val, "-addext", $val3]))); ok(!run(app([@addext_args, "-addext", $val2, "-addext", $val3]))); +subtest "generating certificate requests with RSA" => sub { + plan tests => 2; + + SKIP: { + skip "RSA is not supported by this OpenSSL build", 2 + if disabled("rsa"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-new", "-out", "testreq.pem", "-utf8", + "-key", srctop_file("test", "testrsa.pem")])), + "Generating request"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-verify", "-in", "testreq.pem", "-noout"])), + "Verifying signature on request"); + } +}; + +subtest "generating certificate requests with DSA" => sub { + plan tests => 2; + + SKIP: { + skip "DSA is not supported by this OpenSSL build", 2 + if disabled("dsa"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-new", "-out", "testreq.pem", "-utf8", + "-key", srctop_file("test", "testdsa.pem")])), + "Generating request"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-verify", "-in", "testreq.pem", "-noout"])), + "Verifying signature on request"); + } +}; + +subtest "generating certificate requests with ECDSA" => sub { + plan tests => 2; + + SKIP: { + skip "ECDSA is not supported by this OpenSSL build", 2 + if disabled("ec"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-new", "-out", "testreq.pem", "-utf8", + "-key", srctop_file("test", "testec-p256.pem")])), + "Generating request"); + + ok(run(app(["openssl", "req", + "-config", srctop_file("test", "test.cnf"), + "-verify", "-in", "testreq.pem", "-noout"])), + "Verifying signature on request"); + } +}; + subtest "generating certificate requests" => sub { plan tests => 2; ok(run(app(["openssl", "req", "-config", srctop_file("test", "test.cnf"), - @req_new, "-out", "testreq.pem"])), + @req_new, "-out", "testreq.pem"])), "Generating request"); ok(run(app(["openssl", "req", "-config", srctop_file("test", "test.cnf"), - "-verify", "-in", "testreq.pem", "-noout"])), + "-verify", "-in", "testreq.pem", "-noout"])), "Verifying signature on request"); }; my @openssl_args = ("req", "-config", srctop_file("apps", "openssl.cnf")); run_conversion('req conversions', - "testreq.pem"); + "testreq.pem"); run_conversion('req conversions -- testreq2', - srctop_file("test", "testreq2.pem")); + srctop_file("test", "testreq2.pem")); unlink "testkey.pem", "testreq.pem"; @@ -72,20 +132,20 @@ sub run_conversion { my $reqfile = shift; subtest $title => sub { - run(app(["openssl", @openssl_args, - "-in", $reqfile, "-inform", "p", - "-noout", "-text"], - stderr => "req-check.err", stdout => undef)); - open DATA, "req-check.err"; - SKIP: { - plan skip_all => "skipping req conversion test for $reqfile" - if grep /Unknown Public Key/, map { s/\R//; } <DATA>; - - tconversion("req", $reqfile, @openssl_args); - } - close DATA; - unlink "req-check.err"; - - done_testing(); + run(app(["openssl", @openssl_args, + "-in", $reqfile, "-inform", "p", + "-noout", "-text"], + stderr => "req-check.err", stdout => undef)); + open DATA, "req-check.err"; + SKIP: { + plan skip_all => "skipping req conversion test for $reqfile" + if grep /Unknown Public Key/, map { s/\R//; } <DATA>; + + tconversion("req", $reqfile, @openssl_args); + } + close DATA; + unlink "req-check.err"; + + done_testing(); }; } diff --git a/crypto/external/bsd/openssl/dist/test/recipes/25-test_verify.t b/crypto/external/bsd/openssl/dist/test/recipes/25-test_verify.t index b80a1cde3ed..cf7842cdfdd 100644 --- a/crypto/external/bsd/openssl/dist/test/recipes/25-test_verify.t +++ b/crypto/external/bsd/openssl/dist/test/recipes/25-test_verify.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -27,7 +27,7 @@ sub verify { run(app([@args])); } -plan tests => 135; +plan tests => 137; # Canonical success ok(verify("ee-cert", "sslserver", ["root-cert"], ["ca-cert"]), @@ -222,6 +222,10 @@ ok(verify("ee-client", "sslclient", [qw(ee+clientAuth)], [], "-partial_chain"), "accept direct match with client trust"); ok(!verify("ee-client", "sslclient", [qw(ee-clientAuth)], [], "-partial_chain"), "reject direct match with client mistrust"); +ok(verify("ee-pathlen", "sslserver", [qw(root-cert)], [qw(ca-cert)]), + "accept non-ca with pathlen:0 by default"); +ok(!verify("ee-pathlen", "sslserver", [qw(root-cert)], [qw(ca-cert)], "-x509_strict"), + "reject non-ca with pathlen:0 with strict flag"); # Proxy certificates ok(!verify("pc1-cert", "sslclient", [qw(root-cert)], [qw(ee-client ca-cert)]), diff --git a/crypto/external/bsd/openssl/dist/test/recipes/30-test_evp_data/evpciph.txt b/crypto/external/bsd/openssl/dist/test/recipes/30-test_evp_data/evpciph.txt index 29c317a1580..1c02ea1e9c2 100644 --- a/crypto/external/bsd/openssl/dist/test/recipes/30-test_evp_data/evpciph.txt +++ b/crypto/external/bsd/openssl/dist/test/recipes/30-test_evp_data/evpciph.txt @@ -2358,6 +2358,16 @@ Tag = 3615b7f90a651de15da20fb6 Plaintext = f57af5fd4ae19562976ec57a5a7ad55a5af5c5e5c5fdf5c55ad57a4a7272d57262e9729566ed66e97ac54a4a5a7ad5e15ae5fdd5fd5ac5d56ae56ad5c572d54ae54ac55a956afd6aed5a4ac562957a9516991691d572fd14e97ae962ed7a9f4a955af572e162f57a956666e17ae1f54a95f566d54a66e16e4afd6a9f7ae1c5c55ae5d56afde916c5e94a6ec56695e14afde1148416e94ad57ac5146ed59d1cc5 Ciphertext = ff78128ee18ee3cb9fb0d20726a017ff67fbd09d3a4c38aa32f6d306d3fdda378e459b83ed005507449d6cd981a4c1e3ff4193870c276ef09b6317a01a2283206ae4b4be0d0b235422c8abb00122410656b75e1ffc7fb49c0d0c5d6169aa7623610579968037aee8e83fc26264ea866590fd620aa3c0a5f323d953aa7f8defb0d0d60ab5a9de44dbaf8eae74ea3ab5f30594154f405fd630aa4c4d5603efdfa1 +# Test that the tag can be set after specifying AAD. +Cipher = ARIA-256-CCM +Key = 0c5ffd37a11edc42c325287fc0604f2e3e8cd5671a00fe3216aa5eb105783b54 +IV = 000020e8f5eb00000000315e +AAD = 8008315ebf2e6fe020e8f5eb +Tag = 3615b7f90a651de15da20fb6 +SetTagLate = TRUE +Plaintext = f57af5fd4ae19562976ec57a5a7ad55a5af5c5e5c5fdf5c55ad57a4a7272d57262e9729566ed66e97ac54a4a5a7ad5e15ae5fdd5fd5ac5d56ae56ad5c572d54ae54ac55a956afd6aed5a4ac562957a9516991691d572fd14e97ae962ed7a9f4a955af572e162f57a956666e17ae1f54a95f566d54a66e16e4afd6a9f7ae1c5c55ae5d56afde916c5e94a6ec56695e14afde1148416e94ad57ac5146ed59d1cc5 +Ciphertext = ff78128ee18ee3cb9fb0d20726a017ff67fbd09d3a4c38aa32f6d306d3fdda378e459b83ed005507449d6cd981a4c1e3ff4193870c276ef09b6317a01a2283206ae4b4be0d0b235422c8abb00122410656b75e1ffc7fb49c0d0c5d6169aa7623610579968037aee8e83fc26264ea866590fd620aa3c0a5f323d953aa7f8defb0d0d60ab5a9de44dbaf8eae74ea3ab5f30594154f405fd630aa4c4d5603efdfa1 + Title = SEED test vectors from RFC4269 diff --git a/crypto/external/bsd/openssl/dist/test/recipes/70-test_sslsigalgs.t b/crypto/external/bsd/openssl/dist/test/recipes/70-test_sslsigalgs.t index f805dcf221e..9ea9d05219c 100644 --- a/crypto/external/bsd/openssl/dist/test/recipes/70-test_sslsigalgs.t +++ b/crypto/external/bsd/openssl/dist/test/recipes/70-test_sslsigalgs.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -44,7 +44,9 @@ use constant { COMPAT_SIGALGS => 6, SIGALGS_CERT_ALL => 7, SIGALGS_CERT_PKCS => 8, - SIGALGS_CERT_INVALID => 9 + SIGALGS_CERT_INVALID => 9, + UNRECOGNIZED_SIGALGS_CERT => 10, + UNRECOGNIZED_SIGALG => 11 }; #Note: Throughout this test we override the default ciphersuites where TLSv1.2 @@ -53,7 +55,7 @@ use constant { #Test 1: Default sig algs should succeed $proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; -plan tests => 22; +plan tests => 26; ok(TLSProxy::Message->success, "Default sigalgs"); my $testtype; @@ -132,19 +134,40 @@ SKIP: { } SKIP: { - skip "EC or TLSv1.2 disabled", 8 if disabled("tls1_2") || disabled("ec"); + skip "EC or TLSv1.2 disabled", 10 if disabled("tls1_2") || disabled("ec"); $proxy->filter(\&sigalgs_filter); - #Test 10: Sending no sig algs extension in TLSv1.2 should succeed + #Test 10: Sending no sig algs extension in TLSv1.2 should succeed at + # security level 1 $proxy->clear(); $testtype = NO_SIG_ALGS_EXT; - $proxy->clientflags("-no_tls1_3"); - $proxy->ciphers("ECDHE-RSA-AES128-SHA"); + $proxy->clientflags("-no_tls1_3 -cipher DEFAULT\@SECLEVEL=1"); + $proxy->ciphers("ECDHE-RSA-AES128-SHA\@SECLEVEL=1"); + $proxy->start(); + ok(TLSProxy::Message->success, "No TLSv1.2 sigalgs seclevel 1"); + + #Test 11: Sending no sig algs extension in TLSv1.2 should fail at security + # level 2 since it will try to use SHA1. Testing client at level 1, + # server level 2. + $proxy->clear(); + $testtype = NO_SIG_ALGS_EXT; + $proxy->clientflags("-tls1_2 -cipher DEFAULT\@SECLEVEL=1"); + $proxy->ciphers("DEFAULT\@SECLEVEL=2"); + $proxy->start(); + ok(TLSProxy::Message->fail, "No TLSv1.2 sigalgs server seclevel 2"); + + #Test 12: Sending no sig algs extension in TLSv1.2 should fail at security + # level 2 since it will try to use SHA1. Testing client at level 2, + # server level 1. + $proxy->clear(); + $testtype = NO_SIG_ALGS_EXT; + $proxy->clientflags("-tls1_2 -cipher DEFAULT\@SECLEVEL=2"); + $proxy->ciphers("DEFAULT\@SECLEVEL=1"); $proxy->start(); - ok(TLSProxy::Message->success, "No TLSv1.2 sigalgs"); + ok(TLSProxy::Message->fail, "No TLSv1.2 sigalgs client seclevel 2"); - #Test 11: Sending an empty sig algs extension in TLSv1.2 should fail + #Test 13: Sending an empty sig algs extension in TLSv1.2 should fail $proxy->clear(); $testtype = EMPTY_SIG_ALGS_EXT; $proxy->clientflags("-no_tls1_3"); @@ -152,7 +175,7 @@ SKIP: { $proxy->start(); ok(TLSProxy::Message->fail, "Empty TLSv1.2 sigalgs"); - #Test 12: Sending a list with no recognised sig algs in TLSv1.2 should fail + #Test 14: Sending a list with no recognised sig algs in TLSv1.2 should fail $proxy->clear(); $testtype = NO_KNOWN_SIG_ALGS; $proxy->clientflags("-no_tls1_3"); @@ -160,7 +183,7 @@ SKIP: { $proxy->start(); ok(TLSProxy::Message->fail, "No known TLSv1.3 sigalgs"); - #Test 13: Sending a sig algs list without pss for an RSA cert in TLSv1.2 + #Test 15: Sending a sig algs list without pss for an RSA cert in TLSv1.2 # should succeed $proxy->clear(); $testtype = NO_PSS_SIG_ALGS; @@ -169,7 +192,7 @@ SKIP: { $proxy->start(); ok(TLSProxy::Message->success, "No PSS TLSv1.2 sigalgs"); - #Test 14: Sending only TLSv1.3 PSS sig algs in TLSv1.2 should succeed + #Test 16: Sending only TLSv1.3 PSS sig algs in TLSv1.2 should succeed $proxy->clear(); $testtype = PSS_ONLY_SIG_ALGS; $proxy->serverflags("-no_tls1_3"); @@ -177,7 +200,7 @@ SKIP: { $proxy->start(); ok(TLSProxy::Message->success, "PSS only sigalgs in TLSv1.2"); - #Test 15: Responding with a sig alg we did not send in TLSv1.2 should fail + #Test 17: Responding with a sig alg we did not send in TLSv1.2 should fail # We send rsa_pkcs1_sha256 and respond with rsa_pss_rsae_sha256 # TODO(TLS1.3): Add a similar test to the TLSv1.3 section above # when we have an API capable of configuring the TLSv1.3 sig algs @@ -188,7 +211,7 @@ SKIP: { $proxy->start(); ok(TLSProxy::Message->fail, "Sigalg we did not send in TLSv1.2"); - #Test 16: Sending a valid sig algs list but not including a sig type that + #Test 18: Sending a valid sig algs list but not including a sig type that # matches the certificate should fail in TLSv1.2 $proxy->clear(); $proxy->clientflags("-no_tls1_3 -sigalgs ECDSA+SHA256"); @@ -198,7 +221,7 @@ SKIP: { ok(TLSProxy::Message->fail, "No matching TLSv1.2 sigalgs"); $proxy->filter(\&sigalgs_filter); - #Test 17: No sig algs extension, ECDSA cert, TLSv1.2 should succeed + #Test 19: No sig algs extension, ECDSA cert, TLSv1.2 should succeed $proxy->clear(); $testtype = NO_SIG_ALGS_EXT; $proxy->clientflags("-no_tls1_3"); @@ -214,7 +237,7 @@ SKIP: { my ($dsa_status, $sha1_status, $sha224_status); SKIP: { skip "TLSv1.3 disabled", 2 if disabled("tls1_3") || disabled("dsa"); - #Test 18: signature_algorithms with 1.3-only ClientHello + #Test 20: signature_algorithms with 1.3-only ClientHello $testtype = PURE_SIGALGS; $dsa_status = $sha1_status = $sha224_status = 0; $proxy->clear(); @@ -224,7 +247,7 @@ SKIP: { ok($dsa_status && $sha1_status && $sha224_status, "DSA/SHA2 sigalg sent for 1.3-only ClientHello"); - #Test 19: signature_algorithms with backwards compatible ClientHello + #Test 21: signature_algorithms with backwards compatible ClientHello SKIP: { skip "TLSv1.2 disabled", 1 if disabled("tls1_2"); $testtype = COMPAT_SIGALGS; @@ -239,21 +262,21 @@ SKIP: { SKIP: { skip "TLSv1.3 disabled", 3 if disabled("tls1_3"); - #Test 20: Insert signature_algorithms_cert that match normal sigalgs + #Test 22: Insert signature_algorithms_cert that match normal sigalgs $testtype = SIGALGS_CERT_ALL; $proxy->clear(); $proxy->filter(\&modify_sigalgs_cert_filter); $proxy->start(); ok(TLSProxy::Message->success, "sigalgs_cert in TLSv1.3"); - #Test 21: Insert signature_algorithms_cert that forces PKCS#1 cert + #Test 23: Insert signature_algorithms_cert that forces PKCS#1 cert $testtype = SIGALGS_CERT_PKCS; $proxy->clear(); $proxy->filter(\&modify_sigalgs_cert_filter); $proxy->start(); ok(TLSProxy::Message->success, "sigalgs_cert in TLSv1.3 with PKCS#1 cert"); - #Test 22: Insert signature_algorithms_cert that fails + #Test 24: Insert signature_algorithms_cert that fails $testtype = SIGALGS_CERT_INVALID; $proxy->clear(); $proxy->filter(\&modify_sigalgs_cert_filter); @@ -261,6 +284,39 @@ SKIP: { ok(TLSProxy::Message->fail, "No matching certificate for sigalgs_cert"); } +SKIP: { + skip "TLS 1.3 disabled", 2 if disabled("tls1_3"); + #Test 25: Send an unrecognized signature_algorithms_cert + # We should be able to skip over the unrecognized value and use a + # valid one that appears later in the list. + $proxy->clear(); + $proxy->filter(\&inject_unrecognized_sigalg); + $proxy->clientflags("-tls1_3"); + # Use -xcert to get SSL_check_chain() to run in the cert_cb. This is + # needed to trigger (e.g.) CVE-2020-1967 + $proxy->serverflags("" . + " -xcert " . srctop_file("test", "certs", "servercert.pem") . + " -xkey " . srctop_file("test", "certs", "serverkey.pem") . + " -xchain " . srctop_file("test", "certs", "rootcert.pem")); + $testtype = UNRECOGNIZED_SIGALGS_CERT; + $proxy->start(); + ok(TLSProxy::Message->success(), "Unrecognized sigalg_cert in ClientHello"); + + #Test 26: Send an unrecognized signature_algorithms + # We should be able to skip over the unrecognized value and use a + # valid one that appears later in the list. + $proxy->clear(); + $proxy->filter(\&inject_unrecognized_sigalg); + $proxy->clientflags("-tls1_3"); + $proxy->serverflags("" . + " -xcert " . srctop_file("test", "certs", "servercert.pem") . + " -xkey " . srctop_file("test", "certs", "serverkey.pem") . + " -xchain " . srctop_file("test", "certs", "rootcert.pem")); + $testtype = UNRECOGNIZED_SIGALG; + $proxy->start(); + ok(TLSProxy::Message->success(), "Unrecognized sigalg in ClientHello"); +} + sub sigalgs_filter @@ -406,3 +462,30 @@ sub modify_cert_verify_sigalg } } } + +sub inject_unrecognized_sigalg +{ + my $proxy = shift; + my $type; + + # We're only interested in the initial ClientHello + if ($proxy->flight != 0) { + return; + } + if ($testtype == UNRECOGNIZED_SIGALGS_CERT) { + $type = TLSProxy::Message::EXT_SIG_ALGS_CERT; + } elsif ($testtype == UNRECOGNIZED_SIGALG) { + $type = TLSProxy::Message::EXT_SIG_ALGS; + } else { + return; + } + + my $ext = pack "C8", + 0x00, 0x06, #Extension length + 0xfe, 0x18, #private use + 0x04, 0x01, #rsa_pkcs1_sha256 + 0x08, 0x04; #rsa_pss_rsae_sha256; + my $message = ${$proxy->message_list}[0]; + $message->set_extension($type, $ext); + $message->repack; +} diff --git a/crypto/external/bsd/openssl/dist/test/run_tests.pl b/crypto/external/bsd/openssl/dist/test/run_tests.pl index 881feaec712..11786402214 100644 --- a/crypto/external/bsd/openssl/dist/test/run_tests.pl +++ b/crypto/external/bsd/openssl/dist/test/run_tests.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -90,7 +90,7 @@ my $ret = $harness->runtests(map { abs2rel($_, rel2abs(curdir())); } # $ret->has_errors may be any number, not just 0 or 1. On VMS, numbers # from 2 and on are used as is as VMS statuses, which has severity encoded # in the lower 3 bits. 0 and 1, on the other hand, generate SUCCESS and -# FAILURE, so for currect reporting on all platforms, we make sure the only +# FAILURE, so for correct reporting on all platforms, we make sure the only # exit codes are 0 and 1. Double-bang is the trick to do so. exit !!$ret->has_errors if (ref($ret) eq "TAP::Parser::Aggregator"); diff --git a/crypto/external/bsd/openssl/dist/test/servername_test.c b/crypto/external/bsd/openssl/dist/test/servername_test.c index d246918d664..39f6b2002f3 100644 --- a/crypto/external/bsd/openssl/dist/test/servername_test.c +++ b/crypto/external/bsd/openssl/dist/test/servername_test.c @@ -18,7 +18,7 @@ #include <openssl/err.h> #include <time.h> -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "testutil.h" #include "internal/nelem.h" diff --git a/crypto/external/bsd/openssl/dist/test/shlibloadtest.c b/crypto/external/bsd/openssl/dist/test/shlibloadtest.c index 86bbfcd849f..9649a941ad9 100644 --- a/crypto/external/bsd/openssl/dist/test/shlibloadtest.c +++ b/crypto/external/bsd/openssl/dist/test/shlibloadtest.c @@ -13,7 +13,7 @@ #include <openssl/opensslv.h> #include <openssl/ssl.h> #include <openssl/ossl_typ.h> -#include "internal/dso_conf.h" +#include "crypto/dso_conf.h" typedef void DSO; diff --git a/crypto/external/bsd/openssl/dist/test/siphash_internal_test.c b/crypto/external/bsd/openssl/dist/test/siphash_internal_test.c index ae9082bc7e6..be86ee119c3 100644 --- a/crypto/external/bsd/openssl/dist/test/siphash_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/siphash_internal_test.c @@ -14,7 +14,7 @@ #include <openssl/bio.h> #include "testutil.h" -#include "internal/siphash.h" +#include "crypto/siphash.h" #include "../crypto/siphash/siphash_local.h" #include "internal/nelem.h" diff --git a/crypto/external/bsd/openssl/dist/test/sm2_internal_test.c b/crypto/external/bsd/openssl/dist/test/sm2_internal_test.c index 015fa85e683..2bb73947ff3 100644 --- a/crypto/external/bsd/openssl/dist/test/sm2_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/sm2_internal_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,7 +21,7 @@ #ifndef OPENSSL_NO_SM2 -# include "internal/sm2.h" +# include "crypto/sm2.h" static RAND_METHOD fake_rand; static const RAND_METHOD *saved_rand; @@ -32,17 +32,18 @@ static size_t fake_rand_size = 0; static int get_faked_bytes(unsigned char *buf, int num) { - int i; - if (fake_rand_bytes == NULL) return saved_rand->bytes(buf, num); - if (!TEST_size_t_le(fake_rand_bytes_offset + num, fake_rand_size)) + if (!TEST_size_t_gt(fake_rand_size, 0)) return 0; - for (i = 0; i != num; ++i) - buf[i] = fake_rand_bytes[fake_rand_bytes_offset + i]; - fake_rand_bytes_offset += num; + while (num-- > 0) { + if (fake_rand_bytes_offset >= fake_rand_size) + fake_rand_bytes_offset = 0; + *buf++ = fake_rand_bytes[fake_rand_bytes_offset++]; + } + return 1; } @@ -175,8 +176,7 @@ static int test_sm2_crypt(const EC_GROUP *group, start_fake_rand(k_hex); if (!TEST_true(sm2_encrypt(key, digest, (const uint8_t *)message, msg_len, - ctext, &ctext_len)) - || !TEST_size_t_eq(fake_rand_bytes_offset, fake_rand_size)) { + ctext, &ctext_len))) { restore_rand(); goto done; } @@ -296,8 +296,7 @@ static int test_sm2_sign(const EC_GROUP *group, start_fake_rand(k_hex); sig = sm2_do_sign(key, EVP_sm3(), (const uint8_t *)userid, strlen(userid), (const uint8_t *)message, msg_len); - if (!TEST_ptr(sig) - || !TEST_size_t_eq(fake_rand_bytes_offset, fake_rand_size)) { + if (!TEST_ptr(sig)) { restore_rand(); goto done; } diff --git a/crypto/external/bsd/openssl/dist/test/sm4_internal_test.c b/crypto/external/bsd/openssl/dist/test/sm4_internal_test.c index 2f3eaecbced..ce61b564284 100644 --- a/crypto/external/bsd/openssl/dist/test/sm4_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/sm4_internal_test.c @@ -17,7 +17,7 @@ #include "testutil.h" #ifndef OPENSSL_NO_SM4 -# include "internal/sm4.h" +# include "crypto/sm4.h" static int test_sm4_ecb(void) { diff --git a/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf b/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf index 93f3a1ff689..757b973e577 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf +++ b/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf @@ -216,9 +216,9 @@ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem [4-Ed448 CipherString and Signature Algorithm Selection-client] CipherString = aECDSA MaxProtocol = TLSv1.2 -RequestCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem +RequestCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem SignatureAlgorithms = ed448:ECDSA+SHA256 -VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem VerifyMode = Peer [test-4] @@ -421,7 +421,7 @@ CipherString = aECDSA Curves = X448 MaxProtocol = TLSv1.2 SignatureAlgorithms = ECDSA+SHA256:ed448 -VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem VerifyMode = Peer [test-10] @@ -1454,7 +1454,7 @@ PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem [44-TLS 1.3 Ed448 Signature Algorithm Selection-client] CipherString = DEFAULT SignatureAlgorithms = ed448 -VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem VerifyMode = Peer [test-44] diff --git a/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf.in b/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf.in index 5e9bfede5db..24093548cd6 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf.in +++ b/crypto/external/bsd/openssl/dist/test/ssl-tests/20-cert-select.conf.in @@ -134,7 +134,8 @@ our @tests = ( "CipherString" => "aECDSA", "MaxProtocol" => "TLSv1.2", "SignatureAlgorithms" => "ed448:ECDSA+SHA256", - "RequestCAFile" => test_pem("root-cert.pem"), + "RequestCAFile" => test_pem("root-ed448-cert.pem"), + "VerifyCAFile" => test_pem("root-ed448-cert.pem"), }, test => { "ExpectedServerCertType" =>, "Ed448", @@ -231,6 +232,7 @@ our @tests = ( "CipherString" => "aECDSA", "MaxProtocol" => "TLSv1.2", "SignatureAlgorithms" => "ECDSA+SHA256:ed448", + "VerifyCAFile" => test_pem("root-ed448-cert.pem"), # Excluding P-256 from the supported curves list means server # certificate should be Ed25519 and not P-256 "Curves" => "X448" @@ -727,6 +729,7 @@ my @tests_tls_1_3 = ( server => $server_tls_1_3, client => { "SignatureAlgorithms" => "ed448", + "VerifyCAFile" => test_pem("root-ed448-cert.pem"), }, test => { "ExpectedServerCertType" => "Ed448", diff --git a/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf b/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf index f863f68b080..99fa8109c36 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf +++ b/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf @@ -1,11 +1,13 @@ # Generated with generate_ssl_tests.pl -num_tests = 4 +num_tests = 6 test-0 = 0-SECLEVEL 3 with default key -test-1 = 1-SECLEVEL 3 with ED448 key -test-2 = 2-SECLEVEL 3 with P-384 key, X25519 ECDHE -test-3 = 3-SECLEVEL 3 with ED448 key, TLSv1.2 +test-1 = 1-SECLEVEL 4 with ED448 key +test-2 = 2-SECLEVEL 5 server with ED448 key +test-3 = 3-SECLEVEL 5 client with ED448 key +test-4 = 4-SECLEVEL 3 with P-384 key, X25519 ECDHE +test-5 = 5-SECLEVEL 3 with ED448 key, TLSv1.2 # =========================================================== [0-SECLEVEL 3 with default key] @@ -31,21 +33,21 @@ ExpectedResult = ServerFail # =========================================================== -[1-SECLEVEL 3 with ED448 key] -ssl_conf = 1-SECLEVEL 3 with ED448 key-ssl +[1-SECLEVEL 4 with ED448 key] +ssl_conf = 1-SECLEVEL 4 with ED448 key-ssl -[1-SECLEVEL 3 with ED448 key-ssl] -server = 1-SECLEVEL 3 with ED448 key-server -client = 1-SECLEVEL 3 with ED448 key-client +[1-SECLEVEL 4 with ED448 key-ssl] +server = 1-SECLEVEL 4 with ED448 key-server +client = 1-SECLEVEL 4 with ED448 key-client -[1-SECLEVEL 3 with ED448 key-server] +[1-SECLEVEL 4 with ED448 key-server] Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem -CipherString = DEFAULT:@SECLEVEL=3 +CipherString = DEFAULT:@SECLEVEL=4 PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem -[1-SECLEVEL 3 with ED448 key-client] -CipherString = DEFAULT -VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +[1-SECLEVEL 4 with ED448 key-client] +CipherString = DEFAULT:@SECLEVEL=4 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem VerifyMode = Peer [test-1] @@ -54,49 +56,95 @@ ExpectedResult = Success # =========================================================== -[2-SECLEVEL 3 with P-384 key, X25519 ECDHE] -ssl_conf = 2-SECLEVEL 3 with P-384 key, X25519 ECDHE-ssl +[2-SECLEVEL 5 server with ED448 key] +ssl_conf = 2-SECLEVEL 5 server with ED448 key-ssl + +[2-SECLEVEL 5 server with ED448 key-ssl] +server = 2-SECLEVEL 5 server with ED448 key-server +client = 2-SECLEVEL 5 server with ED448 key-client + +[2-SECLEVEL 5 server with ED448 key-server] +Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem +CipherString = DEFAULT:@SECLEVEL=5 +PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem + +[2-SECLEVEL 5 server with ED448 key-client] +CipherString = DEFAULT:@SECLEVEL=4 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem +VerifyMode = Peer + +[test-2] +ExpectedResult = ServerFail + + +# =========================================================== + +[3-SECLEVEL 5 client with ED448 key] +ssl_conf = 3-SECLEVEL 5 client with ED448 key-ssl -[2-SECLEVEL 3 with P-384 key, X25519 ECDHE-ssl] -server = 2-SECLEVEL 3 with P-384 key, X25519 ECDHE-server -client = 2-SECLEVEL 3 with P-384 key, X25519 ECDHE-client +[3-SECLEVEL 5 client with ED448 key-ssl] +server = 3-SECLEVEL 5 client with ED448 key-server +client = 3-SECLEVEL 5 client with ED448 key-client -[2-SECLEVEL 3 with P-384 key, X25519 ECDHE-server] +[3-SECLEVEL 5 client with ED448 key-server] +Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem +CipherString = DEFAULT:@SECLEVEL=4 +PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem + +[3-SECLEVEL 5 client with ED448 key-client] +CipherString = DEFAULT:@SECLEVEL=5 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem +VerifyMode = Peer + +[test-3] +ExpectedResult = ServerFail + + +# =========================================================== + +[4-SECLEVEL 3 with P-384 key, X25519 ECDHE] +ssl_conf = 4-SECLEVEL 3 with P-384 key, X25519 ECDHE-ssl + +[4-SECLEVEL 3 with P-384 key, X25519 ECDHE-ssl] +server = 4-SECLEVEL 3 with P-384 key, X25519 ECDHE-server +client = 4-SECLEVEL 3 with P-384 key, X25519 ECDHE-client + +[4-SECLEVEL 3 with P-384 key, X25519 ECDHE-server] Certificate = ${ENV::TEST_CERTS_DIR}/p384-server-cert.pem CipherString = DEFAULT:@SECLEVEL=3 Groups = X25519 PrivateKey = ${ENV::TEST_CERTS_DIR}/p384-server-key.pem -[2-SECLEVEL 3 with P-384 key, X25519 ECDHE-client] +[4-SECLEVEL 3 with P-384 key, X25519 ECDHE-client] CipherString = ECDHE:@SECLEVEL=3 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/p384-root.pem VerifyMode = Peer -[test-2] +[test-4] ExpectedResult = Success # =========================================================== -[3-SECLEVEL 3 with ED448 key, TLSv1.2] -ssl_conf = 3-SECLEVEL 3 with ED448 key, TLSv1.2-ssl +[5-SECLEVEL 3 with ED448 key, TLSv1.2] +ssl_conf = 5-SECLEVEL 3 with ED448 key, TLSv1.2-ssl -[3-SECLEVEL 3 with ED448 key, TLSv1.2-ssl] -server = 3-SECLEVEL 3 with ED448 key, TLSv1.2-server -client = 3-SECLEVEL 3 with ED448 key, TLSv1.2-client +[5-SECLEVEL 3 with ED448 key, TLSv1.2-ssl] +server = 5-SECLEVEL 3 with ED448 key, TLSv1.2-server +client = 5-SECLEVEL 3 with ED448 key, TLSv1.2-client -[3-SECLEVEL 3 with ED448 key, TLSv1.2-server] +[5-SECLEVEL 3 with ED448 key, TLSv1.2-server] Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem CipherString = DEFAULT:@SECLEVEL=3 MaxProtocol = TLSv1.2 PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem -[3-SECLEVEL 3 with ED448 key, TLSv1.2-client] +[5-SECLEVEL 3 with ED448 key, TLSv1.2-client] CipherString = DEFAULT -VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem VerifyMode = Peer -[test-3] +[test-5] ExpectedResult = Success diff --git a/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf.in b/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf.in index 12b9021199c..2c12de792d6 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf.in +++ b/crypto/external/bsd/openssl/dist/test/ssl-tests/28-seclevel.conf.in @@ -1,5 +1,5 @@ # -*- mode: perl; -*- -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -23,14 +23,39 @@ our @tests = ( our @tests_ec = ( { - name => "SECLEVEL 3 with ED448 key", - server => { "CipherString" => "DEFAULT:\@SECLEVEL=3", + name => "SECLEVEL 4 with ED448 key", + server => { "CipherString" => "DEFAULT:\@SECLEVEL=4", "Certificate" => test_pem("server-ed448-cert.pem"), "PrivateKey" => test_pem("server-ed448-key.pem") }, - client => { }, + client => { "CipherString" => "DEFAULT:\@SECLEVEL=4", + "VerifyCAFile" => test_pem("root-ed448-cert.pem") }, test => { "ExpectedResult" => "Success" }, }, { + # The Ed488 signature algorithm will not be enabled. + # Because of the config order, the certificate is first loaded, and + # then the security level is chaged. If you try this with s_server + # the order will be reversed and it will instead fail to load the key. + name => "SECLEVEL 5 server with ED448 key", + server => { "CipherString" => "DEFAULT:\@SECLEVEL=5", + "Certificate" => test_pem("server-ed448-cert.pem"), + "PrivateKey" => test_pem("server-ed448-key.pem") }, + client => { "CipherString" => "DEFAULT:\@SECLEVEL=4", + "VerifyCAFile" => test_pem("root-ed448-cert.pem") }, + test => { "ExpectedResult" => "ServerFail" }, + }, + { + # The client will not sent the Ed488 signature algorithm, so the server + # doesn't have a useable signature algorithm for the certificate. + name => "SECLEVEL 5 client with ED448 key", + server => { "CipherString" => "DEFAULT:\@SECLEVEL=4", + "Certificate" => test_pem("server-ed448-cert.pem"), + "PrivateKey" => test_pem("server-ed448-key.pem") }, + client => { "CipherString" => "DEFAULT:\@SECLEVEL=5", + "VerifyCAFile" => test_pem("root-ed448-cert.pem") }, + test => { "ExpectedResult" => "ServerFail" }, + }, + { name => "SECLEVEL 3 with P-384 key, X25519 ECDHE", server => { "CipherString" => "DEFAULT:\@SECLEVEL=3", "Certificate" => test_pem("p384-server-cert.pem"), @@ -49,7 +74,7 @@ our @tests_tls1_2 = ( "Certificate" => test_pem("server-ed448-cert.pem"), "PrivateKey" => test_pem("server-ed448-key.pem"), "MaxProtocol" => "TLSv1.2" }, - client => { }, + client => { "VerifyCAFile" => test_pem("root-ed448-cert.pem") }, test => { "ExpectedResult" => "Success" }, }, ); diff --git a/crypto/external/bsd/openssl/dist/test/ssl_cert_table_internal_test.c b/crypto/external/bsd/openssl/dist/test/ssl_cert_table_internal_test.c index 2104e8c5163..cb1e076bced 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl_cert_table_internal_test.c +++ b/crypto/external/bsd/openssl/dist/test/ssl_cert_table_internal_test.c @@ -21,7 +21,7 @@ # pragma names as_is,shortened #endif -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" #include "../ssl/ssl_cert_table.h" #ifdef __VMS diff --git a/crypto/external/bsd/openssl/dist/test/ssl_ctx_test.c b/crypto/external/bsd/openssl/dist/test/ssl_ctx_test.c new file mode 100644 index 00000000000..87d476d9ecb --- /dev/null +++ b/crypto/external/bsd/openssl/dist/test/ssl_ctx_test.c @@ -0,0 +1,76 @@ +/* + * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include "testutil.h" +#include <openssl/ssl.h> + +typedef struct { + int min_version; + int max_version; + int min_ok; + int max_ok; + int expected_min; + int expected_max; +} version_test; + +static const version_test version_testdata[] = { + /* min max ok expected min expected max */ + {0, 0, 1, 1, 0, 0}, + {TLS1_VERSION, TLS1_2_VERSION, 1, 1, TLS1_VERSION, TLS1_2_VERSION}, + {TLS1_2_VERSION, TLS1_2_VERSION, 1, 1, TLS1_2_VERSION, TLS1_2_VERSION}, + {TLS1_2_VERSION, TLS1_1_VERSION, 1, 0, TLS1_2_VERSION, 0}, + {7, 42, 0, 0, 0, 0}, +}; + +static int test_set_min_max_version(int idx_tst) +{ + SSL_CTX *ctx = NULL; + SSL *ssl = NULL; + int testresult = 0; + version_test t = version_testdata[idx_tst]; + + ctx = SSL_CTX_new(TLS_server_method()); + if (ctx == NULL) + goto end; + + ssl = SSL_new(ctx); + if (ssl == NULL) + goto end; + + if (!TEST_int_eq(SSL_CTX_set_min_proto_version(ctx, t.min_version), t.min_ok)) + goto end; + if (!TEST_int_eq(SSL_CTX_set_max_proto_version(ctx, t.max_version), t.max_ok)) + goto end; + if (!TEST_int_eq(SSL_CTX_get_min_proto_version(ctx), t.expected_min)) + goto end; + if (!TEST_int_eq(SSL_CTX_get_max_proto_version(ctx), t.expected_max)) + goto end; + + if (!TEST_int_eq(SSL_set_min_proto_version(ssl, t.min_version), t.min_ok)) + goto end; + if (!TEST_int_eq(SSL_set_max_proto_version(ssl, t.max_version), t.max_ok)) + goto end; + if (!TEST_int_eq(SSL_get_min_proto_version(ssl), t.expected_min)) + goto end; + if (!TEST_int_eq(SSL_get_max_proto_version(ssl), t.expected_max)) + goto end; + + testresult = 1; + + end: + SSL_free(ssl); + SSL_CTX_free(ctx); + return testresult; +} + +int setup_tests(void) +{ + ADD_ALL_TESTS(test_set_min_max_version, sizeof(version_testdata) / sizeof(version_test)); + return 1; +} diff --git a/crypto/external/bsd/openssl/dist/test/ssl_test_ctx.h b/crypto/external/bsd/openssl/dist/test/ssl_test_ctx.h index 36d73f752c3..7e670c94680 100644 --- a/crypto/external/bsd/openssl/dist/test/ssl_test_ctx.h +++ b/crypto/external/bsd/openssl/dist/test/ssl_test_ctx.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SSL_TEST_CTX_H -#define HEADER_SSL_TEST_CTX_H +#ifndef OSSL_TEST_SSL_TEST_CTX_H +#define OSSL_TEST_SSL_TEST_CTX_H #include <openssl/conf.h> #include <openssl/ssl.h> @@ -250,4 +250,4 @@ SSL_TEST_CTX *SSL_TEST_CTX_new(void); void SSL_TEST_CTX_free(SSL_TEST_CTX *ctx); -#endif /* HEADER_SSL_TEST_CTX_H */ +#endif /* OSSL_TEST_SSL_TEST_CTX_H */ diff --git a/crypto/external/bsd/openssl/dist/test/sslapitest.c b/crypto/external/bsd/openssl/dist/test/sslapitest.c index 7a142268fa7..5c118108efe 100644 --- a/crypto/external/bsd/openssl/dist/test/sslapitest.c +++ b/crypto/external/bsd/openssl/dist/test/sslapitest.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -22,7 +22,7 @@ #include "testutil.h" #include "testutil/output.h" #include "internal/nelem.h" -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" #ifndef OPENSSL_NO_TLS1_3 @@ -98,6 +98,17 @@ static unsigned char serverinfov2[] = { 0xff /* Dummy extension data */ }; +static int hostname_cb(SSL *s, int *al, void *arg) +{ + const char *hostname = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name); + + if (hostname != NULL && (strcmp(hostname, "goodhost") == 0 + || strcmp(hostname, "altgoodhost") == 0)) + return SSL_TLSEXT_ERR_OK; + + return SSL_TLSEXT_ERR_NOACK; +} + static void client_keylog_callback(const SSL *ssl, const char *line) { int line_length = strlen(line); @@ -581,6 +592,117 @@ end: } #endif +/* + * Very focused test to exercise a single case in the server-side state + * machine, when the ChangeCipherState message needs to actually change + * from one cipher to a different cipher (i.e., not changing from null + * encryption to real encryption). + */ +static int test_ccs_change_cipher(void) +{ + SSL_CTX *cctx = NULL, *sctx = NULL; + SSL *clientssl = NULL, *serverssl = NULL; + SSL_SESSION *sess = NULL, *sesspre, *sesspost; + int testresult = 0; + int i; + unsigned char buf; + size_t readbytes; + + /* + * Create a conection so we can resume and potentially (but not) use + * a different cipher in the second connection. + */ + if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), + TLS_client_method(), + TLS1_VERSION, TLS1_2_VERSION, + &sctx, &cctx, cert, privkey)) + || !TEST_true(SSL_CTX_set_options(sctx, SSL_OP_NO_TICKET)) + || !TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL)) + || !TEST_true(SSL_set_cipher_list(clientssl, "AES128-GCM-SHA256")) + || !TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE)) + || !TEST_ptr(sesspre = SSL_get0_session(serverssl)) + || !TEST_ptr(sess = SSL_get1_session(clientssl))) + goto end; + + shutdown_ssl_connection(serverssl, clientssl); + serverssl = clientssl = NULL; + + /* Resume, preferring a different cipher. Our server will force the + * same cipher to be used as the initial handshake. */ + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL)) + || !TEST_true(SSL_set_session(clientssl, sess)) + || !TEST_true(SSL_set_cipher_list(clientssl, "AES256-GCM-SHA384:AES128-GCM-SHA256")) + || !TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE)) + || !TEST_true(SSL_session_reused(clientssl)) + || !TEST_true(SSL_session_reused(serverssl)) + || !TEST_ptr(sesspost = SSL_get0_session(serverssl)) + || !TEST_ptr_eq(sesspre, sesspost) + || !TEST_int_eq(TLS1_CK_RSA_WITH_AES_128_GCM_SHA256, + SSL_CIPHER_get_id(SSL_get_current_cipher(clientssl)))) + goto end; + shutdown_ssl_connection(serverssl, clientssl); + serverssl = clientssl = NULL; + + /* + * Now create a fresh connection and try to renegotiate a different + * cipher on it. + */ + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL)) + || !TEST_true(SSL_set_cipher_list(clientssl, "AES128-GCM-SHA256")) + || !TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE)) + || !TEST_ptr(sesspre = SSL_get0_session(serverssl)) + || !TEST_true(SSL_set_cipher_list(clientssl, "AES256-GCM-SHA384")) + || !TEST_true(SSL_renegotiate(clientssl)) + || !TEST_true(SSL_renegotiate_pending(clientssl))) + goto end; + /* Actually drive the renegotiation. */ + for (i = 0; i < 3; i++) { + if (SSL_read_ex(clientssl, &buf, sizeof(buf), &readbytes) > 0) { + if (!TEST_ulong_eq(readbytes, 0)) + goto end; + } else if (!TEST_int_eq(SSL_get_error(clientssl, 0), + SSL_ERROR_WANT_READ)) { + goto end; + } + if (SSL_read_ex(serverssl, &buf, sizeof(buf), &readbytes) > 0) { + if (!TEST_ulong_eq(readbytes, 0)) + goto end; + } else if (!TEST_int_eq(SSL_get_error(serverssl, 0), + SSL_ERROR_WANT_READ)) { + goto end; + } + } + /* sesspre and sesspost should be different since the cipher changed. */ + if (!TEST_false(SSL_renegotiate_pending(clientssl)) + || !TEST_false(SSL_session_reused(clientssl)) + || !TEST_false(SSL_session_reused(serverssl)) + || !TEST_ptr(sesspost = SSL_get0_session(serverssl)) + || !TEST_ptr_ne(sesspre, sesspost) + || !TEST_int_eq(TLS1_CK_RSA_WITH_AES_256_GCM_SHA384, + SSL_CIPHER_get_id(SSL_get_current_cipher(clientssl)))) + goto end; + + shutdown_ssl_connection(serverssl, clientssl); + serverssl = clientssl = NULL; + + testresult = 1; + +end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + SSL_SESSION_free(sess); + + return testresult; +} + static int execute_test_large_message(const SSL_METHOD *smeth, const SSL_METHOD *cmeth, int min_version, int max_version, @@ -2737,16 +2859,6 @@ static int test_early_data_not_sent(int idx) return testresult; } -static int hostname_cb(SSL *s, int *al, void *arg) -{ - const char *hostname = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name); - - if (hostname != NULL && strcmp(hostname, "goodhost") == 0) - return SSL_TLSEXT_ERR_OK; - - return SSL_TLSEXT_ERR_NOACK; -} - static const char *servalpn; static int alpn_select_cb(SSL *ssl, const unsigned char **out, @@ -2839,16 +2951,16 @@ static int test_early_data_psk(int idx) case 3: /* - * Set inconsistent SNI (server detected). In this case the connection - * will succeed but reject early_data. + * Set inconsistent SNI (server side). In this case the connection + * will succeed and accept early_data. In TLSv1.3 on the server side SNI + * is associated with each handshake - not the session. Therefore it + * should not matter that we used a different server name last time. */ SSL_SESSION_free(serverpsk); serverpsk = SSL_SESSION_dup(clientpsk); if (!TEST_ptr(serverpsk) || !TEST_true(SSL_SESSION_set1_hostname(serverpsk, "badhost"))) goto end; - edstatus = SSL_EARLY_DATA_REJECTED; - readearlyres = SSL_READ_EARLY_DATA_FINISH; /* Fall through */ case 4: /* Set consistent SNI */ @@ -6205,6 +6317,160 @@ static int test_ca_names(int tst) return testresult; } +/* + * Test 0: Client sets servername and server acknowledges it (TLSv1.2) + * Test 1: Client sets servername and server does not acknowledge it (TLSv1.2) + * Test 2: Client sets inconsistent servername on resumption (TLSv1.2) + * Test 3: Client does not set servername on initial handshake (TLSv1.2) + * Test 4: Client does not set servername on resumption handshake (TLSv1.2) + * Test 5: Client sets servername and server acknowledges it (TLSv1.3) + * Test 6: Client sets servername and server does not acknowledge it (TLSv1.3) + * Test 7: Client sets inconsistent servername on resumption (TLSv1.3) + * Test 8: Client does not set servername on initial handshake(TLSv1.3) + * Test 9: Client does not set servername on resumption handshake (TLSv1.3) + */ +static int test_servername(int tst) +{ + SSL_CTX *cctx = NULL, *sctx = NULL; + SSL *clientssl = NULL, *serverssl = NULL; + int testresult = 0; + SSL_SESSION *sess = NULL; + const char *sexpectedhost = NULL, *cexpectedhost = NULL; + +#ifdef OPENSSL_NO_TLS1_2 + if (tst <= 4) + return 1; +#endif +#ifdef OPENSSL_NO_TLS1_3 + if (tst >= 5) + return 1; +#endif + + if (!TEST_true(create_ssl_ctx_pair(TLS_server_method(), + TLS_client_method(), + TLS1_VERSION, + (tst <= 4) ? TLS1_2_VERSION + : TLS1_3_VERSION, + &sctx, &cctx, cert, privkey)) + || !TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL))) + goto end; + + if (tst != 1 && tst != 6) { + if (!TEST_true(SSL_CTX_set_tlsext_servername_callback(sctx, + hostname_cb))) + goto end; + } + + if (tst != 3 && tst != 8) { + if (!TEST_true(SSL_set_tlsext_host_name(clientssl, "goodhost"))) + goto end; + sexpectedhost = cexpectedhost = "goodhost"; + } + + if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE))) + goto end; + + if (!TEST_str_eq(SSL_get_servername(clientssl, TLSEXT_NAMETYPE_host_name), + cexpectedhost) + || !TEST_str_eq(SSL_get_servername(serverssl, + TLSEXT_NAMETYPE_host_name), + sexpectedhost)) + goto end; + + /* Now repeat with a resumption handshake */ + + if (!TEST_int_eq(SSL_shutdown(clientssl), 0) + || !TEST_ptr_ne(sess = SSL_get1_session(clientssl), NULL) + || !TEST_true(SSL_SESSION_is_resumable(sess)) + || !TEST_int_eq(SSL_shutdown(serverssl), 0)) + goto end; + + SSL_free(clientssl); + SSL_free(serverssl); + clientssl = serverssl = NULL; + + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, + NULL))) + goto end; + + if (!TEST_true(SSL_set_session(clientssl, sess))) + goto end; + + sexpectedhost = cexpectedhost = "goodhost"; + if (tst == 2 || tst == 7) { + /* Set an inconsistent hostname */ + if (!TEST_true(SSL_set_tlsext_host_name(clientssl, "altgoodhost"))) + goto end; + /* + * In TLSv1.2 we expect the hostname from the original handshake, in + * TLSv1.3 we expect the hostname from this handshake + */ + if (tst == 7) + sexpectedhost = cexpectedhost = "altgoodhost"; + + if (!TEST_str_eq(SSL_get_servername(clientssl, + TLSEXT_NAMETYPE_host_name), + "altgoodhost")) + goto end; + } else if (tst == 4 || tst == 9) { + /* + * A TLSv1.3 session does not associate a session with a servername, + * but a TLSv1.2 session does. + */ + if (tst == 9) + sexpectedhost = cexpectedhost = NULL; + + if (!TEST_str_eq(SSL_get_servername(clientssl, + TLSEXT_NAMETYPE_host_name), + cexpectedhost)) + goto end; + } else { + if (!TEST_true(SSL_set_tlsext_host_name(clientssl, "goodhost"))) + goto end; + /* + * In a TLSv1.2 resumption where the hostname was not acknowledged + * we expect the hostname on the server to be empty. On the client we + * return what was requested in this case. + * + * Similarly if the client didn't set a hostname on an original TLSv1.2 + * session but is now, the server hostname will be empty, but the client + * is as we set it. + */ + if (tst == 1 || tst == 3) + sexpectedhost = NULL; + + if (!TEST_str_eq(SSL_get_servername(clientssl, + TLSEXT_NAMETYPE_host_name), + "goodhost")) + goto end; + } + + if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE))) + goto end; + + if (!TEST_true(SSL_session_reused(clientssl)) + || !TEST_true(SSL_session_reused(serverssl)) + || !TEST_str_eq(SSL_get_servername(clientssl, + TLSEXT_NAMETYPE_host_name), + cexpectedhost) + || !TEST_str_eq(SSL_get_servername(serverssl, + TLSEXT_NAMETYPE_host_name), + sexpectedhost)) + goto end; + + testresult = 1; + + end: + SSL_SESSION_free(sess); + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} + int setup_tests(void) { if (!TEST_ptr(certsdir = test_get_argument(0)) @@ -6268,6 +6534,7 @@ int setup_tests(void) #endif #ifndef OPENSSL_NO_TLS1_2 ADD_TEST(test_client_hello_cb); + ADD_TEST(test_ccs_change_cipher); #endif #ifndef OPENSSL_NO_TLS1_3 ADD_ALL_TESTS(test_early_data_read_write, 3); @@ -6322,6 +6589,7 @@ int setup_tests(void) ADD_ALL_TESTS(test_cert_cb, 6); ADD_ALL_TESTS(test_client_cert_cb, 2); ADD_ALL_TESTS(test_ca_names, 3); + ADD_ALL_TESTS(test_servername, 10); return 1; } diff --git a/crypto/external/bsd/openssl/dist/test/sslbuffertest.c b/crypto/external/bsd/openssl/dist/test/sslbuffertest.c index b8b1f52dde1..b5f815f7dbc 100644 --- a/crypto/external/bsd/openssl/dist/test/sslbuffertest.c +++ b/crypto/external/bsd/openssl/dist/test/sslbuffertest.c @@ -13,7 +13,7 @@ #include <openssl/bio.h> #include <openssl/err.h> -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #include "ssltestlib.h" #include "testutil.h" diff --git a/crypto/external/bsd/openssl/dist/test/ssltestlib.h b/crypto/external/bsd/openssl/dist/test/ssltestlib.h index 56e323f5bc3..17b278219a6 100644 --- a/crypto/external/bsd/openssl/dist/test/ssltestlib.h +++ b/crypto/external/bsd/openssl/dist/test/ssltestlib.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_SSLTESTLIB_H -# define HEADER_SSLTESTLIB_H +#ifndef OSSL_TEST_SSLTESTLIB_H +# define OSSL_TEST_SSLTESTLIB_H # include <openssl/ssl.h> @@ -53,4 +53,4 @@ typedef struct mempacket_st MEMPACKET; DEFINE_STACK_OF(MEMPACKET) -#endif /* HEADER_SSLTESTLIB_H */ +#endif /* OSSL_TEST_SSLTESTLIB_H */ diff --git a/crypto/external/bsd/openssl/dist/test/test_test.c b/crypto/external/bsd/openssl/dist/test/test_test.c index 0af2eaeb8ad..74a230c1966 100644 --- a/crypto/external/bsd/openssl/dist/test/test_test.c +++ b/crypto/external/bsd/openssl/dist/test/test_test.c @@ -491,7 +491,7 @@ static int test_single_eval(void) && TEST_ptr_eq(p, buf + 1) && TEST_ptr_null(p = NULL) /* strings */ - && TEST_str_eq(p = "123456" + 1, "23456") + && TEST_str_eq(p = &("123456"[1]), "23456") && TEST_str_eq("3456", ++p) && TEST_str_ne(p++, "456") /* memory */ diff --git a/crypto/external/bsd/openssl/dist/test/testutil.h b/crypto/external/bsd/openssl/dist/test/testutil.h index 2a610d7bffc..575be955b55 100644 --- a/crypto/external/bsd/openssl/dist/test/testutil.h +++ b/crypto/external/bsd/openssl/dist/test/testutil.h @@ -7,8 +7,8 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_TESTUTIL_H -# define HEADER_TESTUTIL_H +#ifndef OSSL_TESTUTIL_H +# define OSSL_TESTUTIL_H #include <stdarg.h> @@ -465,4 +465,4 @@ void test_random_seed(uint32_t sd); /* Create a file path from a directory and a filename */ char *test_mk_file_path(const char *dir, const char *file); -#endif /* HEADER_TESTUTIL_H */ +#endif /* OSSL_TESTUTIL_H */ diff --git a/crypto/external/bsd/openssl/dist/test/testutil/output.h b/crypto/external/bsd/openssl/dist/test/testutil/output.h index dad4359db02..333f434949f 100644 --- a/crypto/external/bsd/openssl/dist/test/testutil/output.h +++ b/crypto/external/bsd/openssl/dist/test/testutil/output.h @@ -7,28 +7,12 @@ * https://www.openssl.org/source/license.html */ -#ifndef HEADER_TU_OUTPUT_H -# define HEADER_TU_OUTPUT_H +#ifndef OSSL_TESTUTIL_OUTPUT_H +# define OSSL_TESTUTIL_OUTPUT_H -# include <stdarg.h> +#include <stdarg.h> +#include "../testutil.h" -# define ossl_test__attr__(x) -# if defined(__GNUC__) && defined(__STDC_VERSION__) \ - && !defined(__APPLE__) - /* - * Because we support the 'z' modifier, which made its appearance in C99, - * we can't use __attribute__ with pre C99 dialects. - */ -# if __STDC_VERSION__ >= 199901L -# undef ossl_test__attr__ -# define ossl_test__attr__ __attribute__ -# if __GNUC__*10 + __GNUC_MINOR__ >= 44 -# define ossl_test__printf__ __gnu_printf__ -# else -# define ossl_test__printf__ __printf__ -# endif -# endif -# endif /* * The basic I/O functions used internally by the test framework. These * can be overridden when needed. Note that if one is, then all must be. @@ -36,21 +20,14 @@ void test_open_streams(void); void test_close_streams(void); /* The following ALL return the number of characters written */ -int test_vprintf_stdout(const char *fmt, va_list ap) - ossl_test__attr__((__format__(ossl_test__printf__, 1, 0))); -int test_vprintf_stderr(const char *fmt, va_list ap) - ossl_test__attr__((__format__(ossl_test__printf__, 1, 0))); +int test_vprintf_stdout(const char *fmt, va_list ap) PRINTF_FORMAT(1, 0); +int test_vprintf_stderr(const char *fmt, va_list ap) PRINTF_FORMAT(1, 0); /* These return failure or success */ int test_flush_stdout(void); int test_flush_stderr(void); /* Commodity functions. There's no need to override these */ -int test_printf_stdout(const char *fmt, ...) - ossl_test__attr__((__format__(ossl_test__printf__, 1, 2))); -int test_printf_stderr(const char *fmt, ...) - ossl_test__attr__((__format__(ossl_test__printf__, 1, 2))); +int test_printf_stdout(const char *fmt, ...) PRINTF_FORMAT(1, 2); +int test_printf_stderr(const char *fmt, ...) PRINTF_FORMAT(1, 2); -# undef ossl_test__printf__ -# undef ossl_test__attr__ - -#endif /* HEADER_TU_OUTPUT_H */ +#endif /* OSSL_TESTUTIL_OUTPUT_H */ diff --git a/crypto/external/bsd/openssl/dist/test/testutil/tap_bio.c b/crypto/external/bsd/openssl/dist/test/testutil/tap_bio.c index f7becb8c723..1c82aa7d5f0 100644 --- a/crypto/external/bsd/openssl/dist/test/testutil/tap_bio.c +++ b/crypto/external/bsd/openssl/dist/test/testutil/tap_bio.c @@ -93,14 +93,14 @@ static int write_string(BIO *b, const char *buf, size_t n) */ static int tap_write_ex(BIO *b, const char *buf, size_t size, size_t *in_size) { - static char empty[] = ""; BIO *next = BIO_next(b); size_t i; int j; + char EMPTY[] = ""; for (i = 0; i < size; i++) { if (BIO_get_data(b) == NULL) { - BIO_set_data(b, empty); + BIO_set_data(b, EMPTY); for (j = 0; j < subtest_level(); j++) if (!write_string(next, " ", 1)) goto err; diff --git a/crypto/external/bsd/openssl/dist/test/testutil/init.c b/crypto/external/bsd/openssl/dist/test/testutil/testutil_init.c index 5095c7f7e3b..5095c7f7e3b 100644 --- a/crypto/external/bsd/openssl/dist/test/testutil/init.c +++ b/crypto/external/bsd/openssl/dist/test/testutil/testutil_init.c diff --git a/crypto/external/bsd/openssl/dist/test/tls13ccstest.c b/crypto/external/bsd/openssl/dist/test/tls13ccstest.c index 92e9d598ca7..1633d3afe50 100644 --- a/crypto/external/bsd/openssl/dist/test/tls13ccstest.c +++ b/crypto/external/bsd/openssl/dist/test/tls13ccstest.c @@ -11,7 +11,7 @@ #include <string.h> #include "ssltestlib.h" #include "testutil.h" -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" static char *cert = NULL; static char *privkey = NULL; diff --git a/crypto/external/bsd/openssl/dist/test/tls13encryptiontest.c b/crypto/external/bsd/openssl/dist/test/tls13encryptiontest.c index 6f359b3a2f6..479ff4105e5 100644 --- a/crypto/external/bsd/openssl/dist/test/tls13encryptiontest.c +++ b/crypto/external/bsd/openssl/dist/test/tls13encryptiontest.c @@ -15,8 +15,8 @@ # pragma names as_is,shortened #endif -#include "../ssl/ssl_locl.h" -#include "../ssl/record/record_locl.h" +#include "../ssl/ssl_local.h" +#include "../ssl/record/record_local.h" #ifdef __VMS # pragma names restore diff --git a/crypto/external/bsd/openssl/dist/test/tls13secretstest.c b/crypto/external/bsd/openssl/dist/test/tls13secretstest.c index 9368b1cdc53..52fc2b66736 100644 --- a/crypto/external/bsd/openssl/dist/test/tls13secretstest.c +++ b/crypto/external/bsd/openssl/dist/test/tls13secretstest.c @@ -15,7 +15,7 @@ # pragma names as_is,shortened #endif -#include "../ssl/ssl_locl.h" +#include "../ssl/ssl_local.h" #ifdef __VMS # pragma names restore diff --git a/crypto/external/bsd/openssl/dist/test/wpackettest.c b/crypto/external/bsd/openssl/dist/test/wpackettest.c index 773eef05252..4c779c875c2 100644 --- a/crypto/external/bsd/openssl/dist/test/wpackettest.c +++ b/crypto/external/bsd/openssl/dist/test/wpackettest.c @@ -15,7 +15,7 @@ # pragma names as_is,shortened #endif -#include "../ssl/packet_locl.h" +#include "../ssl/packet_local.h" #ifdef __VMS # pragma names restore diff --git a/crypto/external/bsd/openssl/dist/util/find-doc-nits b/crypto/external/bsd/openssl/dist/util/find-doc-nits index 699887a2674..f2fd85ce8e8 100755 --- a/crypto/external/bsd/openssl/dist/util/find-doc-nits +++ b/crypto/external/bsd/openssl/dist/util/find-doc-nits @@ -35,7 +35,7 @@ Find small errors (nits) in documentation. Options: -l Print bogus links -n Print nits in POD pages -p Warn if non-public name documented (implies -n) - -u List undocumented functions + -u Count undocumented functions -h Print this help message -c List undocumented commands and options EOF @@ -294,6 +294,7 @@ my %docced; sub checkmacros() { my $count = 0; + my %seen; print "# Checking macros (approximate)\n"; foreach my $f ( glob('include/openssl/*.h') ) { @@ -305,7 +306,7 @@ sub checkmacros() while ( <IN> ) { next unless /^#\s*define\s*(\S+)\(/; my $macro = $1; - next if $docced{$macro}; + next if $docced{$macro} || defined $seen{$macro}; next if $macro =~ /i2d_/ || $macro =~ /d2i_/ || $macro =~ /DEPRECATEDIN/ @@ -313,6 +314,7 @@ sub checkmacros() || $macro =~ /DECLARE_/; print "$f:$macro\n" if $opt_d; $count++; + $seen{$macro} = 1; } close(IN); } @@ -324,15 +326,17 @@ sub printem() my $libname = shift; my $numfile = shift; my $count = 0; + my %seen; foreach my $func ( &parsenum($numfile) ) { - next if $docced{$func}; + next if $docced{$func} || defined $seen{$func}; # Skip ASN1 utilities next if $func =~ /^ASN1_/; print "$libname:$func\n" if $opt_d; $count++; + $seen{$func} = 1; } print "# Found $count missing from $numfile\n\n"; } diff --git a/crypto/external/bsd/openssl/dist/util/fix-includes b/crypto/external/bsd/openssl/dist/util/fix-includes new file mode 100755 index 00000000000..c49163875b6 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/util/fix-includes @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +find -name ossl_typ.h -o \( \ + -name '*.h' -o \ + -name '*.h.in' -o \ + -name '*.c' -o \ + -name '*.ec' -o \ + -name 'README*' -o \ + -name '*.pod' -o \ + -name '*.conf' \ + \) -exec sed -E -i \ + -f util/fix-includes.sed {} \; diff --git a/crypto/external/bsd/openssl/dist/util/fix-includes.sed b/crypto/external/bsd/openssl/dist/util/fix-includes.sed new file mode 100644 index 00000000000..fb0d6528751 --- /dev/null +++ b/crypto/external/bsd/openssl/dist/util/fix-includes.sed @@ -0,0 +1,5 @@ +s|internal/([a-z0-9_]+)_int\.h|crypto/\1.h|g ; +s@internal/(aria.h|async.h|bn_conf.h|bn_dh.h|bn_srp.h|chacha.h|ctype.h|__DECC_INCLUDE_EPILOGUE.H|__DECC_INCLUDE_PROLOGUE.H|dso_conf.h|engine.h|lhash.h|md32_common.h|objects.h|poly1305.h|sha.h|siphash.h|sm2err.h|sm2.h|sm3.h|sm4.h|store.h|foobar)@crypto/\1@g ; +s/constant_time_locl/constant_time/g ; +s/_lo?cl\.h/_local.h/g ; +s/_int\.h/_local.h/g ; diff --git a/crypto/external/bsd/openssl/dist/util/libcrypto.num b/crypto/external/bsd/openssl/dist/util/libcrypto.num index bf8b803c4c6..876b7ca7103 100644 --- a/crypto/external/bsd/openssl/dist/util/libcrypto.num +++ b/crypto/external/bsd/openssl/dist/util/libcrypto.num @@ -4582,3 +4582,8 @@ OPENSSL_INIT_set_config_file_flags 4535 1_1_1b EXIST::FUNCTION:STDIO EVP_PKEY_get0_engine 4536 1_1_1c EXIST::FUNCTION:ENGINE X509_get0_authority_serial 4537 1_1_1d EXIST::FUNCTION: X509_get0_authority_issuer 4538 1_1_1d EXIST::FUNCTION: +EVP_PKEY_meth_set_digestsign 4539 1_1_1e EXIST::FUNCTION: +EVP_PKEY_meth_set_digestverify 4540 1_1_1e EXIST::FUNCTION: +EVP_PKEY_meth_get_digestverify 4541 1_1_1e EXIST::FUNCTION: +EVP_PKEY_meth_get_digestsign 4542 1_1_1e EXIST::FUNCTION: +RSA_get0_pss_params 4543 1_1_1e EXIST::FUNCTION:RSA diff --git a/crypto/external/bsd/openssl/dist/util/perl/OpenSSL/Test.pm b/crypto/external/bsd/openssl/dist/util/perl/OpenSSL/Test.pm index 49fb88feb7d..0df6ad0a510 100644 --- a/crypto/external/bsd/openssl/dist/util/perl/OpenSSL/Test.pm +++ b/crypto/external/bsd/openssl/dist/util/perl/OpenSSL/Test.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -65,7 +65,7 @@ use File::Spec::Functions qw/file_name_is_absolute curdir canonpath splitdir rel2abs/; use File::Path 2.00 qw/rmtree mkpath/; use File::Basename; -use Cwd qw/abs_path/; +use Cwd qw/getcwd abs_path/; my $level = 0; @@ -904,26 +904,26 @@ sub __srctop_file { BAIL_OUT("Must run setup() first") if (! $test_name); my $f = pop; - return catfile($directories{SRCTOP},@_,$f); + return abs2rel(catfile($directories{SRCTOP},@_,$f),getcwd); } sub __srctop_dir { BAIL_OUT("Must run setup() first") if (! $test_name); - return catdir($directories{SRCTOP},@_); + return abs2rel(catdir($directories{SRCTOP},@_), getcwd); } sub __bldtop_file { BAIL_OUT("Must run setup() first") if (! $test_name); my $f = pop; - return catfile($directories{BLDTOP},@_,$f); + return abs2rel(catfile($directories{BLDTOP},@_,$f), getcwd); } sub __bldtop_dir { BAIL_OUT("Must run setup() first") if (! $test_name); - return catdir($directories{BLDTOP},@_); + return abs2rel(catdir($directories{BLDTOP},@_), getcwd); } # __exeext is a function that returns the platform dependent file extension diff --git a/crypto/external/bsd/openssl/dist/util/perl/TLSProxy/Proxy.pm b/crypto/external/bsd/openssl/dist/util/perl/TLSProxy/Proxy.pm index 71acaff9b41..6f983b3281b 100644 --- a/crypto/external/bsd/openssl/dist/util/perl/TLSProxy/Proxy.pm +++ b/crypto/external/bsd/openssl/dist/util/perl/TLSProxy/Proxy.pm @@ -452,7 +452,7 @@ sub clientstart } else { # It's a bit counter-intuitive spot to make next connection to # the s_server. Rationale is that established connection works - # as syncronization point, in sense that this way we know that + # as synchronization point, in sense that this way we know that # s_server is actually done with current session... $self->connect_to_server(); } diff --git a/crypto/external/bsd/openssl/dist/util/private.num b/crypto/external/bsd/openssl/dist/util/private.num index a6ef44e4a6e..bc7d967b5d1 100644 --- a/crypto/external/bsd/openssl/dist/util/private.num +++ b/crypto/external/bsd/openssl/dist/util/private.num @@ -75,11 +75,15 @@ X509_STORE_CTX_lookup_crls_fn datatype X509_STORE_CTX_verify_cb datatype X509_STORE_CTX_verify_fn datatype X509_STORE_set_verify_cb_func datatype +X509_LOOKUP datatype +X509_LOOKUP_METHOD datatype +X509_LOOKUP_TYPE datatype X509_LOOKUP_get_by_alias_fn datatype X509_LOOKUP_get_by_subject_fn datatype X509_LOOKUP_get_by_fingerprint_fn datatype X509_LOOKUP_ctrl_fn datatype X509_LOOKUP_get_by_issuer_serial_fn datatype +X509_STORE datatype bio_info_cb datatype BIO_info_cb datatype custom_ext_add_cb datatype @@ -228,6 +232,8 @@ EVP_PKEY_CTX_set_dh_pad define EVP_PKEY_CTX_set_dh_rfc5114 define EVP_PKEY_CTX_set_dhx_rfc5114 define EVP_PKEY_CTX_set_dsa_paramgen_bits define +EVP_PKEY_CTX_set_dsa_paramgen_q_bits define +EVP_PKEY_CTX_set_dsa_paramgen_md define EVP_PKEY_CTX_set_ec_param_enc define EVP_PKEY_CTX_set_ec_paramgen_curve_nid define EVP_PKEY_CTX_set_ecdh_cofactor_mode define @@ -450,6 +456,8 @@ SSL_want_x509_lookup define SSLv23_client_method define SSLv23_method define SSLv23_server_method define +X509_LOOKUP_add_dir define +X509_LOOKUP_load_file define X509_STORE_set_lookup_crls_cb define X509_STORE_set_verify_func define EVP_PKEY_CTX_set1_id define diff --git a/crypto/external/bsd/openssl/include/crypto/bn_conf.h b/crypto/external/bsd/openssl/include/crypto/bn_conf.h new file mode 100644 index 00000000000..19401ce64c0 --- /dev/null +++ b/crypto/external/bsd/openssl/include/crypto/bn_conf.h @@ -0,0 +1,30 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_CRYPTO_BN_CONF_H +# define OSSL_CRYPTO_BN_CONF_H + +/* + * The contents of this file are not used in the UEFI build, as + * both 32-bit and 64-bit builds are supported from a single run + * of the Configure script. + */ + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#if _LP64 +# define SIXTY_FOUR_BIT_LONG +#elif _ILP64 +# define SIXTY_FOUR_BIT +#else +# define THIRTY_TWO_BIT +#endif + +#endif diff --git a/crypto/external/bsd/openssl/dist/crypto/include/internal/store.h b/crypto/external/bsd/openssl/include/crypto/dso_conf.h index f5013dc3679..17e818c778b 100644 --- a/crypto/external/bsd/openssl/dist/crypto/include/internal/store.h +++ b/crypto/external/bsd/openssl/include/crypto/dso_conf.h @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,4 +7,9 @@ * https://www.openssl.org/source/license.html */ -void ossl_store_cleanup_int(void); +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_DLFCN +# define HAVE_DLFCN_H +# define DSO_EXTENSION ".so" +#endif diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/armv8-mont.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/armv8-mont.S index 7c038a0b78d..d573c00657e 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/armv8-mont.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/armv8-mont.S @@ -209,6 +209,7 @@ __bn_sqr8x_mont: cmp x1,x2 b.ne __bn_mul4x_mont .Lsqr8x_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -959,11 +960,13 @@ __bn_sqr8x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp ret .size __bn_sqr8x_mont,.-__bn_sqr8x_mont .type __bn_mul4x_mont,%function .align 5 __bn_mul4x_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1397,6 +1400,7 @@ __bn_mul4x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp ret .size __bn_mul4x_mont,.-__bn_mul4x_mont .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/chacha-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/chacha-armv8.S index d1b78a31cff..6f83fae2082 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/chacha-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/chacha-armv8.S @@ -36,6 +36,7 @@ ChaCha20_ctr32: b.ne ChaCha20_neon .Lshort: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -247,6 +248,7 @@ ChaCha20_ctr32: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp .Labort: ret @@ -303,12 +305,14 @@ ChaCha20_ctr32: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_ctr32,.-ChaCha20_ctr32 .type ChaCha20_neon,%function .align 5 ChaCha20_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -688,6 +692,7 @@ ChaCha20_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .Ltail_neon: @@ -797,11 +802,13 @@ ChaCha20_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_neon,.-ChaCha20_neon .type ChaCha20_512_neon,%function .align 5 ChaCha20_512_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -1964,5 +1971,6 @@ ChaCha20_512_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_512_neon,.-ChaCha20_512_neon diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/ecp_nistz256-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/ecp_nistz256-armv8.S index 4a4ca3c8a4b..7caa5816083 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/ecp_nistz256-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/ecp_nistz256-armv8.S @@ -2395,6 +2395,7 @@ ecp_nistz256_precomputed: .type ecp_nistz256_to_mont,%function .align 6 ecp_nistz256_to_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2410,6 +2411,7 @@ ecp_nistz256_to_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont @@ -2418,6 +2420,7 @@ ecp_nistz256_to_mont: .type ecp_nistz256_from_mont,%function .align 4 ecp_nistz256_from_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2433,6 +2436,7 @@ ecp_nistz256_from_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont @@ -2442,6 +2446,7 @@ ecp_nistz256_from_mont: .type ecp_nistz256_mul_mont,%function .align 4 ecp_nistz256_mul_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2456,6 +2461,7 @@ ecp_nistz256_mul_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont @@ -2464,6 +2470,7 @@ ecp_nistz256_mul_mont: .type ecp_nistz256_sqr_mont,%function .align 4 ecp_nistz256_sqr_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2477,6 +2484,7 @@ ecp_nistz256_sqr_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont @@ -2486,6 +2494,7 @@ ecp_nistz256_sqr_mont: .type ecp_nistz256_add,%function .align 4 ecp_nistz256_add: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2499,6 +2508,7 @@ ecp_nistz256_add: bl __ecp_nistz256_add ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_add,.-ecp_nistz256_add @@ -2507,6 +2517,7 @@ ecp_nistz256_add: .type ecp_nistz256_div_by_2,%function .align 4 ecp_nistz256_div_by_2: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2518,6 +2529,7 @@ ecp_nistz256_div_by_2: bl __ecp_nistz256_div_by_2 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 @@ -2526,6 +2538,7 @@ ecp_nistz256_div_by_2: .type ecp_nistz256_mul_by_2,%function .align 4 ecp_nistz256_mul_by_2: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2541,6 +2554,7 @@ ecp_nistz256_mul_by_2: bl __ecp_nistz256_add // ret = a+a // 2*a ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 @@ -2549,6 +2563,7 @@ ecp_nistz256_mul_by_2: .type ecp_nistz256_mul_by_3,%function .align 4 ecp_nistz256_mul_by_3: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2575,6 +2590,7 @@ ecp_nistz256_mul_by_3: bl __ecp_nistz256_add // ret += a // 2*a+a=3*a ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 @@ -2584,6 +2600,7 @@ ecp_nistz256_mul_by_3: .type ecp_nistz256_sub,%function .align 4 ecp_nistz256_sub: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2595,6 +2612,7 @@ ecp_nistz256_sub: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_sub,.-ecp_nistz256_sub @@ -2603,6 +2621,7 @@ ecp_nistz256_sub: .type ecp_nistz256_neg,%function .align 4 ecp_nistz256_neg: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2617,6 +2636,7 @@ ecp_nistz256_neg: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_neg,.-ecp_nistz256_neg @@ -2994,7 +3014,8 @@ __ecp_nistz256_div_by_2: .type ecp_nistz256_point_double,%function .align 5 ecp_nistz256_point_double: - stp x29,x30,[sp,#-80]! +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] @@ -3127,19 +3148,22 @@ ecp_nistz256_point_double: add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_double,.-ecp_nistz256_point_double .globl ecp_nistz256_point_add .type ecp_nistz256_point_add,%function .align 5 ecp_nistz256_point_add: - stp x29,x30,[sp,#-80]! +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] stp x23,x24,[sp,#48] stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] sub sp,sp,#32*12 ldp x4,x5,[x2,#64] // in2_z @@ -3153,7 +3177,7 @@ ecp_nistz256_point_add: orr x10,x6,x7 orr x25,x8,x10 cmp x25,#0 - csetm x25,ne // !in2infty + csetm x25,ne // ~in2infty add x0,sp,#192 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); @@ -3163,7 +3187,7 @@ ecp_nistz256_point_add: orr x10,x6,x7 orr x24,x8,x10 cmp x24,#0 - csetm x24,ne // !in1infty + csetm x24,ne // ~in1infty add x0,sp,#128 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -3204,7 +3228,7 @@ ecp_nistz256_point_add: orr x14,x14,x15 // see if result is zero orr x16,x16,x17 - orr x26,x14,x16 + orr x26,x14,x16 // ~is_equal(S1,S2) add x2,sp,#192 add x0,sp,#256 @@ -3225,32 +3249,21 @@ ecp_nistz256_point_add: orr x14,x14,x15 // see if result is zero orr x16,x16,x17 - orr x14,x14,x16 - tst x14,x14 - b.ne .Ladd_proceed // is_equal(U1,U2)? - - tst x24,x25 - b.eq .Ladd_proceed // (in1infty || in2infty)? + orr x14,x14,x16 // ~is_equal(U1,U2) - tst x26,x26 - b.eq .Ladd_double // is_equal(S1,S2)? + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) - eor x4,x4,x4 - eor x5,x5,x5 - stp x4,x5,[x21] - stp x4,x5,[x21,#16] - stp x4,x5,[x21,#32] - stp x4,x5,[x21,#48] - stp x4,x5,[x21,#64] - stp x4,x5,[x21,#80] - b .Ladd_done - -.align 4 .Ladd_double: mov x1,x22 mov x0,x21 ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] add sp,sp,#32*(12-4) // difference in stack frames b .Ldouble_shortcut @@ -3332,14 +3345,14 @@ ecp_nistz256_point_add: ldp x8,x9,[x23] // in2 ldp x10,x11,[x23,#16] ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#0+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+0+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+0+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3350,14 +3363,14 @@ ecp_nistz256_point_add: stp x14,x15,[x21,#0] stp x16,x17,[x21,#0+16] ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#32+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+32+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+32+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3368,13 +3381,13 @@ ecp_nistz256_point_add: stp x14,x15,[x21,#32] stp x16,x17,[x21,#32+16] ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#64+16] csel x8,x4,x8,ne csel x9,x5,x9,ne csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? csel x14,x8,x14,ne csel x15,x9,x15,ne csel x16,x10,x16,ne @@ -3383,18 +3396,21 @@ ecp_nistz256_point_add: stp x16,x17,[x21,#64+16] .Ladd_done: - add sp,x29,#0 // destroy frame + add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add,.-ecp_nistz256_point_add .globl ecp_nistz256_point_add_affine .type ecp_nistz256_point_add_affine,%function .align 5 ecp_nistz256_point_add_affine: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -3415,7 +3431,7 @@ ecp_nistz256_point_add_affine: orr x10,x6,x7 orr x24,x8,x10 cmp x24,#0 - csetm x24,ne // !in1infty + csetm x24,ne // ~in1infty ldp x14,x15,[x2] // in2_x ldp x16,x17,[x2,#16] @@ -3429,7 +3445,7 @@ ecp_nistz256_point_add_affine: orr x8,x8,x10 orr x25,x14,x8 cmp x25,#0 - csetm x25,ne // !in2infty + csetm x25,ne // ~in2infty add x0,sp,#128 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -3536,14 +3552,14 @@ ecp_nistz256_point_add_affine: ldp x8,x9,[x23] // in2 ldp x10,x11,[x23,#16] ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#0+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+0+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+0+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3555,14 +3571,14 @@ ecp_nistz256_point_add_affine: stp x16,x17,[x21,#0+16] adr x23,.Lone_mont-64 ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#32+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+32+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+32+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3573,13 +3589,13 @@ ecp_nistz256_point_add_affine: stp x14,x15,[x21,#32] stp x16,x17,[x21,#32+16] ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#64+16] csel x8,x4,x8,ne csel x9,x5,x9,ne csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? csel x14,x8,x14,ne csel x15,x9,x15,ne csel x16,x10,x16,ne @@ -3593,6 +3609,7 @@ ecp_nistz256_point_add_affine: ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine //////////////////////////////////////////////////////////////////////// diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/keccak1600-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/keccak1600-armv8.S index 838cae8342f..d8bdc71aee3 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/keccak1600-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/keccak1600-armv8.S @@ -34,6 +34,7 @@ iotas: .align 5 KeccakF1600_int: adr x28,iotas +.inst 0xd503233f // paciasp stp x28,x30,[sp,#16] // 32 bytes on top are mine b .Loop .align 4 @@ -197,12 +198,14 @@ KeccakF1600_int: bne .Loop ldr x30,[sp,#24] +.inst 0xd50323bf // autiasp ret .size KeccakF1600_int,.-KeccakF1600_int .type KeccakF1600,%function .align 5 KeccakF1600: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -252,6 +255,7 @@ KeccakF1600: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size KeccakF1600,.-KeccakF1600 @@ -259,6 +263,7 @@ KeccakF1600: .type SHA3_absorb,%function .align 5 SHA3_absorb: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -492,12 +497,14 @@ SHA3_absorb: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size SHA3_absorb,.-SHA3_absorb .globl SHA3_squeeze .type SHA3_squeeze,%function .align 5 SHA3_squeeze: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-48]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -560,6 +567,7 @@ SHA3_squeeze: ldp x19,x20,[sp,#16] ldp x21,x22,[sp,#32] ldp x29,x30,[sp],#48 +.inst 0xd50323bf // autiasp ret .size SHA3_squeeze,.-SHA3_squeeze .type KeccakF1600_ce,%function @@ -753,6 +761,7 @@ KeccakF1600_ce: .type KeccakF1600_cext,%function .align 5 KeccakF1600_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -793,12 +802,14 @@ KeccakF1600_cext: ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldr x29,[sp],#80 +.inst 0xd50323bf // autiasp ret .size KeccakF1600_cext,.-KeccakF1600_cext .globl SHA3_absorb_cext .type SHA3_absorb_cext,%function .align 5 SHA3_absorb_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -833,7 +844,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v1.16b,v1.16b,v31.16b beq .Lprocess_block_ce @@ -846,7 +857,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v3.16b,v3.16b,v31.16b beq .Lprocess_block_ce @@ -859,7 +870,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v5.16b,v5.16b,v31.16b beq .Lprocess_block_ce @@ -872,7 +883,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v7.16b,v7.16b,v31.16b beq .Lprocess_block_ce @@ -885,7 +896,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v9.16b,v9.16b,v31.16b beq .Lprocess_block_ce @@ -898,7 +909,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v11.16b,v11.16b,v31.16b beq .Lprocess_block_ce @@ -911,7 +922,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v13.16b,v13.16b,v31.16b beq .Lprocess_block_ce @@ -924,7 +935,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v15.16b,v15.16b,v31.16b beq .Lprocess_block_ce @@ -937,7 +948,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v17.16b,v17.16b,v31.16b beq .Lprocess_block_ce @@ -950,7 +961,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v19.16b,v19.16b,v31.16b beq .Lprocess_block_ce @@ -963,7 +974,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v21.16b,v21.16b,v31.16b beq .Lprocess_block_ce @@ -976,13 +987,13 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v23.16b,v23.16b,v31.16b beq .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v24.16b,v24.16b,v31.16b @@ -1014,12 +1025,14 @@ SHA3_absorb_cext: ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp ret .size SHA3_absorb_cext,.-SHA3_absorb_cext .globl SHA3_squeeze_cext .type SHA3_squeeze_cext,%function .align 5 SHA3_squeeze_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 mov x9,x0 @@ -1075,6 +1088,7 @@ SHA3_squeeze_cext: .Lsqueeze_done_ce: ldr x29,[sp],#16 +.inst 0xd50323bf // autiasp ret .size SHA3_squeeze_cext,.-SHA3_squeeze_cext .byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/poly1305-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/poly1305-armv8.S index 9b4d0ebfbf8..d53257f5023 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/poly1305-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/poly1305-armv8.S @@ -226,6 +226,7 @@ poly1305_blocks_neon: cbz x17,poly1305_blocks .Lblocks_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 @@ -794,6 +795,7 @@ poly1305_blocks_neon: st1 {v23.s}[0],[x0] .Lno_data_neon: +.inst 0xd50323bf // autiasp ldr x29,[sp],#80 ret .size poly1305_blocks_neon,.-poly1305_blocks_neon diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/sha512-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/sha512-armv8.S index c650e8442d6..a8843c87d19 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/sha512-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/sha512-armv8.S @@ -1,4 +1,4 @@ -// Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -77,6 +77,7 @@ sha256_block_data_order: tst w16,#ARMV7_NEON b.ne .Lneon_entry #endif +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -1036,6 +1037,7 @@ sha256_block_data_order: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size sha256_block_data_order,.-sha256_block_data_order diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/vpaes-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/vpaes-armv8.S index d8c35412281..5d1752c33b0 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/vpaes-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/aarch64/vpaes-armv8.S @@ -195,6 +195,7 @@ _vpaes_encrypt_core: .type vpaes_encrypt,%function .align 4 vpaes_encrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -204,6 +205,7 @@ vpaes_encrypt: st1 {v0.16b}, [x1] ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_encrypt,.-vpaes_encrypt @@ -426,6 +428,7 @@ _vpaes_decrypt_core: .type vpaes_decrypt,%function .align 4 vpaes_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -435,6 +438,7 @@ vpaes_decrypt: st1 {v0.16b}, [x1] ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_decrypt,.-vpaes_decrypt @@ -598,6 +602,7 @@ _vpaes_key_preheat: .type _vpaes_schedule_core,%function .align 4 _vpaes_schedule_core: +.inst 0xd503233f // paciasp stp x29, x30, [sp,#-16]! add x29,sp,#0 @@ -762,6 +767,7 @@ _vpaes_schedule_core: eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 ldp x29, x30, [sp],#16 +.inst 0xd50323bf // autiasp ret .size _vpaes_schedule_core,.-_vpaes_schedule_core @@ -974,6 +980,7 @@ _vpaes_schedule_mangle: .type vpaes_set_encrypt_key,%function .align 4 vpaes_set_encrypt_key: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -989,6 +996,7 @@ vpaes_set_encrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key @@ -996,6 +1004,7 @@ vpaes_set_encrypt_key: .type vpaes_set_decrypt_key,%function .align 4 vpaes_set_decrypt_key: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1015,6 +1024,7 @@ vpaes_set_decrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key .globl vpaes_cbc_encrypt @@ -1025,6 +1035,7 @@ vpaes_cbc_encrypt: cmp w5, #0 // check direction b.eq vpaes_cbc_decrypt +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -1047,6 +1058,7 @@ vpaes_cbc_encrypt: st1 {v0.16b}, [x4] // write ivec ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp .Lcbc_abort: ret .size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt @@ -1054,6 +1066,7 @@ vpaes_cbc_encrypt: .type vpaes_cbc_decrypt,%function .align 4 vpaes_cbc_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1095,12 +1108,14 @@ vpaes_cbc_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_cbc_decrypt,.-vpaes_cbc_decrypt .globl vpaes_ecb_encrypt .type vpaes_ecb_encrypt,%function .align 4 vpaes_ecb_encrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1134,6 +1149,7 @@ vpaes_ecb_encrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_ecb_encrypt,.-vpaes_ecb_encrypt @@ -1141,6 +1157,7 @@ vpaes_ecb_encrypt: .type vpaes_ecb_decrypt,%function .align 4 vpaes_ecb_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1174,5 +1191,6 @@ vpaes_ecb_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_ecb_decrypt,.-vpaes_ecb_decrypt diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S index 83dc40163d0..f372459ca29 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S @@ -1,5 +1,5 @@ #include "arm_asm.h" -@ Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +@ Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @ this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/arm.inc b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/arm.inc index db12648d1a8..bef1cf72203 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/arm.inc +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/arm.inc @@ -4,7 +4,8 @@ ${MACHINE_ARCH} == "armeb" || \ ${MACHINE_ARCH} == "arm" ARM_MAX_ARCH=4 -. elif ${MACHINE_ARCH} == "earm" || \ +. elif !empty(MACHINE_ARCH:Mearmv5*) || \ + ${MACHINE_ARCH} == "earm" || \ ${MACHINE_ARCH} == "earmhf" || \ ${MACHINE_ARCH} == "earmeb" || \ ${MACHINE_ARCH} == "earmhfeb" diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/armv8-mont.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/armv8-mont.S index 17fa7c170fa..e97f628d408 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/armv8-mont.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/armv8-mont.S @@ -210,6 +210,7 @@ __bn_sqr8x_mont: cmp x1,x2 b.ne __bn_mul4x_mont .Lsqr8x_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -960,11 +961,13 @@ __bn_sqr8x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp ret .size __bn_sqr8x_mont,.-__bn_sqr8x_mont .type __bn_mul4x_mont,%function .align 5 __bn_mul4x_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -1398,6 +1401,7 @@ __bn_mul4x_mont: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldr x29,[sp],#128 +.inst 0xd50323bf // autiasp ret .size __bn_mul4x_mont,.-__bn_mul4x_mont .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/bsaes-armv7.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/bsaes-armv7.S index 2bc8cad50ad..b680e679add 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/bsaes-armv7.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/bsaes-armv7.S @@ -1,5 +1,5 @@ #include "arm_asm.h" -@ Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. +@ Copyright 2012-2020 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @ this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/chacha-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/chacha-armv8.S index dbb0ac8a9a4..09a787f57bd 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/chacha-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/chacha-armv8.S @@ -37,6 +37,7 @@ ChaCha20_ctr32: b.ne ChaCha20_neon .Lshort: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -248,6 +249,7 @@ ChaCha20_ctr32: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp .Labort: ret @@ -304,12 +306,14 @@ ChaCha20_ctr32: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_ctr32,.-ChaCha20_ctr32 .type ChaCha20_neon,%function .align 5 ChaCha20_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -689,6 +693,7 @@ ChaCha20_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .Ltail_neon: @@ -798,11 +803,13 @@ ChaCha20_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_neon,.-ChaCha20_neon .type ChaCha20_512_neon,%function .align 5 ChaCha20_512_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-96]! add x29,sp,#0 @@ -1965,5 +1972,6 @@ ChaCha20_512_neon: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ChaCha20_512_neon,.-ChaCha20_512_neon diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv4.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv4.S index 41274bac261..3f871bf349e 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv4.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv4.S @@ -3758,7 +3758,7 @@ ecp_nistz256_point_add: #endif movne r12,#-1 stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - str r12,[sp,#32*18+8] @ !in2infty + str r12,[sp,#32*18+8] @ ~in2infty ldmia r1!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy in1_x add r3,sp,#96 @@ -3779,7 +3779,7 @@ ecp_nistz256_point_add: #endif movne r12,#-1 stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - str r12,[sp,#32*18+4] @ !in1infty + str r12,[sp,#32*18+4] @ ~in1infty add r1,sp,#256 add r2,sp,#256 @@ -3844,33 +3844,20 @@ ecp_nistz256_point_add: orr r11,r11,r4 orr r6,r6,r8 orr r11,r11,r9 - orrs r11,r11,r6 + orr r11,r11,r6 @ ~is_equal(U1,U2) - bne .Ladd_proceed @ is_equal(U1,U2)? + ldr r10,[sp,#32*18+4] @ ~in1infty + ldr r12,[sp,#32*18+8] @ ~in2infty + ldr r14,[sp,#32*18+12] @ ~is_equal(S1,S2) + mvn r10,r10 @ -1/0 -> 0/-1 + mvn r12,r12 @ -1/0 -> 0/-1 + orr r11,r10 + orr r11,r12 + orrs r11,r14 @ set flags - ldr r10,[sp,#32*18+4] - ldr r12,[sp,#32*18+8] - ldr r14,[sp,#32*18+12] - tst r10,r12 - beq .Ladd_proceed @ (in1infty || in2infty)? - tst r14,r14 - beq .Ladd_double @ is_equal(S1,S2)? + @ if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) + bne .Ladd_proceed - ldr r0,[sp,#32*18+16] - eor r4,r4,r4 - eor r5,r5,r5 - eor r6,r6,r6 - eor r7,r7,r7 - eor r8,r8,r8 - eor r9,r9,r9 - eor r10,r10,r10 - eor r11,r11,r11 - stmia r0!,{r4,r5,r6,r7,r8,r9,r10,r11} - stmia r0!,{r4,r5,r6,r7,r8,r9,r10,r11} - stmia r0!,{r4,r5,r6,r7,r8,r9,r10,r11} - b .Ladd_done - -.align 4 .Ladd_double: ldr r1,[sp,#32*18+20] add sp,sp,#32*(18-5)+16 @ difference in frame sizes @@ -3935,24 +3922,24 @@ ecp_nistz256_point_add: add r2,sp,#544 bl __ecp_nistz256_sub_from @ p256_sub(res_y, res_y, S2); - ldr r11,[sp,#32*18+4] @ !in1intfy - ldr r12,[sp,#32*18+8] @ !in2intfy + ldr r11,[sp,#32*18+4] @ ~in1infty + ldr r12,[sp,#32*18+8] @ ~in2infty add r1,sp,#0 add r2,sp,#192 - and r10,r11,r12 + and r10,r11,r12 @ ~in1infty & ~in2infty mvn r11,r11 add r3,sp,#96 - and r11,r11,r12 - mvn r12,r12 + and r11,r11,r12 @ in1infty & ~in2infty + mvn r12,r12 @ in2infty ldr r0,[sp,#32*18+16] ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -3962,11 +3949,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -3976,11 +3963,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -3990,11 +3977,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4004,11 +3991,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4018,11 +4005,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4032,11 +4019,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4046,11 +4033,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4060,11 +4047,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4074,11 +4061,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4088,11 +4075,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4102,11 +4089,11 @@ ecp_nistz256_point_add: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4148,7 +4135,7 @@ ecp_nistz256_point_add_affine: #endif movne r12,#-1 stmia r3,{r4,r5,r6,r7,r8,r9,r10,r11} - str r12,[sp,#32*15+4] @ !in1infty + str r12,[sp,#32*15+4] @ ~in1infty ldmia r2!,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy in2_x add r3,sp,#192 @@ -4175,7 +4162,7 @@ ecp_nistz256_point_add_affine: it ne #endif movne r12,#-1 - str r12,[sp,#32*15+8] @ !in2infty + str r12,[sp,#32*15+8] @ ~in2infty add r1,sp,#160 add r2,sp,#160 @@ -4257,24 +4244,24 @@ ecp_nistz256_point_add_affine: add r2,sp,#288 bl __ecp_nistz256_sub_from @ p256_sub(res_y, res_y, S2); - ldr r11,[sp,#32*15+4] @ !in1intfy - ldr r12,[sp,#32*15+8] @ !in2intfy + ldr r11,[sp,#32*15+4] @ ~in1infty + ldr r12,[sp,#32*15+8] @ ~in2infty add r1,sp,#0 add r2,sp,#192 - and r10,r11,r12 + and r10,r11,r12 @ ~in1infty & ~in2infty mvn r11,r11 add r3,sp,#96 - and r11,r11,r12 - mvn r12,r12 + and r11,r11,r12 @ in1infty & ~in2infty + mvn r12,r12 @ in2infty ldr r0,[sp,#32*15] ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4284,11 +4271,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4298,11 +4285,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4312,11 +4299,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4326,11 +4313,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4340,11 +4327,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4354,11 +4341,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 @@ -4368,11 +4355,11 @@ ecp_nistz256_point_add_affine: ldmia r1!,{r4,r5} @ res_x ldmia r2!,{r6,r7} @ in2_x ldmia r3!,{r8,r9} @ in1_x - and r4,r4,r10 + and r4,r4,r10 @ ~in1infty & ~in2infty and r5,r5,r10 - and r6,r6,r11 + and r6,r6,r11 @ in1infty & ~in2infty and r7,r7,r11 - and r8,r8,r12 + and r8,r8,r12 @ in2infty and r9,r9,r12 orr r4,r4,r6 orr r5,r5,r7 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv8.S index 303c6336b93..232038c0024 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/ecp_nistz256-armv8.S @@ -2396,6 +2396,7 @@ ecp_nistz256_precomputed: .type ecp_nistz256_to_mont,%function .align 6 ecp_nistz256_to_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2411,6 +2412,7 @@ ecp_nistz256_to_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont @@ -2419,6 +2421,7 @@ ecp_nistz256_to_mont: .type ecp_nistz256_from_mont,%function .align 4 ecp_nistz256_from_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2434,6 +2437,7 @@ ecp_nistz256_from_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont @@ -2443,6 +2447,7 @@ ecp_nistz256_from_mont: .type ecp_nistz256_mul_mont,%function .align 4 ecp_nistz256_mul_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2457,6 +2462,7 @@ ecp_nistz256_mul_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont @@ -2465,6 +2471,7 @@ ecp_nistz256_mul_mont: .type ecp_nistz256_sqr_mont,%function .align 4 ecp_nistz256_sqr_mont: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-32]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -2478,6 +2485,7 @@ ecp_nistz256_sqr_mont: ldp x19,x20,[sp,#16] ldp x29,x30,[sp],#32 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont @@ -2487,6 +2495,7 @@ ecp_nistz256_sqr_mont: .type ecp_nistz256_add,%function .align 4 ecp_nistz256_add: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2500,6 +2509,7 @@ ecp_nistz256_add: bl __ecp_nistz256_add ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_add,.-ecp_nistz256_add @@ -2508,6 +2518,7 @@ ecp_nistz256_add: .type ecp_nistz256_div_by_2,%function .align 4 ecp_nistz256_div_by_2: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2519,6 +2530,7 @@ ecp_nistz256_div_by_2: bl __ecp_nistz256_div_by_2 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 @@ -2527,6 +2539,7 @@ ecp_nistz256_div_by_2: .type ecp_nistz256_mul_by_2,%function .align 4 ecp_nistz256_mul_by_2: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2542,6 +2555,7 @@ ecp_nistz256_mul_by_2: bl __ecp_nistz256_add // ret = a+a // 2*a ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 @@ -2550,6 +2564,7 @@ ecp_nistz256_mul_by_2: .type ecp_nistz256_mul_by_3,%function .align 4 ecp_nistz256_mul_by_3: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2576,6 +2591,7 @@ ecp_nistz256_mul_by_3: bl __ecp_nistz256_add // ret += a // 2*a+a=3*a ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 @@ -2585,6 +2601,7 @@ ecp_nistz256_mul_by_3: .type ecp_nistz256_sub,%function .align 4 ecp_nistz256_sub: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2596,6 +2613,7 @@ ecp_nistz256_sub: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_sub,.-ecp_nistz256_sub @@ -2604,6 +2622,7 @@ ecp_nistz256_sub: .type ecp_nistz256_neg,%function .align 4 ecp_nistz256_neg: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -2618,6 +2637,7 @@ ecp_nistz256_neg: bl __ecp_nistz256_sub_from ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_neg,.-ecp_nistz256_neg @@ -2995,7 +3015,8 @@ __ecp_nistz256_div_by_2: .type ecp_nistz256_point_double,%function .align 5 ecp_nistz256_point_double: - stp x29,x30,[sp,#-80]! +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] @@ -3128,19 +3149,22 @@ ecp_nistz256_point_double: add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] - ldp x29,x30,[sp],#80 + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_double,.-ecp_nistz256_point_double .globl ecp_nistz256_point_add .type ecp_nistz256_point_add,%function .align 5 ecp_nistz256_point_add: - stp x29,x30,[sp,#-80]! +.inst 0xd503233f // paciasp + stp x29,x30,[sp,#-96]! add x29,sp,#0 stp x19,x20,[sp,#16] stp x21,x22,[sp,#32] stp x23,x24,[sp,#48] stp x25,x26,[sp,#64] + stp x27,x28,[sp,#80] sub sp,sp,#32*12 ldp x4,x5,[x2,#64] // in2_z @@ -3154,7 +3178,7 @@ ecp_nistz256_point_add: orr x10,x6,x7 orr x25,x8,x10 cmp x25,#0 - csetm x25,ne // !in2infty + csetm x25,ne // ~in2infty add x0,sp,#192 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z2sqr, in2_z); @@ -3164,7 +3188,7 @@ ecp_nistz256_point_add: orr x10,x6,x7 orr x24,x8,x10 cmp x24,#0 - csetm x24,ne // !in1infty + csetm x24,ne // ~in1infty add x0,sp,#128 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -3205,7 +3229,7 @@ ecp_nistz256_point_add: orr x14,x14,x15 // see if result is zero orr x16,x16,x17 - orr x26,x14,x16 + orr x26,x14,x16 // ~is_equal(S1,S2) add x2,sp,#192 add x0,sp,#256 @@ -3226,32 +3250,21 @@ ecp_nistz256_point_add: orr x14,x14,x15 // see if result is zero orr x16,x16,x17 - orr x14,x14,x16 - tst x14,x14 - b.ne .Ladd_proceed // is_equal(U1,U2)? - - tst x24,x25 - b.eq .Ladd_proceed // (in1infty || in2infty)? + orr x14,x14,x16 // ~is_equal(U1,U2) - tst x26,x26 - b.eq .Ladd_double // is_equal(S1,S2)? + mvn x27,x24 // -1/0 -> 0/-1 + mvn x28,x25 // -1/0 -> 0/-1 + orr x14,x14,x27 + orr x14,x14,x28 + orr x14,x14,x26 + cbnz x14,.Ladd_proceed // if(~is_equal(U1,U2) | in1infty | in2infty | ~is_equal(S1,S2)) - eor x4,x4,x4 - eor x5,x5,x5 - stp x4,x5,[x21] - stp x4,x5,[x21,#16] - stp x4,x5,[x21,#32] - stp x4,x5,[x21,#48] - stp x4,x5,[x21,#64] - stp x4,x5,[x21,#80] - b .Ladd_done - -.align 4 .Ladd_double: mov x1,x22 mov x0,x21 ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] + ldp x27,x28,[x29,#80] add sp,sp,#32*(12-4) // difference in stack frames b .Ldouble_shortcut @@ -3333,14 +3346,14 @@ ecp_nistz256_point_add: ldp x8,x9,[x23] // in2 ldp x10,x11,[x23,#16] ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#0+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+0+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+0+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3351,14 +3364,14 @@ ecp_nistz256_point_add: stp x14,x15,[x21,#0] stp x16,x17,[x21,#0+16] ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#32+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+32+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+32+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3369,13 +3382,13 @@ ecp_nistz256_point_add: stp x14,x15,[x21,#32] stp x16,x17,[x21,#32+16] ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#64+16] csel x8,x4,x8,ne csel x9,x5,x9,ne csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? csel x14,x8,x14,ne csel x15,x9,x15,ne csel x16,x10,x16,ne @@ -3384,18 +3397,21 @@ ecp_nistz256_point_add: stp x16,x17,[x21,#64+16] .Ladd_done: - add sp,x29,#0 // destroy frame + add sp,x29,#0 // destroy frame ldp x19,x20,[x29,#16] ldp x21,x22,[x29,#32] ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] - ldp x29,x30,[sp],#80 + ldp x27,x28,[x29,#80] + ldp x29,x30,[sp],#96 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add,.-ecp_nistz256_point_add .globl ecp_nistz256_point_add_affine .type ecp_nistz256_point_add_affine,%function .align 5 ecp_nistz256_point_add_affine: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -3416,7 +3432,7 @@ ecp_nistz256_point_add_affine: orr x10,x6,x7 orr x24,x8,x10 cmp x24,#0 - csetm x24,ne // !in1infty + csetm x24,ne // ~in1infty ldp x14,x15,[x2] // in2_x ldp x16,x17,[x2,#16] @@ -3430,7 +3446,7 @@ ecp_nistz256_point_add_affine: orr x8,x8,x10 orr x25,x14,x8 cmp x25,#0 - csetm x25,ne // !in2infty + csetm x25,ne // ~in2infty add x0,sp,#128 bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Z1sqr, in1_z); @@ -3537,14 +3553,14 @@ ecp_nistz256_point_add_affine: ldp x8,x9,[x23] // in2 ldp x10,x11,[x23,#16] ldp x14,x15,[x22,#0] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#0+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+0+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+0+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3556,14 +3572,14 @@ ecp_nistz256_point_add_affine: stp x16,x17,[x21,#0+16] adr x23,.Lone_mont-64 ldp x14,x15,[x22,#32] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#32+16] csel x8,x4,x8,ne csel x9,x5,x9,ne ldp x4,x5,[sp,#0+32+32] // res csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? ldp x6,x7,[sp,#0+32+48] csel x14,x8,x14,ne csel x15,x9,x15,ne @@ -3574,13 +3590,13 @@ ecp_nistz256_point_add_affine: stp x14,x15,[x21,#32] stp x16,x17,[x21,#32+16] ldp x14,x15,[x22,#64] // in1 - cmp x24,#0 // !, remember? + cmp x24,#0 // ~, remember? ldp x16,x17,[x22,#64+16] csel x8,x4,x8,ne csel x9,x5,x9,ne csel x10,x6,x10,ne csel x11,x7,x11,ne - cmp x25,#0 // !, remember? + cmp x25,#0 // ~, remember? csel x14,x8,x14,ne csel x15,x9,x15,ne csel x16,x10,x16,ne @@ -3594,6 +3610,7 @@ ecp_nistz256_point_add_affine: ldp x23,x24,[x29,#48] ldp x25,x26,[x29,#64] ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp ret .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine //////////////////////////////////////////////////////////////////////// diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv4.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv4.S index f9387be95ac..1322361be21 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv4.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv4.S @@ -2201,9 +2201,9 @@ KeccakF1600_neon: .align 4 .Loop_neon: @ Theta - vst1.64 {q4}, [r0:64] @ offload A[0..1][4] + vst1.64 {q4}, [r0,:64] @ offload A[0..1][4] veor q13, q0, q5 @ A[0..1][0]^A[2..3][0] - vst1.64 {d18}, [r1:64] @ offload A[2][4] + vst1.64 {d18}, [r1,:64] @ offload A[2][4] veor q14, q1, q6 @ A[0..1][1]^A[2..3][1] veor q15, q2, q7 @ A[0..1][2]^A[2..3][2] veor d26, d26, d27 @ C[0]=A[0][0]^A[1][0]^A[2][0]^A[3][0] @@ -2246,10 +2246,10 @@ KeccakF1600_neon: veor d16, d16, d28 @ A[2][3] ^= C[2] veor d17, d17, d28 @ A[3][3] ^= C[2] veor d23, d23, d28 @ A[4][3] ^= C[2] - vld1.64 {q4}, [r0:64] @ restore A[0..1][4] + vld1.64 {q4}, [r0,:64] @ restore A[0..1][4] vmov d28, d29 - vld1.64 {d18}, [r1:64] @ restore A[2][4] + vld1.64 {d18}, [r1,:64] @ restore A[2][4] veor q2, q2, q13 @ A[0..1][2] ^= D[2] veor q7, q7, q13 @ A[2..3][2] ^= D[2] veor d22, d22, d27 @ A[4][2] ^= D[2] @@ -2324,7 +2324,7 @@ KeccakF1600_neon: veor q13, q13, q0 @ A[0..1][0] ^ (~A[0..1][1] & A[0..1][2]) veor q14, q14, q1 @ A[0..1][1] ^ (~A[0..1][2] & A[0..1][3]) veor q2, q2, q15 @ A[0..1][2] ^= (~A[0..1][3] & A[0..1][4]) - vst1.64 {q13}, [r0:64] @ offload A[0..1][0] + vst1.64 {q13}, [r0,:64] @ offload A[0..1][0] vbic q13, q0, q4 vbic q15, q1, q0 vmov q1, q14 @ A[0..1][1] @@ -2345,10 +2345,10 @@ KeccakF1600_neon: vmov q14, q10 @ A[4][0..1] veor q9, q9, q13 @ A[2..3][4] ^= (~A[2..3][0] & A[2..3][1]) - vld1.64 d25, [r2:64]! @ Iota[i++] + vld1.64 d25, [r2,:64]! @ Iota[i++] vbic d26, d22, d21 vbic d27, d23, d22 - vld1.64 {q0}, [r0:64] @ restore A[0..1][0] + vld1.64 {q0}, [r0,:64] @ restore A[0..1][0] veor d20, d20, d26 @ A[4][0] ^= (~A[4][1] & A[4][2]) vbic d26, d24, d23 veor d21, d21, d27 @ A[4][1] ^= (~A[4][2] & A[4][3]) @@ -2376,32 +2376,32 @@ SHA3_absorb_neon: mov r5, r2 @ len mov r6, r3 @ bsz - vld1.32 {d0}, [r0:64]! @ A[0][0] - vld1.32 {d2}, [r0:64]! @ A[0][1] - vld1.32 {d4}, [r0:64]! @ A[0][2] - vld1.32 {d6}, [r0:64]! @ A[0][3] - vld1.32 {d8}, [r0:64]! @ A[0][4] - - vld1.32 {d1}, [r0:64]! @ A[1][0] - vld1.32 {d3}, [r0:64]! @ A[1][1] - vld1.32 {d5}, [r0:64]! @ A[1][2] - vld1.32 {d7}, [r0:64]! @ A[1][3] - vld1.32 {d9}, [r0:64]! @ A[1][4] - - vld1.32 {d10}, [r0:64]! @ A[2][0] - vld1.32 {d12}, [r0:64]! @ A[2][1] - vld1.32 {d14}, [r0:64]! @ A[2][2] - vld1.32 {d16}, [r0:64]! @ A[2][3] - vld1.32 {d18}, [r0:64]! @ A[2][4] - - vld1.32 {d11}, [r0:64]! @ A[3][0] - vld1.32 {d13}, [r0:64]! @ A[3][1] - vld1.32 {d15}, [r0:64]! @ A[3][2] - vld1.32 {d17}, [r0:64]! @ A[3][3] - vld1.32 {d19}, [r0:64]! @ A[3][4] - - vld1.32 {d20,d21,d22,d23}, [r0:64]! @ A[4][0..3] - vld1.32 {d24}, [r0:64] @ A[4][4] + vld1.32 {d0}, [r0,:64]! @ A[0][0] + vld1.32 {d2}, [r0,:64]! @ A[0][1] + vld1.32 {d4}, [r0,:64]! @ A[0][2] + vld1.32 {d6}, [r0,:64]! @ A[0][3] + vld1.32 {d8}, [r0,:64]! @ A[0][4] + + vld1.32 {d1}, [r0,:64]! @ A[1][0] + vld1.32 {d3}, [r0,:64]! @ A[1][1] + vld1.32 {d5}, [r0,:64]! @ A[1][2] + vld1.32 {d7}, [r0,:64]! @ A[1][3] + vld1.32 {d9}, [r0,:64]! @ A[1][4] + + vld1.32 {d10}, [r0,:64]! @ A[2][0] + vld1.32 {d12}, [r0,:64]! @ A[2][1] + vld1.32 {d14}, [r0,:64]! @ A[2][2] + vld1.32 {d16}, [r0,:64]! @ A[2][3] + vld1.32 {d18}, [r0,:64]! @ A[2][4] + + vld1.32 {d11}, [r0,:64]! @ A[3][0] + vld1.32 {d13}, [r0,:64]! @ A[3][1] + vld1.32 {d15}, [r0,:64]! @ A[3][2] + vld1.32 {d17}, [r0,:64]! @ A[3][3] + vld1.32 {d19}, [r0,:64]! @ A[3][4] + + vld1.32 {d20,d21,d22,d23}, [r0,:64]! @ A[4][0..3] + vld1.32 {d24}, [r0,:64] @ A[4][4] sub r0, r0, #24*8 @ rewind b .Loop_absorb_neon @@ -2508,32 +2508,32 @@ SHA3_absorb_neon: .align 4 .Labsorbed_neon: - vst1.32 {d0}, [r0:64]! @ A[0][0..4] - vst1.32 {d2}, [r0:64]! - vst1.32 {d4}, [r0:64]! - vst1.32 {d6}, [r0:64]! - vst1.32 {d8}, [r0:64]! - - vst1.32 {d1}, [r0:64]! @ A[1][0..4] - vst1.32 {d3}, [r0:64]! - vst1.32 {d5}, [r0:64]! - vst1.32 {d7}, [r0:64]! - vst1.32 {d9}, [r0:64]! - - vst1.32 {d10}, [r0:64]! @ A[2][0..4] - vst1.32 {d12}, [r0:64]! - vst1.32 {d14}, [r0:64]! - vst1.32 {d16}, [r0:64]! - vst1.32 {d18}, [r0:64]! - - vst1.32 {d11}, [r0:64]! @ A[3][0..4] - vst1.32 {d13}, [r0:64]! - vst1.32 {d15}, [r0:64]! - vst1.32 {d17}, [r0:64]! - vst1.32 {d19}, [r0:64]! - - vst1.32 {d20,d21,d22,d23}, [r0:64]! @ A[4][0..4] - vst1.32 {d24}, [r0:64] + vst1.32 {d0}, [r0,:64]! @ A[0][0..4] + vst1.32 {d2}, [r0,:64]! + vst1.32 {d4}, [r0,:64]! + vst1.32 {d6}, [r0,:64]! + vst1.32 {d8}, [r0,:64]! + + vst1.32 {d1}, [r0,:64]! @ A[1][0..4] + vst1.32 {d3}, [r0,:64]! + vst1.32 {d5}, [r0,:64]! + vst1.32 {d7}, [r0,:64]! + vst1.32 {d9}, [r0,:64]! + + vst1.32 {d10}, [r0,:64]! @ A[2][0..4] + vst1.32 {d12}, [r0,:64]! + vst1.32 {d14}, [r0,:64]! + vst1.32 {d16}, [r0,:64]! + vst1.32 {d18}, [r0,:64]! + + vst1.32 {d11}, [r0,:64]! @ A[3][0..4] + vst1.32 {d13}, [r0,:64]! + vst1.32 {d15}, [r0,:64]! + vst1.32 {d17}, [r0,:64]! + vst1.32 {d19}, [r0,:64]! + + vst1.32 {d20,d21,d22,d23}, [r0,:64]! @ A[4][0..4] + vst1.32 {d24}, [r0,:64] mov r0, r5 @ return value vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} @@ -2568,64 +2568,64 @@ SHA3_squeeze_neon: vstmdb sp!, {d8,d9,d10,d11,d12,d13,d14,d15} - vld1.32 {d0}, [r0:64]! @ A[0][0..4] - vld1.32 {d2}, [r0:64]! - vld1.32 {d4}, [r0:64]! - vld1.32 {d6}, [r0:64]! - vld1.32 {d8}, [r0:64]! - - vld1.32 {d1}, [r0:64]! @ A[1][0..4] - vld1.32 {d3}, [r0:64]! - vld1.32 {d5}, [r0:64]! - vld1.32 {d7}, [r0:64]! - vld1.32 {d9}, [r0:64]! - - vld1.32 {d10}, [r0:64]! @ A[2][0..4] - vld1.32 {d12}, [r0:64]! - vld1.32 {d14}, [r0:64]! - vld1.32 {d16}, [r0:64]! - vld1.32 {d18}, [r0:64]! - - vld1.32 {d11}, [r0:64]! @ A[3][0..4] - vld1.32 {d13}, [r0:64]! - vld1.32 {d15}, [r0:64]! - vld1.32 {d17}, [r0:64]! - vld1.32 {d19}, [r0:64]! - - vld1.32 {d20,d21,d22,d23}, [r0:64]! @ A[4][0..4] - vld1.32 {d24}, [r0:64] + vld1.32 {d0}, [r0,:64]! @ A[0][0..4] + vld1.32 {d2}, [r0,:64]! + vld1.32 {d4}, [r0,:64]! + vld1.32 {d6}, [r0,:64]! + vld1.32 {d8}, [r0,:64]! + + vld1.32 {d1}, [r0,:64]! @ A[1][0..4] + vld1.32 {d3}, [r0,:64]! + vld1.32 {d5}, [r0,:64]! + vld1.32 {d7}, [r0,:64]! + vld1.32 {d9}, [r0,:64]! + + vld1.32 {d10}, [r0,:64]! @ A[2][0..4] + vld1.32 {d12}, [r0,:64]! + vld1.32 {d14}, [r0,:64]! + vld1.32 {d16}, [r0,:64]! + vld1.32 {d18}, [r0,:64]! + + vld1.32 {d11}, [r0,:64]! @ A[3][0..4] + vld1.32 {d13}, [r0,:64]! + vld1.32 {d15}, [r0,:64]! + vld1.32 {d17}, [r0,:64]! + vld1.32 {d19}, [r0,:64]! + + vld1.32 {d20,d21,d22,d23}, [r0,:64]! @ A[4][0..4] + vld1.32 {d24}, [r0,:64] sub r0, r0, #24*8 @ rewind bl KeccakF1600_neon mov r12, r0 @ A_flat - vst1.32 {d0}, [r0:64]! @ A[0][0..4] - vst1.32 {d2}, [r0:64]! - vst1.32 {d4}, [r0:64]! - vst1.32 {d6}, [r0:64]! - vst1.32 {d8}, [r0:64]! - - vst1.32 {d1}, [r0:64]! @ A[1][0..4] - vst1.32 {d3}, [r0:64]! - vst1.32 {d5}, [r0:64]! - vst1.32 {d7}, [r0:64]! - vst1.32 {d9}, [r0:64]! - - vst1.32 {d10}, [r0:64]! @ A[2][0..4] - vst1.32 {d12}, [r0:64]! - vst1.32 {d14}, [r0:64]! - vst1.32 {d16}, [r0:64]! - vst1.32 {d18}, [r0:64]! - - vst1.32 {d11}, [r0:64]! @ A[3][0..4] - vst1.32 {d13}, [r0:64]! - vst1.32 {d15}, [r0:64]! - vst1.32 {d17}, [r0:64]! - vst1.32 {d19}, [r0:64]! - - vst1.32 {d20,d21,d22,d23}, [r0:64]! @ A[4][0..4] + vst1.32 {d0}, [r0,:64]! @ A[0][0..4] + vst1.32 {d2}, [r0,:64]! + vst1.32 {d4}, [r0,:64]! + vst1.32 {d6}, [r0,:64]! + vst1.32 {d8}, [r0,:64]! + + vst1.32 {d1}, [r0,:64]! @ A[1][0..4] + vst1.32 {d3}, [r0,:64]! + vst1.32 {d5}, [r0,:64]! + vst1.32 {d7}, [r0,:64]! + vst1.32 {d9}, [r0,:64]! + + vst1.32 {d10}, [r0,:64]! @ A[2][0..4] + vst1.32 {d12}, [r0,:64]! + vst1.32 {d14}, [r0,:64]! + vst1.32 {d16}, [r0,:64]! + vst1.32 {d18}, [r0,:64]! + + vst1.32 {d11}, [r0,:64]! @ A[3][0..4] + vst1.32 {d13}, [r0,:64]! + vst1.32 {d15}, [r0,:64]! + vst1.32 {d17}, [r0,:64]! + vst1.32 {d19}, [r0,:64]! + + vst1.32 {d20,d21,d22,d23}, [r0,:64]! @ A[4][0..4] mov r14, r6 @ bsz - vst1.32 {d24}, [r0:64] + vst1.32 {d24}, [r0,:64] mov r0, r12 @ rewind vldmia sp!, {d8,d9,d10,d11,d12,d13,d14,d15} diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv8.S index a254aabed31..ceb56fc5874 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/keccak1600-armv8.S @@ -35,6 +35,7 @@ iotas: .align 5 KeccakF1600_int: adr x28,iotas +.inst 0xd503233f // paciasp stp x28,x30,[sp,#16] // 32 bytes on top are mine b .Loop .align 4 @@ -198,12 +199,14 @@ KeccakF1600_int: bne .Loop ldr x30,[sp,#24] +.inst 0xd50323bf // autiasp ret .size KeccakF1600_int,.-KeccakF1600_int .type KeccakF1600,%function .align 5 KeccakF1600: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -253,6 +256,7 @@ KeccakF1600: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size KeccakF1600,.-KeccakF1600 @@ -260,6 +264,7 @@ KeccakF1600: .type SHA3_absorb,%function .align 5 SHA3_absorb: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -493,12 +498,14 @@ SHA3_absorb: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size SHA3_absorb,.-SHA3_absorb .globl SHA3_squeeze .type SHA3_squeeze,%function .align 5 SHA3_squeeze: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-48]! add x29,sp,#0 stp x19,x20,[sp,#16] @@ -561,6 +568,7 @@ SHA3_squeeze: ldp x19,x20,[sp,#16] ldp x21,x22,[sp,#32] ldp x29,x30,[sp],#48 +.inst 0xd50323bf // autiasp ret .size SHA3_squeeze,.-SHA3_squeeze .type KeccakF1600_ce,%function @@ -754,6 +762,7 @@ KeccakF1600_ce: .type KeccakF1600_cext,%function .align 5 KeccakF1600_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -794,12 +803,14 @@ KeccakF1600_cext: ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldr x29,[sp],#80 +.inst 0xd50323bf // autiasp ret .size KeccakF1600_cext,.-KeccakF1600_cext .globl SHA3_absorb_cext .type SHA3_absorb_cext,%function .align 5 SHA3_absorb_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 stp d8,d9,[sp,#16] // per ABI requirement @@ -834,7 +845,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v1.16b,v1.16b,v31.16b beq .Lprocess_block_ce @@ -847,7 +858,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v3.16b,v3.16b,v31.16b beq .Lprocess_block_ce @@ -860,7 +871,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v5.16b,v5.16b,v31.16b beq .Lprocess_block_ce @@ -873,7 +884,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v7.16b,v7.16b,v31.16b beq .Lprocess_block_ce @@ -886,7 +897,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v9.16b,v9.16b,v31.16b beq .Lprocess_block_ce @@ -899,7 +910,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v11.16b,v11.16b,v31.16b beq .Lprocess_block_ce @@ -912,7 +923,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v13.16b,v13.16b,v31.16b beq .Lprocess_block_ce @@ -925,7 +936,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v15.16b,v15.16b,v31.16b beq .Lprocess_block_ce @@ -938,7 +949,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v17.16b,v17.16b,v31.16b beq .Lprocess_block_ce @@ -951,7 +962,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v19.16b,v19.16b,v31.16b beq .Lprocess_block_ce @@ -964,7 +975,7 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v21.16b,v21.16b,v31.16b beq .Lprocess_block_ce @@ -977,13 +988,13 @@ SHA3_absorb_cext: blo .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v23.16b,v23.16b,v31.16b beq .Lprocess_block_ce ldr d31,[x1],#8 // *inp++ #ifdef __AARCH64EB__ - rev v31.16b,v31.16b + rev64 v31.16b,v31.16b #endif eor v24.16b,v24.16b,v31.16b @@ -1015,12 +1026,14 @@ SHA3_absorb_cext: ldp d12,d13,[sp,#48] ldp d14,d15,[sp,#64] ldp x29,x30,[sp],#80 +.inst 0xd50323bf // autiasp ret .size SHA3_absorb_cext,.-SHA3_absorb_cext .globl SHA3_squeeze_cext .type SHA3_squeeze_cext,%function .align 5 SHA3_squeeze_cext: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 mov x9,x0 @@ -1076,6 +1089,7 @@ SHA3_squeeze_cext: .Lsqueeze_done_ce: ldr x29,[sp],#16 +.inst 0xd50323bf // autiasp ret .size SHA3_squeeze_cext,.-SHA3_squeeze_cext .byte 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111,114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102,111,114,32,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/poly1305-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/poly1305-armv8.S index 00b5e2e050a..aaa75c119b5 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/poly1305-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/poly1305-armv8.S @@ -227,6 +227,7 @@ poly1305_blocks_neon: cbz x17,poly1305_blocks .Lblocks_neon: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-80]! add x29,sp,#0 @@ -795,6 +796,7 @@ poly1305_blocks_neon: st1 {v23.s}[0],[x0] .Lno_data_neon: +.inst 0xd50323bf // autiasp ldr x29,[sp],#80 ret .size poly1305_blocks_neon,.-poly1305_blocks_neon diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha256-armv4.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha256-armv4.S index 108014b3c71..f16013af544 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha256-armv4.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha256-armv4.S @@ -1,5 +1,5 @@ #include "arm_asm.h" -@ Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +@ Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @ this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv4.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv4.S index d3858c337af..5f87e812adb 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv4.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv4.S @@ -1,5 +1,5 @@ #include "arm_asm.h" -@ Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. +@ Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. @ @ Licensed under the OpenSSL license (the "License"). You may not use @ this file except in compliance with the License. You can obtain a copy diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv8.S index ab9d8b9fc1b..7a69fe101e2 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/sha512-armv8.S @@ -1,5 +1,5 @@ #include "arm_asm.h" -// Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. +// Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. // // Licensed under the OpenSSL license (the "License"). You may not use // this file except in compliance with the License. You can obtain a copy @@ -78,6 +78,7 @@ sha256_block_data_order: tst w16,#ARMV7_NEON b.ne .Lneon_entry #endif +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-128]! add x29,sp,#0 @@ -1037,6 +1038,7 @@ sha256_block_data_order: ldp x25,x26,[x29,#64] ldp x27,x28,[x29,#80] ldp x29,x30,[sp],#128 +.inst 0xd50323bf // autiasp ret .size sha256_block_data_order,.-sha256_block_data_order diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/vpaes-armv8.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/vpaes-armv8.S index 831d82a15ce..4e870056745 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/vpaes-armv8.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/arm/vpaes-armv8.S @@ -196,6 +196,7 @@ _vpaes_encrypt_core: .type vpaes_encrypt,%function .align 4 vpaes_encrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -205,6 +206,7 @@ vpaes_encrypt: st1 {v0.16b}, [x1] ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_encrypt,.-vpaes_encrypt @@ -427,6 +429,7 @@ _vpaes_decrypt_core: .type vpaes_decrypt,%function .align 4 vpaes_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -436,6 +439,7 @@ vpaes_decrypt: st1 {v0.16b}, [x1] ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_decrypt,.-vpaes_decrypt @@ -599,6 +603,7 @@ _vpaes_key_preheat: .type _vpaes_schedule_core,%function .align 4 _vpaes_schedule_core: +.inst 0xd503233f // paciasp stp x29, x30, [sp,#-16]! add x29,sp,#0 @@ -763,6 +768,7 @@ _vpaes_schedule_core: eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 ldp x29, x30, [sp],#16 +.inst 0xd50323bf // autiasp ret .size _vpaes_schedule_core,.-_vpaes_schedule_core @@ -975,6 +981,7 @@ _vpaes_schedule_mangle: .type vpaes_set_encrypt_key,%function .align 4 vpaes_set_encrypt_key: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -990,6 +997,7 @@ vpaes_set_encrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key @@ -997,6 +1005,7 @@ vpaes_set_encrypt_key: .type vpaes_set_decrypt_key,%function .align 4 vpaes_set_decrypt_key: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1016,6 +1025,7 @@ vpaes_set_decrypt_key: ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key .globl vpaes_cbc_encrypt @@ -1026,6 +1036,7 @@ vpaes_cbc_encrypt: cmp w5, #0 // check direction b.eq vpaes_cbc_decrypt +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 @@ -1048,6 +1059,7 @@ vpaes_cbc_encrypt: st1 {v0.16b}, [x4] // write ivec ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp .Lcbc_abort: ret .size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt @@ -1055,6 +1067,7 @@ vpaes_cbc_encrypt: .type vpaes_cbc_decrypt,%function .align 4 vpaes_cbc_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1096,12 +1109,14 @@ vpaes_cbc_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_cbc_decrypt,.-vpaes_cbc_decrypt .globl vpaes_ecb_encrypt .type vpaes_ecb_encrypt,%function .align 4 vpaes_ecb_encrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1135,6 +1150,7 @@ vpaes_ecb_encrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_ecb_encrypt,.-vpaes_ecb_encrypt @@ -1142,6 +1158,7 @@ vpaes_ecb_encrypt: .type vpaes_ecb_decrypt,%function .align 4 vpaes_ecb_decrypt: +.inst 0xd503233f // paciasp stp x29,x30,[sp,#-16]! add x29,sp,#0 stp d8,d9,[sp,#-16]! // ABI spec says so @@ -1175,5 +1192,6 @@ vpaes_ecb_decrypt: ldp d10,d11,[sp],#16 ldp d8,d9,[sp],#16 ldp x29,x30,[sp],#16 +.inst 0xd50323bf // autiasp ret .size vpaes_ecb_decrypt,.-vpaes_ecb_decrypt diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ecp_nistz256-x86.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ecp_nistz256-x86.S index 6a73aced72e..34fbdfdba9b 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ecp_nistz256-x86.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ecp_nistz256-x86.S @@ -4420,19 +4420,15 @@ ecp_nistz256_point_add: orl 4(%edi),%eax orl 8(%edi),%eax orl 12(%edi),%eax + movl 576(%esp),%ebx + notl %ebx + orl %ebx,%eax + movl 580(%esp),%ebx + notl %ebx + orl %ebx,%eax + orl 584(%esp),%eax .byte 62 jnz .L010add_proceed - movl 576(%esp),%eax - andl 580(%esp),%eax - movl 584(%esp),%ebx - jz .L010add_proceed - testl %ebx,%ebx - jz .L011add_double - movl 616(%esp),%edi - xorl %eax,%eax - movl $24,%ecx -.byte 252,243,171 - jmp .L012add_done .align 16 .L011add_double: movl 620(%esp),%esi diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips.S index 330b29aadfe..318362017b7 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips.S @@ -1,4 +1,6 @@ -.set mips2 +#if !(defined (__mips_isa_rev) && (__mips_isa_rev >= 6)) +.set mips2 +#endif #include "mips_arch.h" #if defined(_MIPS_ARCH_MIPS64R6) @@ -569,6 +571,11 @@ bn_sub_words_internal: move $4,$2 .end bn_sub_words_internal +#if 0 +/* + * The bn_div_3_words entry point is re-used for constant-time interface. + * Implementation is retained as historical reference. + */ .align 5 .globl bn_div_3_words .ent bn_div_3_words @@ -625,6 +632,7 @@ bn_div_3_words_internal: jr $31 move $4,$2 .end bn_div_3_words_internal +#endif .align 5 .globl bn_div_words diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S index b1591ec62b4..7d190f2e460 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/mips/mips64.S @@ -568,6 +568,11 @@ bn_sub_words_internal: move $4,$2 .end bn_sub_words_internal +#if 0 +/* + * The bn_div_3_words entry point is re-used for constant-time interface. + * Implementation is retained as historical reference. + */ .align 5 .globl bn_div_3_words .ent bn_div_3_words @@ -624,6 +629,7 @@ bn_div_3_words_internal: jr $31 move $4,$2 .end bn_div_3_words_internal +#endif .align 5 .globl bn_div_words diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S index dd37bcdac7d..74ca92e2323 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S @@ -1755,7 +1755,7 @@ _aesp8_ctr32_encrypt8x: .long 0x7E082799 .long 0x7E3A2799 addi 4,4,0x30 - b .Lcbc_dec8x_done + b .Lctr32_enc8x_done .align 5 .Lctr32_enc8x_two: @@ -1767,7 +1767,7 @@ _aesp8_ctr32_encrypt8x: .long 0x7DE02799 .long 0x7E082799 addi 4,4,0x20 - b .Lcbc_dec8x_done + b .Lctr32_enc8x_done .align 5 .Lctr32_enc8x_one: diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S index 61715a5ffd2..bfe1fbb1bc9 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/keccak1600p8-ppc.S @@ -288,11 +288,11 @@ KeccakF1600: .byte 0,12,0x04,1,0x80,0,1,0 .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .align 5 -SHA3_absorb: +SHA3_absorb_vsx: stwu 1,-232(1) li 10,39 li 11,55 @@ -590,11 +590,11 @@ SHA3_absorb: .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .align 5 -SHA3_squeeze: +SHA3_squeeze_vsx: mflr 9 subi 4,4,1 addi 8,3,4 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppc.S index 9729764d9bf..b854c089028 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppc.S @@ -104,6 +104,7 @@ .machine "any" +.text diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S index 2a45e5d41a5..59d97374055 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S @@ -107,23 +107,6 @@ OPENSSL_atomic_add: .align 4 OPENSSL_rdtsc_mftb: mftb 3 - mfspr 0,287 - srwi 0,0,0x10 - cmplwi 0,0x1 - bgt .Loop_rdtsc -.Loop_rdtsc_601: - mfrtcu 5 - mfrtcl 3 - mfrtcu 4 - .long 0x7c042840 - bne .Loop_rdtsc_601 - blr -.Loop_rdtsc: - mftbu 5 - mftb 3 - mftbu 4 - .long 0x7c042840 - bne .Loop_rdtsc blr .long 0 .byte 0,12,0x14,0,0,0,0,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc index bb8f7179f38..655f2e41fdd 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/sha.inc @@ -1,5 +1,5 @@ .PATH.S: ${.PARSEDIR} -SHA_SRCS = sha1-ppc.S keccak1600p8-ppc.S +SHA_SRCS = sha1-ppc.S keccak1600p8-ppc.S keccak1600.c SHACPPFLAGS = -DSHA1_ASM -DKECCAK1600_ASM KECCAKNI = yes .if NOT_USING_SHAXXX_FROM_LIBC diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S index f86d44de9fd..6b925c3c8ca 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/aesp8-ppc.S @@ -1785,7 +1785,7 @@ _aesp8_ctr32_encrypt8x: .long 0x7E082799 .long 0x7E3A2799 addi 4,4,0x30 - b .Lcbc_dec8x_done + b .Lctr32_enc8x_done .align 5 .Lctr32_enc8x_two: @@ -1797,7 +1797,7 @@ _aesp8_ctr32_encrypt8x: .long 0x7DE02799 .long 0x7E082799 addi 4,4,0x20 - b .Lcbc_dec8x_done + b .Lctr32_enc8x_done .align 5 .Lctr32_enc8x_one: diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S index a1d60a6e805..fdafbf9c92f 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600-ppc64.S @@ -317,16 +317,16 @@ dword_le_load: .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .section ".opd","aw" .align 3 -SHA3_absorb: -.quad .SHA3_absorb,.TOC.@tocbase,0 +SHA3_absorb_vsx: +.quad .SHA3_absorb_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_absorb: +.SHA3_absorb_vsx: stdu 1,-272(1) mflr 0 std 14,128(1) @@ -546,16 +546,16 @@ SHA3_absorb: .byte 0,12,4,1,0x80,18,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .section ".opd","aw" .align 3 -SHA3_squeeze: -.quad .SHA3_squeeze,.TOC.@tocbase,0 +SHA3_squeeze_vsx: +.quad .SHA3_squeeze_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_squeeze: +.SHA3_squeeze_vsx: stdu 1,-80(1) mflr 0 std 28,48(1) diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S index 752c4d81c20..9638e7a6c96 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/keccak1600p8-ppc.S @@ -288,16 +288,16 @@ KeccakF1600: .byte 0,12,0x04,1,0x80,0,1,0 .long 0 -.globl SHA3_absorb -.type SHA3_absorb,@function +.globl SHA3_absorb_vsx +.type SHA3_absorb_vsx,@function .section ".opd","aw" .align 3 -SHA3_absorb: -.quad .SHA3_absorb,.TOC.@tocbase,0 +SHA3_absorb_vsx: +.quad .SHA3_absorb_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_absorb: +.SHA3_absorb_vsx: stdu 1,-256(1) li 10,63 li 11,79 @@ -595,16 +595,16 @@ SHA3_absorb: .byte 0,12,0x04,1,0x80,0,4,0 .long 0 -.globl SHA3_squeeze -.type SHA3_squeeze,@function +.globl SHA3_squeeze_vsx +.type SHA3_squeeze_vsx,@function .section ".opd","aw" .align 3 -SHA3_squeeze: -.quad .SHA3_squeeze,.TOC.@tocbase,0 +SHA3_squeeze_vsx: +.quad .SHA3_squeeze_vsx,.TOC.@tocbase,0 .previous .align 5 -.SHA3_squeeze: +.SHA3_squeeze_vsx: mflr 9 subi 4,4,1 addi 8,3,4 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S index 13029335dc3..a5b9c5930f5 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppc.S @@ -154,6 +154,7 @@ bn_mul_add_words: .machine "any" +.text diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc index ae4371f8c39..bed20818040 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/sha.inc @@ -1,6 +1,7 @@ .PATH.S: ${.PARSEDIR} -SHA_SRCS = sha1-ppc.S -SHACPPFLAGS = -DSHA1_ASM +SHA_SRCS = sha1-ppc.S keccak1600-ppc64.S keccak1600.c +SHACPPFLAGS = -DSHA1_ASM -DKECCAK1600_ASM +KECCAKNI = yes .if NOT_USING_SHAXXX_FROM_LIBC SHA_SRCS += sha512-ppc.S sha512p8-ppc.S SHA_SRCS += sha256-ppc.S sha256p8-ppc.S diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/des_enc-sparc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/des_enc-sparc.S index ce9a0a57100..a65ab70c745 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/des_enc-sparc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/des_enc-sparc.S @@ -1,4 +1,4 @@ -! Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +! Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. ! ! Licensed under the OpenSSL license (the "License"). You may not use ! this file except in compliance with the License. You can obtain a copy @@ -106,15 +106,15 @@ ! technique. ! ! The macro also loads address sbox 1 to 5 to global 1 to 5, address -! sbox 6 to local6, and addres sbox 8 to out3. +! sbox 6 to local6, and address sbox 8 to out3. ! -! Rotates the halfs 3 left to bring the sbox bits in convenient positions. +! Rotates the halves 3 left to bring the sbox bits in convenient positions. ! ! Loads key first round from address in parameter 5 to out0, out1. ! ! After the original LibDES initial permutation, the resulting left ! is in the variable initially used for right and vice versa. The macro -! implements the possibility to keep the halfs in the original registers. +! implements the possibility to keep the halves in the original registers. ! ! parameter 1 left ! parameter 2 right @@ -318,7 +318,7 @@ sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -572,7 +572,7 @@ sll out1, 28, out1 ! rotate xor out5, local1, out5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -937,7 +937,7 @@ DES_encrypt1: sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -1435,7 +1435,7 @@ DES_encrypt2: add %o7,global1,global1 sub global1,_PIC_DES_SPtrans-.des_and,out2 - ! Set sbox address 1 to 6 and rotate halfs 3 left + ! Set sbox address 1 to 6 and rotate halves 3 left ! Errors caught by destest? Yes. Still? *NO* !sethi %hi(DES_SPtrans), global1 ! address sbox 1 @@ -1991,7 +1991,7 @@ DES_ncbc_encrypt: add %o7,global1,global1 sub global1,_PIC_DES_SPtrans-.des_and,out2 - cmp in5, 0 ! enc + cmp in5, 0 ! enc be .ncbc.dec STPTR in4, [%sp+BIAS+ARG0+4*ARGSZ] @@ -2226,7 +2226,7 @@ DES_ncbc_encrypt: sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/ecp_nistz256-sparcv9.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/ecp_nistz256-sparcv9.S index 45b437644b1..e3b3efd6437 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/ecp_nistz256-sparcv9.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/ecp_nistz256-sparcv9.S @@ -5044,7 +5044,6 @@ ecp_nistz256_point_double_vis3: restore .type ecp_nistz256_point_double_vis3,#function .size ecp_nistz256_point_double_vis3,.-ecp_nistz256_point_double_vis3 -.globl ecp_nistz256_point_add_vis3 .align 32 ecp_nistz256_point_add_vis3: save %sp,-STACK64_FRAME-32*18-32,%sp diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/sparccap.c b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/sparccap.c index 05d330e1f90..a275859d124 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/sparccap.c +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc/sparccap.c @@ -1,5 +1,5 @@ #include "e_os.h" -#include "internal/cryptlib_int.h" +#include "crypto/cryptlib.h" uint32_t OPENSSL_rdtsc(void) { diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/des_enc-sparc.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/des_enc-sparc.S index ce9a0a57100..a65ab70c745 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/des_enc-sparc.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/des_enc-sparc.S @@ -1,4 +1,4 @@ -! Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. +! Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. ! ! Licensed under the OpenSSL license (the "License"). You may not use ! this file except in compliance with the License. You can obtain a copy @@ -106,15 +106,15 @@ ! technique. ! ! The macro also loads address sbox 1 to 5 to global 1 to 5, address -! sbox 6 to local6, and addres sbox 8 to out3. +! sbox 6 to local6, and address sbox 8 to out3. ! -! Rotates the halfs 3 left to bring the sbox bits in convenient positions. +! Rotates the halves 3 left to bring the sbox bits in convenient positions. ! ! Loads key first round from address in parameter 5 to out0, out1. ! ! After the original LibDES initial permutation, the resulting left ! is in the variable initially used for right and vice versa. The macro -! implements the possibility to keep the halfs in the original registers. +! implements the possibility to keep the halves in the original registers. ! ! parameter 1 left ! parameter 2 right @@ -318,7 +318,7 @@ sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -572,7 +572,7 @@ sll out1, 28, out1 ! rotate xor out5, local1, out5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -937,7 +937,7 @@ DES_encrypt1: sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate @@ -1435,7 +1435,7 @@ DES_encrypt2: add %o7,global1,global1 sub global1,_PIC_DES_SPtrans-.des_and,out2 - ! Set sbox address 1 to 6 and rotate halfs 3 left + ! Set sbox address 1 to 6 and rotate halves 3 left ! Errors caught by destest? Yes. Still? *NO* !sethi %hi(DES_SPtrans), global1 ! address sbox 1 @@ -1991,7 +1991,7 @@ DES_ncbc_encrypt: add %o7,global1,global1 sub global1,_PIC_DES_SPtrans-.des_and,out2 - cmp in5, 0 ! enc + cmp in5, 0 ! enc be .ncbc.dec STPTR in4, [%sp+BIAS+ARG0+4*ARGSZ] @@ -2226,7 +2226,7 @@ DES_ncbc_encrypt: sll out1, 28, out1 ! rotate xor in5, local1, in5 ! 1 finished, local1 now sbox 7 - ld [global2+local2], local2 ! 2 + ld [global2+local2], local2 ! 2 srl out0, 24, local1 ! 7 or out1, local0, out1 ! rotate diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ecp_nistz256-sparcv9.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ecp_nistz256-sparcv9.S index 45b437644b1..e3b3efd6437 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ecp_nistz256-sparcv9.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ecp_nistz256-sparcv9.S @@ -5044,7 +5044,6 @@ ecp_nistz256_point_double_vis3: restore .type ecp_nistz256_point_double_vis3,#function .size ecp_nistz256_point_double_vis3,.-ecp_nistz256_point_double_vis3 -.globl ecp_nistz256_point_add_vis3 .align 32 ecp_nistz256_point_add_vis3: save %sp,-STACK64_FRAME-32*18-32,%sp diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-gcm-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-gcm-x86_64.S index 0475078470a..d82d827e973 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-gcm-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-gcm-x86_64.S @@ -4,6 +4,7 @@ .type _aesni_ctr32_ghash_6x,@function .align 32 _aesni_ctr32_ghash_6x: +.cfi_startproc vmovdqu 32(%r11),%xmm2 subq $6,%rdx vpxor %xmm4,%xmm4,%xmm4 @@ -311,6 +312,7 @@ _aesni_ctr32_ghash_6x: vpxor %xmm4,%xmm8,%xmm8 .byte 0xf3,0xc3 +.cfi_endproc .size _aesni_ctr32_ghash_6x,.-_aesni_ctr32_ghash_6x .globl aesni_gcm_decrypt .type aesni_gcm_decrypt,@function @@ -417,6 +419,7 @@ aesni_gcm_decrypt: .type _aesni_ctr32_6x,@function .align 32 _aesni_ctr32_6x: +.cfi_startproc vmovdqu 0-128(%rcx),%xmm4 vmovdqu 32(%r11),%xmm2 leaq -1(%rbp),%r13 @@ -503,6 +506,7 @@ _aesni_ctr32_6x: vpshufb %xmm0,%xmm1,%xmm1 vpxor %xmm4,%xmm14,%xmm14 jmp .Loop_ctr32 +.cfi_endproc .size _aesni_ctr32_6x,.-_aesni_ctr32_6x .globl aesni_gcm_encrypt diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S index a1ccd0ee161..2a2292d8d81 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha1-x86_64.S @@ -6,6 +6,7 @@ .type aesni_cbc_sha1_enc,@function .align 32 aesni_cbc_sha1_enc: +.cfi_startproc movl OPENSSL_ia32cap_P+0(%rip),%r10d movq OPENSSL_ia32cap_P+4(%rip),%r11 @@ -18,6 +19,7 @@ aesni_cbc_sha1_enc: je aesni_cbc_sha1_enc_avx jmp aesni_cbc_sha1_enc_ssse3 .byte 0xf3,0xc3 +.cfi_endproc .size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc .type aesni_cbc_sha1_enc_ssse3,@function .align 32 @@ -2731,6 +2733,7 @@ K_XX_XX: .type aesni_cbc_sha1_enc_shaext,@function .align 32 aesni_cbc_sha1_enc_shaext: +.cfi_startproc movq 8(%rsp),%r10 movdqu (%r9),%xmm8 movd 16(%r9),%xmm9 @@ -3029,4 +3032,5 @@ aesni_cbc_sha1_enc_shaext: movdqu %xmm8,(%r9) movd %xmm9,16(%r9) .byte 0xf3,0xc3 +.cfi_endproc .size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha256-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha256-x86_64.S index 83ec0568220..a1632954ac5 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha256-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-sha256-x86_64.S @@ -6,6 +6,7 @@ .type aesni_cbc_sha256_enc,@function .align 16 aesni_cbc_sha256_enc: +.cfi_startproc leaq OPENSSL_ia32cap_P(%rip),%r11 movl $1,%eax cmpq $0,%rdi @@ -31,6 +32,7 @@ aesni_cbc_sha256_enc: ud2 .Lprobe: .byte 0xf3,0xc3 +.cfi_endproc .size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc .align 64 @@ -2529,7 +2531,15 @@ aesni_cbc_sha256_enc_avx2: vmovdqa %ymm4,0(%rsp) xorl %r14d,%r14d vmovdqa %ymm5,32(%rsp) + + movq 120(%rsp),%rsi +.cfi_def_cfa %rsi,8 leaq -64(%rsp),%rsp + + + + movq %rsi,-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 movl %ebx,%esi vmovdqa %ymm6,0(%rsp) xorl %ecx,%esi @@ -2543,6 +2553,12 @@ aesni_cbc_sha256_enc_avx2: vmovdqu (%r13),%xmm9 vpinsrq $0,%r13,%xmm15,%xmm15 leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 vpalignr $4,%ymm0,%ymm1,%ymm4 addl 0+128(%rsp),%r11d andl %r8d,%r12d @@ -2817,6 +2833,12 @@ aesni_cbc_sha256_enc_avx2: movl %r9d,%r12d vmovdqa %ymm6,32(%rsp) leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 vpalignr $4,%ymm2,%ymm3,%ymm4 addl 0+128(%rsp),%r11d andl %r8d,%r12d @@ -4030,10 +4052,12 @@ aesni_cbc_sha256_enc_avx2: jbe .Loop_avx2 leaq (%rsp),%rbp + +.cfi_escape 0x0f,0x06,0x76,0xf8,0x00,0x06,0x23,0x08 + .Ldone_avx2: - leaq (%rbp),%rsp - movq 64+32(%rsp),%r8 - movq 120(%rsp),%rsi + movq 64+32(%rbp),%r8 + movq 64+56(%rbp),%rsi .cfi_def_cfa %rsi,8 vmovdqu %xmm8,(%r8) vzeroall @@ -4058,6 +4082,7 @@ aesni_cbc_sha256_enc_avx2: .type aesni_cbc_sha256_enc_shaext,@function .align 32 aesni_cbc_sha256_enc_shaext: +.cfi_startproc movq 8(%rsp),%r10 leaq K256+128(%rip),%rax movdqu (%r9),%xmm1 @@ -4407,4 +4432,5 @@ aesni_cbc_sha256_enc_shaext: movdqu %xmm1,(%r9) movdqu %xmm2,16(%r9) .byte 0xf3,0xc3 +.cfi_endproc .size aesni_cbc_sha256_enc_shaext,.-aesni_cbc_sha256_enc_shaext diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-x86_64.S index ad591f4d858..a5e9142dc97 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/aesni-x86_64.S @@ -862,6 +862,7 @@ aesni_ecb_encrypt: .type aesni_ccm64_encrypt_blocks,@function .align 16 aesni_ccm64_encrypt_blocks: +.cfi_startproc movl 240(%rcx),%eax movdqu (%r8),%xmm6 movdqa .Lincrement64(%rip),%xmm9 @@ -920,11 +921,13 @@ aesni_ccm64_encrypt_blocks: pxor %xmm8,%xmm8 pxor %xmm6,%xmm6 .byte 0xf3,0xc3 +.cfi_endproc .size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks .globl aesni_ccm64_decrypt_blocks .type aesni_ccm64_decrypt_blocks,@function .align 16 aesni_ccm64_decrypt_blocks: +.cfi_startproc movl 240(%rcx),%eax movups (%r8),%xmm6 movdqu (%r9),%xmm3 @@ -1017,6 +1020,7 @@ aesni_ccm64_decrypt_blocks: pxor %xmm8,%xmm8 pxor %xmm6,%xmm6 .byte 0xf3,0xc3 +.cfi_endproc .size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks .globl aesni_ctr32_encrypt_blocks .type aesni_ctr32_encrypt_blocks,@function @@ -2791,6 +2795,7 @@ aesni_ocb_encrypt: .type __ocb_encrypt6,@function .align 32 __ocb_encrypt6: +.cfi_startproc pxor %xmm9,%xmm15 movdqu (%rbx,%r12,1),%xmm11 movdqa %xmm10,%xmm12 @@ -2888,11 +2893,13 @@ __ocb_encrypt6: .byte 102,65,15,56,221,246 .byte 102,65,15,56,221,255 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_encrypt6,.-__ocb_encrypt6 .type __ocb_encrypt4,@function .align 32 __ocb_encrypt4: +.cfi_startproc pxor %xmm9,%xmm15 movdqu (%rbx,%r12,1),%xmm11 movdqa %xmm10,%xmm12 @@ -2957,11 +2964,13 @@ __ocb_encrypt4: .byte 102,65,15,56,221,228 .byte 102,65,15,56,221,237 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_encrypt4,.-__ocb_encrypt4 .type __ocb_encrypt1,@function .align 32 __ocb_encrypt1: +.cfi_startproc pxor %xmm15,%xmm7 pxor %xmm9,%xmm7 pxor %xmm2,%xmm8 @@ -2992,6 +3001,7 @@ __ocb_encrypt1: .byte 102,15,56,221,215 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_encrypt1,.-__ocb_encrypt1 .globl aesni_ocb_decrypt @@ -3234,6 +3244,7 @@ aesni_ocb_decrypt: .type __ocb_decrypt6,@function .align 32 __ocb_decrypt6: +.cfi_startproc pxor %xmm9,%xmm15 movdqu (%rbx,%r12,1),%xmm11 movdqa %xmm10,%xmm12 @@ -3325,11 +3336,13 @@ __ocb_decrypt6: .byte 102,65,15,56,223,246 .byte 102,65,15,56,223,255 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_decrypt6,.-__ocb_decrypt6 .type __ocb_decrypt4,@function .align 32 __ocb_decrypt4: +.cfi_startproc pxor %xmm9,%xmm15 movdqu (%rbx,%r12,1),%xmm11 movdqa %xmm10,%xmm12 @@ -3390,11 +3403,13 @@ __ocb_decrypt4: .byte 102,65,15,56,223,228 .byte 102,65,15,56,223,237 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_decrypt4,.-__ocb_decrypt4 .type __ocb_decrypt1,@function .align 32 __ocb_decrypt1: +.cfi_startproc pxor %xmm15,%xmm7 pxor %xmm9,%xmm7 pxor %xmm7,%xmm2 @@ -3424,6 +3439,7 @@ __ocb_decrypt1: .byte 102,15,56,223,215 .byte 0xf3,0xc3 +.cfi_endproc .size __ocb_decrypt1,.-__ocb_decrypt1 .globl aesni_cbc_encrypt .type aesni_cbc_encrypt,@function @@ -4362,7 +4378,6 @@ __aesni_set_encrypt_key: addq $8,%rsp .cfi_adjust_cfa_offset -8 .byte 0xf3,0xc3 -.cfi_endproc .LSEH_end_set_encrypt_key: .align 16 @@ -4433,6 +4448,7 @@ __aesni_set_encrypt_key: shufps $170,%xmm1,%xmm1 xorps %xmm1,%xmm2 .byte 0xf3,0xc3 +.cfi_endproc .size aesni_set_encrypt_key,.-aesni_set_encrypt_key .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key .align 64 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/cmll-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/cmll-x86_64.S index b87349232ed..c3c08756b05 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/cmll-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/cmll-x86_64.S @@ -6,11 +6,13 @@ .type Camellia_EncryptBlock,@function .align 16 Camellia_EncryptBlock: +.cfi_startproc movl $128,%eax subl %edi,%eax movl $3,%edi adcl $0,%edi jmp .Lenc_rounds +.cfi_endproc .size Camellia_EncryptBlock,.-Camellia_EncryptBlock .globl Camellia_EncryptBlock_Rounds @@ -84,6 +86,7 @@ Camellia_EncryptBlock_Rounds: .type _x86_64_Camellia_encrypt,@function .align 16 _x86_64_Camellia_encrypt: +.cfi_startproc xorl 0(%r14),%r9d xorl 4(%r14),%r8d xorl 8(%r14),%r11d @@ -286,6 +289,7 @@ _x86_64_Camellia_encrypt: movl %edx,%r11d .byte 0xf3,0xc3 +.cfi_endproc .size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt @@ -293,11 +297,13 @@ _x86_64_Camellia_encrypt: .type Camellia_DecryptBlock,@function .align 16 Camellia_DecryptBlock: +.cfi_startproc movl $128,%eax subl %edi,%eax movl $3,%edi adcl $0,%edi jmp .Ldec_rounds +.cfi_endproc .size Camellia_DecryptBlock,.-Camellia_DecryptBlock .globl Camellia_DecryptBlock_Rounds @@ -371,6 +377,7 @@ Camellia_DecryptBlock_Rounds: .type _x86_64_Camellia_decrypt,@function .align 16 _x86_64_Camellia_decrypt: +.cfi_startproc xorl 0(%r14),%r9d xorl 4(%r14),%r8d xorl 8(%r14),%r11d @@ -574,6 +581,7 @@ _x86_64_Camellia_decrypt: movl %ebx,%r11d .byte 0xf3,0xc3 +.cfi_endproc .size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt .globl Camellia_Ekeygen .type Camellia_Ekeygen,@function diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/ecp_nistz256-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/ecp_nistz256-x86_64.S index 5f8fb1dea12..fc500675dcc 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/ecp_nistz256-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/ecp_nistz256-x86_64.S @@ -3875,10 +3875,12 @@ ecp_nistz256_ord_sqr_montx: .type ecp_nistz256_to_mont,@function .align 32 ecp_nistz256_to_mont: +.cfi_startproc movl $0x80100,%ecx andl OPENSSL_ia32cap_P+8(%rip),%ecx leaq .LRR(%rip),%rdx jmp .Lmul_mont +.cfi_endproc .size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont @@ -4822,6 +4824,7 @@ ecp_nistz256_from_mont: .type ecp_nistz256_scatter_w5,@function .align 32 ecp_nistz256_scatter_w5: +.cfi_startproc leal -3(%rdx,%rdx,2),%edx movdqa 0(%rsi),%xmm0 shll $5,%edx @@ -4838,6 +4841,7 @@ ecp_nistz256_scatter_w5: movdqa %xmm5,80(%rdi,%rdx,1) .byte 0xf3,0xc3 +.cfi_endproc .size ecp_nistz256_scatter_w5,.-ecp_nistz256_scatter_w5 @@ -4911,6 +4915,7 @@ ecp_nistz256_gather_w5: .type ecp_nistz256_scatter_w7,@function .align 32 ecp_nistz256_scatter_w7: +.cfi_startproc movdqu 0(%rsi),%xmm0 shll $6,%edx movdqu 16(%rsi),%xmm1 @@ -4922,6 +4927,7 @@ ecp_nistz256_scatter_w7: movdqa %xmm3,48(%rdi,%rdx,1) .byte 0xf3,0xc3 +.cfi_endproc .size ecp_nistz256_scatter_w7,.-ecp_nistz256_scatter_w7 @@ -5656,26 +5662,16 @@ ecp_nistz256_point_add: orq %r8,%r12 orq %r9,%r12 -.byte 0x3e - jnz .Ladd_proceedq .byte 102,73,15,126,208 .byte 102,73,15,126,217 - testq %r8,%r8 - jnz .Ladd_proceedq - testq %r9,%r9 - jz .Ladd_doubleq -.byte 102,72,15,126,199 - pxor %xmm0,%xmm0 - movdqu %xmm0,0(%rdi) - movdqu %xmm0,16(%rdi) - movdqu %xmm0,32(%rdi) - movdqu %xmm0,48(%rdi) - movdqu %xmm0,64(%rdi) - movdqu %xmm0,80(%rdi) - jmp .Ladd_doneq + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz .Ladd_proceedq -.align 32 .Ladd_doubleq: .byte 102,72,15,126,206 .byte 102,72,15,126,199 @@ -6775,26 +6771,16 @@ ecp_nistz256_point_addx: orq %r8,%r12 orq %r9,%r12 -.byte 0x3e - jnz .Ladd_proceedx .byte 102,73,15,126,208 .byte 102,73,15,126,217 - testq %r8,%r8 - jnz .Ladd_proceedx - testq %r9,%r9 - jz .Ladd_doublex -.byte 102,72,15,126,199 - pxor %xmm0,%xmm0 - movdqu %xmm0,0(%rdi) - movdqu %xmm0,16(%rdi) - movdqu %xmm0,32(%rdi) - movdqu %xmm0,48(%rdi) - movdqu %xmm0,64(%rdi) - movdqu %xmm0,80(%rdi) - jmp .Ladd_donex + orq %r8,%r12 + orq %r9,%r12 + + +.byte 0x3e + jnz .Ladd_proceedx -.align 32 .Ladd_doublex: .byte 102,72,15,126,206 .byte 102,72,15,126,199 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/keccak1600-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/keccak1600-x86_64.S index 442d2bbb772..0f0e6fbd253 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/keccak1600-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/keccak1600-x86_64.S @@ -4,6 +4,7 @@ .type __KeccakF1600,@function .align 32 __KeccakF1600: +.cfi_startproc movq 60(%rdi),%rax movq 68(%rdi),%rbx movq 76(%rdi),%rcx @@ -256,6 +257,7 @@ __KeccakF1600: leaq -192(%r15),%r15 .byte 0xf3,0xc3 +.cfi_endproc .size __KeccakF1600,.-__KeccakF1600 .type KeccakF1600,@function diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/poly1305-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/poly1305-x86_64.S index fa64774b30b..62cb7329739 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/poly1305-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/poly1305-x86_64.S @@ -13,6 +13,7 @@ .type poly1305_init,@function .align 32 poly1305_init: +.cfi_startproc xorq %rax,%rax movq %rax,0(%rdi) movq %rax,8(%rdi) @@ -48,6 +49,7 @@ poly1305_init: movl $1,%eax .Lno_key: .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_init,.-poly1305_init .type poly1305_blocks,@function @@ -168,6 +170,7 @@ poly1305_blocks: .type poly1305_emit,@function .align 32 poly1305_emit: +.cfi_startproc .Lemit: movq 0(%rdi),%r8 movq 8(%rdi),%r9 @@ -188,10 +191,12 @@ poly1305_emit: movq %rcx,8(%rsi) .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_emit,.-poly1305_emit .type __poly1305_block,@function .align 32 __poly1305_block: +.cfi_startproc mulq %r14 movq %rax,%r9 movq %r11,%rax @@ -231,11 +236,13 @@ __poly1305_block: adcq $0,%rbx adcq $0,%rbp .byte 0xf3,0xc3 +.cfi_endproc .size __poly1305_block,.-__poly1305_block .type __poly1305_init_avx,@function .align 32 __poly1305_init_avx: +.cfi_startproc movq %r11,%r14 movq %r12,%rbx xorq %rbp,%rbp @@ -393,6 +400,7 @@ __poly1305_init_avx: leaq -48-64(%rdi),%rdi .byte 0xf3,0xc3 +.cfi_endproc .size __poly1305_init_avx,.-__poly1305_init_avx .type poly1305_blocks_avx,@function @@ -1233,6 +1241,7 @@ poly1305_blocks_avx: .type poly1305_emit_avx,@function .align 32 poly1305_emit_avx: +.cfi_startproc cmpl $0,20(%rdi) je .Lemit @@ -1283,6 +1292,7 @@ poly1305_emit_avx: movq %rcx,8(%rsi) .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_emit_avx,.-poly1305_emit_avx .type poly1305_blocks_avx2,@function .align 32 @@ -2479,6 +2489,7 @@ poly1305_blocks_avx512: .type poly1305_init_base2_44,@function .align 32 poly1305_init_base2_44: +.cfi_startproc xorq %rax,%rax movq %rax,0(%rdi) movq %rax,8(%rdi) @@ -2512,10 +2523,12 @@ poly1305_init_base2_44: movq %r11,8(%rdx) movl $1,%eax .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_init_base2_44,.-poly1305_init_base2_44 .type poly1305_blocks_vpmadd52,@function .align 32 poly1305_blocks_vpmadd52: +.cfi_startproc shrq $4,%rdx jz .Lno_data_vpmadd52 @@ -2622,10 +2635,12 @@ poly1305_blocks_vpmadd52: .Lno_data_vpmadd52: .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_blocks_vpmadd52,.-poly1305_blocks_vpmadd52 .type poly1305_blocks_vpmadd52_4x,@function .align 32 poly1305_blocks_vpmadd52_4x: +.cfi_startproc shrq $4,%rdx jz .Lno_data_vpmadd52_4x @@ -3050,10 +3065,12 @@ poly1305_blocks_vpmadd52_4x: .Lno_data_vpmadd52_4x: .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_blocks_vpmadd52_4x,.-poly1305_blocks_vpmadd52_4x .type poly1305_blocks_vpmadd52_8x,@function .align 32 poly1305_blocks_vpmadd52_8x: +.cfi_startproc shrq $4,%rdx jz .Lno_data_vpmadd52_8x @@ -3394,10 +3411,12 @@ poly1305_blocks_vpmadd52_8x: .Lno_data_vpmadd52_8x: .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_blocks_vpmadd52_8x,.-poly1305_blocks_vpmadd52_8x .type poly1305_emit_base2_44,@function .align 32 poly1305_emit_base2_44: +.cfi_startproc movq 0(%rdi),%r8 movq 8(%rdi),%r9 movq 16(%rdi),%r10 @@ -3428,6 +3447,7 @@ poly1305_emit_base2_44: movq %rcx,8(%rsi) .byte 0xf3,0xc3 +.cfi_endproc .size poly1305_emit_base2_44,.-poly1305_emit_base2_44 .align 64 .Lconst: @@ -3466,6 +3486,7 @@ poly1305_emit_base2_44: .type xor128_encrypt_n_pad,@function .align 16 xor128_encrypt_n_pad: +.cfi_startproc subq %rdx,%rsi subq %rdx,%rdi movq %rcx,%r10 @@ -3507,12 +3528,14 @@ xor128_encrypt_n_pad: .Ldone_enc: movq %rdx,%rax .byte 0xf3,0xc3 +.cfi_endproc .size xor128_encrypt_n_pad,.-xor128_encrypt_n_pad .globl xor128_decrypt_n_pad .type xor128_decrypt_n_pad,@function .align 16 xor128_decrypt_n_pad: +.cfi_startproc subq %rdx,%rsi subq %rdx,%rdi movq %rcx,%r10 @@ -3558,4 +3581,5 @@ xor128_decrypt_n_pad: .Ldone_dec: movq %rdx,%rax .byte 0xf3,0xc3 +.cfi_endproc .size xor128_decrypt_n_pad,.-xor128_decrypt_n_pad diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rc4-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rc4-x86_64.S index b87b3d28f91..e5044483e79 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rc4-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rc4-x86_64.S @@ -5,11 +5,12 @@ .globl RC4 .type RC4,@function .align 16 -RC4: orq %rsi,%rsi +RC4: +.cfi_startproc + orq %rsi,%rsi jne .Lentry .byte 0xf3,0xc3 .Lentry: -.cfi_startproc pushq %rbx .cfi_adjust_cfa_offset 8 .cfi_offset %rbx,-16 @@ -534,6 +535,7 @@ RC4: orq %rsi,%rsi .type RC4_set_key,@function .align 16 RC4_set_key: +.cfi_startproc leaq 8(%rdi),%rdi leaq (%rdx,%rsi,1),%rdx negq %rsi @@ -600,12 +602,14 @@ RC4_set_key: movl %eax,-8(%rdi) movl %eax,-4(%rdi) .byte 0xf3,0xc3 +.cfi_endproc .size RC4_set_key,.-RC4_set_key .globl RC4_options .type RC4_options,@function .align 16 RC4_options: +.cfi_startproc leaq .Lopts(%rip),%rax movl OPENSSL_ia32cap_P(%rip),%edx btl $20,%edx @@ -618,6 +622,7 @@ RC4_options: addq $12,%rax .Ldone: .byte 0xf3,0xc3 +.cfi_endproc .align 64 .Lopts: .byte 114,99,52,40,56,120,44,105,110,116,41,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rsaz-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rsaz-x86_64.S index 9895a2da248..b9344548ab8 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rsaz-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/rsaz-x86_64.S @@ -30,7 +30,7 @@ rsaz_512_sqr: subq $128+24,%rsp .cfi_adjust_cfa_offset 128+24 .Lsqr_body: - movq %rdx,%rbp +.byte 102,72,15,110,202 movq (%rsi),%rdx movq 8(%rsi),%rax movq %rcx,128(%rsp) @@ -45,6 +45,7 @@ rsaz_512_sqr: movl %r8d,128+8(%rsp) movq %rdx,%rbx + movq %rax,%rbp mulq %rdx movq %rax,%r8 movq 16(%rsi),%rax @@ -83,31 +84,29 @@ rsaz_512_sqr: mulq %rbx addq %rax,%r14 movq %rbx,%rax - movq %rdx,%r15 - adcq $0,%r15 + adcq $0,%rdx + xorq %rcx,%rcx addq %r8,%r8 - movq %r9,%rcx - adcq %r9,%r9 + movq %rdx,%r15 + adcq $0,%rcx mulq %rax - movq %rax,(%rsp) - addq %rdx,%r8 - adcq $0,%r9 + addq %r8,%rdx + adcq $0,%rcx - movq %r8,8(%rsp) - shrq $63,%rcx + movq %rax,(%rsp) + movq %rdx,8(%rsp) - movq 8(%rsi),%r8 movq 16(%rsi),%rax - mulq %r8 + mulq %rbp addq %rax,%r10 movq 24(%rsi),%rax movq %rdx,%rbx adcq $0,%rbx - mulq %r8 + mulq %rbp addq %rax,%r11 movq 32(%rsi),%rax adcq $0,%rdx @@ -115,7 +114,7 @@ rsaz_512_sqr: movq %rdx,%rbx adcq $0,%rbx - mulq %r8 + mulq %rbp addq %rax,%r12 movq 40(%rsi),%rax adcq $0,%rdx @@ -123,7 +122,7 @@ rsaz_512_sqr: movq %rdx,%rbx adcq $0,%rbx - mulq %r8 + mulq %rbp addq %rax,%r13 movq 48(%rsi),%rax adcq $0,%rdx @@ -131,7 +130,7 @@ rsaz_512_sqr: movq %rdx,%rbx adcq $0,%rbx - mulq %r8 + mulq %rbp addq %rax,%r14 movq 56(%rsi),%rax adcq $0,%rdx @@ -139,39 +138,39 @@ rsaz_512_sqr: movq %rdx,%rbx adcq $0,%rbx - mulq %r8 + mulq %rbp addq %rax,%r15 - movq %r8,%rax + movq %rbp,%rax adcq $0,%rdx addq %rbx,%r15 - movq %rdx,%r8 - movq %r10,%rdx - adcq $0,%r8 + adcq $0,%rdx - addq %rdx,%rdx - leaq (%rcx,%r10,2),%r10 - movq %r11,%rbx - adcq %r11,%r11 + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r8 + adcq %r10,%r10 + adcq $0,%rbx mulq %rax + + addq %rcx,%rax + movq 16(%rsi),%rbp addq %rax,%r9 + movq 24(%rsi),%rax adcq %rdx,%r10 - adcq $0,%r11 + adcq $0,%rbx movq %r9,16(%rsp) movq %r10,24(%rsp) - shrq $63,%rbx - movq 16(%rsi),%r9 - movq 24(%rsi),%rax - mulq %r9 + mulq %rbp addq %rax,%r12 movq 32(%rsi),%rax movq %rdx,%rcx adcq $0,%rcx - mulq %r9 + mulq %rbp addq %rax,%r13 movq 40(%rsi),%rax adcq $0,%rdx @@ -179,7 +178,7 @@ rsaz_512_sqr: movq %rdx,%rcx adcq $0,%rcx - mulq %r9 + mulq %rbp addq %rax,%r14 movq 48(%rsi),%rax adcq $0,%rdx @@ -187,9 +186,7 @@ rsaz_512_sqr: movq %rdx,%rcx adcq $0,%rcx - mulq %r9 - movq %r12,%r10 - leaq (%rbx,%r12,2),%r12 + mulq %rbp addq %rax,%r15 movq 56(%rsi),%rax adcq $0,%rdx @@ -197,36 +194,40 @@ rsaz_512_sqr: movq %rdx,%rcx adcq $0,%rcx - mulq %r9 - shrq $63,%r10 + mulq %rbp addq %rax,%r8 - movq %r9,%rax + movq %rbp,%rax adcq $0,%rdx addq %rcx,%r8 - movq %rdx,%r9 - adcq $0,%r9 + adcq $0,%rdx - movq %r13,%rcx - leaq (%r10,%r13,2),%r13 + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r9 + adcq %r12,%r12 + adcq $0,%rcx mulq %rax + + addq %rbx,%rax + movq 24(%rsi),%r10 addq %rax,%r11 + movq 32(%rsi),%rax adcq %rdx,%r12 - adcq $0,%r13 + adcq $0,%rcx movq %r11,32(%rsp) movq %r12,40(%rsp) - shrq $63,%rcx - movq 24(%rsi),%r10 - movq 32(%rsi),%rax + movq %rax,%r11 mulq %r10 addq %rax,%r14 movq 40(%rsi),%rax movq %rdx,%rbx adcq $0,%rbx + movq %rax,%r12 mulq %r10 addq %rax,%r15 movq 48(%rsi),%rax @@ -235,9 +236,8 @@ rsaz_512_sqr: movq %rdx,%rbx adcq $0,%rbx + movq %rax,%rbp mulq %r10 - movq %r14,%r12 - leaq (%rcx,%r14,2),%r14 addq %rax,%r8 movq 56(%rsi),%rax adcq $0,%rdx @@ -246,32 +246,33 @@ rsaz_512_sqr: adcq $0,%rbx mulq %r10 - shrq $63,%r12 addq %rax,%r9 movq %r10,%rax adcq $0,%rdx addq %rbx,%r9 - movq %rdx,%r10 - adcq $0,%r10 + adcq $0,%rdx - movq %r15,%rbx - leaq (%r12,%r15,2),%r15 + xorq %rbx,%rbx + addq %r13,%r13 + movq %rdx,%r10 + adcq %r14,%r14 + adcq $0,%rbx mulq %rax + + addq %rcx,%rax addq %rax,%r13 + movq %r12,%rax adcq %rdx,%r14 - adcq $0,%r15 + adcq $0,%rbx movq %r13,48(%rsp) movq %r14,56(%rsp) - shrq $63,%rbx - movq 32(%rsi),%r11 - movq 40(%rsi),%rax mulq %r11 addq %rax,%r8 - movq 48(%rsi),%rax + movq %rbp,%rax movq %rdx,%rcx adcq $0,%rcx @@ -279,97 +280,99 @@ rsaz_512_sqr: addq %rax,%r9 movq 56(%rsi),%rax adcq $0,%rdx - movq %r8,%r12 - leaq (%rbx,%r8,2),%r8 addq %rcx,%r9 movq %rdx,%rcx adcq $0,%rcx + movq %rax,%r14 mulq %r11 - shrq $63,%r12 addq %rax,%r10 movq %r11,%rax adcq $0,%rdx addq %rcx,%r10 - movq %rdx,%r11 - adcq $0,%r11 + adcq $0,%rdx - movq %r9,%rcx - leaq (%r12,%r9,2),%r9 + xorq %rcx,%rcx + addq %r15,%r15 + movq %rdx,%r11 + adcq %r8,%r8 + adcq $0,%rcx mulq %rax + + addq %rbx,%rax addq %rax,%r15 + movq %rbp,%rax adcq %rdx,%r8 - adcq $0,%r9 + adcq $0,%rcx movq %r15,64(%rsp) movq %r8,72(%rsp) - shrq $63,%rcx - movq 40(%rsi),%r12 - movq 48(%rsi),%rax mulq %r12 addq %rax,%r10 - movq 56(%rsi),%rax + movq %r14,%rax movq %rdx,%rbx adcq $0,%rbx mulq %r12 addq %rax,%r11 movq %r12,%rax - movq %r10,%r15 - leaq (%rcx,%r10,2),%r10 adcq $0,%rdx - shrq $63,%r15 addq %rbx,%r11 - movq %rdx,%r12 - adcq $0,%r12 + adcq $0,%rdx - movq %r11,%rbx - leaq (%r15,%r11,2),%r11 + xorq %rbx,%rbx + addq %r9,%r9 + movq %rdx,%r12 + adcq %r10,%r10 + adcq $0,%rbx mulq %rax + + addq %rcx,%rax addq %rax,%r9 + movq %r14,%rax adcq %rdx,%r10 - adcq $0,%r11 + adcq $0,%rbx movq %r9,80(%rsp) movq %r10,88(%rsp) - movq 48(%rsi),%r13 - movq 56(%rsi),%rax - mulq %r13 + mulq %rbp addq %rax,%r12 - movq %r13,%rax - movq %rdx,%r13 - adcq $0,%r13 + movq %rbp,%rax + adcq $0,%rdx - xorq %r14,%r14 - shlq $1,%rbx + xorq %rcx,%rcx + addq %r11,%r11 + movq %rdx,%r13 adcq %r12,%r12 - adcq %r13,%r13 - adcq %r14,%r14 + adcq $0,%rcx mulq %rax + + addq %rbx,%rax addq %rax,%r11 + movq %r14,%rax adcq %rdx,%r12 - adcq $0,%r13 + adcq $0,%rcx movq %r11,96(%rsp) movq %r12,104(%rsp) - movq 56(%rsi),%rax - mulq %rax - addq %rax,%r13 - adcq $0,%rdx + xorq %rbx,%rbx + addq %r13,%r13 + adcq $0,%rbx - addq %rdx,%r14 + mulq %rax - movq %r13,112(%rsp) - movq %r14,120(%rsp) + addq %rcx,%rax + addq %r13,%rax + adcq %rbx,%rdx movq (%rsp),%r8 movq 8(%rsp),%r9 @@ -379,6 +382,10 @@ rsaz_512_sqr: movq 40(%rsp),%r13 movq 48(%rsp),%r14 movq 56(%rsp),%r15 +.byte 102,72,15,126,205 + + movq %rax,112(%rsp) + movq %rdx,120(%rsp) call __rsaz_512_reduce @@ -407,9 +414,9 @@ rsaz_512_sqr: .Loop_sqrx: movl %r8d,128+8(%rsp) .byte 102,72,15,110,199 -.byte 102,72,15,110,205 mulxq %rax,%r8,%r9 + movq %rax,%rbx mulxq 16(%rsi),%rcx,%r10 xorq %rbp,%rbp @@ -417,40 +424,39 @@ rsaz_512_sqr: mulxq 24(%rsi),%rax,%r11 adcxq %rcx,%r9 - mulxq 32(%rsi),%rcx,%r12 +.byte 0xc4,0x62,0xf3,0xf6,0xa6,0x20,0x00,0x00,0x00 adcxq %rax,%r10 - mulxq 40(%rsi),%rax,%r13 +.byte 0xc4,0x62,0xfb,0xf6,0xae,0x28,0x00,0x00,0x00 adcxq %rcx,%r11 -.byte 0xc4,0x62,0xf3,0xf6,0xb6,0x30,0x00,0x00,0x00 + mulxq 48(%rsi),%rcx,%r14 adcxq %rax,%r12 adcxq %rcx,%r13 -.byte 0xc4,0x62,0xfb,0xf6,0xbe,0x38,0x00,0x00,0x00 + mulxq 56(%rsi),%rax,%r15 adcxq %rax,%r14 adcxq %rbp,%r15 - movq %r9,%rcx - shldq $1,%r8,%r9 - shlq $1,%r8 - - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx - adcxq %rdx,%r8 - movq 8(%rsi),%rdx - adcxq %rbp,%r9 + mulxq %rdx,%rax,%rdi + movq %rbx,%rdx + xorq %rcx,%rcx + adoxq %r8,%r8 + adcxq %rdi,%r8 + adoxq %rbp,%rcx + adcxq %rbp,%rcx movq %rax,(%rsp) movq %r8,8(%rsp) - mulxq 16(%rsi),%rax,%rbx +.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x10,0x00,0x00,0x00 adoxq %rax,%r10 adcxq %rbx,%r11 -.byte 0xc4,0x62,0xc3,0xf6,0x86,0x18,0x00,0x00,0x00 + mulxq 24(%rsi),%rdi,%r8 adoxq %rdi,%r11 +.byte 0x66 adcxq %r8,%r12 mulxq 32(%rsi),%rax,%rbx @@ -468,24 +474,25 @@ rsaz_512_sqr: .byte 0xc4,0x62,0xc3,0xf6,0x86,0x38,0x00,0x00,0x00 adoxq %rdi,%r15 adcxq %rbp,%r8 + mulxq %rdx,%rax,%rdi adoxq %rbp,%r8 +.byte 0x48,0x8b,0x96,0x10,0x00,0x00,0x00 - movq %r11,%rbx - shldq $1,%r10,%r11 - shldq $1,%rcx,%r10 + xorq %rbx,%rbx + adoxq %r9,%r9 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rcx - movq 16(%rsi),%rdx + adcxq %rcx,%rax + adoxq %r10,%r10 adcxq %rax,%r9 - adcxq %rcx,%r10 - adcxq %rbp,%r11 + adoxq %rbp,%rbx + adcxq %rdi,%r10 + adcxq %rbp,%rbx movq %r9,16(%rsp) .byte 0x4c,0x89,0x94,0x24,0x18,0x00,0x00,0x00 -.byte 0xc4,0x62,0xc3,0xf6,0x8e,0x18,0x00,0x00,0x00 + mulxq 24(%rsi),%rdi,%r9 adoxq %rdi,%r12 adcxq %r9,%r13 @@ -493,7 +500,7 @@ rsaz_512_sqr: adoxq %rax,%r13 adcxq %rcx,%r14 - mulxq 40(%rsi),%rdi,%r9 +.byte 0xc4,0x62,0xc3,0xf6,0x8e,0x28,0x00,0x00,0x00 adoxq %rdi,%r14 adcxq %r9,%r15 @@ -501,27 +508,28 @@ rsaz_512_sqr: adoxq %rax,%r15 adcxq %rcx,%r8 -.byte 0xc4,0x62,0xc3,0xf6,0x8e,0x38,0x00,0x00,0x00 + mulxq 56(%rsi),%rdi,%r9 adoxq %rdi,%r8 adcxq %rbp,%r9 + mulxq %rdx,%rax,%rdi adoxq %rbp,%r9 + movq 24(%rsi),%rdx - movq %r13,%rcx - shldq $1,%r12,%r13 - shldq $1,%rbx,%r12 + xorq %rcx,%rcx + adoxq %r11,%r11 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx + adcxq %rbx,%rax + adoxq %r12,%r12 adcxq %rax,%r11 - adcxq %rdx,%r12 - movq 24(%rsi),%rdx - adcxq %rbp,%r13 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx movq %r11,32(%rsp) -.byte 0x4c,0x89,0xa4,0x24,0x28,0x00,0x00,0x00 + movq %r12,40(%rsp) -.byte 0xc4,0xe2,0xfb,0xf6,0x9e,0x20,0x00,0x00,0x00 + mulxq 32(%rsi),%rax,%rbx adoxq %rax,%r14 adcxq %rbx,%r15 @@ -536,25 +544,25 @@ rsaz_512_sqr: mulxq 56(%rsi),%rdi,%r10 adoxq %rdi,%r9 adcxq %rbp,%r10 + mulxq %rdx,%rax,%rdi adoxq %rbp,%r10 + movq 32(%rsi),%rdx -.byte 0x66 - movq %r15,%rbx - shldq $1,%r14,%r15 - shldq $1,%rcx,%r14 + xorq %rbx,%rbx + adoxq %r13,%r13 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx + adcxq %rcx,%rax + adoxq %r14,%r14 adcxq %rax,%r13 - adcxq %rdx,%r14 - movq 32(%rsi),%rdx - adcxq %rbp,%r15 + adoxq %rbp,%rbx + adcxq %rdi,%r14 + adcxq %rbp,%rbx movq %r13,48(%rsp) movq %r14,56(%rsp) -.byte 0xc4,0x62,0xc3,0xf6,0x9e,0x28,0x00,0x00,0x00 + mulxq 40(%rsi),%rdi,%r11 adoxq %rdi,%r8 adcxq %r11,%r9 @@ -565,18 +573,19 @@ rsaz_512_sqr: mulxq 56(%rsi),%rdi,%r11 adoxq %rdi,%r10 adcxq %rbp,%r11 + mulxq %rdx,%rax,%rdi + movq 40(%rsi),%rdx adoxq %rbp,%r11 - movq %r9,%rcx - shldq $1,%r8,%r9 - shldq $1,%rbx,%r8 + xorq %rcx,%rcx + adoxq %r15,%r15 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx + adcxq %rbx,%rax + adoxq %r8,%r8 adcxq %rax,%r15 - adcxq %rdx,%r8 - movq 40(%rsi),%rdx - adcxq %rbp,%r9 + adoxq %rbp,%rcx + adcxq %rdi,%r8 + adcxq %rbp,%rcx movq %r15,64(%rsp) movq %r8,72(%rsp) @@ -589,18 +598,19 @@ rsaz_512_sqr: .byte 0xc4,0x62,0xc3,0xf6,0xa6,0x38,0x00,0x00,0x00 adoxq %rdi,%r11 adcxq %rbp,%r12 + mulxq %rdx,%rax,%rdi adoxq %rbp,%r12 + movq 48(%rsi),%rdx - movq %r11,%rbx - shldq $1,%r10,%r11 - shldq $1,%rcx,%r10 + xorq %rbx,%rbx + adoxq %r9,%r9 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx + adcxq %rcx,%rax + adoxq %r10,%r10 adcxq %rax,%r9 - adcxq %rdx,%r10 - movq 48(%rsi),%rdx - adcxq %rbp,%r11 + adcxq %rdi,%r10 + adoxq %rbp,%rbx + adcxq %rbp,%rbx movq %r9,80(%rsp) movq %r10,88(%rsp) @@ -610,31 +620,31 @@ rsaz_512_sqr: adoxq %rax,%r12 adoxq %rbp,%r13 - xorq %r14,%r14 - shldq $1,%r13,%r14 - shldq $1,%r12,%r13 - shldq $1,%rbx,%r12 + mulxq %rdx,%rax,%rdi + xorq %rcx,%rcx + movq 56(%rsi),%rdx + adoxq %r11,%r11 - xorl %ebp,%ebp - mulxq %rdx,%rax,%rdx + adcxq %rbx,%rax + adoxq %r12,%r12 adcxq %rax,%r11 - adcxq %rdx,%r12 - movq 56(%rsi),%rdx - adcxq %rbp,%r13 + adoxq %rbp,%rcx + adcxq %rdi,%r12 + adcxq %rbp,%rcx .byte 0x4c,0x89,0x9c,0x24,0x60,0x00,0x00,0x00 .byte 0x4c,0x89,0xa4,0x24,0x68,0x00,0x00,0x00 mulxq %rdx,%rax,%rdx - adoxq %rax,%r13 - adoxq %rbp,%rdx + xorq %rbx,%rbx + adoxq %r13,%r13 -.byte 0x66 - addq %rdx,%r14 + adcxq %rcx,%rax + adoxq %rbp,%rbx + adcxq %r13,%rax + adcxq %rdx,%rbx - movq %r13,112(%rsp) - movq %r14,120(%rsp) .byte 102,72,15,126,199 .byte 102,72,15,126,205 @@ -648,6 +658,9 @@ rsaz_512_sqr: movq 48(%rsp),%r14 movq 56(%rsp),%r15 + movq %rax,112(%rsp) + movq %rbx,120(%rsp) + call __rsaz_512_reducex addq 64(%rsp),%r8 @@ -1441,6 +1454,7 @@ rsaz_512_mul_by_one: .type __rsaz_512_reduce,@function .align 32 __rsaz_512_reduce: +.cfi_startproc movq %r8,%rbx imulq 128+8(%rsp),%rbx movq 0(%rbp),%rax @@ -1520,10 +1534,12 @@ __rsaz_512_reduce: jne .Lreduction_loop .byte 0xf3,0xc3 +.cfi_endproc .size __rsaz_512_reduce,.-__rsaz_512_reduce .type __rsaz_512_reducex,@function .align 32 __rsaz_512_reducex: +.cfi_startproc imulq %r8,%rdx xorq %rsi,%rsi @@ -1576,10 +1592,12 @@ __rsaz_512_reducex: jne .Lreduction_loopx .byte 0xf3,0xc3 +.cfi_endproc .size __rsaz_512_reducex,.-__rsaz_512_reducex .type __rsaz_512_subtract,@function .align 32 __rsaz_512_subtract: +.cfi_startproc movq %r8,(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) @@ -1633,10 +1651,12 @@ __rsaz_512_subtract: movq %r15,56(%rdi) .byte 0xf3,0xc3 +.cfi_endproc .size __rsaz_512_subtract,.-__rsaz_512_subtract .type __rsaz_512_mul,@function .align 32 __rsaz_512_mul: +.cfi_startproc leaq 8(%rsp),%rdi movq (%rsi),%rax @@ -1775,10 +1795,12 @@ __rsaz_512_mul: movq %r15,56(%rdi) .byte 0xf3,0xc3 +.cfi_endproc .size __rsaz_512_mul,.-__rsaz_512_mul .type __rsaz_512_mulx,@function .align 32 __rsaz_512_mulx: +.cfi_startproc mulxq (%rsi),%rbx,%r8 movq $-6,%rcx @@ -1895,11 +1917,13 @@ __rsaz_512_mulx: movq %r15,8+64+56(%rsp) .byte 0xf3,0xc3 +.cfi_endproc .size __rsaz_512_mulx,.-__rsaz_512_mulx .globl rsaz_512_scatter4 .type rsaz_512_scatter4,@function .align 16 rsaz_512_scatter4: +.cfi_startproc leaq (%rdi,%rdx,8),%rdi movl $8,%r9d jmp .Loop_scatter @@ -1912,12 +1936,14 @@ rsaz_512_scatter4: decl %r9d jnz .Loop_scatter .byte 0xf3,0xc3 +.cfi_endproc .size rsaz_512_scatter4,.-rsaz_512_scatter4 .globl rsaz_512_gather4 .type rsaz_512_gather4,@function .align 16 rsaz_512_gather4: +.cfi_startproc movd %edx,%xmm8 movdqa .Linc+16(%rip),%xmm1 movdqa .Linc(%rip),%xmm0 @@ -1981,6 +2007,7 @@ rsaz_512_gather4: jnz .Loop_gather .byte 0xf3,0xc3 .LSEH_end_rsaz_512_gather4: +.cfi_endproc .size rsaz_512_gather4,.-rsaz_512_gather4 .align 64 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S index 4f03c283062..30d2c8897ed 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha1-x86_64.S @@ -1422,8 +1422,8 @@ _shaext_shortcut: pshufd $27,%xmm1,%xmm1 movdqu %xmm0,(%rdi) movd %xmm1,16(%rdi) -.cfi_endproc .byte 0xf3,0xc3 +.cfi_endproc .size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext .type sha1_block_data_order_ssse3,@function .align 16 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha512-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha512-x86_64.S index bf20cad6aca..f02463aa4bc 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha512-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/sha512-x86_64.S @@ -1776,6 +1776,7 @@ K256: .align 64 sha256_block_data_order_shaext: _shaext_shortcut: +.cfi_startproc leaq K256+128(%rip),%rcx movdqu (%rdi),%xmm1 movdqu 16(%rdi),%xmm2 @@ -1978,6 +1979,7 @@ _shaext_shortcut: movdqu %xmm1,(%rdi) movdqu %xmm2,16(%rdi) .byte 0xf3,0xc3 +.cfi_endproc .size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext .type sha256_block_data_order_ssse3,@function .align 64 @@ -4239,7 +4241,15 @@ sha256_block_data_order_avx2: vmovdqa %ymm4,0(%rsp) xorl %r14d,%r14d vmovdqa %ymm5,32(%rsp) + + movq 88(%rsp),%rdi +.cfi_def_cfa %rdi,8 leaq -64(%rsp),%rsp + + + + movq %rdi,-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 movl %ebx,%edi vmovdqa %ymm6,0(%rsp) xorl %ecx,%edi @@ -4251,6 +4261,12 @@ sha256_block_data_order_avx2: .align 16 .Lavx2_00_47: leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 vpalignr $4,%ymm0,%ymm1,%ymm4 addl 0+128(%rsp),%r11d andl %r8d,%r12d @@ -4506,6 +4522,12 @@ sha256_block_data_order_avx2: movl %r9d,%r12d vmovdqa %ymm6,32(%rsp) leaq -64(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x38,0x06,0x23,0x08 + + pushq 64-8(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x00,0x06,0x23,0x08 + leaq 8(%rsp),%rsp +.cfi_escape 0x0f,0x05,0x77,0x78,0x06,0x23,0x08 vpalignr $4,%ymm2,%ymm3,%ymm4 addl 0+128(%rsp),%r11d andl %r8d,%r12d @@ -5381,6 +5403,8 @@ sha256_block_data_order_avx2: leaq 448(%rsp),%rsp +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08 + addl 0(%rdi),%eax addl 4(%rdi),%ebx addl 8(%rdi),%ecx @@ -5406,9 +5430,11 @@ sha256_block_data_order_avx2: jbe .Loop_avx2 leaq (%rsp),%rbp + +.cfi_escape 0x0f,0x06,0x76,0xd8,0x00,0x06,0x23,0x08 + .Ldone_avx2: - leaq (%rbp),%rsp - movq 88(%rsp),%rsi + movq 88(%rbp),%rsi .cfi_def_cfa %rsi,8 vzeroupper movq -48(%rsi),%r15 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x25519-x86_64.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x25519-x86_64.S index 56192d067f9..13981d7ff52 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x25519-x86_64.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x25519-x86_64.S @@ -401,12 +401,14 @@ x25519_fe51_mul121666: .type x25519_fe64_eligible,@function .align 32 x25519_fe64_eligible: +.cfi_startproc movl OPENSSL_ia32cap_P+8(%rip),%ecx xorl %eax,%eax andl $0x80100,%ecx cmpl $0x80100,%ecx cmovel %ecx,%eax .byte 0xf3,0xc3 +.cfi_endproc .size x25519_fe64_eligible,.-x25519_fe64_eligible .globl x25519_fe64_mul @@ -649,6 +651,7 @@ x25519_fe64_sqr: .align 32 x25519_fe64_mul121666: .Lfe64_mul121666_body: +.cfi_startproc movl $121666,%edx mulxq 0(%rsi),%r8,%rcx mulxq 8(%rsi),%r9,%rax @@ -677,6 +680,7 @@ x25519_fe64_mul121666: .Lfe64_mul121666_epilogue: .byte 0xf3,0xc3 +.cfi_endproc .size x25519_fe64_mul121666,.-x25519_fe64_mul121666 .globl x25519_fe64_add @@ -684,6 +688,7 @@ x25519_fe64_mul121666: .align 32 x25519_fe64_add: .Lfe64_add_body: +.cfi_startproc movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 @@ -712,6 +717,7 @@ x25519_fe64_add: .Lfe64_add_epilogue: .byte 0xf3,0xc3 +.cfi_endproc .size x25519_fe64_add,.-x25519_fe64_add .globl x25519_fe64_sub @@ -719,6 +725,7 @@ x25519_fe64_add: .align 32 x25519_fe64_sub: .Lfe64_sub_body: +.cfi_startproc movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 @@ -747,6 +754,7 @@ x25519_fe64_sub: .Lfe64_sub_epilogue: .byte 0xf3,0xc3 +.cfi_endproc .size x25519_fe64_sub,.-x25519_fe64_sub .globl x25519_fe64_tobytes @@ -754,6 +762,7 @@ x25519_fe64_sub: .align 32 x25519_fe64_tobytes: .Lfe64_to_body: +.cfi_startproc movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 @@ -789,5 +798,6 @@ x25519_fe64_tobytes: .Lfe64_to_epilogue: .byte 0xf3,0xc3 +.cfi_endproc .size x25519_fe64_tobytes,.-x25519_fe64_tobytes .byte 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101,115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64-mont5.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64-mont5.S index a77be5f6425..84c23c6e30c 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64-mont5.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64-mont5.S @@ -551,6 +551,7 @@ bn_mul4x_mont_gather5: .type mul4x_internal,@function .align 32 mul4x_internal: +.cfi_startproc shlq $5,%r9 movd 8(%rax),%xmm5 leaq .Linc(%rip),%rax @@ -1072,6 +1073,7 @@ mul4x_internal: movq 16(%rbp),%r14 movq 24(%rbp),%r15 jmp .Lsqr4x_sub_entry +.cfi_endproc .size mul4x_internal,.-mul4x_internal .globl bn_power5 .type bn_power5,@function @@ -1214,6 +1216,7 @@ bn_power5: .align 32 bn_sqr8x_internal: __bn_sqr8x_internal: +.cfi_startproc @@ -1988,10 +1991,12 @@ __bn_sqr8x_reduction: cmpq %rdx,%rdi jb .L8x_reduction_loop .byte 0xf3,0xc3 +.cfi_endproc .size bn_sqr8x_internal,.-bn_sqr8x_internal .type __bn_post4x_internal,@function .align 32 __bn_post4x_internal: +.cfi_startproc movq 0(%rbp),%r12 leaq (%rdi,%r9,1),%rbx movq %r9,%rcx @@ -2042,15 +2047,18 @@ __bn_post4x_internal: movq %r9,%r10 negq %r9 .byte 0xf3,0xc3 +.cfi_endproc .size __bn_post4x_internal,.-__bn_post4x_internal .globl bn_from_montgomery .type bn_from_montgomery,@function .align 32 bn_from_montgomery: +.cfi_startproc testl $7,%r9d jz bn_from_mont8x xorl %eax,%eax .byte 0xf3,0xc3 +.cfi_endproc .size bn_from_montgomery,.-bn_from_montgomery .type bn_from_mont8x,@function @@ -2334,6 +2342,7 @@ bn_mulx4x_mont_gather5: .type mulx4x_internal,@function .align 32 mulx4x_internal: +.cfi_startproc movq %r9,8(%rsp) movq %r9,%r10 negq %r9 @@ -2752,6 +2761,7 @@ mulx4x_internal: movq 16(%rbp),%r14 movq 24(%rbp),%r15 jmp .Lsqrx4x_sub_entry +.cfi_endproc .size mulx4x_internal,.-mulx4x_internal .type bn_powerx5,@function .align 32 @@ -3510,6 +3520,7 @@ __bn_sqrx8x_reduction: .size bn_sqrx8x_internal,.-bn_sqrx8x_internal .align 32 __bn_postx4x_internal: +.cfi_startproc movq 0(%rbp),%r12 movq %rcx,%r10 movq %rcx,%r9 @@ -3557,11 +3568,13 @@ __bn_postx4x_internal: negq %r9 .byte 0xf3,0xc3 +.cfi_endproc .size __bn_postx4x_internal,.-__bn_postx4x_internal .globl bn_get_bits5 .type bn_get_bits5,@function .align 16 bn_get_bits5: +.cfi_startproc leaq 0(%rdi),%r10 leaq 1(%rdi),%r11 movl %esi,%ecx @@ -3575,12 +3588,14 @@ bn_get_bits5: shrl %cl,%eax andl $31,%eax .byte 0xf3,0xc3 +.cfi_endproc .size bn_get_bits5,.-bn_get_bits5 .globl bn_scatter5 .type bn_scatter5,@function .align 16 bn_scatter5: +.cfi_startproc cmpl $0,%esi jz .Lscatter_epilogue leaq (%rdx,%rcx,8),%rdx @@ -3593,6 +3608,7 @@ bn_scatter5: jnz .Lscatter .Lscatter_epilogue: .byte 0xf3,0xc3 +.cfi_endproc .size bn_scatter5,.-bn_scatter5 .globl bn_gather5 @@ -3600,6 +3616,7 @@ bn_scatter5: .align 32 bn_gather5: .LSEH_begin_bn_gather5: +.cfi_startproc .byte 0x4c,0x8d,0x14,0x24 .byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 @@ -3757,6 +3774,7 @@ bn_gather5: leaq (%r10),%rsp .byte 0xf3,0xc3 .LSEH_end_bn_gather5: +.cfi_endproc .size bn_gather5,.-bn_gather5 .align 64 .Linc: diff --git a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S index d5f12de930b..092e9550971 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S +++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/x86_64/x86_64cpuid.S @@ -13,6 +13,7 @@ .type OPENSSL_atomic_add,@function .align 16 OPENSSL_atomic_add: +.cfi_startproc movl (%rdi),%eax .Lspin: leaq (%rsi,%rax,1),%r8 .byte 0xf0 @@ -21,16 +22,19 @@ OPENSSL_atomic_add: movl %r8d,%eax .byte 0x48,0x98 .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_atomic_add,.-OPENSSL_atomic_add .globl OPENSSL_rdtsc .type OPENSSL_rdtsc,@function .align 16 OPENSSL_rdtsc: +.cfi_startproc rdtsc shlq $32,%rdx orq %rdx,%rax .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_rdtsc,.-OPENSSL_rdtsc .globl OPENSSL_ia32_cpuid @@ -206,6 +210,7 @@ OPENSSL_ia32_cpuid: .type OPENSSL_cleanse,@function .align 16 OPENSSL_cleanse: +.cfi_startproc xorq %rax,%rax cmpq $15,%rsi jae .Lot @@ -235,12 +240,14 @@ OPENSSL_cleanse: cmpq $0,%rsi jne .Little .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_cleanse,.-OPENSSL_cleanse .globl CRYPTO_memcmp .type CRYPTO_memcmp,@function .align 16 CRYPTO_memcmp: +.cfi_startproc xorq %rax,%rax xorq %r10,%r10 cmpq $0,%rdx @@ -269,11 +276,13 @@ CRYPTO_memcmp: shrq $63,%rax .Lno_data: .byte 0xf3,0xc3 +.cfi_endproc .size CRYPTO_memcmp,.-CRYPTO_memcmp .globl OPENSSL_wipe_cpu .type OPENSSL_wipe_cpu,@function .align 16 OPENSSL_wipe_cpu: +.cfi_startproc pxor %xmm0,%xmm0 pxor %xmm1,%xmm1 pxor %xmm2,%xmm2 @@ -300,11 +309,13 @@ OPENSSL_wipe_cpu: xorq %r11,%r11 leaq 8(%rsp),%rax .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu .globl OPENSSL_instrument_bus .type OPENSSL_instrument_bus,@function .align 16 OPENSSL_instrument_bus: +.cfi_startproc movq %rdi,%r10 movq %rsi,%rcx movq %rsi,%r11 @@ -331,12 +342,14 @@ OPENSSL_instrument_bus: movq %r11,%rax .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus .globl OPENSSL_instrument_bus2 .type OPENSSL_instrument_bus2,@function .align 16 OPENSSL_instrument_bus2: +.cfi_startproc movq %rdi,%r10 movq %rsi,%rcx movq %rdx,%r11 @@ -379,11 +392,13 @@ OPENSSL_instrument_bus2: movq 8(%rsp),%rax subq %rcx,%rax .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 .globl OPENSSL_ia32_rdrand_bytes .type OPENSSL_ia32_rdrand_bytes,@function .align 16 OPENSSL_ia32_rdrand_bytes: +.cfi_startproc xorq %rax,%rax cmpq $0,%rsi je .Ldone_rdrand_bytes @@ -420,11 +435,13 @@ OPENSSL_ia32_rdrand_bytes: .Ldone_rdrand_bytes: xorq %r10,%r10 .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes .globl OPENSSL_ia32_rdseed_bytes .type OPENSSL_ia32_rdseed_bytes,@function .align 16 OPENSSL_ia32_rdseed_bytes: +.cfi_startproc xorq %rax,%rax cmpq $0,%rsi je .Ldone_rdseed_bytes @@ -461,4 +478,5 @@ OPENSSL_ia32_rdseed_bytes: .Ldone_rdseed_bytes: xorq %r10,%r10 .byte 0xf3,0xc3 +.cfi_endproc .size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes diff --git a/crypto/external/bsd/openssl/lib/libcrypto/crypto.map b/crypto/external/bsd/openssl/lib/libcrypto/crypto.map index 7aef4399b50..4102bdb6edd 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/crypto.map +++ b/crypto/external/bsd/openssl/lib/libcrypto/crypto.map @@ -4444,4 +4444,12 @@ OPENSSL_1_1_1d { local: *; } OPENSSL_1_1_1c; - +OPENSSL_1_1_1e { + global: + EVP_PKEY_meth_get_digestsign; + EVP_PKEY_meth_get_digestverify; + EVP_PKEY_meth_set_digestsign; + EVP_PKEY_meth_set_digestverify; + RSA_get0_pss_params; + local: *; +} OPENSSL_1_1_1d; diff --git a/crypto/external/bsd/openssl/lib/libcrypto/libc-sha2xx.c b/crypto/external/bsd/openssl/lib/libcrypto/libc-sha2xx.c index e02644699b2..a5710e0f6b1 100644 --- a/crypto/external/bsd/openssl/lib/libcrypto/libc-sha2xx.c +++ b/crypto/external/bsd/openssl/lib/libcrypto/libc-sha2xx.c @@ -6,7 +6,7 @@ #include <string.h> #include <sys/sha2.h> -#include "internal/sha.h" +#include "crypto/sha.h" static const uint64_t sha512_224_initial_hash_value[] = { 0x8c3d37c819544da2ULL, diff --git a/crypto/external/bsd/openssl/lib/libcryptotest/Makefile b/crypto/external/bsd/openssl/lib/libcryptotest/Makefile index a03893f87f0..29fab181b44 100644 --- a/crypto/external/bsd/openssl/lib/libcryptotest/Makefile +++ b/crypto/external/bsd/openssl/lib/libcryptotest/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.1.6.1 2020/01/27 07:21:48 martin Exp $ +# $NetBSD: Makefile,v 1.1.6.2 2020/04/27 14:47:38 martin Exp $ LIBISPRIVATE= yes LIB= cryptotest @@ -13,6 +13,6 @@ CRYPTODIST= ${NETBSDSRCDIR}/crypto CPPFLAGS+= -I${OPENSSLSRC}/include SRCS+= tests.c format_output.c output_helpers.c basic_output.c stanza.c -SRCS+= main.c tap_bio.c driver.c init.c test_cleanup.c cb.c random.c +SRCS+= main.c tap_bio.c driver.c test_cleanup.c cb.c random.c testutil_init.c .include <bsd.lib.mk> |
