Twig \ Error \ RuntimeError
An exception has been thrown during the rendering of a template ("ERROR: CSS Compilation on file 'custom.scss' failed on error: `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2").
Previous exceptions
  • ERROR: CSS Compilation on file 'custom.scss' failed on error: `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2 (500)
  • `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2 (0)
Twig\Error\RuntimeError thrown with message "An exception has been thrown during the rendering of a template ("ERROR: CSS Compilation on file 'custom.scss' failed on error: `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2")." Stacktrace: #46 Twig\Error\RuntimeError in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/media/gantry5/engines/nucleus/templates/page.html.twig:73 #45 RuntimeException in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php:192 #44 ScssPhp\ScssPhp\Exception\CompilerException in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:6102 #43 ScssPhp\ScssPhp\Compiler:error in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:5868 #42 ScssPhp\ScssPhp\Compiler:findImport in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Stylesheet/Scss/Compiler.php:37 #41 Gantry\Component\Stylesheet\Scss\Compiler:findImport in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2699 #40 ScssPhp\ScssPhp\Compiler:compileImport in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2915 #39 ScssPhp\ScssPhp\Compiler:compileChild in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2378 #38 ScssPhp\ScssPhp\Compiler:compileChildrenNoReturn in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:5747 #37 ScssPhp\ScssPhp\Compiler:importFile in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2703 #36 ScssPhp\ScssPhp\Compiler:compileImport in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2915 #35 ScssPhp\ScssPhp\Compiler:compileChild in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:2378 #34 ScssPhp\ScssPhp\Compiler:compileChildrenNoReturn in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:744 #33 ScssPhp\ScssPhp\Compiler:compileRoot in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/scssphp/scssphp/src/Compiler.php:522 #32 ScssPhp\ScssPhp\Compiler:compileString in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php:181 #31 Gantry\Component\Stylesheet\ScssCompiler:compileFile in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Theme/ThemeTrait.php:271 #30 Gantry\Framework\Theme:css in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Content/Block/HtmlBlock.php:86 #29 Gantry\Component\Content\Block\HtmlBlock:getStyles in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Framework/Document.php:131 #28 Gantry\Framework\Document:registerStyles in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Framework/Document.php:76 #27 Gantry\Framework\Document:registerAssets in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Framework/Base/Platform.php:277 #26 Gantry\Framework\Base\Platform:finalize in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:700 #25 Twig\Template:getAttribute in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/98/983febda1511bb912a0432db9ed30f4d7c960beefc1385a15e0cd875d7fbdc97.php:256 #24 __TwigTemplate_4b7af794afd2b9e8b995b4e8dcde3d3692d9c8b346435486f5a02b01af8745cb:block_page_footer in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:214 #23 Twig\Template:displayBlock in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:175 #22 Twig\Template:displayParentBlock in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/c5/c5527c41a6a0904b6479437d00fbc09806f969d8feec73942328e0f6328e6560.php:43 #21 __TwigTemplate_c34a64284d748f580762a1d06799b2d95c4f7cc5f61e9d6e1e467a5535ad4f01:block_page_footer in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:214 #20 Twig\Template:displayBlock in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/98/983febda1511bb912a0432db9ed30f4d7c960beefc1385a15e0cd875d7fbdc97.php:150 #19 __TwigTemplate_4b7af794afd2b9e8b995b4e8dcde3d3692d9c8b346435486f5a02b01af8745cb:doDisplay in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:453 #18 Twig\Template:displayWithErrorHandling in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:420 #17 Twig\Template:display in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/c5/c5527c41a6a0904b6479437d00fbc09806f969d8feec73942328e0f6328e6560.php:35 #16 __TwigTemplate_c34a64284d748f580762a1d06799b2d95c4f7cc5f61e9d6e1e467a5535ad4f01:doDisplay in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:453 #15 Twig\Template:displayWithErrorHandling in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:420 #14 Twig\Template:display in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/25/25fd429887bcc45f038d1bd9cc3af0c963c4a06541c30d67d20849fde4f41973.php:35 #13 __TwigTemplate_cb5f5e966d608143897004838caceb766084ced80c4adc2a0da9d343757e3142:doDisplay in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:453 #12 Twig\Template:displayWithErrorHandling in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:420 #11 Twig\Template:display in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Template.php:432 #10 Twig\Template:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/TemplateWrapper.php:47 #9 Twig\TemplateWrapper:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/compat/vendor/twig/twig/src/Environment.php:384 #8 Twig\Environment:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/gantry5/src/classes/Gantry/Component/Theme/AbstractTheme.php:176 #7 Gantry\Component\Theme\AbstractTheme:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/templates/g5_hydrogen/index.php:35 #6 require in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php:678 #5 Joomla\CMS\Document\HtmlDocument:_loadTemplate in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php:740 #4 Joomla\CMS\Document\HtmlDocument:_fetchTemplate in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php:555 #3 Joomla\CMS\Document\HtmlDocument:parse in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/CMSApplication.php:1098 #2 Joomla\CMS\Application\CMSApplication:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/SiteApplication.php:778 #1 Joomla\CMS\Application\SiteApplication:render in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/CMSApplication.php:231 #0 Joomla\CMS\Application\CMSApplication:execute in /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/index.php:49
Stack frames (47)
46
Twig\Error\RuntimeError
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/media/gantry5/engines/nucleus/templates/page.html.twig73
45
RuntimeException
/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php192
44
ScssPhp\ScssPhp\Exception\CompilerException
/compat/vendor/scssphp/scssphp/src/Compiler.php6102
43
ScssPhp\ScssPhp\Compiler error
/compat/vendor/scssphp/scssphp/src/Compiler.php5868
42
ScssPhp\ScssPhp\Compiler findImport
/src/classes/Gantry/Component/Stylesheet/Scss/Compiler.php37
41
Gantry\Component\Stylesheet\Scss\Compiler findImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2699
40
ScssPhp\ScssPhp\Compiler compileImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2915
39
ScssPhp\ScssPhp\Compiler compileChild
/compat/vendor/scssphp/scssphp/src/Compiler.php2378
38
ScssPhp\ScssPhp\Compiler compileChildrenNoReturn
/compat/vendor/scssphp/scssphp/src/Compiler.php5747
37
ScssPhp\ScssPhp\Compiler importFile
/compat/vendor/scssphp/scssphp/src/Compiler.php2703
36
ScssPhp\ScssPhp\Compiler compileImport
/compat/vendor/scssphp/scssphp/src/Compiler.php2915
35
ScssPhp\ScssPhp\Compiler compileChild
/compat/vendor/scssphp/scssphp/src/Compiler.php2378
34
ScssPhp\ScssPhp\Compiler compileChildrenNoReturn
/compat/vendor/scssphp/scssphp/src/Compiler.php744
33
ScssPhp\ScssPhp\Compiler compileRoot
/compat/vendor/scssphp/scssphp/src/Compiler.php522
32
ScssPhp\ScssPhp\Compiler compileString
/src/classes/Gantry/Component/Stylesheet/ScssCompiler.php181
31
Gantry\Component\Stylesheet\ScssCompiler compileFile
/src/classes/Gantry/Component/Theme/ThemeTrait.php271
30
Gantry\Framework\Theme css
/src/classes/Gantry/Component/Content/Block/HtmlBlock.php86
29
Gantry\Component\Content\Block\HtmlBlock getStyles
/src/classes/Gantry/Framework/Document.php131
28
Gantry\Framework\Document registerStyles
/src/classes/Gantry/Framework/Document.php76
27
Gantry\Framework\Document registerAssets
/src/classes/Gantry/Framework/Base/Platform.php277
26
Gantry\Framework\Base\Platform finalize
/compat/vendor/twig/twig/src/Template.php700
25
Twig\Template getAttribute
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/98/983febda1511bb912a0432db9ed30f4d7c960beefc1385a15e0cd875d7fbdc97.php256
24
__TwigTemplate_4b7af794afd2b9e8b995b4e8dcde3d3692d9c8b346435486f5a02b01af8745cb block_page_footer
/compat/vendor/twig/twig/src/Template.php214
23
Twig\Template displayBlock
/compat/vendor/twig/twig/src/Template.php175
22
Twig\Template displayParentBlock
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/c5/c5527c41a6a0904b6479437d00fbc09806f969d8feec73942328e0f6328e6560.php43
21
__TwigTemplate_c34a64284d748f580762a1d06799b2d95c4f7cc5f61e9d6e1e467a5535ad4f01 block_page_footer
/compat/vendor/twig/twig/src/Template.php214
20
Twig\Template displayBlock
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/98/983febda1511bb912a0432db9ed30f4d7c960beefc1385a15e0cd875d7fbdc97.php150
19
__TwigTemplate_4b7af794afd2b9e8b995b4e8dcde3d3692d9c8b346435486f5a02b01af8745cb doDisplay
/compat/vendor/twig/twig/src/Template.php453
18
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
17
Twig\Template display
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/c5/c5527c41a6a0904b6479437d00fbc09806f969d8feec73942328e0f6328e6560.php35
16
__TwigTemplate_c34a64284d748f580762a1d06799b2d95c4f7cc5f61e9d6e1e467a5535ad4f01 doDisplay
/compat/vendor/twig/twig/src/Template.php453
15
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
14
Twig\Template display
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/cache/gantry5/g5_hydrogen/twig/25/25fd429887bcc45f038d1bd9cc3af0c963c4a06541c30d67d20849fde4f41973.php35
13
__TwigTemplate_cb5f5e966d608143897004838caceb766084ced80c4adc2a0da9d343757e3142 doDisplay
/compat/vendor/twig/twig/src/Template.php453
12
Twig\Template displayWithErrorHandling
/compat/vendor/twig/twig/src/Template.php420
11
Twig\Template display
/compat/vendor/twig/twig/src/Template.php432
10
Twig\Template render
/compat/vendor/twig/twig/src/TemplateWrapper.php47
9
Twig\TemplateWrapper render
/compat/vendor/twig/twig/src/Environment.php384
8
Twig\Environment render
/src/classes/Gantry/Component/Theme/AbstractTheme.php176
7
Gantry\Component\Theme\AbstractTheme render
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/templates/g5_hydrogen/index.php35
6
require
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php678
5
Joomla\CMS\Document\HtmlDocument _loadTemplate
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php740
4
Joomla\CMS\Document\HtmlDocument _fetchTemplate
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Document/HtmlDocument.php555
3
Joomla\CMS\Document\HtmlDocument parse
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/CMSApplication.php1098
2
Joomla\CMS\Application\CMSApplication render
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/SiteApplication.php778
1
Joomla\CMS\Application\SiteApplication render
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/libraries/src/Application/CMSApplication.php231
0
Joomla\CMS\Application\CMSApplication execute
/home/200851.cloudwaysapps.com/ugubzavkpf/public_html/index.php49
 
{%- set body_bottom %}
    {% block body_bottom %}
    {% endblock %}
    {{ gantry.document.getHtml('body_bottom')|join("\n    ")|raw }}
{% endset -%}
 
{%- do gantry.document.addScript(url('gantry-assets://js/main.js'), 11, 'footer') -%}
 
{# Head and footer needs to come last because of any of the above blocks may have CSS or JavaScript in them #}
 
{%- set page_head %}
    {% block page_head -%}
        {% include 'partials/page_head.html.twig' %}
    {%- endblock %}
{% endset -%}
 
{%- set page_footer %}
    {% block page_footer %}
        {% do gantry.platform.finalize() -%}
        {{ gantry.scripts('footer')|join("\n    ")|raw -}}
    {% endblock %}
 
    {{ gantry.debugger.render()|raw }}
{% endset -%}
 
{%- block page -%}
<!DOCTYPE {{ gantry.config.page.doctype|default('html')|raw }}>
<html{{ gantry.page.htmlAttributes|raw }}>
    {{ page_head|raw }}
    {% block page_body -%}
    <body{{ gantry.page.bodyAttributes({'class': [offcanvas_position, gantry.page.preset, 'g-style-' ~ gantry.theme.preset]})|raw }}>
        {{ gantry.config.page.body.body_top|raw }}
        {{ body_top|raw }}
        {{ page_offcanvas|raw }}
        <div id="g-page-surround">
            {% if page_offcanvas|trim -%}
            <div class="g-offcanvas-hide g-offcanvas-toggle" role="navigation" data-offcanvas-toggle aria-controls="g-offcanvas" aria-expanded="false"><i class="fa fa-fw fa-bars"></i></div>
            {%- endif %}
            {{ page_top|raw }}
        // Set the lookup paths.
        $this->functions->setBasePath($path);
        $compiler->setImportPaths([[$this, 'findImport']]);
 
        // Run the compiler.
        $compiler->addVariables($this->getVariables(true));
        $scss = '$output-bourbon-deprecation-warnings: false;' . "\n" . '@import "' . $in . '.scss"';
        try {
            $this->result = $compiler->compileString($scss);
            $css = $this->result->getCss();
        } catch (CompilerException $e) {
            if (version_compare(static::$options['compatibility'], '5.5', '<')) {
                static::$options['legacy'][$in] = true;
                $this->warnings['__TITLE__'] = 'Please update your theme!';
                $this->warnings[$in] = ['WARNING: ' . $e->getMessage()];
 
                return $this->compileLegacyFile($in);
            }
 
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on error: {$e->getMessage()}", 500, $e);
        } catch (\Exception $e) {
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on fatal error: {$e->getMessage()}", 500, $e);
        }
        if (strpos($css, $scss) === 0) {
            $css = '/* ' . $scss . ' */';
        }
 
        // Extract map from css and save it as separate file.
        $pos = strrpos($css, '/*# sourceMappingURL=');
        if ($pos !== false) {
            $map = json_decode(urldecode(substr($css, $pos + 43, -3)), true);
 
            /** @var Document $document */
            $document = $gantry['document'];
 
            foreach ($map['sources'] as &$source) {
                $source = $document::url($source, false, -1);
            }
            unset($source);
 
Exception message: ERROR: CSS Compilation on file 'custom.scss' failed on error: `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2
     * Build an error (exception)
     *
     * @internal
     *
     * @param string                     $msg Message with optional sprintf()-style vararg parameters
     * @param bool|float|int|string|null ...$args
     *
     * @return CompilerException
     */
    public function error($msg, ...$args)
    {
        if ($args) {
            $msg = sprintf($msg, ...$args);
        }
 
        if (! $this->ignoreCallStackMessage) {
            $msg = $this->addLocationToMessage($msg);
        }
 
        return new CompilerException($msg);
    }
 
    /**
     * @param string $msg
     *
     * @return string
     */
    private function addLocationToMessage($msg)
    {
        $line   = $this->sourceLine;
        $column = $this->sourceColumn;
 
        $loc = isset($this->sourceNames[$this->sourceIndex])
            ? $this->getPrettyPath($this->sourceNames[$this->sourceIndex]) . " on line $line, at column $column"
            : "line: $line, column: $column";
 
        $msg = "$msg: $loc";
 
        $callStackMsg = $this->callStackMessage();
 
Exception message: `slideshow-joomla` file not found for @import: templates/g5_hydrogen/custom/scss/custom.scss on line 19, at column 1 Call Stack: #0 import templates/g5_hydrogen/custom/scss/custom.scss (unknown file) on line 2
                // check custom callback for import path
                $file = \call_user_func($dir, $url);
 
                if (! \is_null($file)) {
                    return $file;
                }
            }
        }
 
        if ($this->legacyCwdImportPath) {
            $path = $this->resolveImportPath($url, getcwd());
 
            if (!\is_null($path)) {
                @trigger_error('Resolving imports relatively to the current working directory is deprecated. If that\'s the intended behavior, the value of "getcwd()" should be added as an import path explicitly instead. If this was used for resolving relative imports of the input alongside "chdir" with the source directory, the path of the input file should be passed to "compileString()" instead.', E_USER_DEPRECATED);
 
                return $path;
            }
        }
 
        throw $this->error("`$url` file not found for @import");
    }
 
    /**
     * @param string $url
     * @param string $baseDir
     *
     * @return string|null
     */
    private function resolveImportPath($url, $baseDir)
    {
        $path = Path::join($baseDir, $url);
 
        $hasExtension = preg_match('/.s[ac]ss$/', $url);
 
        if ($hasExtension) {
            return $this->checkImportPathConflicts($this->tryImportPath($path));
        }
 
        $result = $this->checkImportPathConflicts($this->tryImportPathWithExtensions($path));
 
 * Class Compiler
 * @package Gantry\Component\Stylesheet\Scss
 */
class Compiler extends \ScssPhp\ScssPhp\Compiler
{
    static public $currentDir;
 
    /**
     * Return the file path for an import url if it exists
     *
     * @param string      $url
     * @param string|null $currentDir
     *
     * @return string|null
     */
    public function findImport($url, $currentDir = null)
    {
        static::$currentDir = $currentDir;
 
        return parent::findImport($url, null);
    }
}
 
 
        // t1 == t2, neither m1 nor m2 are "not"
        return [empty($m1) ? $m2 : $m1, $t1];
    }
 
    /**
     * Compile import; returns true if the value was something that could be imported
     *
     * @param array                                  $rawPath
     * @param \ScssPhp\ScssPhp\Formatter\OutputBlock $out
     * @param bool                                   $once
     *
     * @return bool
     */
    protected function compileImport($rawPath, OutputBlock $out, $once = false)
    {
        if ($rawPath[0] === Type::T_STRING) {
            $path = $this->compileStringContent($rawPath);
 
            if (strpos($path, 'url(') !== 0 && $filePath = $this->findImport($path, $this->currentDirectory)) {
                $this->registerImport($this->currentDirectory, $path, $filePath);
 
                if (! $once || ! \in_array($filePath, $this->importedFiles)) {
                    $this->importFile($filePath, $out);
                    $this->importedFiles[] = $filePath;
                }
 
                return true;
            }
 
            $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
            return false;
        }
 
        if ($rawPath[0] === Type::T_LIST) {
            // handle a list of strings
            if (\count($rawPath[2]) === 0) {
                return false;
            }
            $sourceIndex  = array_search($out->sourceName, $this->sourceNames);
            $this->sourceColumn = $out->sourceColumn;
 
            if ($sourceIndex === false) {
                $sourceIndex = null;
            }
            $this->sourceIndex = $sourceIndex;
        }
 
        switch ($child[0]) {
            case Type::T_SCSSPHP_IMPORT_ONCE:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out, true);
                break;
 
            case Type::T_IMPORT:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out);
                break;
 
            case Type::T_DIRECTIVE:
                $this->compileDirective($child[1], $out);
                break;
 
            case Type::T_AT_ROOT:
                $this->compileAtRoot($child[1]);
                break;
 
            case Type::T_MEDIA:
                $this->compileMedia($child[1]);
                break;
 
            case Type::T_BLOCK:
                $this->compileBlock($child[1]);
                break;
 
            case Type::T_CHARSET:
                break;
     *
     * @return void
     *
     * @throws \Exception
     */
    protected function compileChildrenNoReturn($stms, OutputBlock $out, $selfParent = null, $traceName = '')
    {
        $this->pushCallStack($traceName);
 
        foreach ($stms as $stm) {
            if ($selfParent && isset($stm[1]) && \is_object($stm[1]) && $stm[1] instanceof Block) {
                $oldSelfParent = $stm[1]->selfParent;
                $stm[1]->selfParent = $selfParent;
                $ret = $this->compileChild($stm, $out);
                $stm[1]->selfParent = $oldSelfParent;
            } elseif ($selfParent && \in_array($stm[0], [Type::T_INCLUDE, Type::T_EXTEND])) {
                $stm['selfParent'] = $selfParent;
                $ret = $this->compileChild($stm, $out);
            } else {
                $ret = $this->compileChild($stm, $out);
            }
 
            if (isset($ret)) {
                throw $this->error('@return may only be used within a function');
            }
        }
 
        $this->popCallStack();
    }
 
 
    /**
     * evaluate media query : compile internal value keeping the structure unchanged
     *
     * @param array $queryList
     *
     * @return array
     */
    protected function evaluateMediaQuery($queryList)
    {
 
            throw $this->error('The Sass indented syntax is not implemented.');
        }
 
        if (isset($this->importCache[$realPath])) {
            $this->handleImportLoop($realPath);
 
            $tree = $this->importCache[$realPath];
        } else {
            $code   = file_get_contents($path);
            $parser = $this->parserFactory($path);
            $tree   = $parser->parse($code);
 
            $this->importCache[$realPath] = $tree;
        }
 
        $currentDirectory = $this->currentDirectory;
        $this->currentDirectory = dirname($path);
 
        $this->compileChildrenNoReturn($tree->children, $out);
        $this->currentDirectory = $currentDirectory;
        $this->popCallStack();
    }
 
    /**
     * Save the imported files with their resolving path context
     *
     * @param string|null $currentDirectory
     * @param string      $path
     * @param string      $filePath
     *
     * @return void
     */
    private function registerImport($currentDirectory, $path, $filePath)
    {
        $this->resolvedImports[] = ['currentDir' => $currentDirectory, 'path' => $path, 'filePath' => $filePath];
    }
 
    /**
     * Detects whether the import is a CSS import.
 
    /**
     * Compile import; returns true if the value was something that could be imported
     *
     * @param array                                  $rawPath
     * @param \ScssPhp\ScssPhp\Formatter\OutputBlock $out
     * @param bool                                   $once
     *
     * @return bool
     */
    protected function compileImport($rawPath, OutputBlock $out, $once = false)
    {
        if ($rawPath[0] === Type::T_STRING) {
            $path = $this->compileStringContent($rawPath);
 
            if (strpos($path, 'url(') !== 0 && $filePath = $this->findImport($path, $this->currentDirectory)) {
                $this->registerImport($this->currentDirectory, $path, $filePath);
 
                if (! $once || ! \in_array($filePath, $this->importedFiles)) {
                    $this->importFile($filePath, $out);
                    $this->importedFiles[] = $filePath;
                }
 
                return true;
            }
 
            $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
 
            return false;
        }
 
        if ($rawPath[0] === Type::T_LIST) {
            // handle a list of strings
            if (\count($rawPath[2]) === 0) {
                return false;
            }
 
            foreach ($rawPath[2] as $path) {
                if ($path[0] !== Type::T_STRING) {
                    $this->appendRootDirective('@import ' . $this->compileImportPath($rawPath) . ';', $out);
            $sourceIndex  = array_search($out->sourceName, $this->sourceNames);
            $this->sourceColumn = $out->sourceColumn;
 
            if ($sourceIndex === false) {
                $sourceIndex = null;
            }
            $this->sourceIndex = $sourceIndex;
        }
 
        switch ($child[0]) {
            case Type::T_SCSSPHP_IMPORT_ONCE:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out, true);
                break;
 
            case Type::T_IMPORT:
                $rawPath = $this->reduce($child[1]);
 
                $this->compileImport($rawPath, $out);
                break;
 
            case Type::T_DIRECTIVE:
                $this->compileDirective($child[1], $out);
                break;
 
            case Type::T_AT_ROOT:
                $this->compileAtRoot($child[1]);
                break;
 
            case Type::T_MEDIA:
                $this->compileMedia($child[1]);
                break;
 
            case Type::T_BLOCK:
                $this->compileBlock($child[1]);
                break;
 
            case Type::T_CHARSET:
                break;
     *
     * @return void
     *
     * @throws \Exception
     */
    protected function compileChildrenNoReturn($stms, OutputBlock $out, $selfParent = null, $traceName = '')
    {
        $this->pushCallStack($traceName);
 
        foreach ($stms as $stm) {
            if ($selfParent && isset($stm[1]) && \is_object($stm[1]) && $stm[1] instanceof Block) {
                $oldSelfParent = $stm[1]->selfParent;
                $stm[1]->selfParent = $selfParent;
                $ret = $this->compileChild($stm, $out);
                $stm[1]->selfParent = $oldSelfParent;
            } elseif ($selfParent && \in_array($stm[0], [Type::T_INCLUDE, Type::T_EXTEND])) {
                $stm['selfParent'] = $selfParent;
                $ret = $this->compileChild($stm, $out);
            } else {
                $ret = $this->compileChild($stm, $out);
            }
 
            if (isset($ret)) {
                throw $this->error('@return may only be used within a function');
            }
        }
 
        $this->popCallStack();
    }
 
 
    /**
     * evaluate media query : compile internal value keeping the structure unchanged
     *
     * @param array $queryList
     *
     * @return array
     */
    protected function evaluateMediaQuery($queryList)
    {
            $out->sourceName = isset($this->sourceNames[$this->sourceIndex]) ? $this->sourceNames[$this->sourceIndex] : '(stdin)';
            $out->sourceLine = $this->sourceLine;
            $out->sourceColumn = $this->sourceColumn;
        }
 
        return $out;
    }
 
    /**
     * Compile root
     *
     * @param \ScssPhp\ScssPhp\Block $rootBlock
     *
     * @return void
     */
    protected function compileRoot(Block $rootBlock)
    {
        $this->rootBlock = $this->scope = $this->makeOutputBlock(Type::T_ROOT);
 
        $this->compileChildrenNoReturn($rootBlock->children, $this->scope);
        assert($this->scope !== null);
        $this->flattenSelectors($this->scope);
        $this->missingSelectors();
    }
 
    /**
     * Report missing selectors
     *
     * @return void
     */
    protected function missingSelectors()
    {
        foreach ($this->extends as $extend) {
            if (isset($extend[3])) {
                continue;
            }
 
            list($target, $origin, $block) = $extend;
 
            // ignore if !optional
            $this->rootDirectory = getcwd();
        }
 
        try {
            $this->parser = $this->parserFactory($path);
            $tree         = $this->parser->parse($source);
            $this->parser = null;
 
            $this->formatter = new $this->configuredFormatter();
            $this->rootBlock = null;
            $this->rootEnv   = $this->pushEnv($tree);
 
            $warnCallback = function ($message, $deprecation) {
                $this->logger->warn($message, $deprecation);
            };
            $previousWarnCallback = Warn::setCallback($warnCallback);
 
            try {
                $this->injectVariables($this->registeredVars);
                $this->compileRoot($tree);
                $this->popEnv();
            } finally {
                Warn::setCallback($previousWarnCallback);
            }
 
            $sourceMapGenerator = null;
 
            if ($this->sourceMap) {
                if (\is_object($this->sourceMap) && $this->sourceMap instanceof SourceMapGenerator) {
                    $sourceMapGenerator = $this->sourceMap;
                    $this->sourceMap = self::SOURCE_MAP_FILE;
                } elseif ($this->sourceMap !== self::SOURCE_MAP_NONE) {
                    $sourceMapGenerator = new SourceMapGenerator($this->sourceMapOptions);
                }
            }
            assert($this->scope !== null);
 
            $out = $this->formatter->format($this->scope, $sourceMapGenerator);
 
            $prefix = '';
        if ($file->locked() === false) {
            // File was already locked by another process, lets avoid compiling the same file twice.
            return false;
        }
 
        $logfile = fopen('php://memory', 'rb+');
        $logger = new StreamLogger($logfile, true);
 
        $compiler = $this->getCompiler();
        $compiler->setLogger($logger);
 
        // Set the lookup paths.
        $this->functions->setBasePath($path);
        $compiler->setImportPaths([[$this, 'findImport']]);
 
        // Run the compiler.
        $compiler->addVariables($this->getVariables(true));
        $scss = '$output-bourbon-deprecation-warnings: false;' . "\n" . '@import "' . $in . '.scss"';
        try {
            $this->result = $compiler->compileString($scss);
            $css = $this->result->getCss();
        } catch (CompilerException $e) {
            if (version_compare(static::$options['compatibility'], '5.5', '<')) {
                static::$options['legacy'][$in] = true;
                $this->warnings['__TITLE__'] = 'Please update your theme!';
                $this->warnings[$in] = ['WARNING: ' . $e->getMessage()];
 
                return $this->compileLegacyFile($in);
            }
 
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on error: {$e->getMessage()}", 500, $e);
        } catch (\Exception $e) {
            throw new \RuntimeException("ERROR: CSS Compilation on file '{$in}.scss' failed on fatal error: {$e->getMessage()}", 500, $e);
        }
        if (strpos($css, $scss) === 0) {
            $css = '/* ' . $scss . ' */';
        }
 
        // Extract map from css and save it as separate file.
        $pos = strrpos($css, '/*# sourceMappingURL=');
    /**
     * Returns URL to CSS file.
     *
     * If file does not exist, it will be created by using CSS compiler.
     *
     * @param string $name
     * @return string
     */
    public function css($name)
    {
        if (!isset($this->cssCache[$name])) {
            $compiler = $this->compiler();
 
            if ($compiler->needsCompile($name, [$this, 'getCssVariables'])) {
                if (\GANTRY_DEBUGGER) {
                    Debugger::startTimer("css-{$name}", "Compiling CSS: {$name}");
                    Debugger::addMessage("Compiling CSS: {$name}");
                }
 
                $compiler->compileFile($name);
 
                if (\GANTRY_DEBUGGER) {
                    Debugger::stopTimer("css-{$name}");
                }
            }
 
            $this->cssCache[$name] = $compiler->getCssUrl($name);
        }
 
        return $this->cssCache[$name];
    }
 
    /**
     * @return array
     */
    public function getCssVariables()
    {
        if ($this->preset) {
            $variables = $this->presets()->flatten($this->preset . '.styles', '-');
        } else {
        $styles = $this->getAssetsInLocation('styles', $location);
 
        if (!$styles) {
            return [];
        }
 
        $gantry = Gantry::instance();
 
        /** @var Theme|null $theme */
        $theme = isset($gantry['theme']) ? $gantry['theme'] : null;
 
        /** @var Document $document */
        $document = $gantry['document'];
 
        foreach ($styles as $key => $style) {
            if (isset($style['href'])) {
                $url = $style['href'];
                if ($theme && preg_match('|\.scss$|', $url)) {
                    // Compile SCSS files.
                    $url = $theme->css(Gantry::basename($url, '.scss'));
                }
                // Deal with streams and relative paths.
                $url = $document::url($url, null, null, false);
 
                $styles[$key]['href'] = $url;
            }
        }
 
        return $styles;
    }
 
    /**
     * @param string $location
     * @return array
     * @since 5.4.3
     */
    public function getScripts($location = 'head')
    {
        $scripts = $this->getAssetsInLocation('scripts', $location);
 
        static $error = false;
 
        if (isset($new)) {
            $error = (bool) $new;
        }
 
        return $error;
    }
 
    protected static function registerStyles()
    {
        if (static::errorPage()) {
            return;
        }
 
        /** @var CMSApplication $application */
        $application = Factory::getApplication();
        $doc = $application->getDocument();
 
        $styles = static::$stack[0]->getStyles();
 
        foreach ($styles as $style) {
            switch ($style[':type']) {
                case 'file':
                    $attribs = array_replace(['type' => $style['type'], 'media' => $style['media']], $style['element']);
                    $attribs = array_filter($attribs, static function($arg) { return null !== $arg; });
                    $doc->addStyleSheet($style['href'], [], $attribs);
                    break;
                case 'inline':
                    $doc->addStyleDeclaration($style['content'], $style['type']);
                    break;
            }
        }
    }
 
    protected static function registerScripts()
    {
        if (static::errorPage()) {
            return;
        }
        if (
            $framework === 'bootstrap'
            || ($framework === 'bootstrap.2' && JVersion::MAJOR_VERSION === 3)
            || ($framework === 'bootstrap.5' && JVersion::MAJOR_VERSION >= 4)
        ) {
            /** @var Theme $theme */
            $theme = Gantry::instance()['theme'];
            $theme->joomla = true;
        }
 
        return true;
    }
 
    /**
     *
     */
    public static function registerAssets()
    {
        static::registerFrameworks();
        static::registerStyles();
        static::registerScripts();
    }
 
    /**
     * NOTE: In PHP this function can be called either from Gantry DI container or statically.
     *
     * @param bool|null $addDomain
     * @return string
     */
    public static function domain($addDomain = null)
    {
        if (!$addDomain) {
            return '';
        }
 
        $absolute = Uri::root(false);
        $relative = Uri::root(true);
 
        return substr($absolute, 0, -strlen($relative));
    }
    {
        return null;
    }
 
    /**
     * @param string $text
     * @return string
     */
    public function filter($text)
    {
        return $text;
    }
 
    public function finalize()
    {
        $gantry = Gantry::instance();
        /** @var Document $document */
        $document = $gantry['document'];
 
        $document::registerAssets();
    }
 
    /**
     * @return mixed|null
     */
    public function call()
    {
        $args = func_get_args();
        $callable = array_shift($args);
        return is_callable($callable) ? call_user_func_array($callable, $args) : null;
    }
 
    /**
     * @param string $action
     * @param int|string|null $id
     * @return bool
     */
    public function authorize($action, $id = null)
    {
        return true;
            if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
                return;
            }
 
            throw new RuntimeError(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext());
        }
 
        if ($isDefinedTest) {
            return true;
        }
 
        if ($this->env->hasExtension('\Twig\Extension\SandboxExtension')) {
            $this->env->getExtension('\Twig\Extension\SandboxExtension')->checkMethodAllowed($object, $method);
        }
 
        // Some objects throw exceptions when they have __call, and the method we try
        // to call is not supported. If ignoreStrictCheck is true, we should return null.
        try {
            if (!$arguments) {
                $ret = $object->$method();
            } else {
                $ret = \call_user_func_array([$object, $method], $arguments);
            }
        } catch (\BadMethodCallException $e) {
            if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) {
                return;
            }
            throw $e;
        }
 
        // @deprecated in 1.28
        if ($object instanceof \Twig_TemplateInterface) {
            $self = $object->getTemplateName() === $this->getTemplateName();
            $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName());
            if ('renderBlock' === $method || 'displayBlock' === $method) {
                $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('hasBlock' === $method) {
                $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template');
            } elseif ('render' === $method || 'display' === $method) {
                $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName());
    // line 56
    public function block_body_bottom($context, array $blocks = [])
    {
        // line 57
        echo "    ";
    }
 
    // line 66
    public function block_page_head($context, array $blocks = [])
    {
        // line 67
        $this->loadTemplate("partials/page_head.html.twig", "@nucleus/page.html.twig", 67)->display($context);
    }
 
    // line 72
    public function block_page_footer($context, array $blocks = [])
    {
        // line 73
        echo "        ";
        $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "platform", []), "finalize", [], "method");
        // line 74
        echo twig_join_filter($this->getAttribute(($context["gantry"] ?? null), "scripts", [0 => "footer"], "method"), "
    ");
    }
 
    // line 80
    public function block_page($context, array $blocks = [])
    {
        // line 81
        echo "<!DOCTYPE ";
        echo (($this->getAttribute($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "config", [], "any", false, true), "page", [], "any", false, true), "doctype", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "config", [], "any", false, true), "page", [], "any", false, true), "doctype", []), "html")) : ("html"));
        echo ">
