U
    ){f                   @   sL  d Z ddlmZ dd ZdZdZdZddd	d
ddddddddddddedfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB d fdeeB d!fd"d#d$d%d&d'dedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfded fd(eeB d fded!fd(eeB d!fdeeB d4fdeeB d5fdeeB d6fdeeB d7fdeeB d8fdeeB d9fdeeB d:fdeeB d;fdeeB d<fdeeB d=fdeeB d3fdeeB d>fded fd)ed fd*ed fd+eeB d fded!fd)ed!fd*ed!fd+eeB d!fded4fd(eeB d4fded5fd(eeB d5fded6fd(eeB d6fded7fd(eeB d7fd,ed fd-ed fd.ed fd/ed fd0ed fd1ed fd2ed fd3eeB d fd,ed!fd-ed!fd.ed!fd/ed!fd0ed!fd1ed!fd2ed!fd3eeB d!fded4fd)ed4fd*ed4fd+eeB d4fded5fd)ed5fd*ed5fd+eeB d5fded6fd)ed6fd*ed6fd+eeB d6fded7fd)ed7fd*ed7fd+eeB d7fd,ed4fd-ed4fd.ed4fd/ed4fd0ed4fd1ed4fd2ed4fd3eeB d4fd,ed5fd-ed5fd.ed5fd/ed5fd0ed5fd1ed5fd2ed5fd3eeB d5fd,ed6fd-ed6fd.ed6fd/ed6fd0ed6fd1ed6fd2ed6fd3eeB d6fd,ed7fd-ed7fd.ed7fd/ed7fd0ed7fd1ed7fd2ed7fd3eeB d7fded8fd(eeB d8fded9fd(eeB d9fded:fd(eeB d:fded;fd(eeB d;fded<fd(eeB d<fded=fd(eeB d=fded3fd(eeB d3fded>fd(eeB d>fded8fd)ed8fd*ed8fd+eeB d8fded9fd)ed9fd*ed9fd+eeB d9fded:fd)ed:fd*ed:fd+eeB d:fded;fd)ed;fd*ed;fd+eeB d;fd,ed8fd-ed8fd.ed8fd/ed8fd0ed8fd1ed8fd2ed8fd3eeB d8fd,ed9fd-ed9fd.ed9fd/ed9fd0ed9fd1ed9fd2ed9fd3eeB d9fd,ed:fd-ed:fd.ed:fd/ed:fd0ed:fd1ed:fd2ed:fd3eeB d:fd,ed;fd-ed;fd.ed;fd/ed;fd0ed;fd1ed;fd2ed;fd3eeB d;fded<fd)ed<fd*ed<fd+eeB d<fded=fd)ed=fd*ed=fd+eeB d=fded3fd)ed3fd*ed3fd+eeB d3fded>fd)ed>fd*ed>fd+eeB d>fd,ed<fd-ed<fd.ed<fd/ed<fd0ed<fd1ed<fd2ed<fd3eeB d<fd,ed=fd-ed=fd.ed=fd/ed=fd0ed=fd1ed=fd2ed=fd3eeB d=fd,ed3fd-ed3fd.ed3fd/ed3fd0ed3fd1ed3fd2ed3fd3eeB d3fd,ed>fd-ed>fd.ed>fd/ed>fd0ed>fd1ed>fd2ed>fd3eeB d>fd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNedfdeeB dOfdeeB dPfdeeB dQfdeeB dRfdeeB dSfdeeB dTfdeeB dUfdeeB dVfdeeB dWfdeeB dXfdeeB dYfdeeB dZfdeeB d[fdeeB d\fd]d^dedOfd(eeB dOfdedPfd(eeB dPfdedQfd(eeB dQfdedRfd(eeB dRfdedSfd(eeB dSfdedTfd(eeB dTfdedUfd(eeB dUfdedVfd(eeB dVfdedOfd)edOfd*edOfd+eeB dOfdedPfd)edPfd*edPfd+eeB dPfdedQfd)edQfd*edQfd+eeB dQfdedRfd)edRfd*edRfd+eeB dRfd,edOfd-edOfd.edOfd/edOfd0edOfd1edOfd2edOfd3eeB dOfd,edPfd-edPfd.edPfd/edPfd0edPfd1edPfd2edPfd3eeB dPfd,edQfd-edQfd.edQfd/edQfd0edQfd1edQfd2edQfd3eeB dQfd,edRfd-edRfd.edRfd/edRfd0edRfd1edRfd2edRfd3eeB dRfdedSfd)edSfd*edSfd+eeB dSfdedTfd)edTfd*edTfd+eeB dTfdedUfd)edUfd*edUfd+eeB dUfdedVfd)edVfd*edVfd+eeB dVfd,edSfd-edSfd.edSfd/edSfd0edSfd1edSfd2edSfd3eeB dSfd,edTfd-edTfd.edTfd/edTfd0edTfd1edTfd2edTfd3eeB dTfd,edUfd-edUfd.edUfd/edUfd0edUfd1edUfd2edUfd3eeB dUfd,edVfd-edVfd.edVfd/edVfd0edVfd1edVfd2edVfd3eeB dVfdedWfd(eeB dWfdedXfd(eeB dXfdedYfd(eeB dYfdedZfd(eeB dZfded[fd(eeB d[fded\fd(eeB d\fdeeB d_fdeeB d`fdeeB dafdeeB dNfdedWfd)edWfd*edWfd+eeB dWfdedXfd)edXfd*edXfd+eeB dXfdedYfd)edYfd*edYfd+eeB dYfdedZfd)edZfd*edZfd+eeB dZfd,edWfd-edWfd.edWfd/edWfd0edWfd1edWfd2edWfd3eeB dWfd,edXfd-edXfd.edXfd/edXfd0edXfd1edXfd2edXfd3eeB dXfd,edYfd-edYfd.edYfd/edYfd0edYfd1edYfd2edYfd3eeB dYfd,edZfd-edZfd.edZfd/edZfd0edZfd1edZfd2edZfd3eeB dZfded[fd)ed[fd*ed[fd+eeB d[fded\fd)ed\fd*ed\fd+eeB d\fded_fd(eeB d_fded`fd(eeB d`fdedafd(eeB dafdedNfd(eeB dNfd,ed[fd-ed[fd.ed[fd/ed[fd0ed[fd1ed[fd2ed[fd3eeB d[fd,ed\fd-ed\fd.ed\fd/ed\fd0ed\fd1ed\fd2ed\fd3eeB d\fded_fd)ed_fd*ed_fd+eeB d_fded`fd)ed`fd*ed`fd+eeB d`fdedafd)edafd*edafd+eeB dafdedNfd)edNfd*edNfd+eeB dNfd,ed_fd-ed_fd.ed_fd/ed_fd0ed_fd1ed_fd2ed_fd3eeB d_fd,ed`fd-ed`fd.ed`fd/ed`fd0ed`fd1ed`fd2ed`fd3eeB d`fd,edafd-edafd.edafd/edafd0edafd1edafd2edafd3eeB dafd,edNfd-edNfd.edNfd/edNfd0edNfd1edNfd2edNfd3eeB dNfdbdcdddedfdgdhdidjdkdldmdndodpdqedfdeeB drfdeeB dsfdeeB dtfdeeB dqfdeeB dufdeeB dvfdeeB dwfdeeB dxfdeeB dyfdeeB dzfdeeB d{fdeeB d|fdeeB d}fdeeB d~fdeeB dfdeeB dfdedrfd(eeB drfdedsfd(eeB dsfdedtfd(eeB dtfdedqfd(eeB dqfdedufd(eeB dufdedvfd(eeB dvfdedwfd(eeB dwfdedxfd(eeB dxfdedrfd)edrfd*edrfd+eeB drfdedsfd)edsfd*edsfd+eeB dsfdedtfd)edtfd*edtfd+eeB dtfdedqfd)edqfd*edqfd+eeB dqfd,edrfd-edrfd.edrfd/edrfd0edrfd1edrfd2edrfd3eeB drfd,edsfd-edsfd.edsfd/edsfd0edsfd1edsfd2edsfd3eeB dsfd,edtfd-edtfd.edtfd/edtfd0edtfd1edtfd2edtfd3eeB dtfd,edqfd-edqfd.edqfd/edqfd0edqfd1edqfd2edqfd3eeB dqfdedufd)edufd*edufd+eeB dufdedvfd)edvfd*edvfd+eeB dvfdedwfd)edwfd*edwfd+eeB dwfdedxfd)edxfd*edxfd+eeB dxfd,edufd-edufd.edufd/edufd0edufd1edufd2edufd3eeB dufd,edvfd-edvfd.edvfd/edvfd0edvfd1edvfd2edvfd3eeB dvfd,edwfd-edwfd.edwfd/edwfd0edwfd1edwfd2edwfd3eeB dwfd,edxfd-edxfd.edxfd/edxfd0edxfd1edxfd2edxfd3eeB dxfdedyfd(eeB dyfdedzfd(eeB dzfded{fd(eeB d{fded|fd(eeB d|fded}fd(eeB d}fded~fd(eeB d~fdedfd(eeB dfdedfd(eeB dfdedyfd)edyfd*edyfd+eeB dyfdedzfd)edzfd*edzfd+eeB dzfded{fd)ed{fd*ed{fd+eeB d{fded|fd)ed|fd*ed|fd+eeB d|fd,edyfd-edyfd.edyfd/edyfd0edyfd1edyfd2edyfd3eeB dyfd,edzfd-edzfd.edzfd/edzfd0edzfd1edzfd2edzfd3eeB dzfd,ed{fd-ed{fd.ed{fd/ed{fd0ed{fd1ed{fd2ed{fd3eeB d{fd,ed|fd-ed|fd.ed|fd/ed|fd0ed|fd1ed|fd2ed|fd3eeB d|fded}fd)ed}fd*ed}fd+eeB d}fded~fd)ed~fd*ed~fd+eeB d~fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,ed}fd-ed}fd.ed}fd/ed}fd0ed}fd1ed}fd2ed}fd3eeB d}fd,ed~fd-ed~fd.ed~fd/ed~fd0ed~fd1ed~fd2ed~fd3eeB d~fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfddddvedfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdddddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdeeB dfdeeB dfdeeB d+fdeeB d2fdeeB dfdddd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfded+fd(eeB d+fded2fd(eeB d2fdedfd(eeB dfdeeB dfdeeB dfdeeB dfddddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfded+fd)ed+fd*ed+fd+eeB d+fded2fd)ed2fd*ed2fd+eeB d2fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed+fd-ed+fd.ed+fd/ed+fd0ed+fd1ed+fd2ed+fd3eeB d+fd,ed2fd-ed2fd.ed2fd/ed2fd0ed2fd1ed2fd2ed2fd3eeB d2fdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfddddd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfddd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdeeB dfdd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfddd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfddddd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdddddddddeeB dfdeeB dfdeeB dfddddddddddddddedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdeeB dfdeeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdddddddddddddddddeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB d fddddddddedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfded fd(eeB d fdeeB dfdeeB d	fdeeB d
fdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfded fd)ed fd*ed fd+eeB d fdedfd(eeB dfded	fd(eeB d	fded
fd(eeB d
fdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfd,ed fd-ed fd.ed fd/ed fd0ed fd1ed fd2ed fd3eeB d fdedfd)edfd*edfd+eeB dfded	fd)ed	fd*ed	fd+eeB d	fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed	fd-ed	fd.ed	fd/ed	fd0ed	fd1ed	fd2ed	fd3eeB d	fded
fd)ed
fd*ed
fd+eeB d
fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,ed
fd-ed
fd.ed
fd/ed
fd0ed
fd1ed
fd2ed
fd3eeB d
fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfddddddddddd d!d"d#d$d%deeB d&fdeeB d'fdeeB d(fdeeB d)fdeeB d*fdeeB d+fdeeB d,fdeeB d-fdeeB d.fdeeB d/fdeeB d0fdeeB d1fd2d3d4d5ded&fd(eeB d&fded'fd(eeB d'fded(fd(eeB d(fded)fd(eeB d)fded*fd(eeB d*fded+fd(eeB d+fded,fd(eeB d,fded-fd(eeB d-fded&fd)ed&fd*ed&fd+eeB d&fded'fd)ed'fd*ed'fd+eeB d'fded(fd)ed(fd*ed(fd+eeB d(fded)fd)ed)fd*ed)fd+eeB d)fd,ed&fd-ed&fd.ed&fd/ed&fd0ed&fd1ed&fd2ed&fd3eeB d&fd,ed'fd-ed'fd.ed'fd/ed'fd0ed'fd1ed'fd2ed'fd3eeB d'fd,ed(fd-ed(fd.ed(fd/ed(fd0ed(fd1ed(fd2ed(fd3eeB d(fd,ed)fd-ed)fd.ed)fd/ed)fd0ed)fd1ed)fd2ed)fd3eeB d)fded*fd)ed*fd*ed*fd+eeB d*fded+fd)ed+fd*ed+fd+eeB d+fded,fd)ed,fd*ed,fd+eeB d,fded-fd)ed-fd*ed-fd+eeB d-fd,ed*fd-ed*fd.ed*fd/ed*fd0ed*fd1ed*fd2ed*fd3eeB d*fd,ed+fd-ed+fd.ed+fd/ed+fd0ed+fd1ed+fd2ed+fd3eeB d+fd,ed,fd-ed,fd.ed,fd/ed,fd0ed,fd1ed,fd2ed,fd3eeB d,fd,ed-fd-ed-fd.ed-fd/ed-fd0ed-fd1ed-fd2ed-fd3eeB d-fded.fd(eeB d.fded/fd(eeB d/fded0fd(eeB d0fded1fd(eeB d1fdeeB dfdeeB d6fdeeB d7fdeeB d8fdeeB d9fdeeB d:fdeeB d;fdeeB d<fded.fd)ed.fd*ed.fd+eeB d.fded/fd)ed/fd*ed/fd+eeB d/fded0fd)ed0fd*ed0fd+eeB d0fded1fd)ed1fd*ed1fd+eeB d1fd,ed.fd-ed.fd.ed.fd/ed.fd0ed.fd1ed.fd2ed.fd3eeB d.fd,ed/fd-ed/fd.ed/fd/ed/fd0ed/fd1ed/fd2ed/fd3eeB d/fd,ed0fd-ed0fd.ed0fd/ed0fd0ed0fd1ed0fd2ed0fd3eeB d0fd,ed1fd-ed1fd.ed1fd/ed1fd0ed1fd1ed1fd2ed1fd3eeB d1fdedfd(eeB dfded6fd(eeB d6fded7fd(eeB d7fded8fd(eeB d8fded9fd(eeB d9fded:fd(eeB d:fded;fd(eeB d;fded<fd(eeB d<fdedfd)edfd*edfd+eeB dfded6fd)ed6fd*ed6fd+eeB d6fded7fd)ed7fd*ed7fd+eeB d7fded8fd)ed8fd*ed8fd+eeB d8fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed6fd-ed6fd.ed6fd/ed6fd0ed6fd1ed6fd2ed6fd3eeB d6fd,ed7fd-ed7fd.ed7fd/ed7fd0ed7fd1ed7fd2ed7fd3eeB d7fd,ed8fd-ed8fd.ed8fd/ed8fd0ed8fd1ed8fd2ed8fd3eeB d8fded9fd)ed9fd*ed9fd+eeB d9fded:fd)ed:fd*ed:fd+eeB d:fded;fd)ed;fd*ed;fd+eeB d;fded<fd)ed<fd*ed<fd+eeB d<fd,ed9fd-ed9fd.ed9fd/ed9fd0ed9fd1ed9fd2ed9fd3eeB d9fd,ed:fd-ed:fd.ed:fd/ed:fd0ed:fd1ed:fd2ed:fd3eeB d:fd,ed;fd-ed;fd.ed;fd/ed;fd0ed;fd1ed;fd2ed;fd3eeB d;fd,ed<fd-ed<fd.ed<fd/ed<fd0ed<fd1ed<fd2ed<fd3eeB d<fd=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdeeB dMfdeeB dNfdeeB dOfdeeB dPfdeeB dQfdeeB dRfdeeB dSfdeeB dTfdeeB dUfdeeB dVfdeeB dWfdeeB dXfdeeB dYfdeeB dZfdeeB d[fdeeB d\fdedMfd(eeB dMfdedNfd(eeB dNfdedOfd(eeB dOfdedPfd(eeB dPfdedQfd(eeB dQfdedRfd(eeB dRfdedSfd(eeB dSfdedTfd(eeB dTfdedMfd)edMfd*edMfd+eeB dMfdedNfd)edNfd*edNfd+eeB dNfdedOfd)edOfd*edOfd+eeB dOfdedPfd)edPfd*edPfd+eeB dPfd,edMfd-edMfd.edMfd/edMfd0edMfd1edMfd2edMfd3eeB dMfd,edNfd-edNfd.edNfd/edNfd0edNfd1edNfd2edNfd3eeB dNfd,edOfd-edOfd.edOfd/edOfd0edOfd1edOfd2edOfd3eeB dOfd,edPfd-edPfd.edPfd/edPfd0edPfd1edPfd2edPfd3eeB dPfdedQfd)edQfd*edQfd+eeB dQfdedRfd)edRfd*edRfd+eeB dRfdedSfd)edSfd*edSfd+eeB dSfdedTfd)edTfd*edTfd+eeB dTfd,edQfd-edQfd.edQfd/edQfd0edQfd1edQfd2edQfd3eeB dQfd,edRfd-edRfd.edRfd/edRfd0edRfd1edRfd2edRfd3eeB dRfd,edSfd-edSfd.edSfd/edSfd0edSfd1edSfd2edSfd3eeB dSfd,edTfd-edTfd.edTfd/edTfd0edTfd1edTfd2edTfd3eeB dTfdedUfd(eeB dUfdedVfd(eeB dVfdedWfd(eeB dWfdedXfd(eeB dXfdedYfd(eeB dYfdedZfd(eeB dZfded[fd(eeB d[fded\fd(eeB d\fdedUfd)edUfd*edUfd+eeB dUfdedVfd)edVfd*edVfd+eeB dVfdedWfd)edWfd*edWfd+eeB dWfdedXfd)edXfd*edXfd+eeB dXfd,edUfd-edUfd.edUfd/edUfd0edUfd1edUfd2edUfd3eeB dUfd,edVfd-edVfd.edVfd/edVfd0edVfd1edVfd2edVfd3eeB dVfd,edWfd-edWfd.edWfd/edWfd0edWfd1edWfd2edWfd3eeB dWfd,edXfd-edXfd.edXfd/edXfd0edXfd1edXfd2edXfd3eeB dXfdedYfd)edYfd*edYfd+eeB dYfdedZfd)edZfd*edZfd+eeB dZfded[fd)ed[fd*ed[fd+eeB d[fded\fd)ed\fd*ed\fd+eeB d\fd,edYfd-edYfd.edYfd/edYfd0edYfd1edYfd2edYfd3eeB dYfd,edZfd-edZfd.edZfd/edZfd0edZfd1edZfd2edZfd3eeB dZfd,ed[fd-ed[fd.ed[fd/ed[fd0ed[fd1ed[fd2ed[fd3eeB d[fd,ed\fd-ed\fd.ed\fd/ed\fd0ed\fd1ed\fd2ed\fd3eeB d\fdeeB d]fdeeB d^fdeeB d_fdeeB d`fdeeB dafdbdcdddedfdgdhdidjdkdlded]fd(eeB d]fded^fd(eeB d^fded_fd(eeB d_fded`fd(eeB d`fdedafd(eeB dafdeeB d)fdeeB dmfdeeB dnfdeeB dofdeeB dpfdeeB dqfded]fd)ed]fd*ed]fd+eeB d]fded^fd)ed^fd*ed^fd+eeB d^fded_fd)ed_fd*ed_fd+eeB d_fded`fd)ed`fd*ed`fd+eeB d`fd,ed]fd-ed]fd.ed]fd/ed]fd0ed]fd1ed]fd2ed]fd3eeB d]fd,ed^fd-ed^fd.ed^fd/ed^fd0ed^fd1ed^fd2ed^fd3eeB d^fd,ed_fd-ed_fd.ed_fd/ed_fd0ed_fd1ed_fd2ed_fd3eeB d_fd,ed`fd-ed`fd.ed`fd/ed`fd0ed`fd1ed`fd2ed`fd3eeB d`fdedafd)edafd*edafd+eeB dafded)fd(eeB d)fdedmfd(eeB dmfdednfd(eeB dnfdedofd(eeB dofdedpfd(eeB dpfdedqfd(eeB dqfd,edafd-edafd.edafd/edafd0edafd1edafd2edafd3eeB dafded)fd)ed)fd*ed)fd+eeB d)fdedmfd)edmfd*edmfd+eeB dmfd,ed)fd-ed)fd.ed)fd/ed)fd0ed)fd1ed)fd2ed)fd3eeB d)fd,edmfd-edmfd.edmfd/edmfd0edmfd1edmfd2edmfd3eeB dmfdednfd)ednfd*ednfd+eeB dnfdedofd)edofd*edofd+eeB dofdedpfd)edpfd*edpfd+eeB dpfdedqfd)edqfd*edqfd+eeB dqfd,ednfd-ednfd.ednfd/ednfd0ednfd1ednfd2ednfd3eeB dnfd,edofd-edofd.edofd/edofd0edofd1edofd2edofd3eeB dofd,edpfd-edpfd.edpfd/edpfd0edpfd1edpfd2edpfd3eeB dpfd,edqfd-edqfd.edqfd/edqfd0edqfd1edqfd2edqfd3eeB dqfdeeB drfdeeB dsfdeeB dtfdeeB dufdeeB dvfdeeB dwfdxdydzd{d|d}d~ddddedrfd(eeB drfdedsfd(eeB dsfdedtfd(eeB dtfdedufd(eeB dufdedvfd(eeB dvfdedwfd(eeB dwfdeeB dfdeeB dfdeeB dfdeeB dfdedrfd)edrfd*edrfd+eeB drfdedsfd)edsfd*edsfd+eeB dsfdedtfd)edtfd*edtfd+eeB dtfdedufd)edufd*edufd+eeB dufd,edrfd-edrfd.edrfd/edrfd0edrfd1edrfd2edrfd3eeB drfd,edsfd-edsfd.edsfd/edsfd0edsfd1edsfd2edsfd3eeB dsfd,edtfd-edtfd.edtfd/edtfd0edtfd1edtfd2edtfd3eeB dtfd,edufd-edufd.edufd/edufd0edufd1edufd2edufd3eeB dufdedvfd)edvfd*edvfd+eeB dvfdedwfd)edwfd*edwfd+eeB dwfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfd,edvfd-edvfd.edvfd/edvfd0edvfd1edvfd2edvfd3eeB dvfd,edwfd-edwfd.edwfd/edwfd0edwfd1edwfd2edwfd3eeB dwfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdddddddddddddddddeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfddedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdeeB dfdeeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfdedfd(eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdddddddddddddddddeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdeeB dfdɐdʐdːd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐ddedfd(eeB dfdeeB dfdeeB d,fdeeB dfdeeB dfdeeB d-fdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB d/fdeeB dfdeeB dfdeeB dfdedfd)edfd*edfd+eeB dfdedfd(eeB dfded,fd(eeB d,fdedfd(eeB dfdedfd(eeB dfded-fd(eeB d-fdedfd(eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd)edfd*edfd+eeB dfded,fd)ed,fd*ed,fd+eeB d,fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed,fd-ed,fd.ed,fd/ed,fd0ed,fd1ed,fd2ed,fd3eeB d,fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfded-fd)ed-fd*ed-fd+eeB d-fdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed-fd-ed-fd.ed-fd/ed-fd0ed-fd1ed-fd2ed-fd3eeB d-fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfded/fd(eeB d/fdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfded/fd)ed/fd*ed/fd+eeB d/fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,ed/fd-ed/fd.ed/fd/ed/fd0ed/fd1ed/fd2ed/fd3eeB d/fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdeeB dfdeeB dfdeeB dfdeeB d*fdeeB d0fdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB dfdeeB d1fdeeB dfdeeB dfdeeB dfddedfd(eeB dfdedfd(eeB dfdedfd(eeB dfded*fd(eeB d*fded0fd(eeB d0fdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfded*fd)ed*fd*ed*fd+eeB d*fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed*fd-ed*fd.ed*fd/ed*fd0ed*fd1ed*fd2ed*fd3eeB d*fded0fd)ed0fd*ed0fd+eeB d0fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfd,ed0fd-ed0fd.ed0fd/ed0fd0ed0fd1ed0fd2ed0fd3eeB d0fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfded1fd(eeB d1fdedfd(eeB dfdedfd(eeB dfdedfd(eeB dfdddedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfded1fd)ed1fd*ed1fd+eeB d1fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed1fd-ed1fd.ed1fd/ed1fd0ed1fd1ed1fd2ed1fd3eeB d1fdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdedfd)edfd*edfd+eeB dfdeeB d.fdeeB dfdeeB d(fdedfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfded.fd(eeB d.fdedfd(eeB dfded(fd(eeB d(fdedfdedfded.fd)ed.fd*ed.fd+eeB d.fdedfd)edfd*edfd+eeB dfded(fd)ed(fd*ed(fd+eeB d(fdedfdedfdedfdedfd,ed.fd-ed.fd.ed.fd/ed.fd0ed.fd1ed.fd2ed.fd3eeB d.fd,edfd-edfd.edfd/edfd0edfd1edfd2edfd3eeB dfd,ed(fd-ed(fd.ed(fd/ed(fd0ed(fd1ed(fd2ed(fd3eeB d(fdedfdedfdedfdedfdedfdedfdedfdedfg ZdS (  a  
hpack/huffman_table
~~~~~~~~~~~~~~~~~~~

