CINXE.COM
First through train runs on Russia鈥檚 Pacific Railway | News | Railway Gazette International
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7513768095036817"> <link rel="preload" as="script" href="/Magazine/core.js?p=7513768095036817"> <link rel="preload" as="image" href="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg" imagesrcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 480w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/600xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 600w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/780xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> <!-- DVV Google Tag Manager DO NOT delete --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KGQPK8B');</script> <!-- End Google Tag Manager --> <title>First through train runs on Russia鈥檚 Pacific Railway | News | Railway Gazette International</title> <meta name="description" content="RUSSIA: The first train has travelled the full 531 km length of the recently completed Pacific Railway from the Elga coking coal deposit to a port which is under construction at Cape Manorsky on the Sea of Okhotsk." /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2024-11-27 09:31:06.828"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMMM YYYY"/> <meta name="momentrelative" content="false"/> <meta name="momentrelativeformat" content="YYYY,MM,DD"/> <meta name="momentrelativemorethan" content="10"/> <meta name="robots" content="noarchive" /> <meta name="pubdate" content="Mon, 18 Nov 2024 10:00 GMT" /> <link rel="canonical" href="https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="40" /> <meta name="primarynavigation" content="Freight ,News" /> <meta property="og:title" content="First through train runs on Russia鈥檚 Pacific Railway" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article" /> <meta property="og:site_name" content="Railway Gazette International" /> <meta property="og:description" content="RUSSIA: The first train has travelled the full 531 km length of the recently completed Pacific Railway from the Elga coking coal deposit to a port which is under construction at Cape Manorsky on the Sea of Okhotsk. The train operated on October 30-31 comprised 20 ..." /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1024x536/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg" /> <meta property="og:image:alt" content="Russia Pacific Railway (Photo ELSI)" /> <meta property="og:image" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1024x536/6/6/3/68663_russiapacificrailwayphotokhabarovskkraigovernor_706040.jpg" /> <meta property="og:image:alt" content="Russia Pacific Railway (Photo Khabarovsk Krai Governor)" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="First through train runs on Russia鈥檚 Pacific Railway" /> <meta property="twitter:description" content="RUSSIA: The first train has travelled the full 531 km length of the recently completed Pacific Railway from the Elga coking coal deposit to a port which is under construction at Cape Manorsky on the Sea of Okhotsk. The train operated on October 30-31 comprised 20 ..." /> <meta property="twitter:image:src" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1120xAny/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg" /> <meta property="twitter:image:alt" content="Russia Pacific Railway (Photo ELSI)" /> <link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> <!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> <link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> <meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> <meta name="msapplication-TileColor" content="#ffffff" /> <link href="/Magazine/core.css?p=7513768095036817" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7513768095036817" rel="stylesheet" type="text/css" media="print"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script> <script type="text/javascript"> var IPState = { useripstate: false, useripname: '' }; </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'StoryID':'67820'}); window.dataLayer.push({'StoryFormatProperty':'O'}); window.dataLayer.push({'StoryCategories':'|Infrastructure|Freight|Russia|Heavy haul|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1097'}); window.dataLayer.push({'StoryTypeCode':'1013'}); window.dataLayer.push({'StoryCategoriesCodes':'|66|67|92|2026|'}); window.dataLayer.push({'StoryFullNavPath':'|1|31|40|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'40'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'40'}); window.dataLayer.push({'NavigationAreaNavCode':'31'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'RGofree'}); window.dataLayer.push({'AccessProductName':'Railway Gazette Online Free'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> //add any client specific dimensions window.dataLayer = window.dataLayer || []; window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|31|40|'}); window.dataLayer.push({'Content Title':'First through train runs on Russia鈥檚 Pacific Railway | News'}); window.dataLayer.push({'AccessStatus':'Granted'}); window.dataLayer.push({'Template':'Story'}); window.dataLayer.push({'Pubcode':'2'}); window.dataLayer.push({'PublicationName':'Railway Gazette International'}); window.dataLayer.push({'StoryAccessControl':'Private'}); window.dataLayer.push({'StoryFormat':'No auto related content'}); window.dataLayer.push({'StoryType':'News'}); window.dataLayer.push({'Headline':'First through train runs on Russia鈥檚 Pacific Railway'}); window.dataLayer.push({'LongHeadline':undefined}); window.dataLayer.push({'Intro':undefined}); window.dataLayer.push({'Catchline':undefined}); window.dataLayer.push({'Synopsis':undefined}); window.dataLayer.push({'Standfirst':undefined}); window.dataLayer.push({'Answer':undefined}); window.dataLayer.push({'Source':undefined}); window.dataLayer.push({'Refs':undefined}); window.dataLayer.push({'Class':undefined}); window.dataLayer.push({'Credits':undefined}); window.dataLayer.push({'Postscript':undefined}); window.dataLayer.push({'PrimaryNav':'|Main Navigation|News|Freight|'}); window.dataLayer.push({'PrimaryNavCurrent':'Freight'}); window.dataLayer.push({'PrimaryNavCodeCurrent':'40'}); window.dataLayer.push({'CategoryCodes':'|66|67|92|2026|'}); window.dataLayer.push({'Tags':undefined}); window.dataLayer.push({'Bylines':'|Railway Gazette International|'}); window.dataLayer.push({'IssueDate':'01-11-2024'}); window.dataLayer.push({'IssueDateTime':'01-11-2024 00:00:00'}); window.dataLayer.push({'PublishDate':'18-11-2024'}); window.dataLayer.push({'PublishDateTime':'18-11-2024 10:00:00'}); window.dataLayer.push({'BrowseJobsURL':undefined}); window.dataLayer.push({'grecaptcha':'6LdF8vonAAAAAD7o_GFdZx7ScY1_ggHdHUmijbXX'}); </script> <link href='https://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'> <style> /* CLS FIXES */ #wrapper_sleeve { position: relative; max-width: 1024px; margin: 0 auto; background-color: #fff; } body#story.story-style-2 #wrapper_sleeve, body#story.story-style-4 #wrapper_sleeve, body#story.story-style-5 #wrapper_sleeve, body#story.story-style-6 #wrapper_sleeve, body#story.story-style-7 #wrapper_sleeve{ max-width:unset; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .footer .container .inner-sleeve { max-width: 1220px; } #wrapper_sleeve>:first-child { padding-top: 31px; background-color: #fff; } .accessContainer>.container:first-child .inner-sleeve { padding-top: 60px; } @media only screen and (max-width: 768px) { .accessContainer .storyPreview .access-denied-index-img.picture img{ width:100px; } } @media screen and (min-width: 1024px){ .hero-spin{ width:100%; margin-left: -50%; margin-right: -50%; } .grid .hero-carousel .swiper-box, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.site-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.site-width-background{ width:100%; margin-left: calc(-50% + 50%); } body#story.story-style-1 .contentWrapper{ width: auto; padding-right: 7%; } body#story.story-style-2 .contentWrapper, body#story.story-style-4 .contentWrapper, body#story.story-style-5 .contentWrapper, body#story.story-style-6 .contentWrapper, body#story.story-style-7 .contentWrapper { width: 107%; padding-right: 7%; } } @media screen and (min-width: 1180px){ .grid .hero-carousel .swiper-box{ width:100%; margin-left: -50%; margin-right: -50%; } } @media screen and (min-width: 1280px){ .directories.directory-search .contentWrapperLeft { margin-left: 0; width: 100%; } } </style> <style type="text/css"> /* START styles for HTML messaging */ #top .html-message, #main .html-message, #foot .html-message { margin: 40px 0px; } #top .html-message .content, #main .html-message .content, #foot .html-message .content { background-color: #f2f2f2; padding: 20px 20px 50px; z-index: 9; position: relative; } #top .html-message.content-close-block .content, #main .html-message.content-close-block .content, #foot .html-message.content-close-block .content { padding-top: 40px; } #top .html-message .content .col-1, #main .html-message .content .col-1, #foot .html-message .content .col-1 { margin-bottom: 25px; } #top .html-message .content .col-1 header h2, #main .html-message .content .col-1 header h2, #foot .html-message .content .col-1 header h2 { color: #000; font-size: 1.424rem; line-height: 1.602rem; margin-bottom: 13px; } #top .html-message .content .col-1 section p, #main .html-message .content .col-1 section p, #foot .html-message .content .col-1 section p { color:#444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 20px; } #top .html-message .content .col-1 section ul, #main .html-message .content .col-1 section ul, #foot .html-message .content .col-1 section ul { padding: 0; margin: 0; list-style: none; } #top .html-message .content .col-1 section li, #main .html-message .content .col-1 section li, #foot .html-message .content .col-1 section li { color: #444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 12px; position: relative; padding-left: 18px; } #top .html-message .content .col-1 section li:before, #main .html-message .content .col-1 section li:before, #foot .html-message .content .col-1 section li:before { content: ''; position: absolute; display: inline-block; left: -2px; top: 2px; width: 14px; height: 14px; background-position: -504px -517px; background-repeat: no-repeat; background-image: url(/magazine/dest/graphics/output/sprite.css-007e76df.svgz); } #top .html-message .content .col-1 footer .button, #main .html-message .content .col-1 footer .button, #foot .html-message .content .col-1 footer .button { position: absolute; bottom: 30px; } #top .html-message .content .col-2, #main .html-message .content .col-2, #foot .html-message .content .col-2 { background-color: #fff; position: relative; padding: 25px 20px; margin-bottom: 41px; } .html-message.content-close-block .content .col-2:after { content: ""; display: inline-block; border-left: 28px solid transparent; border-right: 28px solid transparent; border-top: 28px solid #fff; position: absolute; right: 25px; bottom: -28px; } #top .html-message .content .col-2 section .image , #main .html-message .content .col-2 section .image, #foot .html-message .content .col-2 section .image { display: none; } #top .html-message .content .col-2 section .quotation, #main .html-message .content .col-2 section .quotation, #foot .html-message .content .col-2 section .quotation { margin-bottom: 5px; } #top .html-message .content .col-2 section .quotation p, #main .html-message .content .col-2 section .quotation p, #foot .html-message .content .col-2 section .quotation p { color: #E39B00; font-size: 1.125rem; line-height: 1.424rem; font-weight: bold; } #top .html-message .content .col-2 section .quotation-source, #main .html-message .content .col-2 section .quotation-source, #foot .html-message .content .col-2 section .quotation-source { overflow: hidden; } #top .html-message .content .col-2 section .quotation-source p, #main .html-message .content .col-2 section .quotation-source p, #foot .html-message .content .col-2 section .quotation-source p { color: #666; font-size: .889rem; line-height: 1rem; margin-bottom: 5px; } /* Styling for 'close' button */ .content-close-block { position: relative; } .content-close-block .content-close-block-trigger { position: absolute; top: 0; right: 0; z-index: 30000; background-color: #f2f2f2; padding: 6px; text-transform: uppercase; font-size: 0.702rem; line-height: 0.702rem; text-decoration: none; font-weight: bold; } .content-close-block .content-close-block-trigger:after { content: ""; display: inline-block; width: 20px; height: 14px; background-repeat: no-repeat; background-image: url(https://d1c4d7gnm6as1q.cloudfront.net/pictures/web/m/u/g/message_close_691357.svgz); background-position: 4px 0px; } @media screen and (min-width: 1024px) { #top .oneColumn .html-message .content, #foot .oneColumn .html-message .content { display: flex; flex-wrap: nowrap; flex-direction: row; padding: 27px 40px 40px; } #top .oneColumn .html-message.content-close-block .content, #foot .oneColumn .html-message.content-close-block .content { padding-top: 40px; } #top .oneColumn .html-message .content .col-1, #foot .oneColumn .html-message .content .col-1 { flex: 1 67.68%; padding-right: 20px; margin-bottom: 70px; } #top .oneColumn .html-message .content .col-1 header h2, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2, #main .oneColumn .html-message .content .col-1 header h2, #foot .oneColumn .html-message .content .col-1 header h2, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2 { /* font-size: 2.566rem; line-height: 2.887rem; */ font-size: 2.281rem; line-height: 2.566rem; } #top .twoColumns .html-message .content .col-1 header h2, #foot .twoColumns .html-message .content .col-1 header h2 { font-size: 2.281rem; line-height: 2.566rem; } /* #top .oneColumn .html-message .content .col-1 section p, #top .twoColumns .html-message .content .col-1 section p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p, #main .oneColumn .html-message .content .col-1 section p, #foot .oneColumn .html-message .content .col-1 section p, #foot .twoColumns .html-message .content .col-1 section p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 10px; } */ /* #top .oneColumn .html-message .content .col-1 section li, #top .twoColumns .html-message .content .col-1 section li, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li, #main .oneColumn .html-message .content .col-1 section li, #foot .oneColumn .html-message .content .col-1 section li, #foot .twoColumns .html-message .content .col-1 section li, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 0; } */ /* #top .oneColumn .html-message .content .col-1 section li:before, #top .twoColumns .html-message .content .col-1 section li:before, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before, #main .oneColumn .html-message .content .col-1 section li:before, #foot .oneColumn .html-message .content .col-1 section li:before, #foot .twoColumns .html-message .content .col-1 section li:before, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before { top: 5px; } */ #top .oneColumn .html-message .content .col-1 footer .button, #foot .oneColumn .html-message .content .col-1 footer .button { bottom: 40px; } #top .oneColumn .html-message .content .col-2, #foot .oneColumn .html-message .content .col-2 { background-color: transparent; flex: 1 56.565%; padding: 13px 0 0; margin-bottom: 41px; } #top .oneColumn .columnOne .html-message.content-close-block .content .col-2:after, #foot .oneColumn .columnOne .html-message.content-close-block .content .col-2:after { display: none; } #top .oneColumn .html-message .content .col-2 section .image, #top .twoColumns .html-message .content .col-2 section .image, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image, #main .oneColumn .html-message .content .col-2 section .image, #foot .oneColumn .html-message .content .col-2 section .image, #foot .twoColumns .html-message .content .col-2 section .image, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image { display: block; float: left; width: 140px; height: 140px; margin-right: 17px; margin-bottom: 10px; } #top .oneColumn .html-message .content .col-2 section .image img, #top .twoColumns .html-message .content .col-2 section .image img, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img, #main .oneColumn .html-message .content .col-2 section .image img, #foot .oneColumn .html-message .content .col-2 section .image img, #foot .twoColumns .html-message .content .col-2 section .image img, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img { border-radius: 100%; } #top .oneColumn .html-message .content .col-2 section .quotation, #foot .oneColumn .html-message .content .col-2 section .quotation { float: right; margin-bottom: 5px; min-width: 240px; width: calc(100% - 160px); } #top .oneColumn .html-message .content .col-2 section .quotation p, #top .twoColumns .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p, #main .oneColumn .html-message .content .col-2 section .quotation p, #foot .oneColumn .html-message .content .col-2 section .quotation p, #foot .twoColumns .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p { font-size: 1.4rem; margin-bottom: 15px; line-height: 2rem; } #top .oneColumn .html-message .content .col-2 section .quotation-source, #foot .oneColumn .html-message .content .col-2 section .quotation-source { clear: both; float: left; width: 140px; } #top .oneColumn .html-message .content .col-2 section .quotation-source p, #foot .oneColumn .html-message .content .col-2 section .quotation-source p { margin-bottom: 0; } } /* END styles for HTML messaging */ </style> <style type="text/css"> /* START styles for thank you page */ .thankYouTop { text-align: center; } .spinPromo.thankYouTop.package h2 { padding: 10px 0; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { background-color: #fff; padding: 20px; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 20px; } @media screen and (min-width: 1024px) { .spinPromo.thankYouTop.package .columns { display: flex; flex-direction: row; max-width: 1180px; margin-left: auto; margin-right: auto; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { flex: 1 1; position: relative; text-align: left; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 0; } .spinPromo.thankYouTop.package .columns .column-2, .package .columns .column-3 { margin-left: 20px; } .spinPromo.thankYouTop.package .columns .column-inner { padding-bottom: 50px; } .spinPromo.thankYouTop.package .columns .column-footer { position: absolute; left: 20px; right: 20px; bottom: 20px; padding: 0; } } /* END styles for thank you page */ </style> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <!-- TEMP PATCH: DVVMCS-366 START --> <style> header#masthead+.ad { position: relative; } @media screen and (min-width: 1024px) { .wallpaper-applied header#masthead+.ad:before { content: ''; position: absolute; left: -50vw; right: -50vw; z-index: 0; top: -24px; bottom: -24px; width: 1024px; margin: 0 auto; } .wallpaper-applied header#masthead+.ad > div { position: relative; } } </style> <!-- TEMP PATCH: AC - REMOVAL OF RG CHINA LOGO AND RE-WORK OF GRID REPEAT -- START --> <style> .brand-list ul li { margin: 0 auto; } @media screen and (min-width: 1280px){ .brand-list ul { -ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(3,1fr) !important; grid-gap: 170px; }} @media screen and (min-width: 768px) and (max-width: 1280px) { .brand-list ul { display: -ms-grid; display: grid; -ms-grid-columns: 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(2,1fr) !important; grid-gap: 75px; margin: auto; text-align: center !important; }} #cookiePolicy div p {text-align: left;} </style> <!-- TEMP PATCH: AC END --> <!-- AC - Ads text colour for global enhanced ads --> <style> .ad-text { background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } </style> <style> .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 header#masthead+.ad { width: 728px; } </style> <!-- START DIRECTORY CSS STYLING --> <style> .directories .contactOption__web a{ overflow-wrap: break-word; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info, .directories .company-footer .company-footer__content__sleeve .company-footer__content { gap:20px; } @media screen and (min-width: 1024px){ .full-branded-section, .full-container { width: unset; left: unset; right: unset; margin-left: unset; margin-right: unset; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info .company-footer__info{ margin:0; } } @media screen and (min-width: 1280px){ .directories #content .headerWrapper, .directories .contentWrapper { width: 100%; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__info { padding-left: 20px; padding-right: 20px; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__logo-request-info .company-header__logo .company-header__logo_inner { margin-right: 20px; } .directories .contactus__header .contactus__header_location { margin-left: 12%; } .directories .company-header .company-header__content__sleeve .company-header__company-tabs, .directories .company-footer .company-footer__content__sleeve .company-footer__content { padding-left: 20px; padding-right: 20px; } } </style> <!-- END DIRECTORY CSS STYLING --> <!-- Beginnig hot topics CSS STYLING --> <style> .hot-topics-item {display: none;} .hot-topics-item > span:nth-child(2) > a:nth-child(1) {display: none;} .wallpaper-applied.site-width-1024 .hot-topics-container { position: relative; width: 100% !important; margin: auto; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1024px !important; width: 100%; margin: 0 auto; } .directories .contactus__footer { display: none; } div.company-footer__info-logo-request-info > div.company-footer__info > button { display: none !important; } div.company-header__content > div.company-header__info > button { display: none !important; } .cta-button-wrapper { margin: 0 auto !important; display: table;} .cta-button { background: transparent; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; margin: 0 auto !important; transition: all 0.25s ease; } .cta-button:hover { background: #005092; color: #fff !important; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; transition: all 0.25s ease; text-decoration: none; } .storytext .inline_gallery.style1-gallery .galleryscroll .text.content {background: #ffffff73; padding: 10px;} </style> <!-- <style> div#wrapper div#wrapper_sleeve.showMenuPushed div.container.relatedArticles.companyNews {display: none;} </style> --> <!-- END hot topics CSS STYLING --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <meta name="google-site-verification" content="ojKNsJR7hnpBNaYvxbPPxNCHSQ0YJnk6BHFQui-VqsQ" /> <meta name="google-site-verification" content="HCoJsr9OuUiqJS--PJxmsXQRuTF7_scJPa_V9A_g7yA" /> <meta name="google-site-verification" content="yqc9O3gL22UT2bkYsY2LHSea9TJiT_5aiXGAQd2Grgw" /> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <!-- Begin of setting Premium user --> <script> $(document).ready(function() { var notSignedIn = getDataLayerVal('PartyActiveProductIds') == undefined ? true : false ; if(!notSignedIn){ var splitthis = getDataLayerVal('PartyActiveProductIds').split('|'); var premium = splitthis.filter(function(number) { return number == '2'; }); if(premium.length != 0){ document.querySelector('body').classList.add("premium"); } else{ if(document.querySelector('body').classList.contains("premium")){ document.querySelector('body').classList.remove("premium"); } } } }) </script> <!-- End of setting Premium user --> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <script> var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } </script> <style> @media screen and (min-width: 1220px) { .wallpaper-applied.site-width-1024 .mast.container .inner-sleeve, .wallpaper-applied.site-width-1024 #mainnav.container .inner-sleeve { max-width: 1220px; } } </style> <script type='text/javascript'> function getDataLayerVal(keyVal) { for (var i = 0; i < window.dataLayer.length; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } function updateContentFromDataLayer(selector, value) { return document.querySelector(selector).innerText = getDataLayerVal(value) } </script> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { // Define a size mapping object which can be applied to the ad positions. The first // parameter to addSize is a viewport size, while the second is a list of allowed ad sizes. // The sizes included below match those in the examples provided in this support document. //(Used for: AdvertA, AdvertC, AdvertAttach) var mapSmallRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250]]).build(); //(Used for: AdvertB) var mapSmallRightB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250], [120,600], [160,600], [300,600]]).build(); //(Used for: AdvertD, AdvertE, AdvertF) var mapLargeRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300, 50]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300, 600]]).build(); // WV Cloud Documentation | Google DoubleClick Advertising // abacusemedia.com/webvision Page 6 of 12 //(Used for: Masthead Leaderboard;) var mapLB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,50], [320, 50]]). // 601, 0 (Small Tablet - Portrait) addSize([601, 0], [[468,60]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[728,90]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[728,90], [970,250]]).build(); var mapWallpaper = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [1, 1]).build(); // var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()); // ADVERT A googletag.defineSlot('/13644946/RGI.COM_MPU_GENERAL_PAGES', [300, 250], 'div-gpt-ad-1602084646203-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // ADVERT B googletag.defineSlot('/13644946/RGI_MPU_General2', [300, 250], 'div-gpt-ad-1601978937945-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); // ADVERT C googletag.defineSlot('/13644946/RGI_MPU_C', [300, 250], 'div-gpt-ad-1666188956933-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // UNDER NAV googletag.defineSlot('/13644946/RGI.COM_LEAD_GENERAL_PAGES', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1601973347622-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 2 googletag.defineSlot('/13644946/RGI_Leaderboard_2', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724079785985-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 3 googletag.defineSlot('/13644946/RGI_Leaderboard_3', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724081464759-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Leaderboard 4 googletag.defineSlot('/13644946/RGI_leaderboard_4', [[970, 250]], 'div-gpt-ad-1726133201831-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // home video slot //googletag.defineSlot('/13644946/rgivideo', [[640, 480], [300, 250]], 'div-gpt-ad-1644499013896-0').addService(googletag.pubads()); //RG ADHESION - (WB 10.09/2024) googletag.defineOutOfPageSlot('/13644946/RGI_Adhesion', 'div-gpt-ad-1725960169073-0').addService(googletag.pubads()); // Microsite ad units googletag.defineSlot('/13644946/Metro_MPU_General', [300, 250], 'div-gpt-ad-1602154876742-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_B', [300, 250], 'div-gpt-ad-1602154919837-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_C', [300, 250], 'div-gpt-ad-1602154953662-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Leaderboard_General', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1707835215170-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Skyscraper', [[300, 600], [300, 250]], 'div-gpt-ad-1602154984749-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Masthead_Leader_under_Nav', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1602155029502-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_A', [300, 250], 'div-gpt-ad-1602155062284-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_MPU_B', [300, 250], 'div-gpt-ad-1602155092840-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_C', [300, 250], 'div-gpt-ad-1602155131343-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); //Out of page unit - added 15-9-22 googletag.defineOutOfPageSlot('/13644946/RGI_Interstitial', 'div-gpt-ad-1663232421348-0').addService(googletag.pubads()); googletag.pubads().setTargeting('UserStateLoggedIn', getDataLayerVal('UserStateLoggedIn')); googletag.pubads().setTargeting('StoryCategories', getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting('navcode', getDataLayerVal('NavCode')); googletag.pubads().setTargeting('articleid', getDataLayerVal('StoryID')); googletag.pubads().setTargeting('storylayout', getDataLayerVal('StoryLayout')); googletag.pubads().setTargeting('jobtitle', typeof jobtitleVar !== 'undefined' ? jobtitleVar.slice(1,-1) : ''); googletag.pubads().setTargeting('industrysector', typeof industrySectorVar !== 'undefined' ? industrySectorVar.slice(1,-1) : ''); googletag.pubads().setTargeting('MicrositeNavCode', getDataLayerVal('MicrositeNavCode')); googletag.pubads().setTargeting('usertype', getDataLayerVal('usertype')); googletag.pubads().setTargeting('ProductId',getDataLayerVal('PartyActiveProductIds')); googletag.pubads().setTargeting("url",window.location.pathname); googletag.pubads().setTargeting('slug', document.location.pathname.substr(document.location.pathname.lastIndexOf('/'))); if (document.querySelector('#div-gpt-ad-1602240785818-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.classList.add('site-width-1024'); } if(showwallpaper === "true") { document.body.classList.add('wallpaper-applied'); $(window).trigger('wallpaper:advert'); } } }); }; googletag.pubads().enableLazyLoad({ fetchMarginPercent: 5, // Fetch slots within 5 viewports. renderMarginPercent: 5, // Render slots within 2 viewports. mobileScaling: 0 // Double the above values on mobile. }); //googletag.pubads().enableAsyncRendering(); //googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); // check if wallpaper is defined, is set to be shown on this page and screen width is greater than 1220 /* if (document.querySelector('#div-gpt-ad-1578661320890-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/210416249/Wallpaper', 'div-gpt-ad-1602240785818-0').defineSizeMapping(mapWallpaper).addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { debugger; if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { debugger; if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.className += ' ' + 'site-width-1024'; } if(showwallpaper === "true") { document.body.className += ' ' + 'wallpaper-applied'; $(window).trigger('wallpaper:advert'); } } }); }; */ window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace' || event.data == 'wallpaper-standard') { //if(event.data == 'wallpaper-standard') { document.body.classList.add(event.data); positionWallpaperFromTop(); wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = document.querySelector('#masthead').getBoundingClientRect().bottom + 'px'; } } function positionWallpaperFromTop() { if(!window.IntersectionObserver) return; var observer = new IntersectionObserver(function(entries) { if (entries[0].isIntersecting) { var wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = (document.querySelector('#masthead').getBoundingClientRect().bottom + window.scrollY) + 'px' } else { document.querySelector('#wrapper_sleeve').style.top = '0'; } }); observer.observe(document.querySelector('#masthead')); } </script> <!-- THIS IS COMMENTED OUT AS IT ALREADY EXISTS ON A SEPARATE PAGE TEXT "Google tag manager" --> <!-- Google Tag Manager (noscript) <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> End Google Tag Manager (noscript) --> <script type="text/javascript"> _linkedin_partner_id = "3203105"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript"; b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3203105&fmt=gif" /> </noscript> <script> var EnhancedAdvertisingConfig = {}; </script> <!--Global Enhanced Adverts JSON definition from PAGETEXT--> <script> EnhancedAdvertisingConfig = { "Refresh":false, "RefreshDelaySecondsDefaultDesktop":30, "RefreshDelaySecondsDefaultMobile":30, "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", "StoryDynamicSlotsAddGroupsInline":"", "StoryDynamicSlotsAddGroupsRHC":"", "StoryDynamicSlotsRemoveGroupsAll":"", "StoryDynamicSlotsRemoveGroupsInline":"", "StoryDynamicSlotsRemoveGroupsRHC":"", "StoryDynamicSlotsRepeat":true, "StoryDynamicSlotsDesktopMaxInlineSlots":3, "StoryDynamicSlotsMobileMaxInlineSlots":3, "StoryDynamicSlotsDesktopMaxRHCSlots":3, "StoryDynamicSlotsDesktopElementSpacingFirst":3, "StoryDynamicSlotsMobileElementSpacingFirst":2, "StoryDynamicSlotsDesktopElementSpacing":4, "StoryDynamicSlotsMobileElementSpacing":3, "GAMAdUnitSizesInlineMobileDefault":[[300,250]], "GAMAdUnitSizesInlineDesktopDefault":[[300,250]], "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], "RHCMinHeightForSlotInsert":250, "RHCAdContainerDefaultHeight":250, "RHCMinHeightForStickyAd":300, "RHCStickyAdThresholdHeight":300, "RHCAdSmallContainerDefaultHeight":300, "CollapseEmptyDivs":true, "Slots":[ { "Type":"GAMAdvert", "Position":"PreferRight", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":true, "InsertIfNoRHCSpace":true, "NoBackfill":true, "AdUnitSizesInline":[[300,250]], //not required after hotfix "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"CustomContent", "Position":"Right", "Sticky":false, "Group":"Widgets", "Repeat":false, "InsertIfNoRHCSpace":true, "HTML":"<div class=\"tab-widget-5\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most\"></div>", "CustomEventName":"MostPopularWidgetInit", "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ $(window).trigger("abacus:readjusrhcheight",[event, elem]); }, "CSSClass":"wvc-custom-widget-mostpopular", "MinHeight":600 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":false, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //repeating slots - 1 and 2 { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //inline repaeting slots { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 }, { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 } ], "Overrides":[ { //If Type='Sponsored' (1018) OR Type='Organisations' (1015) OR Type='Tender' (1030) OR Type='Job' (1031) "Conditions":"StoryType-1015,StoryType-1018,StoryType-1030,StoryType-1031", "Operator":"Or", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Slots (all) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsAll":"Ads,Widgets" } }, { //If Category="Slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads,Widgets" } }, { //If Category="Slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads,Widgets" } }, { //If Category="Advert slots (all) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Advert slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads" } }, { //If Category="Advert slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads", } } ] };</script> <script> $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); (function(w, d) { if(window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; } d.addEventListener('DOMContentLoaded', function(event) { if(EnhancedAdvertisingConfig.Slots) { var enhAdDebug = false; if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; var sp = 'story-inlinecontent-placeholder'; var supportedTypes = ['gamadvert', 'customcontent']; var supportedPositions = ['inline', 'preferright', 'right']; var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; var isStoryFullLayout = d.body.classList.contains('story-full-layout'); var inlineCounter = 1; var rhcCounter = 1; var inlineAdCounter = 1; var rhcAdCounter = 1; var ticking = false; $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ var t = $(this); t.replaceWith( t.html() ); }); var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *'); var maxRHCSlotsToFitIn = 0; var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; var getClosestParent = function(elem, selector) { for(; elem && elem !== d; elem = elem.parentNode) { if(matches(elem, selector)) { return elem; } } return null; }; var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; //PWVD-780 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); if('Overrides' in EnhancedAdvertisingConfig) { if(EnhancedAdvertisingConfig.Overrides) { var overrides = EnhancedAdvertisingConfig.Overrides; var andOperator = function() { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; var orOperator = function(el) { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; for(var i = 0, iL = overrides.length; i < iL; i++) { var override = overrides[i]; var operatorFilter; if(override.Operator && override.Operator.toLowerCase() == 'and') { operatorFilter = andOperator; } else { operatorFilter = orOperator; } if(operatorFilter()) { if('Settings' in override) { if(override.Settings) { var settings = override.Settings; if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); } } if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); } } if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); } } if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); } } if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); } } if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); } } if('Repeat' in settings && isBoolean(settings.Repeat)) { EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; } if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; } if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; } if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; } if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; } if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; } if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; } if('DesktopElementSpacingFirst' in settings && settings.DesktopElementSpacingFirst && isNumberPositive(settings.DesktopElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; } if('MobileElementSpacingFirst' in settings && settings.MobileElementSpacingFirst && isNumberPositive(settings.MobileElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; } if('DesktopElementSpacing' in settings && settings.DesktopElementSpacing && isNumberPositive(settings.DesktopElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; } if('MobileElementSpacing' in settings && settings.MobileElementSpacing && isNumberPositive(settings.MobileElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; } if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; } if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; } if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; } } } } } } } var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { x.Used = false; x.Index = i; if('Type' in x) { if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { x.Type = x.Type.toString().toLowerCase(); } else { x.Type = 'customcontent'; } } else { x.Type = 'customcontent'; } if('Position' in x) { if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { x.Position = x.Position.toString().toLowerCase(); } else { x.Position = 'inline'; } } else { x.Position = 'inline'; } if('CSSClass' in x) { x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); } else { x.CSSClass = ''; } if('Group' in x) { x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); } else { x.Group = ''; } if('Sticky' in x) { if(x.Sticky.toString().toLowerCase() == 'true') { x.Sticky = true; } else { x.Sticky = false; } } else { x.Sticky = false; } if('InsertIfNoRHCSpace' in x) { if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { x.InsertIfNoRHCSpace = true; } else { x.InsertIfNoRHCSpace = false; } } else { x.InsertIfNoRHCSpace = false; } if('MinHeight' in x) { x.MinHeight = parseInt(x.MinHeight.toString()); } else { x.MinHeight = 0; } if('NoBackfill' in x) { if(x.NoBackfill.toString().toLowerCase() == 'true') { x.NoBackfill = true; } else { x.NoBackfill = false; } } else { x.NoBackfill = false; } if('Refresh' in x) { if(x.Refresh.toString().toLowerCase() == 'true') { x.Refresh = true; } else { x.Refresh = false; } } else { x.Refresh = false; } if('ExtraHTML' in x) { if(x.ExtraHTML.toString()) { x.ExtraHTML = x.ExtraHTML.toString(); } else { x.ExtraHTML = ''; } } else { x.ExtraHTML = ''; } if('CustomEventName' in x) { if(x.CustomEventName.toString()) { x.CustomEventName = x.CustomEventName.toString(); } else { x.CustomEventName = ''; } } else { x.CustomEventName = ''; } if('Javascript' in x) { if(x.Javascript) { if(typeof x.Javascript === 'function') { x.Javascript = x.Javascript; } } else { x.Javascript = ''; } } else { x.Javascript = ''; } if('AdUnit' in x) { if(x.AdUnit.toString()) { x.AdUnit = x.AdUnit.toString(); } else { x.AdUnit = ''; } } else { x.AdUnit = ''; } if('AdUnitSizesInlineMobile' in x) { x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault } if('AdUnitSizesInlineDesktop' in x) { x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; } if('AdUnitSizesRHC' in x) { x.AdUnitSizesRHC = x.AdUnitSizesRHC; } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; } if('RefreshDelaySeconds' in x) { x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); } else { x.RefreshDelaySeconds = 30; } return x; }); var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); var googletag = w.googletag || {}; googletag.cmd = googletag.cmd || []; if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); var nextIsPara = (i + 1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); if( currentIsPara && !nextIsPara ){ //PWVD-897 - count paragraphs followed by any other element if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } } else if( currentIsPara && nextIsPara ) { if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } tmpCounter++; adThresholdCounter = 1; storyCustomContentPlaceholders[i].outerHTML = storyCustomContentPlaceholders[i].outerHTML + "<div class=\"story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport\" data-storyinlinecontainer=\"" + tmpCounter + "\"><div class=\"story-inlinecontent-placeholder-inner\" data-id=\"story-inline-item-" + tmpCounter + "\" data-storyinlineitem=\"" + tmpCounter + "\"></div></div>"; if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; } } } if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { w.addEventListener("abacus:storytexttablefull:finished", function(e) { adjustRHCHeightAndInitialAds(); }, true); } else { adjustRHCHeightAndInitialAds(); } } if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { if(el) { var inlineAdsObserver = new IntersectionObserver(function(entries) { return inlineAdsObserverCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); inlineAdsObserver.observe(el); } }); var inlineAdsObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); }; d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { if(el) { var adsInViewportObserver = new IntersectionObserver(function(entries) { return adsInViewportObserverCallback(entries); }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); adsInViewportObserver.observe(el); } }); var adsInViewportObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { d.body.classList.add('enhanced-advertising-storytext-endreached'); } // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { d.body.classList.add('enhanced-advertising-rhc-endreached'); } /* if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); readjusRHCHeight(); } */ } }); }; } var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); if(inlineEl) { googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { d.body.classList.add('enhanced-advertising-inline-init'); insertInlineSlot(inlineEl); console.log('Init inline ad slot load'); }); } function slotRender(event){ var el, slot = event.slot, slotId = slot.getSlotElementId(); if(enhAdDebug) console.log('Slot render: ' + slotId); if(slotId == 'custom-inline'){ el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) //if(!el) // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); } else el = d.getElementById(slotId); if(el) { var minHeight = 0; var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { var classList = el.classList; if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad'); classList.add('mob-ad-50'); classList.add('ad-story-inline'); classList.add('ad-story-inline-notempty'); parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; if(currentInlineSlot[0].Repeat == false) { currentInlineSlot[0].Used = true; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } else { classList.add('ad-story-inline-isempty'); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; currentInlineSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { if(parentInlineNode.getAttribute('data-nobackfill') == '1') { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); if(!storyInlineContent.some(function(el) { return el.Used == false; })) { finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } else { insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } initRHCHeightCalc(); return; } } // Move to next from the list if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') var adRetryCssClass = 'ad-story-inline-retry'; var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); if(!nextInlineSlotList.length) { // select repeatable ads nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextInlineSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextInlineSlotList.length) { // no more ads to add d.body.classList.add('enhanced-advertising-inline-runoutofslots'); finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); initRHCHeightCalc(); return; } } } var mapInlineAdItem = nextInlineSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } if(mapInlineAdItem.Repeat) { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); } else { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } googletag.display(slotId); el.classList.add(adRetryCssClass); parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); if(mapInlineAdItem.ExtraHTML) { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; } } else { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } } } else if(parentRHCNode) { parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad-rhc'); classList.add('ad-story-rhc'); classList.add('ad-story-rhc-notempty'); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { minHeight = currentRHCSlot[0].MinHeight; if(currentRHCSlot[0].Repeat == false) { currentRHCSlot[0].Used = true; } if(currentRHCSlot[0].InsertIfNoRHCSpace) { currentRHCSlot[0].InsertIfNoRHCSpace = false; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); var canAddRHC = isStoryTextTallerThanRHC(); if( ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) || ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) ){ parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); } } else { classList.add('ad-story-rhc-isempty'); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { currentRHCSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { if(parentRHCNode.getAttribute('data-nobackfill') == '1') { updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); if(!storyRHCContent.some(function(el) { return el.Used == false; })) { d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); } initRHCHeightCalc(); return; } } // Move to next from the list if(enhAdDebug){ console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); console.log(storyRHCContent); } if(storyRHCContent.some(function(e) { return e.Used == false; })) { var adRetryCssClass = 'ad-story-rhc-retry'; var nextRHCSlotList = storyRHCContent.filter(function(e) { if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') return e.Index > index && e.Used == false; }); if(enhAdDebug){ console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); console.log(nextRHCSlotList); } if(!nextRHCSlotList.length) { // select repeatable ads nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextRHCSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextRHCSlotList.length) { // no more ads to add finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); initRHCHeightCalc(); return; } } } var mapRHCAdItem = nextRHCSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } if(mapRHCAdItem.Repeat) { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); } else { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); } if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) if(enhAdDebug) console.log('Next RHC config item is custom content'); adjustRHCHeightAndInitialAds(); } else if(mapRHCAdItem.AdUnit){ //Google ad var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping( googletag.sizeMapping().build() ).setTargeting( 'refresh', (refresh ? 'true' : 'false') ).setTargeting( 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) ).setCollapseEmptyDiv( EnhancedAdvertisingConfig.CollapseEmptyDivs, false ).addService( googletag.pubads() ); } else { console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } googletag.display(slotId); } el.classList.add(adRetryCssClass); parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); if(mapRHCAdItem.ExtraHTML) { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; } } else { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); } } } if(parentInlineNode) { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); } else { //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); } } } initRHCHeightCalc(); } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRequested', function(event) { var slot = event.slot; var el = d.getElementById(slot.getSlotElementId()); if(el) { var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); } else { parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); } } } }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { var sId = event.slot.getSlotElementId(); if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); console.log(event); //loadOrRender(sId, 'render', event); } slotRender(event); }); if(enhAdDebug){ //Track slot load events googletag.pubads().addEventListener('slotOnload', (evLoad) => { var sId = evLoad.slot.getSlotElementId(); if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); console.log(event); //loadOrRender(sId, 'load'); } }); } googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode || parentStoryRHCNode) { if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-inline-refreshed'); inlineEl.setAttribute('data-shouldrefresh', '0'); } } } } else { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-rhc-refreshed'); rhcEl.setAttribute('data-shouldrefresh', '0'); } } } } } } }); googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1) { var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; if(refreshdelayseconds) { setTimeout(function() { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); inlineEl.setAttribute('data-shouldrefresh', '0'); } else { inlineEl.setAttribute('data-shouldrefresh', '1'); } } } else if(parentStoryRHCNode) { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); rhcEl.setAttribute('data-shouldrefresh', '0'); } else { rhcEl.setAttribute('data-shouldrefresh', '1'); } } } }, refreshdelayseconds * 1000); } else { console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); } } }); }); function isBoolean(n) { return !!n === n; } function isNumber(n) { return +n === n; } function isString(n) { return '' + n === n; } function isNumberPositive(n) { return +n === n && n > 0; } function isNumberPositiveOrZero(n) { return +n === n && n >= 0; } function isArrayOfArrays(a) { return a.every(function(x) { return Array.isArray(x); }); } function getAbsoluteHeight(element) { if(!element) return 0; var styles = w.getComputedStyle(element); var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); var minHeight = element.clientHeight; return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); } function updateRHCContainerState() { var classList = d.body.classList; if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { d.body.classList.add('enhanced-advertising-rhc-empty'); } else { d.body.classList.remove('enhanced-advertising-rhc-empty'); } } function insertRHCSlot(el) { if(el) { el.classList.add('story-rhccontent-placeholder-processing'); } if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredRHCAds = storyRHCContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { finalizeRemainingEmptyRHCSlotContainers(classList, false); return; } var mapRHCAdItem = tempFilteredRHCAds[0]; classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); if(mapRHCAdItem.CSSClass) { mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapRHCAdItem.Type == 'gamadvert') { if(placeholder) { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); if(mapRHCAdItem.Sticky) { classList.add('story-rhccontent-placeholder-canbesticky'); placeholder.classList.add('sticky'); } if(mapRHCAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); if(mapRHCAdItemSlot) { mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-rhccontent-placeholder-refresh-true'); } else { classList.add('story-rhccontent-placeholder-refresh-false'); } classList.add('story-rhccontent-placeholder-ad'); placeholder.id = 'story-rhcad-' + rhcAdCounter; placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapRHCAdItem.AdUnit); googletag.display('story-rhcad-' + rhcAdCounter); $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } rhcAdCounter++; } } else if(mapRHCAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); classList.add('story-rhccontent-placeholder-customcontent'); if(placeholder) { placeholder.innerHTML = mapRHCAdItem.HTML; classList.add('story-rhccontent-placeholder-notempty'); $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } el.classList.add('story-rhccontent-placeholder-finished'); } } el.setAttribute('data-index', mapRHCAdItem.Index); rhcCounter++; } else { console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyRHCSlotContainers(classList, false); } else { console.log('Missing RHC element'); } } function insertInlineSlot(el) { if(el) { el.classList.add('story-inlinecontent-placeholder-processing'); } if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredInlineAds = storyInlineContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredInlineAds = storyInlineContent.filter(function(e){ return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredInlineAds.length) { tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { // start from the first repeatable ad index tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { finalizeRemainingEmptyInlineSlotContainers(classList, true); return; } } } var mapInlineAdItem = tempFilteredInlineAds[0]; classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); if(mapInlineAdItem.CSSClass) { mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapInlineAdItem.Type == 'gamadvert') { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); el.classList.add('story-inlinecontent-placeholder-ad'); if(mapInlineAdItem.Sticky) { classList.add('story-inlinecontent-placeholder-sticky'); placeholder.classList.add('sticky'); } if(mapInlineAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapInlineAdItem.Repeat) { classList.add('story-inlinecontent-placeholder-repeat-true'); } else { classList.add('story-inlinecontent-placeholder-repeat-false'); } if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-inlinecontent-placeholder-refresh-true'); } else { classList.add('story-inlinecontent-placeholder-refresh-false'); } placeholder.id = 'story-inlinead-' + inlineAdCounter; placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapInlineAdItem.AdUnit); googletag.display('story-inlinead-' + inlineAdCounter); $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); } } inlineAdCounter++; } else if(mapInlineAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); el.classList.add('story-inlinecontent-placeholder-customcontent'); placeholder.innerHTML = mapInlineAdItem.HTML; $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); } } el.classList.add('story-inlinecontent-placeholder-finished'); var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; el.setAttribute('data-index', mapInlineAdItem.Index); slotRender(inlineCustomEvent); //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); } el.setAttribute('data-index', mapInlineAdItem.Index); //el.setAttribute('data-index', inlineCounter); inlineCounter++; } else { console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyInlineSlotContainers(classList, true); } else { console.log('Missing inline element'); } } function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); classList.add('story-rhccontent-placeholder-isempty'); classList.add('story-rhccontent-placeholder-runoutofslots'); classList.add('story-rhccontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-rhccontent-placeholder-init'); c.add('story-rhccontent-placeholder-completed'); c.add('story-rhccontent-placeholder-isempty'); c.add('story-rhccontent-placeholder-runoutofslots'); c.add('story-rhccontent-placeholder-finished'); } } } } function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); classList.add('story-inlinecontent-placeholder-isempty'); classList.add('story-inlinecontent-placeholder-runoutofslots'); classList.add('story-inlinecontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-inlinecontent-placeholder-init'); c.add('story-inlinecontent-placeholder-completed'); c.add('story-inlinecontent-placeholder-isempty'); c.add('story-inlinecontent-placeholder-runoutofslots'); c.add('story-inlinecontent-placeholder-finished'); } } } } function updateInlinePlaceholderClasses(node, status, minHeight) { node.classList.remove('story-inlinecontent-placeholder-isempty'); node.classList.remove('story-inlinecontent-placeholder-notempty'); node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); node.classList.add('story-inlinecontent-placeholder-ad-completed'); if(!status) { var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; var computedMinHeight = parseInt(computedMinHeightValue, 10); if(minHeight > computedMinHeight) { node.style.minHeight = minHeight + 'px'; } } } function updateRHCPlaceholderClasses(node, status) { node.classList.remove('story-rhccontent-placeholder-ad-init'); node.classList.remove('story-rhccontent-placeholder-isempty'); node.classList.remove('story-rhccontent-placeholder-notempty'); node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); node.classList.add('story-rhccontent-placeholder-ad-completed'); } function initRHCHeightCalc() { updateRHCFirstandLastItemStyles(); // readjust height if no in progress/loading ads as the height might change on storytext or RHC if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { readjusRHCHeight(); } else { setTimeout(function() { initRHCHeightCalc(); }, 0); } } function isInViewport(element) { var rect = element.getBoundingClientRect(); var height = w.innerHeight || d.documentElement.clientHeight; var width = w.innerWidth || d.documentElement.clientWidth; return ( rect.right >= 0 && rect.bottom >= 0 && rect.left <= width && rect.top <= height ); } function processElementsInViewport() { var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); if(adsInlinePlaceholders || adsRHCPlaceholders) { if(adsInlinePlaceholders) { adsInlinePlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-inlinecontent-placeholder-isinviewport'); classList.add('story-inlinecontent-placeholder-isnotinviewport'); } else { classList.remove('story-inlinecontent-placeholder-isnotinviewport'); classList.add('story-inlinecontent-placeholder-isinviewport'); } }); } else { adsRHCPlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-rhccontent-placeholder-isinviewport'); classList.add('story-rhccontent-placeholder-isnotinviewport'); } else { classList.remove('story-rhccontent-placeholder-isnotinviewport'); classList.add('story-rhccontent-placeholder-isinviewport'); } }); } } } function adjustRHCHeightAndInitialAds() { var output = []; var googletag = w.googletag || {}; var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); if(rhcreflowExtra) { rhcreflowExtra.innerHTML = ''; minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { rhcCounter = i + 1; output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); if(rhcCounter >= maxRHCSlotsToFitIn) break; } d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { if(el) { observer = new IntersectionObserver(function(entries) { return observerCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); observer.observe(el); } }); var observerCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); } } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); if(rhcEl && !hasAnyRHCLoadedBefore.length) { insertRHCSlot(rhcEl); d.body.classList.add('enhanced-advertising-rhc-init'); } }); updateRHCContainerState(); } } function isStoryTextTallerThanRHC() { var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, colmain = d.getElementById('colmain').clientHeight; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); return { "canAdd": colmain > calcHeight, "delta": colmain - calcHeight }; } else { return { "canAdd": false, "delta": 0 }; } } function canAddRHCItem() { // check whether inline and RHC ads finished loading, otherwise ignore var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, innerChild = 0; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); //h = getAbsoluteHeight(innerChild); //if (h == 0) { // h = getAbsoluteHeight(item); //} h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); var result = { "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight }; return result; } else { return { "canAddRHCItem": false, "colmainTaller": false }; } } function readjusRHCHeight() { if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; } var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var canAdd = canAddRHCItem(); var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { d.body.classList.add('enhanced-advertising-rhc-completed'); } else { d.body.classList.remove('enhanced-advertising-rhc-completed'); } //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { googletag.cmd.push(function() { insertRHCSlot(rhcEl); }); } } function updateRHCFirstandLastItemStyles() { d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { item.classList.remove('story-rhccontent-placeholder-first'); item.classList.remove('story-rhccontent-placeholder-last'); if(index == 0) { item.classList.add('story-rhccontent-placeholder-first'); } if(index == data.length - 1) { item.classList.add('story-rhccontent-placeholder-last'); } }); if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { d.body.classList.add('enhanced-advertising-inline-completed'); } else { d.body.classList.remove('enhanced-advertising-inline-completed'); } } w.addEventListener('scroll', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener('resize', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener("abacus:loadcontent:complete", function(evt, context) { readjusRHCHeight(); }, true); if(d.querySelector('#story .storytext img.lazyload')) { d.addEventListener('lazyloaded', function(e) { if(w.googletag && googletag.apiReady) { if(getClosestParent(e.target, '.storytext')) { readjusRHCHeight(); } } }); } w.addEventListener("abacus:advertb:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:readjusrhcheight", function(evt, context) { readjusRHCHeight(); }, true); //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { // slotRender(customEvent); //}, true); } }); })(window, document); </script> <!-- GOOGLE ANALYTICS IS BEING INCLUDED THROUGH GOOGLE TAG MANAGER --> <!-- Global site tag (gtag.js) - Google Analytics <script async src="https://www.googletagmanager.com/gtag/js?id=UA-2220664-14"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-2220664-14'); gtag('config', 'AW-1034638432'); </script> --> <!-- Abacus Google Tag Manager DO NOT delete --> <script>(function(w,d,s,l,i){ w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; f.parentNode.insertBefore(j,f); } ) (window,document,'script','dataLayer','GTM-MJ3XLK3'); </script> <!-- End Google Tag Manager --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-1013 story-type-1097 enhanced-advertising enhanced-advertising-rhc-empty"> <!-- Abacus Google Tag Manager (noscript) DO NOT delete --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJ3XLK3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!---Railway Gazette Google Tag Manager---> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!--[if lte IE 10]> <link rel="stylesheet" href="/CSS/dest/notsupported.css"> <div class="notSupported"> <div class="sleeve"> <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> <h2> Your browser is not supported </h2> <p> Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. </p> <p class="buttonContainer"> <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> </p> </div> </div> <![endif]--> <script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script> <div id="wrapper"> <ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> <header id="masthead" class="masthead"> <div class="htmlContent"> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <div id='div-gpt-ad-1602240785818-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602240785818-0'); }); </script> </div> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602146700128-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146700128-0'); }); </script> </div>--> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602173815824-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602173815824-0'); } ); </script> </div> --> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1578661320890-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1578661320890-0'); }); </script></div>--> <!-- /13644946/RGI_Interstitial --> <div id='div-gpt-ad-1663232421348-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1663232421348-0'); }); </script> </div> <!-- /13644946/RGI_Adhesion --> <div id='div-gpt-ad-1725960169073-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1725960169073-0'); }); </script> </div> </div> <!--<div class="leaderboard"> <div class="ad"> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </div> </div>--> <div class="mast container full" role="banner" data-multi-toggle-menu> <div class="inner-sleeve" data-menu-open-pushed> <div class="mastheadLogo"> <a href="https://www.railwaygazette.com/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="railway gazette logo" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <ol class="mast-sharing-icons"> <li><a href="https://facebook.com/railwaygazette" aria-label="Facebook" rel="noopener noreferrer" target="_blank"><svg id="mast-fb-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-fb-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.46,15.46,0,0,1,4.89,5.17L5.06,5A15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" transform="translate(0 0)" fill="#005092"/><path id="mast-fb-share-ring" d="M16,31A15,15,0,1,0,1,16,15.08,15.08,0,0,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" transform="translate(0 0)" fill="#fff"/><path id="mast-fb-share-icon" d="M19.15,16.38H17V24H13.83V16.38h-1.5v-2.7h1.5V11.95a3,3,0,0,1,3.23-3.22h2.32v2.62H17.65c-.3,0-.67.15-.67.75v1.58h2.4Z" transform="translate(0 0)" fill="#fff"/></svg></a></li> <li><a href="https://twitter.com/railwaygazette" aria-label="Twitter" rel="noopener noreferrer" target="_blank"><svg id="mast-twitter-share" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_30_2)"> <path id="mast-tw-share-circle" d="M16 31.1111C24.3456 31.1111 31.1111 24.3456 31.1111 16C31.1111 7.65439 24.3456 0.888916 16 0.888916C7.65436 0.888916 0.888885 7.65439 0.888885 16C0.888885 24.3456 7.65436 31.1111 16 31.1111Z" fill="#005092"/> <path d="M17.5225 14.7749L23.4788 8H22.0671L16.8979 13.8825L12.7643 8H8L14.2468 16.8957L8 24H9.41173L14.8732 17.7876L19.2357 24H24L17.5225 14.7749ZM15.5889 16.9722L14.9539 16.0882L9.92 9.03991H12.088L16.1495 14.7279L16.7821 15.6137L22.0677 23.0076H19.8997L15.5889 16.9722Z" fill="white"/> </g> <defs> <clipPath id="clip0_30_2"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg> </a></li> <li><a href="https://www.linkedin.com/company/railway-gazette-international/" aria-label="LinkedIn" rel="noopener noreferrer" target="_blank"><svg id="mast-linked-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-linked-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-linked-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><g id="mast-linked-share-icon"><path id="mast-linked-share-icon-n" d="M19.07,12.77A2.53,2.53,0,0,0,16.75,14V13H14.13v7.88h2.63V16.45a2.08,2.08,0,0,1,.08-.67,1.5,1.5,0,0,1,1.35-1c1,0,1.35.75,1.35,1.8v4.2h2.63V16.3C22.08,13.9,20.8,12.78,19.07,12.77Z" fill="#fff"/><rect id="mast-linked-share-icon-i" x="10" y="13" width="2.63" height="7.88" fill="#fff"/><path id="mast-linked-share-icon-tittle" d="M11.35,9.18a1.39,1.39,0,0,0-1.5,1.26s0,.06,0,.09a1.36,1.36,0,0,0,1.37,1.35h.05a1.39,1.39,0,0,0,1.5-1.26s0-.06,0-.09a1.32,1.32,0,0,0-1.29-1.35Z" fill="#fff"/></g></svg></a></li> <li><a href="https://www.youtube.com/RailwayGazette" aria-label="YouTube" rel="noopener noreferrer" target="_blank"><svg id="mast-youtube-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-youtube-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-youtube-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-youtube-share-icon" d="M14.31,18.25V13.47l4.38,2.44ZM24,12.63a4,4,0,0,0-.62-1.69,2.83,2.83,0,0,0-1.61-.75C19.49,10,16.1,10,16.1,10h0s-3.39,0-5.72.19a1.87,1.87,0,0,0-1.61.75,3.27,3.27,0,0,0-.62,1.69A25,25,0,0,0,8,15.34v1.31a22.86,22.86,0,0,0,.18,2.72,4,4,0,0,0,.63,1.69,3,3,0,0,0,1.79.75c1.25.09,5.54.19,5.54.19s3.39,0,5.63-.19a1.87,1.87,0,0,0,1.61-.75A4,4,0,0,0,24,19.38a25,25,0,0,0,.18-2.72V15.34A22.86,22.86,0,0,0,24,12.63Z" fill="#fff"/></svg></a></li> <li><a href="https://www.instagram.com/railwaygazette/" aria-label="Instagram" rel="noopener noreferrer" target="_blank"><svg id="mast-instagram-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-instagram-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-instagram-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-instagram-share-icon" d="M22.3,10.76A1.38,1.38,0,0,0,21.16,9.7H10.76A1.48,1.48,0,0,0,9.7,10.84v10.4a1.48,1.48,0,0,0,1.14,1.06h10.4a1.39,1.39,0,0,0,1.06-1.06Zm-3-.08h1.21a.52.52,0,0,1,.53.51s0,0,0,0v1.21a.51.51,0,0,1-.45.53H19.34a.64.64,0,0,1-.53-.3V11.29a.46.46,0,0,1,.45-.61ZM16,13.42a2.54,2.54,0,0,1,.23,5.08H16a2.54,2.54,0,0,1,0-5.09Zm4.93,1.44v5.62a.52.52,0,0,1-.51.53H11.52A.52.52,0,0,1,11,20.5s0,0,0,0V14.86H12.2A4,4,0,0,0,12.5,18,3.66,3.66,0,0,0,14,19.49a3.81,3.81,0,0,0,4.1-.15,3.51,3.51,0,0,0,1.14-1.21,3.61,3.61,0,0,0,.53-1.59,4.17,4.17,0,0,0-.15-1.67Z" fill="#fff"/></svg></a></li> </ol> <div class="mastControls"> <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://www.railwaygazette.com/advertise-with-us" class="newWindow">Advertise</a></li><li><a href="https://account.railwaygazette.com/register?surveycode=50&campaigncode=reg_toplink?returl=https://www.railwaygazette.com/56310.article">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a class="popup signIn" href="https://www.railwaygazette.com/sign-in">Sign In</a></li></ul></nav> <div class="mastheadSearch hide" data-multi-toggle-item=""> <span class="toggleIcon"> <a href="#search" data-toggle-button=""> <span class="assistive">Search our site</span> </a> </span> <form action="https://www.railwaygazette.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> <fieldset> <div> <label for="search">Search our site</label> <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> <button class="mastSearch" type="submit">Search</button> </div> </fieldset> </form> </div> <div class="menuToggle"> <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> </div> </div> </div> </div> <div class="menuContainer"> <div class="mobileMenu" id="mobilemenu"> <div class="sleeve"> <a class="menuClose" href="#wrapper"> <span>Close<span class="assistive"> menu</span></span> </a> <ul class="main"> <li class="home-icon"> <a href="https://www.railwaygazette.com/"> <span>Home</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/news" aria-expanded="false"> <span>News</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/news"> <span>News</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"> <span>Traction & Rolling Stock</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/high-speed"> <span>High Speed</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/infrastructure"> <span>Infrastructure</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/policy"> <span>Policy</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/technology"> <span>Technology</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/business"> <span>Business</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/research-training-and-skills"> <span>Research, Training & Skills</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"> <span>Accessibility & inclusion</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/news/people"> <span>People</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/news/regions" aria-expanded="false"> <span>Regions</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/news/regions"> <span>Regions</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/africa"> <span>Africa</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/asia"> <span>Asia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/australasia"> <span>Australasia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/middle-east"> <span>Middle East</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/central-and-south-america"> <span>Central & South America</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/north-america"> <span>North America</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/uk" class="newWindow"> <span>UK news from Rail Business UK</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.metro-report.com" class="newWindow" aria-expanded="false"> <span>Urban transport news from Metro Report International</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.metro-report.com" class="newWindow"> <span>Urban transport news from Metro Report International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"> <span>Metros</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"> <span>Light Rail & Tram</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"> <span>Suburban & Commuter Rail</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"> <span>Peoplemovers & Monorails</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/in-depth"> <span>In depth</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/events" aria-expanded="false"> <span>Events</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/events"> <span>Events</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2024"> <span>Rail Industry Events 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2025"> <span>Rail Industry Events 2025</span> </a> </li> <li class=""> <a href="https://www.railbusinessawards.com/" class="newWindow"> <span>Rail Business Awards</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"> <span>Rail Training & Skills Courses 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"> <span>Rail Training & Skills Courses 2025</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data" aria-expanded="false"> <span>Maps & Data</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data"> <span>Maps & Data</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators" aria-expanded="false"> <span>Railway Operators</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators"> <span>Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"> <span>Train Operator / Open Access</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"> <span>Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"> <span>Tourist</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators" aria-expanded="false"> <span>Urban Railway Operators</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators"> <span>Urban Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"> <span>Metro</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"> <span>Light Rail / Tramway</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"> <span>Commuter</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"> <span>Infrastructure/Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"> <span>Urban rail - list of openings</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/maps" aria-expanded="false"> <span>Maps</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/maps"> <span>Maps</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"> <span>Country and city map directory</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/country-profiles"> <span>Country Profiles</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"> <span>Regulatory Authorities</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/associations"> <span>Associations</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"> <span>Data & Analysis</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/magazines" aria-expanded="false"> <span>Magazines</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/magazines"> <span>Magazines</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/railway-gazette-international"> <span>Railway Gazette International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/metro-report-international"> <span>Metro Report International</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/tenders-and-jobs"> <span>Tenders & Jobs</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/sponsored-content" aria-expanded="false"> <span>Sponsored content</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/sponsored-content"> <span>Sponsored content</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-white-papers/23803.more"> <span>White Papers</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"> <span>Webinars</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"> <span>Digital Advertorials</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"> <span>Supplier Directory</span> </a> </li> </ul> </li> </ul> </div> </div> <div class="mobileMenuClose"></div> <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="352" data-rootnavcode="352" class="home-icon"><a href="https://www.railwaygazette.com/"><span>Home</span></a></li><li data-navcode="31" data-rootnavcode="31" class="current hasChildren fourSubNav"><a href="https://www.railwaygazette.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="36" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/passenger"><span>Passenger</span></a></li><li data-navcode="47" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"><span>Traction & Rolling Stock</span></a></li><li data-navcode="46" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/high-speed"><span>High Speed</span></a></li><li data-navcode="40" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/freight"><span>Freight</span></a></li><li data-navcode="39" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/infrastructure"><span>Infrastructure</span></a></li><li data-navcode="37" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/policy"><span>Policy</span></a></li><li data-navcode="48" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/technology"><span>Technology</span></a></li><li data-navcode="38" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/business"><span>Business</span></a></li><li data-navcode="286" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/research-training-and-skills"><span>Research, Training & Skills</span></a></li><li data-navcode="6215" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"><span>Accessibility & inclusion</span></a></li><li data-navcode="49" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/news/people"><span>People</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="50" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions"><span>Regions</span></a><ul><li data-navcode="70" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/africa"><span>Africa</span></a></li><li data-navcode="73" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/asia"><span>Asia</span></a></li><li data-navcode="74" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/australasia"><span>Australasia</span></a></li><li data-navcode="75" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/europe"><span>Europe</span></a></li><li data-navcode="76" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/middle-east"><span>Middle East</span></a></li><li data-navcode="72" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/central-and-south-america"><span>Central & South America</span></a></li><li data-navcode="71" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/north-america"><span>North America</span></a></li><li data-navcode="77" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/uk" class="newWindow"><span>UK news from Rail Business UK</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="35" data-rootnavcode="31" class=""><a href="https://www.metro-report.com" class="newWindow"><span>Urban transport news from Metro Report International</span></a><ul><li data-navcode="354" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"><span>Metros</span></a></li><li data-navcode="355" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"><span>Light Rail & Tram</span></a></li><li data-navcode="356" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"><span>Suburban & Commuter Rail</span></a></li><li data-navcode="357" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"><span>Peoplemovers & Monorails</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="44" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li></ul></div></div></li><li data-navcode="33" data-rootnavcode="33" class="hasChildren"><a href="https://www.railwaygazette.com/in-depth"><span>In depth</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/in-depth/stations-keeping-eurostar-passengers-connected/67826.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/7/9/68679_eurostarlondonstpancrasphotobz_110946.jpg" loading="lazy" class="lazyloaded" alt="Eurostar London St Pancras photo BZ"></div><div class="captionBlock"><span class="title">Stations: Keeping Eurostar passengers connected</span></div></a></li><li class="promotedStory"><a href="/in-depth/stations-barcelonas-next-rail-hub-nears-completion/67792.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/2/5/68625_cabeceranortelasagreraadif_452635.jpg" loading="lazy" class="lazyloaded" alt="cabecera norte La SagreraADIF"></div><div class="captionBlock"><span class="title">Stations: Barcelona鈥檚 next rail hub nears completion</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-putting-era-at-the-heart-of-europes-railway-ecosystem/67774.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/6/3/68563_ertmsstakeholdersplatform_705799.jpg" loading="lazy" class="lazyloaded" alt="ertms stakeholders platform"></div><div class="captionBlock"><span class="title">Interview: Putting ERA at the heart of Europe鈥檚 railway ecosystem</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-ukrainian-railways-looks-for-more-international-partnerships/67765.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/5/2/68552_ukrainianrailwaysphotoukrainianrailways1_136772.jpg" loading="lazy" class="lazyloaded" alt="Ukrainian Railways (photo Ukrainian Railways) (1)"></div><div class="captionBlock"><span class="title">Interview: Ukrainian Railways looks for more international partnerships</span></div></a></li></ul></div></div></li><li data-navcode="344" data-rootnavcode="344" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/events"><span>Events</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6311" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2024"><span>Rail Industry Events 2024</span></a></li><li data-navcode="6381" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2025"><span>Rail Industry Events 2025</span></a></li><li data-navcode="6334" data-rootnavcode="344" class=""><a href="https://www.railbusinessawards.com/" class="newWindow"><span>Rail Business Awards</span></a></li><li data-navcode="6382" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"><span>Rail Training & Skills Courses 2024</span></a></li><li data-navcode="6409" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"><span>Rail Training & Skills Courses 2025</span></a></li><li data-navcode="6406" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li><li class="promotedStory"><a class="image" href="https://www.railbusinessawards.com/" data-story="67533" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/0/67880_rbas_463180.png" loading="lazy" class="lazyloaded" alt="RBAs"></div><div class="captionBlock"><span class="title">Rail Business Awards</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2025" data-story="65503"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/7/61887_2025_903874.jpg" loading="lazy" class="lazyloaded" alt="2025"></div><div class="captionBlock"><span class="title">Rail Industry Events 2025</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2024" data-story="63299"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/6/61886_2024_960559.jpg" loading="lazy" class="lazyloaded" alt="2024"></div><div class="captionBlock"><span class="title">Rail Industry Events 2024</span></div></a></li></ul></div></div></li><li data-navcode="118" data-rootnavcode="118" class="hasChildren threeSubNav"><a href="https://www.railwaygazette.com/maps-and-data"><span>Maps & Data</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="125" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators"><span>Railway Operators</span></a><ul><li data-navcode="132" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"><span>Passenger</span></a></li><li data-navcode="131" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"><span>Freight</span></a></li><li data-navcode="133" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"><span>Train Operator / Open Access</span></a></li><li data-navcode="134" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"><span>Track Authority</span></a></li><li data-navcode="130" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="129" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"><span>Tourist</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="124" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators"><span>Urban Railway Operators</span></a><ul><li data-navcode="138" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"><span>Metro</span></a></li><li data-navcode="139" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"><span>Light Rail / Tramway</span></a></li><li data-navcode="136" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"><span>Commuter</span></a></li><li data-navcode="135" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"><span>Infrastructure/Track Authority</span></a></li><li data-navcode="137" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="330" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"><span>Urban rail - list of openings</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="151" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/maps"><span>Maps</span></a><ul><li data-navcode="161" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"><span>Country and city map directory</span></a></li></ul></li><li data-navcode="128" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/country-profiles"><span>Country Profiles</span></a></li><li data-navcode="126" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"><span>Regulatory Authorities</span></a></li><li data-navcode="127" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/associations"><span>Associations</span></a></li><li data-navcode="383" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"><span>Data & Analysis</span></a></li></ul></li></ul></div></div></li><li data-navcode="111" data-rootnavcode="111" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/magazines"><span>Magazines</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="121" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/railway-gazette-international"><span>Railway Gazette International</span></a></li><li data-navcode="122" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/metro-report-international"><span>Metro Report International</span></a></li></ul></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-current-issue-november-2024/67681.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/3/1/4/68314_rgin2411coverminipic_108396.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2411-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International Current Issue - November 2024</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2024-digital-archive/65790.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/9/7/3/62973_rgin2401coverminipic_848447.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2401-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2024 Digital Archive</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2023-digital-archive/63453.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/4/1/55641_rgin2301coverminipic_330197.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2301-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2023 Digital Archive</span></div></a></li></ul></div></div></li><li data-navcode="349" data-rootnavcode="349" class="hasChildren"><a href="https://www.railwaygazette.com/tenders-and-jobs"><span>Tenders & Jobs</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/tenders-and-jobs/second-tender-for-passenger-rail-services-in-pays-de-la-loire/67867.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/6/7/68767_logofondsblanc_156719300x200_588471.jpg" loading="lazy" class="lazyloaded" alt="logofondsblanc_156719-300x200"></div><div class="captionBlock"><span class="title">Second Tender for Passenger Rail Services in Pays-de-la-Loire</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/principal-structures-engineer/67845.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/8/68718_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Principal Structures Engineer</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/commercial-procurement-manager/67776.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/3/68573_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Commercial Procurement Manager</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/project-manager/67777.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/2/68572_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Project Manager</span></div></a></li></ul></div></div></li><li data-navcode="369" data-rootnavcode="369" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/sponsored-content"><span>Sponsored content</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6320" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-white-papers/23803.more"><span>White Papers</span></a></li><li data-navcode="6318" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"><span>Webinars</span></a></li><li data-navcode="6319" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"><span>Digital Advertorials</span></a></li><li data-navcode="6383" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"><span>Supplier Directory</span></a></li></ul></li><li class="promotedStory"><a href="/sponsored-content/rail-baltica-creating-a-strategic-link-for-europe/67648.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/2/6/9/68269_estoniaulemistestationvisualisation1_3467.jpg" loading="lazy" class="lazyloaded" alt="Estonia-Ulemiste-station-visualisation-(1)"></div><div class="captionBlock"><span class="title">Rail Baltica: creating a strategic link for Europe</span><span class="author">Sponsored by <span class="noLink">Rail Baltica</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/croatian-konar-group-among-the-first-in-europe-to-manufacture-battery-multiple-unit-and-the-only-one-to-present-such-an-advancement-at-innotrans-2024/67523.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/3/2/67832_konarsmeasurementtrain_793077.jpg" loading="lazy" class="lazyloaded" alt="KON膶AR's-Measurement-train"></div><div class="captionBlock"><span class="title">Croatian KON膶AR Group among the first in Europe to manufacture Battery Multiple Unit and the only one to present such an advancement at InnoTrans 2024</span><span class="author">Sponsored by <span class="noLink">KON膶AR</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/lb-foster-highlights-at-innotrans/67476.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/9/67719_lbfoster_92071.jpg" loading="lazy" class="lazyloaded" alt="LBFoster"></div><div class="captionBlock"><span class="title">L.B. Foster highlights at InnoTrans</span><span class="author">Sponsored by <span class="noLink">L.B. Foster</span></span></div></a></li></ul></div></div></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> More from<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> </div> </header> <!-- Masthead leaderboard - under nav--> <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /13644946/RGI.COM_LEAD_GENERAL_PAGES --> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </div> </div> <!-- Masthead leaderboard - under nav <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /210416249/RGI.COM_LEAD_GENERAL_PAGES <div id='div-gpt-ad-1568119471514-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1568119471514-0'); }); </script> </div> </div>--> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.railwaygazette.com/news/freight">Freight</a></div> <div class="story_title"> <h1>First through train runs on Russia鈥檚 Pacific Railway</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.railwaygazette.com/railway-gazette-international/1098.bio" rel="author">Railway Gazette International</a></span><span class="date" data-date-timezone="{"publishdate": "2024-11-18T10:00:00","format": "D MMMM YYYY"}">2024-11-18T10:00:00+00:00</span></p> </div> </div> </div> <div id="columns" class="container"> <div id="colwrapper" class="inner-sleeve"> <div id="colmain" role="main" class="restrictedcontent"> <div id="content"> <div id="content_sleeve"> <div class="contentWrapper"> <div class="storyContentWrapper"> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article&e=First+through+train+runs+on+Russia%e2%80%99s+Pacific+Railway" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=First+through+train+runs+on+Russia%e2%80%99s+Pacific+Railway&url=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=First through train runs on Russia%E2%80%99s Pacific Railway&body=https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/67820/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="storytext"><div class="inline_image image_size_full fullsize" data-attachment="68662" data-sequence="1"><button class="show-fullscreen" data-url="/attachment?attype=P&atcode=68662&storycode=67820">Show Fullscreen</button> <p class="picture"><img alt="Russia Pacific Railway (Photo ELSI)" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 480w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/600xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 600w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/780xany/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg 780w" loading="eager" class="lazyloaded" width="1900" height="1077"></p> </div> <p>RUSSIA: The first train has travelled the full 531 km length of the recently completed Pacific Railway from the Elga coking coal deposit to a port which is under construction at Cape Manorsky on the Sea of Okhotsk.</p> <p>The train operated on October 30-31 comprised 20 coal wagons and two escort coaches hauled by a TEM14 diesel loco.</p> <div class="inline_image image_size_full fullsize" data-attachment="68663" data-sequence="2"><button class="show-fullscreen" data-url="/attachment?attype=P&atcode=68663&storycode=67820">Show Fullscreen</button> <p class="picture"><img alt="Russia Pacific Railway (Photo Khabarovsk Krai Governor)" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/3/68663_russiapacificrailwayphotokhabarovskkraigovernor_706040.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xany/6/6/3/68663_russiapacificrailwayphotokhabarovskkraigovernor_706040.jpg 480w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/600xany/6/6/3/68663_russiapacificrailwayphotokhabarovskkraigovernor_706040.jpg 600w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/780xany/6/6/3/68663_russiapacificrailwayphotokhabarovskkraigovernor_706040.jpg 780w" loading="lazy" class="lazyloaded" width="2000" height="1018"></p> </div> <p>Regular freight traffic on the single-track private railway owned by ELSI Group is expected to start in the first half of 2025, with 18 coal trains each way per day and a total capacity of 50 million tonnes/year.</p> <p>Sinara is supplying TEM14 shunting locomotives and 3TE28 main line locomotives. A total fleet of 15 locos and 1 200 wagons has been ordered.</p></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/news/freight">Freight</a></li><li><a href="/news/freight/heavy-haul">Heavy haul</a></li><li><a href="/news/infrastructure">Infrastructure</a></li><li><a href="/russia/92.subject">Russia</a></li></ul></div></div> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article' data-share-title="First through train runs on Russia鈥檚 Pacific Railway" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article&e=First+through+train+runs+on+Russia%e2%80%99s+Pacific+Railway" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=First+through+train+runs+on+Russia%e2%80%99s+Pacific+Railway&url=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.railwaygazette.com%2ffreight%2ffirst-through-train-runs-on-russias-pacific-railway%2f67820.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=First through train runs on Russia%E2%80%99s Pacific Railway&body=https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/67820/bookmark"> </li> </ul> </div> </div> </div> </div> </div> <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> <div id="rightcolumn_sleeve"> <!-- BELOW NOT SUPPORT Instructions for implementation depending on right or bottom. If this in the bottom position then we might need to wrap the code with ` <div class="container"> <div class="inner-sleeve"> // taxanomy-list to go here </div> </div> ` --> <div data-mpu1-reflow></div> <div id="rhcreflow-tabletlandscape"></div> <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> </div> <div id="rhcreflow-extra"></div> <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> </div> </div> </div> <div class="container relatedVideos restrictedcontent"> <div class="inner-sleeve"> <div id="videosreflow-tabletportrait"></div> <div id="videosreflow-mobile"></div> </div> </div> <div class="container relatedArticles" id="relatedArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>Related articles</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.railwaygazette.com/freight/world-rail-freight-news-round-up/60067.article" class="image"> <img alt="Elga-Trans TMH Bryansk 3TE25K2M diesel locomotive" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/8/0/9/44809_elgatranstmhbryansk3te25k2mdiesellocomotive_774307.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/8/0/9/44809_elgatranstmhbryansk3te25k2mdiesellocomotive_774307.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/8/0/9/44809_elgatranstmhbryansk3te25k2mdiesellocomotive_774307.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/8/0/9/44809_elgatranstmhbryansk3te25k2mdiesellocomotive_774307.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/8/0/9/44809_elgatranstmhbryansk3te25k2mdiesellocomotive_774307.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/freight/world-rail-freight-news-round-up/60067.article">World rail freight news round-up</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2021-10-11T05:00:00Z","format": "D MMMM YYYY HH:mm"}">2021-10-11T05:00:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p>News from the world rail freight market.</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/private-operator-takes-delivery-of-three-section-diesel-locomotives/59564.article" class="image"> <img alt="Elga-Trans TMH 3TE25K2M loco" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/0/1/3/43013_elgatranstmh3te25k2mloco_36059_crop.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/0/1/3/43013_elgatranstmh3te25k2mloco_36059_crop.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/0/1/3/43013_elgatranstmh3te25k2mloco_36059_crop.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/0/1/3/43013_elgatranstmh3te25k2mloco_36059_crop.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/0/1/3/43013_elgatranstmh3te25k2mloco_36059_crop.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/private-operator-takes-delivery-of-three-section-diesel-locomotives/59564.article">Private operator takes delivery of three-section diesel locomotives</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2021-07-22T08:40:00Z","format": "D MMMM YYYY HH:mm"}">2021-07-22T08:40:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p> RUSSIA: The first 3TE25K2M three-section main line freight diesel locomotives to be ordered by a private operator rather than by Russian Railways have been delivered from Transmashholding鈥檚 Bryansk plant. Six of the 9路3 MW locomotives were ordered in May by Elga-Trans, which operates the 321 km ...</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/freight/coal-miner-orders-diesel-locomotives/36211.article" class="image"> <img alt="tn_ru-wagons-in-yard_23.jpg" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/2/0/7/6207_tn_ru-wagons-in-yard_23.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/2/0/7/6207_tn_ru-wagons-in-yard_23.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/2/0/7/6207_tn_ru-wagons-in-yard_23.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/2/0/7/6207_tn_ru-wagons-in-yard_23.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/2/0/7/6207_tn_ru-wagons-in-yard_23.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/freight/coal-miner-orders-diesel-locomotives/36211.article">Coal miner orders diesel locomotives</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2011-08-25T15:37:00Z","format": "D MMMM YYYY HH:mm"}">2011-08-25T15:37:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p>RUSSIA: The Mecheltrans Vostok transport subsidiary of mining, metals and power group Mechel announced an order for 16 Sinara Transport Machines TEM8 diesel-electric locomotives on August 5. They will be delivered in 2012-14 to operate a 315 km railway which Mechel has built to link its Elga Coal Complex mining ...</p> </div> </li> </ul> </div> </div> <div class="fixedrightcolumn rightcolumn"> <!-- 22-09-22 - New ENHANCED ADS unit--> <!-- /13644946/RGI_MPU_C --> <div class="ad"> <div id='div-gpt-ad-1666188956933-0' style='min-width: 300px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1666188956933-0'); }); </script> </div></div> <!-- /210416249/RGI_MPU_C --> <!-- <div class="ad"> <div id='div-gpt-ad-1572343283773-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1572343283773-0'); }); </script> </div> </div>--> <!--<div class="ad">--> <!-- /13644946/RGI_MPU_C <div id='div-gpt-ad-1602146167342-0' style='width: 300px; height: 250px;'> 聽 <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146167342-0'); } ); 聽 </script> </div> </div>--> </div> </div> </div> </div> </div> <div class="container commentContainer restrictedcontent"> <div class="inner-sleeve"> <div class=" extras"> <div class="extrasStory"> <div class="contentWrapper"></div> </div></div> </div> </div> <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> <div class="footer_ad"> <div class="footer_ad_strip"> <div class="ad"> </div> </div> </div> <div id="footer" class="footer" role="contentinfo"> <div class="container footerTopNavPageText"> <div class="inner-sleeve"> <div class="brand-list"> <ul> <li> <a href="https://www.railwaygazette.com"> <svg id="Group_1156" data-name="Group 1156" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="212" height="50" viewBox="0 0 212 50"> <rect id="Rectangle_1553" data-name="Rectangle 1553" width="212" height="50" fill="#fff"/> <g id="Group_1155" data-name="Group 1155"> <path id="Path_2131" data-name="Path 2131" d="M25,0A24.993,24.993,0,0,0,5.3,40.378H34.725a3.2,3.2,0,0,0,3.19-3.19V35.41h-7.76a5.781,5.781,0,0,1-5.775-5.775V14.155a5.738,5.738,0,0,1,1-3.243H15.367a3.194,3.194,0,0,0-3.19,3.19V35.4H9.644V14.1a5.729,5.729,0,0,1,5.723-5.723H34.725A5.729,5.729,0,0,1,40.447,14.1V37.188a5.729,5.729,0,0,1-5.722,5.722H7.566A25,25,0,1,0,25,0" fill="#005191"/> <path id="Path_2132" data-name="Path 2132" d="M34.725,10.912h-4.57a3.245,3.245,0,0,0-3.242,3.242V29.636a3.246,3.246,0,0,0,3.242,3.242h7.76V14.1a3.194,3.194,0,0,0-3.19-3.19" fill="#005191"/> <g id="Group_1151" data-name="Group 1151"> <path id="Path_2133" data-name="Path 2133" d="M61.792,25.954H59.531V10.628H65.3a6.432,6.432,0,0,1,3.983,1.011,3.959,3.959,0,0,1,1.291,3.316v.688a4.516,4.516,0,0,1-.742,2.745,3.822,3.822,0,0,1-2.293,1.367l3.746,6.2H68.659L65.214,19.97H61.792Zm6.522-10.72a4.79,4.79,0,0,0-.15-1.324,1.552,1.552,0,0,0-.5-.785,1.939,1.939,0,0,0-.925-.377,9.068,9.068,0,0,0-1.443-.1H61.792v5.3H65.3a9.068,9.068,0,0,0,1.443-.1,1.887,1.887,0,0,0,.925-.388,1.616,1.616,0,0,0,.5-.8,4.781,4.781,0,0,0,.15-1.324Z" fill="#1d1d1b"/> </g> <g id="Group_1152" data-name="Group 1152"> <path id="Path_2134" data-name="Path 2134" d="M81.747,24.1a1.83,1.83,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409H76.322a5.022,5.022,0,0,1-3.24-.828A3.073,3.073,0,0,1,72.1,22.64v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.881,7.881,0,0,1,2.024.2,3.791,3.791,0,0,1,1.076.442v-.646a5.128,5.128,0,0,0-.075-.937,1.194,1.194,0,0,0-.366-.667,1.93,1.93,0,0,0-.84-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.385,1.385,0,0,0,.453,1.13,2.674,2.674,0,0,0,1.657.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.87.87,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.165,8.165,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.967.967,0,0,0-.377.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2135" data-name="Path 2135" d="M86.655,11.532a1.5,1.5,0,0,1-.334,1.087,1.941,1.941,0,0,1-2.174,0,1.492,1.492,0,0,1-.334-1.087,1.489,1.489,0,0,1,.334-1.087,1.936,1.936,0,0,1,2.174,0A1.493,1.493,0,0,1,86.655,11.532Zm-2.541,3.293h2.261V25.954H84.114Z" fill="#1d1d1b"/> <path id="Path_2136" data-name="Path 2136" d="M88.721,9.96h2.26V25.954h-2.26Z" fill="#1d1d1b"/> <path id="Path_2137" data-name="Path 2137" d="M100.367,17.538l-2.239,8.416H95.8L92.51,14.825h2.26l2.217,8.762,2.346-8.762h2.2l2.239,8.8,2.346-8.8h2.11l-3.358,11.129h-2.325Z" fill="#1d1d1b"/> </g> <g id="Group_1153" data-name="Group 1153"> <path id="Path_2138" data-name="Path 2138" d="M118.557,24.1a1.83,1.83,0,0,1-.474,1.442,2.693,2.693,0,0,1-1.721.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.07,3.07,0,0,1-.98-2.486v-.474a2.98,2.98,0,0,1,1.066-2.583,5.694,5.694,0,0,1,3.325-.775,7.876,7.876,0,0,1,2.024.2,3.787,3.787,0,0,1,1.077.442v-.646a5.122,5.122,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.338,6.338,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.138,6.138,0,0,1,3.768.915,3.23,3.23,0,0,1,1.162,2.7Zm-7.534-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377H116.4V22.144a2.616,2.616,0,0,0-.087-.71.869.869,0,0,0-.344-.484,1.879,1.879,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.973.973,0,0,0-.377.484,2.286,2.286,0,0,0-.107.754Z" fill="#1d1d1b"/> <path id="Path_2139" data-name="Path 2139" d="M121.98,27.849q1.077.042,1.873.043h1.636a5.68,5.68,0,0,0,1.356-.14,2.028,2.028,0,0,0,.915-.474,1.855,1.855,0,0,0,.5-.915,6.021,6.021,0,0,0,.152-1.484v-.238c-.13.116-.273.23-.431.345a2.386,2.386,0,0,1-.592.3,4.463,4.463,0,0,1-.883.2,9.483,9.483,0,0,1-1.3.075,5.451,5.451,0,0,1-3.175-.785,3.16,3.16,0,0,1-1.109-2.767v-7.19h2.26V21.5a7.315,7.315,0,0,0,.054.948,1.352,1.352,0,0,0,.28.689,1.37,1.37,0,0,0,.711.419,4.919,4.919,0,0,0,1.323.14,7.472,7.472,0,0,0,1.486-.118,1.723,1.723,0,0,0,.86-.409,1.473,1.473,0,0,0,.409-.754,5.157,5.157,0,0,0,.109-1.151V14.825h2.26V24.879a7.606,7.606,0,0,1-.291,2.259,3.352,3.352,0,0,1-.926,1.507,3.845,3.845,0,0,1-1.614.85,8.872,8.872,0,0,1-2.335.27H123.7q-.452,0-.969-.011c-.344-.007-.732-.019-1.162-.032Z" fill="#1d1d1b"/> <path id="Path_2140" data-name="Path 2140" d="M149.749,17.925v6.006a2.7,2.7,0,0,1-.345,1.528,1.29,1.29,0,0,1-1.141.5H144.54a10.11,10.11,0,0,1-3.165-.419A4.447,4.447,0,0,1,139.4,24.3a4.576,4.576,0,0,1-1-2.056,13.16,13.16,0,0,1-.28-2.873V17.194a13.247,13.247,0,0,1,.27-2.81,4.279,4.279,0,0,1,3.013-3.358,10.422,10.422,0,0,1,3.326-.441h2.39q1.1,0,2.195.043l-.366,2.023c-.6-.014-1.123-.025-1.56-.032s-.826-.011-1.163-.011h-1.647a10.141,10.141,0,0,0-2.066.172,2.3,2.3,0,0,0-1.249.667,2.773,2.773,0,0,0-.613,1.421,14.513,14.513,0,0,0-.161,2.411v2a13.058,13.058,0,0,0,.183,2.454,2.828,2.828,0,0,0,.634,1.41,2.2,2.2,0,0,0,1.227.636,10.455,10.455,0,0,0,1.938.15h3.014V19.863h-2.842l.409-1.938Z" fill="#1d1d1b"/> <path id="Path_2141" data-name="Path 2141" d="M161.309,24.1a1.834,1.834,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.073,3.073,0,0,1-.979-2.486v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.867,7.867,0,0,1,2.023.2,3.787,3.787,0,0,1,1.077.442v-.646a5.121,5.121,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011c-.682.007-1.268.018-1.755.032l.409-1.873q.6-.021,1.485-.032t1.787-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.875.875,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.495a7.566,7.566,0,0,0-1.174.075,1.823,1.823,0,0,0-.732.258.971.971,0,0,0-.376.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2142" data-name="Path 2142" d="M165.915,24.082h6.78l-.387,1.872H163.2V24.19l6.48-7.492h-6.458l.387-1.873h8.762V16.59Z" fill="#1d1d1b"/> <path id="Path_2143" data-name="Path 2143" d="M176.463,21.219a8.867,8.867,0,0,0,.1,1.464,1.72,1.72,0,0,0,.387.882,1.5,1.5,0,0,0,.807.442,6.474,6.474,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.872c-.445.015-.826.025-1.141.033s-.606.01-.872.01h-1.668a7.265,7.265,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.011,3.562,3.562,0,0,1-.743-1.593,10.3,10.3,0,0,1-.193-2.078v-1.2a10.879,10.879,0,0,1,.2-2.207,3.831,3.831,0,0,1,.754-1.657,3.476,3.476,0,0,1,1.528-1.044,7.409,7.409,0,0,1,2.55-.366,6.969,6.969,0,0,1,2.357.334,3.6,3.6,0,0,1,1.443.9,3.023,3.023,0,0,1,.721,1.313,6.077,6.077,0,0,1,.194,1.539v.323a6.9,6.9,0,0,1-.086,1.227,1.623,1.623,0,0,1-.28.7.88.88,0,0,1-.484.323,2.79,2.79,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.471,1.471,0,0,0-.807.484,2,2,0,0,0-.387.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.469,1.469,0,0,0-.431-.764,1.832,1.832,0,0,0-.829-.4A6.019,6.019,0,0,0,179.132,16.267Z" fill="#1d1d1b"/> <path id="Path_2144" data-name="Path 2144" d="M186,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.223,7.223,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.96l-.388,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.775,2.775,0,0,1-1.312-.656,2.444,2.444,0,0,1-.668-1.238A8.618,8.618,0,0,1,186,21.929Z" fill="#1d1d1b"/> <path id="Path_2145" data-name="Path 2145" d="M193.9,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.225,7.225,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.959l-.387,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.783,2.783,0,0,1-1.313-.656,2.45,2.45,0,0,1-.667-1.238,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2146" data-name="Path 2146" d="M203.8,21.219a8.867,8.867,0,0,0,.1,1.464,1.729,1.729,0,0,0,.388.882,1.494,1.494,0,0,0,.806.442,6.48,6.48,0,0,0,1.378.118h1.583q.957,0,2.486-.043l-.388,1.872c-.444.015-.825.025-1.14.033s-.607.01-.872.01H206.47a7.273,7.273,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.506-1.011,3.574,3.574,0,0,1-.744-1.593,10.374,10.374,0,0,1-.193-2.078v-1.2a10.8,10.8,0,0,1,.205-2.207,3.83,3.83,0,0,1,.753-1.657,3.476,3.476,0,0,1,1.528-1.044,7.415,7.415,0,0,1,2.551-.366,6.977,6.977,0,0,1,2.357.334,3.6,3.6,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.078,6.078,0,0,1,.193,1.539v.323a6.81,6.81,0,0,1-.086,1.227,1.6,1.6,0,0,1-.28.7.876.876,0,0,1-.484.323,2.776,2.776,0,0,1-.7.076Zm2.669-4.952a5.843,5.843,0,0,0-1.378.13,1.464,1.464,0,0,0-.806.484,2.014,2.014,0,0,0-.388.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4A6.035,6.035,0,0,0,206.47,16.267Z" fill="#1d1d1b"/> </g> <g id="Group_1154" data-name="Group 1154"> <path id="Path_2147" data-name="Path 2147" d="M60.394,33.579v7.213H59.331V33.579Z" fill="#1d1d1b"/> <path id="Path_2148" data-name="Path 2148" d="M62.937,33.579l3.718,5.44v-5.44h1.063v7.213h-.962l-3.7-5.41v5.41H61.995V33.579Z" fill="#1d1d1b"/> <path id="Path_2149" data-name="Path 2149" d="M74.992,33.579l-.193.952H72.4v6.261H71.335V34.531H68.8L69,33.579Z" fill="#1d1d1b"/> <path id="Path_2150" data-name="Path 2150" d="M81.019,33.579l-.192.952H77.139v2.077h3.627l-.193.952H77.139v2.279h3.88l-.192.953H76.076V33.579Z" fill="#1d1d1b"/> <path id="Path_2151" data-name="Path 2151" d="M83.39,40.792H82.326V33.579h2.715a3.02,3.02,0,0,1,1.874.476,1.864,1.864,0,0,1,.608,1.56v.325a2.125,2.125,0,0,1-.35,1.291,1.8,1.8,0,0,1-1.078.643l1.762,2.918H86.621L85,37.976H83.39Zm3.069-5.045a2.246,2.246,0,0,0-.071-.623.728.728,0,0,0-.233-.37.911.911,0,0,0-.435-.177,4.165,4.165,0,0,0-.679-.046H83.39v2.492h1.651a4.294,4.294,0,0,0,.679-.045.9.9,0,0,0,.435-.183.756.756,0,0,0,.233-.375,2.246,2.246,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2152" data-name="Path 2152" d="M89.883,33.579l3.718,5.44v-5.44h1.063v7.213H93.7L90,35.382v5.41H88.941V33.579Z" fill="#1d1d1b"/> <path id="Path_2153" data-name="Path 2153" d="M100.489,38.725H97.521l-.75,2.067H95.7l2.755-7.213h1.175l2.755,7.213h-1.134Zm-2.644-.912h2.31L99,34.653Z" fill="#1d1d1b"/> <path id="Path_2154" data-name="Path 2154" d="M109.079,33.579l-.193.952h-2.4v6.261h-1.064V34.531H102.89l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2155" data-name="Path 2155" d="M111.227,33.579v7.213h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2156" data-name="Path 2156" d="M115.7,40.974a4.79,4.79,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.336,2.336,0,0,1-.461-1.043,7.616,7.616,0,0,1-.122-1.444v-.922a7.558,7.558,0,0,1,.117-1.4,2.412,2.412,0,0,1,.451-1.048,2.08,2.08,0,0,1,.937-.659,4.587,4.587,0,0,1,1.585-.228,4.813,4.813,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.334,2.334,0,0,1,.461,1.044,7.517,7.517,0,0,1,.122,1.443v.922a7.558,7.558,0,0,1-.117,1.4,2.4,2.4,0,0,1-.451,1.049,2.089,2.089,0,0,1-.936.658A4.577,4.577,0,0,1,115.7,40.974Zm0-.922a4.648,4.648,0,0,0,.988-.086,1.078,1.078,0,0,0,.6-.35,1.537,1.537,0,0,0,.3-.744,8,8,0,0,0,.08-1.271V36.76a7.909,7.909,0,0,0-.08-1.261,1.546,1.546,0,0,0-.3-.745,1.108,1.108,0,0,0-.6-.355,4.419,4.419,0,0,0-.988-.091,4.625,4.625,0,0,0-.987.086,1.077,1.077,0,0,0-.6.35,1.526,1.526,0,0,0-.3.745,7.96,7.96,0,0,0-.081,1.271V37.6a7.9,7.9,0,0,0,.081,1.261,1.518,1.518,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355A4.339,4.339,0,0,0,115.7,40.052Z" fill="#1d1d1b"/> <path id="Path_2157" data-name="Path 2157" d="M121.124,33.579l3.718,5.44v-5.44H125.9v7.213h-.962l-3.7-5.41v5.41h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2158" data-name="Path 2158" d="M131.72,38.725h-2.968L128,40.792h-1.074l2.756-7.213h1.175l2.755,7.213H132.48Zm-2.644-.912h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2159" data-name="Path 2159" d="M135.711,33.579v6.26h3.657l-.192.953h-4.528V33.579Z" fill="#1d1d1b"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/metro-report"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="187.227" height="50.27" viewBox="0 0 187.227 50.27"> <g id="Group_1169" data-name="Group 1169" transform="translate(0.5)"> <rect id="Rectangle_1567" data-name="Rectangle 1567" width="187" height="50" transform="translate(-0.5 0.27)" fill="none"/> <g id="Group_1165" data-name="Group 1165"> <path id="Path_2267" data-name="Path 2267" d="M66.869,19.367,62.8,12.048V23.737H60.54V8.41h2.519l4.908,8.783L72.595,8.41h2.562V23.737H72.9V11.854l-4.025,7.512Z" fill="#1d1d1b"/> <path id="Path_2268" data-name="Path 2268" d="M79.806,19a8.97,8.97,0,0,0,.1,1.464,1.732,1.732,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011H82.476a7.3,7.3,0,0,1-2.487-.355,3.5,3.5,0,0,1-1.507-1.012,3.567,3.567,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.787,10.787,0,0,1,.205-2.206,3.829,3.829,0,0,1,.753-1.658,3.464,3.464,0,0,1,1.529-1.043,7.383,7.383,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.607,3.607,0,0,1,1.442.9,3.037,3.037,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.279.7.885.885,0,0,1-.484.323,2.844,2.844,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.018,2.018,0,0,0-.387.98,10.976,10.976,0,0,0-.1,1.614h5.361v-.731a5.169,5.169,0,0,0-.119-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2269" data-name="Path 2269" d="M89.342,9.981,91.6,9.573v3.034h4.09l-.388,1.874H91.6v5.166a7.336,7.336,0,0,0,.075,1.162,1.334,1.334,0,0,0,.291.689,1.114,1.114,0,0,0,.613.323,4.947,4.947,0,0,0,1.022.086h1.96l-.388,1.83h-1.55a9.577,9.577,0,0,1-2.12-.194,2.765,2.765,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2270" data-name="Path 2270" d="M97.221,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.763,2.763,0,0,1,.851-1.1,3.569,3.569,0,0,1,1.323-.614,7.167,7.167,0,0,1,1.722-.193h1.593c.374,0,.682.007.926.021l-.387,1.873h-.216c-.129,0-.287,0-.473-.011s-.387-.01-.6-.01h-.624a3.961,3.961,0,0,0-1.185.14A1.289,1.289,0,0,0,99.8,15a1.405,1.405,0,0,0-.269.689,7.126,7.126,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2271" data-name="Path 2271" d="M110.179,12.263a9.859,9.859,0,0,1,2.38.248,3.435,3.435,0,0,1,1.6.861,3.615,3.615,0,0,1,.915,1.636,9.575,9.575,0,0,1,.291,2.572v1.184a9.578,9.578,0,0,1-.291,2.573,3.62,3.62,0,0,1-.915,1.636,3.435,3.435,0,0,1-1.6.861,11.58,11.58,0,0,1-4.758,0,3.434,3.434,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.622,9.622,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.434,3.434,0,0,1,1.6-.861,9.841,9.841,0,0,1,2.378-.248m2.885,5.317a11.067,11.067,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.514,1.514,0,0,0-.871-.484,9.147,9.147,0,0,0-2.929,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.43,1.044,11.049,11.049,0,0,0-.119,1.819v1.184a11.055,11.055,0,0,0,.119,1.82,2.142,2.142,0,0,0,.43,1.043,1.513,1.513,0,0,0,.871.485,9.147,9.147,0,0,0,2.929,0,1.509,1.509,0,0,0,.871-.485,2.151,2.151,0,0,0,.431-1.043,11.072,11.072,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2272" data-name="Path 2272" d="M125.248,23.737h-2.261V8.41h5.77a6.429,6.429,0,0,1,3.983,1.012,3.96,3.96,0,0,1,1.291,3.315v.688a4.516,4.516,0,0,1-.743,2.745A3.82,3.82,0,0,1,131,17.538l3.745,6.2h-2.626l-3.444-5.985h-3.423Zm6.523-10.72a4.776,4.776,0,0,0-.151-1.324,1.56,1.56,0,0,0-.495-.786,1.963,1.963,0,0,0-.926-.377,9.068,9.068,0,0,0-1.442-.1h-3.509v5.3h3.509a8.938,8.938,0,0,0,1.442-.1,1.881,1.881,0,0,0,.926-.387,1.62,1.62,0,0,0,.495-.8,4.776,4.776,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2273" data-name="Path 2273" d="M138.271,19a8.971,8.971,0,0,0,.1,1.464,1.724,1.724,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.959,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011h-1.668a7.286,7.286,0,0,1-2.486-.355,3.492,3.492,0,0,1-1.508-1.012,3.556,3.556,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.862,10.862,0,0,1,.2-2.206,3.841,3.841,0,0,1,.754-1.658A3.464,3.464,0,0,1,138.5,12.63a7.379,7.379,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.606,3.606,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.28.7.878.878,0,0,1-.484.323,2.833,2.833,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.008,2.008,0,0,0-.387.98,10.977,10.977,0,0,0-.1,1.614h5.36v-.731a5.175,5.175,0,0,0-.118-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2274" data-name="Path 2274" d="M152.952,12.264a9.615,9.615,0,0,1,2.347.247,3.3,3.3,0,0,1,1.581.872,3.681,3.681,0,0,1,.894,1.668,10.426,10.426,0,0,1,.28,2.637v.969a11.512,11.512,0,0,1-.226,2.443,3.746,3.746,0,0,1-.8,1.679,3.4,3.4,0,0,1-1.56.979,8.332,8.332,0,0,1-2.54.323,5.167,5.167,0,0,1-1.712-.247,3.337,3.337,0,0,1-1.13-.635V27.5h-2.282V17.58a9.466,9.466,0,0,1,.291-2.55,3.628,3.628,0,0,1,.915-1.636,3.51,3.51,0,0,1,1.593-.873,9.223,9.223,0,0,1,2.346-.257m-.021,9.966a6.581,6.581,0,0,0,1.453-.129,1.508,1.508,0,0,0,.86-.517,2.188,2.188,0,0,0,.41-1.087,14.072,14.072,0,0,0,.1-1.84v-.969a13.072,13.072,0,0,0-.108-1.883,2.189,2.189,0,0,0-.42-1.077,1.484,1.484,0,0,0-.861-.495,8.6,8.6,0,0,0-2.852,0,1.576,1.576,0,0,0-.883.484,2.093,2.093,0,0,0-.441,1.044,11.04,11.04,0,0,0-.119,1.819v1.528a7.557,7.557,0,0,0,.13,1.551,2.021,2.021,0,0,0,.452.958,1.661,1.661,0,0,0,.882.484,6.371,6.371,0,0,0,1.4.129" fill="#1d1d1b"/> <path id="Path_2275" data-name="Path 2275" d="M165.071,12.263a9.844,9.844,0,0,1,2.379.248,3.439,3.439,0,0,1,1.6.861,3.623,3.623,0,0,1,.914,1.636,9.535,9.535,0,0,1,.291,2.572v1.184a9.537,9.537,0,0,1-.291,2.573,3.628,3.628,0,0,1-.914,1.636,3.439,3.439,0,0,1-1.6.861,11.575,11.575,0,0,1-4.757,0,3.429,3.429,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.623,9.623,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.429,3.429,0,0,1,1.6-.861,9.835,9.835,0,0,1,2.378-.248m2.885,5.317a11.18,11.18,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.52,1.52,0,0,0-.872-.484,9.141,9.141,0,0,0-2.928,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.431,1.044,11.051,11.051,0,0,0-.119,1.819v1.184a11.056,11.056,0,0,0,.119,1.82,2.142,2.142,0,0,0,.431,1.043,1.513,1.513,0,0,0,.871.485,9.141,9.141,0,0,0,2.928,0,1.515,1.515,0,0,0,.872-.485,2.151,2.151,0,0,0,.431-1.043,11.185,11.185,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2276" data-name="Path 2276" d="M172.347,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.772,2.772,0,0,1,.851-1.1,3.574,3.574,0,0,1,1.324-.614,7.155,7.155,0,0,1,1.722-.193h1.593q.56,0,.925.021l-.387,1.873h-.215c-.129,0-.288,0-.474-.011s-.388-.01-.6-.01h-.624a3.944,3.944,0,0,0-1.184.14,1.287,1.287,0,0,0-.646.419,1.415,1.415,0,0,0-.269.689,7.127,7.127,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2277" data-name="Path 2277" d="M180.376,9.981l2.26-.408v3.034h4.091l-.388,1.874h-3.7v5.166a7.2,7.2,0,0,0,.076,1.162,1.334,1.334,0,0,0,.29.689,1.121,1.121,0,0,0,.613.323,4.95,4.95,0,0,0,1.023.086H186.6l-.387,1.83h-1.55a9.57,9.57,0,0,1-2.12-.194,2.761,2.761,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.618,8.618,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <rect id="Rectangle_1568" data-name="Rectangle 1568" width="1.064" height="7.213" transform="translate(60.34 31.361)" fill="#1d1d1b"/> <path id="Path_2278" data-name="Path 2278" d="M63.956,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H63.014V31.361Z" fill="#1d1d1b"/> <path id="Path_2279" data-name="Path 2279" d="M76.011,31.361l-.193.952h-2.4v6.26H72.354v-6.26H69.821l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2280" data-name="Path 2280" d="M82.038,31.361l-.193.952H78.158V34.39h3.627l-.192.952H78.158v2.279h3.88l-.193.952H77.094V31.361Z" fill="#1d1d1b"/> <path id="Path_2281" data-name="Path 2281" d="M84.418,38.573H83.355V31.361h2.714a3.03,3.03,0,0,1,1.875.476,1.863,1.863,0,0,1,.607,1.56v.324a2.126,2.126,0,0,1-.349,1.292,1.8,1.8,0,0,1-1.079.643l1.763,2.917H87.65l-1.621-2.815H84.418Zm3.07-5.044a2.251,2.251,0,0,0-.071-.623.734.734,0,0,0-.233-.37.925.925,0,0,0-.436-.177,4.271,4.271,0,0,0-.679-.046H84.418v2.492h1.651a4.156,4.156,0,0,0,.679-.046.88.88,0,0,0,.436-.182.763.763,0,0,0,.233-.375,2.241,2.241,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2282" data-name="Path 2282" d="M90.912,31.361l3.718,5.44v-5.44h1.064v7.213H94.73l-3.7-5.41v5.41H89.969V31.361Z" fill="#1d1d1b"/> <path id="Path_2283" data-name="Path 2283" d="M101.517,36.507H98.549L97.8,38.574H96.726l2.755-7.213h1.176l2.755,7.213h-1.135ZM98.874,35.6h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2284" data-name="Path 2284" d="M110.108,31.361l-.193.952h-2.4v6.26h-1.064v-6.26h-2.533l.192-.952Z" fill="#1d1d1b"/> <rect id="Rectangle_1569" data-name="Rectangle 1569" width="1.064" height="7.213" transform="translate(111.192 31.361)" fill="#1d1d1b"/> <path id="Path_2285" data-name="Path 2285" d="M116.733,38.756a4.782,4.782,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.341,2.341,0,0,1-.461-1.043,7.609,7.609,0,0,1-.122-1.444V34.5a7.55,7.55,0,0,1,.117-1.4,2.4,2.4,0,0,1,.45-1.049,2.082,2.082,0,0,1,.937-.658,4.547,4.547,0,0,1,1.586-.229,4.79,4.79,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.35,2.35,0,0,1,.461,1.044,7.608,7.608,0,0,1,.121,1.444v.921a7.564,7.564,0,0,1-.116,1.4,2.41,2.41,0,0,1-.45,1.049,2.1,2.1,0,0,1-.938.658,4.563,4.563,0,0,1-1.585.228m0-.922a4.632,4.632,0,0,0,.987-.086,1.077,1.077,0,0,0,.6-.349,1.526,1.526,0,0,0,.3-.745,7.978,7.978,0,0,0,.081-1.271v-.841a7.892,7.892,0,0,0-.081-1.261,1.526,1.526,0,0,0-.3-.745,1.1,1.1,0,0,0-.6-.355,4.411,4.411,0,0,0-.987-.09,4.577,4.577,0,0,0-.988.086,1.071,1.071,0,0,0-.6.349,1.532,1.532,0,0,0-.3.744,8.132,8.132,0,0,0-.08,1.272v.841a8.021,8.021,0,0,0,.08,1.261,1.532,1.532,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355,4.355,4.355,0,0,0,.988.091" fill="#1d1d1b"/> <path id="Path_2286" data-name="Path 2286" d="M122.152,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H121.21V31.361Z" fill="#1d1d1b"/> <path id="Path_2287" data-name="Path 2287" d="M132.759,36.507h-2.968l-.75,2.067h-1.074l2.756-7.213H131.9l2.756,7.213h-1.134Zm-2.644-.912h2.309l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2288" data-name="Path 2288" d="M136.75,31.361v6.26h3.657l-.192.952h-4.528V31.361Z" fill="#1d1d1b"/> <path id="Path_2289" data-name="Path 2289" d="M25.273,0a25,25,0,1,0,6.2,49.224V29.946h-.016V13.633a3.2,3.2,0,0,0-3.193-3.193H25.053a3.2,3.2,0,0,0-3.193,3.193V35.165H19.327V29.958h0V13.644a3.2,3.2,0,0,0-3.193-3.193h-3.21a3.2,3.2,0,0,0-3.193,3.193V35.168H7.2V13.644a5.731,5.731,0,0,1,5.725-5.725h3.21a5.712,5.712,0,0,1,4.456,2.139,5.718,5.718,0,0,1,4.466-2.151h3.209a5.712,5.712,0,0,1,4.552,2.267,5.712,5.712,0,0,1,4.379-2.046h5.418V10.66H37.193A3.194,3.194,0,0,0,34,13.85V48.43A25,25,0,0,0,25.273,0" fill="#009254"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/uk"> <svg id="rail_business_uk_small" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="219" height="50" viewBox="0 0 219 50"> <rect id="Rectangle_1554" data-name="Rectangle 1554" width="219" height="50" fill="#fff"/> <g id="Group_1157" data-name="Group 1157"> <path id="Path_2160" data-name="Path 2160" d="M62.156,31.85H59.9V16.523h5.769a6.425,6.425,0,0,1,3.983,1.012,3.956,3.956,0,0,1,1.291,3.314v.69a4.513,4.513,0,0,1-.742,2.744A3.809,3.809,0,0,1,67.9,25.65l3.746,6.2H69.023l-3.445-5.985H62.156Zm6.522-10.72a4.738,4.738,0,0,0-.151-1.324,1.542,1.542,0,0,0-.5-.786,1.949,1.949,0,0,0-.925-.377,9.082,9.082,0,0,0-1.443-.1H62.156v5.295h3.508a8.952,8.952,0,0,0,1.443-.1,1.886,1.886,0,0,0,.925-.387,1.606,1.606,0,0,0,.5-.8,4.738,4.738,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2161" data-name="Path 2161" d="M82.111,30a1.833,1.833,0,0,1-.473,1.442,2.694,2.694,0,0,1-1.723.409H76.686a5.017,5.017,0,0,1-3.24-.829,3.073,3.073,0,0,1-.979-2.486v-.474a2.975,2.975,0,0,1,1.066-2.582,5.694,5.694,0,0,1,3.325-.775,7.836,7.836,0,0,1,2.024.2,3.773,3.773,0,0,1,1.077.441V24.7a5.114,5.114,0,0,0-.076-.937,1.186,1.186,0,0,0-.366-.667,1.9,1.9,0,0,0-.84-.409,6.273,6.273,0,0,0-1.5-.14q-.9,0-1.927.01t-1.755.032l.409-1.872q.6-.021,1.486-.032t1.787-.011a6.139,6.139,0,0,1,3.767.914,3.235,3.235,0,0,1,1.162,2.7Zm-7.534-1.485a1.385,1.385,0,0,0,.452,1.129,2.662,2.662,0,0,0,1.657.377h3.273V28.04a2.616,2.616,0,0,0-.087-.71.871.871,0,0,0-.344-.485,1.88,1.88,0,0,0-.753-.269,8.055,8.055,0,0,0-1.314-.086h-.494a7.674,7.674,0,0,0-1.174.075,1.827,1.827,0,0,0-.732.259.967.967,0,0,0-.377.484,2.262,2.262,0,0,0-.107.753Z" fill="#1d1d1b"/> <path id="Path_2162" data-name="Path 2162" d="M87,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.489,1.489,0,0,1-.333-1.087,1.492,1.492,0,0,1,.333-1.087,1.937,1.937,0,0,1,2.175,0A1.5,1.5,0,0,1,87,17.427m-2.541,3.294h2.261V31.85H84.457Z" fill="#1d1d1b"/> <rect id="Rectangle_1555" data-name="Rectangle 1555" width="2.26" height="15.995" transform="translate(89.064 15.856)" fill="#1d1d1b"/> <path id="Path_2163" data-name="Path 2163" d="M99.2,16.523h6.243a5.278,5.278,0,0,1,3.467.926,3.607,3.607,0,0,1,1.075,2.884V20.5a3.957,3.957,0,0,1-.494,2.056,2.9,2.9,0,0,1-1.615,1.217,3.258,3.258,0,0,1,1.841,1.172,3.8,3.8,0,0,1,.7,2.4V27.7a3.707,3.707,0,0,1-1.313,3.164,5.849,5.849,0,0,1-3.6.991H99.2Zm8.482,3.854a1.762,1.762,0,0,0-.528-1.443,2.712,2.712,0,0,0-1.711-.431h-3.982v4.37h3.724a2.809,2.809,0,0,0,1.926-.527,2.172,2.172,0,0,0,.571-1.668Zm-6.221,9.493h4.047a2.985,2.985,0,0,0,1.97-.506,2.329,2.329,0,0,0,.569-1.8v-.279a2.426,2.426,0,0,0-.613-1.894,3.189,3.189,0,0,0-2.1-.539h-3.875Z" fill="#1d1d1b"/> <path id="Path_2164" data-name="Path 2164" d="M117.157,32.195a6.646,6.646,0,0,1-3.66-.818,3.112,3.112,0,0,1-1.227-2.8V20.72h2.261v7.406a6.14,6.14,0,0,0,.064.947,1.3,1.3,0,0,0,.322.69,1.616,1.616,0,0,0,.786.419,5.949,5.949,0,0,0,1.454.14,5.8,5.8,0,0,0,1.442-.14,1.6,1.6,0,0,0,.775-.419,1.283,1.283,0,0,0,.323-.69,6.13,6.13,0,0,0,.065-.947V20.72h2.26v7.859a3.112,3.112,0,0,1-1.227,2.8,6.6,6.6,0,0,1-3.638.818" fill="#1d1d1b"/> <path id="Path_2165" data-name="Path 2165" d="M130.245,25.285a4.248,4.248,0,0,1,1.571.4,2.5,2.5,0,0,1,1.367,1.7,4.3,4.3,0,0,1,.119.98v.3a2.836,2.836,0,0,1-1.1,2.379,5.494,5.494,0,0,1-3.379.85q-.969,0-2.25-.011T124,31.85l.387-1.872q1.163.021,2.368.032t2.175.01a3.625,3.625,0,0,0,1.712-.279,1.18,1.18,0,0,0,.462-1.1,2.074,2.074,0,0,0-.054-.484.875.875,0,0,0-.215-.4,1.263,1.263,0,0,0-.464-.291,2.975,2.975,0,0,0-.817-.16l-2.584-.238a3.817,3.817,0,0,1-1.355-.333,2.74,2.74,0,0,1-.9-.668,2.565,2.565,0,0,1-.5-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.243,5.243,0,0,1,3.315-.829h2.153q1.119,0,2.519.043l-.388,1.873c-.6-.014-1.134-.025-1.593-.033s-.866-.01-1.216-.01h-1.712a3.1,3.1,0,0,0-1.528.268,1.04,1.04,0,0,0-.431.959,2.029,2.029,0,0,0,.054.494.731.731,0,0,0,.215.366,1.325,1.325,0,0,0,.474.259,3.463,3.463,0,0,0,.829.15Z" fill="#1d1d1b"/> <path id="Path_2166" data-name="Path 2166" d="M137.931,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.493,1.493,0,0,1-.334-1.087,1.5,1.5,0,0,1,.334-1.087,1.937,1.937,0,0,1,2.175,0,1.5,1.5,0,0,1,.334,1.087m-2.541,3.294h2.26V31.85h-2.26Z" fill="#1d1d1b"/> <path id="Path_2167" data-name="Path 2167" d="M140,31.85V23.993a3.157,3.157,0,0,1,1.2-2.778,8.733,8.733,0,0,1,7.47,0,3.159,3.159,0,0,1,1.194,2.778V31.85H147.6V24.445a6.149,6.149,0,0,0-.064-.947,1.29,1.29,0,0,0-.322-.689,1.621,1.621,0,0,0-.8-.42,8.007,8.007,0,0,0-2.971,0,1.617,1.617,0,0,0-.8.42,1.284,1.284,0,0,0-.323.689,6.149,6.149,0,0,0-.064.947V31.85Z" fill="#1d1d1b"/> <path id="Path_2168" data-name="Path 2168" d="M154.2,27.115a8.854,8.854,0,0,0,.1,1.463,1.733,1.733,0,0,0,.387.882,1.508,1.508,0,0,0,.807.443,6.484,6.484,0,0,0,1.378.117h1.582q.958,0,2.487-.042l-.387,1.872q-.669.021-1.141.032c-.317.008-.607.012-.872.012h-1.669a7.29,7.29,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.012,3.55,3.55,0,0,1-.742-1.593,10.225,10.225,0,0,1-.194-2.078V25.65a10.869,10.869,0,0,1,.2-2.206,3.83,3.83,0,0,1,.754-1.658,3.471,3.471,0,0,1,1.528-1.044,7.44,7.44,0,0,1,2.551-.366,7,7,0,0,1,2.357.334,3.611,3.611,0,0,1,1.443.9,3.027,3.027,0,0,1,.721,1.314,6.072,6.072,0,0,1,.193,1.539v.322a6.9,6.9,0,0,1-.086,1.227,1.628,1.628,0,0,1-.279.7.882.882,0,0,1-.485.323,2.782,2.782,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.464,1.464,0,0,0-.807.483,2.023,2.023,0,0,0-.387.98,10.863,10.863,0,0,0-.1,1.615h5.361v-.733a5.112,5.112,0,0,0-.119-1.194,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4,5.973,5.973,0,0,0-1.314-.119" fill="#1d1d1b"/> <path id="Path_2169" data-name="Path 2169" d="M169.617,25.285a4.254,4.254,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.353,4.353,0,0,1,.118.98v.3a2.835,2.835,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011t-2.573-.032l.388-1.872q1.163.021,2.368.032t2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.073,2.073,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.735,2.735,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.246,5.246,0,0,1,3.316-.829H169.9q1.118,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01h-1.711a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.032,2.032,0,0,0,.053.494.723.723,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.464,3.464,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2170" data-name="Path 2170" d="M180.639,25.285a4.248,4.248,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.356,4.356,0,0,1,.119.98v.3a2.838,2.838,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011T174.4,31.85l.388-1.872q1.163.021,2.368.032c.8.007,1.529.01,2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.021,2.021,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.746,2.746,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.231,3.231,0,0,1-.161-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.241,5.241,0,0,1,3.315-.829h2.153q1.119,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01H178.53a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.033,2.033,0,0,0,.053.494.731.731,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.454,3.454,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2171" data-name="Path 2171" d="M197.086,32.238a8.758,8.758,0,0,1-3-.43,3.951,3.951,0,0,1-1.8-1.271,4.824,4.824,0,0,1-.882-2.067,14.833,14.833,0,0,1-.238-2.8V16.523h2.262v9.192a13.888,13.888,0,0,0,.149,2.239,3.052,3.052,0,0,0,.561,1.4,2.133,2.133,0,0,0,1.119.721,8.271,8.271,0,0,0,3.66,0,2.137,2.137,0,0,0,1.119-.721,3.029,3.029,0,0,0,.559-1.4,13.631,13.631,0,0,0,.151-2.239V16.523h2.261v9.149a14.838,14.838,0,0,1-.237,2.8,4.837,4.837,0,0,1-.882,2.067,3.948,3.948,0,0,1-1.809,1.271,8.776,8.776,0,0,1-2.992.43" fill="#1d1d1b"/> <path id="Path_2172" data-name="Path 2172" d="M208.065,23.239l6.5-6.716h2.69L210.3,23.777l7.706,8.073h-3.122l-6.824-7.212V31.85H205.8V16.523h2.26Z" fill="#1d1d1b"/> <path id="Path_2173" data-name="Path 2173" d="M30.4,35.675h3.825a2.923,2.923,0,0,0,2.92-2.92V16.178a2.924,2.924,0,0,0-2.92-2.921H27.5V32.78h-.021a2.922,2.922,0,0,0,2.919,2.9" fill="#e8aa00"/> <path id="Path_2174" data-name="Path 2174" d="M27.5.124V10.741h6.723a5.444,5.444,0,0,1,5.436,5.437V32.755a5.443,5.443,0,0,1-5.436,5.436H30.4a5.442,5.442,0,0,1-5.434-5.412H24.95V13.325H15.625a3.222,3.222,0,0,0-3.179,3.257v21.6H9.891v-21.6a5.779,5.779,0,0,1,5.734-5.811H24.95V0A24.983,24.983,0,1,0,27.5.124" fill="#e8aa00"/> </g> </svg> </a> </li> </ul> </div> <!-- <div class="footerSocial"> <span class="footerSocialText">Connect with us</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook/railwaygazette" title="Connect with us on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://www.twitter.com/railwaygazette" title="Connect with us on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international" title="Connect with us on Linked in"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette" title="Connect with us on Instagram"></a> </li> <li class="footerSocialYoutube"> <a href="https://www.youtube.com/railwaygazette" title="Connect with us on Youtube"></a> </li> <li class="footerSocialRSS"> <a href="#" title="RSS"></a> </li> </ul> </div> --> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="https://www.railwaygazette.com/contact-us">Contact us</a></li><li><a href="https://www.railwaygazette.com/about-us">About us</a></li><li><a href="https://www.railwaygazette.com/advertising">Advertising</a></li><li><a href="https://account.railwaygazette.com/register" class="newWindow">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a href="https://www.railwaygazette.com/terms-and-conditions">Terms and Conditions</a></li><li><a href="https://www.railwaygazette.com/54152.article">Cookie Policy</a></li><li><a href="https://www.dvvmediainternational.com/policies1/privacy-policy/" class="newWindow">Privacy Policy</a></li><li><a href="https://www.railwaygazette.com/topics-a-z">Topics A-Z</a></li><li><a href="https://www.railwaygazette.com/archive-by-date">Archive (by date)</a></li><li class="last"><a href="https://www.dvvmediainternational.com/" class="newWindow">漏 DVV Media International Ltd</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <div class="footerSocial"> <span class="footerSocialText"><strong>Follow</strong> Railway Gazette on social media</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://twitter.com/railwaygazette" rel="noopener noreferrer" target="_blank" title="Follow Railway Gazette on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on LinkedIn"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with us on Instagram"></a> </li> </ul> </div> <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> </div> </div> </div> </div> </div> </div> <script src="/Magazine/core.js?p=7513768095036817" defer></script> <!-- AD Renewals Script - Start --> <script type="text/javascript"> (function(d, s) { var config = { baseUrl:'account.railwaygazette.com', partyId: 0 }; var cacheDate = new Date(); cacheDate.setHours(0,0,0,0); var _abacus_ = d.createElement('script'); _abacus_.type = 'text/javascript'; _abacus_.async = true; _abacus_.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + config.baseUrl + '/templatejs?partyId=' + config.partyId + '&cacheDate=' + cacheDate.getTime(); var sc = d.getElementsByTagName(s)[0]; sc.parentNode.insertBefore(_abacus_, sc); })(document, 'script'); </script> <!-- AD Renewals Script - End --> <script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Article", "description": "RUSSIA: The first train has travelled the full 531 km length of the recently completed Pacific Railway from the Elga coking coal deposit to a port which is under construction at Cape Manorsky on the Sea of Okhotsk.", "image": "https://d1c4d7gnm6as1q.cloudfront.net/Pictures/2000xAny/6/6/2/68662_russiapacificrailwayphotoelsi_55651.jpg", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.railwaygazette.com/freight/first-through-train-runs-on-russias-pacific-railway/67820.article" }, "author": { "@type": "Person", "name": "Railway Gazette International" }, "dateCreated": "2024-11-15", "dateModified": "2024-11-15", "datePublished": "2024-11-18", "hasPart": { "@type": "WebPageElement", "isAccessibleForFree": false, "cssSelector": ".restrictedcontent" }, "headline": "First through train runs on Russia鈥檚 Pacific Railway", "isAccessibleForFree": false, "publisher": { "@type": "Organization", "name": "Railway Gazette International", "logo": { "@type": "ImageObject", "url": "https://www.railwaygazette.com/magazine/dest/graphics/logo/logo.png" } } }</script> </body> </html>