Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9d74e4de
Commit
9d74e4de
authored
Nov 24, 2010
by
Michael Stefaniuc
Committed by
Alexandre Julliard
Nov 24, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shdocvw: Don't open code CONTAINING_RECORD().
parent
2fd48900
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
35 additions
and
35 deletions
+35
-35
classinfo.c
dlls/shdocvw/classinfo.c
+1
-1
client.c
dlls/shdocvw/client.c
+6
-6
dochost.c
dlls/shdocvw/dochost.c
+3
-3
events.c
dlls/shdocvw/events.c
+2
-2
frame.c
dlls/shdocvw/frame.c
+1
-1
ie.c
dlls/shdocvw/ie.c
+1
-1
iexplore.c
dlls/shdocvw/iexplore.c
+1
-1
intshcut.c
dlls/shdocvw/intshcut.c
+3
-3
navigate.c
dlls/shdocvw/navigate.c
+4
-4
oleobject.c
dlls/shdocvw/oleobject.c
+5
-5
persist.c
dlls/shdocvw/persist.c
+3
-3
view.c
dlls/shdocvw/view.c
+2
-2
webbrowser.c
dlls/shdocvw/webbrowser.c
+3
-3
No files found.
dlls/shdocvw/classinfo.c
View file @
9d74e4de
...
...
@@ -34,7 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
WebBrowser
*
impl_from_IProvideClassInfo2
(
IProvideClassInfo2
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IProvideClassInfo2_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IProvideClassInfo2_iface
);
}
static
HRESULT
WINAPI
ProvideClassInfo_QueryInterface
(
IProvideClassInfo2
*
iface
,
...
...
dlls/shdocvw/client.c
View file @
9d74e4de
...
...
@@ -27,7 +27,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
DocHost
*
impl_from_IOleClientSite
(
IOleClientSite
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleClientSite_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleClientSite_iface
);
}
static
HRESULT
WINAPI
ClientSite_QueryInterface
(
IOleClientSite
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -149,7 +149,7 @@ static const IOleClientSiteVtbl OleClientSiteVtbl = {
static
inline
DocHost
*
impl_from_IOleInPlaceSite
(
IOleInPlaceSite
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleInPlaceSite_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleInPlaceSite_iface
);
}
static
HRESULT
WINAPI
InPlaceSite_QueryInterface
(
IOleInPlaceSite
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -305,7 +305,7 @@ static const IOleInPlaceSiteVtbl OleInPlaceSiteVtbl = {
static
inline
DocHost
*
impl_from_IOleDocumentSite
(
IOleDocumentSite
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleDocumentSite_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleDocumentSite_iface
);
}
static
HRESULT
WINAPI
OleDocumentSite_QueryInterface
(
IOleDocumentSite
*
iface
,
...
...
@@ -361,7 +361,7 @@ static const IOleDocumentSiteVtbl OleDocumentSiteVtbl = {
static
inline
DocHost
*
impl_from_IOleControlSite
(
IOleControlSite
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleControlSite_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleControlSite_iface
);
}
static
HRESULT
WINAPI
ControlSite_QueryInterface
(
IOleControlSite
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -471,7 +471,7 @@ static IOleControlSiteVtbl OleControlSiteVtbl = {
static
inline
DocHost
*
impl_from_IDispatch
(
IDispatch
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IDispatch_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IDispatch_iface
);
}
static
HRESULT
WINAPI
ClDispatch_QueryInterface
(
IDispatch
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -585,7 +585,7 @@ static const IDispatchVtbl DispatchVtbl = {
static
inline
DocHost
*
impl_from_IServiceProvider
(
IServiceProvider
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IServiceProvider_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IServiceProvider_iface
);
}
static
HRESULT
WINAPI
ClServiceProvider_QueryInterface
(
IServiceProvider
*
iface
,
REFIID
riid
,
...
...
dlls/shdocvw/dochost.c
View file @
9d74e4de
...
...
@@ -404,7 +404,7 @@ void release_dochost_client(DocHost *This)
static
inline
DocHost
*
impl_from_IOleCommandTarget
(
IOleCommandTarget
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleCommandTarget_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleCommandTarget_iface
);
}
static
HRESULT
WINAPI
ClOleCommandTarget_QueryInterface
(
IOleCommandTarget
*
iface
,
...
...
@@ -494,7 +494,7 @@ static const IOleCommandTargetVtbl OleCommandTargetVtbl = {
static
inline
DocHost
*
impl_from_IDocHostUIHandler2
(
IDocHostUIHandler2
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IDocHostUIHandler2_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IDocHostUIHandler2_iface
);
}
static
HRESULT
WINAPI
DocHostUIHandler_QueryInterface
(
IDocHostUIHandler2
*
iface
,
...
...
@@ -733,7 +733,7 @@ static const IDocHostUIHandler2Vtbl DocHostUIHandler2Vtbl = {
static
inline
DocHost
*
impl_from_IPropertyNotifySink
(
IPropertyNotifySink
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IPropertyNotifySink_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IPropertyNotifySink_iface
);
}
static
HRESULT
WINAPI
PropertyNotifySink_QueryInterface
(
IPropertyNotifySink
*
iface
,
...
...
dlls/shdocvw/events.c
View file @
9d74e4de
...
...
@@ -45,7 +45,7 @@ struct ConnectionPoint {
static
inline
ConnectionPointContainer
*
impl_from_IConnectionPointContainer
(
IConnectionPointContainer
*
iface
)
{
return
(
ConnectionPointContainer
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
ConnectionPointContainer
,
IConnectionPointContainer_iface
)
);
return
CONTAINING_RECORD
(
iface
,
ConnectionPointContainer
,
IConnectionPointContainer_iface
);
}
static
HRESULT
WINAPI
ConnectionPointContainer_QueryInterface
(
IConnectionPointContainer
*
iface
,
...
...
@@ -125,7 +125,7 @@ static const IConnectionPointContainerVtbl ConnectionPointContainerVtbl =
static
inline
ConnectionPoint
*
impl_from_IConnectionPoint
(
IConnectionPoint
*
iface
)
{
return
(
ConnectionPoint
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
ConnectionPoint
,
IConnectionPoint_iface
)
);
return
CONTAINING_RECORD
(
iface
,
ConnectionPoint
,
IConnectionPoint_iface
);
}
static
HRESULT
WINAPI
ConnectionPoint_QueryInterface
(
IConnectionPoint
*
iface
,
...
...
dlls/shdocvw/frame.c
View file @
9d74e4de
...
...
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
DocHost
*
impl_from_IOleInPlaceFrame
(
IOleInPlaceFrame
*
iface
)
{
return
(
DocHost
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
DocHost
,
IOleInPlaceFrame_iface
)
);
return
CONTAINING_RECORD
(
iface
,
DocHost
,
IOleInPlaceFrame_iface
);
}
static
HRESULT
WINAPI
InPlaceFrame_QueryInterface
(
IOleInPlaceFrame
*
iface
,
...
...
dlls/shdocvw/ie.c
View file @
9d74e4de
...
...
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
InternetExplorer
*
impl_from_IWebBrowser2
(
IWebBrowser2
*
iface
)
{
return
(
InternetExplorer
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
InternetExplorer
,
IWebBrowser2_iface
)
);
return
CONTAINING_RECORD
(
iface
,
InternetExplorer
,
IWebBrowser2_iface
);
}
static
HRESULT
WINAPI
InternetExplorer_QueryInterface
(
IWebBrowser2
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
...
...
dlls/shdocvw/iexplore.c
View file @
9d74e4de
...
...
@@ -724,7 +724,7 @@ static IWebBrowser2 *create_ie_window(LPCSTR cmdline)
static
inline
InternetExplorer
*
impl_from_DocHost
(
DocHost
*
iface
)
{
return
(
InternetExplorer
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
InternetExplorer
,
doc_host
)
);
return
CONTAINING_RECORD
(
iface
,
InternetExplorer
,
doc_host
);
}
static
void
WINAPI
DocHostContainer_GetDocObjRect
(
DocHost
*
This
,
RECT
*
rc
)
...
...
dlls/shdocvw/intshcut.c
View file @
9d74e4de
...
...
@@ -58,17 +58,17 @@ typedef struct
static
inline
InternetShortcut
*
impl_from_IUniformResourceLocatorA
(
IUniformResourceLocatorA
*
iface
)
{
return
(
InternetShortcut
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
InternetShortcut
,
uniformResourceLocatorA
)
);
return
CONTAINING_RECORD
(
iface
,
InternetShortcut
,
uniformResourceLocatorA
);
}
static
inline
InternetShortcut
*
impl_from_IUniformResourceLocatorW
(
IUniformResourceLocatorW
*
iface
)
{
return
(
InternetShortcut
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
InternetShortcut
,
uniformResourceLocatorW
)
);
return
CONTAINING_RECORD
(
iface
,
InternetShortcut
,
uniformResourceLocatorW
);
}
static
inline
InternetShortcut
*
impl_from_IPersistFile
(
IPersistFile
*
iface
)
{
return
(
InternetShortcut
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
InternetShortcut
,
persistFile
)
);
return
CONTAINING_RECORD
(
iface
,
InternetShortcut
,
persistFile
);
}
static
BOOL
run_winemenubuilder
(
const
WCHAR
*
args
)
...
...
dlls/shdocvw/navigate.c
View file @
9d74e4de
...
...
@@ -129,7 +129,7 @@ static HRESULT set_dochost_url(DocHost *This, const WCHAR *url)
static
inline
BindStatusCallback
*
impl_from_IBindStatusCallback
(
IBindStatusCallback
*
iface
)
{
return
(
BindStatusCallback
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
BindStatusCallback
,
IBindStatusCallback_iface
)
);
return
CONTAINING_RECORD
(
iface
,
BindStatusCallback
,
IBindStatusCallback_iface
);
}
static
HRESULT
WINAPI
BindStatusCallback_QueryInterface
(
IBindStatusCallback
*
iface
,
...
...
@@ -314,7 +314,7 @@ static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = {
static
inline
BindStatusCallback
*
impl_from_IHttpNegotiate
(
IHttpNegotiate
*
iface
)
{
return
(
BindStatusCallback
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
BindStatusCallback
,
IHttpNegotiate_iface
)
);
return
CONTAINING_RECORD
(
iface
,
BindStatusCallback
,
IHttpNegotiate_iface
);
}
static
HRESULT
WINAPI
HttpNegotiate_QueryInterface
(
IHttpNegotiate
*
iface
,
...
...
@@ -882,7 +882,7 @@ HRESULT go_home(DocHost *This)
static
inline
HlinkFrame
*
impl_from_IHlinkFrame
(
IHlinkFrame
*
iface
)
{
return
(
HlinkFrame
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
HlinkFrame
,
IHlinkFrame_iface
)
);
return
CONTAINING_RECORD
(
iface
,
HlinkFrame
,
IHlinkFrame_iface
);
}
static
HRESULT
WINAPI
HlinkFrame_QueryInterface
(
IHlinkFrame
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -981,7 +981,7 @@ static const IHlinkFrameVtbl HlinkFrameVtbl = {
static
inline
HlinkFrame
*
impl_from_ITargetFrame2
(
ITargetFrame2
*
iface
)
{
return
(
HlinkFrame
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
HlinkFrame
,
IHlinkFrame_iface
)
);
return
CONTAINING_RECORD
(
iface
,
HlinkFrame
,
IHlinkFrame_iface
);
}
static
HRESULT
WINAPI
TargetFrame2_QueryInterface
(
ITargetFrame2
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
dlls/shdocvw/oleobject.c
View file @
9d74e4de
...
...
@@ -291,7 +291,7 @@ static void release_client_site(WebBrowser *This)
static
inline
WebBrowser
*
impl_from_IOleObject
(
IOleObject
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IOleObject_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IOleObject_iface
);
}
static
HRESULT
WINAPI
OleObject_QueryInterface
(
IOleObject
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -598,7 +598,7 @@ static const IOleObjectVtbl OleObjectVtbl =
static
inline
WebBrowser
*
impl_from_IOleInPlaceObject
(
IOleInPlaceObject
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IOleInPlaceObject_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IOleInPlaceObject_iface
);
}
static
HRESULT
WINAPI
OleInPlaceObject_QueryInterface
(
IOleInPlaceObject
*
iface
,
...
...
@@ -707,7 +707,7 @@ static const IOleInPlaceObjectVtbl OleInPlaceObjectVtbl =
static
inline
WebBrowser
*
impl_from_IOleControl
(
IOleControl
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IOleControl_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IOleControl_iface
);
}
static
HRESULT
WINAPI
OleControl_QueryInterface
(
IOleControl
*
iface
,
...
...
@@ -790,7 +790,7 @@ static const IOleControlVtbl OleControlVtbl =
static
inline
WebBrowser
*
impl_from_IOleInPlaceActiveObject
(
IOleInPlaceActiveObject
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IOleInPlaceActiveObject_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IOleInPlaceActiveObject_iface
);
}
static
HRESULT
WINAPI
InPlaceActiveObject_QueryInterface
(
IOleInPlaceActiveObject
*
iface
,
...
...
@@ -897,7 +897,7 @@ static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = {
static
inline
WebBrowser
*
impl_from_IOleCommandTarget
(
IOleCommandTarget
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IOleCommandTarget_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IOleCommandTarget_iface
);
}
static
HRESULT
WINAPI
WBOleCommandTarget_QueryInterface
(
IOleCommandTarget
*
iface
,
...
...
dlls/shdocvw/persist.c
View file @
9d74e4de
...
...
@@ -30,7 +30,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
WebBrowser
*
impl_from_IPersistStorage
(
IPersistStorage
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IPersistStorage_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IPersistStorage_iface
);
}
static
HRESULT
WINAPI
PersistStorage_QueryInterface
(
IPersistStorage
*
iface
,
...
...
@@ -114,7 +114,7 @@ static const IPersistStorageVtbl PersistStorageVtbl =
static
inline
WebBrowser
*
impl_from_IPersistMemory
(
IPersistMemory
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IPersistMemory_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IPersistMemory_iface
);
}
static
HRESULT
WINAPI
PersistMemory_QueryInterface
(
IPersistMemory
*
iface
,
...
...
@@ -198,7 +198,7 @@ static const IPersistMemoryVtbl PersistMemoryVtbl =
static
inline
WebBrowser
*
impl_from_IPersistStreamInit
(
IPersistStreamInit
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IPersistStreamInit_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IPersistStreamInit_iface
);
}
static
HRESULT
WINAPI
PersistStreamInit_QueryInterface
(
IPersistStreamInit
*
iface
,
...
...
dlls/shdocvw/view.c
View file @
9d74e4de
...
...
@@ -28,7 +28,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
WebBrowser
*
impl_from_IViewObject2
(
IViewObject2
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IViewObject2_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IViewObject2_iface
);
}
static
HRESULT
WINAPI
ViewObject_QueryInterface
(
IViewObject2
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -130,7 +130,7 @@ static const IViewObject2Vtbl ViewObjectVtbl = {
static
inline
WebBrowser
*
impl_from_IDataObject
(
IDataObject
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IDataObject_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IDataObject_iface
);
}
static
HRESULT
WINAPI
DataObject_QueryInterface
(
LPDATAOBJECT
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
...
...
dlls/shdocvw/webbrowser.c
View file @
9d74e4de
...
...
@@ -28,7 +28,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
static
inline
WebBrowser
*
impl_from_IWebBrowser2
(
IWebBrowser2
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IWebBrowser2_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IWebBrowser2_iface
);
}
static
HRESULT
WINAPI
WebBrowser_QueryInterface
(
IWebBrowser2
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
...
...
@@ -1062,7 +1062,7 @@ static const IWebBrowser2Vtbl WebBrowser2Vtbl =
static
inline
WebBrowser
*
impl_from_IServiceProvider
(
IServiceProvider
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
IServiceProvider_iface
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
IServiceProvider_iface
);
}
static
HRESULT
WINAPI
WBServiceProvider_QueryInterface
(
IServiceProvider
*
iface
,
...
...
@@ -1114,7 +1114,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl =
static
inline
WebBrowser
*
impl_from_DocHost
(
DocHost
*
iface
)
{
return
(
WebBrowser
*
)((
char
*
)
iface
-
FIELD_OFFSET
(
WebBrowser
,
doc_host
)
);
return
CONTAINING_RECORD
(
iface
,
WebBrowser
,
doc_host
);
}
static
void
WINAPI
DocHostContainer_GetDocObjRect
(
DocHost
*
This
,
RECT
*
rc
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment