+
+ Subscription Canceled
+Your subscription process has been canceled. You can subscribe anytime from our pricing page.
+ Back to Pricing +diff --git a/cancel.php b/cancel.php new file mode 100644 index 0000000..5452c5a --- /dev/null +++ b/cancel.php @@ -0,0 +1,30 @@ + + + +
+ + +Your subscription process has been canceled. You can subscribe anytime from our pricing page.
+ Back to Pricing +Plan:
+Status:
+ +Next Billing Date:
+ + +You are currently on the Free plan.
+ Upgrade to Pro + +| Title | +Artist | +Uploaded On | +Action | +
|---|---|---|---|
| You haven't uploaded any songs yet. | +|||
| + | + | + | Generate Certificate | +
| + | This file and the 14 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files. Col | +
Source http://www.adobe.com/devnet/font/#pcfi
+ + \ No newline at end of file diff --git a/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.png b/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.png new file mode 100644 index 0000000..771a1a3 Binary files /dev/null and b/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.png differ diff --git a/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.svg b/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.svg new file mode 100644 index 0000000..83ba7e7 --- /dev/null +++ b/dompdf/vendor/dompdf/dompdf/lib/res/broken_image.svg @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/dompdf/vendor/dompdf/dompdf/lib/res/html.css b/dompdf/vendor/dompdf/dompdf/lib/res/html.css new file mode 100644 index 0000000..151a350 --- /dev/null +++ b/dompdf/vendor/dompdf/dompdf/lib/res/html.css @@ -0,0 +1,526 @@ +/** + * dompdf default stylesheet. + * + * @package dompdf + * @link https://github.com/dompdf/dompdf + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * + * Portions from Mozilla + * @link https://dxr.mozilla.org/mozilla-central/source/layout/style/res/html.css + * @license http://mozilla.org/MPL/2.0/ Mozilla Public License, v. 2.0 + * + * Portions from W3C + * @link https://www.w3.org/TR/css-ui-3/#default-style-sheet + * + */ + +@page { + margin: 1.2cm; +} + +html { + display: -dompdf-page !important; + counter-reset: page; +} + +/* blocks */ + +article, +aside, +details, +div, +dt, +figcaption, +footer, +form, +header, +hgroup, +main, +nav, +noscript, +section, +summary { + display: block; +} + +body { + page-break-before: avoid; + display: block !important; + counter-increment: page; +} + +p, dl, multicol { + display: block; + margin: 1em 0; +} + +dd { + display: block; + margin-left: 40px; +} + +blockquote, figure { + display: block; + margin: 1em 40px; +} + +address { + display: block; + font-style: italic; +} + +center { + display: block; + text-align: center; +} + +blockquote[type=cite] { + display: block; + margin: 1em 0; + padding-left: 1em; + border-left: solid; + border-color: blue; + border-width: thin; +} + +h1, h2, h3, h4, h5, h6 { + display: block; + font-weight: bold; +} + +h1 { + font-size: 2em; + margin: .67em 0; +} + +h2 { + font-size: 1.5em; + margin: .83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +listing { + display: block; + font-family: fixed; + font-size: medium; + white-space: pre; + margin: 1em 0; +} + +plaintext, pre, xmp { + display: block; + font-family: fixed; + white-space: pre; + margin: 1em 0; +} + +/* tables */ + +table { + display: table; + border-spacing: 2px; + border-collapse: separate; + margin-top: 0; + margin-bottom: 0; + text-indent: 0; + text-align: left; /* quirk */ +} + +table[border] { + border: outset gray; +} + +table[border] td, +table[border] th { + border: 1px inset gray; +} + +table[border="0"] td, +table[border="0"] th { + border-width: 0; +} + +/* make sure backgrounds are inherited in tables -- see bug 4510 */ +td, th, tr { + background: inherit; +} + +/* caption inherits from table not table-outer */ +caption { + display: table-caption; + text-align: center; +} + +tr { + display: table-row; + vertical-align: inherit; +} + +col { + display: table-column; +} + +colgroup { + display: table-column-group; +} + +tbody { + display: table-row-group; + vertical-align: middle; +} + +thead { + display: table-header-group; + vertical-align: middle; +} + +tfoot { + display: table-footer-group; + vertical-align: middle; +} + +/* To simulate tbody auto-insertion */ +table > tr { + vertical-align: middle; +} + +td { + display: table-cell; + vertical-align: inherit; + text-align: inherit; + padding: 1px; +} + +th { + display: table-cell; + vertical-align: inherit; + text-align: center; + font-weight: bold; + padding: 1px; +} + +/* inlines */ + +q::before { + content: open-quote; +} + +q::after { + content: close-quote; +} + +:link { + color: #00c; + text-decoration: underline; +} + +b, strong { + font-weight: bolder; +} + +i, cite, em, var, dfn { + font-style: italic; +} + +tt, code, kbd, samp { + font-family: fixed; +} + +u, ins { + text-decoration: underline; +} + +s, strike, del { + text-decoration: line-through; +} + +big { + font-size: larger; +} + +small { + font-size: smaller; +} + +sub { + vertical-align: sub; + font-size: smaller; + line-height: normal; +} + +sup { + vertical-align: super; + font-size: smaller; + line-height: normal; +} + +nobr { + white-space: nowrap; +} + +mark { + background: yellow; + color: black; +} + +/* titles */ + +abbr[title], acronym[title] { + text-decoration: dotted underline; +} + +/* lists */ + +ul, menu, dir { + display: block; + list-style-type: disc; + margin: 1em 0; + padding-left: 40px; +} + +ol { + display: block; + list-style-type: decimal; + margin: 1em 0; + padding-left: 40px; +} + +li { + display: list-item; +} + +/*li::before { + display: -dompdf-list-bullet !important; + content: counter(-dompdf-default-counter) ". "; + padding-right: 0.5em; +}*/ + +/* nested lists have no top/bottom margins */ +:matches(ul, ol, dir, menu, dl) ul, +:matches(ul, ol, dir, menu, dl) ol, +:matches(ul, ol, dir, menu, dl) dir, +:matches(ul, ol, dir, menu, dl) menu, +:matches(ul, ol, dir, menu, dl) dl { + margin-top: 0; + margin-bottom: 0; +} + +/* 2 deep unordered lists use a circle */ +:matches(ul, ol, dir, menu) ul, +:matches(ul, ol, dir, menu) menu, +:matches(ul, ol, dir, menu) dir { + list-style-type: circle; +} + +/* 3 deep (or more) unordered lists use a square */ +:matches(ul, ol, dir, menu) :matches(ul, ol, dir, menu) ul, +:matches(ul, ol, dir, menu) :matches(ul, ol, dir, menu) menu, +:matches(ul, ol, dir, menu) :matches(ul, ol, dir, menu) dir { + list-style-type: square; +} + +/* forms */ +/* From https://www.w3.org/TR/css-ui-3/#default-style-sheet */ +form { + display: block; +} + +input, button, select { + display: inline-block; + font-family: sans-serif; +} + +input, button, textarea, select { + background: #FFF; + border: 1px solid #999; + padding: 2px; + margin: 2px; +} + +input, select { + width: 12em; +} + +input[type=hidden] { + display: none !important; +} + +input[type=checkbox], +input[type=radio], +input[type=image] { + width: auto; + border: none; + padding: 0; + margin: 0; +} + +input[type=button], +input[type=submit], +input[type=reset], +input[type=file], +button { + width: auto; + background: #CCC; + text-align: center; +} + +input[type=file] { + width: 8em; +} + +input::before { + content: attr(value); +} + +input[type=image][alt]::before { + content: attr(alt); +} + +input[type=file]::before { + content: "Choose a file"; +} + +input[type=password][value]::before { + font-family: "DejaVu Sans" !important; + content: "\2022\2022\2022\2022\2022\2022\2022\2022"; + line-height: 1em; +} + +input[type=password][value=""]::before { + content: none; +} + +input[type=checkbox], +input[type=radio], +select::after { + font-family: "DejaVu Sans" !important; + font-size: 18px; + line-height: 1; +} + +input[type=checkbox]::before { + content: "\2610"; +} + +input[type=checkbox][checked]::before { + content: "\2611"; +} + +input[type=radio]::before { + content: "\25CB"; +} + +input[type=radio][checked]::before { + content: "\25C9"; +} + +textarea { + display: block; + height: 3em; + overflow: hidden; + font-family: monospace; + white-space: pre-wrap; + overflow-wrap: break-word; +} + +select { + position: relative !important; + overflow: hidden !important; +} + +select::after { + position: absolute; + right: 0; + top: 0; + height: 5em; + width: 1.4em; + text-align: center; + background: #CCC; + content: "\25BE"; +} + +select option { + display: none; +} + +select option[selected] { + display: inline; +} + +fieldset { + display: block; + margin: 0.6em 2px 2px; + padding: 0.75em; + border: 1pt groove #666; + position: relative; +} + +fieldset > legend { + position: absolute; + top: -0.6em; + left: 0.75em; + padding: 0 0.3em; + background: white; +} + +legend { + display: inline-block; +} + +/* leafs */ + +hr { + display: block; + height: 0; + border: 1px inset; + margin: 0.5em auto 0.5em auto; +} + +hr[size="1"] { + border-style: solid none none none; +} + +iframe { + border: 2px inset; +} + +noframes { + display: block; +} + +br { + display: -dompdf-br; +} + +img, img_generated { + display: -dompdf-image !important; +} + +dompdf_generated { + display: inline; +} + +/* hidden elements */ +area, base, basefont, head, meta, script, style, title, +noembed, param { + display: none; + -dompdf-keep: yes; +} diff --git a/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc b/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc new file mode 100644 index 0000000..49afbfe Binary files /dev/null and b/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc differ diff --git a/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc.LICENSE b/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc.LICENSE new file mode 100644 index 0000000..0b5ff3b --- /dev/null +++ b/dompdf/vendor/dompdf/dompdf/lib/res/sRGB2014.icc.LICENSE @@ -0,0 +1,5 @@ +The copyright owner and terms of use of an ICC profile are normally identified in the Creator field in the profile header and in the Copyright tag. Where ICC is the copyright owner, the following license terms apply: + +"This profile is made available by the International Color Consortium, and may be copied, distributed, embedded, made, used, and sold without restriction. Altered versions of this profile shall have the original identification and copyright information removed and shall not be misrepresented as the original profile." + +(reference https://www.color.org/profiles2.xalter#license) \ No newline at end of file diff --git a/dompdf/vendor/dompdf/dompdf/phpunit.xml b/dompdf/vendor/dompdf/dompdf/phpunit.xml new file mode 100644 index 0000000..7233032 --- /dev/null +++ b/dompdf/vendor/dompdf/dompdf/phpunit.xml @@ -0,0 +1,20 @@ + +';
+ foreach ($_dompdf_warnings as $msg) {
+ echo $msg . "\n";
+ }
+
+ if ($canvas instanceof CPDF) {
+ echo $canvas->get_cpdf()->messages;
+ }
+ echo '';
+ flush();
+ }
+
+ if ($logOutputFile && is_writable($logOutputFile)) {
+ $this->writeLog($logOutputFile, $startTime);
+ ob_end_clean();
+ }
+
+ $this->restorePhpConfig();
+ }
+
+ /**
+ * Writes the output buffer in the log file
+ *
+ * @param string $logOutputFile
+ * @param float $startTime
+ */
+ private function writeLog(string $logOutputFile, float $startTime): void
+ {
+ $frames = Frame::$ID_COUNTER;
+ $memory = memory_get_peak_usage(true) / 1024;
+ $time = (microtime(true) - $startTime) * 1000;
+
+ $out = sprintf(
+ "%6d" .
+ "%10.2f KB" .
+ "%10.2f ms" .
+ " " .
+ ($this->quirksmode ? " ON" : "OFF") .
+ "'" . mb_substr($tmp, 0, 70, "UTF-8") . + (mb_strlen($tmp, "UTF-8") > 70 ? "..." : "") . "'"; + } elseif ($css_class = $this->_node->getAttribute("class")) { + $str .= "CSS class: '$css_class'
" . $this->_style->__toString() . ""; + + if ($this->_decorator instanceof FrameDecorator\Block) { + $str .= "Lines:
";
+ foreach ($this->_decorator->get_line_boxes() as $line) {
+ foreach ($line->get_frames() as $frame) {
+ if ($frame instanceof FrameDecorator\Text) {
+ $str .= "\ntext: ";
+ $str .= "'" . htmlspecialchars($frame->get_text()) . "'";
+ } else {
+ $str .= "\nBlock: " . $frame->get_node()->nodeName . " (" . spl_object_hash($frame->get_node()) . ")";
+ }
+ }
+
+ $str .=
+ "\ny => " . $line->y . "\n" .
+ "w => " . $line->w . "\n" .
+ "h => " . $line->h . "\n" .
+ "left => " . $line->left . "\n" .
+ "right => " . $line->right . "\n";
+ }
+ $str .= "";
+ }
+
+ $str .= "\n";
+ if (php_sapi_name() === "cli") {
+ $str = strip_tags(str_replace(["" . print_r($mixed, true) . ""; + } + + if (php_sapi_name() !== "cli") { + echo "
";
+ }
+
+ print_r($mixed);
+
+ if (php_sapi_name() !== "cli") {
+ echo "";
+ } else {
+ echo "\n";
+ }
+
+ flush();
+
+ return null;
+ }
+
+ /**
+ * Builds a full url given a protocol, hostname, base path and URL.
+ *
+ * When the URL provided is a local file reference from the root of the filesystem
+ * (i.e., beginning with a "/") and the file does not resolve to a valid path,
+ * the path is validated against the chroot paths (if provided).
+ *
+ * @param string $protocol
+ * @param string $host
+ * @param string $base_path
+ * @param string $url
+ * @param array $chrootDirs array of strings representing the chroot paths
+ * @return string
+ */
+ public static function build_url($protocol, $host, $base_path, $url, $chrootDirs = [])
+ {
+ $protocol = mb_strtolower($protocol, "UTF-8");
+ if (empty($protocol)) {
+ $protocol = "file://";
+ }
+ if ($url === "") {
+ return null;
+ }
+
+ $url_lc = mb_strtolower($url, "UTF-8");
+
+ // Is the url already fully qualified, a Data URI, or a reference to a named anchor?
+ // File-protocol URLs may require additional processing (e.g. for URLs with a relative path)
+ if (
+ (
+ mb_strpos($url_lc, "://") !== false
+ && !in_array(substr($url_lc, 0, 7), ["file://", "phar://"], true)
+ )
+ || mb_substr($url_lc, 0, 1) === "#"
+ || mb_strpos($url_lc, "data:") === 0
+ || mb_strpos($url_lc, "mailto:") === 0
+ || mb_strpos($url_lc, "tel:") === 0
+ ) {
+ return $url;
+ }
+
+ $res = "";
+ if (strpos($url_lc, "file://") === 0) {
+ $url = substr($url, 7);
+ $protocol = "file://";
+ } elseif (strpos($url_lc, "phar://") === 0) {
+ $res = substr($url, strpos($url_lc, ".phar")+5);
+ $url = substr($url, 7, strpos($url_lc, ".phar")-2);
+ $protocol = "phar://";
+ }
+
+ $ret = "";
+
+ $is_local_path = in_array($protocol, ["file://", "phar://"], true);
+
+ if ($is_local_path) {
+ //On Windows local file, an abs path can begin also with a '\' or a drive letter and colon
+ //drive: followed by a relative path would be a drive specific default folder.
+ //not known in php app code, treat as abs path
+ //($url[1] !== ':' || ($url[2]!=='\\' && $url[2]!=='/'))
+ if ($url[0] !== '/' && (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' || (mb_strlen($url) > 1 && $url[0] !== '\\' && $url[1] !== ':'))) {
+ // For rel path and local access we ignore the host, and run the path through realpath()
+ $ret .= realpath($base_path) . '/';
+ }
+ $ret .= $url;
+ $ret = preg_replace('/\?(.*)$/', "", $ret);
+
+ $filepath = realpath($ret);
+ if ($filepath !== false) {
+ $ret = "$protocol$filepath$res";
+
+ return $ret;
+ }
+
+ if ($url[0] == '/' && !empty($chrootDirs)) {
+ foreach ($chrootDirs as $dir) {
+ $ret = realpath($dir) . $url;
+ $ret = preg_replace('/\?(.*)$/', "", $ret);
+
+ if ($filepath = realpath($ret)) {
+ $ret = "$protocol$filepath$res";
+
+ return $ret;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ $ret = $protocol;
+ // Protocol relative urls (e.g. "//example.org/style.css")
+ if (strpos($url, '//') === 0) {
+ $ret .= substr($url, 2);
+ //remote urls with backslash in html/css are not really correct, but lets be genereous
+ } elseif ($url[0] === '/' || $url[0] === '\\') {
+ // Absolute path
+ $ret .= $host . $url;
+ } else {
+ // Relative path
+ //$base_path = $base_path !== "" ? rtrim($base_path, "/\\") . "/" : "";
+ $ret .= $host . $base_path . $url;
+ }
+
+ // URL should now be complete, final cleanup
+ $parsed_url = parse_url($ret);
+
+ // reproduced from https://www.php.net/manual/en/function.parse-url.php#106731
+ $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
+ $host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
+ $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
+ $user = isset($parsed_url['user']) ? $parsed_url['user'] : '';
+ $pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : '';
+ $pass = ($user || $pass) ? "$pass@" : '';
+ $path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
+ $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
+ $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
+
+ // partially reproduced from https://stackoverflow.com/a/1243431/264628
+ /* replace '//' or '/./' or '/foo/../' with '/' */
+ $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
+ for ($n=1; $n>0; $path=preg_replace($re, '/', $path, -1, $n)) {}
+
+ $ret = "$scheme$user$pass$host$port$path$query$fragment";
+
+ return $ret;
+ }
+
+ /**
+ * Builds a HTTP Content-Disposition header string using `$dispositionType`
+ * and `$filename`.
+ *
+ * If the filename contains any characters not in the ISO-8859-1 character
+ * set, a fallback filename will be included for clients not supporting the
+ * `filename*` parameter.
+ *
+ * @param string $dispositionType
+ * @param string $filename
+ * @return string
+ */
+ public static function buildContentDispositionHeader($dispositionType, $filename)
+ {
+ $encoding = mb_detect_encoding($filename);
+ $fallbackfilename = mb_convert_encoding($filename, "ISO-8859-1", $encoding);
+ $fallbackfilename = str_replace("\"", "", $fallbackfilename);
+ $encodedfilename = rawurlencode($filename);
+
+ $contentDisposition = "Content-Disposition: $dispositionType; filename=\"$fallbackfilename\"";
+ if ($fallbackfilename !== $filename) {
+ $contentDisposition .= "; filename*=UTF-8''$encodedfilename";
+ }
+
+ return $contentDisposition;
+ }
+
+ /**
+ * Converts decimal numbers to roman numerals.
+ *
+ * As numbers larger than 3999 (and smaller than 1) cannot be represented in
+ * the standard form of roman numerals, those are left in decimal form.
+ *
+ * See https://en.wikipedia.org/wiki/Roman_numerals#Standard_form
+ *
+ * @param int|string $num
+ *
+ * @throws Exception
+ * @return string
+ */
+ public static function dec2roman($num): string
+ {
+
+ static $ones = ["", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"];
+ static $tens = ["", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"];
+ static $hund = ["", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"];
+ static $thou = ["", "m", "mm", "mmm"];
+
+ if (!is_numeric($num)) {
+ throw new Exception("dec2roman() requires a numeric argument.");
+ }
+
+ if ($num >= 4000 || $num <= 0) {
+ return (string) $num;
+ }
+
+ $num = strrev((string)$num);
+
+ $ret = "";
+ switch (mb_strlen($num)) {
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case 4:
+ $ret .= $thou[$num[3]];
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case 3:
+ $ret .= $hund[$num[2]];
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case 2:
+ $ret .= $tens[$num[1]];
+ /** @noinspection PhpMissingBreakStatementInspection */
+ case 1:
+ $ret .= $ones[$num[0]];
+ default:
+ break;
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Converts decimal numbers to base26 (hexavigesimal)
+ * represented in lower case letters.
+ *
+ * @param int|string $num
+ *
+ * @throws Exception
+ * @return string
+ */
+ public static function dec2base26($num): string
+ {
+ if (!is_numeric($num)) {
+ throw new Exception("dec2base26() requires a numeric argument.");
+ }
+
+ $num = intval($num);
+
+ if ($num <= 0) {
+ return (string) $num;
+ }
+
+ $ret = '';
+ while ($num > 0) {
+ $remainder = ($num - 1) % 26;
+ $ret = chr(97 + $remainder) . $ret;
+ $num = intval(($num - 1) / 26);
+ }
+ return $ret;
+ }
+
+ /**
+ * Restrict a length to the given range.
+ *
+ * If min > max, the result is min.
+ *
+ * @param float $length
+ * @param float $min
+ * @param float $max
+ *
+ * @return float
+ */
+ public static function clamp(float $length, float $min, float $max): float
+ {
+ return max($min, min($length, $max));
+ }
+
+ /**
+ * Determines whether $value is a percentage or not
+ *
+ * @param string|float|int $value
+ *
+ * @return bool
+ */
+ public static function is_percent($value): bool
+ {
+ return is_string($value) && false !== mb_strpos($value, "%");
+ }
+
+ /**
+ * Parses a data URI scheme
+ * http://en.wikipedia.org/wiki/Data_URI_scheme
+ *
+ * @param string $data_uri The data URI to parse
+ *
+ * @return array|bool The result with charset, mime type and decoded data
+ */
+ public static function parse_data_uri($data_uri)
+ {
+ $expression = '/^data:(?P