This implementation of a Huffman decoding table for HTTP/2 is essentially a
Python port of the work originally done for nghttp2's Huffman decoding. For
this reason, while this file is made available under the MIT license as is the
rest of this module, this file is undoubtedly a derivative work of the nghttp2
file ``nghttp2_hd_huffman_data.c``, obtained from
https://github.com/tatsuhiro-t/nghttp2/ at commit
d2b55ad1a245e1d1964579fa3fac36ebf3939e72. That work is made available under
the Apache 2.0 license under the following terms:

    Copyright (c) 2013 Tatsuhiro Tsujikawa

    Permission is hereby granted, free of charge, to any person obtaining
    a copy of this software and associated documentation files (the
    "Software"), to deal in the Software without restriction, including
    without limitation the rights to use, copy, modify, merge, publish,
    distribute, sublicense, and/or sell copies of the Software, and to
    permit persons to whom the Software is furnished to do so, subject to
    the following conditions:

    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

The essence of this approach is that it builds a finite state machine out of
4-bit nibbles of Huffman coded data. The input function passes 4 bits worth of
data to the state machine each time, which uses those 4 bits of data along with
the current accumulated state data to process the data given.

For the sake of efficiency, the in-memory representation of the states,
transitions, and result values of the state machine are represented as a long
list containing three-tuples. This list is enormously long, and viewing it as
an in-memory representation is not very clear, but it is laid out here in a way
that is intended to be *somewhat* more clear.