<html";
        // line 82
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "page", []), "htmlAttributes", []);
        echo ">
    ";
        // line 83
        echo ($context["page_head"] ?? null);
        echo "
 
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->$block($context, $blocks);
            } catch (Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for \Twig\Error\LoaderError exceptions
                // see \Twig\Error\LoaderError
                if (-1 === $e->getTemplateLine()) {
                    $e->guess();
                }
 
                throw $e;
            } catch (\Exception $e) {
                $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
                $e->guess();
 
                throw $e;
            }
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
    }
 
    /**
     * Displays a parent block.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name    The block name to display from the parent
     * @param array  $context The context
     * @param array  $blocks  The current set of blocks
     */
    public function displayParentBlock($name, array $context, array $blocks = [])
    {
        $name = (string) $name;
 
        if (isset($this->traits[$name])) {
            $this->traits[$name][0]->displayBlock($name, $context, $blocks, false);
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, $blocks, false);
        } else {
            throw new RuntimeError(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext());
        }
    }
 
    /**
     * Displays a block.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string $name      The block name to display
     * @param array  $context   The context
     * @param array  $blocks    The current set of blocks
     * @param bool   $useBlocks Whether to use the current set of blocks
     */
    public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true)
    {
        $name = (string) $name;
 
    }
 
    protected function doGetParent(array $context)
    {
        // line 1
        return "@nucleus/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = [])
    {
        $this->parent = $this->loadTemplate("@nucleus/page.html.twig", "partials/page.html.twig", 1);
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_footer($context, array $blocks = [])
    {
        // line 4
        echo "    ";
        $this->displayParentBlock("page_footer", $context, $blocks);
        echo "
    <jdoc:include type=\"modules\" name=\"debug\" />
";
    }
 
    public function getTemplateName()
    {
        return "partials/page.html.twig";
    }
 
    public function isTraitable()
    {
        return false;
    }
 
    public function getDebugInfo()
    {
        return array (  42 => 4,  39 => 3,  29 => 1,);
    }
 
 
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->$block($context, $blocks);
            } catch (Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for \Twig\Error\LoaderError exceptions
                // see \Twig\Error\LoaderError
                if (-1 === $e->getTemplateLine()) {
                    $e->guess();
                }
 
                throw $e;
            } catch (\Exception $e) {
                $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
                $e->guess();
 
                throw $e;
            }
        } elseif (false !== $parent = $this->getParent($context)) {
            $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false);
        // line 58
        echo "    ";
        echo twig_join_filter($this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "document", []), "getHtml", [0 => "body_bottom"], "method"), "
    ");
        echo "
