git: 2ab538a6c3bd - main - devel/phorgeit-phorge: New port

From: Michael Gmelin <grembo_at_FreeBSD.org>
Date: Sun, 24 Mar 2024 10:25:30 UTC
The branch main has been updated by grembo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2ab538a6c3bdf8ebba18ac07ea4e059f41ea075e

commit 2ab538a6c3bdf8ebba18ac07ea4e059f41ea075e
Author:     Michael Gmelin <grembo@FreeBSD.org>
AuthorDate: 2024-03-24 10:23:37 +0000
Commit:     Michael Gmelin <grembo@FreeBSD.org>
CommitDate: 2024-03-24 10:23:37 +0000

    devel/phorgeit-phorge: New port
---
 devel/Makefile                                     |    1 +
 devel/phorgeit-phorge/Makefile                     |   92 +
 devel/phorgeit-phorge/distinfo                     |    3 +
 devel/phorgeit-phorge/files/local.json.sample      |   19 +
 ...externals_stripe-php_lib_Stripe_ApiResource.php |   11 +
 ..._stripe-php_lib_Stripe_SingletonApiResource.php |   11 +
 .../files/patch-scripts_celerity_install__merge.sh |    8 +
 ...ications_pholio_remarkup_PholioRemarkupRule.php |   11 +
 ...pplications_pholio_view_PholioMockEmbedView.php |   12 +
 ...controller_PhabricatorProjectViewController.php |   11 +
 ..._editor_PhabricatorProjectTransactionEditor.php |   36 +
 ..._search_engine_PhabricatorProfileMenuEngine.php |   22 +
 .../patch-src_docs_user_userguide_remarkup.diviner |   20 +
 ...fixture_PhabricatorStorageFixtureScopeGuard.php |   20 +
 devel/phorgeit-phorge/files/phd.in                 |   54 +
 devel/phorgeit-phorge/files/phorge-sudoers.sample  |    4 +
 devel/phorgeit-phorge/files/pkg-message.in         |   92 +
 devel/phorgeit-phorge/pkg-descr                    |    2 +
 devel/phorgeit-phorge/pkg-plist                    | 9058 ++++++++++++++++++++
 19 files changed, 9487 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index d26f448fdc6b..185ee2c426eb 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4115,6 +4115,7 @@
     SUBDIR += phasar
     SUBDIR += phorgeit-arcanist
     SUBDIR += phorgeit-arcanist-lib
+    SUBDIR += phorgeit-phorge
     SUBDIR += php-composer
     SUBDIR += php-geshi
     SUBDIR += php-ice37