Essentially, the list is structured as 256 collections of 16 entries (one for
each nibble) of three-tuples. Each collection is called a "node", and the
zeroth collection is called the "root node". The state machine tracks one
value: the "state" byte.

For each nibble passed to the state machine, it first multiplies the "state"
byte by 16 and adds the numerical value of the nibble. This number is the index
into the large flat list.

The three-tuple that is found by looking up that index consists of three
values:

- a new state value, used for subsequent decoding
- a collection of flags, used to determine whether data is emitted or whether
  the state machine is complete.
- the byte value to emit, assuming that emitting a byte is required.

The flags are consulted, if necessary a byte is emitted, and then the next
nibble is used. This continues until the state machine believes it has
completely Huffman-decoded the data.

This approach has relatively little indirection, and therefore performs
relatively well, particularly on implementations like PyPy where the cost of
loops at the Python-level is not too expensive. The total number of loop
iterations is 4x the number of bytes passed to the decoder.
   )HPACKDecodingErrorc                 C   s   | sdS d}d}t  }t | } | D ]}|d |d?  }t| \}}}|t@ rTtd|t@ rf|| |d |d@  }t| \}}}|t@ rtd|t@ r"|| q"|t@ stdt|S )zr
    Given a bytestring of Huffman-encoded data for HPACK, returns a bytestring
    of the decompressed data.
                  zInvalid Huffman String   zIncomplete Huffman string)	bytearrayHUFFMAN_TABLEHUFFMAN_FAILr   HUFFMAN_EMIT_SYMBOLappendHUFFMAN_COMPLETEbytes)Zhuffman_stringstateflagsZdecoded_bytesZ