";
        $context["body_bottom"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 61
        $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "document", []), "addScript", [0 => $this->env->getExtension('Gantry\Component\Twig\TwigExtension')->urlFunc("gantry-assets://js/main.js"), 1 => 11, 2 => "footer"], "method");
        // line 65
        ob_start(function () { return ''; });
        // line 66
        echo "    ";
        $this->displayBlock('page_head', $context, $blocks);
        $context["page_head"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 71
        ob_start(function () { return ''; });
        // line 72
        echo "    ";
        $this->displayBlock('page_footer', $context, $blocks);
        // line 76
        echo "
    ";
        // line 77
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "debugger", []), "render", [], "method");
        echo "
";
        $context["page_footer"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
        // line 80
        $this->displayBlock('page', $context, $blocks);
    }
 
    // line 8
    public function block_content($context, array $blocks = [])
    {
        // line 9
        echo "        ";
    }
 
    // line 19
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
{
    public function __construct(Environment $env)
    {
        parent::__construct($env);
 
        $this->blocks = [
            'page_footer' => [$this, 'block_page_footer'],
        ];
    }
 
    protected function doGetParent(array $context)
    {
        // line 1
        return "@nucleus/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = [])
    {
        $this->parent = $this->loadTemplate("@nucleus/page.html.twig", "partials/page.html.twig", 1);
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_page_footer($context, array $blocks = [])
    {
        // line 4
        echo "    ";
        $this->displayParentBlock("page_footer", $context, $blocks);
        echo "
    <jdoc:include type=\"modules\" name=\"debug\" />
";
    }
 
    public function getTemplateName()
    {
        return "partials/page.html.twig";
    }
 
    public function isTraitable()
    {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
{
    public function __construct(Environment $env)
    {
        parent::__construct($env);
 
        $this->blocks = [
            'content' => [$this, 'block_content'],
        ];
    }
 
    protected function doGetParent(array $context)
    {
        // line 1
        return "partials/page.html.twig";
    }
 
    protected function doDisplay(array $context, array $blocks = [])
    {
        $this->parent = $this->loadTemplate("partials/page.html.twig", "index.html.twig", 1);
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }
 
    // line 3
    public function block_content($context, array $blocks = [])
    {
        // line 4
        echo "    ";
        echo $this->getAttribute($this->getAttribute(($context["gantry"] ?? null), "platform", []), "displayContent", [0 => ($context["content"] ?? null)], "method");
        echo "
";
    }
 
    public function getTemplateName()
    {
        return "index.html.twig";
    }
 
    public function isTraitable()
    {
        return false;
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
            $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Exception $e) {
            $e = new RuntimeError(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
    public function getBlocks()
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = [])
    {
        $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks));
    }
 
    public function render(array $context)
    {
        $level = ob_get_level();
        if ($this->env->isDebug()) {
            ob_start();
        } else {
            ob_start(function () { return ''; });
        }
        try {
            $this->display($context);
        } catch (\Exception $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            while (ob_get_level() > $level) {
                ob_end_clean();
            }
 
            throw $e;
        }
 
        return ob_get_clean();
    }
 
    protected function displayWithErrorHandling(array $context, array $blocks = [])
    {
        try {
     * @internal
     */
    public function __construct(Environment $env, Template $template)
    {
        $this->env = $env;
        $this->template = $template;
    }
 
    /**
     * Renders the template.
     *
     * @param array $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     */
    public function render($context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        return $this->template->render($context, \func_num_args() > 1 ? func_get_arg(1) : []);
    }
 
    /**
     * Displays the template.
     *
     * @param array $context An array of parameters to pass to the template
     */
    public function display($context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        $this->template->display($context, \func_num_args() > 1 ? func_get_arg(1) : []);
    }
 
    /**
     * Checks if a block is defined.
     *
     * @param string $name    The block name
     * @param array  $context An array of parameters to pass to the template
     *
        @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), \E_USER_DEPRECATED);
 
        return $this->templateClassPrefix;
    }
 
    /**
     * Renders a template.
     *
     * @param string|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @return string The rendered template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function render($name, array $context = [])
    {
        return $this->load($name)->render($context);
    }
 
    /**
     * Displays a template.
     *
     * @param string|TemplateWrapper $name    The template name
     * @param array                  $context An array of parameters to pass to the template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws SyntaxError  When an error occurred during compilation
     * @throws RuntimeError When an error occurred during rendering
     */
    public function display($name, array $context = [])
    {
        $this->load($name)->display($context);
    }
 
    /**
     * Loads a template.
     *
 
            $this->renderer = $this->extendTwig($twig, $loader);
        }
 
        return $this->renderer;
    }
 
    /**
     * Render a template file by using given context.
     *
     * @param string $file
     * @param array $context
     * @return string
     */
    public function render($file, array $context = [])
    {
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $this->renderer()->render($file, $context);
    }
 
    /**
     * Compile and render twig string.
     *
     * @param string $string
     * @param array $context
     * @return string
     */
    public function compile($string, array $context = [])
    {
        $renderer = $this->renderer();
        $template = $renderer->createTemplate($string);
 
        // Include Gantry specific things to the context.
        $context = $this->getContext($context);
 
        return $template->render($context);
    }
 
 
// Bootstrap Gantry framework or fail gracefully (inside included file).
$className = __DIR__ . '/custom/includes/gantry.php';
if (!is_file($className)) {
    $className = __DIR__ . '/includes/gantry.php';
}
$gantry = include $className;
 
/** @var Platform $joomla */
$joomla = $gantry['platform'];
$joomla->document = $this;
 
/** @var Theme $theme */
$theme = $gantry['theme'];
 
// All the custom twig variables can be defined in here:
$context = array();
 
// Render the page.
echo $theme->render('index.html.twig', $context);
 
     * @param   string  $directory  The name of the template
     * @param   string  $filename   The actual filename
     *
     * @return  string  The contents of the template
     *
     * @since   1.7.0
     */
    protected function _loadTemplate($directory, $filename)
    {
        $contents = '';
 
        // Check to see if we have a valid template file
        if (file_exists($directory . '/' . $filename))
        {
            // Store the file path
            $this->_file = $directory . '/' . $filename;
 
            // Get the file content
            ob_start();
            require $directory . '/' . $filename;
            $contents = ob_get_contents();
            ob_end_clean();
        }
 
        // Try to find a favicon by checking the template and root folder
        $icon = '/favicon.ico';
 
        foreach (array($directory, JPATH_BASE) as $dir)
        {
            if (file_exists($dir . $icon))
            {
                $path = str_replace(JPATH_BASE, '', $dir);
                $path = str_replace('\\', '/', $path);
                $this->addFavicon(Uri::base(true) . $path . $icon);
                break;
            }
        }
 
        return $contents;
    }
 
        if (!file_exists($directory . '/' . $template . '/' . $file))
        {
            $file = 'index.php';
        }
 
        // Load the language file for the template
        $lang = \JFactory::getLanguage();
 
        // 1.5 or core then 1.6
        $lang->load('tpl_' . $template, JPATH_BASE, null, false, true)
        || $lang->load('tpl_' . $template, $directory . '/' . $template, null, false, true);
 
        // Assign the variables
        $this->template = $template;
        $this->baseurl = Uri::base(true);
        $this->params = isset($params['params']) ? $params['params'] : new Registry;
 
        // Load
        $this->_template = $this->_loadTemplate($directory . '/' . $template, $file);
 
        return $this;
    }
 
    /**
     * Parse a document template
     *
     * @return  HtmlDocument  instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    protected function _parseTemplate()
    {
        $matches = array();
 
        if (preg_match_all('#<jdoc:include\ type="([^"]+)"(.*)\/>#iU', $this->_template, $matches))
        {
            $template_tags_first = array();
            $template_tags_last = array();
 
            $options['title'] = (isset($args[3])) ? $args[3] : null;
        }
 
        parent::$_buffer[$options['type']][$options['name']][$options['title']] = $content;
 
        return $this;
    }
 
    /**
     * Parses the template and populates the buffer
     *
     * @param   array  $params  Parameters for fetching the template
     *
     * @return  HtmlDocument instance of $this to allow chaining
     *
     * @since   1.7.0
     */
    public function parse($params = array())
    {
        return $this->_fetchTemplate($params)->_parseTemplate();
    }
 
    /**
     * Outputs the template to the browser.
     *
     * @param   boolean  $caching  If true, cache the output
     * @param   array    $params   Associative array of attributes
     *
     * @return  string The rendered data
     *
     * @since   1.7.0
     */
    public function render($caching = false, $params = array())
    {
        $this->_caching = $caching;
 
        if (empty($this->_template))
        {
            $this->parse($params);
        }
     */
    protected function render()
    {
        // Setup the document options.
        $this->docOptions['template'] = $this->get('theme');
        $this->docOptions['file']     = $this->get('themeFile', 'index.php');
        $this->docOptions['params']   = $this->get('themeParams');
 
        if ($this->get('themes.base'))
        {
            $this->docOptions['directory'] = $this->get('themes.base');
        }
        // Fall back to constants.
        else
        {
            $this->docOptions['directory'] = defined('JPATH_THEMES') ? JPATH_THEMES : (defined('JPATH_BASE') ? JPATH_BASE : __DIR__) . '/themes';
        }
 
        // Parse the document.
        $this->document->parse($this->docOptions);
 
        // Trigger the onBeforeRender event.
        \JPluginHelper::importPlugin('system');
        $this->triggerEvent('onBeforeRender');
 
        $caching = false;
 
        if ($this->isClient('site') && $this->get('caching') && $this->get('caching', 2) == 2 && !\JFactory::getUser()->get('id'))
        {
            $caching = true;
        }
 
        // Render the document.
        $data = $this->document->render($caching, $this->docOptions);
 
        // Set the application output data.
        $this->setBody($data);
 
        // Trigger the onAfterRender event.
        $this->triggerEvent('onAfterRender');
                    $this->setUserState('users.login.form.data', array('return' => \JUri::getInstance()->toString()));
                    $this->set('themeFile', 'offline.php');
                    $this->setHeader('Status', '503 Service Temporarily Unavailable', 'true');
                }
 
                if (!is_dir(JPATH_THEMES . '/' . $template->template) && !$this->get('offline'))
                {
                    $this->set('themeFile', 'component.php');
                }
 
                // Ensure themeFile is set by now
                if ($this->get('themeFile') == '')
                {
                    $this->set('themeFile', $file . '.php');
                }
 
                break;
        }
 
        parent::render();
    }
 
    /**
     * Route the application.
     *
     * Routing is the process of examining the request environment to determine which
     * component should receive the request. The component optional parameters
     * are then set in the request object to be processed when the application is being
     * dispatched.
     *
     * @return  void
     *
     * @since   3.2
     */
    protected function route()
    {
        // Execute the parent method
        parent::route();
 
        $Itemid = $this->input->getInt('Itemid', null);
        // Unset invalid system variables
        foreach ($invalidInputVariables as $systemVariable)
        {
            $input->set($systemVariable, null);
        }
 
        // Abort when there are invalid variables
        if ($invalidInputVariables)
        {
            throw new \RuntimeException('Invalid input, aborting application.');
        }
 
        // Perform application routines.
        $this->doExecute();
 
        // If we have an application document object, render it.
        if ($this->document instanceof \JDocument)
        {
            // Render the application output.
            $this->render();
        }
 
        // If gzip compression is enabled in configuration and the server is compliant, compress the output.
        if ($this->get('gzip') && !ini_get('zlib.output_compression') && ini_get('output_handler') !== 'ob_gzhandler')
        {
            $this->compress();
 
            // Trigger the onAfterCompress event.
            $this->triggerEvent('onAfterCompress');
        }
 
        // Send the application response.
        $this->respond();
 
        // Trigger the onAfterRespond event.
        $this->triggerEvent('onAfterRespond');
    }
 
    /**
     * Check if the user is required to reset their password.
{
    include_once __DIR__ . '/defines.php';
}
 
if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}
 
require_once JPATH_BASE . '/includes/framework.php';
 
// Set profiler start time and memory usage and mark afterLoad in the profiler.
JDEBUG ? JProfiler::getInstance('Application')->setStart($startTime, $startMem)->mark('afterLoad') : null;
 
// Instantiate the application.
$app = JFactory::getApplication('site');
 
// Execute the application.
$app->execute();
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
WP_REDIS_DISABLED 1
USER ugubzavkpf
HOME /home/200851.cloudwaysapps.com/ugubzavkpf
PATH_TRANSLATED redirect:/index.php/historia-da-arte-regional
PATH_INFO /arteregional/historia-da-arte-regional
SCRIPT_NAME /index.php
REQUEST_URI /index.php/arteregional/historia-da-arte-regional
QUERY_STRING
REQUEST_METHOD GET
SERVER_PROTOCOL HTTP/1.1
GATEWAY_INTERFACE CGI/1.1
REMOTE_PORT 50508
SCRIPT_FILENAME /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/index.php
SERVER_ADMIN [no address given]
CONTEXT_DOCUMENT_ROOT /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/
CONTEXT_PREFIX
REQUEST_SCHEME http
DOCUMENT_ROOT /home/200851.cloudwaysapps.com/ugubzavkpf/public_html/
REMOTE_ADDR 3.235.227.36
SERVER_PORT 80
SERVER_ADDR 127.0.0.1
SERVER_NAME www.arteregional.com.br
SERVER_SOFTWARE Apache/2.4.58 (Debian)
SERVER_SIGNATURE <address>Apache/2.4.58 (Debian) Server at www.arteregional.com.br Port 80</address>
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HTTP_X_VARNISH 459656
HTTP_ACCEPT_ENCODING gzip
HTTP_X_FORWARDED_FOR 3.235.227.36
HTTP_USER_AGENT claudebot
HTTP_ACCEPT */*
HTTP_X_VERSION 54
HTTP_X_APP_USER ugubzavkpf
HTTP_X_APPLICATION phpstack
HTTP_X_FORWARDED_HOST www.arteregional.com.br
HTTP_X_FORWARDED_PROTO http
HTTP_HOST www.arteregional.com.br
HTTP_X_REAL_IP 3.235.227.36
HTTP_AUTHORIZATION
cw_allowed_ip 0
FCGI_ROLE RESPONDER
PHP_SELF /index.php/arteregional/historia-da-arte-regional
REQUEST_TIME_FLOAT 1711618027.7562
REQUEST_TIME 1711618027
empty
0. Whoops\Handler\PrettyPageHandler