diff --git a/devel/phorgeit-phorge/Makefile b/devel/phorgeit-phorge/Makefile
new file mode 100644
index 000000000000..a96681d9a97b
--- /dev/null
+++ b/devel/phorgeit-phorge/Makefile
@@ -0,0 +1,92 @@
+PORTNAME=	phorge
+PORTVERSION=	20240324
+CATEGORIES=	devel
+PKGNAMEPREFIX=	phorgeit
+PKGNAMESUFFIX=	${PHP_PKGNAMESUFFIX}
+
+MAINTAINER=	grembo@FreeBSD.org
+COMMENT=	Open source, software engineering platform
+WWW=		https://www.phorge.it
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	phorgeit-arcanist-lib${PHP_PKGNAMESUFFIX}>=20240304:devel/phorgeit-arcanist-lib@${PHP_FLAVOR} \
+		git:devel/git
+
+CONFLICTS=	phabricator-php??
+
+USES=		cpe php:cli,flavors shebangfix
+CPE_VENDOR=	phacility
+
+SHEBANG_FILES=	resources/timezones/*.php \
+		scripts/*.php \
+		scripts/almanac/*.php \
+		scripts/cache/*.php \
+		scripts/celerity/*.php \
+		scripts/daemon/*.php \
+		scripts/daemon/exec/exec_daemon.php \
+		scripts/diviner/*.php \
+		scripts/drydock/*.php \
+		scripts/fact/*.php \
+		scripts/files/*.php \
+		scripts/lipsum/*.php \
+		scripts/mail/*.php \
+		scripts/repository/*.php \
+		scripts/search/*.php \
+		scripts/setup/*.php \
+		scripts/ssh/*.php \
+		scripts/sql/*.php \
+		scripts/ssh/*.php \
+		scripts/symbols/*.php \
+		scripts/util/*.php \
+		support/aphlict/server/*.php
+
+USE_PHP=	ctype curl fileinfo filter iconv mbstring mysqli \
+		pcntl posix zip
+
+OPTIONS_DEFINE=	GD OPCACHE
+OPTIONS_DEFAULT=GD OPCACHE
+OPCACHE_DESC?=	Use OPcache to improve performance
+
+GD_USE=		PHP=gd
+
+OPCACHE_RUN_DEPENDS=	${PHPBASE}/lib/php/${PHP_EXT_DIR}/apcu.so:devel/pecl-APCu@${PHP_FLAVOR}
+OPCACHE_USE=		PHP=opcache
+
+USE_GITHUB=	yes
+NO_BUILD=	yes
+NO_ARCH=	yes
+USE_RC_SUBR=	phd
+SUB_FILES=	pkg-message
+PORTSCOUT=	ignore:1
+GH_ACCOUNT=	phorgeit
+GH_TAGNAME=	d42b3eb
+
+PHP_DESTDIR=	lib/php/phorge
+
+post-patch:
+	@${SED} 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+		${FILESDIR}/phorge-sudoers.sample > ${WRKSRC}/resources/sshd/phorge-sudoers.sample
+	@${REINPLACE_CMD} \
+		's|/path/to/phorge|${LOCALBASE}/lib/php/phorge|g; \
+		 s|vcs-user|git|g' \
+		${WRKSRC}/resources/sshd/phorge-ssh-hook.sh
+	@${REINPLACE_CMD} \
+		's|/usr/libexec/phorge-ssh-hook.sh|${LOCALBASE}/lib/php/phorge/resources/sshd/phorge-ssh-hook.sh|; \
+		 s|vcs-user|git|g; \
+		 s|PrintLastLog no||g; \
+		 s|PidFile /var/run/sshd-phorge.pid||g' \
+		${WRKSRC}/resources/sshd/sshd_config.phorge.example
+	@${REINPLACE_CMD} \
+		's|%%PHP_CMD%%|${PREFIX}/bin/php|g' \
+		${WRKSRC}/scripts/celerity/install_merge.sh \
+		${WRKSRC}/src/infrastructure/testing/fixture/PhabricatorStorageFixtureScopeGuard.php
+
+do-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/${PHP_DESTDIR}/conf/local
+	${INSTALL_DATA} ${FILESDIR}/local.json.sample \
+		${STAGEDIR}${PREFIX}/${PHP_DESTDIR}/conf/local
+	cd ${WRKSRC} ; ${PAX} -rw * ${STAGEDIR}${PREFIX}/${PHP_DESTDIR}
+
+.include <bsd.port.mk>
diff --git a/devel/phorgeit-phorge/distinfo b/devel/phorgeit-phorge/distinfo
new file mode 100644
index 000000000000..52b38d041346
--- /dev/null
+++ b/devel/phorgeit-phorge/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1711264873
+SHA256 (phorgeit-phorge-20240324-d42b3eb_GH0.tar.gz) = 8927af83ffc011013fd1aebb1f52c5fd871e78195fc43cec1755e63b59ec53e0
+SIZE (phorgeit-phorge-20240324-d42b3eb_GH0.tar.gz) = 9365309
diff --git a/devel/phorgeit-phorge/files/local.json.sample b/devel/phorgeit-phorge/files/local.json.sample
new file mode 100644
index 000000000000..6a76bffc6d08
--- /dev/null
+++ b/devel/phorgeit-phorge/files/local.json.sample
@@ -0,0 +1,19 @@
+{
+  "phd.user": "www",
+  "phd.log-directory": "/var/log",
+  "mysql.host": "localhost",
+  "mysql.port": "3306",
+  "mysql.user": "phabric",
+  "mysql.pass": "SECRET",
+  "repository.default-local-path": "/var/phorge/repo",
+  "storage.local-disk.path": "/var/phorge/files",
+  "phabricator.base-uri": "http://phorge.example.com/",
+  "phabricator.show-prototypes": true,
+  "diffusion.ssh-user": "git",
+  "diffusion.ssh-port": 22,
+  "phpmailer.smtp-host": "mail.example.com",
+  "phpmailer.smtp-port": 25,
+  "phpmailer.smtp-user": "phorge@example.com",
+  "phpmailer.smtp-password": "SECRET",
+  "phpmailer.smtp-protocol": "tls"
+}
diff --git a/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_ApiResource.php b/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_ApiResource.php
new file mode 100644
index 000000000000..9c1a5f105445
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_ApiResource.php
@@ -0,0 +1,11 @@
+--- externals/stripe-php/lib/Stripe/ApiResource.php.orig	2021-12-18 19:11:09 UTC
++++ externals/stripe-php/lib/Stripe/ApiResource.php
+@@ -59,7 +59,7 @@ abstract class Stripe_ApiResource extends Stripe_Objec
+   public static function classUrl($class)
+   {
+     $base = self::_scopedLsb($class, 'className', $class);
+-    return "/v1/${base}s";
++    return "/v1/{$base}s";
+   }
+ 
+   /**
diff --git a/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_SingletonApiResource.php b/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_SingletonApiResource.php
new file mode 100644
index 000000000000..9f3d08b484f5
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-externals_stripe-php_lib_Stripe_SingletonApiResource.php
@@ -0,0 +1,11 @@
+--- externals/stripe-php/lib/Stripe/SingletonApiResource.php.orig	2021-12-18 19:11:09 UTC
++++ externals/stripe-php/lib/Stripe/SingletonApiResource.php
+@@ -16,7 +16,7 @@ abstract class Stripe_SingletonApiResource extends Str
+   public static function classUrl($class)
+   {
+     $base = self::className($class);
+-    return "/v1/${base}";
++    return "/v1/{$base}";
+   }
+ 
+   /**
diff --git a/devel/phorgeit-phorge/files/patch-scripts_celerity_install__merge.sh b/devel/phorgeit-phorge/files/patch-scripts_celerity_install__merge.sh
new file mode 100644
index 000000000000..2d0644e038f9
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-scripts_celerity_install__merge.sh
@@ -0,0 +1,8 @@
+--- scripts/celerity/install_merge.sh.orig	2020-05-19 10:53:29 UTC
++++ scripts/celerity/install_merge.sh
+@@ -6,4 +6,4 @@ echo "resources/celerity/map.php merge=celerity" \
+ git config merge.celerity.name "Celerity Mapper"
+ 
+ git config merge.celerity.driver \
+-  'php $GIT_DIR/../bin/celerity map'
++  '%%PHP_CMD%% $GIT_DIR/../bin/celerity map'
diff --git a/devel/phorgeit-phorge/files/patch-src_applications_pholio_remarkup_PholioRemarkupRule.php b/devel/phorgeit-phorge/files/patch-src_applications_pholio_remarkup_PholioRemarkupRule.php
new file mode 100644
index 000000000000..988860c864c5
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_applications_pholio_remarkup_PholioRemarkupRule.php
@@ -0,0 +1,11 @@
+--- src/applications/pholio/remarkup/PholioRemarkupRule.php.orig	2020-11-19 21:48:33 UTC
++++ src/applications/pholio/remarkup/PholioRemarkupRule.php
+@@ -75,6 +75,8 @@ final class PholioRemarkupRule extends PhabricatorObje
+       $opts = $parser->parse(substr($options, 1));
+ 
+       if (isset($opts['image'])) {
++        // PholioMockEmbedView shows only the first image passed.
++        // Keep "&" syntax for backwards compatibility.
+         $images = array_unique(
+           explode('&', preg_replace('/\s+/', '', $opts['image'])));
+ 
diff --git a/devel/phorgeit-phorge/files/patch-src_applications_pholio_view_PholioMockEmbedView.php b/devel/phorgeit-phorge/files/patch-src_applications_pholio_view_PholioMockEmbedView.php
new file mode 100644
index 000000000000..5c882601ff4f
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_applications_pholio_view_PholioMockEmbedView.php
@@ -0,0 +1,12 @@
+--- src/applications/pholio/view/PholioMockEmbedView.php.orig	2020-11-19 21:48:33 UTC
++++ src/applications/pholio/view/PholioMockEmbedView.php
+@@ -25,7 +25,8 @@ final class PholioMockEmbedView extends AphrontView {
+     $thumbnail = null;
+     if (!empty($this->images)) {
+       $images_to_show = array_intersect_key(
+-        $this->mock->getActiveImages(), array_flip($this->images));
++        mpull($mock->getActiveImages(), null, 'getID'),
++        array_flip($this->images));
+     }
+ 
+     $xform = PhabricatorFileTransform::getTransformByKey(
diff --git a/devel/phorgeit-phorge/files/patch-src_applications_project_controller_PhabricatorProjectViewController.php b/devel/phorgeit-phorge/files/patch-src_applications_project_controller_PhabricatorProjectViewController.php
new file mode 100644
index 000000000000..72d4ec69e293
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_applications_project_controller_PhabricatorProjectViewController.php
@@ -0,0 +1,11 @@
+--- src/applications/project/controller/PhabricatorProjectViewController.php.orig	2022-01-26 14:24:00 UTC
++++ src/applications/project/controller/PhabricatorProjectViewController.php
+@@ -39,7 +39,7 @@ final class PhabricatorProjectViewController
+         $controller_object = new PhabricatorProjectManageController();
+         break;
+       default:
+-        return $engine->buildResponse();
++        return $engine->buildResponse(true);
+     }
+ 
+     return $this->delegateToController($controller_object);
diff --git a/devel/phorgeit-phorge/files/patch-src_applications_project_editor_PhabricatorProjectTransactionEditor.php b/devel/phorgeit-phorge/files/patch-src_applications_project_editor_PhabricatorProjectTransactionEditor.php
new file mode 100644
index 000000000000..dac62c904051
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_applications_project_editor_PhabricatorProjectTransactionEditor.php
@@ -0,0 +1,36 @@
+--- src/applications/project/editor/PhabricatorProjectTransactionEditor.php.orig	2021-12-18 19:11:09 UTC
++++ src/applications/project/editor/PhabricatorProjectTransactionEditor.php
+@@ -352,10 +352,32 @@ final class PhabricatorProjectTransactionEditor
+       // parent project, since this is the governing rule.
+ 
+       $parent = $copy->getParentProject();
++      if ($parent != null) {
++        $parent_phid = $parent->getPHID();
++      } else { // can happen when using conduit API
++          foreach ($xactions as $xaction) {
++            if ($xaction->getTransactionType() != PhabricatorProjectMilestoneTransaction::TRANSACTIONTYPE) {
++              continue;
++            }
++            $parent_phid = (string)$xaction->getNewValue();
++            $project = id(new PhabricatorProjectQuery())
++              ->setViewer($this->getActor())
++              ->withPHIDs(array($parent_phid))
++              ->requireCapabilities(
++                array(
++                  PhabricatorPolicyCapability::CAN_VIEW,
++                  PhabricatorPolicyCapability::CAN_EDIT,
++                ))
++              ->executeOne();
+ 
++            $copy->attachParentProject($project);
++            $copy->setParentProjectPHID($parent_phid);
++        }
++      }
++
+       $parent = id(new PhabricatorProjectQuery())
+         ->setViewer($this->getActor())
+-        ->withPHIDs(array($parent->getPHID()))
++        ->withPHIDs(array($parent_phid))
+         ->needMembers(true)
+         ->executeOne();
+       $members = $parent->getMemberPHIDs();
diff --git a/devel/phorgeit-phorge/files/patch-src_applications_search_engine_PhabricatorProfileMenuEngine.php b/devel/phorgeit-phorge/files/patch-src_applications_search_engine_PhabricatorProfileMenuEngine.php
new file mode 100644
index 000000000000..cc794c9729a1
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_applications_search_engine_PhabricatorProfileMenuEngine.php
@@ -0,0 +1,22 @@
+--- src/applications/search/engine/PhabricatorProfileMenuEngine.php.orig	2022-01-26 14:23:11 UTC
++++ src/applications/search/engine/PhabricatorProfileMenuEngine.php
+@@ -99,7 +99,7 @@ abstract class PhabricatorProfileMenuEngine extends Ph
+     return $this->editMode;
+   }
+ 
+-  public function buildResponse() {
++  public function buildResponse($ignore_item_id = false) {
+     $controller = $this->getController();
+ 
+     $viewer = $controller->getViewer();
+@@ -130,6 +130,10 @@ abstract class PhabricatorProfileMenuEngine extends Ph
+       $item_id = $request->getURIData('id');
+     }
+ 
++    if ($ignore_item_id) {
++      $item_id = "";
++    }
++
+     $view_list = $this->newProfileMenuItemViewList();
+ 
+     if ($is_view) {
diff --git a/devel/phorgeit-phorge/files/patch-src_docs_user_userguide_remarkup.diviner b/devel/phorgeit-phorge/files/patch-src_docs_user_userguide_remarkup.diviner
new file mode 100644
index 000000000000..45287cb31288
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_docs_user_userguide_remarkup.diviner
@@ -0,0 +1,20 @@
+--- src/docs/user/userguide/remarkup.diviner.orig	2020-11-19 21:48:33 UTC
++++ src/docs/user/userguide/remarkup.diviner
+@@ -393,14 +393,13 @@ You can embed a Pholio mock by using braces to refer t
+ 
+   {M123}
+ 
+-By default the first four images from the mock set are displayed. This behavior
++By default the first image from the mock is are displayed. This behavior
+ can be overridden with the **image** option. With the **image** option you can
+-provide one or more image IDs to display.
++provide an image ID to display.
+ 
+-You can set the image (or images) to display like this:
++You can set the image to display like this:
+ 
+   {M123, image=12345}
+-  {M123, image=12345 & 6789}
+ 
+ == Embedding Pastes
+ 
diff --git a/devel/phorgeit-phorge/files/patch-src_infrastructure_testing_fixture_PhabricatorStorageFixtureScopeGuard.php b/devel/phorgeit-phorge/files/patch-src_infrastructure_testing_fixture_PhabricatorStorageFixtureScopeGuard.php
new file mode 100644
index 000000000000..939ee4915ed1
--- /dev/null
+++ b/devel/phorgeit-phorge/files/patch-src_infrastructure_testing_fixture_PhabricatorStorageFixtureScopeGuard.php
@@ -0,0 +1,20 @@
+--- src/infrastructure/testing/fixture/PhabricatorStorageFixtureScopeGuard.php.orig	2020-05-19 10:51:50 UTC
++++ src/infrastructure/testing/fixture/PhabricatorStorageFixtureScopeGuard.php
+@@ -11,7 +11,7 @@ final class PhabricatorStorageFixtureScopeGuard extend
+     $this->name = $name;
+ 
+     execx(
+-      'php %s upgrade --force --namespace %s',
++      '%%PHP_CMD%% %s upgrade --force --namespace %s',
+       $this->getStorageBinPath(),
+       $this->name);
+ 
+@@ -30,7 +30,7 @@ final class PhabricatorStorageFixtureScopeGuard extend
+     PhabricatorLiskDAO::closeAllConnections();
+ 
+     execx(
+-      'php %s destroy --force --namespace %s',
++      '%%PHP_CMD%% %s destroy --force --namespace %s',
+       $this->getStorageBinPath(),
+       $this->name);
+   }
diff --git a/devel/phorgeit-phorge/files/phd.in b/devel/phorgeit-phorge/files/phd.in
new file mode 100644
index 000000000000..52585a70117d
--- /dev/null
+++ b/devel/phorgeit-phorge/files/phd.in
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# PROVIDE: phd
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+#
+# Add the following line to /etc/rc.conf to enable phorge daemons:
+# phd_enable (bool):	Set to "NO" by default
+#			Set it to "YES" to enable phd
+# phd_fib (str):	Set an altered default network view for phd
+# phd_user (str):	User to run phorge daemons as
+
+. /etc/rc.subr
+
+name="phd"
+rcvar=phd_enable
+
+load_rc_config "$name"
+
+: ${phd_enable="NO"}
+: ${phd_user="www"}
+
+command="%%PREFIX%%/lib/php/phorge/bin/phd"
+
+extra_commands="launch list log"
+poll_cmd="phd_poll"
+stop_cmd="${command} stop"
+status_cmd="${command} status"
+restart_cmd="phd_restart"
+launch_cmd="${command} launch"
+list_cmd="${command} list"
+log_cmd="${command} log"
+
+start_precmd="eval command_args=start"
+
+required_files="%%PREFIX%%/lib/php/phorge/conf/local/local.json"
+
+PATH="${PATH}:%%PREFIX%%/bin"
+
+phd_poll()
+{
+	pids=`${status_cmd} 2>/dev/null | awk '{ print $4 }' | egrep "^[0-9]+$" | sort | uniq`
+	wait_for_pids $pids
+}
+
+phd_restart()
+{
+	${stop_cmd}
+	phd_poll
+	run_rc_command start
+}
+
+run_rc_command "$*"
diff --git a/devel/phorgeit-phorge/files/phorge-sudoers.sample b/devel/phorgeit-phorge/files/phorge-sudoers.sample
new file mode 100644
index 000000000000..d7d604e7a99d
--- /dev/null
+++ b/devel/phorgeit-phorge/files/phorge-sudoers.sample
@@ -0,0 +1,4 @@
+# Phabricator sudoers file.
+
+www ALL=www SETENV: NOPASSWD: %%LOCALBASE%%/bin/git, %%LOCALBASE%%/libexec/git-core/git-http-backend, %%LOCALBASE%%/bin/hg, %%LOCALBASE%%/bin/ssh, /usr/bin/ssh
+git ALL=www SETENV: NOPASSWD: %%LOCALBASE%%/bin/git, %%LOCALBASE%%/bin/git-upload-pack, %%LOCALBASE%%/bin/git-receive-pack, %%LOCALBASE%%/bin/hg, %%LOCALBASE%%/bin/svnserve, %%LOCALBASE%%/bin/ssh, /usr/bin/ssh
diff --git a/devel/phorgeit-phorge/files/pkg-message.in b/devel/phorgeit-phorge/files/pkg-message.in
new file mode 100644
index 000000000000..5fafe1bd2fee
--- /dev/null
+++ b/devel/phorgeit-phorge/files/pkg-message.in
@@ -0,0 +1,92 @@
+[
+{ type: install
+  message: <<EOM
+Make sure to run phorge using a production PHP configuration,
+e.g., %%PREFIX/etc/php.ini-production, particularly
+using the recommended error_reporting setting for production:
+
+  error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
+
+To run the phorge daemons from startup, add phd_enable="YES"
+to /etc/rc.conf. You can control the daemons using
+
+service phd start
+service phd stop
+etc.
+
+Before starting the daemons, please finish configuring your Phorge
+instance. This involves configuring a web server (Apache, NGINX, LightHTTP)
+and a database server (MySQL, MariaDB). You can find detailed instructions
+on how to finish your setup at:
+
+https://secure.phorge.com/book/phorge/article/configuration_guide/
+
+Please note that all files are located in %%PREFIX%%/lib/php/phorge,
+so if the documentation refers to ./bin, this means
+
+  %%PREFIX%%/lib/php/phorge/bin,
+
+if it refers to webroot, this means
+
+  %%PREFIX%%/lib/php/phorge/webroot.
+
+You might want to install textproc/py-pygments to improve syntax
+highlighting.
+
+Phorge daemons and ssh-git requires setting up sudo, see
+
+  %%PREFIX%%lib/php/phorge/resources/sshd/phorge-sudoers.sample
+
+for an example.
+
+A phorge example configuration installed here:
+
+  %%PREFIX%%lib/php/phorge/conf/local/local.json.sample
+
+If you want to access phorge hosted git repositories via git,
+you can add the following configuration snippet to /etc/sshd_config
+and reload sshd afterwards (`service sshd reload'):
+
+========================================================================
+Match User git
+ AllowUsers git
+ AuthorizedKeysCommand %%PREFIX%%/lib/php/phorge/resources/sshd/phorge-ssh-hook.sh
+ AuthorizedKeysCommandUser git
+ AuthorizedKeysFile none
+ AuthenticationMethods publickey
+ PermitRootLogin no
+ PasswordAuthentication no
+ PermitTTY no
+ AllowAgentForwarding no
+ AllowTcpForwarding no
+ GatewayPorts no
+ PermitOpen none
+ PermitTunnel no
+ X11Forwarding no
+========================================================================
+EOM
+},
+{ type: upgrade
+  message: <<EOM
+Don't forget to update the database schema after update:
+
+  service nginx stop
+  service php-fpm stop
+  service phd stop
+  cd %%PREFIX%%/lib/php/phorge
+  ./bin/storage upgrade
+  service phd start
+  service php-fpm start
+  service nginx start
+
+The above procedure is for users of nginx and php-fpm, please adapt
+accordingly to match your setup.
+
+If your configuration uses an unprivileged user to connect to the database,
+you may have to override the default user so the schema changes can be
+applied with root or some other admin user:
+
+  ./bin/storage upgrade --user <user> --password <password>
+EOM
+}
+]
diff --git a/devel/phorgeit-phorge/pkg-descr b/devel/phorgeit-phorge/pkg-descr
new file mode 100644
index 000000000000..fa554a1f5ae7
--- /dev/null
+++ b/devel/phorgeit-phorge/pkg-descr
@@ -0,0 +1,2 @@
+Phabricator is a collection of open source web applications that help
+software companies build better software.
diff --git a/devel/phorgeit-phorge/pkg-plist b/devel/phorgeit-phorge/pkg-plist
new file mode 100644
index 000000000000..48f89bf6c202
--- /dev/null
+++ b/devel/phorgeit-phorge/pkg-plist
@@ -0,0 +1,9058 @@
+lib/php/phorge/LICENSE
+lib/php/phorge/NOTICE
+lib/php/phorge/README.md
+lib/php/phorge/bin/almanac
+lib/php/phorge/bin/aphlict
+lib/php/phorge/bin/audit
+lib/php/phorge/bin/auth
+lib/php/phorge/bin/bulk
+lib/php/phorge/bin/cache
+lib/php/phorge/bin/calendar
+lib/php/phorge/bin/celerity
+lib/php/phorge/bin/commit-hook
+lib/php/phorge/bin/conduit
+lib/php/phorge/bin/config
+lib/php/phorge/bin/differential
+lib/php/phorge/bin/diviner
+lib/php/phorge/bin/drydock
+lib/php/phorge/bin/fact
+lib/php/phorge/bin/feed
+lib/php/phorge/bin/files
+lib/php/phorge/bin/garbage
+lib/php/phorge/bin/harbormaster
+lib/php/phorge/bin/herald
+lib/php/phorge/bin/i18n
+lib/php/phorge/bin/lipsum
+lib/php/phorge/bin/lock
+lib/php/phorge/bin/mail
+lib/php/phorge/bin/nuance
+lib/php/phorge/bin/phd
+lib/php/phorge/bin/phortune
+lib/php/phorge/bin/policy
+lib/php/phorge/bin/remove
+lib/php/phorge/bin/repository
+lib/php/phorge/bin/search
+lib/php/phorge/bin/ssh-auth
+lib/php/phorge/bin/ssh-connect
+lib/php/phorge/bin/ssh-exec
+lib/php/phorge/bin/storage
+lib/php/phorge/bin/trigger
+lib/php/phorge/bin/user
+lib/php/phorge/bin/webhook
+lib/php/phorge/bin/worker
+lib/php/phorge/conf/__init_conf__.php
+lib/php/phorge/conf/aphlict/README
+lib/php/phorge/conf/aphlict/aphlict.default.json
+lib/php/phorge/conf/keys/.keep
+lib/php/phorge/conf/local/README
+lib/php/phorge/conf/local/local.json.sample
+lib/php/phorge/externals/JsShrink/jsShrink.php
+lib/php/phorge/externals/JsShrink/readme.txt
+lib/php/phorge/externals/cldr/cldr_windows_timezones.xml
+lib/php/phorge/externals/cowsay/ChangeLog
+lib/php/phorge/externals/cowsay/LICENSE
+lib/php/phorge/externals/cowsay/README
+lib/php/phorge/externals/cowsay/cows/bunny.cow
+lib/php/phorge/externals/cowsay/cows/cower.cow
+lib/php/phorge/externals/cowsay/cows/daemon.cow
+lib/php/phorge/externals/cowsay/cows/default.cow
+lib/php/phorge/externals/cowsay/cows/dragon-and-cow.cow
+lib/php/phorge/externals/cowsay/cows/dragon.cow
+lib/php/phorge/externals/cowsay/cows/elephant.cow
+lib/php/phorge/externals/cowsay/cows/eyes.cow
+lib/php/phorge/externals/cowsay/cows/flaming-sheep.cow
+lib/php/phorge/externals/cowsay/cows/head-in.cow
+lib/php/phorge/externals/cowsay/cows/kitty.cow
+lib/php/phorge/externals/cowsay/cows/koala.cow
+lib/php/phorge/externals/cowsay/cows/meow.cow
+lib/php/phorge/externals/cowsay/cows/moofasa.cow
+lib/php/phorge/externals/cowsay/cows/moose.cow
+lib/php/phorge/externals/cowsay/cows/mutilated.cow
+lib/php/phorge/externals/cowsay/cows/satanic.cow
+lib/php/phorge/externals/cowsay/cows/sheep.cow
+lib/php/phorge/externals/cowsay/cows/skeleton.cow
+lib/php/phorge/externals/cowsay/cows/small.cow
+lib/php/phorge/externals/cowsay/cows/squirrel.cow
+lib/php/phorge/externals/cowsay/cows/stegosaurus.cow
+lib/php/phorge/externals/cowsay/cows/supermilker.cow
+lib/php/phorge/externals/cowsay/cows/surgery.cow
+lib/php/phorge/externals/cowsay/cows/turkey.cow
+lib/php/phorge/externals/cowsay/cows/turtle.cow
+lib/php/phorge/externals/cowsay/cows/tux.cow
+lib/php/phorge/externals/cowsay/cows/www.cow
+lib/php/phorge/externals/figlet/.gitignore
+lib/php/phorge/externals/figlet/CHANGES
+lib/php/phorge/externals/figlet/FAQ
+lib/php/phorge/externals/figlet/LICENSE
+lib/php/phorge/externals/figlet/Makefile
+lib/php/phorge/externals/figlet/Makefile.tc
+lib/php/phorge/externals/figlet/README
+lib/php/phorge/externals/figlet/chkfont.6
+lib/php/phorge/externals/figlet/chkfont.c
+lib/php/phorge/externals/figlet/crc.c
+lib/php/phorge/externals/figlet/crc.h
+lib/php/phorge/externals/figlet/figfont.txt
+lib/php/phorge/externals/figlet/figlet.6
+lib/php/phorge/externals/figlet/figlet.c
+lib/php/phorge/externals/figlet/figlist
+lib/php/phorge/externals/figlet/figlist.6
+lib/php/phorge/externals/figlet/figmagic
+lib/php/phorge/externals/figlet/fonts/646-ca.flc
+lib/php/phorge/externals/figlet/fonts/646-ca2.flc
+lib/php/phorge/externals/figlet/fonts/646-cn.flc
+lib/php/phorge/externals/figlet/fonts/646-cu.flc
+lib/php/phorge/externals/figlet/fonts/646-de.flc
+lib/php/phorge/externals/figlet/fonts/646-dk.flc
+lib/php/phorge/externals/figlet/fonts/646-es.flc
+lib/php/phorge/externals/figlet/fonts/646-es2.flc
+lib/php/phorge/externals/figlet/fonts/646-fr.flc
+lib/php/phorge/externals/figlet/fonts/646-gb.flc
+lib/php/phorge/externals/figlet/fonts/646-hu.flc
+lib/php/phorge/externals/figlet/fonts/646-irv.flc
+lib/php/phorge/externals/figlet/fonts/646-it.flc
+lib/php/phorge/externals/figlet/fonts/646-jp.flc
+lib/php/phorge/externals/figlet/fonts/646-kr.flc
+lib/php/phorge/externals/figlet/fonts/646-no.flc
+lib/php/phorge/externals/figlet/fonts/646-no2.flc
+lib/php/phorge/externals/figlet/fonts/646-pt.flc
+lib/php/phorge/externals/figlet/fonts/646-pt2.flc
+lib/php/phorge/externals/figlet/fonts/646-se.flc
+lib/php/phorge/externals/figlet/fonts/646-se2.flc
+lib/php/phorge/externals/figlet/fonts/646-yu.flc
+lib/php/phorge/externals/figlet/fonts/8859-2.flc
+lib/php/phorge/externals/figlet/fonts/8859-3.flc
+lib/php/phorge/externals/figlet/fonts/8859-4.flc
+lib/php/phorge/externals/figlet/fonts/8859-5.flc
+lib/php/phorge/externals/figlet/fonts/8859-7.flc
+lib/php/phorge/externals/figlet/fonts/8859-8.flc
+lib/php/phorge/externals/figlet/fonts/8859-9.flc
+lib/php/phorge/externals/figlet/fonts/banner.flf
+lib/php/phorge/externals/figlet/fonts/big.flf
+lib/php/phorge/externals/figlet/fonts/block.flf
+lib/php/phorge/externals/figlet/fonts/bubble.flf
+lib/php/phorge/externals/figlet/fonts/digital.flf
+lib/php/phorge/externals/figlet/fonts/frango.flc
+lib/php/phorge/externals/figlet/fonts/hz.flc
+lib/php/phorge/externals/figlet/fonts/ilhebrew.flc
+lib/php/phorge/externals/figlet/fonts/ivrit.flf
+lib/php/phorge/externals/figlet/fonts/jis0201.flc
+lib/php/phorge/externals/figlet/fonts/koi8r.flc
+lib/php/phorge/externals/figlet/fonts/lean.flf
+lib/php/phorge/externals/figlet/fonts/mini.flf
+lib/php/phorge/externals/figlet/fonts/mnemonic.flf
+lib/php/phorge/externals/figlet/fonts/moscow.flc
+lib/php/phorge/externals/figlet/fonts/script.flf
+lib/php/phorge/externals/figlet/fonts/shadow.flf
+lib/php/phorge/externals/figlet/fonts/slant.flf
+lib/php/phorge/externals/figlet/fonts/small.flf
+lib/php/phorge/externals/figlet/fonts/smscript.flf
+lib/php/phorge/externals/figlet/fonts/smshadow.flf
+lib/php/phorge/externals/figlet/fonts/smslant.flf
+lib/php/phorge/externals/figlet/fonts/standard.flf
+lib/php/phorge/externals/figlet/fonts/term.flf
+lib/php/phorge/externals/figlet/fonts/upper.flc
+lib/php/phorge/externals/figlet/fonts/ushebrew.flc
+lib/php/phorge/externals/figlet/fonts/uskata.flc
+lib/php/phorge/externals/figlet/fonts/utf8.flc
+lib/php/phorge/externals/figlet/getopt.c
+lib/php/phorge/externals/figlet/inflate.c
+lib/php/phorge/externals/figlet/inflate.h
+lib/php/phorge/externals/figlet/run-tests.sh
+lib/php/phorge/externals/figlet/showfigfonts
+lib/php/phorge/externals/figlet/showfigfonts.6
+lib/php/phorge/externals/figlet/tests/emboss.tlf
+lib/php/phorge/externals/figlet/tests/flowerpower.flf
+lib/php/phorge/externals/figlet/tests/input.txt
+lib/php/phorge/externals/figlet/tests/longtext.txt
+lib/php/phorge/externals/figlet/tests/res001.txt
+lib/php/phorge/externals/figlet/tests/res002.txt
+lib/php/phorge/externals/figlet/tests/res003.txt
+lib/php/phorge/externals/figlet/tests/res004.txt
+lib/php/phorge/externals/figlet/tests/res005.txt
+lib/php/phorge/externals/figlet/tests/res006.txt
+lib/php/phorge/externals/figlet/tests/res007.txt
+lib/php/phorge/externals/figlet/tests/res008.txt
+lib/php/phorge/externals/figlet/tests/res009.txt
+lib/php/phorge/externals/figlet/tests/res010.txt
+lib/php/phorge/externals/figlet/tests/res011.txt
+lib/php/phorge/externals/figlet/tests/res012.txt
+lib/php/phorge/externals/figlet/tests/res013.txt
+lib/php/phorge/externals/figlet/tests/res014.txt
+lib/php/phorge/externals/figlet/tests/res015.txt
+lib/php/phorge/externals/figlet/tests/res016.txt
+lib/php/phorge/externals/figlet/tests/res017.txt
+lib/php/phorge/externals/figlet/tests/res018.txt
+lib/php/phorge/externals/figlet/tests/res019.txt
+lib/php/phorge/externals/figlet/tests/res020.txt
+lib/php/phorge/externals/figlet/tests/res021.txt
+lib/php/phorge/externals/figlet/tests/res022.txt
+lib/php/phorge/externals/figlet/tests/res023.txt
+lib/php/phorge/externals/figlet/tests/res024.txt
+lib/php/phorge/externals/figlet/tests/res025.txt
+lib/php/phorge/externals/figlet/tests/res026.txt
+lib/php/phorge/externals/figlet/tests/res027.txt
+lib/php/phorge/externals/figlet/utf8.c
+lib/php/phorge/externals/figlet/utf8.h
+lib/php/phorge/externals/figlet/zipio.c
+lib/php/phorge/externals/figlet/zipio.h
+lib/php/phorge/externals/mimemailparser/LICENSE
+lib/php/phorge/externals/mimemailparser/MimeMailParser.class.php
+lib/php/phorge/externals/mimemailparser/README
+lib/php/phorge/externals/mimemailparser/attachment.class.php
+lib/php/phorge/externals/octicons/LICENSE
+lib/php/phorge/externals/octicons/README.md
+lib/php/phorge/externals/pear-figlet/Text/Figlet.php
+lib/php/phorge/externals/pear-figlet/docs/README.TXT
+lib/php/phorge/externals/pear-figlet/docs/examples/hello_world.php
+lib/php/phorge/externals/pear-figlet/fonts/makisupa.flf
+lib/php/phorge/externals/phpmailer/LICENSE
+lib/php/phorge/externals/phpmailer/class.phpmailer-lite.php
+lib/php/phorge/externals/phpmailer/class.phpmailer.php
+lib/php/phorge/externals/phpmailer/class.pop3.php
+lib/php/phorge/externals/phpmailer/class.smtp.php
+lib/php/phorge/externals/phpqrcode/LICENSE
+lib/php/phorge/externals/phpqrcode/README
+lib/php/phorge/externals/phpqrcode/VERSION
+lib/php/phorge/externals/phpqrcode/phpqrcode.php
+lib/php/phorge/externals/porter-stemmer/LICENSE
+lib/php/phorge/externals/porter-stemmer/README.md
+lib/php/phorge/externals/porter-stemmer/src/Porter.php
+lib/php/phorge/externals/stripe-php/.travis.yml
+lib/php/phorge/externals/stripe-php/CHANGELOG
+lib/php/phorge/externals/stripe-php/LICENSE
+lib/php/phorge/externals/stripe-php/README.rdoc
+lib/php/phorge/externals/stripe-php/VERSION
+lib/php/phorge/externals/stripe-php/composer.json
+lib/php/phorge/externals/stripe-php/lib/Stripe.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Account.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApiConnectionError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApiError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApiRequestor.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApiResource.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApiResource.php.orig
+lib/php/phorge/externals/stripe-php/lib/Stripe/ApplicationFee.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/AttachedObject.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/AuthenticationError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Balance.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/BalanceTransaction.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Card.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/CardError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Charge.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Coupon.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Customer.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Error.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Event.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/InvalidRequestError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Invoice.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/InvoiceItem.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/List.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Object.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Plan.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/RateLimitError.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Recipient.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Refund.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/SingletonApiResource.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/SingletonApiResource.php.orig
+lib/php/phorge/externals/stripe-php/lib/Stripe/Stripe.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Subscription.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Token.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Transfer.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Util.php
+lib/php/phorge/externals/stripe-php/lib/Stripe/Util/Set.php
+lib/php/phorge/externals/stripe-php/lib/data/ca-certificates.crt
+lib/php/phorge/externals/wordlist/LICENSE.txt
+lib/php/phorge/externals/wordlist/password.lst
+lib/php/phorge/externals/xhprof/LICENSE
+lib/php/phorge/externals/xhprof/xhprof_lib.php
+lib/php/phorge/resources/builtin/agent.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/0.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/1.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/2.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/3.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/4.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/5.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/6.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/7.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/8.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/9.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/A.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/B.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/C.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/D.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/E.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/F.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/G.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/H.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/I.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/J.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/K.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/L.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/M.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/N.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/O.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/P.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/Q.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/R.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/S.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/T.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/U.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/V.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/W.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/X.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/Y.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/Z.png
+lib/php/phorge/resources/builtin/alphanumeric/aleo-white/_default.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/0.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/1.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/2.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/3.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/4.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/5.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/6.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/7.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/8.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/9.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/A.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/B.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/C.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/D.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/E.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/F.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/G.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/H.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/I.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/J.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/K.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/L.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/M.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/N.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/O.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/P.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/Q.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/R.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/S.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/T.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/U.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/V.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/W.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/X.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/Y.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/Z.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-dark/_default.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/0.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/1.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/2.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/3.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/4.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/5.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/6.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/7.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/8.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/9.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/A.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/B.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/C.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/D.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/E.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/F.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/G.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/H.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/I.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/J.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/K.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/L.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/M.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/N.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/O.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/P.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/Q.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/R.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/S.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/T.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/U.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/V.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/W.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/X.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/Y.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/Z.png
+lib/php/phorge/resources/builtin/alphanumeric/lato-white/_default.png
+lib/php/phorge/resources/builtin/avatar.png
+lib/php/phorge/resources/builtin/blog.png
+lib/php/phorge/resources/builtin/conpherence.png
+lib/php/phorge/resources/builtin/favicon/default-120x120.png
+lib/php/phorge/resources/builtin/favicon/default-128x128.png
+lib/php/phorge/resources/builtin/favicon/default-152x152.png
+lib/php/phorge/resources/builtin/favicon/default-76x76.png
+lib/php/phorge/resources/builtin/favicon/dot-pink-64x64.png
+lib/php/phorge/resources/builtin/favicon/dot-red-64x64.png
+lib/php/phorge/resources/builtin/image-100x100.png
+lib/php/phorge/resources/builtin/image-200x200.png
+lib/php/phorge/resources/builtin/image-220x220.png
+lib/php/phorge/resources/builtin/image-280x210.png
+lib/php/phorge/resources/builtin/image-400x400.png
+lib/php/phorge/resources/builtin/image-526x526.png
+lib/php/phorge/resources/builtin/image-800x800.png
+lib/php/phorge/resources/builtin/mailinglist.png
+lib/php/phorge/resources/builtin/merchant.png
+lib/php/phorge/resources/builtin/missing.png
+lib/php/phorge/resources/builtin/profile.png
+lib/php/phorge/resources/builtin/project.png
+lib/php/phorge/resources/builtin/projects/fa-android.png
+lib/php/phorge/resources/builtin/projects/fa-apple.png
+lib/php/phorge/resources/builtin/projects/fa-beer.png
+lib/php/phorge/resources/builtin/projects/fa-bomb.png
+lib/php/phorge/resources/builtin/projects/fa-book.png
+lib/php/phorge/resources/builtin/projects/fa-briefcase.png
+lib/php/phorge/resources/builtin/projects/fa-bug.png
*** 8652 LINES SKIPPED ***