input_byteindexZoutput_byte r   R/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/hpack/huffman_table.pydecode_huffmanO   s,    
r      r   )r   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )r   r   r   )   r   r   )   r   r   )   r   r   )    r   r   )#   r   r   )*   r   r   )1   r   r   )9   r   r   @   r   0   r!   2   a   c   e   i   o   s   t   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r      	      (         
   r         )   8   r   %   -   .   /   3   4   5   6   7   r"   )   r   r   )   r   r   )   r   r   )   r   r   )!   r   r   )"   r   r   )$   r   r   )r>   r   r   )+   r   r   )r@   r   r   )r%   r   r   )rD   r   r   ):   r   r   )=   r   r   )A   r   r   D   rP   rQ   _   b   d   f   g   h   l   m   n   p   r   u   )&   r   r   )'   r   r   rO   B   C   ),   r   r   )r?   r   r   )rA   r   r   )r$   r   r   )rB   r   r   )rC   r   r   )rE   r   r   )rF   r   r   );   r   r   )<   r   r   )>   r   r   )?   r   r   )ra   r   r   )rb   r   r   )E   r   r   H   rh   F   G   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   Y   j   k   q   v   w   x   y   z   )rj   r   r   )rk   r   r   )rl   r   r   r_   r    rc   rd   X   Z   )rn   r   r   )rq   r   r   )ro   r   r   )rp   r   r   )rr   r   r   )rt   r   r   rK   rL   rg   )rs   r   r   )ru   r   r   )rw   r   r   r`   rN   |   )rv   r   r   )rx   r   r   )r   r   r   r   rf   )ry   r   r   )rz   r   r   )r{   r   r   )r   r   r   rM   [   ]   ~   )r   r   r   )\   r   r   ^   }   )r   r   r   )r   r   r   re   `   {   )rS   r   r   )r   r   r   )r[   r   r   )r&   r   r   )r(   r   r   )r*   r   r   )   r   r   )rT   r   r   )r'   r   r   )rV   r   r   )r)   r   r   )r\   r   r   )r   r   r   )   r   r   )   r   r   r         )rU   r   r   )rW   r   r   )rX   r   r   )r|   r   r   )r}   r   r   )r~   r   r   )r,   r   r   )r   r   r   )r   r   r   )   r   r   )   r   r   )   r   r   )   r   r                           )rY   r   r   )rZ   r   r   r            )r]   r   r   )r+   r   r   )r^   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )r   r   r   )   r   r   )   r   r                              )r   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   r   r   r   r   r   r   r               r   r      )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r      r               r                  )   r   r   )   r   r   )   r   r   )   r   r   r   r   r   r   r   r   r   )   r   r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )r   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r         r            )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )   r   r   )r   r   r   )   r   r   r   r   r   r   r   r                  )r   r   r   )r   r   r   )   r   r   )r   r   r   )   r   r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   r   r         )r   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )   r   r   )r   r   r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   r   r   r   r   r   r   r   r         r               )r   r   r   r   r   )   r   r   )   r   r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )   r   r   )   r   r   r   r  r  r  r  r            r   r     r              )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r  r   r   )r   r   r   )r  r   r   )r	  r   r   )r
  r   r   )   r   r   )r  r   r   )r  r   r   r   r   r   r   r   r.   r   r/   r0   r   r1   r2   r   rG   rH   r   rI   rJ   r   r   r  )r  r   r   )r  r   r   )r   r   r   r-   N)__doc__
exceptionsr   r   r   r   r
   r	   r   r   r   r   <module>   sR   G/









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































                                   