71:
3950:
Version 1.0, 1.1 and 2.1 have been released so far. Version 1.0 is the first implementation of the CKKS scheme without bootstrapping. In the second version, the bootstrapping algorithm was attached so that users are able to address large-scale homomorphic computations. In
Version 2.1, currently the
3561:
Note that the approximation error (on the message) exponentially grows up on the number of homomorphic multiplications. To overcome this problem, most of HE schemes usually use a modulus-switching technique which was introduced by
Brakerski, Gentry and Vaikuntanathan. In case of HEAAN, the
3562:
modulus-switching procedure is called rescaling. The
Rescaling algorithm is very simple compared to Brakerski-Gentry-Vaikuntanathan's original algorithm. Applying the rescaling algorithm after a homomomorphic multiplication, the approximation error grows linearly, not exponentially.
3439:
3942:(LWE). Currently the best known attacks for RLWE over a power-of-two cyclotomic ring are general LWE attacks such as dual attack and primal attack. The bit security of the CKKS scheme based on known attacks was estimated by Albrecht's LWE estimator.
3556:
3282:
2948:
2205:
1443:
3737:
950:
2409:
1340:
843:
604:
1104:
418:
293:
2831:
2612:
2080:
1236:
1170:
2512:
3081:
2667:. When considering homomorphic operations, the evaluation errors are also included in the approximation error. Basic homomorphic operations, addition and multiplication, are done as follows.
523:
751:
2000:
2665:
1938:
3317:
2251:
1789:
630:
183:
148:
Unlike other HE schemes, the CKKS scheme supports approximate arithmetics over complex numbers (hence, real numbers). More precisely, the plaintext space of the CKKS scheme is
3920:
3312:
3015:
2542:
1501:
The CKKS scheme basically consists of those algorithms: key
Generation, encryption, decryption, homomorphic addition and multiplication, and rescaling. For a positive integer
3886:
3846:
3613:
2463:
3448:
3644:
1014:
992:
872:
699:
444:
1563:
3770:
3805:
3113:
2760:
1684:
1657:
1630:
673:
2728:
2840:
1837:
1491:
1347:
970:
2280:
1894:
1467:
3976:
1864:
2700:
1812:
1744:
1724:
1704:
1603:
1583:
1519:
203:
877:
2285:
1244:
3118:
3649:
2085:
1473:
of the same-length vectors. These properties guarantee the approximate correctness of the computations in the encoded state when the scaling factor
756:
528:
1022:
306:
211:
874:
enables us to control the encoding/decoding error which is occurred by the rounding process. Namely, one can obtain the approximate equation
4134:
4124:
205:. To deal with the complex plaintext vector efficiently, Cheon et al. proposed plaintext encoding/decoding methods which exploits a
2765:
2551:
4129:
2005:
4003:
Cheon, Jung Hee; Kim, Andrey; Kim, Miran; Song, Yongsoo (2017). "Homomorphic encryption for arithmetic of approximate numbers".
1175:
1109:
4139:
2468:
50:
449:
1470:
704:
1946:
3983:
2617:
3935:
3434:{\displaystyle ct_{\text{mult}}\leftarrow (d_{0},d_{1})+\lfloor P^{-1}\cdot d_{2}\cdot evk\rceil \in R_{q}^{2}}
1899:
2223:
1761:
609:
3979:
125:
96:
3020:
151:
3551:{\displaystyle {\text{Dec}}(sk,ct_{\text{mult}})\approx {\text{Dec}}(sk,ct)\cdot {\text{Dec}}(sk,ct')}
3286:
2965:
2516:
3939:
3810:
3577:
2427:
91:
997:
975:
851:
678:
423:
3891:
1524:
3851:
3746:
2943:{\displaystyle {\text{Dec}}(sk,ct_{\text{add}})\approx {\text{Dec}}(sk,ct)+{\text{Dec}}(sk,ct')}
1438:{\displaystyle {\text{Dcd}}(m_{1}\cdot m_{2};\Delta )\approx {\vec {z}}_{1}\circ {\vec {z}}_{2}}
3775:
3086:
2733:
1662:
1635:
1608:
643:
3848:. After several homomorphic operations, the resulting ciphertext is decrypted as a polynomial
206:
3618:
1476:
955:
4008:
2259:
1869:
1452:
103:
3954:
1842:
1706:
which output polynomials with small coefficients. These distributions, the initial modulus
70:
2705:
2682:
1817:
945:{\displaystyle {\text{Dcd}}({\text{Ecd}}({\vec {z}};\Delta );\Delta )\approx {\vec {z}}}
4047:
2404:{\displaystyle ct\leftarrow (c_{0}=r\cdot b+e_{0}+m,c_{1}=r\cdot a+e_{1})\in R_{Q}^{2}}
1797:
1729:
1709:
1689:
1588:
1568:
1504:
188:
129:
1335:{\displaystyle {\text{Dcd}}(m_{1}+m_{2};\Delta )\approx {\vec {z}}_{1}+{\vec {z}}_{2}}
4118:
3277:{\displaystyle (d_{0},d_{1},d_{2})=(c_{0}c_{0}',c_{0}c_{1}'+c_{1}c_{0}',c_{1}c_{1}')}
137:
3732:{\displaystyle ct_{\text{rs}}\leftarrow \lfloor (q'/q)\cdot ct\rceil \in R_{q'}^{2}}
4012:
3772:
which consists of complex (or real) numbers is firstly encoded as a polynomial
3743:
The total procedure of the CKKS scheme is as following: Each plaintext vector
3938:(RLWE) problem, the ring variant of very promising lattice-based hard problem
2200:{\displaystyle evk\leftarrow (b'=-a'\cdot s+e'+P\cdot s^{2},a')\in R_{PQ}^{2}}
838:{\displaystyle {\vec {z}}=\Delta ^{-1}\cdot \phi (m(X))\in \mathbb {C} ^{n/2}}
22:
599:{\displaystyle m(X)=\lfloor \Delta \cdot \phi ^{-1}({\vec {z}})\rceil \in R}
4106:
2614:, and the approximation error is determined by the choice of distributions
2548:
The decryption outputs an approximate value of the original message, i.e.,
4105:
Martin
Albrecht. Security Estimates for the Learning with Errors Problem,
1099:{\displaystyle \phi :\mathbb {R} /(X^{n}+1)\rightarrow \mathbb {C} ^{n/2}}
413:{\displaystyle {\vec {z}}=(z_{1},z_{2},...,z_{n/2})\in \mathbb {C} ^{n/2}}
288:{\displaystyle \phi :\mathbb {R} /(X^{n}+1)\rightarrow \mathbb {C} ^{n/2}}
108:
132:, Kim, Kim and Song (CKKS). The first version of HEAAN was published on
3934:
security of the CKKS scheme is based on the hardness assumption of the
3931:
140:
algorithm was released. Currently, the latest version is
Version 2.1.
4068:
4027:
133:
59:
4051:
128:(HE) library which implements an approximate HE scheme proposed by
84:
4090:
4005:
Takagi T., Peyrin T. (eds) Advances in
Cryptology – ASIACRYPT 2017
2826:{\displaystyle ct_{\text{add}}\leftarrow ct+ct'\in R_{q}^{2}}
3807:
by the encoding method, and then encrypted as a ciphertext
2607:{\displaystyle {\text{Dec}}(sk,{\text{Enc}}(pk,m))\approx m}
122:
Homomorphic
Encryption for Arithmetic of Approximate Numbers
4073:, Cryptography LAB in Seoul National University, 2021-07-19
2075:{\displaystyle pk\leftarrow (b=-a\cdot s+e,a)\in R_{Q}^{2}}
1231:{\displaystyle m_{2}={\text{Ecd}}({\vec {z}}_{2};\Delta )}
1165:{\displaystyle m_{1}={\text{Ecd}}({\vec {z}}_{1};\Delta )}
1016:
denote the encoding and decoding algorithm, respectively.
4050:, Kyoohyung Han, Andrey Kim, Miran Kim and Yongsoo Song.
701:, the message polynomial is decoded to a complex vector
136:
on 15 May 2016, and later a new version of HEAAN with a
3951:
latest version, the multiplication of ring elements in
2958:
The homomorphic multiplication algorithm is following:
3957:
3894:
3854:
3813:
3778:
3749:
3652:
3621:
3580:
3451:
3320:
3289:
3121:
3089:
3023:
2968:
2843:
2768:
2736:
2708:
2685:
2620:
2554:
2519:
2471:
2430:
2288:
2262:
2226:
2088:
2008:
1949:
1902:
1872:
1845:
1820:
1800:
1764:
1732:
1712:
1692:
1665:
1638:
1611:
1591:
1571:
1527:
1507:
1479:
1455:
1350:
1247:
1178:
1112:
1025:
1000:
978:
958:
880:
854:
759:
707:
681:
646:
612:
531:
452:
426:
309:
214:
191:
154:
4052:
4026:
Andrey Kim; Kyoohyung Han; Miran Kim; Yongsoo Song.
4007:. ASIACRYPT 2017. Springer, Cham. pp. 409–437.
1746:are predetermined before the key generation phase.
102:
90:
80:
49:
31:
21:
4091:Fully Homomorphic Encryption without Bootstrapping
3970:
3914:
3880:
3840:
3799:
3764:
3731:
3638:
3607:
3550:
3433:
3306:
3276:
3107:
3075:
3009:
2942:
2825:
2754:
2722:
2694:
2659:
2606:
2536:
2507:{\displaystyle m'\leftarrow \langle ct,sk\rangle }
2506:
2457:
2403:
2274:
2245:
2199:
2074:
1994:
1932:
1888:
1858:
1831:
1806:
1783:
1738:
1718:
1698:
1678:
1651:
1624:
1597:
1577:
1557:
1513:
1485:
1461:
1437:
1334:
1230:
1164:
1098:
1008:
986:
964:
944:
866:
837:
745:
693:
667:
624:
598:
517:
446:, the plaintext vector is encoded as a polynomial
438:
412:
287:
197:
177:
2675:The homomorphic addition algorithm is following:
1019:From the ring-isomorphic property of the mapping
518:{\displaystyle m(X)\in R:=\mathbb {Z} /(X^{n}+1)}
4089:Z. Brakerski, C. Gentry, and V. Vaikuntanathan.
746:{\displaystyle {\vec {z}}\in \mathbb {C} ^{n/2}}
632:denotes the coefficient-wise rounding function.
1995:{\displaystyle sk\leftarrow (1,s)\in R_{Q}^{2}}
2660:{\displaystyle \chi _{s},\chi _{e},\chi _{r}}
27:Cryptography LAB in Seoul National University
8:
3703:
3669:
3410:
3369:
2501:
2483:
619:
613:
587:
547:
16:
1754:The key generation algorithm is following:
69:
15:
3962:
3956:
3897:
3896:
3893:
3853:
3832:
3827:
3812:
3777:
3751:
3750:
3748:
3723:
3713:
3683:
3660:
3651:
3620:
3599:
3594:
3579:
3517:
3488:
3476:
3452:
3450:
3425:
3420:
3392:
3376:
3357:
3344:
3328:
3319:
3293:
3288:
3262:
3252:
3236:
3226:
3210:
3200:
3184:
3174:
3155:
3142:
3129:
3120:
3099:
3094:
3088:
3061:
3045:
3022:
2998:
2985:
2967:
2909:
2880:
2868:
2844:
2842:
2817:
2812:
2776:
2767:
2746:
2741:
2735:
2707:
2684:
2651:
2638:
2625:
2619:
2572:
2555:
2553:
2523:
2518:
2470:
2449:
2444:
2429:
2395:
2390:
2374:
2349:
2330:
2305:
2287:
2261:
2237:
2225:
2191:
2183:
2156:
2087:
2066:
2061:
2007:
1986:
1981:
1948:
1924:
1901:
1877:
1871:
1850:
1844:
1819:
1799:
1775:
1763:
1731:
1711:
1691:
1670:
1664:
1643:
1637:
1616:
1610:
1590:
1570:
1544:
1532:
1526:
1506:
1478:
1454:
1429:
1418:
1417:
1407:
1396:
1395:
1376:
1363:
1351:
1349:
1326:
1315:
1314:
1304:
1293:
1292:
1273:
1260:
1248:
1246:
1213:
1202:
1201:
1192:
1183:
1177:
1147:
1136:
1135:
1126:
1117:
1111:
1086:
1082:
1078:
1077:
1058:
1046:
1033:
1032:
1024:
1001:
999:
979:
977:
957:
931:
930:
898:
897:
889:
881:
879:
853:
825:
821:
817:
816:
779:
761:
760:
758:
733:
729:
725:
724:
709:
708:
706:
680:
645:
611:
573:
572:
560:
530:
500:
488:
475:
474:
451:
425:
400:
396:
392:
391:
374:
370:
345:
332:
311:
310:
308:
275:
271:
267:
266:
247:
235:
222:
221:
213:
190:
165:
161:
157:
156:
153:
4107:https://bitbucket.org/malb/lwe-estimator
1933:{\displaystyle e,e'\leftarrow \chi _{e}}
3995:
3888:and then decoded as a plaintext vector
2420:The decryption algorithm is following:
2216:The encryption algorithm is following:
3570:The rescaling algorithm is following:
2220:Sample an ephemeral secret polynomial
2246:{\displaystyle r\leftarrow \chi _{r}}
1784:{\displaystyle s\leftarrow \chi _{s}}
625:{\displaystyle \lfloor \cdot \rceil }
7:
3076:{\displaystyle ct'=(c_{0}',c_{1}')}
1480:
1385:
1282:
1222:
1156:
959:
921:
912:
855:
776:
682:
550:
427:
178:{\displaystyle \mathbb {C} ^{n/2}}
14:
4028:"An approximate HE library HEAAN"
3307:{\displaystyle ({\text{mod }}q)}
3010:{\displaystyle ct=(c_{0},c_{1})}
2537:{\displaystyle ({\text{mod }}q)}
3841:{\displaystyle ct\in R_{q}^{2}}
3646:, output a rescaled ciphertext
3608:{\displaystyle ct\in R_{q}^{2}}
2458:{\displaystyle ct\in R_{q}^{2}}
2256:For a given message polynomial
3902:
3869:
3863:
3788:
3782:
3756:
3691:
3672:
3666:
3545:
3522:
3511:
3493:
3482:
3457:
3363:
3337:
3334:
3301:
3290:
3271:
3167:
3161:
3122:
3070:
3038:
3004:
2978:
2937:
2914:
2903:
2885:
2874:
2849:
2782:
2595:
2592:
2577:
2560:
2531:
2520:
2480:
2380:
2298:
2295:
2230:
2173:
2101:
2098:
2051:
2018:
2015:
1971:
1959:
1956:
1917:
1768:
1423:
1401:
1388:
1356:
1320:
1298:
1285:
1253:
1225:
1207:
1197:
1159:
1141:
1131:
1073:
1070:
1051:
1043:
1037:
936:
924:
915:
903:
894:
886:
809:
806:
800:
794:
766:
714:
656:
650:
584:
578:
569:
541:
535:
512:
493:
485:
479:
462:
456:
384:
325:
316:
262:
259:
240:
232:
226:
185:for some power-of-two integer
1:
3978:was accelerated by utilizing
4013:10.1007/978-3-319-70694-8_15
1009:{\displaystyle {\text{Dcd}}}
987:{\displaystyle {\text{Ecd}}}
867:{\displaystyle \Delta >1}
694:{\displaystyle \Delta >1}
439:{\displaystyle \Delta >1}
3922:which is the final output.
3915:{\displaystyle {\vec {z}}'}
1758:Sample a secret polynomial
1558:{\displaystyle R_{q}:=R/qR}
640:Given a message polynomial
4156:
4135:Lattice-based cryptography
3984:number theoretic transform
3881:{\displaystyle m'(X)\in R}
3765:{\displaystyle {\vec {z}}}
2954:Homomorphic multiplication
3936:ring learning with errors
3800:{\displaystyle m(X)\in R}
3445:The correctness holds as
3108:{\displaystyle R_{q}^{2}}
2837:The correctness holds as
2755:{\displaystyle R_{q}^{2}}
1726:, and the ring dimension
1679:{\displaystyle \chi _{e}}
1652:{\displaystyle \chi _{r}}
1625:{\displaystyle \chi _{s}}
1493:is chosen appropriately.
668:{\displaystyle m(X)\in R}
303:Given a plaintext vector
4125:Cryptographic primitives
4056:EUROCRYPT 2018(springer)
2082:, and an evaluation key
1839:) uniform randomly from
1565:be the quotient ring of
848:Here the scaling factor
4130:Public-key cryptography
3639:{\displaystyle q'<q}
2424:For a given ciphertext
1486:{\displaystyle \Delta }
965:{\displaystyle \Delta }
4140:Homomorphic encryption
3986:(NTT) implementation.
3980:fast Fourier transform
3972:
3916:
3882:
3842:
3801:
3766:
3733:
3640:
3609:
3552:
3435:
3308:
3278:
3109:
3077:
3011:
2944:
2827:
2756:
2724:
2696:
2679:Given two ciphertexts
2661:
2608:
2538:
2508:
2459:
2405:
2282:, output a ciphertext
2276:
2275:{\displaystyle m\in R}
2247:
2201:
2076:
1996:
1934:
1890:
1889:{\displaystyle R_{PQ}}
1860:
1833:
1808:
1785:
1740:
1720:
1700:
1686:be distributions over
1680:
1653:
1626:
1599:
1579:
1559:
1515:
1487:
1463:
1462:{\displaystyle \circ }
1439:
1336:
1238:, the following hold:
1232:
1166:
1100:
1010:
988:
966:
946:
868:
839:
747:
695:
669:
626:
600:
519:
440:
414:
289:
199:
179:
126:homomorphic encryption
97:Homomorphic encryption
3973:
3971:{\displaystyle R_{q}}
3917:
3883:
3843:
3802:
3767:
3734:
3641:
3610:
3553:
3436:
3309:
3279:
3110:
3078:
3012:
2962:Given two ciphertext
2945:
2828:
2757:
2725:
2697:
2662:
2609:
2539:
2509:
2460:
2406:
2277:
2248:
2202:
2077:
1997:
1935:
1891:
1861:
1859:{\displaystyle R_{Q}}
1834:
1809:
1786:
1741:
1721:
1701:
1681:
1654:
1627:
1600:
1580:
1560:
1516:
1488:
1464:
1440:
1337:
1233:
1167:
1101:
1011:
989:
967:
947:
869:
840:
748:
696:
675:and a scaling factor
670:
627:
601:
520:
441:
420:and a scaling factor
415:
290:
200:
180:
37:; 8 years ago
3955:
3940:Learning with errors
3892:
3852:
3811:
3776:
3747:
3650:
3619:
3578:
3449:
3318:
3287:
3119:
3087:
3021:
2966:
2841:
2766:
2734:
2706:
2683:
2671:Homomorphic addition
2618:
2552:
2517:
2469:
2428:
2286:
2260:
2224:
2086:
2006:
1947:
1943:Output a secret key
1900:
1870:
1843:
1818:
1798:
1762:
1730:
1710:
1690:
1663:
1636:
1609:
1589:
1569:
1525:
1505:
1477:
1453:
1348:
1245:
1176:
1110:
1023:
998:
976:
956:
878:
852:
757:
705:
679:
644:
610:
529:
450:
424:
307:
212:
189:
152:
144:CKKS plaintext space
124:) is an open source
3837:
3728:
3604:
3574:Given a ciphertext
3430:
3270:
3244:
3218:
3192:
3104:
3069:
3053:
2822:
2751:
2723:{\displaystyle ct'}
2465:, output a message
2454:
2400:
2196:
2071:
1991:
18:
3968:
3912:
3878:
3838:
3823:
3797:
3762:
3729:
3709:
3636:
3615:and a new modulus
3605:
3590:
3548:
3431:
3416:
3304:
3274:
3258:
3232:
3206:
3180:
3105:
3090:
3073:
3057:
3041:
3007:
2940:
2823:
2808:
2752:
2737:
2720:
2695:{\displaystyle ct}
2692:
2657:
2604:
2534:
2504:
2455:
2440:
2401:
2386:
2272:
2243:
2197:
2179:
2072:
2057:
1992:
1977:
1930:
1886:
1856:
1832:{\displaystyle a'}
1829:
1804:
1781:
1736:
1716:
1696:
1676:
1649:
1622:
1595:
1575:
1555:
1511:
1483:
1459:
1435:
1332:
1228:
1162:
1096:
1006:
984:
962:
942:
864:
835:
743:
691:
665:
622:
596:
515:
436:
410:
285:
195:
175:
3905:
3759:
3663:
3520:
3491:
3479:
3455:
3331:
3296:
2912:
2883:
2871:
2847:
2779:
2575:
2558:
2526:
1807:{\displaystyle a}
1739:{\displaystyle n}
1719:{\displaystyle Q}
1699:{\displaystyle R}
1598:{\displaystyle q}
1578:{\displaystyle R}
1514:{\displaystyle q}
1426:
1404:
1354:
1323:
1301:
1251:
1210:
1195:
1144:
1129:
1004:
982:
939:
906:
892:
884:
769:
717:
581:
319:
198:{\displaystyle n}
115:
114:
35:May 15, 2016
4147:
4109:
4103:
4097:
4087:
4081:
4080:
4079:
4078:
4065:
4059:
4045:
4039:
4038:
4036:
4034:
4023:
4017:
4016:
4000:
3982:(FFT)-optimized
3977:
3975:
3974:
3969:
3967:
3966:
3921:
3919:
3918:
3913:
3911:
3907:
3906:
3898:
3887:
3885:
3884:
3879:
3862:
3847:
3845:
3844:
3839:
3836:
3831:
3806:
3804:
3803:
3798:
3771:
3769:
3768:
3763:
3761:
3760:
3752:
3738:
3736:
3735:
3730:
3727:
3722:
3721:
3687:
3682:
3665:
3664:
3661:
3645:
3643:
3642:
3637:
3629:
3614:
3612:
3611:
3606:
3603:
3598:
3557:
3555:
3554:
3549:
3544:
3521:
3518:
3492:
3489:
3481:
3480:
3477:
3456:
3453:
3440:
3438:
3437:
3432:
3429:
3424:
3397:
3396:
3384:
3383:
3362:
3361:
3349:
3348:
3333:
3332:
3329:
3313:
3311:
3310:
3305:
3297:
3294:
3283:
3281:
3280:
3275:
3266:
3257:
3256:
3240:
3231:
3230:
3214:
3205:
3204:
3188:
3179:
3178:
3160:
3159:
3147:
3146:
3134:
3133:
3114:
3112:
3111:
3106:
3103:
3098:
3082:
3080:
3079:
3074:
3065:
3049:
3034:
3016:
3014:
3013:
3008:
3003:
3002:
2990:
2989:
2949:
2947:
2946:
2941:
2936:
2913:
2910:
2884:
2881:
2873:
2872:
2869:
2848:
2845:
2832:
2830:
2829:
2824:
2821:
2816:
2804:
2781:
2780:
2777:
2761:
2759:
2758:
2753:
2750:
2745:
2729:
2727:
2726:
2721:
2719:
2701:
2699:
2698:
2693:
2666:
2664:
2663:
2658:
2656:
2655:
2643:
2642:
2630:
2629:
2613:
2611:
2610:
2605:
2576:
2573:
2559:
2556:
2543:
2541:
2540:
2535:
2527:
2524:
2513:
2511:
2510:
2505:
2479:
2464:
2462:
2461:
2456:
2453:
2448:
2410:
2408:
2407:
2402:
2399:
2394:
2379:
2378:
2354:
2353:
2335:
2334:
2310:
2309:
2281:
2279:
2278:
2273:
2252:
2250:
2249:
2244:
2242:
2241:
2206:
2204:
2203:
2198:
2195:
2190:
2172:
2161:
2160:
2142:
2125:
2111:
2081:
2079:
2078:
2073:
2070:
2065:
2001:
1999:
1998:
1993:
1990:
1985:
1939:
1937:
1936:
1931:
1929:
1928:
1916:
1895:
1893:
1892:
1887:
1885:
1884:
1865:
1863:
1862:
1857:
1855:
1854:
1838:
1836:
1835:
1830:
1828:
1813:
1811:
1810:
1805:
1790:
1788:
1787:
1782:
1780:
1779:
1745:
1743:
1742:
1737:
1725:
1723:
1722:
1717:
1705:
1703:
1702:
1697:
1685:
1683:
1682:
1677:
1675:
1674:
1658:
1656:
1655:
1650:
1648:
1647:
1631:
1629:
1628:
1623:
1621:
1620:
1604:
1602:
1601:
1596:
1584:
1582:
1581:
1576:
1564:
1562:
1561:
1556:
1548:
1537:
1536:
1520:
1518:
1517:
1512:
1492:
1490:
1489:
1484:
1471:Hadamard product
1468:
1466:
1465:
1460:
1444:
1442:
1441:
1436:
1434:
1433:
1428:
1427:
1419:
1412:
1411:
1406:
1405:
1397:
1381:
1380:
1368:
1367:
1355:
1352:
1341:
1339:
1338:
1333:
1331:
1330:
1325:
1324:
1316:
1309:
1308:
1303:
1302:
1294:
1278:
1277:
1265:
1264:
1252:
1249:
1237:
1235:
1234:
1229:
1218:
1217:
1212:
1211:
1203:
1196:
1193:
1188:
1187:
1171:
1169:
1168:
1163:
1152:
1151:
1146:
1145:
1137:
1130:
1127:
1122:
1121:
1105:
1103:
1102:
1097:
1095:
1094:
1090:
1081:
1063:
1062:
1050:
1036:
1015:
1013:
1012:
1007:
1005:
1002:
993:
991:
990:
985:
983:
980:
971:
969:
968:
963:
951:
949:
948:
943:
941:
940:
932:
908:
907:
899:
893:
890:
885:
882:
873:
871:
870:
865:
844:
842:
841:
836:
834:
833:
829:
820:
787:
786:
771:
770:
762:
752:
750:
749:
744:
742:
741:
737:
728:
719:
718:
710:
700:
698:
697:
692:
674:
672:
671:
666:
631:
629:
628:
623:
605:
603:
602:
597:
583:
582:
574:
568:
567:
524:
522:
521:
516:
505:
504:
492:
478:
445:
443:
442:
437:
419:
417:
416:
411:
409:
408:
404:
395:
383:
382:
378:
350:
349:
337:
336:
321:
320:
312:
294:
292:
291:
286:
284:
283:
279:
270:
252:
251:
239:
225:
207:ring isomorphism
204:
202:
201:
196:
184:
182:
181:
176:
174:
173:
169:
160:
73:
68:
65:
63:
61:
45:
43:
38:
19:
4155:
4154:
4150:
4149:
4148:
4146:
4145:
4144:
4115:
4114:
4113:
4112:
4104:
4100:
4088:
4084:
4076:
4074:
4070:snucrypto/HEAAN
4067:
4066:
4062:
4046:
4042:
4032:
4030:
4025:
4024:
4020:
4002:
4001:
3997:
3992:
3958:
3953:
3952:
3948:
3928:
3895:
3890:
3889:
3855:
3850:
3849:
3809:
3808:
3774:
3773:
3745:
3744:
3714:
3675:
3656:
3648:
3647:
3622:
3617:
3616:
3576:
3575:
3568:
3537:
3472:
3447:
3446:
3388:
3372:
3353:
3340:
3324:
3316:
3315:
3285:
3284:
3248:
3222:
3196:
3170:
3151:
3138:
3125:
3117:
3116:
3085:
3084:
3027:
3019:
3018:
2994:
2981:
2964:
2963:
2956:
2929:
2864:
2839:
2838:
2797:
2772:
2764:
2763:
2732:
2731:
2712:
2704:
2703:
2681:
2680:
2673:
2647:
2634:
2621:
2616:
2615:
2550:
2549:
2515:
2514:
2472:
2467:
2466:
2426:
2425:
2418:
2370:
2345:
2326:
2301:
2284:
2283:
2258:
2257:
2233:
2222:
2221:
2214:
2165:
2152:
2135:
2118:
2104:
2084:
2083:
2004:
2003:
2002:, a public key
1945:
1944:
1920:
1909:
1898:
1897:
1873:
1868:
1867:
1846:
1841:
1840:
1821:
1816:
1815:
1796:
1795:
1771:
1760:
1759:
1752:
1728:
1727:
1708:
1707:
1688:
1687:
1666:
1661:
1660:
1639:
1634:
1633:
1612:
1607:
1606:
1587:
1586:
1567:
1566:
1528:
1523:
1522:
1503:
1502:
1499:
1475:
1474:
1451:
1450:
1416:
1394:
1372:
1359:
1346:
1345:
1313:
1291:
1269:
1256:
1243:
1242:
1200:
1179:
1174:
1173:
1134:
1113:
1108:
1107:
1076:
1054:
1021:
1020:
996:
995:
974:
973:
954:
953:
952:by controlling
876:
875:
850:
849:
815:
775:
755:
754:
723:
703:
702:
677:
676:
642:
641:
638:
636:Decoding method
608:
607:
556:
527:
526:
496:
448:
447:
422:
421:
390:
366:
341:
328:
305:
304:
301:
299:Encoding method
265:
243:
210:
209:
187:
186:
155:
150:
149:
146:
76:
58:
41:
39:
36:
32:Initial release
12:
11:
5:
4153:
4151:
4143:
4142:
4137:
4132:
4127:
4117:
4116:
4111:
4110:
4098:
4082:
4060:
4048:Jung Hee Cheon
4040:
4018:
3994:
3993:
3991:
3988:
3965:
3961:
3947:
3944:
3927:
3924:
3910:
3904:
3901:
3877:
3874:
3871:
3868:
3865:
3861:
3858:
3835:
3830:
3826:
3822:
3819:
3816:
3796:
3793:
3790:
3787:
3784:
3781:
3758:
3755:
3741:
3740:
3726:
3720:
3717:
3712:
3708:
3705:
3702:
3699:
3696:
3693:
3690:
3686:
3681:
3678:
3674:
3671:
3668:
3659:
3655:
3635:
3632:
3628:
3625:
3602:
3597:
3593:
3589:
3586:
3583:
3567:
3564:
3547:
3543:
3540:
3536:
3533:
3530:
3527:
3524:
3516:
3513:
3510:
3507:
3504:
3501:
3498:
3495:
3487:
3484:
3475:
3471:
3468:
3465:
3462:
3459:
3443:
3442:
3428:
3423:
3419:
3415:
3412:
3409:
3406:
3403:
3400:
3395:
3391:
3387:
3382:
3379:
3375:
3371:
3368:
3365:
3360:
3356:
3352:
3347:
3343:
3339:
3336:
3327:
3323:
3303:
3300:
3292:
3273:
3269:
3265:
3261:
3255:
3251:
3247:
3243:
3239:
3235:
3229:
3225:
3221:
3217:
3213:
3209:
3203:
3199:
3195:
3191:
3187:
3183:
3177:
3173:
3169:
3166:
3163:
3158:
3154:
3150:
3145:
3141:
3137:
3132:
3128:
3124:
3102:
3097:
3093:
3072:
3068:
3064:
3060:
3056:
3052:
3048:
3044:
3040:
3037:
3033:
3030:
3026:
3006:
3001:
2997:
2993:
2988:
2984:
2980:
2977:
2974:
2971:
2955:
2952:
2939:
2935:
2932:
2928:
2925:
2922:
2919:
2916:
2908:
2905:
2902:
2899:
2896:
2893:
2890:
2887:
2879:
2876:
2867:
2863:
2860:
2857:
2854:
2851:
2835:
2834:
2820:
2815:
2811:
2807:
2803:
2800:
2796:
2793:
2790:
2787:
2784:
2775:
2771:
2749:
2744:
2740:
2718:
2715:
2711:
2691:
2688:
2672:
2669:
2654:
2650:
2646:
2641:
2637:
2633:
2628:
2624:
2603:
2600:
2597:
2594:
2591:
2588:
2585:
2582:
2579:
2571:
2568:
2565:
2562:
2546:
2545:
2533:
2530:
2522:
2503:
2500:
2497:
2494:
2491:
2488:
2485:
2482:
2478:
2475:
2452:
2447:
2443:
2439:
2436:
2433:
2417:
2414:
2413:
2412:
2398:
2393:
2389:
2385:
2382:
2377:
2373:
2369:
2366:
2363:
2360:
2357:
2352:
2348:
2344:
2341:
2338:
2333:
2329:
2325:
2322:
2319:
2316:
2313:
2308:
2304:
2300:
2297:
2294:
2291:
2271:
2268:
2265:
2254:
2240:
2236:
2232:
2229:
2213:
2210:
2209:
2208:
2194:
2189:
2186:
2182:
2178:
2175:
2171:
2168:
2164:
2159:
2155:
2151:
2148:
2145:
2141:
2138:
2134:
2131:
2128:
2124:
2121:
2117:
2114:
2110:
2107:
2103:
2100:
2097:
2094:
2091:
2069:
2064:
2060:
2056:
2053:
2050:
2047:
2044:
2041:
2038:
2035:
2032:
2029:
2026:
2023:
2020:
2017:
2014:
2011:
1989:
1984:
1980:
1976:
1973:
1970:
1967:
1964:
1961:
1958:
1955:
1952:
1941:
1927:
1923:
1919:
1915:
1912:
1908:
1905:
1883:
1880:
1876:
1853:
1849:
1827:
1824:
1803:
1792:
1778:
1774:
1770:
1767:
1751:
1750:Key generation
1748:
1735:
1715:
1695:
1673:
1669:
1646:
1642:
1619:
1615:
1594:
1574:
1554:
1551:
1547:
1543:
1540:
1535:
1531:
1510:
1498:
1495:
1482:
1458:
1447:
1446:
1432:
1425:
1422:
1415:
1410:
1403:
1400:
1393:
1390:
1387:
1384:
1379:
1375:
1371:
1366:
1362:
1358:
1343:
1329:
1322:
1319:
1312:
1307:
1300:
1297:
1290:
1287:
1284:
1281:
1276:
1272:
1268:
1263:
1259:
1255:
1227:
1224:
1221:
1216:
1209:
1206:
1199:
1191:
1186:
1182:
1161:
1158:
1155:
1150:
1143:
1140:
1133:
1125:
1120:
1116:
1093:
1089:
1085:
1080:
1075:
1072:
1069:
1066:
1061:
1057:
1053:
1049:
1045:
1042:
1039:
1035:
1031:
1028:
961:
938:
935:
929:
926:
923:
920:
917:
914:
911:
905:
902:
896:
888:
863:
860:
857:
832:
828:
824:
819:
814:
811:
808:
805:
802:
799:
796:
793:
790:
785:
782:
778:
774:
768:
765:
740:
736:
732:
727:
722:
716:
713:
690:
687:
684:
664:
661:
658:
655:
652:
649:
637:
634:
621:
618:
615:
595:
592:
589:
586:
580:
577:
571:
566:
563:
559:
555:
552:
549:
546:
543:
540:
537:
534:
514:
511:
508:
503:
499:
495:
491:
487:
484:
481:
477:
473:
470:
467:
464:
461:
458:
455:
435:
432:
429:
407:
403:
399:
394:
389:
386:
381:
377:
373:
369:
365:
362:
359:
356:
353:
348:
344:
340:
335:
331:
327:
324:
318:
315:
300:
297:
282:
278:
274:
269:
264:
261:
258:
255:
250:
246:
242:
238:
234:
231:
228:
224:
220:
217:
194:
172:
168:
164:
159:
145:
142:
113:
112:
106:
100:
99:
94:
88:
87:
82:
78:
77:
75:
74:
55:
53:
47:
46:
33:
29:
28:
25:
13:
10:
9:
6:
4:
3:
2:
4152:
4141:
4138:
4136:
4133:
4131:
4128:
4126:
4123:
4122:
4120:
4108:
4102:
4099:
4096:
4092:
4086:
4083:
4072:
4071:
4064:
4061:
4057:
4053:
4049:
4044:
4041:
4029:
4022:
4019:
4014:
4010:
4006:
3999:
3996:
3989:
3987:
3985:
3981:
3963:
3959:
3945:
3943:
3941:
3937:
3933:
3925:
3923:
3908:
3899:
3875:
3872:
3866:
3859:
3856:
3833:
3828:
3824:
3820:
3817:
3814:
3794:
3791:
3785:
3779:
3753:
3724:
3718:
3715:
3710:
3706:
3700:
3697:
3694:
3688:
3684:
3679:
3676:
3657:
3653:
3633:
3630:
3626:
3623:
3600:
3595:
3591:
3587:
3584:
3581:
3573:
3572:
3571:
3565:
3563:
3559:
3541:
3538:
3534:
3531:
3528:
3525:
3514:
3508:
3505:
3502:
3499:
3496:
3485:
3473:
3469:
3466:
3463:
3460:
3426:
3421:
3417:
3413:
3407:
3404:
3401:
3398:
3393:
3389:
3385:
3380:
3377:
3373:
3366:
3358:
3354:
3350:
3345:
3341:
3325:
3321:
3298:
3267:
3263:
3259:
3253:
3249:
3245:
3241:
3237:
3233:
3227:
3223:
3219:
3215:
3211:
3207:
3201:
3197:
3193:
3189:
3185:
3181:
3175:
3171:
3164:
3156:
3152:
3148:
3143:
3139:
3135:
3130:
3126:
3100:
3095:
3091:
3066:
3062:
3058:
3054:
3050:
3046:
3042:
3035:
3031:
3028:
3024:
2999:
2995:
2991:
2986:
2982:
2975:
2972:
2969:
2961:
2960:
2959:
2953:
2951:
2933:
2930:
2926:
2923:
2920:
2917:
2906:
2900:
2897:
2894:
2891:
2888:
2877:
2865:
2861:
2858:
2855:
2852:
2818:
2813:
2809:
2805:
2801:
2798:
2794:
2791:
2788:
2785:
2773:
2769:
2747:
2742:
2738:
2716:
2713:
2709:
2689:
2686:
2678:
2677:
2676:
2670:
2668:
2652:
2648:
2644:
2639:
2635:
2631:
2626:
2622:
2601:
2598:
2589:
2586:
2583:
2580:
2569:
2566:
2563:
2528:
2498:
2495:
2492:
2489:
2486:
2476:
2473:
2450:
2445:
2441:
2437:
2434:
2431:
2423:
2422:
2421:
2415:
2396:
2391:
2387:
2383:
2375:
2371:
2367:
2364:
2361:
2358:
2355:
2350:
2346:
2342:
2339:
2336:
2331:
2327:
2323:
2320:
2317:
2314:
2311:
2306:
2302:
2292:
2289:
2269:
2266:
2263:
2255:
2238:
2234:
2227:
2219:
2218:
2217:
2211:
2192:
2187:
2184:
2180:
2176:
2169:
2166:
2162:
2157:
2153:
2149:
2146:
2143:
2139:
2136:
2132:
2129:
2126:
2122:
2119:
2115:
2112:
2108:
2105:
2095:
2092:
2089:
2067:
2062:
2058:
2054:
2048:
2045:
2042:
2039:
2036:
2033:
2030:
2027:
2024:
2021:
2012:
2009:
1987:
1982:
1978:
1974:
1968:
1965:
1962:
1953:
1950:
1942:
1925:
1921:
1913:
1910:
1906:
1903:
1881:
1878:
1874:
1851:
1847:
1825:
1822:
1801:
1793:
1776:
1772:
1765:
1757:
1756:
1755:
1749:
1747:
1733:
1713:
1693:
1671:
1667:
1644:
1640:
1617:
1613:
1592:
1572:
1552:
1549:
1545:
1541:
1538:
1533:
1529:
1508:
1496:
1494:
1472:
1456:
1430:
1420:
1413:
1408:
1398:
1391:
1382:
1377:
1373:
1369:
1364:
1360:
1344:
1327:
1317:
1310:
1305:
1295:
1288:
1279:
1274:
1270:
1266:
1261:
1257:
1241:
1240:
1239:
1219:
1214:
1204:
1189:
1184:
1180:
1153:
1148:
1138:
1123:
1118:
1114:
1091:
1087:
1083:
1067:
1064:
1059:
1055:
1047:
1040:
1029:
1026:
1017:
933:
927:
918:
909:
900:
861:
858:
846:
830:
826:
822:
812:
803:
797:
791:
788:
783:
780:
772:
763:
753:by computing
738:
734:
730:
720:
711:
688:
685:
662:
659:
653:
647:
635:
633:
616:
593:
590:
575:
564:
561:
557:
553:
544:
538:
532:
525:by computing
509:
506:
501:
497:
489:
482:
471:
468:
465:
459:
453:
433:
430:
405:
401:
397:
387:
379:
375:
371:
367:
363:
360:
357:
354:
351:
346:
342:
338:
333:
329:
322:
313:
298:
296:
280:
276:
272:
256:
253:
248:
244:
236:
229:
218:
215:
208:
192:
170:
166:
162:
143:
141:
139:
138:bootstrapping
135:
131:
127:
123:
119:
110:
107:
105:
101:
98:
95:
93:
89:
86:
83:
79:
72:
67:
57:
56:
54:
52:
48:
34:
30:
26:
24:
20:
4101:
4094:
4085:
4075:, retrieved
4069:
4063:
4055:
4043:
4031:. Retrieved
4021:
4004:
3998:
3949:
3929:
3742:
3569:
3560:
3444:
2957:
2836:
2674:
2547:
2419:
2215:
1753:
1500:
1469:denotes the
1448:
1018:
847:
639:
302:
147:
121:
117:
116:
23:Developer(s)
4119:Categories
4077:2021-07-20
3990:References
3115:, compute
2416:Decryption
2212:Encryption
1497:Algorithms
81:Written in
64:/snucrypto
51:Repository
42:2016-05-15
4095:ITCS 2012
3903:→
3873:∈
3821:∈
3792:∈
3757:→
3707:∈
3704:⌉
3695:⋅
3670:⌊
3667:←
3588:∈
3566:Rescaling
3515:⋅
3486:≈
3414:∈
3411:⌉
3399:⋅
3386:⋅
3378:−
3370:⌊
3335:←
3314:. Output
3295:mod
2878:≈
2806:∈
2783:←
2762:, output
2649:χ
2636:χ
2623:χ
2599:≈
2525:mod
2502:⟩
2484:⟨
2481:←
2438:∈
2384:∈
2362:⋅
2318:⋅
2296:←
2267:∈
2235:χ
2231:←
2177:∈
2150:⋅
2127:⋅
2116:−
2099:←
2055:∈
2034:⋅
2028:−
2016:←
1975:∈
1957:←
1922:χ
1918:←
1773:χ
1769:←
1668:χ
1641:χ
1614:χ
1481:Δ
1457:∘
1424:→
1414:∘
1402:→
1392:≈
1386:Δ
1370:⋅
1321:→
1299:→
1289:≈
1283:Δ
1223:Δ
1208:→
1157:Δ
1142:→
1074:→
1027:ϕ
960:Δ
937:→
928:≈
922:Δ
913:Δ
904:→
856:Δ
813:∈
792:ϕ
789:⋅
781:−
777:Δ
767:→
721:∈
715:→
683:Δ
660:∈
620:⌉
617:⋅
614:⌊
591:∈
588:⌉
579:→
562:−
558:ϕ
554:⋅
551:Δ
548:⌊
466:∈
428:Δ
388:∈
317:→
263:→
216:ϕ
3926:Security
3909:′
3860:′
3719:′
3680:′
3627:′
3542:′
3268:′
3242:′
3216:′
3190:′
3067:′
3051:′
3032:′
2934:′
2802:′
2717:′
2477:′
2170:′
2140:′
2123:′
2109:′
1914:′
1896:), and
1826:′
109:CC BY-NC
3946:Library
3932:IND-CPA
1866:(resp.
1814:(resp.
1794:Sample
1585:modulo
104:License
40: (
4033:15 May
1605:. Let
1521:, let
1449:where
1106:, for
972:where
606:where
134:GitHub
66:/HEAAN
60:github
4093:. In
4054:. In
130:Cheon
118:HEAAN
17:HEAAN
4035:2016
3930:The
3631:<
3478:mult
3330:mult
3017:and
2702:and
1659:and
1172:and
994:and
859:>
686:>
431:>
92:Type
62:.com
4009:doi
3519:Dec
3490:Dec
3454:Dec
3083:in
2911:Dec
2882:Dec
2870:add
2846:Dec
2778:add
2730:in
2574:Enc
2557:Dec
1353:Dcd
1250:Dcd
1194:Ecd
1128:Ecd
1003:Dcd
981:Ecd
891:Ecd
883:Dcd
111:3.0
85:C++
4121::
3662:rs
3558:.
2950:.
1632:,
1539::=
845:.
472::=
295:.
4058:.
4037:.
4015:.
4011::
3964:q
3960:R
3900:z
3876:R
3870:)
3867:X
3864:(
3857:m
3834:2
3829:q
3825:R
3818:t
3815:c
3795:R
3789:)
3786:X
3783:(
3780:m
3754:z
3739:.
3725:2
3716:q
3711:R
3701:t
3698:c
3692:)
3689:q
3685:/
3677:q
3673:(
3658:t
3654:c
3634:q
3624:q
3601:2
3596:q
3592:R
3585:t
3582:c
3546:)
3539:t
3535:c
3532:,
3529:k
3526:s
3523:(
3512:)
3509:t
3506:c
3503:,
3500:k
3497:s
3494:(
3483:)
3474:t
3470:c
3467:,
3464:k
3461:s
3458:(
3441:.
3427:2
3422:q
3418:R
3408:k
3405:v
3402:e
3394:2
3390:d
3381:1
3374:P
3367:+
3364:)
3359:1
3355:d
3351:,
3346:0
3342:d
3338:(
3326:t
3322:c
3302:)
3299:q
3291:(
3272:)
3264:1
3260:c
3254:1
3250:c
3246:,
3238:0
3234:c
3228:1
3224:c
3220:+
3212:1
3208:c
3202:0
3198:c
3194:,
3186:0
3182:c
3176:0
3172:c
3168:(
3165:=
3162:)
3157:2
3153:d
3149:,
3144:1
3140:d
3136:,
3131:0
3127:d
3123:(
3101:2
3096:q
3092:R
3071:)
3063:1
3059:c
3055:,
3047:0
3043:c
3039:(
3036:=
3029:t
3025:c
3005:)
3000:1
2996:c
2992:,
2987:0
2983:c
2979:(
2976:=
2973:t
2970:c
2938:)
2931:t
2927:c
2924:,
2921:k
2918:s
2915:(
2907:+
2904:)
2901:t
2898:c
2895:,
2892:k
2889:s
2886:(
2875:)
2866:t
2862:c
2859:,
2856:k
2853:s
2850:(
2833:.
2819:2
2814:q
2810:R
2799:t
2795:c
2792:+
2789:t
2786:c
2774:t
2770:c
2748:2
2743:q
2739:R
2714:t
2710:c
2690:t
2687:c
2653:r
2645:,
2640:e
2632:,
2627:s
2602:m
2596:)
2593:)
2590:m
2587:,
2584:k
2581:p
2578:(
2570:,
2567:k
2564:s
2561:(
2544:.
2532:)
2529:q
2521:(
2499:k
2496:s
2493:,
2490:t
2487:c
2474:m
2451:2
2446:q
2442:R
2435:t
2432:c
2411:.
2397:2
2392:Q
2388:R
2381:)
2376:1
2372:e
2368:+
2365:a
2359:r
2356:=
2351:1
2347:c
2343:,
2340:m
2337:+
2332:0
2328:e
2324:+
2321:b
2315:r
2312:=
2307:0
2303:c
2299:(
2293:t
2290:c
2270:R
2264:m
2253:.
2239:r
2228:r
2207:.
2193:2
2188:Q
2185:P
2181:R
2174:)
2167:a
2163:,
2158:2
2154:s
2147:P
2144:+
2137:e
2133:+
2130:s
2120:a
2113:=
2106:b
2102:(
2096:k
2093:v
2090:e
2068:2
2063:Q
2059:R
2052:)
2049:a
2046:,
2043:e
2040:+
2037:s
2031:a
2025:=
2022:b
2019:(
2013:k
2010:p
1988:2
1983:Q
1979:R
1972:)
1969:s
1966:,
1963:1
1960:(
1954:k
1951:s
1940:.
1926:e
1911:e
1907:,
1904:e
1882:Q
1879:P
1875:R
1852:Q
1848:R
1823:a
1802:a
1791:.
1777:s
1766:s
1734:n
1714:Q
1694:R
1672:e
1645:r
1618:s
1593:q
1573:R
1553:R
1550:q
1546:/
1542:R
1534:q
1530:R
1509:q
1445:,
1431:2
1421:z
1409:1
1399:z
1389:)
1383:;
1378:2
1374:m
1365:1
1361:m
1357:(
1342:,
1328:2
1318:z
1311:+
1306:1
1296:z
1286:)
1280:;
1275:2
1271:m
1267:+
1262:1
1258:m
1254:(
1226:)
1220:;
1215:2
1205:z
1198:(
1190:=
1185:2
1181:m
1160:)
1154:;
1149:1
1139:z
1132:(
1124:=
1119:1
1115:m
1092:2
1088:/
1084:n
1079:C
1071:)
1068:1
1065:+
1060:n
1056:X
1052:(
1048:/
1044:]
1041:X
1038:[
1034:R
1030::
934:z
925:)
919:;
916:)
910:;
901:z
895:(
887:(
862:1
831:2
827:/
823:n
818:C
810:)
807:)
804:X
801:(
798:m
795:(
784:1
773:=
764:z
739:2
735:/
731:n
726:C
712:z
689:1
663:R
657:)
654:X
651:(
648:m
594:R
585:)
576:z
570:(
565:1
545:=
542:)
539:X
536:(
533:m
513:)
510:1
507:+
502:n
498:X
494:(
490:/
486:]
483:X
480:[
476:Z
469:R
463:)
460:X
457:(
454:m
434:1
406:2
402:/
398:n
393:C
385:)
380:2
376:/
372:n
368:z
364:,
361:.
358:.
355:.
352:,
347:2
343:z
339:,
334:1
330:z
326:(
323:=
314:z
281:2
277:/
273:n
268:C
260:)
257:1
254:+
249:n
245:X
241:(
237:/
233:]
230:X
227:[
223:R
219::
193:n
171:2
167:/
163:n
158:C
120:(
44:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.