PageSourceSearch

https://www.windpowerengineering.com/category/featured/

html windpowerengineering.com collected 2026-09-24 09:17:41 UTC 188,782 bytes, 2,470 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head >
4<meta charset="UTF-8" />
5<meta name="viewport" content="width=device-width, initial-scale=1" />
6	<meta property="fb:admins" content="1140409510" />
7	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
8	<meta property="fb:admins" content="107031532675062" />
9	<meta name="msvalidate.01" content="40BA1B879066C83CDFCA374CA4B490C3" />
10	<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
11
12	<!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ -->
13	<title>Featured Archives - Windpower Engineering &amp; Development</title>
14	<link rel="canonical" href="https://www.windpowerengineering.com/category/featured/" />
15	<link rel="next" href="https://www.windpowerengineering.com/category/featured/page/2/" />
16	<meta name="twitter:card" content="summary_large_image" />
17	<meta name="twitter:title" content="Featured Archives - Windpower Engineering &amp; Development" />
18	<meta name="twitter:description" content="Windpower Engineering brings the design engineer of today the latest data and computations for designing a windpower system. Read through our featured articles for more details." />
19	<meta name="twitter:site" content="@windpower_eng" />
20	
20<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"CollectionPage","@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/","url":"https:\/\/www.windpowerengineering.com\/category\/featured\/","name":"Featured Archives - Windpower Engineering &amp; Development","isPartOf":{"@id":"https:\/\/www.windpowerengineering.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/#primaryimage"},"image":{"@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/#primaryimage"},"thumbnailUrl":"https:\/\/www.windpowerengineering.com\/wp-content\/uploads\/2016\/03\/edf.jpg","breadcrumb":{"@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/#breadcrumb"},"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/#primaryimage","url":"https:\/\/www.windpowerengineering.com\/wp-content\/uploads\/2016\/03\/edf.jpg","contentUrl":"https:\/\/www.windpowerengineering.com\/wp-content\/uploads\/2016\/03\/edf.jpg","width":800,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.windpowerengineering.com\/category\/featured\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.windpowerengineering.com\/"},{"@type":"ListItem","position":2,"name":"Featured"}]},{"@type":"WebSite","@id":"https:\/\/www.windpowerengineering.com\/#website","url":"https:\/\/www.windpowerengineering.com\/","name":"Windpower Engineering &amp; Development","description":"The technical resource for wind power profitability","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.windpowerengineering.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
20
21	<!-- / Yoast SEO plugin. -->
22
23
24<link rel='dns-prefetch' href='//scripts.wtwhmedia.com' />
25<link rel='dns-prefetch' href='//fonts.googleapis.com' />
26<link rel="alternate" type="application/rss+xml" title="Windpower Engineering &amp; Development &raquo; Feed" href="https://www.windpowerengineering.com/feed/" />
27<link rel="alternate" type="application/rss+xml" title="Windpower Engineering &amp; Development &raquo; Comments Feed" href="https://www.windpowerengineering.com/comments/feed/" />
28<link rel="alternate" type="application/rss+xml" title="Windpower Engineering &amp; Development &raquo; Featured Category Feed" href="https://www.windpowerengineering.com/category/featured/feed/" />
29<style id="wp-img-auto-sizes-contain-inline-css">
30img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
31/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
32</style>
33<link rel='stylesheet' id='theme-wtwh-amplifying-css' href='https://www.windpowerengineering.com/wp-content/themes/ThemeWTWH/style.css?ver=1749457156' media='all' />
34<style id="wp-emoji-styles-inline-css">
35
36	img.wp-smiley, img.emoji {
37		display: inline !important;
38		border: none !important;
39		box-shadow: none !important;
40		height: 1em !important;
41		width: 1em !important;
42		margin: 0 0.07em !important;
43		vertical-align: -0.1em !important;
44		background: none !important;
45		padding: 0 !important;
46	}
47/*# sourceURL=wp-emoji-styles-inline-css */
48</style>
49<style id="wp-block-library-inline-css">
50:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
50--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
51
52/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
53</style>
54<style id="classic-theme-styles-inline-css">
55/*! This file is auto-generated */
56.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
57/*# sourceURL=/wp-includes/css/classic-themes.min.css */
58</style>
59
60<style id="global-styles-inline-css">
61:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
610) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
61.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
62/*# sourceURL=global-styles-inline-css */
63</style>
64
65<link rel='stylesheet' id='buttons-css' href='https://www.windpowerengineering.com/wp-includes/css/buttons.min.css?ver=7.1.1' media='all' />
66<link rel='stylesheet' id='dashicons-css' href='https://www.windpowerengineering.com/wp-includes/css/dashicons.min.css?ver=7.1.1' media='all' />
67<link rel='stylesheet' id='mediaelement-css' href='https://www.windpowerengineering.com/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css?ver=4.2.17' media='all' />
68<link rel='stylesheet' id='wp-mediaelement-css' href='https://www.windpowerengineering.com/wp-includes/js/mediaelement/wp-mediaelement.min.css?ver=7.1.1' media='all' />
69<link rel='stylesheet' id='media-views-css' href='https://www.windpowerengineering.com/wp-includes/css/media-views.min.css?ver=7.1.1' media='all' />
70<link rel='stylesheet' id='imgareaselect-css' href='https://www.windpowerengineering.com/wp-includes/js/imgareaselect/imgareaselect.css?ver=0.9.8' media='all' />
71<link rel='stylesheet' id='frontend-sponsored-ads-css-css' href='https://www.windpowerengineering.com/wp-content/plugins/sponsored-content-ad/css/frontend-sponsored-ads.css?ver=1.01202609241790240494' media='all' />
72<link rel='stylesheet' id='ea-fonts-css' href='https://fonts.googleapis.com/css?family=Open+Sans:300,700&#038;ver=7.1.1' media='all' />
73<link rel='stylesheet' id='ea-style-css' href='https://www.windpowerengineering.com/wp-content/themes/ThemeWTWH/assets/css/main.css?ver=1749457156' media='all' />
74<script id="jquery-core-js" src="https://www.windpowerengineering.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 74
74
75<script id="jquery-migrate-js" src="https://www.windpowerengineering.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 75
75
76<script id="utils-js-extra">
77var userSettings = {"url":"/","uid":"0","time":"1790240494","secure":"1"};
78//# sourceURL=utils-js-extra
79</script>
vendor: 1 bytes, line 79
79
80<script id="utils-js" src="https://www.windpowerengineering.com/wp-includes/js/utils.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 80
80
81<script id="moxiejs-js" src="https://www.windpowerengineering.com/wp-includes/js/plupload/moxie.min.js?ver=1.3.5.1"></script>
vendor: 1 bytes, line 81
81
82<script id="plupload-js" src="https://www.windpowerengineering.com/wp-includes/js/plupload/plupload.min.js?ver=2.1.9"></script>
vendor: 1 bytes, line 82
82
83<script id="frontend-sponsored-ads-script-js" src="https://www.windpowerengineering.com/wp-content/plugins/sponsored-content-ad/js/frontend-sponsored-ads.js"></script>
vendor: 1 bytes, line 83
83
84<script id="wtwh-uni-gam-unified-ad-logic-js-extra">
85var wtwh_gam_ad_config = {"slots":[{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_header","div_id":"div-gpt-wpe-header","desktop_sizes":["728x90"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_interstitial","div_id":"div-gpt-wpe_interstitial","desktop_sizes":["640x480"],"mobile_sizes":["0x0"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_wallpaper","div_id":"div-gpt-wpe_wallpaper","desktop_sizes":["1x1"],"mobile_sizes":["1x1"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"wallpaper"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_allstreamflex","div_id":"div-gpt-wpe_allstreamflex","desktop_sizes":["1x1"],"mobile_sizes":["1x1"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_allstreamprelude","div_id":"div-gpt-wpe_allstreamprelude","desktop_sizes":["1x1"],"mobile_sizes":["1x1"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebar1","div_id":"div-gpt-wpe_sidebar1","desktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebar2","div_id":"div-gpt-wpe_sidebar2","desktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebarbottom","div_id":"div-gpt-wpe_sidebarbottom","desktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebar1","div_id":"div-gpt-wpe-sidebar-ad","desktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebarbottom","div_id":"div-gpt-wpe_sidebarbottom_home","desktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_sidebarbottom","div_id":"div-gpt-wpe_sidebarbottom_primary","de
85sktop_sizes":["300x250","300x600"],"mobile_sizes":["300x250"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"},{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_largeleader","div_id":"jumbo-banner-ad-container","desktop_sizes":["970x90","970x250"],"mobile_sizes":["0x0"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"display"}],"prestitial":{"account_id":"5272491","network_code":"renew_network","ad_unit_code":"wpe_prestitial","div_id":"gam-holder-prestitial-banner","desktop_sizes":["640x480"],"mobile_sizes":["300x225"],"targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"skip_ads":false,"ad_type":"prestitial"},"enable_single_request":"","collapse_empty_divs":"1","page_url":"https://www.windpowerengineering.com/category/featured/","default_page_targeting":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"},"auto_display_ads":"1","lazy_load_ads":"","load_gpt_library":"","has_keyword_ads":"0"};
86var wtwh_gam_ga4_targeting_values = {"ga4_targeting_values":{"articletitle":"case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health","cat_target":"dd1f7c6c1bf019c3abe87801adcccc41,featured,ros","contentHash":"dd1f7c6c1bf019c3abe87801adcccc41","category":"Featured","ParentCategory":"Featured"}};
87//# sourceURL=wtwh-uni-gam-unified-ad-logic-js-extra
88</script>
vendor: 1 bytes, line 88
88
89<script id="wtwh-uni-gam-unified-ad-logic-js" src="https://www.windpowerengineering.com/wp-content/plugins/wtwh-universal-gam/assets/js/frontend/ad-config/unified-ad-logic.js?ver=1790240494"></script>
89
90<link rel="https://api.w.org/" href="https://www.windpowerengineering.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.windpowerengineering.com/wp-json/wp/v2/categories/126" /><meta property="og:description" content="Windpower Engineering brings the design engineer of today the latest data and computations for designing a windpower system. Read through our featured articles for more details.">
91<meta property="og:site_name" content="Windpower Engineering &amp; Development">
92<meta property="og:title" content="Featured">
93<meta property="og:type" content="article">
94<meta property="og:url" content="https://www.windpowerengineering.com/category/featured/">
95<meta property="og:locale" content="en_US">
96<!-- Google Tag Manager for Glboal Container-->
97<script>
vendor: 327 bytes, lines 97-101
97(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
98new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
99j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
100'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
101})(window,document,'script','dataLayer','
101GTM-MMC9PJ9
vendor: 3 bytes, line 101
101');
101</script>
101
102<!-- End Google Tag Manager -->
103 
104 
105<!-- Google Tag Manager -->
106<script>
vendor: 327 bytes, lines 106-110
106(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
107new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
108j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
109'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
110})(window,document,'script','dataLayer','
110GTM-5WXXHJ7
vendor: 3 bytes, line 110
110');
110</script>
110
111<!-- End Google Tag Manager -->
112
113
114
115
116
117 
118
119
120
121
122
123<style>
124#interContainer{
125position: absolute;
126width: 690px; /*Width of interstitial box*/
127left: 0;
128top: 0;
129padding: 15px;
130padding-top: 0;
131background-color: #ffffff;
132
133visibility: hidden;
134z-index: 600;
135}
136
137#interContainer .headerbar{ /*CSS for header bar of interstitial box*/
138color: gray;
139padding: 5px 0;
140text-align: right;
141}
142
143#interContainer .headerbar a{ /*CSS for header bar links of interstitial box*/
144font-size: 120%;
145text-decoration: none;
146}
147
148
149#interContent{ /*CSS for div that holds the content to show*/
150
151
152background-color: white;
153}
154
155#interVeil{ /*CSS for background veil that covers entire page while interstitial box is visible*/
156position: absolute;
157background: black url(/interstitial/blackdot.gif);
158right: 0;
159width: 10px;
160top: 0;
161z-index: 599;
162visibility: hidden;
163filter:progid:DXImageTransform.Microsoft.alpha(opacity=80);
164opacity: 0.8;
165}
166
167
168
169</style><link rel="icon" href="https://www.windpowerengineering.com/wp-content/uploads/2018/08/cropped-windpower-32x32.png" sizes="32x32" />
170<link rel="icon" href="https://www.windpowerengineering.com/wp-content/uploads/2018/08/cropped-windpower-192x192.png" sizes="192x192" />
171<link rel="apple-touch-icon" href="https://www.windpowerengineering.com/wp-content/uploads/2018/08/cropped-windpower-180x180.png" />
172<meta name="msapplication-TileImage" content="https://www.windpowerengineering.com/wp-content/uploads/2018/08/cropped-windpower-270x270.png" />
173<style id="wp-custom-css">
174.SoundCloudPubDate{padding:10px}
175        .SoundCloudTitle{padding:10px}
176
177/*Fix for Categories/home page article display*/
178@media only screen and (max-width: 500px) {
179 .content .entry .entry-header, .archive-entry .entry-header {
180		
181	}
182	
183	
184	.entry-content img {
185		text-align: center !important;
186		width: 100% !important;
187	}
188	
189	.archive-entry {
190		display: flex;
191		flex-direction: column-reverse;
192		width: 100% !important;
193	}
194	
195	.archive-entry > .entry-header, .archive-entry .entry-content {
196		width: 100% !important;
197	}
198}
199
200@media only screen and (max-width: 767px) {
201.archive.category .entry-content p  {
202	display: none !important
203}
204	
205	.blog .entry-content p {
206		display: none !important;
207	}
208	
209	
210}
211
212.slick-slider.header-slides .header-slide .overlay h4, .slick-slider.header-slides .header-slide .overlay h2 {
213text-shadow: 2px 2px 5px black;
214background: none !important;
215-webkit-text-stroke-width: 0px !important;
216-webkit-text-stroke-color: transparent !important;
217}
218
219/* Search Page */
220body.search .site-inner {
221    padding-left: unset;
222    padding-right: unset;
223}
224
225/*SUBSCRIBE BUTTON CSS*/
226
227.site-header--subscribe{
228	background-color: #80a0c1;
229  color: white;
230  padding: 0 16px;
231}
232
233.site-header--subscribe a{
234	color: white !important;
235}
236
237/*GATED COUNTRY FIELD FULL WIDTH & TERMS====*/
238#input_67_54_6_container{
239flex: 0 0 100%;
240}
241
242.terms{
243	font-size: 10px;
244  font-style: italic;
245}
246
247.type-gated .entry-title{
248	text-align: left;
249}
250
251.type-gated .entry-content img{
252	width: 100%;
253}
254
255#div-gpt-wpe_sidebarbottom_home, #div-gpt-wpe_sidebarbottom_primary { 	margin-top: 20px; 
256}
257</style>
258    
258<script id="wtwh-uni-gam-content-hash-variables">
259        var contentHash = "dd1f7c6c1bf019c3abe87801adcccc41"; 
260        var cat_target  = "dd1f7c6c1bf019c3abe87801adcccc41,featured,ros";
261    </script>
261
262    
262<script>
263  (function () {
264    'use strict';
265
266    // ─── Globals ────────────────────────────────────────────────────────────────
267    window.dataLayer  = window.dataLayer  || [];
268    window.gtag       = window.gtag       || function () { dataLayer.push(arguments); };
269    window.googletag  = window.googletag  || { cmd: [] };
270
271    window.__cmpRegion = {
272      country:   "US",
273      regulated: false
274    };
275
276    window.__wtwhConsentDebug = {
277      consentEvents: [],
278      gptMode: null
279    };
280
281    // ─── Helpers ────────────────────────────────────────────────────────────────
282    function log() {
283      try {
284        var args = Array.prototype.slice.call(arguments);
285        args.unshift('[WTWH Consent/GPT]');
286        console.log.apply(console, args);
287      } catch (e) {}
288    }
289
290    function dispatchWindowEvent(eventName, detail) {
291      try {
292        window.dispatchEvent(new CustomEvent(eventName, { detail: detail || {} }));
293      } catch (e) {
294        try {
295          var ev = document.createEvent('CustomEvent');
296          ev.initCustomEvent(eventName, false, false, detail || {});
297          window.dispatchEvent(ev);
298        } catch (err) {}
299      }
300    }
301
302    function getCookie(name) {
303      var nameEQ = name + '=';
304      var parts  = document.cookie.split(';');
305      for (var i = 0; i < parts.length; i++) {
306        var c = parts[i];
307        while (c.charAt(0) === ' ') c = c.substring(1);
308        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length);
309      }
310      return null;
311    }
312
313    function hasKlaroCookie() {
314      return !!getCookie('klaro-consent');
315    }
316
317    function getKlaroManager() {
318      try {
319        if (!window.klaro || typeof window.klaro.getManager !== 'function') return null;
320        return window.klaro.getManager();
321      } catch (e) {
322        return null;
323      }
324    }
325
326    function getStoredConsents() {
327      try {
328        var manager = getKlaroManager();
329        if (!manager || !manager.consents) return null;
330        return {
331          analytics: !!manager.consents.analytics,
332          marketing: !!manager.consents.marketing
333        };
334      } catch (e) {
335        return null;
336      }
337    }
338
339    function getMarketingConsentState() {
340      var c = getStoredConsents();
341      return c ? c.marketing : null;
342    }
343
344    // ─── Consent state tracker ───────────────────────────────────────────────────
345    var consentState = {
346      initialized:          false,
347      lastAppliedSignature: null
348    };
349
350    function consentSignature(consents) {
351      return (consents.analytics ? '1' : '0') + '|' + (consents.marketing ? '1' : '0');
352    }
353
354    // ─── Core consent application ────────────────────────────────────────────────
355    function pushConsentEvent(eventName, analyticsGranted, marketingGranted) {
356      var detail = {
357        consent_analytics:        analyticsGranted ? 'granted' : 'denied',
358        consent_marketing:        marketingGranted ? 'granted' : 'denied',
359        consent_country:          window.__cmpRegion.country,
360        consent_regulated_region: window.__cmpRegion.regulated ? 'true' : 'false'
361      };
362
363      window.dataLayer.push({
364        event:                    eventName,
365        consent_analytics:        detail.consent_analytics,
366        consent_marketing:        detail.consent_marketing,
367        consent_country:          detail.consent_country,
368        consent_regulated_region: detail.consent_regulated_region
369      });
370
371      window.__wtwhConsentDebug.consentEvents.push({ event: eventName, detail: detail, ts: Date.now() });
372      dispatchWindowEvent(eventName, detail);
373      log('Consent event fired:', eventName, detail);
374    }
375
376    function updateGoogleConsent(consents) {
377      gtag('consent', 'update', {
378        analytics_storage:     consents.analytics ? 'granted' : 'denied',
379        ad_storage:            consents.marketing ? 'granted' : 'denied',
380        ad_user_data:          consents.marketing ? 'granted' : 'denied',
381        ad_personalization:    consents.marketing ? 'granted' : 'denied',
382        functionality_storage: 'granted',
383        security_storage:      'granted'
384      });
385    }
386
387    function applyInitialConsent(consents) {
388      if (!consents) return;
389      var sig = consentSignature(consents);
390      if (consentState.initialized) {
391        log('applyInitialConsent called after already initialized — skipping');
392        return;
393      }
394      updateGoogleConsent(consents);
395      pushConsentEvent('consent_initialized', consents.analytics, c
395onsents.marketing);
396      consentState.initialized          = true;
397      consentState.lastAppliedSignature = sig;
398    }
399
400    function applyUpdatedConsent(consents) {
401      if (!consents) return;
402      var sig = consentSignature(consents);
403      if (sig === consentState.lastAppliedSignature) {
404        log('Consent unchanged — skipping duplicate consent_updated');
405        return;
406      }
407      updateGoogleConsent(consents);
408      pushConsentEvent('consent_updated', consents.analytics, consents.marketing);
409      consentState.initialized          = true;
410      consentState.lastAppliedSignature = sig;
411    }
412
413    // ─── Step 1: gtag default ────────────────────────────────────────────────────
414    gtag('consent', 'default', {
415      ad_storage:            window.__cmpRegion.regulated ? 'denied' : 'granted',
416      ad_user_data:          window.__cmpRegion.regulated ? 'denied' : 'granted',
417      ad_personalization:    window.__cmpRegion.regulated ? 'denied' : 'granted',
418      analytics_storage:     window.__cmpRegion.regulated ? 'denied' : 'granted',
419      functionality_storage: 'granted',
420      security_storage:      'granted'
421    });
422
423    // ─── Step 2: Non-regulated — initialize immediately as fully granted ─────────
424    if (!window.__cmpRegion.regulated) {
425      var openConsents = { analytics: true, marketing: true };
426      consentState.initialized          = true;
427      consentState.lastAppliedSignature = consentSignature(openConsents);
428      pushConsentEvent('consent_initialized', true, true);
429    }
430
431    // ─── Klaro config ────────────────────────────────────────────────────────────
432    window.klaroConfig = {
433      version:               1,
434      elementID:             'klaro',
435      storageMethod:         'cookie',
436      storageName:           'klaro-consent',
437      cookieExpiresAfterDays: 365,
438      default:               false,
439      mustConsent:           true,
440      acceptAll:             true,
441      hideDeclineAll:        false,
442      htmlTexts:             true,
443      lang:                  'en',
444      translations: {
445        en: {
446          consentNotice: {
447            description: 'We use cookies for analytics and marketing. You can manage your preferences at any time.',
448            learnMore:   'Manage preferences'
449          },
450          consentModal: {
451            title:       'This website uses cookies',
452            description: 'We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you\u2019ve provided to them or that they\u2019ve collected from your use of their services.'
453          },
454          ok:      'Accept all',
455          decline: 'Reject all',
456          save:    'Save preferences',
457          close:   'Close'
458        }
459      },
460      services: [
461        { name: 'analytics', title: 'Analytics', purposes: ['analytics'], required: false, default: false },
462        { name: 'marketing', title: 'Marketing', purposes: ['marketing'], required: false, default: false }
463      ],
464      callback: function (consent, service) {
465        try {
466          var manager = getKlaroManager();
467          if (!manager || !manager.consents) return;
468
469          var currentConsents = {
470            analytics: !!manager.consents.analytics,
471            marketing: !!manager.consents.marketing
472          };
473
474          if (!consentState.initialized && hasKlaroCookie()) {
475            applyInitialConsent(currentConsents);
476            return;
477          }
478
479          applyUpdatedConsent(currentConsents);
480        } catch (e) {
481          console.error('Klaro callback error', e);
482        }
483      }
484    };
485
486    // ─── Open consent modal ──────────────────────────────────────────────────────
487    window.openConsentSettings = function () {
488      try {
489        if (window.klaro && typeof window.klaro.show === 'function') {
490          window.klaro.show(window.klaroConfig, true);
491          return;
492        }
493        var manager = getKlaroManager();
494        if (manager && typeof manager.showConsentModal === 'function') {
495          manager.showConsentModal();
496        }
497      } catch (e) {
498        console.warn('Unable to open Klaro consent settings', e);
499      }
500    };
501
502    // ─── Klaro onload handler ────────────────────────────────────────────────────
503    window.__applyKlaroInitialConsent = function () {
504      try {
505        if (!window.__cmpRegion.regulated) return;
506        if (!hasKlaroCookie()) return;
507        var manager = getKlaroManager();
508        if (!manager || !manager.consents) return;
509        applyInitialConsent({
510          analytics: !!manager.consents.analytics,
511          marketing: !!manager.consents.marketing
512        });
513      } catch (e) {
514        console.warn('Klaro consent initialization failed', e);
515      }
516    };
517
518    // ─── GPT bootstrap ───────────────────────────────────────────────────────────
519    // Always uses securepubads (standard GPT).
520    // For denied-consent users, applies nonPersonalizedAds instead of switching
521    // to the limited GPT URL — this preserves pubads() availability and gives
522    // access to the standard demand pool (contextual only, no user signals).
523    (function () {
524      if (window.__wtwhGptBootstrapInitialized) return;
525      window.__wtwhGptBootstrapInitialized = true;
526
527      var GPT_MODE_FULL    = 'full';
528      var GPT_MODE_NPA     = 'npa';   // non-personalized ads — replaces "limited"
529
530      // Single GPT URL for all cases
531      var GPT_URL = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
532
533      var gptScriptRequested   = false;
534      var gptScriptLoaded      = false;
535      var gptDecisionFinalized = false;
536
537      function redactUrl(rawUrl) {
538        if (!rawUrl) return '';
539        try {
540          var url = new URL(rawUrl, window.location.origin);
541          ['s', 'loc'].forEach(function (key) {
542            if (url.searchParams.has(key)) url.searchParams.set(key, 'REDACTED');
543          });
544          return url.href;
545        } catch (e) {
546          return rawUrl;
547        }
548      }
549
550      // Returns null when consent state is not yet known (regulated, Klaro not loaded yet).
551      // Returning null defers GPT loading until a consent signal arrives.
552      function selectGptMode() {
553        if (!window.__cmpRegion.regulated) return GPT_MODE_FULL;
554
555        var marketingConsent = getMarketingConsentState();
556        if (marketingConsent === true)  return GPT_MODE_FULL;
557        if (marketingConsent === false) return GPT_MODE_NPA;
558
559        // null = Klaro hasn't restored consent yet — wait
560        return null;
561      }
562
563      function dispatchGptReady(mode) {
564        window.__gptMode  = mode;
565        window.__gptReady = true;
566        window.__wtwhConsentDebug.gptMode = mode;
567
568        window.dataLayer.push({ event: 'gpt_ready', gpt_mode: mode });
569        dispatchWindowEvent('gpt_ready', { gpt_mode: mode });
570        log('gpt_ready dispatched with mode:', mode);
571      }
572
573      function configureGptAfterLoad(mode) {
574        window.googletag.cmd.push(function () {
575          try {
576            if (typeof googletag.pubads !== 'function') {
577              log('pubads() unavailable after GPT load');
578              return;
579            }
580
581            if (mode === GPT_MODE_NPA) {
582              // Consent denied: serve non-personalized ads.
583              // Uses standard GPT pipeline with no user signals.
584              // Better fill rate than limited ads URL; compliant with
585              // ad_storage: denied + nonPersonalizedAds: true.
586              try {
587                googletag.pubads().setPrivacySettings({
588                  nonPersonalizedAds: true
589                });
590                log('Configured GPT for non-personalized ads (consent denied)');
591              } catch (e) {
592                log('Failed to set nonPersonalizedAds', e);
593              }
594            } else {
595              log('Configured GPT for full personalized ads');
596            }
597
598            var cleanPage = redactUrl(window.location.href);
599            var cleanRef  = redactUrl(document.referrer);
600
601            try { googletag.pubads().set('page_url', cleanPage); } catch (e) {}
602            if (cleanRef) {
603              try { googletag.pubads().set('referrer_url', cleanRef); } catch (e) {}
604            }
605            try {
606              googletag.pubads().setTargeting('s',   'REDACTED');
607              googletag.pubads().setTargeting('loc', 'REDACTED');
608            } catch (e) {}
609
610            dispatchGptReady(mode);
611          } catch (e) {
612            log('Error during GPT configuration', e);
613          }
614        });
615      }
616
617      function loadGptScript(mode) {
618        if (gptScriptRequested || gptScriptLoaded || gptDecisionFinalized) {
619          log('GPT already requested/loaded — skipping');
620          return;
621        }
622
623        gptDecisionFinalized = true;
624        gptScriptRequested   = true;
625
626        var script   = document.createElement('script');
627        script.async = true;
628        script.src   = GPT_URL;
629
630        script.onload = function () {
631          gptScriptLoaded = true;
632          log('GPT script loaded, mode:', mode);
633          configureGptAfterLoad(mode);
634        };
635
636        script.onerror = function () {
637          gptScriptRequested   = false;
638          gptScriptLoaded      = false;
639          gptDecisionFinalized = false;
640          log('Failed to load GPT script');
641        };
642
643        document.head.appendChild(script);
644        log('Requested GPT script, mode:', mode);
645      }
646
647      function tryLoadGpt() {
648        if (gptDecisionFinalized) return true;
649        var mode = selectGptMode();
650        if (mode === null) return false;
651        loadGptScript(mode);
652        return true;
653      }
654
655      // Non-regulated: load immediately
656      if (!window.__cmpRegion.regulated) {
657        tryLoadGpt();
658        return;
659      }
660
661      // Regulated: wait for a consent signal before loading GPT
662      window.addEventListener('consent_initialized', tryLoadGpt);
663      window.addEventListener('consent_updated',     tryLoadGpt);
664
665      // Poll briefly in case Klaro resolves before listeners fire
666      var pollCount    = 0;
667      var maxPolls     = 3;
668      var pollInterval = setInterval(function () {
669        pollCount++;
670        if (tryLoadGpt() || pollCount >= maxPolls) {
671          clearInterval(pollInterval);
672        }
673      }, 100);
674
675      // Hard fallback: no consent signal after a short bootstrap grace period → load NPA
676      setTimeout(function () {
677        if (!gptDecisionFinalized) {
678          log('Consent timeout — falling back to non-personalized GPT');
679          loadGptScript(GPT_MODE_NPA);
680        }
681      }, 300);
682    })();
683  })();
684</script>
vendor: 1 bytes, line 684
684
685<script data-wtwh-analytics-loader>(function(w,d){'use strict';
686var cfg={"scriptUrl":"https://scripts.wtwhmedia.com/developer/wtwh_analytics/env/prod/index.js","endpoint":"https://collect.wtwhmedia.com/v1/events","site":"www.windpowerengineering.com","pageUrl":"https://www.windpowerengineering.com/category/featured/","country":"US","consentDenied":false};
687var consentMessageType="arrowfly:analytics-consent";
688if(w.__wtwhAnalyticsEdgeLoaderInstalled)return;
689w.__wtwhAnalyticsEdgeLoaderInstalled=true;
690var analytics=null;
691var pageTracker=null;
692var consentGranted=!cfg.consentDenied;
693function browserConsent(){
694  var n=w.navigator||{};
695  return n.globalPrivacyControl!==true&&n.doNotTrack!=='1';
696}
697function canTrack(){return consentGranted&&browserConsent();}
698function embedFrames(){
699  return d.querySelectorAll('iframe[src*="embeds.wtwhmedia.com"],iframe[src*="embeds.dev.wtwhmedia.com"]');
700}
701function broadcastEmbedConsent(){
702  var msg={type:consentMessageType,granted:canTrack()};
703  var frames=embedFrames();
704  for(var i=0;i<frames.length;i++){
705    try{
706      var frame=frames[i];
707      var targetOrigin=new URL(frame.src,w.location.href).origin;
708      if(frame.contentWindow)frame.contentWindow.postMessage(msg,targetOrigin);
709    }catch(_){}
710  }
711}
712function startPageTracking(){
713  if(!analytics||pageTracker||!canTrack())return;
714  var api=w.wtwh&&w.wtwh.analytics;
715  if(api&&typeof api.trackPage==='function'){
716    pageTracker=api.trackPage(analytics,{props:{source:'edge-router',country:cfg.country}});
717    return;
718  }
719  analytics.track('page_view',{
720    page_url:cfg.pageUrl,
721    page_host:w.location.hostname,
722    page_path:w.location.pathname,
723    referer:d.referrer||'',
724    props:{source:'edge-router',country:cfg.country,navigation_type:'initial'}
725  });
726  analytics.flush();
727}
728function stopPageTracking(){
729  if(!pageTracker)return;
730  pageTracker.destroy();
731  pageTracker=null;
732}
733function setConsent(granted){
734  consentGranted=!!granted;
735  if(consentGranted)startPageTracking();
736  else stopPageTracking();
737  broadcastEmbedConsent();
738}
739function applyConsentEvent(event){
740  var value=event&&event.detail&&event.detail.consent_analytics;
741  if(value==='granted')setConsent(true);
742  else if(value==='denied')setConsent(false);
743}
744function readKlaroConsent(){
745  try{
746    var manager=w.klaro&&typeof w.klaro.getManager==='function'&&w.klaro.getManager();
747    if(manager&&manager.consents&&typeof manager.consents.analytics==='boolean'){
748      setConsent(manager.consents.analytics);
749      return true;
750    }
751  }catch(_){}
752  return false;
753}
754function pollKlaroConsent(){
755  if(!cfg.consentDenied)return;
756  var attempts=0;
757  var timer=w.setInterval(function(){
758    attempts++;
759    if(readKlaroConsent()||attempts>=20)w.clearInterval(timer);
760  },500);
761}
762function start(){
763  var api=w.wtwh&&w.wtwh.analytics;
764  if(!api||typeof api.create!=='function')return;
765  analytics=api.create({
766    site:String(cfg.site||w.location.hostname),
767    endpoint:String(cfg.endpoint),
768    context:{
769      page_url:String(cfg.pageUrl||w.location.href),
770      page_host:w.location.hostname,
771      page_path:w.location.pathname,
772      referer:d.referrer||''
773    },
774    consent:canTrack
775  });
776  readKlaroConsent();
777  startPageTracking();
778  broadcastEmbedConsent();
779}
780w.addEventListener('consent_initialized',applyConsentEvent);
781w.addEventListener('consent_updated',applyConsentEvent);
782w.addEventListener('load',broadcastEmbedConsent);
783d.addEventListener('load',function(event){
784  if(event.target&&event.target.tagName==='IFRAME')broadcastEmbedConsent();
785},true);
786if(w.wtwh&&w.wtwh.analytics)start();
787else{
788  var script=d.createElement('script');
789  script.async=true;
790  script.src=String(cfg.scriptUrl);
791  script.onload=start;
792  (d.head||d.documentElement).appendChild(script);
793}
794pollKlaroConsent();
795})(window,document);</script>
795<script data-wtwh-ad-info>window.dataLayer=window.dataLayer||[];window.dataLayer.push({"wtwhAdInfo":{"request":"unrestricted","verified_bot_category":"","traffic_channel":"direct_or_unknown","traffic_channel_group":"direct_or_unknown"}});</script>
795</head>
796<body class="archive category category-featured category-126 wp-theme-genesis wp-child-theme-ThemeWTWH content-sidebar genesis-breadcrumbs-hidden">        <div id="div-gpt-wpe_wallpaper"></div>
797                <div class="site-container"><header class="site-header"><div class="wrap"><div class="title-area"><p class="site-title"><a href="https://www.windpowerengineering.com/">Windpower Engineering &amp; Development</a></p></div><div class="widget-area header-widget-area"><section id="custom_html-23" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><div id='div-gpt-wpe-header'>
798	
798<script>
799    googletag.cmd.push(function() { googletag.display('div-gpt-wpe-header'); });
800  </script>
800
801</div>
802</div></div></section>
803</div><div class="mobile-toggles"><a href="#" class="search-toggle"><i class="icon-search"></i></a><a href="#" class="mobile-menu-toggle"><i class="icon-menu"></i></a></div></div></header><nav class="nav-primary" aria-label="Main"><div class="wrap"><ul id="menu-main-top" class="menu genesis-nav-menu menu-primary"><li id="menu-item-11217" class="home menu-item"><a href="https://www.windpowerengineering.com/"><span >Home</span></a></li>
804<li id="menu-item-11218" class="menu-item current-menu-ancestor menu-item-has-children"><a href="/recent-windpower-articles/"><span >Articles</span></a>
805<ul class="sub-menu">
806	<li id="menu-item-47679" class="menu-item"><a href="https://www.windpowerengineering.com/recent-windpower-articles/"><span >Most recent posts</span></a></li>
807	<li id="menu-item-47680" class="menu-item"><a href="https://www.windpowerengineering.com/category/news/"><span >News</span></a></li>
808	<li id="menu-item-47681" class="menu-item current-menu-item"><a href="https://www.windpowerengineering.com/category/featured/" aria-current="page"><span >Featured</span></a></li>
809</ul>
810</li>
811<li id="menu-item-11249" class="menu-item menu-item-has-children"><a><span >Resources</span></a>
812<ul class="sub-menu">
813	<li id="menu-item-23264" class="menu-item"><a href="https://www.windpowerengineering.com/category/featured/digital-issues/"><span >Digital issues</span></a></li>
814	<li id="menu-item-14495" class="menu-item"><a href="https://www.windpowerengineering.com/category/featured/podcasts/"><span >Podcasts</span></a></li>
815	<li id="menu-item-11531" class="menu-item"><a href="/suppliers/"><span >Suppliers</span></a></li>
816	<li id="menu-item-50170" class="menu-item"><a target="_blank" href="https://gateway.on24.com/wcc/experience/elitewtwhmedia/2927718/4415917/windpower-engineering-development"><span >Webinars</span></a></li>
817	<li id="menu-item-48079" class="menu-item"><a href="https://www.windpowerengineering.com/wind-power-events/"><span >Events</span></a></li>
818</ul>
819</li>
820<li id="menu-item-47684" class="menu-item"><a href="https://www.windpowerengineering.com/windpower-videos/"><span >Videos</span></a></li>
821<li id="menu-item-50249" class="menu-item menu-item-has-children"><a target="_blank" href="https://leadership.solarpowerworldonline.com/"><span >2025 Leadership</span></a>
822<ul class="sub-menu">
823	<li id="menu-item-50595" class="menu-item"><a target="_blank" href="https://leadership.solarpowerworldonline.com/2024-winners/"><span >2024 Winners</span></a></li>
824	<li id="menu-item-49890" class="menu-item"><a href="https://www.windpowerengineering.com/2023-leadership-in-wind-energy/"><span >2023 Winners</span></a></li>
825	<li id="menu-item-49747" class="menu-item"><a href="https://www.windpowerengineering.com/2022-leadership-in-wind-energy-winners/"><span >2022 Winners</span></a></li>
826</ul>
827</li>
828<li id="menu-item-49017" class="menu-item"><a href="/windpower-engineering-development-magazine-subscription-form"><span >Magazine</span></a></li>
829<li id="menu-item-50678" class="menu-item"><a target="_blank" href="https://www.mediakit.windpowerengineering.com/"><span >Advertise</span></a></li>
830<li id="menu-item-11255" class="site-header--subscribe menu-item"><a href="/subscribe-to-newsletter/"><span >Subscribe</span></a></li>
831<li class="menu-item search"><a href="#" class="search-toggle"><i class="icon-search"></i></a></li></ul></div></nav>    <div style="padding-top:10px;text-align:center">
832        <div id="jumbo-banner-ad-container" style="min-width: 970px; min-height: 90px;"></div>
833    </div>
834    <div class="archive-intro"><div class="wrap"><h1 class="archive-title"><span>Featured</span></h1><div class="archive-description"><p>Windpower Engineering brings the design engineer of today the latest data and computations for designing a windpower system. Read through our featured articles for more details.</p>
835</div></div></div><div class="site-inner"><div class="wrap"><div class="content-sidebar-wrap"><main class="content"><article class="type-post entry has-post-thumbnail" aria-label="Case study: BLADEcontrol delivers timely monitoring on blade structural health"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.windpowerengineering.com/author/contributor/" class="entry-author-link" rel="author"><span class="entry-author-name">WPED Contributor</span></a></span> | <time class="entry-time">October 7, 2025</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health/">Case study: BLADEcontrol delivers timely monitoring on blade structural health</a></h2>
836</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/case-study-bladecontrol-delivers-timely-monitoring-on-blade-structural-health/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2016/03/edf-268x170.jpg" class="alignleft post-image entry-image wp-image-26821" alt="" decoding="async" /></a><p>EDF power solutions was interested in advancing its wind blade monitoring capabilities for potential blade damage in its fleet of Senvi
836on MM92 turbines in California. Scheduling crane usage can be costly and disruptive to operations, so having a more proactive and discrete blade monitoring solution would allow EDF to identify potential cracks. Most importantly, EDF&hellip;</p>
837</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Overlooked and underleveraged: Why &#8216;lite repowering&#8217; is wind energy&#8217;s best near-term bet"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://pivotgen.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Bryan Reed and Meredyth Crichton, PivotGen</span></a></span> | <time class="entry-time">May 8, 2025</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/overlooked-and-underleveraged-why-lite-repowering-is-wind-energys-best-near-term-bet/">Overlooked and underleveraged: Why &#8216;lite repowering&#8217; is wind energy&#8217;s best near-term bet</a></h2>
838</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/overlooked-and-underleveraged-why-lite-repowering-is-wind-energys-best-near-term-bet/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2025/05/Stockyard-Wind-Farm-Porterhouse-site-268x170.jpg" class="alignleft post-image entry-image wp-image-50683" alt="" decoding="async" loading="lazy" /></a><p>Despite years of investment and innovation, the U.S. energy transition continues to lag. According to Ember, a globally recognized climate and energy think tank, wind and solar accounted for just over 17% of America’s electricity generation in 2024 — far from what’s needed to reach net-zero targets. Transmission bottlenecks, overloaded interconnection queues, and stalled feasibility&hellip;</p>
839</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="The smarter the wind turbine, the stronger the grid"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.emerson.com/en-us" class="entry-author-link" rel="author"><span class="entry-author-name">Thomas Andersen, VP of renewable technologies, Emerson</span></a></span> | <time class="entry-time">April 17, 2025</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/the-smarter-the-wind-turbine-the-stronger-the-grid/">The smarter the wind turbine, the stronger the grid</a></h2>
840</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/the-smarter-the-wind-turbine-the-stronger-the-grid/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2025/04/emerson-stock-wind-268x170.jpg" class="alignleft post-image entry-image wp-image-50661" alt="" decoding="async" loading="lazy" /></a><p>Electrification continues to expand around the globe. While the sudden upsurge in the number of electric vehicles may be the most obvious example of the growth of electrification, people are also adding a wide array of new appliances, tools, mobile devices and more to their lifestyles, consuming far more electrical energy than ever before. Rising&hellip;</p>
841</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Smart software: Unlocking the true potential of wind power"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://new.abb.com/about/our-businesses/motion" class="entry-author-link" rel="author"><span class="entry-author-name">Jonas Wahlstroem, CTO, Renewable Business, ABB Motion</span></a></span> | <time class="entry-time">November 19, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/smart-software-unlocking-the-true-potential-of-wind-power/">Smart software: Unlocking the true potential of wind power</a></h2>
842</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/smart-software-unlocking-the-true-potential-of-wind-power/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2021/08/abb-wind-composite-268x170.jpg" class="alignleft post-image entry-image wp-image-48899" alt="" decoding="async" loading="lazy" /></a><p>While wind turbines have become a familiar sight across our landscapes and are an important source of energy, many of these impressive structures have potential to generate even more energy and operate more efficiently. Much has been discussed around the creation of new wind projects, but there are many aging wind farms that could be&hellip;</p>
843</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Repowering wind farms to repower America: A case for upgrading existing projects to meet climate goals"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.exuspartners.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Jim Spencer, President &amp; CEO, Exus Renewables North America</span></a></span> | <time class="entry-time">October 29, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/repowering-wind-farms-to-repower-america-a-case-for-upgrading-existing-projects-to-meet-climate-goals/">Repowering wind farms to repower America: A case for upgrading existing projects to meet climate goals</a></h2>
844</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/repowering-wind-farms-to-repower-america-a-case-for-upgrading-existing-projects-to-meet-climate-goals/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2022/01/Pattern_Energy_Group_NM-stock-268x170.jpg" class="alignleft post-image entry-image wp-image-49175" alt="" decoding="async" loading="lazy" /></a><p>The United States is on pace to miss its climate goals by a wide margin. In the 2015 Paris Agreement, the country pledged to cut greenhouse gas emissions by 50% by 2030. But as of January 2024, nine years on, the reduction has been only 17%, leaving the remaining 33% to be eliminated over the&hellip;</p>
845</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Strategic uses of AI in wind resource assessment for wind farms"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.triumphus.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Dave Hopson, managing partner and founder, Triumphus</span></a></span> | <time class="entry-time">October 24, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/strategic-uses-of-ai-in-wind-resource-assessment-for-wind-farms/">Strategic uses of AI in wind resource assessment for wind farms</a></h2>
846</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/strategic-uses-of-ai-in-wind-resource-assessment-for-wind-farms/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2022/10/stock-wind-under-268x170.jpg" class="alignleft post-image entry-image wp-image-49698" alt="" decoding="async" loading="lazy" /></a><p>The potential of artificial intelligence (AI) in the renewables industry is immense. By harnessing advanced data analysis, machine learning and predictive modeling techniques, AI can revolutionize wind resource assessment and vibration analysis of wind farms. While there are many opportunities to apply AI to wind farm development, it is essential to have an enterprise-wide AI&hellip;</p>
847</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Fireproofing offshore wind for a sustainable future"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://blazeman.uk/" class="entry-author-link" rel="author"><span class="entry-author-name">Stuart White, Operations Director at Blaze Manufacturing Solutions</span></a></span> | <time class="entry-time">October 15, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/fireproofing-offshore-wind-for-a-sustainable-future/">Fireproofing offshore wind for a sustainable future</a></h2>
848</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/fireproofing-offshore-wind-for-a-sustainable-future/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2021/11/stock-offshore-lightning-268x170.jpg" class="alignleft post-image entry-image wp-image-49075" alt="" decoding="async" loading="lazy" /></a><p>The offshore wind sector is critical to achieving net-zero goals and ensuring energy security. As governments around the world hedge their bets on offshore wind being a key driver to meeting those sustainability goals, it has never been more important to ensure that safety is at the forefront of decision making to keep critical assets&hellip;</p>
849</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="September 2024 Issue: Caring for offshore wind vessels"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.windpowerengineering.com/author/wpednews/" class="entry-author-link" rel="author"><span class="entry-author-name">WPED Staff</span></a></span> | <time class="entry-time">September 1, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/september-2024-issue-caring-for-offshore-wind-vessels/">September 2024 Issue: Caring for offshore wind vessels</a></h2>
850</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/september-2024-issue-caring-for-offshore-wind-vessels/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/09/WPE-sept-2024-cover-268x170.jpg" class="alignleft post-image entry-image wp-image-50484" alt="" decoding="async" loading="lazy" srcset="https://www.windpowerengineering.com/wp-content/uploads/2024/09/WPE-sept-2024-cover-268x170.jpg 268w, https://www.windpowerengineering.com/wp-content/uploads/2024/09/WPE-sept-2024-cover-500x317.jpg 500w, https://www.windpowerengineering.com/wp-content/uploads/2024/09/WPE-sept-2024-cover-368x233.jpg 368w, https://www.windpowerengineering.com/wp-content/uploads/2024/09/WPE-sept-2024-cover.jpg 536w" sizes="auto, (max-width: 268px) 100vw, 268px" /></a><p>Windpower Engineering &#038; Development is a growing wind-power resource targeting professionals involved in all aspects of a wind farm’s lifecycle, including developers, engineers, technicians, manufacturers and researchers that work to 
850site, build, maintain, repair and optimize wind-related components, software and projects. The goal at Windpower Engineering &#038; Development is to educate and expand the knowledge&hellip;</p>
851</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="How should carbon be valued in offshore wind?"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.cowi.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Greg Matzat, VP &amp; Market Director of Offshore Renewables, COWI in North America</span></a></span> | <time class="entry-time">August 21, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/how-should-carbon-be-valued-in-offshore-wind/">How should carbon be valued in offshore wind?</a></h2>
852</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/how-should-carbon-be-valued-in-offshore-wind/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2019/12/nrel-stock-offshore-wave-268x170.jpg" class="alignleft post-image entry-image wp-image-47909" alt="" decoding="async" loading="lazy" /></a><p>The offshore wind industry in North America stands on the cusp of transformative growth, with considerable progress made toward the U.S. goal to deploy 30 GW of offshore wind by 2030. Yet, as the sector races toward ambitious deployment targets, the critical lens of sustainability has, at times, been overshadowed by the immediate objectives of&hellip;</p>
853</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="A conversation on offshore wind opinions in New England"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.cesa.org/" class="entry-author-link" rel="author"><span class="entry-author-name">Clean Energy States Alliance (CESA)</span></a></span> | <time class="entry-time">August 12, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/a-conversation-on-offshore-wind-opinions-in-new-england/">A conversation on offshore wind opinions in New England</a></h2>
854</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/a-conversation-on-offshore-wind-opinions-in-new-england/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2020/11/stock-orsted-offshore-268x170.jpg" class="alignleft post-image entry-image wp-image-48530" alt="" decoding="async" loading="lazy" /></a><p>In the fall of 2023, Connecticut, Massachusetts and Rhode Island signed a memorandum of understanding to collaborate on offshore wind procurement. The MOU allows project developers to submit bids to multiple states at once, which could attract larger projects and drive down energy costs. This past July, the Barr Foundation and Hart Research published views on findings from&hellip;</p>
855</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Advancements in carbon fiber composites recycling"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.fairmat.tech/" class="entry-author-link" rel="author"><span class="entry-author-name">Dr. Michael Gaultois, Chief Scientific Officer, Fairmat</span></a></span> | <time class="entry-time">August 12, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/advancements-in-carbon-fiber-composites-recycling/">Advancements in carbon fiber composites recycling</a></h2>
856</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/advancements-in-carbon-fiber-composites-recycling/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/08/fairmat-chips-770-268x170.jpg" class="alignleft post-image entry-image wp-image-50433" alt="" decoding="async" loading="lazy" /></a><p>In various high-performance sectors like wind energy, carbon fiber composites are indispensable due to their light weight and high-strength properties. However, the end-of-life management of carbon fiber waste poses a significant environmental challenge. Traditional disposal methods, including incineration and landfilling, are not sustainable. Recent advancements in carbon fiber recycling have fostered sustainable solutions across multiple&hellip;</p>
857</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Fortifying Gulf of Mexico wind farms against hurricanes"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.stormgeo.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Rick Scott, senior industry manager and meteorologist, StormGeo</span></a></span> | <time class="entry-time">April 30, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/fortifying-gulf-of-mexico-wind-farms-against-hurricanes/">Fortifying Gulf of Mexico wind farms against hurricanes</a></h2>
858</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/fortifying-gulf-of-mexico-wind-farms-against-hurricanes/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2022/04/stock-hurricane-cyclone-268x170.jpg" class="alignleft post-image entry-image wp-image-49396" alt="" decoding="async" loading="lazy" /></a><p>The Gulf of Mexico, with its vast expanse and untapped potential, has become a focal point for wind energy development. However, the region’s susceptibility to hurricanes and extreme weather events poses significant challenges to these renewable energy infrastru
858ctures. The devastating impacts of such events have underscored the urgent need for robust preparedness strategies to safeguard&hellip;</p>
859</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="April 2024 Issue: Knowledge Is Power: Blade condition monitoring&#8217;s powerful insight for wind project owners"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.windpowerengineering.com/author/wpednews/" class="entry-author-link" rel="author"><span class="entry-author-name">WPED Staff</span></a></span> | <time class="entry-time">April 2, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/april-2024-issue-knowledge-is-power/">April 2024 Issue: Knowledge Is Power: Blade condition monitoring&#8217;s powerful insight for wind project owners</a></h2>
860</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/april-2024-issue-knowledge-is-power/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/04/WPE-Apr-2020-cover-268x170.jpg" class="alignleft post-image entry-image wp-image-50349" alt="" decoding="async" loading="lazy" srcset="https://www.windpowerengineering.com/wp-content/uploads/2024/04/WPE-Apr-2020-cover-268x170.jpg 268w, https://www.windpowerengineering.com/wp-content/uploads/2024/04/WPE-Apr-2020-cover-500x317.jpg 500w, https://www.windpowerengineering.com/wp-content/uploads/2024/04/WPE-Apr-2020-cover-368x233.jpg 368w, https://www.windpowerengineering.com/wp-content/uploads/2024/04/WPE-Apr-2020-cover.jpg 536w" sizes="auto, (max-width: 268px) 100vw, 268px" /></a><p>Windpower Engineering &#038; Development is a growing wind-power resource targeting professionals involved in all aspects of a wind farm’s lifecycle, including developers, engineers, technicians, manufacturers and researchers that work to site, build, maintain, repair and optimize wind-related components, software and projects. The goal at Windpower Engineering &#038; Development is to educate and expand the knowledge&hellip;</p>
861</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="As wind turbines grow larger, so do risks in tornado-prone areas"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://alliant.com/risk-management/alliant-specialty/power-utility-renewables/" class="entry-author-link" rel="author"><span class="entry-author-name">Edward Stewart, senior VP, Alliant Insurance Services</span></a></span> | <time class="entry-time">March 18, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/as-wind-turbines-grow-larger-so-do-risks-in-tornado-prone-areas/">As wind turbines grow larger, so do risks in tornado-prone areas</a></h2>
862</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/as-wind-turbines-grow-larger-so-do-risks-in-tornado-prone-areas/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/02/tornado-lightning-268x170.jpg" class="alignleft post-image entry-image wp-image-50319" alt="" decoding="async" loading="lazy" /></a><p>Underwriting insurance for wind turbines involves a comprehensive evaluation of factors that can influence the risk and potential losses associated with these structures. Insurers consider a range of specific elements to determine the level of risk and to determine insurance premiums. Key factors involved in underwriting wind turbine insurance include the geographic location and climate&hellip;</p>
863</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Transmission issues are key hurdle for offshore wind projects in the USA"><header class="entry-header"><p class="entry-meta"><span class="entry-author">
863By <a href="https://www.wsp.com/en-us/" class="entry-author-link" rel="author"><span class="entry-author-name">Tershara Matthews, Offshore Wind Policy Lead, WSP USA</span></a></span> | <time class="entry-time">March 11, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/transmission-issues-are-key-hurdle-for-offshore-wind-projects-in-the-usa/">Transmission issues are key hurdle for offshore wind projects in the USA</a></h2>
864</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/transmission-issues-are-key-hurdle-for-offshore-wind-projects-in-the-usa/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/02/vineyard-wind-tow-2-offshore-usa-268x170.jpg" class="alignleft post-image entry-image wp-image-50316" alt="" decoding="async" loading="lazy" /></a><p>Recent news of offshore wind turbine projects in New England waters shows that there is renewed interest in this water-bound source of wind power. Although the United States has been slower to adopt offshore wind energy — the European and Asian markets already boast more than 10,000 offshore wind turbines — it is encouraging to&hellip;</p>
865</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="The cost-efficient floating wind conundrum"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.houlderltd.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Mark Goalen, Chief Operating Officer, Houlder</span></a></span> | <time class="entry-time">March 4, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/the-cost-efficient-floating-wind-conundrum/">The cost-efficient floating wind conundrum</a></h2>
866</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/the-cost-efficient-floating-wind-conundrum/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2022/10/stock-float-construction-equinor-hywind-Tampen-268x170.jpg" class="alignleft post-image entry-image wp-image-49729" alt="" decoding="async" loading="lazy" /></a><p>Demonstrator projects show that offshore floating wind is technically proven as a feasible concept. The challenge is how to deliver it for utility-scale projects within the budgets already committed to. Finding a cost-efficient and practical solution that best meets the demands of developers — while also taking into account the perspectives of all stakeholders —&hellip;</p>
867</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Knowledge is power: Blade condition monitoring’s powerful insight with web-based visualization"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.weidmuller.com/en/index.jsp" class="entry-author-link" rel="author"><span class="entry-author-name">Scott Sattler, wind business development manager, and Pete Tecos, director of new energy solutions, Weidmuller USA</span></a></span> | <time class="entry-time">February 20, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/knowledge-is-power-blade-condition-monitorings-powerful-insight-with-web-based-visualization/">Knowledge is power: Blade condition monitoring’s powerful insight with web-based visualization</a></h2>
868</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/knowledge-is-power-blade-condition-monitorings-powerful-insight-with-web-based-visualization/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/02/wind-turbine-blade-268x170.jpg" class="alignleft post-image entry-image wp-image-50278" alt="" decoding="async" loading="lazy" /></a><p>The profitability of a wind farm is inextricably linked to the energy output and availability of the turbines at the site. Therefore, as every wind site manager knows all too well, turbine downtime must be prevented or significantly reduced to optimize power production throughout the year. While it’s an indisputable fact that a mechanical or&hellip;</p>
869</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="Essential safety tips for wind farm technicians: Protecting workers in extreme conditions"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.allseasonsuniforms.com/" class="entry-author-link" rel="author"><span class="entry-author-name">Nick Warrick, Sales Manager, All Seasons Uniforms</span></a></span> | <time class="entry-time">February 6, 2024</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/essential-safety-tips-for-wind-farm-technicians-protecting-workers-in-extreme-conditions/">Essential safety tips for wind farm technicians: Protecting workers in extreme conditions</a></h2>
870</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/essential-safety-tips-for-wind-farm-technicians-protecting-workers-in-extreme-conditions/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/02/stock-wind-tech-268x170.jpg" class="alignleft post-image entry-image wp-image-50257" alt="" decoding="async" loading="lazy" /></a><p>The job market for wind turbine technicians is growing rapidly. The Bureau of Labor Statistics (BLS) estimates that employment for wind farm techs will grow 45% between 2022 and 2032. Wind farm workers and turbine technicians perform vital maintenance and repairs on wind turbines, ensuring that they can continue to deliver reliable, clean energy to&hellip;</p>
871</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="December 2023 Issue: Renewable Energy: A Year in Review"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.windpowerengineering.com/author/wpednews/" class="entry-author-link" rel="author"><span class="entry-author-name">WPED Staff</span></a></span> | <time class="entry-time">December 14, 2023</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/december-2023-issue-renewable-energy-a-year-in-review/">December 2023 Issue: Renewable Energy: A Year in Review</a></h2>
872</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/december-2023-issue-renewable-energy-a-year-in-review/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2024/01/WPE-Dec-2023-cover-268x170.jpg" class="alignleft post-image entry-image wp-image-50233" alt="" decoding="async" loading="lazy" srcset="https://www.windpowerengineering.com/wp-content/uploads/2024/01/WPE-Dec-2023-cover-268x170.jpg 268w, https://www.windpowerengineering.com/wp-content/uploads/2024/01/WPE-Dec-2023-cover-500x317.jpg 500w, https://www.windpowerengineering.com/wp-content/uploads/2024/01/WPE-Dec-2023-cover-368x233.jpg 368w, https://www.windpowerengineering.com/wp-content/uploads/2024/01/WPE-Dec-2023-cover.jpg 536w" sizes="auto, (max-width: 268px) 100vw, 268px" /></a><p>
872Renewable Energy 2023: A Year in Review Welcome to this special edition of Solar Power World and Windpower Engineering &#038; Development, what we are calling “Renewable Energy 2023: A Year in Review.” Each year, the staff of WTWH Media’s two renewable brands reflects on the last 12 months to prepare for what’s trending into the&hellip;</p>
873</div><footer class="entry-footer"></footer></article><article class="type-post entry has-post-thumbnail" aria-label="The turbulent forces affecting the U.S. wind and renewables industry in 2024"><header class="entry-header"><p class="entry-meta"><span class="entry-author">By <a href="https://www.ardian.com/infrastructure" class="entry-author-link" rel="author"><span class="entry-author-name">Todd Wynn, CEO of Skyline Renewables, and Olivia Genereux, Senior Investment Manager of Ardian Infrastructure</span></a></span> | <time class="entry-time">December 4, 2023</time></p><h2 class="entry-title"><a class="entry-title-link" rel="bookmark" href="https://www.windpowerengineering.com/the-turbulent-forces-affecting-the-u-s-wind-and-renewables-industry-in-2024/">The turbulent forces affecting the U.S. wind and renewables industry in 2024</a></h2>
874</header><div class="entry-content"><a class="entry-image-link" href="https://www.windpowerengineering.com/the-turbulent-forces-affecting-the-u-s-wind-and-renewables-industry-in-2024/" aria-hidden="true" tabindex="-1"><img width="268" height="170" src="https://www.windpowerengineering.com/wp-content/uploads/2023/11/stock-wind-1-268x170.jpg" class="alignleft post-image entry-image wp-image-50186" alt="" decoding="async" loading="lazy" /></a><p>As the United States positions itself for a sustainable and greener future, the wind power and renewables industry faces a pivotal moment in 2024. Despite over a decade of unrestrained growth in new renewable capacity additions, sector headwinds have tempered that trajectory. The past year has shown how renewables are particularly influenced by the dynamic&hellip;</p>
875</div><footer class="entry-footer"></footer></article><div class="archive-pagination pagination"><div class="pagination-next alignright"><a href="https://www.windpowerengineering.com/category/featured/page/2/"  class="button">Next ></a></div></div></main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar"><section id="custom_html-24" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><div id='div-gpt-wpe_sidebar1'>
876	
876<script>
877    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_sidebar1'); });
878  </script>
878
879</div>
880<div id='div-gpt-wpe_sidebarbottom_primary'>
881	
881<script>
882    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_sidebarbottom_primary'); });
883  </script>
883
884</div></div></div></section>
885<section id="wtwh_soundcloud_widget-2" class="widget wtwh_soundcloud_widget"><div class="widget-wrap"><h4 class="widget-title widgettitle">Podcasts</h4>
886<div class="wtwh-soundcloud-player-wrapper"><div class="wtwh-soundcloud-player"><div><iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1675662996&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe><div class="SoundCloudTitle">Wind Spotlight: Looking back at a year of Thrive with ZF Wind Power</div></div> <a href="/category/featured/podcasts/" class="SoundCloudTitle SoundCloudPubDate" target="_blank">See More ></a></div></div></div></section>
887<section id="custom_html-22" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Windpower Engineering &#038; Development Digital Edition Archive</h4>
888<div class="textwidget custom-html-widget"><div id="digital" style="padding: 0 15px 10px 15px;">
889  <a href="/category/digital-issues/">
890    <img align="left" style="padding:0 10px; width: 100px;" src="https://www.windpowerengineering.com/wp-content/uploads/2022/03/WPE-March-2022-cover-300.jpg" alt="Digital Edition" />
891  </a>
892  <p>
893    <a href="/category/digital-issues/" style="text-decoration: underline;">Explore the full archive of digital issues</a> of <em>Windpower Engineering &amp; Development</em>, presented in a high-quality, user-friendly format. Access current and past editions, clip, share, and download valuable content from the industry’s leading wind power engineering resource.
894  </p>
895  <div style="text-align: center; height: 60px; width: 136px; margin: 0 auto;">
896    <div>
897      <a href="/category/digital-issues/" target="_parent" rel="nofollow">
898        <button class="greenbutton" style="background-color: #80a0c1; color: white; font-weight: bold; border: none; padding: 10px; font-size: 16px; cursor: pointer;">Back Issues</button>
899      </a>
900    </div>
901  </div>
902</div>
903
904</div></div></section>
905<section id="custom_html-25" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget">				
906<div id='div-gpt-wpe_sidebar2'>
907	
907<script>
908    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_sidebar2'); });
909  </script>
909
910</div>
911</div></div></section>
912</aside></div></div></div><div class="footer-socials"><div class="wrap"><label style="color:#ffffff">Connect with Windpower Engineering & Development </label> <a href="https://www.facebook.com/WindpowerEngineering" target="_blank" rel="noopener noreferrer"><i class="icon-facebook"></i></a><a href="https://twitter.com/Windpower_Eng" target="_blank" rel="noopener noreferrer"><i class="icon-twitter"></i></a><a href="https://www.linkedin.com/company/windpower-engineering-development/" target="_blank" rel="noopener noreferrer"><i class="icon-linkedin"></i></a><a href="https://www.youtube.com/windpowerengineering" target="_blank" rel="noopener noreferrer"><i class="icon-youtube"></i></a></div></div><footer class="site-footer"><div class="wrap"><div class="row"><div class="footer-logo"><a href="https://www.windpowerengineering.com">Windpower Engineering &amp; Development</a></div><div class="footer-menu"><div class="menu-footer-menu-container"><ul id="menu-footer-menu" class="menu"><li id="menu-item-38344" class="menu-item"><a href="/recent-windpower-articles/">Wind Articles</a></li>
913<li id="menu-item-48883" class="menu-item"><a href="https://www.solarpowerworldonline.com/">Solar Power World</a></li>
914<li id="menu-item-42305" class="menu-item"><a target="_blank" href="/windpower-engineering-development-magazine-subscription-form/">Subscribe to Windpower Engineering</a></li>
915<li id="menu-item-45015" class="menu-item"><a href="https://www.windpowerengineering.com/meetourteam/">About Us/Contact Us</a></li>
916</ul></div></div><div class="footer-copyright"><p>Copyright &copy; 2026 Arrowfly LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of Arrowfly<br /> <a href="http://www.arrowfly.com/privacy-policy/" target="_blank">Privacy Policy</a>  | <a href="https://www.mediakit.windpowerengineering.com/" target="_blank">Advertising</a> </p></div></div></div></footer></div><div class="site-search"><div class="wrap"><div class="search-inner"><h2>Search Windpower Engineering & Development </h2><form class="search-form" method="get" action="https://www.windpowerengineering.com/" role="search"><input class="search-form-input" type="search" name="s" id="searchform-1" placeholder="Search this website"><input class="search-form-submit" type="submit" value="GO"><meta content="https://www.windpowerengineering.com/?s={s}"></form></div></div></div>
916<script type="speculationrules">
917{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/ThemeWTWH/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
918</script>
918
919<!-- Google Tag Manager (noscript) Global -->
vendor: 68 bytes, lines 919-920
919
920<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
920GTM-MMC9PJ9
vendor: 83 bytes, lines 920-921
920"
921height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
922<!-- End Google Tag Manager (noscript) -->
923
924<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 924-925
924
925<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
925GTM-5WXXHJ7
vendor: 83 bytes, lines 925-926
925"
926height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
927<!-- End Google Tag Manager (noscript) -->
928
929
930
931<div id='div-gpt-wpe_interstitial'>
932	
932<script>
933    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_interstitial'); });
934  </script>
934
935</div>
936				
937<div id='div-gpt-wpe_wallpaper'>
938	
938<script>
939    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_wallpaper'); });
940  </script>
940
941</div>
942
943<div id='div-gpt-wpe_allstreamflex'>
944	
944<script>
945    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_allstreamflex'); });
946  </script>
946
947</div>
948
949				
950<div id='div-gpt-wpe_allstreamprelude'>
951	
951<script>
952    googletag.cmd.push(function() { googletag.display('div-gpt-wpe_allstreamprelude'); });
953  </script>
953
954</div>
955
956<div id="sidr-mobile-menu" class="sidr right"><a class="sidr-menu-close" href="#"><i class="icon-close"></i></a><div class="menu-main-top-container"><ul id="menu-main-top-1" class="menu"><li class="home menu-item"><a href="https://www.windpowerengineering.com/">Home</a></li>
957<li class="menu-item current-menu-ancestor menu-item-has-children"><a href="/recent-windpower-articles/">Articles</a>
958<ul class="sub-menu">
959	<li class="menu-item"><a href="https://www.windpowerengineering.com/recent-windpower-articles/">Most recent posts</a></li>
960	<li class="menu-item"><a href="https://www.windpowerengineering.com/category/news/">News</a></li>
961	<li class="menu-item current-menu-item"><a href="https://www.windpowerengineering.com/category/featured/" aria-current="page">Featured</a></li>
962</ul>
963</li>
964<li class="menu-item menu-item-has-children"><a>Resources</a>
965<ul class="sub-menu">
966	<li class="menu-item"><a href="https://www.windpowerengineering.com/category/featured/digital-issues/">Digital issues</a></li>
967	<li class="menu-item"><a href="https://www.windpowerengineering.com/category/featured/podcasts/">Podcasts</a></li>
968	<li class="menu-item"><a href="/suppliers/">Suppliers</a></li>
969	<li class="menu-item"><a target="_blank" href="https://gateway.on24.com/wcc/experience/elitewtwhmedia/2927718/4415917/windpower-engineering-development">Webinars</a></li>
970	<li class="menu-item"><a href="https://www.windpowerengineering.com/wind-power-events/">Events</a></li>
971</ul>
972</li>
973<li class="menu-item"><a href="https://www.windpowerengineering.com/windpower-videos/">Videos</a></li>
974<li class="menu-item menu-item-has-children"><a target="_blank" href="https://leadership.solarpowerworldonline.com/">2025 Leadership</a>
975<ul class="sub-menu">
976	<li class="menu-item"><a target="_blank" href="https://leadership.solarpowerworldonline.com/2024-winners/">2024 Winners</a></li>
977	<li class="menu-item"><a href="https://www.windpowerengineering.com/2023-leadership-in-wind-energy/">2023 Winners</a></li>
978	<li class="menu-item"><a href="https://www.windpowerengineering.com/2022-leadership-in-wind-energy-winners/">2022 Winners</a></li>
979</ul>
980</li>
981<li class="menu-item"><a href="/windpower-engineering-development-magazine-subscription-form">Magazine</a></li>
982<li class="menu-item"><a target="_blank" href="https://www.mediakit.windpowerengineering.com/">Advertise</a></li>
983<li class="site-header--subscribe menu-item"><a href="/subscribe-to-newsletter/">Subscribe</a></li>
984</ul></div></div></div>
985		
985<script type="text/html" id="tmpl-media-frame">
986		<div class="media-frame-title" id="media-frame-title"></div>
987		<h2 class="media-frame-menu-heading">Actions</h2>
988		<button type="button" class="button button-link media-frame-menu-toggle" aria-expanded="false">
989			Menu			<span class="dashicons dashicons-arrow-down" aria-hidden="true"></span>
990		</button>
991		<div class="media-frame-menu"></div>
992		<div class="media-frame-tab-panel">
993			<div class="media-frame-router"></div>
994			<div class="media-frame-content"></div>
995		</div>
996		<h2 class="media-frame-actions-heading screen-reader-text">
997		Selected media actions		</h2>
998		<div class="media-frame-toolbar"></div>
999		<div class="media-frame-uploader"></div>
1000	</script>
1000
1001
1002		
1002<script type="text/html" id="tmpl-media-modal">
1003		<div id="wp-media-modal" tabindex="0" class="media-modal wp-core-ui" role="dialog" aria-labelledby="media-frame-title">
1004			<# if ( data.hasCloseButton ) { #>
1005				<button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
1006					Close dialog				</span></button>
1007			<# } #>
1008			<div class="media-modal-content" role="document"></div>
1009		</div>
1010		<div class="media-modal-backdrop"></div>
1011	</script>
1011
1012
1013		
1013<script type="text/html" id="tmpl-uploader-window">
1014		<div class="uploader-window-content">
1015			<div class="uploader-editor-title">Drop files to upload</div>
1016		</div>
1017	</script>
1017
1018
1019		
1019<script type="text/html" id="tmpl-uploader-editor">
1020		<div class="uploader-editor-content">
1021			<div class="uploader-editor-title">Drop files to upload</div>
1022		</div>
1023	</script>
1023
1024
1025		
1025<script type="text/html" id="tmpl-uploader-inline">
1026		<# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #>
1027		<# if ( data.canClose ) { #>
1028		<button class="close dashicons dashicons-no"><span class="screen-reader-text">
1029			Close uploader		</span></button>
1030		<# } #>
1031		<div class="uploader-inline-content {{ messageClass }}">
1032		<# if ( data.message ) { #>
1033			<h2 class="upload-message">{{ data.message }}</h2>
1034		<# } #>
1035					<div class="upload-ui">
1036				<h2 class="upload-instructions drop-instructions">Drop files to upload</h2>
1037				<p class="upload-instructions drop-instructions">or</p>
1038				<button type="button" class="browser button button-hero" aria-describedby="post-upload-info">Select Files</button>
1039			</div>
1040
1041			<div class="upload-inline-status"></div>
1042
1043			<div class="post-upload-ui" id="post-upload-info">
1044				
1045				<p class="max-upload-size">
1046				Maximum upload file size: 50 MB.				</p>
1047
1048				<# if ( data.suggestedWidth && data.suggestedHeight ) { #>
1049					<p class="suggested-dimensions">
1050						Suggested image dimensions: {{data.suggestedWidth}} by {{data.suggestedHeight}} pixels.					</p>
1051				<# } #>
1052
1053							</div>
1054				</div>
1055	</script>
1055
1056
1057		
1057<script type="text/html" id="tmpl-media-library-view-switcher">
1058		<a href="https://www.windpowerengineering.com/wp-admin/upload.php?mode=list" class="view-list">
1059			<span class="screen-reader-text">
1060				List view			</span>
1061		</a>
1062		<a href="https://www.windpowerengineering.com/wp-admin/upload.php?mode=grid" class="view-grid current" aria-current="page">
1063			<span class="screen-reader-text">
1064				Grid view			</span>
1065		</a>
1066	</script>
1066
1067
1068		
1068<script type="text/html" id="tmpl-uploader-status">
1069		<h2>Uploading</h2>
1070
1071		<div class="media-progress-bar"><div></div></div>
1072		<div class="upload-details">
1073			<span class="upload-count">
1074				<span class="upload-index"></span> / <span class="upload-total"></span>
1075			</span>
1076			<span class="upload-detail-separator">&ndash;</span>
1077			<span class="upload-filename"></span>
1078		</div>
1079		<div class="upload-errors"></div>
1080		<button type="button" class="button upload-dismiss-errors">Dismiss errors</button>
1081	</script>
1081
1082
1083		
1083<script type="text/html" id="tmpl-uploader-status-error">
1084		<span class="upload-error-filename word-wrap-break-word">{{{ data.filename }}}</span>
1085		<span class="upload-error-message">{{ data.message }}</span>
1086	</script>
1086
1087
1088		
1088<script type="text/html" id="tmpl-edit-attachment-frame">
1089		<div class="edit-media-header">
1090			<button class="left dashicons"<# if ( ! data.hasPrevious ) { #> disabled<# } #>><span class="screen-reader-text">Edit previous media item</span></button>
1091			<button class="right dashicons"<# if ( ! data.hasNext ) { #> disabled<# } #>><span class="screen-reader-text">Edit next media item</span></button>
1092			<button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">Close dialog</span></button>
1093		</div>
1094		<div class="media-frame-title"></div>
1095		<div class="media-frame-content"></div>
1096	</script>
1096
1097
1098		
1098<script type="text/html" id="tmpl-attachment-details-two-column">
1099		<div class="attachment-media-view {{ data.orientation }}">
1100						<h2 class="screen-reader-text">Attachment Preview</h2>
1101			<div class="thumbnail thumbnail-{{ data.type }}">
1102				<# if ( data.uploading ) { #>
1103					<div class="media-progress-bar"><div></div></div>
1104				<# } else if ( data.sizes && data.sizes.full ) { #>
1105					<img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" />
1106				<# } else if ( data.sizes && data.sizes.large ) { #>
1107					<img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" />
1108				<# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #>
1109					<img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" />
1110				<# } #>
1111
1112				<# if ( 'audio' === data.type ) { #>
1113				<div class="wp-media-wrapper wp-audio">
1114					<audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
1115						<source type="{{ data.mime }}" src="{{ data.url }}" />
1116					</audio>
1117				</div>
1118				<# } else if ( 'video' === data.type ) {
1119					var w_rule = '';
1120					if ( data.width ) {
1121						w_rule = 'width: ' + data.width + 'px;';
1122					} else if ( wp.media.view.settings.contentWidth ) {
1123						w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;';
1124					}
1125				#>
1126				<div style="{{ w_rule }}" class="wp-media-wrapper wp-video">
1127					<video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata"
1128						<# if ( data.width ) { #>width="{{ data.width }}"<# } #>
1129						<# if ( data.height ) { #>height="{{ data.height }}"<# } #>
1130						<# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>>
1131						<source type="{{ data.mime }}" src="{{ data.url }}" />
1132					</video>
1133				</div>
1134				<# } #>
1135
1136				<div class="attachment-actions">
1137					<# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #>
1138					<button type="button" class="button edit-attachment">Edit Image</button>
1139					<# } else if ( 'pdf' === data.subtype && data.sizes ) { #>
1140					<p>Document Preview</p>
1141					<# } #>
1142				</div>
1143			</div>
1144		</div>
1145		<div class="attachment-info">
1146			<span class="settings-save-status" role="status">
1147				<span class="spinner"></span>
1148				<span class="saved">Saved.</span>
1149			</span>
1150			<div class="details">
1151				<h2 class="screen-reader-text">
1152					Details				</h2>
1153				<div class="uploaded"><strong>Uploaded on:</strong> {{ data.dateFormatted }}</div>
1154				<div class="uploaded-by word-wrap-break-word">
1155					<strong>Uploaded by:</strong>
1156						<# if ( data.authorLink ) { #>
1157							<a href="{{ data.authorLink }}">{{ data.authorName }}</a>
1158						<# } else { #>
1159							{{ data.authorName }}
1160						<# } #>
1161				</div>
1162				<# if ( data.uploadedToTitle ) { #>
1163					<div class="uploaded-to">
1164						<strong>Uploaded to:</strong>
1165						<# if ( data.uploadedToLink ) { #>
1166							<a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a>
1167						<# } else { #>
1168							{{ data.uploadedToTitle }}
1169						<# } #>
1170					</div>
1171				<# } #>
1172				<div class="filename"><strong>File name:</strong> {{ data.filename }}</div>
1173				<div class="file-type"><strong>File type:</strong> {{ data.mime }}</div>
1174				<div class="file-size"><strong>File size:</strong> {{ data.filesizeHumanReadable }}</div>
1175				<# if ( 'image' === data.type && ! data.uploading ) { #>
1176					<# if ( data.width && data.height ) { #>
1177						<div class="dimensions"><strong>Dimensions:</strong>
1178							{{ data.width }} by {{ data.height }} pixels						</div>
1179					<# } #>
1180
1181					<# if ( data.originalImageURL && data.originalImageName ) { #>
1182						<div class="word-wrap-break-word">
1183							<strong>Original image:</strong>
1184							<a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a>
1185						</div>
1186					<# } #>
1187				<# } #>
1188
1189				<# if ( data.fileLength && data.fileLengthHumanReadable ) { #>
1190					<div class="file-length"><strong>Length:</strong>
1191						<span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span>
1192						<span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span>
1193					</div>
1194				<# } #>
1195
1196				<# if ( 'audio' === data.type && data.meta.bitrate ) { #>
1197					<div class="bitrate">
1198						<strong>Bitrate:</strong> {{ Math.round( data.meta.bitrate / 1000 ) }}kb/s
1199						<# if ( data.meta.bitrate_mode ) { #>
1200						{{ ' ' + data.meta.bitrate_mode.toUpperCase() }}
1201						<# } #>
1202					</div>
1203				<# } #>
1204
1205				<# if ( data.mediaStates ) { #>
1206					<div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div>
1207				<# } #>
1208
1209				<div class="compat-meta">
1210					<# if ( data.compat && data.compat.meta ) { #>
1211						{{{ data.compat.meta }}}
1212					<# } #>
1213				</div>
1214			</div>
1215
1216			<div class="settings">
1217				<# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #>
1218				<# if ( 'image' === data.type ) { #>
1219					<span class="setting alt-text has-description" data-setting="alt">
1220						<label for="attachment-details-two-column-alt-text" class="name">Alternative Text</label>
1221						<textarea id="attachment-details-two-column-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea>
1222					</span>
1223					<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1224				<# } #>
1225								<span class="setting" data-setting="title">
1226					<label for="attachment-details-two-column-title" class="name">Title</label>
1227					<input type="text" id="attachment-details-two-column-title" value="{{ data.title }}" {{ maybeReadOnly }} />
1228				</span>
1229								<# if ( 'audio' === data.type ) { #>
1230								<span class="setting" data-setting="artist">
1231					<label for="attachment-details-two-column-artist" class="name">Artist</label>
1232					<input type="text" id="attachment-details-two-column-artist" value="{{ data.artist || data.meta.artist || '' }}" />
1233				</span>
1234								<span class="setting" data-setting="album">
1235					<label for="attachment-details-two-column-album" class="name">Album</label>
1236					<input type="text" id="attachment-details-two-column-album" value="{{ data.album || data.meta.album || '' }}" />
1237				</span>
1238								<# } #>
1239				<span class="setting" data-setting="caption">
1240					<# if ( 'image' === data.type ) { #>
1241					<label for="attachment-details-two-column-caption" class="name">Image Caption</label>
1242					<# } else { #>
1243					<label for="attachment-details-two-column-caption" class="name">Short Description</label>
1244					<# } #>
1245					<textarea id="attachment-details-two-column-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea>
1246				</span>
1247				<span class="setting" data-setting="description">
1248					<label for="attachment-details-two-column-description" class="name">Description</label>
1249					<textarea id="attachment-details-two-column-description" {{ maybeReadOnly }}>{{ data.description }}</textarea>
1250				</span>
1251				<span class="setting" data-setting="url">
1252					<label for="attachment-details-two-column-copy-link" class="name">File URL:</label>
1253					<input type="text" class="attachment-details-copy-link ltr" id="attachment-details-two-column-copy-link" value="{{ data.url }}" readonly />
1254					<span class="copy-to-clipboard-container">
1255						<button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-two-column-copy-link">Copy URL to clipboard</button>
1256						<span class="success hidden" aria-hidden="true">Copied!</span>
1257					</span>
1258				</span>
1259				<div class="attachment-compat"></div>
1260			</div>
1261
1262			<div class="actions">
1263				<# if ( data.link ) { #>
1264										<a class="view-attachment" href="{{ data.link }}">View attachment page</a>
1265				<# } #>
1266				<# if ( data.can.save ) { #>
1267					<# if ( data.link ) { #>
1268						<span class="links-separator">|</span>
1269					<# } #>
1270					<a href="{{ data.editLink }}">Edit more details</a>
1271				<# } #>
1272				<# if ( data.can.save && data.link ) { #>
1273					<span class="links-separator">|</span>
1274					<a href="{{ data.url }}" download>Download file</a>
1275				<# } #>
1276				<# if ( ! data.uploading && data.can.remove ) { #>
1277					<# if ( data.link || data.can.save ) { #>
1278						<span class="links-separator">|</span>
1279					<# } #>
1280											<button type="button" class="button-link delete-attachment">Delete permanently</button>
1281									<# } #>
1282			</div>
1283		</div>
1284	</script>
1284
1285
1286		
1286<script type="text/html" id="tmpl-attachment">
1287		<div class="attachment-preview js--select-attachment type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}">
1288			<div class="thumbnail">
1289				<# if ( data.uploading ) { #>
1290					<div class="media-progress-bar"><div style="width: {{ data.percent }}%"></div></div>
1291				<# } else if ( 'image' === data.type && data.size && data.size.url ) { #>
1292					<div class="centered">
1293						<img src="{{ data.size.url }}" draggable="false" alt="" />
1294					</div>
1295				<# } else { #>
1296					<div class="centered">
1297						<# if ( data.image && data.image.src && data.image.src !== data.icon ) { #>
1298							<img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" />
1299						<# } else if ( data.sizes ) {
1300								if ( data.sizes.medium ) { #>
1301									<img src="{{ data.sizes.medium.url }}" class="thumbnail" draggable="false" alt="" />
1302								<# } else { #>
1303									<img src="{{ data.sizes.full.url }}" class="thumbnail" draggable="false" alt="" />
1304								<# } #>
1305						<# } else { #>
1306							<img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
1307						<# } #>
1308					</div>
1309					<div class="filename">
1310						<div>{{ data.filename }}</div>
1311					</div>
1312				<# } #>
1313			</div>
1314			<# if ( data.buttons.close ) { #>
1315				<button type="button" class="button-link attachment-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
1316					Remove				</span></button>
1317			<# } #>
1318		</div>
1319		<# if ( data.buttons.check ) { #>
1320			<button type="button" class="check" tabindex="-1"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">
1321				Deselect			</span></button>
1322		<# } #>
1323		<#
1324		var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly';
1325		if ( data.describe ) {
1326			if ( 'image' === data.type ) { #>
1327				<input type="text" value="{{ data.caption }}" class="describe" data-setting="caption"
1328					aria-label="Caption"
1329					placeholder="Caption&hellip;" {{ maybeReadOnly }} />
1330			<# } else { #>
1331				<input type="text" value="{{ data.title }}" class="describe" data-setting="title"
1332					<# if ( 'video' === data.type ) { #>
1333						aria-label="Video title"
1334						placeholder="Video title&hellip;"
1335					<# } else if ( 'audio' === data.type ) { #>
1336						aria-label="Audio title"
1337						placeholder="Audio title&hellip;"
1338					<# } else { #>
1339						aria-label="Media title"
1340						placeholder="Media title&hellip;"
1341					<# } #> {{ maybeReadOnly }} />
1342			<# }
1343		} #>
1344	</script>
1344
1345
1346		
1346<script type="text/html" id="tmpl-attachment-details">
1347		<h2>
1348			Attachment Details			<span class="settings-save-status" role="status">
1349				<span class="spinner"></span>
1350				<span class="saved">Saved.</span>
1351			</span>
1352		</h2>
1353		<div class="attachment-info">
1354
1355			<# if ( 'audio' === data.type ) { #>
1356				<div class="wp-media-wrapper wp-audio">
1357					<audio crossorigin="anonymous" style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
1358						<source type="{{ data.mime }}" src="{{ data.url }}" />
1359					</audio>
1360				</div>
1361			<# } else if ( 'video' === data.type ) {
1362				var w_rule = '';
1363				if ( data.width ) {
1364					w_rule = 'width: ' + data.width + 'px;';
1365				} else if ( wp.media.view.settings.contentWidth ) {
1366					w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;';
1367				}
1368			#>
1369				<div style="{{ w_rule }}" class="wp-media-wrapper wp-video">
1370					<video crossorigin="anonymous" controls="controls" class="wp-video-shortcode" preload="metadata"
1371						<# if ( data.width ) { #>width="{{ data.width }}"<# } #>
1372						<# if ( data.height ) { #>height="{{ data.height }}"<# } #>
1373						<# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>>
1374						<source type="{{ data.mime }}" src="{{ data.url }}" />
1375					</video>
1376				</div>
1377			<# } else { #>
1378				<div class="thumbnail thumbnail-{{ data.type }}">
1379					<# if ( data.uploading ) { #>
1380						<div class="media-progress-bar"><div></div></div>
1381					<# } else if ( 'image' === data.type && data.size && data.size.url ) { #>
1382						<img src="{{ data.size.url }}" draggable="false" alt="" />
1383					<# } else { #>
1384						<img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
1385					<# } #>
1386				</div>
1387			<# } #>
1388
1389			<div class="details">
1390				<div class="filename">{{ data.filename }}</div>
1391				<div class="uploaded">{{ data.dateFormatted }}</div>
1392
1393				<div class="file-size">{{ data.filesizeHumanReadable }}</div>
1394				<# if ( 'image' === data.type && ! data.uploading ) { #>
1395					<# if ( data.width && data.height ) { #>
1396						<div class="dimensions">
1397							{{ data.width }} by {{ data.height }} pixels						</div>
1398					<# } #>
1399
1400					<# if ( data.originalImageURL && data.originalImageName ) { #>
1401						<div class="word-wrap-break-word">
1402							Original image:							<a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a>
1403						</div>
1404					<# } #>
1405
1406					<# if ( data.can.save && data.sizes ) { #>
1407						<a class="edit-attachment" href="{{ data.editLink }}&amp;image-editor" target="_blank">Edit Image</a>
1408					<# } #>
1409				<# } #>
1410
1411				<# if ( data.fileLength && data.fileLengthHumanReadable ) { #>
1412					<div class="file-length">Length:						<span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span>
1413						<span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span>
1414					</div>
1415				<# } #>
1416
1417				<# if ( data.mediaStates ) { #>
1418					<div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div>
1419				<# } #>
1420
1421				<# if ( ! data.uploading && data.can.remove ) { #>
1422											<button type="button" class="button-link delete-attachment">Delete permanently</button>
1423									<# } #>
1424
1425				<div class="compat-meta">
1426					<# if ( data.compat && data.compat.meta ) { #>
1427						{{{ data.compat.meta }}}
1428					<# } #>
1429				</div>
1430			</div>
1431		</div>
1432		<# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #>
1433		<# if ( 'image' === data.type ) { #>
1434			<span class="setting alt-text has-description" data-setting="alt">
1435				<label for="attachment-details-alt-text" class="name">Alt Text</label>
1436				<textarea id="attachment-details-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea>
1437			</span>
1438			<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1439		<# } #>
1440				<span class="setting" data-setting="title">
1441			<label for="attachment-details-title" class="name">Title</label>
1442			<input type="text" id="attachment-details-title" value="{{ data.title }}" {{ maybeReadOnly }} />
1443		</span>
1444				<# if ( 'audio' === data.type ) { #>
1445				<span class="setting" data-setting="artist">
1446			<label for="attachment-details-artist" class="name">Artist</label>
1447			<input type="text" id="attachment-details-artist" value="{{ data.artist || data.meta.artist || '' }}" />
1448		</span>
1449				<span class="setting" data-setting="album">
1450			<label for="attachment-details-album" class="name">Album</label>
1451			<input type="text" id="attachment-details-album" value="{{ data.album || data.meta.album || '' }}" />
1452		</span>
1453				<# } #>
1454		<span class="setting" data-setting="caption">
1455			<# if ( 'image' === data.type ) { #>
1456			<label for="attachment-details-caption" class="name">Image Caption</label>
1457			<# } else { #>
1458			<label for="attachment-details-caption" class="name">Short Description</label>
1459			<# } #>
1460			<textarea id="attachment-details-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea>
1461		</span>
1462		<span class="setting" data-setting="description">
1463			<label for="attachment-details-description" class="name">Description</label>
1464			<textarea id="attachment-details-description" {{ maybeReadOnly }}>{{ data.description }}</textarea>
1465		</span>
1466		<span class="setting" data-setting="url">
1467			<label for="attachment-details-copy-link" class="name">File URL:</label>
1468			<input type="text" class="attachment-details-copy-link ltr" id="attachment-details-copy-link" value="{{ data.url }}" readonly />
1469			<div class="copy-to-clipboard-container">
1470				<button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-copy-link">Copy URL to clipboard</button>
1471				<span class="success hidden" aria-hidden="true">Copied!</span>
1472			</div>
1473		</span>
1474	</script>
1474
1475
1476		
1476<script type="text/html" id="tmpl-media-selection">
1477		<div class="selection-info">
1478			<span class="count"></span>
1479			<# if ( data.editable ) { #>
1480				<button type="button" class="button-link edit-selection">Edit Selection</button>
1481			<# } #>
1482			<# if ( data.clearable ) { #>
1483				<button type="button" class="button-link clear-selection">Clear</button>
1484			<# } #>
1485		</div>
1486		<div class="selection-view"></div>
1487	</script>
1487
1488
1489		
1489<script type="text/html" id="tmpl-attachment-display-settings">
1490		<h2>Attachment Display Settings</h2>
1491
1492		<# if ( 'image' === data.type ) { #>
1493			<span class="setting align">
1494				<label for="attachment-display-settings-alignment" class="name">Alignment</label>
1495				<select id="attachment-display-settings-alignment" class="alignment"
1496					data-setting="align"
1497					<# if ( data.userSettings ) { #>
1498						data-user-setting="align"
1499					<# } #>>
1500
1501					<option value="left">
1502						Left					</option>
1503					<option value="center">
1504						Center					</option>
1505					<option value="right">
1506						Right					</option>
1507					<option value="none" selected>
1508						None					</option>
1509				</select>
1510			</span>
1511		<# } #>
1512
1513		<span class="setting">
1514			<label for="attachment-display-settings-link-to" class="name">
1515				<# if ( data.model.canEmbed ) { #>
1516					Embed or Link				<# } else { #>
1517					Link To				<# } #>
1518			</label>
1519			<select id="attachment-display-settings-link-to" class="link-to"
1520				data-setting="link"
1521				<# if ( data.userSettings && ! data.model.canEmbed ) { #>
1522					data-user-setting="urlbutton"
1523				<# } #>>
1524
1525			<# if ( data.model.canEmbed ) { #>
1526				<option value="embed" selected>
1527					Embed Media Player				</option>
1528				<option value="file">
1529			<# } else { #>
1530				<option value="none" selected>
1531					None				</option>
1532				<option value="file">
1533			<# } #>
1534				<# if ( data.model.canEmbed ) { #>
1535					Link to Media File				<# } else { #>
1536					Media File				<# } #>
1537				</option>
1538				<option value="post">
1539				<# if ( data.model.canEmbed ) { #>
1540					Link to Attachment Page				<# } else { #>
1541					Attachment Page				<# } #>
1542				</option>
1543			<# if ( 'image' === data.type ) { #>
1544				<option value="custom">
1545					Custom URL				</option>
1546			<# } #>
1547			</select>
1548		</span>
1549		<span class="setting">
1550			<label for="attachment-display-settings-link-to-custom" class="name">URL</label>
1551			<input type="text" id="attachment-display-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1552		</span>
1553
1554		<# if ( 'undefined' !== typeof data.sizes ) { #>
1555			<span class="setting">
1556				<label for="attachment-display-settings-size" class="name">Size</label>
1557				<select id="attachment-display-settings-size" class="size" name="size"
1558					data-setting="size"
1559					<# if ( data.userSettings ) { #>
1560						data-user-setting="imgsize"
1561					<# } #>>
1562											<#
1563						var size = data.sizes['thumbnail'];
1564						if ( size ) { #>
1565							<option value="thumbnail" >
1566								Thumbnail &ndash; {{ size.width }} &times; {{ size.height }}
1567							</option>
1568						<# } #>
1569											<#
1570						var size = data.sizes['medium'];
1571						if ( size ) { #>
1572							<option value="medium" >
1573								Medium &ndash; {{ size.width }} &times; {{ size.height }}
1574							</option>
1575						<# } #>
1576											<#
1577						var size = data.sizes['large'];
1578						if ( size ) { #>
1579							<option value="large" >
1580								Large &ndash; {{ size.width }} &times; {{ size.height }}
1581							</option>
1582						<# } #>
1583											<#
1584						var size = data.sizes['full'];
1585						if ( size ) { #>
1586							<option value="full"  selected='selected'>
1587								Full Size &ndash; {{ size.width }} &times; {{ size.height }}
1588							</option>
1589						<# } #>
1590									</select>
1591			</span>
1592		<# } #>
1593	</script>
1593
1594
1595		
1595<script type="text/html" id="tmpl-gallery-settings">
1596		<h2>Gallery Settings</h2>
1597
1598		<span class="setting">
1599			<label for="gallery-settings-link-to" class="name">Link To</label>
1600			<select id="gallery-settings-link-to" class="link-to"
1601				data-setting="link"
1602				<# if ( data.userSettings ) { #>
1603					data-user-setting="urlbutton"
1604				<# } #>>
1605
1606				<option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' === wp.media.galleryDefaults.link ) {
1607					#>selected="selected"<# }
1608				#>>
1609					Attachment Page				</option>
1610				<option value="file" <# if ( 'file' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
1611					Media File				</option>
1612				<option value="none" <# if ( 'none' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
1613					None				</option>
1614			</select>
1615		</span>
1616
1617		<span class="setting">
1618			<label for="gallery-settings-columns" class="name select-label-inline">Columns</label>
1619			<select id="gallery-settings-columns" class="columns" name="columns"
1620				data-setting="columns">
1621									<option value="1" <#
1622						if ( 1 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1623					#>>
1624						1					</option>
1625									<option value="2" <#
1626						if ( 2 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1627					#>>
1628						2					</option>
1629									<option value="3" <#
1630						if ( 3 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1631					#>>
1632						3					</option>
1633									<option value="4" <#
1634						if ( 4 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1635					#>>
1636						4					</option>
1637									<option value="5" <#
1638						if ( 5 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1639					#>>
1640						5					</option>
1641									<option value="6" <#
1642						if ( 6 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1643					#>>
1644						6					</option>
1645									<option value="7" <#
1646						if ( 7 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1647					#>>
1648						7					</option>
1649									<option value="8" <#
1650						if ( 8 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1651					#>>
1652						8					</option>
1653									<option value="9" <#
1654						if ( 9 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# }
1655					#>>
1656						9					</option>
1657							</select>
1658		</span>
1659
1660		<span class="setting">
1661			<input type="checkbox" id="gallery-settings-random-order" data-setting="_orderbyRandom" />
1662			<label for="gallery-settings-random-order" class="checkbox-label-inline">Random Order</label>
1663		</span>
1664
1665		<span class="setting size">
1666			<label for="gallery-settings-size" class="name">Size</label>
1667			<select id="gallery-settings-size" class="size" name="size"
1668				data-setting="size"
1669				<# if ( data.userSettings ) { #>
1670					data-user-setting="imgsize"
1671				<# } #>
1672				>
1673									<option value="thumbnail">
1674						Thumbnail					</option>
1675									<option value="medium">
1676						Medium					</option>
1677									<option value="large">
1678						Large					</option>
1679									<option value="full">
1680						Full Size					</option>
1681							</select>
1682		</span>
1683	</script>
1683
1684
1685		
1685<script type="text/html" id="tmpl-playlist-settings">
1686		<h2>Playlist Settings</h2>
1687
1688		<# var emptyModel = _.isEmpty( data.model ),
1689			isVideo = 'video' === data.controller.get('library').props.get('type'); #>
1690
1691		<span class="setting">
1692			<input type="checkbox" id="playlist-settings-show-list" data-setting="tracklist" <# if ( emptyModel ) { #>
1693				checked="checked"
1694			<# } #> />
1695			<label for="playlist-settings-show-list" class="checkbox-label-inline">
1696				<# if ( isVideo ) { #>
1697				Show Video List				<# } else { #>
1698				Show Tracklist				<# } #>
1699			</label>
1700		</span>
1701
1702		<# if ( ! isVideo ) { #>
1703		<span class="setting">
1704			<input type="checkbox" id="playlist-settings-show-artist" data-setting="artists" <# if ( emptyModel ) { #>
1705				checked="checked"
1706			<# } #> />
1707			<label for="playlist-settings-show-artist" class="checkbox-label-inline">
1708				Show Artist Name in Tracklist			</label>
1709		</span>
1710		<# } #>
1711
1712		<span class="setting">
1713			<input type="checkbox" id="playlist-settings-show-images" data-setting="images" <# if ( emptyModel ) { #>
1714				checked="checked"
1715			<# } #> />
1716			<label for="playlist-settings-show-images" class="checkbox-label-inline">
1717				Show Images			</label>
1718		</span>
1719	</script>
1719
1720
1721		
1721<script type="text/html" id="tmpl-embed-link-settings">
1722		<span class="setting link-text">
1723			<label for="embed-link-settings-link-text" class="name">Link Text</label>
1724			<input type="text" id="embed-link-settings-link-text" class="alignment" data-setting="linkText" />
1725		</span>
1726		<div class="embed-container" style="display: none;">
1727			<div class="embed-preview"></div>
1728		</div>
1729	</script>
1729
1730
1731		
1731<script type="text/html" id="tmpl-embed-image-settings">
1732		<div class="wp-clearfix">
1733			<div class="thumbnail">
1734				<img src="{{ data.model.url }}" draggable="false" alt="" />
1735			</div>
1736		</div>
1737
1738		<span class="setting alt-text has-description">
1739			<label for="embed-image-settings-alt-text" class="name">Alternative Text</label>
1740			<textarea id="embed-image-settings-alt-text" data-setting="alt" aria-describedby="alt-text-description"></textarea>
1741		</span>
1742		<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1743
1744					<span class="setting caption">
1745				<label for="embed-image-settings-caption" class="name">Caption</label>
1746				<textarea id="embed-image-settings-caption" data-setting="caption"></textarea>
1747			</span>
1748		
1749		<fieldset class="setting-group">
1750			<legend class="name">Align</legend>
1751			<span class="setting align">
1752				<span class="button-group button-large" data-setting="align">
1753					<button class="button" value="left">
1754						Left					</button>
1755					<button class="button" value="center">
1756						Center					</button>
1757					<button class="button" value="right">
1758						Right					</button>
1759					<button class="button active" value="none">
1760						None					</button>
1761				</span>
1762			</span>
1763		</fieldset>
1764
1765		<fieldset class="setting-group">
1766			<legend class="name">Link To</legend>
1767			<span class="setting link-to">
1768				<span class="button-group button-large" data-setting="link">
1769					<button class="button" value="file">
1770						Image URL					</button>
1771					<button class="button" value="custom">
1772						Custom URL					</button>
1773					<button class="button active" value="none">
1774						None					</button>
1775				</span>
1776			</span>
1777			<span class="setting">
1778				<label for="embed-image-settings-link-to-custom" class="name">URL</label>
1779				<input type="text" id="embed-image-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1780			</span>
1781		</fieldset>
1782	</script>
1782
1783
1784		
1784<script type="text/html" id="tmpl-image-details">
1785		<div class="media-embed">
1786			<div class="embed-media-settings">
1787				<div class="column-settings">
1788					<span class="setting alt-text has-description">
1789						<label for="image-details-alt-text" class="name">Alternative Text</label>
1790						<textarea id="image-details-alt-text" data-setting="alt" aria-describedby="alt-text-description">{{ data.model.alt }}</textarea>
1791					</span>
1792					<p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p>
1793
1794											<span class="setting caption">
1795							<label for="image-details-caption" class="name">Caption</label>
1796							<textarea id="image-details-caption" data-setting="caption">{{ data.model.caption }}</textarea>
1797						</span>
1798					
1799					<h2>Display Settings</h2>
1800					<fieldset class="setting-group">
1801						<legend class="legend-inline">Align</legend>
1802						<span class="setting align">
1803							<span class="button-group button-large" data-setting="align">
1804								<button class="button" value="left">
1805									Left								</button>
1806								<button class="button" value="center">
1807									Center								</button>
1808								<button class="button" value="right">
1809									Right								</button>
1810								<button class="button active" value="none">
1811									None								</button>
1812							</span>
1813						</span>
1814					</fieldset>
1815
1816					<# if ( data.attachment ) { #>
1817						<# if ( 'undefined' !== typeof data.attachment.sizes ) { #>
1818							<span class="setting size">
1819								<label for="image-details-size" class="name">Size</label>
1820								<select id="image-details-size" class="size" name="size"
1821									data-setting="size"
1822									<# if ( data.userSettings ) { #>
1823										data-user-setting="imgsize"
1824									<# } #>>
1825																			<#
1826										var size = data.sizes['thumbnail'];
1827										if ( size ) { #>
1828											<option value="thumbnail">
1829												Thumbnail &ndash; {{ size.width }} &times; {{ size.height }}
1830											</option>
1831										<# } #>
1832																			<#
1833										var size = data.sizes['medium'];
1834										if ( size ) { #>
1835											<option value="medium">
1836												Medium &ndash; {{ size.width }} &times; {{ size.height }}
1837											</option>
1838										<# } #>
1839																			<#
1840										var size = data.sizes['large'];
1841										if ( size ) { #>
1842											<option value="large">
1843												Large &ndash; {{ size.width }} &times; {{ size.height }}
1844											</option>
1845										<# } #>
1846																			<#
1847										var size = data.sizes['full'];
1848										if ( size ) { #>
1849											<option value="full">
1850												Full Size &ndash; {{ size.width }} &times; {{ size.height }}
1851											</option>
1852										<# } #>
1853																		<option value="custom">
1854										Custom Size									</option>
1855								</select>
1856							</span>
1857						<# } #>
1858							<div class="custom-size wp-clearfix<# if ( data.model.size !== 'custom' ) { #> hidden<# } #>">
1859								<span class="custom-size-setting">
1860									<label for="image-details-size-width">Width</label>
1861									<input type="number" id="image-details-size-width" aria-describedby="image-size-desc" data-setting="customWidth" step="1" value="{{ data.model.customWidth }}" />
1862								</span>
1863								<span class="sep" aria-hidden="true">&times;</span>
1864								<span class="custom-size-setting">
1865									<label for="image-details-size-height">Height</label>
1866									<input type="number" id="image-details-size-height" aria-describedby="image-size-desc" data-setting="customHeight" step="1" value="{{ data.model.customHeight }}" />
1867								</span>
1868								<p id="image-size-desc" class="description">Image size in pixels</p>
1869							</div>
1870					<# } #>
1871
1872					<span class="setting link-to">
1873						<label for="image-details-link-to" class="name">Link To</label>
1874						<select id="image-details-link-to" data-setting="link">
1875						<# if ( data.attachment ) { #>
1876							<option value="file">
1877								Media File							</option>
1878							<option value="post">
1879								Attachment Page							</option>
1880						<# } else { #>
1881							<option value="file">
1882								Image URL							</option>
1883						<# } #>
1884							<option value="custom">
1885								Custom URL							</option>
1886							<option value="none">
1887								None							</option>
1888						</select>
1889					</span>
1890					<span class="setting">
1891						<label for="image-details-link-to-custom" class="name">URL</label>
1892						<input type="text" id="image-details-link-to-custom" class="link-to-custom" data-setting="linkUrl" />
1893					</span>
1894
1895					<div class="advanced-section">
1896						<h2><button type="button" class="button-link advanced-toggle">Advanced Options</button></h2>
1897						<div class="advanced-settings hidden">
1898							<div class="advanced-image">
1899								<span class="setting title-text">
1900									<label for="image-details-title-attribute" class="name">Image Title Attribute</label>
1901									<input type="text" id="image-details-title-attribute" data-setting="title" value="{{ data.model.title }}" />
1902								</span>
1903								<span class="setting extra-classes">
1904									<label for="image-details-css-class" class="name">Image CSS Class</label>
1905									<input type="text" id="image-details-css-class" data-setting="extraClasse
1905s" value="{{ data.model.extraClasses }}" />
1906								</span>
1907							</div>
1908							<div class="advanced-link">
1909								<span class="setting link-target">
1910									<input type="checkbox" id="image-details-link-target" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>>
1911									<label for="image-details-link-target" class="checkbox-label">Open link in a new tab</label>
1912								</span>
1913								<span class="setting link-rel">
1914									<label for="image-details-link-rel" class="name">Link Rel</label>
1915									<input type="text" id="image-details-link-rel" data-setting="linkRel" value="{{ data.model.linkRel }}" />
1916								</span>
1917								<span class="setting link-class-name">
1918									<label for="image-details-link-css-class" class="name">Link CSS Class</label>
1919									<input type="text" id="image-details-link-css-class" data-setting="linkClassName" value="{{ data.model.linkClassName }}" />
1920								</span>
1921							</div>
1922						</div>
1923					</div>
1924				</div>
1925				<div class="column-image">
1926					<div class="image">
1927						<img src="{{ data.model.url }}" draggable="false" alt="" />
1928						<# if ( data.attachment && window.imageEdit ) { #>
1929							<div class="actions">
1930								<input type="button" class="edit-attachment button" value="Edit Original" />
1931								<input type="button" class="replace-attachment button" value="Replace" />
1932							</div>
1933						<# } #>
1934					</div>
1935				</div>
1936			</div>
1937		</div>
1938	</script>
1938
1939
1940		
1940<script type="text/html" id="tmpl-image-editor">
1941		<div id="media-head-{{ data.id }}"></div>
1942		<div id="image-editor-{{ data.id }}"></div>
1943	</script>
1943
1944
1945		
1945<script type="text/html" id="tmpl-audio-details">
1946		<# var ext, html5types = {
1947			mp3: wp.media.view.settings.embedMimes.mp3,
1948			ogg: wp.media.view.settings.embedMimes.ogg
1949		}; #>
1950
1951				<div class="media-embed media-embed-details">
1952			<div class="embed-media-settings embed-audio-settings">
1953				<audio crossorigin="anonymous" style="visibility: hidden"
1954	controls
1955	class="wp-audio-shortcode"
1956	width="{{ _.isUndefined( data.model.width ) ? 400 : data.model.width }}"
1957	preload="{{ _.isUndefined( data.model.preload ) ? 'none' : data.model.preload }}"
1958	<#
1959		if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) {
1960		#> autoplay<#
1961	}
1962		if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) {
1963		#> loop<#
1964	}
1965	#>
1966>
1967	<# if ( ! _.isEmpty( data.model.src ) ) { #>
1968	<source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
1969	<# } #>
1970
1971		<# if ( ! _.isEmpty( data.model.mp3 ) ) { #>
1972	<source src="{{ data.model.mp3 }}" type="{{ wp.media.view.settings.embedMimes[ 'mp3' ] }}" />
1973	<# } #>
1974			<# if ( ! _.isEmpty( data.model.ogg ) ) { #>
1975	<source src="{{ data.model.ogg }}" type="{{ wp.media.view.settings.embedMimes[ 'ogg' ] }}" />
1976	<# } #>
1977			<# if ( ! _.isEmpty( data.model.flac ) ) { #>
1978	<source src="{{ data.model.flac }}" type="{{ wp.media.view.settings.embedMimes[ 'flac' ] }}" />
1979	<# } #>
1980			<# if ( ! _.isEmpty( data.model.m4a ) ) { #>
1981	<source src="{{ data.model.m4a }}" type="{{ wp.media.view.settings.embedMimes[ 'm4a' ] }}" />
1982	<# } #>
1983			<# if ( ! _.isEmpty( data.model.wav ) ) { #>
1984	<source src="{{ data.model.wav }}" type="{{ wp.media.view.settings.embedMimes[ 'wav' ] }}" />
1985	<# } #>
1986		</audio>
1987	
1988				<# if ( ! _.isEmpty( data.model.src ) ) {
1989					ext = data.model.src.split('.').pop();
1990					if ( html5types[ ext ] ) {
1991						delete html5types[ ext ];
1992					}
1993				#>
1994				<span class="setting">
1995					<label for="audio-details-source" class="name">URL</label>
1996					<input type="text" id="audio-details-source" readonly data-setting="src" value="{{ data.model.src }}" />
1997					<button type="button" class="button-link remove-setting">Remove audio source</button>
1998				</span>
1999				<# } #>
2000								<# if ( ! _.isEmpty( data.model.mp3 ) ) {
2001					if ( ! _.isUndefined( html5types.mp3 ) ) {
2002						delete html5types.mp3;
2003					}
2004				#>
2005				<span class="setting">
2006					<label for="audio-details-mp3-source" class="name">MP3</label>
2007					<input type="text" id="audio-details-mp3-source" readonly data-setting="mp3" value="{{ data.model.mp3 }}" />
2008					<button type="button" class="button-link remove-setting">Remove audio source</button>
2009				</span>
2010				<# } #>
2011								<# if ( ! _.isEmpty( data.model.ogg ) ) {
2012					if ( ! _.isUndefined( html5types.ogg ) ) {
2013						delete html5types.ogg;
2014					}
2015				#>
2016				<span class="setting">
2017					<label for="audio-details-ogg-source" class="name">OGG</label>
2018					<input type="text" id="audio-details-ogg-source" readonly data-setting="ogg" value="{{ data.model.ogg }}" />
2019					<button type="button" class="button-link remove-setting">Remove audio source</button>
2020				</span>
2021				<# } #>
2022								<# if ( ! _.isEmpty( data.model.flac ) ) {
2023					if ( ! _.isUndefined( html5types.flac ) ) {
2024						delete html5types.flac;
2025					}
2026				#>
2027				<span class="setting">
2028					<label for="audio-details-flac-source" class="name">FLAC</label>
2029					<input type="text" id="audio-details-flac-source" readonly data-setting="flac" value="{{ data.model.flac }}" />
2030					<button type="button" class="button-link remove-setting">Remove audio source</button>
2031				</span>
2032				<# } #>
2033								<# if ( ! _.isEmpty( data.model.m4a ) ) {
2034					if ( ! _.isUndefined( html5types.m4a ) ) {
2035						delete html5types.m4a;
2036					}
2037				#>
2038				<span class="setting">
2039					<label for="audio-details-m4a-source" class="name">M4A</label>
2040					<input type="text" id="audio-details-m4a-source" readonly data-setting="m4a" value="{{ data.model.m4a }}" />
2041					<button type="button" class="button-link remove-setting">Remove audio source</button>
2042				</span>
2043				<# } #>
2044								<# if ( ! _.isEmpty( data.model.wav ) ) {
2045					if ( ! _.isUndefined( html5types.wav ) ) {
2046						delete html5types.wav;
2047					}
2048				#>
2049				<span class="setting">
2050					<label for="audio-details-wav-source" class="name">WAV</label>
2051					<input type="text" id="audio-details-wav-source" readonly data-setting="wav" value="{{ data.model.wav }}" />
2052					<button type="button" class="button-link remove-setting">Remove audio source</button>
2053				</span>
2054				<# } #>
2055				
2056				<# if ( ! _.isEmpty( html5types ) ) { #>
2057				<fieldset class="setting-group">
2058					<legend class="name">Add alternate sources for maximum HTML5 playback</legend>
2059					<span class="setting">
2060						<span class="button-large">
2061						<# _.each( html5types, function (mime, type) { #>
2062							<button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button>
2063						<# } ) #>
2064						</span>
2065					</span>
2066				</fieldset>
2067				<# } #>
2068
2069				<fieldset class="setting-group">
2070					<legend class="name">Preload</legend>
2071					<span class="setting preload">
2072						<span class="button-group button-large" data-setting="preload">
2073							<button class="button" value="auto">Auto</button>
2074							<button class="button" value="metadata">Metadata</button>
2075							<button class="button active" value="none">None</button>
2076						</span>
2077					</span>
2078				</fieldset>
2079
2080				<span class="setting-group">
2081					<span class="setting checkbox-setting autoplay">
2082						<input type="checkbox" id="audio-details-autoplay" data-setting="autoplay" />
2083						<label for="audio-details-autoplay" class="checkbox-label">Autoplay</label>
2084					</span>
2085
2086					<span class="setting checkbox-setting">
2087						<input type="checkbox" id="audio-details-loop" data-setting="loop" />
2088						<label for="audio-details-loop" class="checkbox-label">Loop</label>
2089					</span>
2090				</span>
2091			</div>
2092		</div>
2093	</script>
2093
2094
2095		
2095<script type="text/html" id="tmpl-video-details">
2096		<# var ext, html5types = {
2097			mp4: wp.media.view.settings.embedMimes.mp4,
2098			ogv: wp.media.view.settings.embedMimes.ogv,
2099			webm: wp.media.view.settings.embedMimes.webm
2100		}; #>
2101
2102				<div class="media-embed media-embed-details">
2103			<div class="embed-media-settings embed-video-settings">
2104				<div class="wp-video-holder">
2105				<#
2106				var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width,
2107					h = ! data.model.height ? 360 : data.model.height;
2108
2109				if ( data.model.width && w !== data.model.width ) {
2110					h = Math.ceil( ( h * w ) / data.model.width );
2111				}
2112				#>
2113
2114				<#  var w_rule = '', classes = [],
2115		w, h, settings = wp.media.view.settings,
2116		isYouTube = isVimeo = false;
2117
2118	if ( ! _.isEmpty( data.model.src ) ) {
2119		isYouTube = data.model.src.match(/youtube|youtu\.be/);
2120		isVimeo = -1 !== data.model.src.indexOf('vimeo');
2121	}
2122
2123	if ( settings.contentWidth && data.model.width >= settings.contentWidth ) {
2124		w = settings.contentWidth;
2125	} else {
2126		w = data.model.width;
2127	}
2128
2129	if ( w !== data.model.width ) {
2130		h = Math.ceil( ( data.model.height * w ) / data.model.width );
2131	} else {
2132		h = data.model.height;
2133	}
2134
2135	if ( w ) {
2136		w_rule = 'width: ' + w + 'px; ';
2137	}
2138
2139	if ( isYouTube ) {
2140		classes.push( 'youtube-video' );
2141	}
2142
2143	if ( isVimeo ) {
2144		classes.push( 'vimeo-video' );
2145	}
2146
2147#>
2148<div style="{{ w_rule }}" class="wp-video">
2149<video crossorigin="anonymous" controls
2150	class="wp-video-shortcode {{ classes.join( ' ' ) }}"
2151	<# if ( w ) { #>width="{{ w }}"<# } #>
2152	<# if ( h ) { #>height="{{ h }}"<# } #>
2153			<#
2154		if ( ! _.isUndefined( data.model.poster ) && data.model.poster ) {
2155			#> poster="{{ data.model.poster }}"<#
2156		} #>
2157			preload			="{{ _.isUndefined( data.model.preload ) ? 'metadata' : data.model.preload }}"
2158				<#
2159		if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) {
2160		#> autoplay<#
2161	}
2162		if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) {
2163		#> loop<#
2164	}
2165	#>
2166>
2167	<# if ( ! _.isEmpty( data.model.src ) ) {
2168		if ( isYouTube ) { #>
2169		<source src="{{ data.model.src }}" type="video/youtube" />
2170		<# } else if ( isVimeo ) { #>
2171		<source src="{{ data.model.src }}" type="video/vimeo" />
2172		<# } else { #>
2173		<source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" />
2174		<# }
2175	} #>
2176
2177		<# if ( data.model.mp4 ) { #>
2178	<source src="{{ data.model.mp4 }}" type="{{ settings.embedMimes[ 'mp4' ] }}" />
2179	<# } #>
2180		<# if ( data.model.m4v ) { #>
2181	<source src="{{ data.model.m4v }}" type="{{ settings.embedMimes[ 'm4v' ] }}" />
2182	<# } #>
2183		<# if ( data.model.webm ) { #>
2184	<source src="{{ data.model.webm }}" type="{{ settings.embedMimes[ 'webm' ] }}" />
2185	<# } #>
2186		<# if ( data.model.ogv ) { #>
2187	<source src="{{ data.model.ogv }}" type="{{ settings.embedMimes[ 'ogv' ] }}" />
2188	<# } #>
2189		<# if ( data.model.flv ) { #>
2190	<source src="{{ data.model.flv }}" type="{{ settings.embedMimes[ 'flv' ] }}" />
2191	<# } #>
2192		{{{ data.model.content }}}
2193</video>
2194</div>
2195	
2196				<# if ( ! _.isEmpty( data.model.src ) ) {
2197					ext = data.model.src.split('.').pop();
2198					if ( html5types[ ext ] ) {
2199						delete html5types[ ext ];
2200					}
2201				#>
2202				<span class="setting">
2203					<label for="video-details-source" class="name">URL</label>
2204					<input type="text" id="video-details-source" readonly data-setting="src" value="{{ data.model.src }}" />
2205					<button type="button" class="button-link remove-setting">Remove video source</button>
2206				</span>
2207				<# } #>
2208								<# if ( ! _.isEmpty( data.model.mp4 ) ) {
2209					if ( ! _.isUndefined( html5types.mp4 ) ) {
2210						delete html5types.mp4;
2211					}
2212				#>
2213				<span class="setting">
2214					<label for="video-details-mp4-source" class="name">MP4</label>
2215					<input type="text" id="video-details-mp4-source" readonly data-setting="mp4" value="{{ data.model.mp4 }}" />
2216					<button type="button" class="button-link remove-setting">Remove video source</button>
2217				</span>
2218				<# } #>
2219								<# if ( ! _.isEmpty( data.model.m4v ) ) {
2220					if ( ! _.isUndefined( html5types.m4v ) ) {
2221						delete html5types.m4v;
2222					}
2223				#>
2224				<span class="setting">
2225					<label for="video-details-m4v-source" class="name">M4V</label>
2226					<input type="text" id="video-details-m4v-source" readonly data-setting="m4v" value="{{ data.model.m4v }}" />
2227					<button type="button" class="button-link remove-setting">Remove video source</button>
2228				</span>
2229				<# } #>
2230								<# if ( ! _.isEmpty( data.model.webm ) ) {
2231					if ( ! _.isUndefined( html5types.webm ) ) {
2232						delete html5types.webm;
2233					}
2234				#>
2235				<span class="setting">
2236					<label for="video-details-webm-source" class="name">WEBM</label>
2237					<input type="text" id="video-details-webm-source" readonly data-setting="webm" value="{{ data.model.webm }}" />
2238					<button type="button" class="button-link remove-setting">Remove video source</button>
2239				</span>
2240				<# } #>
2241								<# if ( ! _.isEmpty( data.model.ogv ) ) {
2242					if ( ! _.isUndefined( html5types.ogv ) ) {
2243						delete html5types.ogv;
2244					}
2245				#>
2246				<span class="setting">
2247					<label for="video-details-ogv-source" class="name">OGV</label>
2248					<input type="text" id="video-details-ogv-source" readonly data-setting="ogv" value="{{ data.model.ogv }}" />
2249					<button type="button" class="button-link remove-setting">Remove video source</button>
2250				</span>
2251				<# } #>
2252								<# if ( ! _.isEmpty( data.model.flv ) ) {
2253					if ( ! _.isUndefined( html5types.flv ) ) {
2254						delete html5types.flv;
2255					}
2256				#>
2257				<span class="setting">
2258					<label for="video-details-flv-source" class="name">FLV</label>
2259					<input type="text" id="video-details-flv-source" readonly data-setting="flv" value="{{ data.model.flv }}" />
2260					<button type="button" class="button-link remove-setting">Remove video source</button>
2261				</span>
2262				<# } #>
2263								</div>
2264
2265				<# if ( ! _.isEmpty( html5types ) ) { #>
2266				<fieldset class="setting-group">
2267					<legend class="name">Add alternate sources for maximum HTML5 playback</legend>
2268					<span class="setting">
2269						<span class="button-large">
2270						<# _.each( html5types, function (mime, type) { #>
2271							<button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button>
2272						<# } ) #>
2273						</span>
2274					</span>
2275				</fieldset>
2276				<# } #>
2277
2278				<# if ( ! _.isEmpty( data.model.poster ) ) { #>
2279				<span class="setting">
2280					<label for="video-details-poster-image" class="name">Poster Image</label>
2281					<input type="text" id="video-details-poster-image" readonly data-setting="poster" value="{{ data.model.poster }}" />
2282					<button type="button" class="button-link remove-setting">Remove poster image</button>
2283				</span>
2284				<# } #>
2285
2286				<fieldset class="setting-group">
2287					<legend class="name">Preload</legend>
2288					<span class="setting preload">
2289						<span class="button-group button-large" data-setting="preload">
2290							<button class="button" value="auto">Auto</button>
2291							<button class="button" value="metadata">Metadata</button>
2292							<button class="button active" value="none">None</button>
2293						</span>
2294					</span>
2295				</fieldset>
2296
2297				<span class="setting-group">
2298					<span class="setting checkbox-setting autoplay">
2299						<input type="checkbox" id="video-details-autoplay" data-setting="autoplay" />
2300						<label for="video-details-autoplay" class="checkbox-label">Autoplay</label>
2301					</span>
2302
2303					<span class="setting checkbox-setting">
2304						<input type="checkbox" id="video-details-loop" data-setting="loop" />
2305						<label for="video-details-loop" class="checkbox-label">Loop</label>
2306					</span>
2307				</span>
2308
2309				<span class="setting" data-setting="content">
2310					<#
2311					var content = '';
2312					if ( ! _.isEmpty( data.model.content ) ) {
2313						var tracks = jQuery( data.model.content ).filter( 'track' );
2314						_.each( tracks.toArray(), function( track, index ) {
2315							content += track.outerHTML; #>
2316						<label for="video-details-track-{{ index }}" class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</label>
2317						<input class="content-track" type="text" id="video-details-track-{{ index }}" aria-describedby="video-details-track-desc-{{ index }}" value="{{ track.outerHTML }}" />
2318						<span class="description" id="video-details-track-desc-{{ index }}">
2319						The srclang, label, and kind values can be edited to set the video track language and kind.						</span>
2320						<button type="button" class="button-link remove-setting remove-track">Remove video track</button><br />
2321						<# } ); #>
2322					<# } else { #>
2323					<span class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</span><br />
2324					<em>There are no associated subtitles.</em>
2325					<# } #>
2326					<textarea class="hidden content-setting">{{ content }}</textarea>
2327				</span>
2328			</div>
2329		</div>
2330	</script>
2330
2331
2332		
2332<script type="text/html" id="tmpl-editor-gallery">
2333		<# if ( data.attachments.length ) { #>
2334			<div class="gallery gallery-columns-{{ data.columns }}">
2335				<# _.each( data.attachments, function( attachment, index ) { #>
2336					<dl class="gallery-item">
2337						<dt class="gallery-icon">
2338							<# if ( attachment.thumbnail ) { #>
2339								<img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="{{ attachment.alt }}" />
2340							<# } else { #>
2341								<img src="{{ attachment.url }}" alt="{{ attachment.alt }}" />
2342							<# } #>
2343						</dt>
2344						<# if ( attachment.caption ) { #>
2345							<dd class="wp-caption-text gallery-caption">
2346								{{{ data.verifyHTML( attachment.caption ) }}}
2347							</dd>
2348						<# } #>
2349					</dl>
2350					<# if ( index % data.columns === data.columns - 1 ) { #>
2351						<br style="clear: both;" />
2352					<# } #>
2353				<# } ); #>
2354			</div>
2355		<# } else { #>
2356			<div class="wpview-error">
2357				<div class="dashicons dashicons-format-gallery"></div><p>No items found.</p>
2358			</div>
2359		<# } #>
2360	</script>
2360
2361
2362		
2362<script type="text/html" id="tmpl-crop-content">
2363		<img class="crop-image" src="{{ data.url }}" alt="Image crop area preview. Requires mouse interaction." />
2364		<div class="upload-errors"></div>
2365	</script>
2365
2366
2367		
2367<script type="text/html" id="tmpl-site-icon-preview-crop">
2368		<style>
2369			:root{
2370				--site-icon-url: url( "{{ data.url }}" );
2371			}
2372		</style>
2373		<h2>Site Icon Preview</h2>
2374		<p>As an app icon and a browser icon.</p>
2375		<div class="site-icon-preview crop">
2376			<div class="image-preview-wrap app-icon-preview">
2377				<img id="preview-app-icon" src="{{ data.url }}" class="app-icon-preview" alt="Preview as an app icon" />
2378			</div>
2379			<div class="site-icon-preview-browser">
2380				<svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="browser-buttons"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 20a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm18 0a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm24-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12Z" /></svg>
2381				<div class="site-icon-preview-tab">
2382					<div class="image-preview-wrap browser">
2383						<img id="preview-favicon" src="{{ data.url }}" class="browser-icon-preview" alt="Preview as a browser icon" />
2384					</div>
2385					<div class="site-icon-preview-site-title" aria-hidden="true"><# print( 'Windpower Engineering &amp; Development' ) #></div>
2386						<svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="close-button">
2387							<path d="M12 13.0607L15.7123 16.773L16.773 15.7123L13.0607 12L16.773 8.28772L15.7123 7.22706L12 10.9394L8.28771 7.22705L7.22705 8.28771L10.9394 12L7.22706 15.7123L8.28772 16.773L12 13.0607Z" />
2388						</svg>
2389					</div>
2390				</div>
2391			</div>
2392		</div>
2393	</script>
2393
2394
2395	
2395<script id="wtwh-ai-search-script-js" src="https://scripts.wtwhmedia.com/developer/ai_search/env/prod/index.js?ver=1790240494"></script>
vendor: 1 bytes, line 2395
2395
2396<script id="thickbox-js-extra">
2397var thickboxL10n = {"next":"Next \u003E","prev":"\u003C Prev","image":"Image","of":"of","close":"Close","noiframes":"This feature requires inline frames. You have iframes disabled or your browser does not support them.","loadingAnimation":"https://www.windpowerengineering.com/wp-includes/js/thickbox/loadingAnimation.gif"};
2398//# sourceURL=thickbox-js-extra
2399</script>
vendor: 1 bytes, line 2399
2399
2400<script id="thickbox-js" src="https://www.windpowerengineering.com/wp-includes/js/thickbox/thickbox.js?ver=3.1-20121105"></script>
vendor: 1 bytes, line 2400
2400
2401<script id="underscore-js" src="https://www.windpowerengineering.com/wp-includes/js/underscore.min.js?ver=1.13.8"></script>
vendor: 1 bytes, line 2401
2401
2402<script id="shortcode-js" src="https://www.windpowerengineering.com/wp-includes/js/shortcode.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2402
2402
2403<script id="media-upload-js" src="https://www.windpowerengineering.com/wp-admin/js/media-upload.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2403
2403
2404<script id="backbone-js" src="https://www.windpowerengineering.com/wp-includes/js/backbone.min.js?ver=1.6.1"></script>
vendor: 1 bytes, line 2404
2404
2405<script id="wp-util-js-extra">
2406var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}};
2407//# sourceURL=wp-util-js-extra
2408</script>
vendor: 1 bytes, line 2408
2408
2409<script id="wp-util-js" src="https://www.windpowerengineering.com/wp-includes/js/wp-util.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2409
2409
2410<script id="wp-backbone-js" src="https://www.windpowerengineering.com/wp-includes/js/wp-backbone.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2410
2410
2411<script id="media-models-js-extra">
2412var _wpMediaModelsL10n = {"settings":{"ajaxurl":"/wp-admin/admin-ajax.php","post":{"id":0}}};
2413//# sourceURL=media-models-js-extra
2414</script>
vendor: 1 bytes, line 2414
2414
2415<script id="media-models-js" src="https://www.windpowerengineering.com/wp-includes/js/media-models.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2415
2415
2416<script id="wp-plupload-js-extra">
2417var pluploadL10n = {"queue_limit_exceeded":"You have attempted to queue too many files.","file_exceeds_size_limit":"%s exceeds the maximum upload size for this site.","zero_byte_file":"This file is empty. Please try another.","invalid_filetype":"This file cannot be processed by the web server.","not_an_image":"This file is not an image. Please try another.","image_memory_exceeded":"Memory exceeded. Please try another smaller file.","image_dimensions_exceeded":"This is larger than the maximum size. Please try another.","default_error":"An error occurred in the upload. Please try again later.","missing_upload_url":"There was a configuration error. Please contact the server administrator.","upload_limit_exceeded":"You may only upload 1 file.","http_error":"Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.","http_error_image":"The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.","upload_failed":"Upload failed.","big_upload_failed":"Please try uploading this file with the %1$sbrowser uploader%2$s.","big_upload_queued":"%s exceeds the maximum upload size for the multi-file uploader when used in your browser.","io_error":"IO error.","security_error":"Security error.","file_cancelled":"File canceled.","upload_stopped":"Upload stopped.","dismiss":"Dismiss","crunching":"Crunching\u2026","deleted":"moved to the Trash.","error_uploading":"\u201c%s\u201d has failed to upload.","unsupported_image":"The server cannot process HEIC images. Convert it to JPEG before uploading.","noneditable_image":"The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.","file_url_copied":"The file URL has been copied to your clipboard"};
2418var _wpPluploadSettings = {"defaults":{"file_data_name":"async-upload","url":"/wp-admin/async-upload.php","filters":{"max_file_size":"52428800b","mime_types":[{"extensions":"jpg,jpeg,jpe,gif,png,bmp,tiff,tif,webp,avif,ico,heic,heif,heics,heifs,asf,asx,wmv,wmx,wm,avi,divx,flv,mov,qt,mpeg,mpg,mpe,mp4,m4v,ogv,webm,mkv,3gp,3gpp,3g2,3gp2,txt,asc,c,cc,h,srt,csv,tsv,ics,rtx,css,vtt,dfxp,mp3,m4a,m4b,aac,ra,ram,wav,x-wav,ogg,oga,flac,mid,midi,wma,wax,mka,rtf,pdf,class,tar,zip,gz,gzip,rar,7z,psd,xcf,doc,pot,pps,ppt,wri,xla,xls,xlt,xlw,mdb,mpp,docx,docm,dotx,dotm,xlsx,xlsm,xlsb,xltx,xltm,xlam,pptx,pptm,ppsx,ppsm,potx,potm,ppam,sldx,sldm,onetoc,onetoc2,onetmp,onepkg,oxps,xps,odt,odp,ods,odg,odc,odb,odf,wp,wpd,key,numbers,pages"}]},"multipart_params":{"action":"upload-attachment","_wpnonce":"79fcf5c09d"}},"browser":{"mobile":false,"supported":true},"limitExceeded":false};
2419//# sourceURL=wp-plupload-js-extra
2420</script>
vendor: 1 bytes, line 2420
2420
2421<script id="wp-plupload-js" src="https://www.windpowerengineering.com/wp-includes/js/plupload/wp-plupload.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2421
2421
2422<script id="jquery-ui-core-js-before">
2423jQuery.uiBackCompat = true;
2424//# sourceURL=jquery-ui-core-js-before
2425</script>
vendor: 1 bytes, line 2425
2425
2426<script id="jquery-ui-core-js" src="https://www.windpowerengineering.com/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2426
2426
2427<script id="jquery-ui-mouse-js" src="https://www.windpowerengineering.com/wp-includes/js/jquery/ui/mouse.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2427
2427
2428<script id="jquery-ui-sortable-js" src="https://www.windpowerengineering.com/wp-includes/js/jquery/ui/sortable.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2428
2428
2429<script id="mediaelement-core-js-before">
2430var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}};
2431//# sourceURL=mediaelement-core-js-before
2432</script>
vendor: 1 bytes, line 2432
2432
2433<script id="mediaelement-core-js" src="https://www.windpowerengineering.com/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17"></script>
vendor: 1 bytes, line 2433
2433
2434<script id="mediaelement-migrate-js" src="https://www.windpowerengineering.com/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2434
2434
2435<script id="mediaelement-js-extra">
2436var _wpmejsSettings = {"pluginPath":"/wp-includes/js/mediaelement/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"};
2437//# sourceURL=mediaelement-js-extra
2438</script>
vendor: 1 bytes, line 2438
2438
2439<script id="wp-mediaelement-js" src="https://www.windpowerengineering.com/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2439
2439
2440<script id="wp-api-request-js-extra">
2441var wpApiSettings = {"root":"https://www.windpowerengineering.com/wp-json/","nonce":"9963a1ed94","versionString":"wp/v2/"};
2442//# sourceURL=wp-api-request-js-extra
2443</script>
vendor: 1 bytes, line 2443
2443
2444<script id="wp-api-request-js" src="https://www.windpowerengineering.com/wp-includes/js/api-request.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2444
2444
2445<script id="wp-dom-ready-js" src="https://www.windpowerengineering.com/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 2445
2445
2446<script id="wp-hooks-js" src="https://www.windpowerengineering.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 2446
2446
2447<script id="wp-i18n-js" src="https://www.windpowerengineering.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 2447
2447
2448<script id="wp-i18n-js-after">
2449wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
2450//# sourceURL=wp-i18n-js-after
2451</script>
vendor: 1 bytes, line 2451
2451
2452<script id="wp-a11y-js" src="https://www.windpowerengineering.com/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 2452
2452
2453<script id="clipboard-js" src="https://www.windpowerengineering.com/wp-includes/js/clipboard.min.js?ver=2.0.11"></script>
vendor: 1 bytes, line 2453
2453
2454<script id="media-views-js-extra">
2455var _wpMediaViewsL10n = {"mediaFrameDefaultTitle":"Media","url":"URL","addMedia":"Add media","search":"Search","select":"Select","cancel":"Cancel","update":"Update","replace":"Replace","remove":"Remove","back":"Back","selected":"%d selected","dragInfo":"Drag and drop to reorder media files.","uploadFilesTitle":"Upload files","uploadImagesTitle":"Upload images","mediaLibraryTitle":"Media Library","insertMediaTitle":"Add media","createNewGallery":"Create a new gallery","createNewPlaylist":"Create a new playlist","createNewVideoPlaylist":"Create a new video playlist","returnToLibrary":"\u2190 Go to library","allMediaItems":"All media items","allDates":"All dates","noItemsFound":"No items found.","insertIntoPost":"Insert into post","unattached":"Unattached","mine":"Mine","trash":"Trash","uploadedToThisPost":"Uploaded to this post","warnDelete":"You are about to permanently delete this item from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkDelete":"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkTrash":"You are about to trash these items.\n  'Cancel' to stop, 'OK' to delete.","bulkSelect":"Bulk select","trashSelected":"Move to Trash","restoreSelected":"Restore from Trash","deletePermanently":"Delete permanently","errorDeleting":"Error in deleting the attachment.","apply":"Apply","filterByDate":"Filter by date","filterByType":"Filter by type","searchLabel":"Search media","searchMediaLabel":"Search media","searchMediaPlaceholder":"Search media items...","mediaFound":"Number of media items found: %d","noMedia":"No media items found.","noMediaTryNewSearch":"No media items found. Try a different search.","mediaItemViewed":"Viewing media item: %s","attachmentDetails":"Attachment details","insertFromUrlTitle":"Insert from URL","setFeaturedImageTitle":"Featured image","setFeaturedImage":"Set featured image","createGalleryTitle":"Create gallery","editGalleryTitle":"Edit gallery","cancelGalleryTitle":"\u2190 Cancel gallery","insertGallery":"Insert gallery","updateGallery":"Update gallery","addToGallery":"Add to gallery","addToGalleryTitle":"Add to gallery","reverseOrder":"Reverse order","imageDetailsTitle":"Image details","imageReplaceTitle":"Replace image","imageDetailsCancel":"Cancel edit","editImage":"Edit image","chooseImage":"Choose image","selectAndCrop":"Select and crop","skipCropping":"Skip cropping","cropImage":"Crop image","cropYourImage":"Crop your image","cropping":"Cropping\u2026","suggestedDimensions":"Suggested image dimensions: %1$s by %2$s pixels.","cropError":"There has been an error cropping your image.","audioDetailsTitle":"Audio details","audioReplaceTitle":"Replace audio","audioAddSourceTitle":"Add audio source","audioDetailsCancel":"Cancel edit","videoDetailsTitle":"Video details","videoReplaceTitle":"Replace video","videoAddSourceTitle":"Add video source","videoDetailsCancel":"Cancel edit","videoSelectPosterImageTitle":"Select poster image","videoAddTrackTitle":"Add subtitles","playlistDragInfo":"Drag and drop to reorder tracks.","createPlaylistTitle":"Create audio playlist","editPlaylistTitle":"Edit audio playlist","cancelPlaylistTitle":"\u2190 Cancel audio playlist","insertPlaylist":"Insert audio playlist","updatePlaylist":"Update audio playlist","addToPlaylist":"Add to audio playlist","addToPlaylistTitle":"Add to Audio Playlist","videoPlaylistDragInfo":"Drag and drop to reorder videos.","createVideoPlaylistTitle":"Create video playlist","editVideoPlaylistTitle":"Edit video playlist","cancelVideoPlaylistTitle":"\u2190 Cancel video playlist","insertVideoPlaylist":"Insert video playlist","updateVideoPlaylist":"Update video playlist","addToVideoPlaylist":"Add to video playlist","addToVideoPlaylistTitle":"Add to video Playlist","filterAttachments":"Filter media","attachmentsList":"Media list","settings":{"tabs":[],"tabUrl":"https://www.windpowerengineering.com/wp-admin/media-upload.php?chromeless=1","mimeTypes":{"image":"Images","audio":"Audio","video":"Video","application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,application/vnd.ms-word.template.macroEnabled.12,application/vnd.oasis.opendocument.text,application/vnd.apple.pages,application/pdf,application/vnd.ms-xpsdocument,application/oxps,application/rtf,application/wordperfect,application/octet-stream":"Documents","application/vnd.apple.numbers,application/vnd.oasis.opendocument.spreadsheet,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/vnd.ms-excel.sheet.binary.macroEnabled.12":"Spreadsheets","application/x-gzip,application/rar,a
2455pplication/x-tar,application/zip,application/x-7z-compressed":"Archives"},"captions":true,"nonce":{"sendToEditor":"5d8fa3901b","setAttachmentThumbnail":"816b1b6ab9"},"post":{"id":0},"defaultProps":{"link":"none","align":"","size":""},"attachmentCounts":{"audio":1,"video":1},"oEmbedProxyUrl":"https://www.windpowerengineering.com/wp-json/oembed/1.0/proxy","embedExts":["mp3","ogg","flac","m4a","wav","mp4","m4v","webm","ogv","flv"],"embedMimes":{"mp3":"audio/mpeg","ogg":"audio/ogg","flac":"audio/flac","m4a":"audio/mpeg","wav":"audio/wav","mp4":"video/mp4","m4v":"video/mp4","webm":"video/webm","ogv":"video/ogg","flv":"video/x-flv"},"contentWidth":740,"months":[{"year":"2026","month":"6","text":"June 2026"},{"year":"2025","month":"12","text":"December 2025"},{"year":"2025","month":"11","text":"November 2025"},{"year":"2025","month":"10","text":"October 2025"},{"year":"2025","month":"9","text":"September 2025"},{"year":"2025","month":"8","text":"August 2025"},{"year":"2025","month":"6","text":"June 2025"},{"year":"2025","month":"5","text":"May 2025"},{"year":"2025","month":"4","text":"April 2025"},{"year":"2025","month":"3","text":"March 2025"},{"year":"2025","month":"2","text":"February 2025"},{"year":"2025","month":"1","text":"January 2025"},{"year":"2024","month":"12","text":"December 2024"},{"year":"2024","month":"11","text":"November 2024"},{"year":"2024","month":"10","text":"October 2024"},{"year":"2024","month":"9","text":"September 2024"},{"year":"2024","month":"8","text":"August 2024"},{"year":"2024","month":"7","text":"July 2024"},{"year":"2024","month":"6","text":"June 2024"},{"year":"2024","month":"5","text":"May 2024"},{"year":"2024","month":"4","text":"April 2024"},{"year":"2024","month":"3","text":"March 2024"},{"year":"2024","month":"2","text":"February 2024"},{"year":"2024","month":"1","text":"January 2024"},{"year":"2023","month":"12","text":"December 2023"},{"year":"2023","month":"11","text":"November 2023"},{"year":"2023","month":"10","text":"October 2023"},{"year":"2023","month":"9","text":"September 2023"},{"year":"2023","month":"8","text":"August 2023"},{"year":"2023","month":"7","text":"July 2023"},{"year":"2023","month":"6","text":"June 2023"},{"year":"2023","month":"5","text":"May 2023"},{"year":"2023","month":"4","text":"April 2023"},{"year":"2023","month":"3","text":"March 2023"},{"year":"2023","month":"2","text":"February 2023"},{"year":"2023","month":"1","text":"January 2023"},{"year":"2022","month":"12","text":"December 2022"},{"year":"2022","month":"11","text":"November 2022"},{"year":"2022","month":"10","text":"October 2022"},{"year":"2022","month":"9","text":"September 2022"},{"year":"2022","month":"8","text":"August 2022"},{"year":"2022","month":"7","text":"July 2022"},{"year":"2022","month":"6","text":"June 2022"},{"year":"2022","month":"5","text":"May 2022"},{"year":"2022","month":"4","text":"April 2022"},{"year":"2022","month":"3","text":"March 2022"},{"year":"2022","month":"2","text":"February 2022"},{"year":"2022","month":"1","text":"January 2022"},{"year":"2021","month":"12","text":"December 2021"},{"year":"2021","month":"11","text":"November 2021"},{"year":"2021","month":"10","text":"October 2021"},{"year":"2021","month":"9","text":"September 2021"},{"year":"2021","month":"8","text":"August 2021"},{"year":"2021","month":"7","text":"July 2021"},{"year":"2021","month":"6","text":"June 2021"},{"year":"2021","month":"5","text":"May 2021"},{"year":"2021","month":"4","text":"April 2021"},{"year":"2021","month":"3","text":"March 2021"},{"year":"2021","month":"2","text":"February 2021"},{"year":"2021","month":"1","text":"January 2021"},{"year":"2020","month":"12","text":"December 2020"},{"year":"2020","month":"11","text":"November 2020"},{"year":"2020","month":"10","text":"October 2020"},{"year":"2020","month":"9","text":"September 2020"},{"year":"2020","month":"8","text":"August 2020"},{"year":"2020","month":"7","text":"July 2020"},{"year":"2020","month":"6","text":"June 2020"},{"year":"2020","month":"5","text":"May 2020"},{"year":"2020","month":"4","text":"April 2020"},{"year":"2020","month":"3","text":"March 2020"},{"year":"2020","month":"2","text":"February 2020"},{"year":"2020","month":"1","text":"January 2020"},{"year":"2019","month":"12","text":"December 2019"},{"year":"2019","month":"11","text":"November 2019"},{"year":"2019","month":"10","text":"October 2019"},{"year":"2019","month":"9","text":"September 2019"},{"year":"2019","month":"8","text":"August 2019"},{"year":"2019","month":"7","text":"July 2019"},{"year":"2019","month":"6","text":"June 2019"},{"year":"2019","month":"5","text":"May 2019"},{"year":"2019","month":"4","text":"April 2019"},{"year":"2019","month":"3","text":"March 2019"},{"year":"2019","month":"2","text":"February 2019"},{"year":"2019","month":"1","text":"January 2019"},{"year":"2018","month":"12","text":"December 2018"},{"year":"2018","month":"11","text":"November 2018"},{"year":"2018","month":"10","text":"October 2018"},{"year":"2018","month":"9","text":"September 2018"},{"year":"2018","month":"8","text":"August 2018"},{"year":"2018","month":"7","text":"July 2018"},{"year":"2018","month":"6","text":"June 2018"},{"year":"2018","month":"5","text":"May 2018"},{"year":"2018","month":"4","text":"April 2018"},{"year":"2018","month":"3","text":"March 2018"},{"year":"2018","month":"2","text":"February 2018"},{"year":"2018","month":"1","text":"January 2018"},{"year":"2017","month":"12","text":"December 2017"},{"year":"2017","month":"11","text":"November 2017"},{"year":"2017","month":"10","text":"October 2017"},{"year":"2017","month":"9","text":"September 2017"},{"year":"2017","month":"8","text":"August 2017"},{"year":"2017","month":"7","text":"July 2017"},{"year":"2017","month":"6","text":"June 2017"},{"year":"2017","month":"5","text":"May 2017"},{"year":"2017","month":"4","text":"April 2017"},{"year":"2017","month":"3","text":"March 2017"},{"year":"2017","month":"2","text":"February 2017"},{"year":"2017","month":"1","text":"January 2017"},{"year":"2016","month":"12","text":"December 2016"},{"year":"2016","month":"11","text":"November 2016"},{"year":"2016","month":"10","text":"October 2016"},{"year":"2016","month":"9","text":"September 2016"},{"year":"2016","month":"8","text":"August 2016"},{"year":"2016","month":"7","text":"July 2016"},{"year":"2016","month":"6","text":"June 2016"},{"year":"2016","month":"5","text":"May 2016"},{"year":"2016","month":"4","text":"April 2016"},{"year":"2016","month":"3","text":"March 2016"},{"year":"2016","month":"2","text":"February 2016"},{"year":"2016","month":"1","text":"January 2016"},{"year":"2015","month":"12","text":"December 2015"},{"year":"2015","month":"11","text":"November 2015"},{"year":"2015","month":"10","text":"October 2015"},{"year":"2015","month":"9","text":"September 2015"},{"year":"2015","month":"8","text":"August 2015"},{"year":"2015","month":"7","text":"July 2015"},{"year":"2015","month":"6","text":"June 2015"},{"year":"2015","month":"5","text":"May 2015"},{"year":"2015","month":"4","text":"April 2015"},{"year":"2015","month":"3","text":"March 2015"},{"year":"2015","month":"2","text":"February 2015"},{"year":"2015","month":"1","text":"January 2015"},{"year":"2014","month":"12","text":"December 2014"},{"year":"2014","month":"11","text":"November 2014"},{"year":"2014","month":"10","text":"October 2014"},{"year":"2014","month":"9","text":"September 2014"},{"year":"2014","month":"8","text":"August 2014"},{"year":"2014","month":"7","text":"July 2014"},{"year":"2014","month":"6","text":"June 2014"},{"year":"2014","month":"5","text":"May 2014"},{"year":"2014","month":"4","text":"April 2014"},{"year":"2014","month":"3","text":"March 2014"},{"year":"2014","month":"2","text":"February 2014"},{"year":"2014","month":"1","text":"January 2014"},{"year":"2013","month":"12","text":"December 2013"},{"year":"2013","month":"11","text":"November 2013"},{"year":"2013","month":"10","text":"October 2013"},{"year":"2013","month":"9","text":"September 2013"},{"year":"2013","month":"8","text":"August 2013"},{"year":"2013","month":"7","text":"July 2013"},{"year":"2013","month":"6","text":"June 2013"},{"year":"2013","month":"5","text":"May 2013"},{"year":"2013","month":"4","text":"April 2013"},{"year":"2013","month":"3","text":"March 2013"},{"year":"2013","month":"2","text":"February 2013"},{"year":"2013","month":"1","text":"January 2013"},{"year":"2012","month":"12","text":"December 2012"},{"year":"2012","month":"11","text":"November 2012"},{"year":"2012","month":"10","text":"October 2012"},{"year":"2012","month":"9","text":"September 2012"},{"year":"2012","month":"8","text":"August 2012"},{"year":"2012","month":"7","text":"July 2012"},{"year":"2012","month":"6","text":"June 2012"},{"year":"2012","month":"5","text":"May 2012"},{"year":"2012","month":"4","text":"April 2012"},{"year":"2012","month":"3","text":"March 2012"},{"year":"2012","month":"2","text":"February 2012"},{"year":"2012","month":"1","text":"January 2012"},{"year":"2011","month":"12","text":"December 2011"},{"year":"2011","month":"11","text":"November 2011"},{"year":"2011","month":"10","text":"October 2011"},{"year":"2011","month":"9","text":"September 2011"},{"year":"2011","month":"8","text":"August 2011"},{"year":"2011","month":"7","text":"July 2011"},{"year":"2011","month":"6","text":"June 2011"},{"year":"2011","month":"5","text":"May 2011"},{"year":"2011","month":"4","text":"April 2011"},{"year":"2011","month":"3","text":"March 2011"},{"year":"2011","month":"2","text":"February 2011"},{"year":"2011","month":"1","text":"January 2011"},{"year":"2010","month":"12","text":"December 2010"},{"year":"2010","month":"11","text":"November 2010"},{"year":"2010","month":"10","text":"October 2010"},{"year":"2010","month":"9","text":"September 2010"},{"year":"2010","month":"8","text":"August 2010"},{"year":"2010","month":"7","text":"July 2010"},{"year":"2010","month":"6","text":"June 2010"},{"year":"2010","month":"5","text":"May 2010"},{"year":"2010","month":"4","text":"April 2010"},{"year":"2010","month":"3","text":"March 2010"},{"year":"2010","month":"2","text":"February 2010"},{"year":"2010","month":"1","text":"January 2010"},{"year":"2009","month":"12","text":"December 2009"},{"year":"2009","month":"11","text":"November 2009"},{"year":"2009","month":"10","text":"October 2009"},{"year":"2009","month":"9","text":"September 2009"},{"year":"2009","month":"8","text":"August 2009"},{"year":"2009","month":"7","text":"July 2009"},{"year":"2009","month":"6","text":"June 2009"},{"year":"2009","month":"5","text":"May 2009"}],"mediaTrash":0,"infiniteScrolling":1}};
2456//# sourceURL=media-views-js-extra
2457</script>
vendor: 1 bytes, line 2457
2457
2458<script id="media-views-js" src="https://www.windpowerengineering.com/wp-includes/js/media-views.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2458
2458
2459<script id="media-editor-js" src="https://www.windpowerengineering.com/wp-includes/js/media-editor.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2459
2459
2460<script id="media-audiovideo-js" src="https://www.windpowerengineering.com/wp-includes/js/media-audiovideo.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 2460
2460
2461<script id="ea-global-js" src="https://www.windpowerengineering.com/wp-content/themes/ThemeWTWH/assets/js/global-min.js?ver=1749457156"></script>
vendor: 1 bytes, line 2461
2461
2462<script id="wp-emoji-settings" type="application/json">
2463{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.windpowerengineering.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.1"}}
2464</script>
vendor: 1 bytes, line 2464
2464
2465<script type="module">
2466/*! This file is auto-generated */
2467var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
2468//# sourceURL=https://www.windpowerengineering.com/wp-includes/js/wp-emoji-loader.min.js
2469</script>
vendor: 1 bytes, line 2469
2469
2470<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a400b28f4f6ac071',t:'MTc5MDI0MTQ2MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
2470</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.